[llvm] 955417a - Revert "[llvm][AArch64] Copy all operands when expanding BLR_BTI bundle (#78267)"
David Spickett via llvm-commits
llvm-commits at lists.llvm.org
Fri Jan 19 04:07:04 PST 2024
Author: David Spickett
Date: 2024-01-19T12:06:30Z
New Revision: 955417ade2648c2b1a4e5f0be697f61570590a88
URL: https://github.com/llvm/llvm-project/commit/955417ade2648c2b1a4e5f0be697f61570590a88
DIFF: https://github.com/llvm/llvm-project/commit/955417ade2648c2b1a4e5f0be697f61570590a88.diff
LOG: Revert "[llvm][AArch64] Copy all operands when expanding BLR_BTI bundle (#78267)"
This reverts commit 228aecbcf106a50c30b1f8f1915d61850860cbcd.
Failing expensive checks: https://lab.llvm.org/buildbot/#/builders/16/builds/59798
Added:
llvm/test/CodeGen/AArch64/blr-bti-preserves-regmask.mir
Modified:
llvm/lib/Target/AArch64/AArch64ExpandPseudoInsts.cpp
Removed:
llvm/test/CodeGen/AArch64/blr-bti-preserves-operands.mir
################################################################################
diff --git a/llvm/lib/Target/AArch64/AArch64ExpandPseudoInsts.cpp b/llvm/lib/Target/AArch64/AArch64ExpandPseudoInsts.cpp
index c45cb8eba89723..bb7f4d907ffd7f 100644
--- a/llvm/lib/Target/AArch64/AArch64ExpandPseudoInsts.cpp
+++ b/llvm/lib/Target/AArch64/AArch64ExpandPseudoInsts.cpp
@@ -842,11 +842,9 @@ bool AArch64ExpandPseudo::expandCALL_BTI(MachineBasicBlock &MBB,
unsigned Opc = CallTarget.isGlobal() ? AArch64::BL : AArch64::BLR;
MachineInstr *Call =
BuildMI(MBB, MBBI, MI.getDebugLoc(), TII->get(Opc)).getInstr();
-
- for (const MachineOperand &MO : MI.operands())
- Call->addOperand(MO);
-
+ Call->addOperand(CallTarget);
Call->setCFIType(*MBB.getParent(), MI.getCFIType());
+ Call->copyImplicitOps(*MBB.getParent(), MI);
MachineInstr *BTI =
BuildMI(MBB, MBBI, MI.getDebugLoc(), TII->get(AArch64::HINT))
diff --git a/llvm/test/CodeGen/AArch64/blr-bti-preserves-operands.mir b/llvm/test/CodeGen/AArch64/blr-bti-preserves-operands.mir
deleted file mode 100644
index 3b2f10348bd773..00000000000000
--- a/llvm/test/CodeGen/AArch64/blr-bti-preserves-operands.mir
+++ /dev/null
@@ -1,24 +0,0 @@
-# RUN: llc -mtriple=aarch64-none-linux-gnu -run-pass=aarch64-expand-pseudo -o - %s | FileCheck %s
-
-# When expanding a BLR_BTI, we should copy all the operands to the branch in the
-# bundle. Otherwise we could end up using a register after the BL which was
-# clobbered by the function that was called, or overwriting an argument to that
-# function before we make the call.
-# CHECK: BUNDLE implicit-def $lr, implicit-def $w30, implicit-def $sp, implicit-def $wsp, implicit $x0, implicit $w1, implicit $sp {
-# CHECK: BL @_setjmp, $x0, $w1, csr_aarch64_aapcs, implicit-def $lr, implicit $sp, implicit-def dead $lr, implicit $sp, implicit-def $sp
-# CHECK: HINT 36
-# CHECK: }
-
---- |
- define void @a() {
- ret void
- }
-
- declare void @_setjmp(...)
-...
----
-name: a
-body: |
- bb.0:
- BLR_BTI @_setjmp, $x0, $w1, csr_aarch64_aapcs, implicit-def dead $lr, implicit $sp, implicit-def $sp
-...
diff --git a/llvm/test/CodeGen/AArch64/blr-bti-preserves-regmask.mir b/llvm/test/CodeGen/AArch64/blr-bti-preserves-regmask.mir
new file mode 100644
index 00000000000000..91652c6e20c8f8
--- /dev/null
+++ b/llvm/test/CodeGen/AArch64/blr-bti-preserves-regmask.mir
@@ -0,0 +1,23 @@
+# RUN: llc -mtriple=aarch64-none-linux-gnu -run-pass=aarch64-expand-pseudo -o - %s | FileCheck %s
+
+# When expanding a BLR_BTI, we should keep the regmask that was attached to it.
+# Otherwise we could end up using a register after the BL which was clobbered by
+# the function that was called.
+# CHECK: BUNDLE implicit-def $lr, implicit-def $w30, implicit-def $sp, implicit-def $wsp, implicit $sp {
+# CHECK: BL @_setjmp, csr_aarch64_aapcs, implicit-def $lr, implicit $sp, implicit-def dead $lr, implicit $sp, implicit-def $sp
+# CHECK: HINT 36
+# CHECK: }
+
+--- |
+ define void @a() {
+ ret void
+ }
+
+ declare void @_setjmp(...)
+...
+---
+name: a
+body: |
+ bb.0:
+ BLR_BTI @_setjmp, csr_aarch64_aapcs, implicit-def dead $lr, implicit $sp, implicit-def $sp
+...
More information about the llvm-commits
mailing list