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

Eric Christopher via llvm-commits llvm-commits at lists.llvm.org
Mon Oct 1 11:59:21 PDT 2018


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> 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>
> 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> 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/20181001/62b26efc/attachment.html>


More information about the llvm-commits mailing list