[PATCH] D37040: LowerAtomic: Don't skip optnone functions; atomic still need lowering (PR34020)

Hans Wennborg via Phabricator via llvm-commits llvm-commits at lists.llvm.org
Tue Aug 22 17:08:29 PDT 2017


hans created this revision.
Herald added subscribers: kristof.beyls, aemerson.

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.


https://reviews.llvm.org/D37040

Files:
  lib/Transforms/Scalar/LowerAtomic.cpp
  test/Feature/optnone-opt.ll
  test/Transforms/LowerAtomic/atomic-swap.ll


Index: test/Transforms/LowerAtomic/atomic-swap.ll
===================================================================
--- test/Transforms/LowerAtomic/atomic-swap.ll
+++ test/Transforms/LowerAtomic/atomic-swap.ll
@@ -26,3 +26,14 @@
   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]]
+}
Index: test/Feature/optnone-opt.ll
===================================================================
--- test/Feature/optnone-opt.ll
+++ test/Feature/optnone-opt.ll
@@ -57,7 +57,6 @@
 ; 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'
Index: lib/Transforms/Scalar/LowerAtomic.cpp
===================================================================
--- lib/Transforms/Scalar/LowerAtomic.cpp
+++ lib/Transforms/Scalar/LowerAtomic.cpp
@@ -155,8 +155,7 @@
   }
 
   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();


-------------- next part --------------
A non-text attachment was scrubbed...
Name: D37040.112263.patch
Type: text/x-patch
Size: 1547 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/llvm-commits/attachments/20170823/f58025f9/attachment.bin>


More information about the llvm-commits mailing list