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

Reply via email to