mirror of
https://github.com/RPCS3/llvm.git
synced 2025-01-20 17:03:09 +00:00
LowerAtomic: Don't skip optnone functions; atomic still need lowering (PR34020)
The lowering isn't really an optimization, so optnone shouldn't make a difference. ARM relies on the pass running when using "-mthread-model single", because in that mode, it doesn't run AtomicExpand. See bug for more details. Differential Revision: https://reviews.llvm.org/D37040 git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@311565 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
parent
851d8014a1
commit
18b8cfa7ee
@ -155,8 +155,7 @@ public:
|
||||
}
|
||||
|
||||
bool runOnFunction(Function &F) override {
|
||||
if (skipFunction(F))
|
||||
return false;
|
||||
// Don't skip optnone functions; atomics still need to be lowered.
|
||||
FunctionAnalysisManager DummyFAM;
|
||||
auto PA = Impl.run(F, DummyFAM);
|
||||
return !PA.areAllPreserved();
|
||||
|
@ -57,7 +57,6 @@ attributes #0 = { optnone noinline }
|
||||
; Additional IR passes that opt doesn't turn on by default.
|
||||
; OPT-MORE-DAG: Skipping pass 'Dead Code Elimination'
|
||||
; OPT-MORE-DAG: Skipping pass 'Dead Instruction Elimination'
|
||||
; OPT-MORE-DAG: Skipping pass 'Lower atomic intrinsics
|
||||
|
||||
; Loop IR passes that opt doesn't turn on by default.
|
||||
; OPT-LOOP-DAG: Skipping pass 'Delete dead loops'
|
||||
|
@ -26,3 +26,14 @@ define i8 @swap() {
|
||||
ret i8 %j
|
||||
; CHECK: ret i8 [[INST]]
|
||||
}
|
||||
|
||||
|
||||
define i8 @swap_optnone() noinline optnone {
|
||||
; CHECK-LABEL: @swap_optnone(
|
||||
%i = alloca i8
|
||||
%j = atomicrmw xchg i8* %i, i8 42 monotonic
|
||||
; CHECK: [[INST:%[a-z0-9]+]] = load
|
||||
; CHECK-NEXT: store
|
||||
ret i8 %j
|
||||
; CHECK: ret i8 [[INST]]
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user