summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorGeorge Koehler <gkoehler@cvs.openbsd.org>2024-03-03 03:09:40 +0000
committerGeorge Koehler <gkoehler@cvs.openbsd.org>2024-03-03 03:09:40 +0000
commit7c0627865bb445062dff313cf817835d9c5ec7f2 (patch)
tree8dad8c8e7d130a8a08cffbeba015fe69e1a40db4
parent46ef208d20a183dc6d665b69b6ad0157ed40d04f (diff)
For macppc, add missing CFI for cr2, cr3, cr4
clang -S was missing a line like ".cfi_offset cr2, -16" in functions that spill cr2 (or cr3, cr4) to the stack. This was breaking a few C++ exceptions. This fix adds the missing CFI. This will fix the C++ exception that was crashing egdb from ports/devel/gdb when you did "q to quit" in the pager. ok kettenis@ tobhe@
-rw-r--r--gnu/llvm/llvm/lib/Target/PowerPC/PPCFrameLowering.cpp6
1 files changed, 0 insertions, 6 deletions
diff --git a/gnu/llvm/llvm/lib/Target/PowerPC/PPCFrameLowering.cpp b/gnu/llvm/llvm/lib/Target/PowerPC/PPCFrameLowering.cpp
index bb6a46b50fa..7e547789b8e 100644
--- a/gnu/llvm/llvm/lib/Target/PowerPC/PPCFrameLowering.cpp
+++ b/gnu/llvm/llvm/lib/Target/PowerPC/PPCFrameLowering.cpp
@@ -1193,12 +1193,6 @@ void PPCFrameLowering::emitPrologue(MachineFunction &MF,
if ((Reg == PPC::X2 || Reg == PPC::R2) && MustSaveTOC)
continue;
- // For SVR4, don't emit a move for the CR spill slot if we haven't
- // spilled CRs.
- if (isSVR4ABI && (PPC::CR2 <= Reg && Reg <= PPC::CR4)
- && !MustSaveCR)
- continue;
-
// For 64-bit SVR4 when we have spilled CRs, the spill location
// is SP+8, not a frame-relative slot.
if (isSVR4ABI && isPPC64 && (PPC::CR2 <= Reg && Reg <= PPC::CR4)) {