| Issue |
209023
|
| Summary |
[SLPVectorizer] nuw not dropped when converting sub to add
|
| Labels |
miscompilation,
llvm:SLPVectorizer
|
| Assignees |
|
| Reporter |
nikic
|
```llvm
; RUN: opt -passes=slp-vectorizer -slp-threshold=-1000 -mtriple=x86_64 < %s
define void @src(ptr %p) {
%p0 = getelementptr inbounds i32, ptr %p, i64 0
%p1 = getelementptr inbounds i32, ptr %p, i64 1
%p2 = getelementptr inbounds i32, ptr %p, i64 2
%p3 = getelementptr inbounds i32, ptr %p, i64 3
%x0 = load i32, ptr %p0
%x1 = load i32, ptr %p1
%x2 = load i32, ptr %p2
%x3 = load i32, ptr %p3
%a0 = add nuw i32 %x0, 3
%a1 = add nuw i32 %x1, 7
%a2 = add nuw i32 %x2, 1
%a3 = sub nuw i32 %x3, 5
store i32 %a0, ptr %p0
store i32 %a1, ptr %p1
store i32 %a2, ptr %p2
store i32 %a3, ptr %p3
ret void
}
define void @tgt(ptr %p) {
%p0 = getelementptr inbounds i32, ptr %p, i64 0
%1 = load <4 x i32>, ptr %p0, align 4
%2 = add nuw <4 x i32> %1, <i32 3, i32 7, i32 1, i32 -5>
store <4 x i32> %2, ptr %p0, align 4
ret void
}
```
Similar to https://github.com/llvm/llvm-project/issues/206474, but for `nuw` we should just always drop the flag when negating.
_______________________________________________
llvm-bugs mailing list
[email protected]
https://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-bugs