From 105089e17aa19b326f6d0fd00b00edd9e3ad5564 Mon Sep 17 00:00:00 2001 From: Johannes Stoelp Date: Mon, 20 Nov 2023 00:26:23 +0100 Subject: bump to llvm15 --- src/llvm/builder.rs | 2 +- src/llvm/value.rs | 11 ++++++----- 2 files changed, 7 insertions(+), 6 deletions(-) (limited to 'src') diff --git a/src/llvm/builder.rs b/src/llvm/builder.rs index da10231..99f26b7 100644 --- a/src/llvm/builder.rs +++ b/src/llvm/builder.rs @@ -195,7 +195,7 @@ impl<'llvm> IRBuilder<'llvm> { let value_ref = unsafe { LLVMBuildCall2( self.builder, - fn_value.ret_type(), + fn_value.fn_type(), fn_value, args.as_mut_ptr(), args.len() as libc::c_uint, diff --git a/src/llvm/value.rs b/src/llvm/value.rs index 912c14e..98d2e77 100644 --- a/src/llvm/value.rs +++ b/src/llvm/value.rs @@ -4,13 +4,12 @@ use llvm_sys::{ analysis::{LLVMVerifierFailureAction, LLVMVerifyFunction}, core::{ LLVMAddIncoming, LLVMAppendExistingBasicBlock, LLVMCountBasicBlocks, LLVMCountParams, - LLVMDumpValue, LLVMGetParam, LLVMGetReturnType, LLVMGetValueKind, LLVMGetValueName2, + LLVMDumpValue, LLVMGetParam, LLVMGetValueKind, LLVMGetValueName2, LLVMGlobalGetValueType, LLVMIsAFunction, LLVMIsAPHINode, LLVMSetValueName2, LLVMTypeOf, }, prelude::LLVMValueRef, LLVMTypeKind, LLVMValueKind, }; - use std::ffi::CStr; use std::marker::PhantomData; use std::ops::Deref; @@ -139,13 +138,15 @@ impl<'llvm> FnValue<'llvm> { FnValue(value) } - /// Get a type reference representing the return value of the given function value. + /// Get a type reference representing the function type (return + args) of the given function + /// value. /// /// # Panics /// /// Panics if LLVM API returns a `null` pointer. - pub fn ret_type(&self) -> Type<'llvm> { - let type_ref = unsafe { LLVMGetReturnType(LLVMTypeOf(self.value_ref())) }; + pub fn fn_type(&self) -> Type<'llvm> { + // https://github.com/llvm/llvm-project/issues/72798 + let type_ref = unsafe { LLVMGlobalGetValueType(self.value_ref()) }; Type::new(type_ref) } -- cgit v1.2.3