[llvm] [BOLT][AArch64] Fixed indirect call instrumentation snippet (PR #141918)
YongKang Zhu via llvm-commits
llvm-commits at lists.llvm.org
Mon Nov 24 09:28:41 PST 2025
================
@@ -2534,39 +2535,59 @@ class AArch64MCPlusBuilder : public MCPlusBuilder {
MCSymbol *HandlerFuncAddr,
int CallSiteID,
MCContext *Ctx) override {
- InstructionListType Insts;
// Code sequence used to enter indirect call instrumentation helper:
- // stp x0, x1, [sp, #-16]! createPushRegisters
+ // stp x0, x1, [sp, #-16]! createPushRegisters (1)
// mov target x0 convertIndirectCallToLoad -> orr x0 target xzr
// mov x1 CallSiteID createLoadImmediate ->
// movk x1, #0x0, lsl #48
// movk x1, #0x0, lsl #32
// movk x1, #0x0, lsl #16
// movk x1, #0x0
- // stp x0, x1, [sp, #-16]!
- // bl *HandlerFuncAddr createIndirectCall ->
+ // stp x0, x30, [sp, #-16]! (2)
// adr x0 *HandlerFuncAddr -> adrp + add
- // blr x0
+ // blr x0 (__bolt_instr_ind_call_handler_func)
+ // ldp x0, x30, [sp], #16 (2)
+ // mov x0, x0 ; move target address to used register
----------------
yozhu wrote:
Could we change "mov x0, x0" to "mov x0 target", similar to what is on Line 2540?
https://github.com/llvm/llvm-project/pull/141918
More information about the llvm-commits
mailing list