Fix for PR5373, Credit to Jakub Staszak.

llvm-svn: 89758
This commit is contained in:
Edward O'Callaghan 2009-11-24 11:51:52 +00:00
parent c2998766f0
commit 5fd452d596
2 changed files with 24 additions and 1 deletions

View File

@ -296,7 +296,6 @@ static bool isTrivialLoopExitBlockHelper(Loop *L, BasicBlock *BB,
// first exit.
if (ExitBB != 0) return false;
ExitBB = BB;
return true;
}
// Otherwise, this is an unvisited intra-loop node. Check all successors.

View File

@ -0,0 +1,24 @@
; RUN: opt < %s -loop-unswitch -stats -disable-output |& grep "3 loop-unswitch - Number of branches unswitched"
define noalias i32* @func_16(i32** %p_18, i32* %p_20) noreturn nounwind ssp {
entry:
%lnot = icmp eq i32** %p_18, null ; <i1> [#uses=1]
%lnot6 = icmp eq i32* %p_20, null ; <i1> [#uses=1]
br label %for.body
for.body: ; preds = %cond.end, %entry
br i1 %lnot, label %cond.end, label %cond.true
cond.true: ; preds = %for.body
tail call void @f()
unreachable
cond.end: ; preds = %for.body
br i1 %lnot6, label %for.body, label %cond.true10
cond.true10: ; preds = %cond.end
tail call void @f()
unreachable
}
declare void @f() noreturn