Issue |
96366
|
Summary |
arithmetic miscompile from AArch64 backend
|
Labels |
backend:AArch64,
llvm:codegen,
miscompilation
|
Assignees |
|
Reporter |
regehr
|
this function:
```llvm
declare void @mumble(i32)
define i32 @f(i32 %0) {
%2 = sub nuw i32 0, %0
call void @mumble(i32 %2)
%3 = sub i32 1, %0
%4 = sub i32 3, %0
%5 = mul i32 %0, 1
%6 = add i32 %3, %5
%7 = add i32 %6, %4
ret i32 %7
}
```
is getting lowered to always return 4:
```
_f:
stp x29, x30, [sp, #-16]!
.cfi_def_cfa_offset 16
.cfi_offset w30, -8
.cfi_offset w29, -16
mov w0, wzr
bl _mumble
mov w0, #4
ldp x29, x30, [sp], #16
ret
```
but that's not right. for example, `f(9)` should give `-5`
_______________________________________________
llvm-bugs mailing list
llvm-bugs@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-bugs