[llvm] r311565 - LowerAtomic: Don't skip optnone functions; atomic still need lowering (PR34020)

Hans Wennborg via llvm-commits llvm-commits at lists.llvm.org
Wed Aug 23 14:32:05 PDT 2017


Merged to 5.0 in r311602.

On Wed, Aug 23, 2017 at 8:43 AM, Hans Wennborg via llvm-commits
<llvm-commits at lists.llvm.org> wrote:
> Author: hans
> Date: Wed Aug 23 08:43:28 2017
> New Revision: 311565
>
> URL: http://llvm.org/viewvc/llvm-project?rev=311565&view=rev
> Log:
> 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
>
> Modified:
>     llvm/trunk/lib/Transforms/Scalar/LowerAtomic.cpp
>     llvm/trunk/test/Feature/optnone-opt.ll
>     llvm/trunk/test/Transforms/LowerAtomic/atomic-swap.ll
>
> Modified: llvm/trunk/lib/Transforms/Scalar/LowerAtomic.cpp
> URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Transforms/Scalar/LowerAtomic.cpp?rev=311565&r1=311564&r2=311565&view=diff
> ==============================================================================
> --- llvm/trunk/lib/Transforms/Scalar/LowerAtomic.cpp (original)
> +++ llvm/trunk/lib/Transforms/Scalar/LowerAtomic.cpp Wed Aug 23 08:43:28 2017
> @@ -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();
>
> Modified: llvm/trunk/test/Feature/optnone-opt.ll
> URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/test/Feature/optnone-opt.ll?rev=311565&r1=311564&r2=311565&view=diff
> ==============================================================================
> --- llvm/trunk/test/Feature/optnone-opt.ll (original)
> +++ llvm/trunk/test/Feature/optnone-opt.ll Wed Aug 23 08:43:28 2017
> @@ -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'
>
> Modified: llvm/trunk/test/Transforms/LowerAtomic/atomic-swap.ll
> URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/test/Transforms/LowerAtomic/atomic-swap.ll?rev=311565&r1=311564&r2=311565&view=diff
> ==============================================================================
> --- llvm/trunk/test/Transforms/LowerAtomic/atomic-swap.ll (original)
> +++ llvm/trunk/test/Transforms/LowerAtomic/atomic-swap.ll Wed Aug 23 08:43:28 2017
> @@ -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]]
> +}
>
>
> _______________________________________________
> llvm-commits mailing list
> llvm-commits at lists.llvm.org
> http://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-commits


More information about the llvm-commits mailing list