[llvm] [BOLT] Update search to proceed upwards from memcpy call (PR #166182)
via llvm-commits
llvm-commits at lists.llvm.org
Mon Nov 3 07:41:14 PST 2025
llvmbot wrote:
<!--LLVM PR SUMMARY COMMENT-->
@llvm/pr-subscribers-bolt
Author: Elvina Yakubova (ElvinaYakubova)
<details>
<summary>Changes</summary>
Search should procced from CallInst to the beginning of BB
Patch by Yafet Beyene alulayafet@<!-- -->gmail.com
---
Full diff: https://github.com/llvm/llvm-project/pull/166182.diff
2 Files Affected:
- (modified) bolt/lib/Target/AArch64/AArch64MCPlusBuilder.cpp (+1-1)
- (modified) bolt/test/runtime/AArch64/inline-memcpy.s (+13-1)
``````````diff
diff --git a/bolt/lib/Target/AArch64/AArch64MCPlusBuilder.cpp b/bolt/lib/Target/AArch64/AArch64MCPlusBuilder.cpp
index 6954cb295e86a..c96f3d6a06f39 100644
--- a/bolt/lib/Target/AArch64/AArch64MCPlusBuilder.cpp
+++ b/bolt/lib/Target/AArch64/AArch64MCPlusBuilder.cpp
@@ -2758,7 +2758,7 @@ class AArch64MCPlusBuilder : public MCPlusBuilder {
BitVector WrittenRegs(RegInfo->getNumRegs());
const BitVector &SizeRegAliases = getAliases(SizeReg);
- for (auto InstIt = BB.begin(); InstIt != CallInst; ++InstIt) {
+ for (auto InstIt = CallInst; InstIt != BB.begin(); --InstIt) {
const MCInst &Inst = *InstIt;
WrittenRegs.reset();
getWrittenRegs(Inst, WrittenRegs);
diff --git a/bolt/test/runtime/AArch64/inline-memcpy.s b/bolt/test/runtime/AArch64/inline-memcpy.s
index dc59a08b889a7..badff299603a0 100644
--- a/bolt/test/runtime/AArch64/inline-memcpy.s
+++ b/bolt/test/runtime/AArch64/inline-memcpy.s
@@ -7,7 +7,7 @@
# RUN: llvm-bolt %t.exe --inline-memcpy -o %t.bolt 2>&1 | FileCheck %s --check-prefix=CHECK-INLINE
# RUN: llvm-objdump -d %t.bolt | FileCheck %s --check-prefix=CHECK-ASM
-# Verify BOLT reports that it inlined memcpy calls (11 successful inlines out of 16 total calls)
+# Verify BOLT reports that it inlined memcpy calls (11 successful inlines out of 17 total calls)
# CHECK-INLINE: BOLT-INFO: inlined 11 memcpy() calls
# Each function should use optimal size-specific instructions and NO memcpy calls
@@ -84,6 +84,9 @@
# CHECK-ASM-LABEL: <test_register_move_negative>:
# CHECK-ASM: bl{{.*}}<memcpy
+# CHECK-ASM-LABEL: <test_x2_rewrite_negative>:
+# CHECK-ASM: bl{{.*}}<memcpy
+
# Live-in parameter should NOT be inlined (size unknown at compile time)
# CHECK-ASM-LABEL: <test_live_in_negative>:
# CHECK-ASM: bl{{.*}}<memcpy
@@ -273,6 +276,15 @@ test_register_move_negative:
ret
.size test_register_move_negative, .-test_register_move_negative
+ .globl test_x2_rewrite_negative
+ .type test_x2_rewrite_negative, at function
+test_x2_rewrite_negative:
+ mov x2, #8
+ ldr x2, [sp, #24]
+ bl memcpy
+ ret
+ .size test_x2_rewrite_negative, .-test_x2_rewrite_negative
+
.globl test_live_in_negative
.type test_live_in_negative, at function
test_live_in_negative:
``````````
</details>
https://github.com/llvm/llvm-project/pull/166182
More information about the llvm-commits
mailing list