[llvm-dev] [llvm] r342387 - [GVNHoist] Re-enable GVNHoist by default (original) (raw)

Alexandros Lamprineas via llvm-dev llvm-dev at lists.llvm.org
Tue Oct 2 02:16:15 PDT 2018


Hi Eric,

Thanks for your feedback. I am not actively working on GVN-Hoist, but I'll take a look at these benchmarks at some point. We can keep it reverted for the time being. My take is that the community should get more involved if GVN-Hoist is an optimization we would like to re-enable. I felt I was a bit on my own trying to get it to a good state.

Regards,

Alexandros


From: Eric Christopher <echristo at gmail.com> Sent: Monday, October 1, 2018 7:59:21 PM To: Alexandros Lamprineas Cc: llvm-commits at lists.llvm.org; Jordan Rupprecht; Jorge Gorbe Moya Subject: Re: [llvm] r342387 - [GVNHoist] Re-enable GVNHoist by default

And reverted here:

echristo at athyra ~/s/llvm> git svn dcommit Committing to https://llvm.org/svn/llvm-project/llvm/trunk ... M lib/Passes/PassBuilder.cpp M lib/Transforms/IPO/PassManagerBuilder.cpp M test/Other/new-pm-defaults.ll M test/Other/new-pm-thinlto-defaults.ll M test/Other/opt-O2-pipeline.ll M test/Other/opt-O3-pipeline.ll M test/Other/opt-Os-pipeline.ll Committed r343522

Thanks!

On Mon, Oct 1, 2018 at 11:48 AM Eric Christopher <echristo at gmail.com<mailto:echristo at gmail.com>> wrote: As a follow-up the benchmarks are now available here:

https://github.com/google/hashtable-benchmarks

I'm going to go ahead and revert this in the meantime. I haven't seen performance numbers with GVNHoist enabled - could you make sure that those are also in the next commit message for review?

Thanks!

On Fri, Sep 28, 2018 at 11:27 AM Eric Christopher <echristo at gmail.com<mailto:echristo at gmail.com>> wrote: 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<mailto: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:

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 EnableEarlyCSEMemSS cl::desc("Enable the EarlyCSE w/ MemorySSA pass for the new PM (default = on)"));

static cl::opt EnableGVNHoist(

static cl::opt 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 EnableEarlyCSEMemSS cl::desc("Enable the EarlyCSE w/ MemorySSA pass (default = on)"));

static cl::opt EnableGVNHoist(

static cl::opt 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<mailto:llvm-commits at lists.llvm.org> http://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-commits IMPORTANT NOTICE: The contents of this email and any attachments are confidential and may also be privileged. If you are not the intended recipient, please notify the sender immediately and do not disclose the contents to any other person, use it for any purpose, or store or copy the information in any medium. Thank you. -------------- next part -------------- An HTML attachment was scrubbed... URL: <http://lists.llvm.org/pipermail/llvm-dev/attachments/20181002/3a18e648/attachment.html>



More information about the llvm-dev mailing list