Skip to content

Commit bf95dd4

Browse files
Only generate AcqRel SafeHeap load methods when --relaxed-atomics is
enabled
1 parent 2f0fc13 commit bf95dd4

File tree

4 files changed

+33694
-3
lines changed

4 files changed

+33694
-3
lines changed

src/passes/SafeHeap.cpp

Lines changed: 9 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -243,9 +243,15 @@ struct SafeHeap : public Pass {
243243
if (align > bytes) {
244244
continue;
245245
}
246-
for (auto memoryOrder : {MemoryOrder::Unordered,
247-
MemoryOrder::AcqRel,
248-
MemoryOrder::SeqCst}) {
246+
247+
std::vector<MemoryOrder> memoryOrders(
248+
features.hasRelaxedAtomics()
249+
? std::initializer_list<MemoryOrder>{MemoryOrder::Unordered,
250+
MemoryOrder::AcqRel,
251+
MemoryOrder::SeqCst}
252+
: std::initializer_list<MemoryOrder>{MemoryOrder::Unordered,
253+
MemoryOrder::SeqCst});
254+
for (MemoryOrder memoryOrder : memoryOrders) {
249255
load.order = memoryOrder;
250256
if (load.isAtomic() &&
251257
!isPossibleAtomicOperation(

0 commit comments

Comments
 (0)