From: Benjamin Kramer Date: Fri, 3 Mar 2017 14:27:53 +0000 (+0000) Subject: Revert "Re-apply "[GVNHoist] Move GVNHoist to function simplification part of pipeline."" X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=9ee375bd9948ccd2a4d0f6a2261aab74496abe0e;p=llvm Revert "Re-apply "[GVNHoist] Move GVNHoist to function simplification part of pipeline."" This reverts commit r296759. Miscompiles bash. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@296872 91177308-0d34-0410-b5e6-96231b3b80d8 --- diff --git a/lib/Transforms/IPO/PassManagerBuilder.cpp b/lib/Transforms/IPO/PassManagerBuilder.cpp index 5938d4499c2..59605d58084 100644 --- a/lib/Transforms/IPO/PassManagerBuilder.cpp +++ b/lib/Transforms/IPO/PassManagerBuilder.cpp @@ -244,6 +244,8 @@ void PassManagerBuilder::populateFunctionPassManager( FPM.add(createCFGSimplificationPass()); FPM.add(createSROAPass()); FPM.add(createEarlyCSEPass()); + if(EnableGVNHoist) + FPM.add(createGVNHoistPass()); FPM.add(createLowerExpectIntrinsicPass()); } @@ -288,8 +290,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/test/Transforms/GVNHoist/hoist-inline.ll b/test/Transforms/GVNHoist/hoist-inline.ll deleted file mode 100644 index 7d761486ab1..00000000000 --- a/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 -} -