[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