[llvm] r342387 - [GVNHoist] Re-enable GVNHoist by default

Eric Christopher via llvm-commits llvm-commits at lists.llvm.org
Fri Sep 28 11:27:16 PDT 2018


HI Alexandros

We're seeing multiple large regressions (~25%) in performance that are
pointing at re-enabling gvn hoist again. A notable piece of visible code is
swisstable, which can be found here:
https://github.com/abseil/abseil-cpp/tree/master/absl/container. The
benchmarks aren't currently there and I'll work on getting you some, but
you might be able to take a look there.

I've got other examples too and this would be widespread enough that I'd
want to disable again until we can get the performance back or at least
closer, overall performance greater with no large regressions is the goal
right?

Thanks!

-eric

On Mon, Sep 17, 2018 at 5:26 AM Alexandros Lamprineas via llvm-commits <
llvm-commits at lists.llvm.org> wrote:

> Author: alelab01
> Date: Mon Sep 17 05:24:55 2018
> New Revision: 342387
>
> URL: http://llvm.org/viewvc/llvm-project?rev=342387&view=rev
> Log:
> [GVNHoist] Re-enable GVNHoist by default
>
> Rebase rL341954 since https://bugs.llvm.org/show_bug.cgi?id=38912
> has been fixed by rL342055.
>
> Precommit testing performed:
> * Overnight runs of csmith comparing the output between programs
>   compiled with gvn-hoist enabled/disabled.
> * Bootstrap builds of clang with UbSan/ASan configurations.
>
> Modified:
>     llvm/trunk/lib/Passes/PassBuilder.cpp
>     llvm/trunk/lib/Transforms/IPO/PassManagerBuilder.cpp
>     llvm/trunk/test/Other/new-pm-defaults.ll
>     llvm/trunk/test/Other/new-pm-thinlto-defaults.ll
>     llvm/trunk/test/Other/opt-O2-pipeline.ll
>     llvm/trunk/test/Other/opt-O3-pipeline.ll
>     llvm/trunk/test/Other/opt-Os-pipeline.ll
>
> Modified: llvm/trunk/lib/Passes/PassBuilder.cpp
> URL:
> http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Passes/PassBuilder.cpp?rev=342387&r1=342386&r2=342387&view=diff
>
> ==============================================================================
> --- llvm/trunk/lib/Passes/PassBuilder.cpp (original)
> +++ llvm/trunk/lib/Passes/PassBuilder.cpp Mon Sep 17 05:24:55 2018
> @@ -175,8 +175,8 @@ static cl::opt<bool> EnableEarlyCSEMemSS
>      cl::desc("Enable the EarlyCSE w/ MemorySSA pass for the new PM
> (default = on)"));
>
>  static cl::opt<bool> EnableGVNHoist(
> -    "enable-npm-gvn-hoist", cl::init(false), cl::Hidden,
> -    cl::desc("Enable the GVN hoisting pass for the new PM (default =
> off)"));
> +    "enable-npm-gvn-hoist", cl::init(true), cl::Hidden,
> +    cl::desc("Enable the GVN hoisting pass for the new PM (default =
> on)"));
>
>  static cl::opt<bool> EnableGVNSink(
>      "enable-npm-gvn-sink", cl::init(false), cl::Hidden,
>
> Modified: llvm/trunk/lib/Transforms/IPO/PassManagerBuilder.cpp
> URL:
> http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Transforms/IPO/PassManagerBuilder.cpp?rev=342387&r1=342386&r2=342387&view=diff
>
> ==============================================================================
> --- llvm/trunk/lib/Transforms/IPO/PassManagerBuilder.cpp (original)
> +++ llvm/trunk/lib/Transforms/IPO/PassManagerBuilder.cpp Mon Sep 17
> 05:24:55 2018
> @@ -139,8 +139,8 @@ static cl::opt<bool> EnableEarlyCSEMemSS
>      cl::desc("Enable the EarlyCSE w/ MemorySSA pass (default = on)"));
>
>  static cl::opt<bool> EnableGVNHoist(
> -    "enable-gvn-hoist", cl::init(false), cl::Hidden,
> -    cl::desc("Enable the GVN hoisting pass (default = off)"));
> +    "enable-gvn-hoist", cl::init(true), cl::Hidden,
> +    cl::desc("Enable the GVN hoisting pass (default = on)"));
>
>  static cl::opt<bool>
>      DisableLibCallsShrinkWrap("disable-libcalls-shrinkwrap",
> cl::init(false),
>
> Modified: llvm/trunk/test/Other/new-pm-defaults.ll
> URL:
> http://llvm.org/viewvc/llvm-project/llvm/trunk/test/Other/new-pm-defaults.ll?rev=342387&r1=342386&r2=342387&view=diff
>
> ==============================================================================
> --- llvm/trunk/test/Other/new-pm-defaults.ll (original)
> +++ llvm/trunk/test/Other/new-pm-defaults.ll Mon Sep 17 05:24:55 2018
> @@ -121,6 +121,10 @@
>  ; CHECK-O-NEXT: Running pass: SROA
>  ; CHECK-O-NEXT: Running pass: EarlyCSEPass
>  ; CHECK-O-NEXT: Running analysis: MemorySSAAnalysis
> +; CHECK-O-NEXT: Running pass: GVNHoistPass on foo
> +; CHECK-O-NEXT: Running analysis: PostDominatorTreeAnalysis on foo
> +; CHECK-O-NEXT: Running analysis: MemoryDependenceAnalysis on foo
> +; CHECK-O-NEXT: Running analysis: PhiValuesAnalysis on foo
>  ; CHECK-O-NEXT: Running pass: SpeculativeExecutionPass
>  ; CHECK-O-NEXT: Running pass: JumpThreadingPass
>  ; CHECK-O-NEXT: Running analysis: LazyValueAnalysis
> @@ -169,23 +173,13 @@
>  ; CHECK-O-NEXT: Finished Loop pass manager run.
>  ; CHECK-Os-NEXT: Running pass: MergedLoadStoreMotionPass
>  ; CHECK-Os-NEXT: Running pass: GVN
> -; CHECK-Os-NEXT: Running analysis: MemoryDependenceAnalysis
> -; CHECK-Os-NEXT: Running analysis: PhiValuesAnalysis
>  ; CHECK-Oz-NEXT: Running pass: MergedLoadStoreMotionPass
>  ; CHECK-Oz-NEXT: Running pass: GVN
> -; CHECK-Oz-NEXT: Running analysis: MemoryDependenceAnalysis
> -; CHECK-Oz-NEXT: Running analysis: PhiValuesAnalysis
>  ; CHECK-O2-NEXT: Running pass: MergedLoadStoreMotionPass
>  ; CHECK-O2-NEXT: Running pass: GVN
> -; CHECK-O2-NEXT: Running analysis: MemoryDependenceAnalysis
> -; CHECK-O2-NEXT: Running analysis: PhiValuesAnalysis
>  ; CHECK-O3-NEXT: Running pass: MergedLoadStoreMotionPass
>  ; CHECK-O3-NEXT: Running pass: GVN
> -; CHECK-O3-NEXT: Running analysis: MemoryDependenceAnalysis
> -; CHECK-O3-NEXT: Running analysis: PhiValuesAnalysis
>  ; CHECK-O-NEXT: Running pass: MemCpyOptPass
> -; CHECK-O1-NEXT: Running analysis: MemoryDependenceAnalysis
> -; CHECK-O1-NEXT: Running analysis: PhiValuesAnalysis
>  ; CHECK-O-NEXT: Running pass: SCCPPass
>  ; CHECK-O-NEXT: Running pass: BDCEPass
>  ; CHECK-O-NEXT: Running analysis: DemandedBitsAnalysis
> @@ -201,7 +195,6 @@
>  ; CHECK-O-NEXT: Finished llvm::Function pass manager run.
>  ; CHECK-EP-SCALAR-LATE-NEXT: Running pass: NoOpFunctionPass
>  ; CHECK-O-NEXT: Running pass: ADCEPass
> -; CHECK-O-NEXT: Running analysis: PostDominatorTreeAnalysis
>  ; CHECK-O-NEXT: Running pass: SimplifyCFGPass
>  ; CHECK-O-NEXT: Running pass: InstCombinePass
>  ; CHECK-EP-PEEPHOLE-NEXT: Running pass: NoOpFunctionPass
>
> Modified: llvm/trunk/test/Other/new-pm-thinlto-defaults.ll
> URL:
> http://llvm.org/viewvc/llvm-project/llvm/trunk/test/Other/new-pm-thinlto-defaults.ll?rev=342387&r1=342386&r2=342387&view=diff
>
> ==============================================================================
> --- llvm/trunk/test/Other/new-pm-thinlto-defaults.ll (original)
> +++ llvm/trunk/test/Other/new-pm-thinlto-defaults.ll Mon Sep 17 05:24:55
> 2018
> @@ -106,6 +106,10 @@
>  ; CHECK-O-NEXT: Running pass: SROA
>  ; CHECK-O-NEXT: Running pass: EarlyCSEPass
>  ; CHECK-O-NEXT: Running analysis: MemorySSAAnalysis
> +; CHECK-O-NEXT: Running pass: GVNHoistPass on foo
> +; CHECK-O-NEXT: Running analysis: PostDominatorTreeAnalysis on foo
> +; CHECK-O-NEXT: Running analysis: MemoryDependenceAnalysis on foo
> +; CHECK-O-NEXT: Running analysis: PhiValuesAnalysis on foo
>  ; CHECK-O-NEXT: Running pass: SpeculativeExecutionPass
>  ; CHECK-O-NEXT: Running pass: JumpThreadingPass
>  ; CHECK-O-NEXT: Running analysis: LazyValueAnalysis
> @@ -151,23 +155,13 @@
>  ; CHECK-O-NEXT: Finished Loop pass manager run.
>  ; CHECK-Os-NEXT: Running pass: MergedLoadStoreMotionPass
>  ; CHECK-Os-NEXT: Running pass: GVN
> -; CHECK-Os-NEXT: Running analysis: MemoryDependenceAnalysis
> -; CHECK-Os-NEXT: Running analysis: PhiValuesAnalysis
>  ; CHECK-Oz-NEXT: Running pass: MergedLoadStoreMotionPass
>  ; CHECK-Oz-NEXT: Running pass: GVN
> -; CHECK-Oz-NEXT: Running analysis: MemoryDependenceAnalysis
> -; CHECK-Oz-NEXT: Running analysis: PhiValuesAnalysis
>  ; CHECK-O2-NEXT: Running pass: MergedLoadStoreMotionPass
>  ; CHECK-O2-NEXT: Running pass: GVN
> -; CHECK-O2-NEXT: Running analysis: MemoryDependenceAnalysis
> -; CHECK-O2-NEXT: Running analysis: PhiValuesAnalysis
>  ; CHECK-O3-NEXT: Running pass: MergedLoadStoreMotionPass
>  ; CHECK-O3-NEXT: Running pass: GVN
> -; CHECK-O3-NEXT: Running analysis: MemoryDependenceAnalysis
> -; CHECK-O3-NEXT: Running analysis: PhiValuesAnalysis
>  ; CHECK-O-NEXT: Running pass: MemCpyOptPass
> -; CHECK-O1-NEXT: Running analysis: MemoryDependenceAnalysis
> -; CHECK-O1-NEXT: Running analysis: PhiValuesAnalysis
>  ; CHECK-O-NEXT: Running pass: SCCPPass
>  ; CHECK-O-NEXT: Running pass: BDCEPass
>  ; CHECK-O-NEXT: Running analysis: DemandedBitsAnalysis
> @@ -181,7 +175,6 @@
>  ; CHECK-O-NEXT: Running pass: LCSSAPass
>  ; CHECK-O-NEXT: Finished llvm::Function pass manager run
>  ; CHECK-O-NEXT: Running pass: ADCEPass
> -; CHECK-O-NEXT: Running analysis: PostDominatorTreeAnalysis
>  ; CHECK-O-NEXT: Running pass: SimplifyCFGPass
>  ; CHECK-O-NEXT: Running pass: InstCombinePass
>  ; CHECK-O-NEXT: Finished llvm::Function pass manager run.
>
> Modified: llvm/trunk/test/Other/opt-O2-pipeline.ll
> URL:
> http://llvm.org/viewvc/llvm-project/llvm/trunk/test/Other/opt-O2-pipeline.ll?rev=342387&r1=342386&r2=342387&view=diff
>
> ==============================================================================
> --- llvm/trunk/test/Other/opt-O2-pipeline.ll (original)
> +++ llvm/trunk/test/Other/opt-O2-pipeline.ll Mon Sep 17 05:24:55 2018
> @@ -59,6 +59,12 @@
>  ; CHECK-NEXT:         Function Alias Analysis Results
>  ; CHECK-NEXT:         Memory SSA
>  ; CHECK-NEXT:         Early CSE w/ MemorySSA
> +; CHECK-NEXT:         Post-Dominator Tree Construction
> +; CHECK-NEXT:         Basic Alias Analysis (stateless AA impl)
> +; CHECK-NEXT:         Function Alias Analysis Results
> +; CHECK-NEXT:         Phi Values Analysis
> +; CHECK-NEXT:         Memory Dependence Analysis
> +; CHECK-NEXT:         Early GVN Hoisting of Expressions
>  ; CHECK-NEXT:         Speculatively execute instructions if target has
> divergent branches
>  ; CHECK-NEXT:         Basic Alias Analysis (stateless AA impl)
>  ; CHECK-NEXT:         Function Alias Analysis Results
>
> Modified: llvm/trunk/test/Other/opt-O3-pipeline.ll
> URL:
> http://llvm.org/viewvc/llvm-project/llvm/trunk/test/Other/opt-O3-pipeline.ll?rev=342387&r1=342386&r2=342387&view=diff
>
> ==============================================================================
> --- llvm/trunk/test/Other/opt-O3-pipeline.ll (original)
> +++ llvm/trunk/test/Other/opt-O3-pipeline.ll Mon Sep 17 05:24:55 2018
> @@ -62,6 +62,12 @@
>  ; CHECK-NEXT:         Function Alias Analysis Results
>  ; CHECK-NEXT:         Memory SSA
>  ; CHECK-NEXT:         Early CSE w/ MemorySSA
> +; CHECK-NEXT:         Post-Dominator Tree Construction
> +; CHECK-NEXT:         Basic Alias Analysis (stateless AA impl)
> +; CHECK-NEXT:         Function Alias Analysis Results
> +; CHECK-NEXT:         Phi Values Analysis
> +; CHECK-NEXT:         Memory Dependence Analysis
> +; CHECK-NEXT:         Early GVN Hoisting of Expressions
>  ; CHECK-NEXT:         Speculatively execute instructions if target has
> divergent branches
>  ; CHECK-NEXT:         Basic Alias Analysis (stateless AA impl)
>  ; CHECK-NEXT:         Function Alias Analysis Results
>
> Modified: llvm/trunk/test/Other/opt-Os-pipeline.ll
> URL:
> http://llvm.org/viewvc/llvm-project/llvm/trunk/test/Other/opt-Os-pipeline.ll?rev=342387&r1=342386&r2=342387&view=diff
>
> ==============================================================================
> --- llvm/trunk/test/Other/opt-Os-pipeline.ll (original)
> +++ llvm/trunk/test/Other/opt-Os-pipeline.ll Mon Sep 17 05:24:55 2018
> @@ -59,6 +59,12 @@
>  ; CHECK-NEXT:         Function Alias Analysis Results
>  ; CHECK-NEXT:         Memory SSA
>  ; CHECK-NEXT:         Early CSE w/ MemorySSA
> +; CHECK-NEXT:         Post-Dominator Tree Construction
> +; CHECK-NEXT:         Basic Alias Analysis (stateless AA impl)
> +; CHECK-NEXT:         Function Alias Analysis Results
> +; CHECK-NEXT:         Phi Values Analysis
> +; CHECK-NEXT:         Memory Dependence Analysis
> +; CHECK-NEXT:         Early GVN Hoisting of Expressions
>  ; CHECK-NEXT:         Speculatively execute instructions if target has
> divergent branches
>  ; CHECK-NEXT:         Basic Alias Analysis (stateless AA impl)
>  ; CHECK-NEXT:         Function Alias Analysis Results
>
>
> _______________________________________________
> llvm-commits mailing list
> llvm-commits at lists.llvm.org
> http://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-commits
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/llvm-commits/attachments/20180928/5f478a0e/attachment.html>


More information about the llvm-commits mailing list