[llvm] [llvm][AArch64] Avoid iterating off the beginning of a BB in a backward scan (PR #217752)

Victor Campos via llvm-commits llvm-commits at lists.llvm.org
Fri Aug 21 00:46:06 PDT 2026


================
@@ -327,15 +327,17 @@ void AArch64PointerAuthImpl::authenticateLR(
   int64_t Offset = -ArgumentStackToRestore;
   SmallVector<MachineInstr *, 2> SPMods;
   if (ArgumentStackToRestore > 0) {
-    for (auto I = MBBI; I->getFlag(MachineInstr::FrameDestroy); --I) {
-      if ((I->getOpcode() == AArch64::ADDXri ||
-           I->getOpcode() == AArch64::SUBXri) &&
-          I->getOperand(0).getReg() == AArch64::SP &&
-          I->getOperand(1).getReg() == AArch64::SP) {
-        SPMods.push_back(&*I);
-        int64_t Imm = I->getOperand(2).getImm()
-                      << AArch64_AM::getShiftValue(I->getOperand(3).getImm());
-        Offset += I->getOpcode() == AArch64::ADDXri ? Imm : -Imm;
+    for (MachineInstr &MI : reverse(make_range(MBB.begin(), MBBI))) {
----------------
vhscampos wrote:

This new for loop seems to skip `MBBI`. Is this intentional?

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


More information about the llvm-commits mailing list