Skip to content

Commit 1096e7a

Browse files
committed
Auto merge of #30962 - Amanieu:non_volatile_atomic, r=alexcrichton
Rust currently emits atomic loads and stores with the LLVM `volatile` qualifier. This is unnecessary and prevents LLVM from performing optimization on these atomic operations.
2 parents 3c9442f + 01112d1 commit 1096e7a

File tree

1 file changed

+0
-2
lines changed

1 file changed

+0
-2
lines changed

src/rustllvm/RustWrapper.cpp

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -170,7 +170,6 @@ extern "C" LLVMValueRef LLVMBuildAtomicLoad(LLVMBuilderRef B,
170170
AtomicOrdering order,
171171
unsigned alignment) {
172172
LoadInst* li = new LoadInst(unwrap(source),0);
173-
li->setVolatile(true);
174173
li->setAtomic(order);
175174
li->setAlignment(alignment);
176175
return wrap(unwrap(B)->Insert(li, Name));
@@ -182,7 +181,6 @@ extern "C" LLVMValueRef LLVMBuildAtomicStore(LLVMBuilderRef B,
182181
AtomicOrdering order,
183182
unsigned alignment) {
184183
StoreInst* si = new StoreInst(unwrap(val),unwrap(target));
185-
si->setVolatile(true);
186184
si->setAtomic(order);
187185
si->setAlignment(alignment);
188186
return wrap(unwrap(B)->Insert(si));

0 commit comments

Comments
 (0)