[llvm] [CodeGen] Treat hasOrderedMemoryRef as implying arbitrary loads or stores (PR #182000)

Jay Foad via llvm-commits llvm-commits at lists.llvm.org
Tue Mar 3 06:53:14 PST 2026


================
@@ -17,11 +17,11 @@ define arm_aapcscc void @g() {
 ; CHECK-NEXT:    ldr r0, [r1, r0, lsl #3]!
 ; CHECK-NEXT:    moveq r0, #0
 ; CHECK-NEXT:    cmp r2, #0
+; CHECK-NEXT:    ldr r1, [r1, #4]
----------------
jayfoad wrote:

After this patch machine-sink refuses to sink this LDR past the Bcc because the Bcc has side effects:
```
  %1:gpr = LDRi12 killed %6:gpr, 4, 14, $noreg :: (invariant load (s32) from %ir.d)
  %7:gpr = MOVi 0, 14, $noreg, $noreg
  CMPri %7:gpr, 0, 14, $noreg, implicit-def $cpsr
  Bcc %bb.2, 1, $cpsr
```

https://github.com/llvm/llvm-project/pull/182000


More information about the llvm-commits mailing list