From: Evgeniy Stepanov Date: Sat, 17 Dec 2016 01:53:15 +0000 (+0000) Subject: Revert "[GVNHoist] Move GVNHoist to function simplification part of pipeline." X-Git-Tag: llvmorg-4.0.0-rc1~1777 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=95294127d0ef8264274a1cd9767b15295454af63;p=platform%2Fupstream%2Fllvm.git Revert "[GVNHoist] Move GVNHoist to function simplification part of pipeline." This reverts r289696, which caused TSan perf regression. See PR31382. llvm-svn: 290030 --- diff --git a/llvm/lib/Transforms/IPO/PassManagerBuilder.cpp b/llvm/lib/Transforms/IPO/PassManagerBuilder.cpp index b0e4b11..a663eed 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 7d76148..0000000 --- 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 -} -