diff options
author | Devang Patel <dpatel@apple.com> | 2009-02-05 21:46:41 +0000 |
---|---|---|
committer | Devang Patel <dpatel@apple.com> | 2009-02-05 21:46:41 +0000 |
commit | 998cbb0444ecb597e4b46f1950561d92b5395769 (patch) | |
tree | 6d1cfe0ae87d29413c1dd33ad71d060fe4bdb4dd | |
parent | d254a7fc0c354d165caee7e085ca0a95face4fa3 (diff) |
Revert rev. 63876. It is causing llvm-gcc bootstrap failure.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@63888 91177308-0d34-0410-b5e6-96231b3b80d8
-rw-r--r-- | include/llvm/Transforms/Utils/Local.h | 8 | ||||
-rw-r--r-- | lib/Transforms/Scalar/CondPropagate.cpp | 4 | ||||
-rw-r--r-- | lib/Transforms/Utils/Local.cpp | 17 | ||||
-rw-r--r-- | lib/Transforms/Utils/SimplifyCFG.cpp | 14 | ||||
-rw-r--r-- | test/Transforms/CondProp/basictest-dbg.ll | 45 |
5 files changed, 16 insertions, 72 deletions
diff --git a/include/llvm/Transforms/Utils/Local.h b/include/llvm/Transforms/Utils/Local.h index 2032d54871..35d2c0ce7e 100644 --- a/include/llvm/Transforms/Utils/Local.h +++ b/include/llvm/Transforms/Utils/Local.h @@ -40,14 +40,6 @@ template<typename T> class SmallVectorImpl; bool ConstantFoldTerminator(BasicBlock *BB); //===----------------------------------------------------------------------===// -// CFG Simplification -// - -/// isTerminatorFirstRelevantInsn - Return true if Term is very first -/// instruction ignoring Phi nodes and dbg intrinsics. -bool isTerminatorFirstRelevantInsn(BasicBlock *BB, Instruction *Term); - -//===----------------------------------------------------------------------===// // Local dead code elimination. // diff --git a/lib/Transforms/Scalar/CondPropagate.cpp b/lib/Transforms/Scalar/CondPropagate.cpp index 000ef60a0d..c4e2b1a401 100644 --- a/lib/Transforms/Scalar/CondPropagate.cpp +++ b/lib/Transforms/Scalar/CondPropagate.cpp @@ -148,7 +148,7 @@ void CondProp::SimplifyPredecessors(BranchInst *BI) { if (!PN->hasOneUse()) return; BasicBlock *BB = BI->getParent(); - if (!isTerminatorFirstRelevantInsn (BB, BI)) + if (&*BB->begin() != PN || &*next(BB->begin()) != BI) return; // Ok, we have this really simple case, walk the PHI operands, looking for @@ -182,7 +182,7 @@ void CondProp::SimplifyPredecessors(SwitchInst *SI) { if (!PN->hasOneUse()) return; BasicBlock *BB = SI->getParent(); - if (!isTerminatorFirstRelevantInsn (BB, SI)) + if (&*BB->begin() != PN || &*next(BB->begin()) != SI) return; bool RemovedPreds = false; diff --git a/lib/Transforms/Utils/Local.cpp b/lib/Transforms/Utils/Local.cpp index aa6efe80b3..c22485342e 100644 --- a/lib/Transforms/Utils/Local.cpp +++ b/lib/Transforms/Utils/Local.cpp @@ -148,23 +148,6 @@ bool llvm::ConstantFoldTerminator(BasicBlock *BB) { return false; } -//===----------------------------------------------------------------------===// -// CFG Simplification -// - -/// isTerminatorFirstRelevantInsn - Return true if Term is very first -/// instruction ignoring Phi nodes and dbg intrinsics. -bool llvm::isTerminatorFirstRelevantInsn(BasicBlock *BB, Instruction *Term) { - BasicBlock::iterator BBI = Term; - while (BBI != BB->begin()) { - --BBI; - if (!isa<DbgInfoIntrinsic>(BBI)) - break; - } - if (isa<PHINode>(BBI) || &*BBI == Term) - return true; - return false; -} //===----------------------------------------------------------------------===// // Local dead code elimination... diff --git a/lib/Transforms/Utils/SimplifyCFG.cpp b/lib/Transforms/Utils/SimplifyCFG.cpp index 0248d3d0ca..d9c4b69e6d 100644 --- a/lib/Transforms/Utils/SimplifyCFG.cpp +++ b/lib/Transforms/Utils/SimplifyCFG.cpp @@ -1330,6 +1330,20 @@ static bool FoldTwoEntryPHINode(PHINode *PN) { return true; } +/// isTerminatorFirstRelevantInsn - Return true if Term is very first +/// instruction ignoring Phi nodes and dbg intrinsics. +static bool isTerminatorFirstRelevantInsn(BasicBlock *BB, Instruction *Term) { + BasicBlock::iterator BBI = Term; + while (BBI != BB->begin()) { + --BBI; + if (!isa<DbgInfoIntrinsic>(BBI)) + break; + } + if (isa<PHINode>(BBI) || &*BBI == Term) + return true; + return false; +} + /// SimplifyCondBranchToTwoReturns - If we found a conditional branch that goes /// to two returning blocks, try to merge them together into one return, /// introducing a select if the return values disagree. diff --git a/test/Transforms/CondProp/basictest-dbg.ll b/test/Transforms/CondProp/basictest-dbg.ll deleted file mode 100644 index d8a680b898..0000000000 --- a/test/Transforms/CondProp/basictest-dbg.ll +++ /dev/null @@ -1,45 +0,0 @@ -; RUN: llvm-as < %s | opt -condprop | llvm-dis | \ -; RUN: not grep {br label} - - %llvm.dbg.anchor.type = type { i32, i32 } - %llvm.dbg.compile_unit.type = type { i32, { }*, i32, i8*, i8*, i8*, i1, i1, i8* } - -@llvm.dbg.compile_units = linkonce constant %llvm.dbg.anchor.type { i32 458752, i32 17 }, section "llvm.metadata" ; - -@.str = internal constant [4 x i8] c"a.c\00", section "llvm.metadata" ; <[4 x i8]*> [#uses=1] -@.str1 = internal constant [6 x i8] c"/tmp/\00", section "llvm.metadata" ; <[6 x i8]*> [#uses=1] -@.str2 = internal constant [55 x i8] c"4.2.1 (Based on Apple Inc. build 5636) (LLVM build 00)\00", section "llvm.metadata" ; <[55 x i8]*> [#uses=1] -@llvm.dbg.compile_unit = internal constant %llvm.dbg.compile_unit.type { i32 458769, { }* bitcast (%llvm.dbg.anchor.type* @llvm.dbg.compile_units to { }*), i32 1, i8* getelementptr ([4 x i8]* @.str, i32 0, i32 0), i8* getelementptr ([6 x i8]* @.str1, i32 0, i32 0), i8* getelementptr ([55 x i8]* @.str2, i32 0, i32 0), i1 true, i1 false, i8* null }, section "llvm.metadata" ; <%llvm.dbg.compile_unit.type*> [#uses=1] - -declare void @llvm.dbg.stoppoint(i32, i32, { }*) nounwind - - -define i32 @test(i1 %C) { - br i1 %C, label %T1, label %F1 - -T1: ; preds = %0 -call void @llvm.dbg.stoppoint(i32 5, i32 0, { }* bitcast (%llvm.dbg.compile_unit.type* @llvm.dbg.compile_unit to { }*)) - br label %Cont - -F1: ; preds = %0 -call void @llvm.dbg.stoppoint(i32 5, i32 0, { }* bitcast (%llvm.dbg.compile_unit.type* @llvm.dbg.compile_unit to { }*)) - br label %Cont - -Cont: ; preds = %F1, %T1 - %C2 = phi i1 [ false, %F1 ], [ true, %T1 ] ; <i1> [#uses=1] -call void @llvm.dbg.stoppoint(i32 5, i32 0, { }* bitcast (%llvm.dbg.compile_unit.type* @llvm.dbg.compile_unit to { }*)) - br i1 %C2, label %T2, label %F2 - -T2: ; preds = %Cont -call void @llvm.dbg.stoppoint(i32 5, i32 0, { }* bitcast (%llvm.dbg.compile_unit.type* @llvm.dbg.compile_unit to { }*)) - call void @bar( ) -call void @llvm.dbg.stoppoint(i32 5, i32 0, { }* bitcast (%llvm.dbg.compile_unit.type* @llvm.dbg.compile_unit to { }*)) - ret i32 17 - -F2: ; preds = %Cont -call void @llvm.dbg.stoppoint(i32 5, i32 0, { }* bitcast (%llvm.dbg.compile_unit.type* @llvm.dbg.compile_unit to { }*)) - ret i32 1 -} - -declare void @bar() - |