2009-09-11 17:02:12 +00:00
|
|
|
; RUN: opt < %s -simplifycfg -S | not grep br
|
2008-03-18 03:45:45 +00:00
|
|
|
|
|
|
|
declare void @foo1()
|
|
|
|
|
|
|
|
declare void @foo2()
|
|
|
|
|
|
|
|
define void @test1(i32 %V) {
|
|
|
|
%C1 = icmp eq i32 %V, 4 ; <i1> [#uses=1]
|
|
|
|
%C2 = icmp eq i32 %V, 17 ; <i1> [#uses=1]
|
|
|
|
%CN = or i1 %C1, %C2 ; <i1> [#uses=1]
|
|
|
|
br i1 %CN, label %T, label %F
|
|
|
|
T: ; preds = %0
|
|
|
|
call void @foo1( )
|
|
|
|
ret void
|
|
|
|
F: ; preds = %0
|
|
|
|
call void @foo2( )
|
|
|
|
ret void
|
2004-02-24 05:34:44 +00:00
|
|
|
}
|
|
|
|
|
2008-03-18 03:45:45 +00:00
|
|
|
define void @test2(i32 %V) {
|
|
|
|
%C1 = icmp ne i32 %V, 4 ; <i1> [#uses=1]
|
|
|
|
%C2 = icmp ne i32 %V, 17 ; <i1> [#uses=1]
|
|
|
|
%CN = and i1 %C1, %C2 ; <i1> [#uses=1]
|
|
|
|
br i1 %CN, label %T, label %F
|
|
|
|
T: ; preds = %0
|
|
|
|
call void @foo1( )
|
|
|
|
ret void
|
|
|
|
F: ; preds = %0
|
|
|
|
call void @foo2( )
|
|
|
|
ret void
|
2004-02-24 05:34:44 +00:00
|
|
|
}
|
|
|
|
|
2008-03-18 03:45:45 +00:00
|
|
|
define void @test3(i32 %V) {
|
|
|
|
%C1 = icmp eq i32 %V, 4 ; <i1> [#uses=1]
|
|
|
|
br i1 %C1, label %T, label %N
|
|
|
|
N: ; preds = %0
|
|
|
|
%C2 = icmp eq i32 %V, 17 ; <i1> [#uses=1]
|
|
|
|
br i1 %C2, label %T, label %F
|
|
|
|
T: ; preds = %N, %0
|
|
|
|
call void @foo1( )
|
|
|
|
ret void
|
|
|
|
F: ; preds = %N
|
|
|
|
call void @foo2( )
|
|
|
|
ret void
|
2005-02-24 02:13:50 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
|