diff options
| author | James Y Knight <jyknight@google.com> | 2019-01-14 21:37:48 +0000 |
|---|---|---|
| committer | James Y Knight <jyknight@google.com> | 2019-01-14 21:37:48 +0000 |
| commit | eb2c4af1bf8e4872b40d3e5cab2e1c5bc22eb3ef (patch) | |
| tree | 96f355f16b1e528e847cf14e7146d4a52efa2a23 /llvm/lib | |
| parent | f956390954f30ed97b1d1518a9f695b4dc84a972 (diff) | |
| download | bcm5719-llvm-eb2c4af1bf8e4872b40d3e5cab2e1c5bc22eb3ef.tar.gz bcm5719-llvm-eb2c4af1bf8e4872b40d3e5cab2e1c5bc22eb3ef.zip | |
[opaque pointer types] Update InvokeInst creation APIs to consistently
accept a callee-type argument.
Note: this also adds a new C API and soft-deprecates the old C API.
Differential Revision: https://reviews.llvm.org/D56557
llvm-svn: 351122
Diffstat (limited to 'llvm/lib')
| -rw-r--r-- | llvm/lib/IR/Core.cpp | 19 |
1 files changed, 16 insertions, 3 deletions
diff --git a/llvm/lib/IR/Core.cpp b/llvm/lib/IR/Core.cpp index f5459038311..8916d47841b 100644 --- a/llvm/lib/IR/Core.cpp +++ b/llvm/lib/IR/Core.cpp @@ -2975,9 +2975,22 @@ LLVMValueRef LLVMBuildInvoke(LLVMBuilderRef B, LLVMValueRef Fn, LLVMValueRef *Args, unsigned NumArgs, LLVMBasicBlockRef Then, LLVMBasicBlockRef Catch, const char *Name) { - return wrap(unwrap(B)->CreateInvoke(unwrap(Fn), unwrap(Then), unwrap(Catch), - makeArrayRef(unwrap(Args), NumArgs), - Name)); + Value *V = unwrap(Fn); + FunctionType *FnT = + cast<FunctionType>(cast<PointerType>(V->getType())->getElementType()); + + return wrap( + unwrap(B)->CreateInvoke(FnT, unwrap(Fn), unwrap(Then), unwrap(Catch), + makeArrayRef(unwrap(Args), NumArgs), Name)); +} + +LLVMValueRef LLVMBuildInvoke2(LLVMBuilderRef B, LLVMTypeRef Ty, LLVMValueRef Fn, + LLVMValueRef *Args, unsigned NumArgs, + LLVMBasicBlockRef Then, LLVMBasicBlockRef Catch, + const char *Name) { + return wrap(unwrap(B)->CreateInvoke( + unwrap<FunctionType>(Ty), unwrap(Fn), unwrap(Then), unwrap(Catch), + makeArrayRef(unwrap(Args), NumArgs), Name)); } LLVMValueRef LLVMBuildLandingPad(LLVMBuilderRef B, LLVMTypeRef Ty, |

