blob: 4ecbd8856b789cdf1ecc8476270b06ce99932e7c [file] [log] [blame]
Dan Gohman5bb7c7c2009-09-08 22:34:10 +00001; RUN: opt < %s -condprop -S | not grep phi
Dan Gohmanf17a25c2007-07-18 16:29:46 +00002
Tanya Lattner4c4d0b82008-03-01 09:15:35 +00003declare i1 @foo()
Dan Gohmanf17a25c2007-07-18 16:29:46 +00004
Tanya Lattner4c4d0b82008-03-01 09:15:35 +00005define i32 @test(i32 %C) {
6 %Val = call i1 @foo( ) ; <i1> [#uses=2]
7 switch i32 %C, label %T1 [
8 i32 4, label %T2
9 i32 17, label %T3
Dan Gohmanf17a25c2007-07-18 16:29:46 +000010 ]
Dan Gohmanf17a25c2007-07-18 16:29:46 +000011
Tanya Lattner4c4d0b82008-03-01 09:15:35 +000012T1: ; preds = %0
13 call void @a( )
14 br label %Cont
15
16T2: ; preds = %0
17 call void @b( )
18 br label %Cont
19
20T3: ; preds = %0
21 call void @c( )
22 br label %Cont
23
24Cont: ; preds = %T3, %T2, %T1
25 ;; PHI becomes dead after threading T2
26 %C2 = phi i1 [ %Val, %T1 ], [ true, %T2 ], [ %Val, %T3 ] ; <i1> [#uses=1]
27 br i1 %C2, label %L2, label %F2
28
29L2: ; preds = %Cont
30 call void @d( )
31 ret i32 17
32
33F2: ; preds = %Cont
34 call void @e( )
35 ret i32 1
Dan Gohmanf17a25c2007-07-18 16:29:46 +000036}
Tanya Lattner4c4d0b82008-03-01 09:15:35 +000037
38declare void @a()
39
40declare void @b()
41
42declare void @c()
43
44declare void @d()
45
46declare void @e()