1
Fork 0

Change rustc_codegen_ssa's atomic_cmpxchg interface to return a pair of values

This commit is contained in:
Bernd Schmidt 2023-11-30 14:54:27 +01:00 committed by Maybe Waffle
parent 5b8bc568d2
commit 6cf6139411
4 changed files with 12 additions and 20 deletions

View file

@ -1080,7 +1080,7 @@ impl<'a, 'll, 'tcx> BuilderMethods<'a, 'tcx> for Builder<'a, 'll, 'tcx> {
order: rustc_codegen_ssa::common::AtomicOrdering,
failure_order: rustc_codegen_ssa::common::AtomicOrdering,
weak: bool,
) -> &'ll Value {
) -> (&'ll Value, &'ll Value) {
let weak = if weak { llvm::True } else { llvm::False };
unsafe {
let value = llvm::LLVMBuildAtomicCmpXchg(
@ -1093,7 +1093,9 @@ impl<'a, 'll, 'tcx> BuilderMethods<'a, 'tcx> for Builder<'a, 'll, 'tcx> {
llvm::False, // SingleThreaded
);
llvm::LLVMSetWeak(value, weak);
value
let val = self.extract_value(value, 0);
let success = self.extract_value(value, 1);
(val, success)
}
}
fn atomic_rmw(