diff options
author | Evgeniy Stepanov <eugeni.stepanov@gmail.com> | 2016-12-17 01:53:15 +0000 |
---|---|---|
committer | Evgeniy Stepanov <eugeni.stepanov@gmail.com> | 2016-12-17 01:53:15 +0000 |
commit | 95294127d0ef8264274a1cd9767b15295454af63 (patch) | |
tree | a2ffe51bab4eb916622e0e9d1be8af96f4f3742d | |
parent | 982c6b24b04f5dfa28aeedfb3b2e370f2359348f (diff) | |
download | bcm5719-llvm-95294127d0ef8264274a1cd9767b15295454af63.tar.gz bcm5719-llvm-95294127d0ef8264274a1cd9767b15295454af63.zip |
Revert "[GVNHoist] Move GVNHoist to function simplification part of pipeline."
This reverts r289696, which caused TSan perf regression.
See PR31382.
llvm-svn: 290030
-rw-r--r-- | llvm/lib/Transforms/IPO/PassManagerBuilder.cpp | 4 | ||||
-rw-r--r-- | llvm/test/Transforms/GVNHoist/hoist-inline.ll | 38 |
2 files changed, 2 insertions, 40 deletions
diff --git a/llvm/lib/Transforms/IPO/PassManagerBuilder.cpp b/llvm/lib/Transforms/IPO/PassManagerBuilder.cpp index b0e4b113f8e..a663eedc4f4 100644 --- a/llvm/lib/Transforms/IPO/PassManagerBuilder.cpp +++ b/llvm/lib/Transforms/IPO/PassManagerBuilder.cpp @@ -249,6 +249,8 @@ void PassManagerBuilder::populateFunctionPassManager( FPM.add(createCFGSimplificationPass()); FPM.add(createSROAPass()); FPM.add(createEarlyCSEPass()); + if(EnableGVNHoist) + FPM.add(createGVNHoistPass()); FPM.add(createLowerExpectIntrinsicPass()); } @@ -293,8 +295,6 @@ void PassManagerBuilder::addFunctionSimplificationPasses( // Break up aggregate allocas, using SSAUpdater. MPM.add(createSROAPass()); MPM.add(createEarlyCSEPass()); // Catch trivial redundancies - if(EnableGVNHoist) - MPM.add(createGVNHoistPass()); // Speculative execution if the target has divergent branches; otherwise nop. MPM.add(createSpeculativeExecutionIfHasBranchDivergencePass()); MPM.add(createJumpThreadingPass()); // Thread jumps. diff --git a/llvm/test/Transforms/GVNHoist/hoist-inline.ll b/llvm/test/Transforms/GVNHoist/hoist-inline.ll deleted file mode 100644 index 7d761486ab1..00000000000 --- a/llvm/test/Transforms/GVNHoist/hoist-inline.ll +++ /dev/null @@ -1,38 +0,0 @@ -; RUN: opt -S -O2 < %s | FileCheck %s - -; Check that the inlined loads are hoisted. -; CHECK-LABEL: define i32 @fun( -; CHECK-LABEL: entry: -; CHECK: load i32, i32* @A -; CHECK: if.then: - -@A = external global i32 -@B = external global i32 -@C = external global i32 - -define i32 @loadA() { - %a = load i32, i32* @A - ret i32 %a -} - -define i32 @fun(i1 %c) { -entry: - br i1 %c, label %if.then, label %if.else - -if.then: - store i32 1, i32* @B - %call1 = call i32 @loadA() - store i32 2, i32* @C - br label %if.endif - -if.else: - store i32 2, i32* @C - %call2 = call i32 @loadA() - store i32 1, i32* @B - br label %if.endif - -if.endif: - %ret = phi i32 [ %call1, %if.then ], [ %call2, %if.else ] - ret i32 %ret -} - |