llvm-6502/test/Transforms/SCCP/2008-01-27-UndefCorrelate.ll
Chris Lattner 05bb789430 Fix PR1938 by forcing the code that uses an undefined value to branch one
way or the other.  Rewriting the code itself prevents subsequent analysis
passes from making contradictory conclusions about the code that could 
cause an infeasible path to be made feasible.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@46427 91177308-0d34-0410-b5e6-96231b3b80d8
2008-01-28 00:32:30 +00:00

37 lines
651 B
LLVM

; RUN: llvm-as < %s | opt -sccp | llvm-dis | grep undef | count 1
; PR1938
define i32 @main() {
entry:
br label %bb
bb:
%indvar = phi i32 [ 0, %entry ], [ %k, %bb.backedge ]
%k = add i32 %indvar, 1
br i1 undef, label %cond_true, label %cond_false
cond_true:
%tmp97 = icmp slt i32 %k, 10
br i1 %tmp97, label %bb.backedge, label %bb12
bb.backedge:
br label %bb
cond_false:
%tmp9 = icmp slt i32 %k, 10
br i1 %tmp9, label %bb.backedge, label %bb12
bb12:
%tmp14 = icmp eq i32 %k, 10
br i1 %tmp14, label %cond_next18, label %cond_true17
cond_true17:
tail call void @abort( )
unreachable
cond_next18:
ret i32 0
}
declare void @abort()