<table border="1" cellspacing="0" cellpadding="8">
    <tr>
        <th>Issue</th>
        <td>
            <a href=https://github.com/llvm/llvm-project/issues/133928>133928</a>
        </td>
    </tr>

    <tr>
        <th>Summary</th>
        <td>
            miscompile from AArch64 backend
        </td>
    </tr>

    <tr>
      <th>Labels</th>
      <td>
            backend:AArch64,
            llvm:codegen,
            miscompilation
      </td>
    </tr>

    <tr>
      <th>Assignees</th>
      <td>
      </td>
    </tr>

    <tr>
      <th>Reporter</th>
      <td>
          regehr
      </td>
    </tr>
</table>

<pre>
    take this function:
```llvm
define i4 @f(ptr %0, i8 %1, i1 %2) {
  %4 = trunc i8 %1 to i4
  %5 = getelementptr i8, ptr %0, i8 %1
  %6 = icmp uge ptr %5, %0
  br i1 %6, label %common.ret, label %7

common.ret: ; preds = %10, %7, %3
  %common.ret.op = phi i4 [ 0, %10 ], [ 1, %3 ], [ 0, %7 ]
  ret i4 %common.ret.op

7: ; preds = %3
  %8 = add nuw i8 0, 0
  %9 = icmp ult i8 %8, %1
  br i1 %2, label %common.ret, label %10

10: ; preds = %7
  %11 = udiv i4 1, 1
  br label %common.ret
}
```
when invoked like this `f((char *)0xd, -5, 0)`, Alive believes that it should return 0, and I agree:
%5 = 0x8
%6 = false
branch to label %7
branch to label %10
branch to label %common.ret
return 0

on the other hand, the AArch64 backend is giving this:
```
~/reduce$ ~/llvm-project/for-alive/bin/llc -march=aarch64 -o - reduced.ll
        .build_version macos, 15, 0
        .section        __TEXT,__text,regular,pure_instructions
        .globl  _f ; -- Begin function f
        .p2align        2
_f: ; @f
        .cfi_startproc
; %bb.0:
        add     x8, x0, w1, uxtb
        cmp     x8, x0
        b.lo    LBB0_2
; %bb.1:
        mov     w0, #1 ; =0x1
        ret
LBB0_2:
        mov     w0, wzr
        ret
        .cfi_endproc
 ; -- End function
.subsections_via_symbols
~/reduce$ 
```
which returns 1 when called with those same arguments. it looks like maybe the add should be sxtb instead of uxtb since GEP offsets are signed?

</pre>
<img width="1" height="1" alt="" src="http://email.email.llvm.org/o/eJyMVU2PqzYU_TXO5iqRMSGBRRZk5qWq1EUXb9FdZOwLuGNsZJtMXhf97ZUN5M28yaJSpODL_Tycc829V51BPJHiTIrXDZ9Cb93JYYe92zRW_jgF_oYQeuWhnYwIyhqS14TW5EDnn9a3gdBaYqsMgtoD2dOWsHIMDggrKGEvoMr4mKXHLD4ywiogxzOhNcTzHkj-CsFNRqzOECyo_epQJIcOA2oc0ISYXZUx4bM6S9AhBSkxjDB1uHoW0TNFRLfGLS0dolnzBnU8CTsM1uwchk_mY5yc1h_e5jWQ_AyjQ-lTudgAXUocl_987ehn4M6OyX3sVQKtOMMalVEgxWs6FGfI1hwfjY8CyRiTOwwpzy815n6PT9t8dFUmC5cSzPQeQUzp6fq6-gCjDgvI5drsZxTZ_0Exo3NbGX3a13EtnGXJNEl1i7MlJB71nhWhNTm-fiQnofV7jwaUudk3lKDVymZySCwlrBQ9j7yoCavoXcYa22Ken1UxBXuBWqsbQoNa4Q09hJ4HUAF8byctI_STMzNo3Ej4HXjnEBedrNyl93I-zqxsufZIaN04bkQfyf6JZE_MCbUn9k_zP3pJAFsDoUewoUcHPTdpumipayf6wx4aLt7QSFAeOnVTpkvg_KJwQut_Cbs4lJNAwvYQT1H229HZv1EEwi6tdVseUSLs0iiTHARsB-5ET_JXzud6WwtbmBPJndapy2rXTErL6w2dV9bAwIX16VMXKw2jk8d5-9Dqev3-7a_vhL1crwHvkVoOu0lzR9jLODm8KuODm5K7X6I7bRsdY9vEt-0Wztgp81hq0C6OI-NadbEMI7S-titD01abXUSrrj5wF0ZnRbTF16xomh1dkKMVl5LQ6p5Uck_MeE_0ne6hmT3EMH70SLZmpy2h1R_nM72yT5mzR-bB3git3pcNkGdzd_krvWezw0yEJcezqPd_3EfPdSQ0chloheibkT-3Pq13fmqWr-CvN8Wv_sfQWO2_8OOLApXoF5V4yCApUnCtUcK7Cj2E3noEzwcE7rop7ne_iwLT1r75WbQD_9Fg4m7cU4vyGgR_Dw3ED45cgm0TwOCVEQi_ffsTbNt6DB64Q0h3nST5hdB6I0-5rPKKb_CUHfd5wXJalZv-RA85b0sUx5bSA8uOzSEv2gZZ1SJlZYsbdWKUFXRPs6woyqzcVZwfJZWSspY24kDJnuLAld5Fieys6zbK-wlPWZ5XrNwk3fp04zK26I_k9aJIwuIGJYylazWvhZXYoXmYB-WFHUalefoojMVr252SGpup82RPtfLB_yweVNB4esQhtM4Ovy6AzeT0qQ9hTNpnF8IunQr91OyEHRa1fxV9mssTdllGu53YfwEAAP__j09pDg">