diff options
author | Robert Widmann <devteam.codafi@gmail.com> | 2019-01-08 06:23:22 +0000 |
---|---|---|
committer | Robert Widmann <devteam.codafi@gmail.com> | 2019-01-08 06:23:22 +0000 |
commit | 40dc48be0ead4682b96af15b487b981cbd48572e (patch) | |
tree | ebf3ef260adeefcb3e69ac33d2b3c5c85471f87d | |
parent | f286bee9fe8c981659e2d4c2c527881b82ab644a (diff) | |
download | bcm5719-llvm-40dc48be0ead4682b96af15b487b981cbd48572e.tar.gz bcm5719-llvm-40dc48be0ead4682b96af15b487b981cbd48572e.zip |
[LLVM-C] Allow Specifying Signedness in Int Cast
Summary: Fix an old outstanding problem with the int cast builder binding always assuming the cast is signed by introducing a new LLVMBuildIntCast2 operation and deprecating the old prototype.
Reviewers: whitequark, deadalnix
Reviewed By: whitequark
Subscribers: llvm-commits
Differential Revision: https://reviews.llvm.org/D56280
llvm-svn: 350607
-rw-r--r-- | llvm/include/llvm-c/Core.h | 9 | ||||
-rw-r--r-- | llvm/lib/IR/Core.cpp | 7 |
2 files changed, 14 insertions, 2 deletions
diff --git a/llvm/include/llvm-c/Core.h b/llvm/include/llvm-c/Core.h index 00911fed824..264cf838536 100644 --- a/llvm/include/llvm-c/Core.h +++ b/llvm/include/llvm-c/Core.h @@ -3633,11 +3633,16 @@ LLVMValueRef LLVMBuildCast(LLVMBuilderRef B, LLVMOpcode Op, LLVMValueRef Val, LLVMTypeRef DestTy, const char *Name); LLVMValueRef LLVMBuildPointerCast(LLVMBuilderRef, LLVMValueRef Val, LLVMTypeRef DestTy, const char *Name); -LLVMValueRef LLVMBuildIntCast(LLVMBuilderRef, LLVMValueRef Val, /*Signed cast!*/ - LLVMTypeRef DestTy, const char *Name); +LLVMValueRef LLVMBuildIntCast2(LLVMBuilderRef, LLVMValueRef Val, + LLVMTypeRef DestTy, LLVMBool IsSigned, + const char *Name, size_t NameLen); LLVMValueRef LLVMBuildFPCast(LLVMBuilderRef, LLVMValueRef Val, LLVMTypeRef DestTy, const char *Name); +/** Deprecated: This cast is always signed. Use LLVMBuildIntCast2 instead. */ +LLVMValueRef LLVMBuildIntCast(LLVMBuilderRef, LLVMValueRef Val, /*Signed cast!*/ + LLVMTypeRef DestTy, const char *Name); + /* Comparisons */ LLVMValueRef LLVMBuildICmp(LLVMBuilderRef, LLVMIntPredicate Op, LLVMValueRef LHS, LLVMValueRef RHS, diff --git a/llvm/lib/IR/Core.cpp b/llvm/lib/IR/Core.cpp index 4064b674fa0..921c830cbf7 100644 --- a/llvm/lib/IR/Core.cpp +++ b/llvm/lib/IR/Core.cpp @@ -3534,6 +3534,13 @@ LLVMValueRef LLVMBuildPointerCast(LLVMBuilderRef B, LLVMValueRef Val, return wrap(unwrap(B)->CreatePointerCast(unwrap(Val), unwrap(DestTy), Name)); } +LLVMValueRef LLVMBuildIntCast2(LLVMBuilderRef B, LLVMValueRef Val, + LLVMTypeRef DestTy, LLVMBool IsSigned, + const char *Name, size_t NameLen) { + return wrap(unwrap(B)->CreateIntCast(unwrap(Val), unwrap(DestTy), + IsSigned, StringRef(Name, NameLen))); +} + LLVMValueRef LLVMBuildIntCast(LLVMBuilderRef B, LLVMValueRef Val, LLVMTypeRef DestTy, const char *Name) { return wrap(unwrap(B)->CreateIntCast(unwrap(Val), unwrap(DestTy), |