diff options
| author | Augie Fackler <augie@google.com> | 2022-06-07 14:28:20 -0400 |
|---|---|---|
| committer | Augie Fackler <augie@google.com> | 2022-06-07 14:47:57 -0400 |
| commit | 1c26dd0db4bb8b0613c19c14f7fcbb0d4fa22726 (patch) | |
| tree | 189f04f7ab764076fbe9e2f499764c59483fcbde /compiler/rustc_llvm/llvm-wrapper/RustWrapper.cpp | |
| parent | 7fe2c4b00dfbc33643e1af4b293eb057306a8339 (diff) | |
| download | rust-1c26dd0db4bb8b0613c19c14f7fcbb0d4fa22726.tar.gz rust-1c26dd0db4bb8b0613c19c14f7fcbb0d4fa22726.zip | |
RustWrapper: adapt to APInt API changes in LLVM 15
In https://reviews.llvm.org/D125556 upstream changed sext() and zext() to allow some no-op cases, which previously required use of the *OrSelf() methods, which I assume is what was going on here. The *OrSelf() methods got removed in https://reviews.llvm.org/D125559 after two weeks of deprecation because they came with some bonus (probably-undesired) behavior. Since the behavior of sext() and zext() changed slightly, I kept the old *OrSelf() calls in LLVM 14 and earlier, and only use the new version in LLVM 15. r? @nikic
Diffstat (limited to 'compiler/rustc_llvm/llvm-wrapper/RustWrapper.cpp')
| -rw-r--r-- | compiler/rustc_llvm/llvm-wrapper/RustWrapper.cpp | 8 |
1 files changed, 8 insertions, 0 deletions
diff --git a/compiler/rustc_llvm/llvm-wrapper/RustWrapper.cpp b/compiler/rustc_llvm/llvm-wrapper/RustWrapper.cpp index 6d79e662a42..f90bb7f2368 100644 --- a/compiler/rustc_llvm/llvm-wrapper/RustWrapper.cpp +++ b/compiler/rustc_llvm/llvm-wrapper/RustWrapper.cpp @@ -1542,11 +1542,19 @@ extern "C" bool LLVMRustConstInt128Get(LLVMValueRef CV, bool sext, uint64_t *hig auto C = unwrap<llvm::ConstantInt>(CV); if (C->getBitWidth() > 128) { return false; } APInt AP; +#if LLVM_VERSION_GE(15, 0) + if (sext) { + AP = C->getValue().sext(128); + } else { + AP = C->getValue().zext(128); + } +#else if (sext) { AP = C->getValue().sextOrSelf(128); } else { AP = C->getValue().zextOrSelf(128); } +#endif *low = AP.getLoBits(64).getZExtValue(); *high = AP.getHiBits(64).getZExtValue(); return true; |
