[llvm] Revert "Reland [CFIFixup] Factor CFI remember/restore insertion into a helper (NFC)" (PR #113340)
Daniel Hoekwater via llvm-commits
llvm-commits at lists.llvm.org
Tue Oct 22 09:50:14 PDT 2024
https://github.com/dhoekwater created https://github.com/llvm/llvm-project/pull/113340
Reverts llvm/llvm-project#113328
This change breaks a number of builds (e.g https://lab.llvm.org/buildbot/#/builders/25/builds/3504), for some reason. Reverting to do some troubleshooting.
>From c7b62e0697a5c9688f6d68a538fc68b74a5413fc Mon Sep 17 00:00:00 2001
From: Daniel Hoekwater <danieh65 at gmail.com>
Date: Tue, 22 Oct 2024 12:49:19 -0400
Subject: [PATCH] =?UTF-8?q?Revert=20"Reland=20[CFIFixup]=20Factor=20CFI=20?=
=?UTF-8?q?remember/restore=20insertion=20into=20a=20helper=E2=80=A6"?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
This reverts commit ac1a01f53333e819913e91393580d6786be02c3f.
---
llvm/lib/CodeGen/CFIFixup.cpp | 46 ++++++++++++-----------------------
1 file changed, 16 insertions(+), 30 deletions(-)
diff --git a/llvm/lib/CodeGen/CFIFixup.cpp b/llvm/lib/CodeGen/CFIFixup.cpp
index e881a62522f0cb..61888a42666524 100644
--- a/llvm/lib/CodeGen/CFIFixup.cpp
+++ b/llvm/lib/CodeGen/CFIFixup.cpp
@@ -116,32 +116,6 @@ findPrologueEnd(MachineFunction &MF, MachineBasicBlock::iterator &PrologueEnd) {
return nullptr;
}
-// Inserts a `.cfi_remember_state` instruction before PrologueEnd and a
-// `.cfi_restore_state` instruction before DstInsertPt. Returns an iterator
-// to the first instruction after the inserted `.cfi_restore_state` instruction.
-static MachineBasicBlock::iterator
-insertRememberRestorePair(MachineBasicBlock::iterator RememberInsertPt,
- MachineBasicBlock::iterator RestoreInsertPt) {
- MachineBasicBlock *RememberMBB = RememberInsertPt->getParent();
- MachineBasicBlock *RestoreMBB = RestoreInsertPt->getParent();
- MachineFunction &MF = *RememberMBB->getParent();
- const TargetInstrInfo &TII = *MF.getSubtarget().getInstrInfo();
-
- // Insert the `.cfi_remember_state` instruction.
- unsigned CFIIndex =
- MF.addFrameInst(MCCFIInstruction::createRememberState(nullptr));
- BuildMI(*RememberMBB, RememberInsertPt, DebugLoc(),
- TII.get(TargetOpcode::CFI_INSTRUCTION))
- .addCFIIndex(CFIIndex);
-
- // Insert the `.cfi_restore_state` instruction.
- CFIIndex = MF.addFrameInst(MCCFIInstruction::createRestoreState(nullptr));
- BuildMI(*RestoreMBB, RestoreInsertPt, DebugLoc(),
- TII.get(TargetOpcode::CFI_INSTRUCTION))
- .addCFIIndex(CFIIndex);
- return RestoreInsertPt;
-}
-
bool CFIFixup::runOnMachineFunction(MachineFunction &MF) {
const TargetFrameLowering &TFL = *MF.getSubtarget().getFrameLowering();
if (!TFL.enableCFIFixup(MF))
@@ -200,10 +174,12 @@ bool CFIFixup::runOnMachineFunction(MachineFunction &MF) {
// Every block inherits the frame state (as recorded in the unwind tables)
// of the previous block. If the intended frame state is different, insert
// compensating CFI instructions.
+ const TargetInstrInfo &TII = *MF.getSubtarget().getInstrInfo();
bool Change = false;
// `InsertPt` always points to the point in a preceding block where we have to
// insert a `.cfi_remember_state`, in the case that the current block needs a
// `.cfi_restore_state`.
+ MachineBasicBlock *InsertMBB = PrologueBlock;
MachineBasicBlock::iterator InsertPt = PrologueEnd;
assert(InsertPt != PrologueBlock->begin() &&
@@ -234,10 +210,20 @@ bool CFIFixup::runOnMachineFunction(MachineFunction &MF) {
if (!Info.StrongNoFrameOnEntry && Info.HasFrameOnEntry && !HasFrame) {
// Reset to the "after prologue" state.
- // There's an earlier block known to have a stack frame. Insert a
- // `.cfi_remember_state` instruction into that block and a
- // `.cfi_restore_state` instruction at the beginning of the current block.
- InsertPt = insertRememberRestorePair(InsertPt, CurrBB->begin());
+ // Insert a `.cfi_remember_state` into the last block known to have a
+ // stack frame.
+ unsigned CFIIndex =
+ MF.addFrameInst(MCCFIInstruction::createRememberState(nullptr));
+ BuildMI(*InsertMBB, InsertPt, DebugLoc(),
+ TII.get(TargetOpcode::CFI_INSTRUCTION))
+ .addCFIIndex(CFIIndex);
+ // Insert a `.cfi_restore_state` at the beginning of the current block.
+ CFIIndex = MF.addFrameInst(MCCFIInstruction::createRestoreState(nullptr));
+ InsertPt = BuildMI(*CurrBB, CurrBB->begin(), DebugLoc(),
+ TII.get(TargetOpcode::CFI_INSTRUCTION))
+ .addCFIIndex(CFIIndex);
+ ++InsertPt;
+ InsertMBB = &*CurrBB;
Change = true;
} else if ((Info.StrongNoFrameOnEntry || !Info.HasFrameOnEntry) &&
HasFrame) {
More information about the llvm-commits
mailing list