| Issue |
76404
|
| Summary |
Bad optimization - results change at -O1
|
| Labels |
|
| Assignees |
|
| Reporter |
ericastor
|
Demonstration: https://godbolt.org/z/4c35Tncq8
LLVM IR that seems to miscompile:
```
define void @__sample__main(ptr %input_ptrs, ptr %output_ptrs) {
entry:
%0 = alloca i8, align 1
%1 = load ptr, ptr %input_ptrs, align 8
%x.i.i = load i8, ptr %1, align 1
%2 = sdiv i8 %x.i.i, -1
store i8 %2, ptr %0, align 1
%3 = load ptr, ptr %output_ptrs, align 8
%y.i.i = load i8, ptr %0, align 1
%4 = sext i8 %y.i.i to i16
%5 = and i16 %4, 511
store i16 %5, ptr %3, align 2
ret void
}
```
Incorrectly optimized IR:
```
define void @__sample__main(ptr nocapture readonly %input_ptrs, ptr nocapture readonly %output_ptrs) local_unnamed_addr #0 {
entry:
%0 = load ptr, ptr %input_ptrs, align 8
%x.i.i = load i8, ptr %0, align 1
%1 = sub nsw i8 0, %x.i.i
%2 = load ptr, ptr %output_ptrs, align 8
%3 = sext i8 %1 to i16
%4 = and i16 %3, 511
store i16 %4, ptr %2, align 2
ret void
}
```
Not quite clear on what the issue is, but the output definitely changes.
_______________________________________________
llvm-bugs mailing list
[email protected]
https://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-bugs