@@ -24,3 +24,15 @@ define void @multiple_extract(ptr %p) { |
|
|
24 |
24 |
store i32 %e1, ptr %p1, align 4 |
25 |
25 |
ret void |
26 |
26 |
} |
|
27 |
+ |
|
28 |
+; infinite loop if we fold an extract that is waiting to be erased |
|
29 |
+define void @unused_extract(ptr %p) { |
|
30 |
+; CHECK-LABEL: @unused_extract( |
|
31 |
+; CHECK-NEXT: ret void |
|
32 |
+; |
|
33 |
+%load = load <4 x float>, ptr %p, align 8 |
|
34 |
+%shuffle0 = shufflevector <4 x float> zeroinitializer, <4 x float> %load, <4 x i32> <i32 0, i32 4, i32 1, i32 5> |
|
35 |
+%shuffle1 = shufflevector <4 x float> %shuffle0, <4 x float> zeroinitializer, <4 x i32> <i32 0, i32 4, i32 poison, i32 poison> |
|
36 |
+%extract = extractelement <4 x float> %load, i64 1 |
|
37 |
+ret void |
|
38 |
+} |