diff options
| author | bors <bors@rust-lang.org> | 2021-03-23 09:42:22 +0000 |
|---|---|---|
| committer | bors <bors@rust-lang.org> | 2021-03-23 09:42:22 +0000 |
| commit | 4eb0bc7346ef38218e21268001a898f6892db2c1 (patch) | |
| tree | e34f0e2b13b19d90f6ad94031b40da01b766995d /compiler/rustc_llvm/llvm-wrapper/RustWrapper.cpp | |
| parent | 9b6339e4b9747d473270baa42e77e1d2fff39bf4 (diff) | |
| parent | 9431e8577d44dcc463134275421a6da6d862c377 (diff) | |
| download | rust-4eb0bc7346ef38218e21268001a898f6892db2c1.tar.gz rust-4eb0bc7346ef38218e21268001a898f6892db2c1.zip | |
Auto merge of #83260 - durin42:llvm-update, r=nagisa
rustc: changes to allow an llvm update This lets LLVM be built using 2b5f3f446f36, which is only a few weeks old. The next change in LLVM (5de2d189e6ad) breaks rustc again by removing a function that's exposed into the Rust code, but I'll file a bug about that separately. Please scrutinize the `thinLTOResolvePrevailingInIndex` call, as I'm not at all sure an empty config is right. I'm also suspicious that a specific alignment could be specified in the call to CreateAtomicCmpXchg, but I don't know enough to figure that out. Thanks!
Diffstat (limited to 'compiler/rustc_llvm/llvm-wrapper/RustWrapper.cpp')
| -rw-r--r-- | compiler/rustc_llvm/llvm-wrapper/RustWrapper.cpp | 9 |
1 files changed, 9 insertions, 0 deletions
diff --git a/compiler/rustc_llvm/llvm-wrapper/RustWrapper.cpp b/compiler/rustc_llvm/llvm-wrapper/RustWrapper.cpp index a8536595404..0391feaf499 100644 --- a/compiler/rustc_llvm/llvm-wrapper/RustWrapper.cpp +++ b/compiler/rustc_llvm/llvm-wrapper/RustWrapper.cpp @@ -382,9 +382,18 @@ LLVMRustBuildAtomicCmpXchg(LLVMBuilderRef B, LLVMValueRef Target, LLVMValueRef Old, LLVMValueRef Source, LLVMAtomicOrdering Order, LLVMAtomicOrdering FailureOrder, LLVMBool Weak) { +#if LLVM_VERSION_GE(13,0) + // Rust probably knows the alignment of the target value and should be able to + // specify something more precise than MaybeAlign here. See also + // https://reviews.llvm.org/D97224 which may be a useful reference. + AtomicCmpXchgInst *ACXI = unwrap(B)->CreateAtomicCmpXchg( + unwrap(Target), unwrap(Old), unwrap(Source), llvm::MaybeAlign(), fromRust(Order), + fromRust(FailureOrder)); +#else AtomicCmpXchgInst *ACXI = unwrap(B)->CreateAtomicCmpXchg( unwrap(Target), unwrap(Old), unwrap(Source), fromRust(Order), fromRust(FailureOrder)); +#endif ACXI->setWeak(Weak); return wrap(ACXI); } |
