[llvm] [BOLT][AArch64] Fixed indirect call instrumentation snippet (PR #141918)

Paschalis Mpeis via llvm-commits llvm-commits at lists.llvm.org
Wed Nov 5 04:55:21 PST 2025


================
@@ -2472,30 +2516,44 @@ class AArch64MCPlusBuilder : public MCPlusBuilder {
     //   ldr     x30, [sp], #16
     //   b       IndCallHandler
     InstructionListType Insts;
+
     Insts.emplace_back();
-    createPushRegisters(Insts.back(), AArch64::X0, AArch64::X1);
+    createPushRegisters(Insts.back(), getIntArgRegister(0),
+                        getIntArgRegister(1));
+
     Insts.emplace_back();
     getSystemFlag(Insts.back(), getIntArgRegister(1));
+
+    Insts.emplace_back();
+    storeReg(Insts.back(), getIntArgRegister(1), getSpRegister(/*Size*/ 8));
----------------
paschalis-mpeis wrote:

Oh sorry, I got us confused. I meant an extra push of X1 introduced at L2529, between `mrs` and `adr(adrp+add)`? EG:

```asm
..
mrs x1, nzcv
str	x1, [sp, #-0x10]!                    // <- This one
adr x0, InstrTrampoline -> adrp + add
..
```

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


More information about the llvm-commits mailing list