5
5
;; Block 6 is reachable, but edge 6->4 is not
6
6
;; This means the phi value is undef, not 0
7
7
; Function Attrs: ssp uwtable
8
- define i16 @hoge () local_unnamed_addr # 0 align 2 {
8
+ define i16 @hoge () {
9
9
; CHECK-LABEL: @hoge(
10
10
; CHECK-NEXT: bb:
11
11
; CHECK-NEXT: switch i8 undef, label [[BB7:%.*]] [
@@ -21,7 +21,7 @@ define i16 @hoge() local_unnamed_addr #0 align 2 {
21
21
; CHECK: bb4:
22
22
; CHECK-NEXT: ret i16 undef
23
23
; CHECK: bb6:
24
- ; CHECK-NEXT: br i1 true, label [[BB3:%.*]], label [[BB4]], !llvm.loop !1
24
+ ; CHECK-NEXT: br i1 true, label [[BB3:%.*]], label [[BB4]]
25
25
; CHECK: bb7:
26
26
; CHECK-NEXT: unreachable
27
27
;
@@ -45,16 +45,108 @@ bb4: ; preds = %bb6, %bb2
45
45
ret i16 %tmp
46
46
47
47
bb6: ; preds = %bb4
48
- br i1 true , label %bb3 , label %bb4 , !llvm.loop !1
48
+ br i1 true , label %bb3 , label %bb4
49
49
50
50
bb7: ; preds = %bb
51
51
unreachable
52
52
}
53
53
54
- attributes #0 = { ssp uwtable "correctly-rounded-divide-sqrt-fp-math" ="false" "disable-tail-calls" ="false" "less-precise-fpmad" ="false" "frame-pointer" ="all" "no-infs-fp-math" ="false" "no-jump-tables" ="false" "no-nans-fp-math" ="false" "no-signed-zeros-fp-math" ="false" "no-trapping-math" ="false" "stack-protector-buffer-size" ="8" "target-cpu" ="penryn" "target-features" ="+cx16,+fxsr,+mmx,+sse,+sse2,+sse3,+sse4.1,+ssse3,+x87" "unsafe-fp-math" ="false" "use-soft-float" ="false" }
54
+ define i8 @only_undef (i1 %cond ) {
55
+ ; CHECK-LABEL: @only_undef(
56
+ ; CHECK-NEXT: br i1 [[COND:%.*]], label [[A:%.*]], label [[B:%.*]]
57
+ ; CHECK: A:
58
+ ; CHECK-NEXT: br label [[EXIT:%.*]]
59
+ ; CHECK: B:
60
+ ; CHECK-NEXT: br label [[EXIT]]
61
+ ; CHECK: EXIT:
62
+ ; CHECK-NEXT: ret i8 undef
63
+ ;
64
+ br i1 %cond , label %A , label %B
65
+ A:
66
+ br label %EXIT
67
+ B:
68
+ br label %EXIT
69
+ EXIT:
70
+ %r = phi i8 [undef , %A ], [undef , %B ]
71
+ ret i8 %r
72
+ }
73
+
74
+ define i8 @only_poison (i1 %cond ) {
75
+ ; CHECK-LABEL: @only_poison(
76
+ ; CHECK-NEXT: br i1 [[COND:%.*]], label [[A:%.*]], label [[B:%.*]]
77
+ ; CHECK: A:
78
+ ; CHECK-NEXT: br label [[EXIT:%.*]]
79
+ ; CHECK: B:
80
+ ; CHECK-NEXT: br label [[EXIT]]
81
+ ; CHECK: EXIT:
82
+ ; CHECK-NEXT: ret i8 poison
83
+ ;
84
+ br i1 %cond , label %A , label %B
85
+ A:
86
+ br label %EXIT
87
+ B:
88
+ br label %EXIT
89
+ EXIT:
90
+ %r = phi i8 [poison, %A ], [poison, %B ]
91
+ ret i8 %r
92
+ }
93
+
94
+ define i8 @undef_poison (i1 %cond ) {
95
+ ; CHECK-LABEL: @undef_poison(
96
+ ; CHECK-NEXT: br i1 [[COND:%.*]], label [[A:%.*]], label [[B:%.*]]
97
+ ; CHECK: A:
98
+ ; CHECK-NEXT: br label [[EXIT:%.*]]
99
+ ; CHECK: B:
100
+ ; CHECK-NEXT: br label [[EXIT]]
101
+ ; CHECK: EXIT:
102
+ ; CHECK-NEXT: ret i8 undef
103
+ ;
104
+ br i1 %cond , label %A , label %B
105
+ A:
106
+ br label %EXIT
107
+ B:
108
+ br label %EXIT
109
+ EXIT:
110
+ %r = phi i8 [undef , %A ], [poison, %B ]
111
+ ret i8 %r
112
+ }
55
113
56
- !llvm.ident = !{!0 }
114
+ define i8 @value_undef (i1 %cond , i8 %v ) {
115
+ ; CHECK-LABEL: @value_undef(
116
+ ; CHECK-NEXT: br i1 [[COND:%.*]], label [[A:%.*]], label [[B:%.*]]
117
+ ; CHECK: A:
118
+ ; CHECK-NEXT: br label [[EXIT:%.*]]
119
+ ; CHECK: B:
120
+ ; CHECK-NEXT: br label [[EXIT]]
121
+ ; CHECK: EXIT:
122
+ ; CHECK-NEXT: ret i8 [[V:%.*]]
123
+ ;
124
+ br i1 %cond , label %A , label %B
125
+ A:
126
+ br label %EXIT
127
+ B:
128
+ br label %EXIT
129
+ EXIT:
130
+ %r = phi i8 [undef , %A ], [%v , %B ]
131
+ ret i8 %r
132
+ }
57
133
58
- !0 = !{!"clang version 5.0.0" }
59
- !1 = distinct !{!1 , !2 }
60
- !2 = !{!"llvm.loop.unroll.disable" }
134
+ define i8 @value_poison (i1 %cond , i8 %v ) {
135
+ ; CHECK-LABEL: @value_poison(
136
+ ; CHECK-NEXT: br i1 [[COND:%.*]], label [[A:%.*]], label [[B:%.*]]
137
+ ; CHECK: A:
138
+ ; CHECK-NEXT: br label [[EXIT:%.*]]
139
+ ; CHECK: B:
140
+ ; CHECK-NEXT: br label [[EXIT]]
141
+ ; CHECK: EXIT:
142
+ ; CHECK-NEXT: ret i8 [[V:%.*]]
143
+ ;
144
+ br i1 %cond , label %A , label %B
145
+ A:
146
+ br label %EXIT
147
+ B:
148
+ br label %EXIT
149
+ EXIT:
150
+ %r = phi i8 [poison, %A ], [%v , %B ]
151
+ ret i8 %r
152
+ }
0 commit comments