Issue |
129373
|
Summary |
[VectorCombine] scalarizeLoadExtract - infinite loop if we scalarize a dead extract waiting to be erased
|
Labels |
new issue
|
Assignees |
RKSimon
|
Reporter |
RKSimon
|
Reduced test case:
```ll
define void @infinite_loop(ptr %p0) {
%load = load <4 x float>, ptr %p0, align 8
%shuffle0 = shufflevector <4 x float> zeroinitializer, <4 x float> %load, <4 x i32> <i32 0, i32 4, i32 1, i32 5>
%shuffle1 = shufflevector <4 x float> %shuffle0, <4 x float> zeroinitializer, <4 x i32> <i32 0, i32 4, i32 poison, i32 poison>
%extract = extractelement <4 x float> %load, i64 1
ret void
}
```
scalarizeLoadExtract iterates across all users of a load, and doesn't account for possible orders in the worklist that prevent unused instructions that use the load from being erased afterward.
Fix incoming
_______________________________________________
llvm-bugs mailing list
llvm-bugs@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-bugs