mirror of
https://github.com/c64scene-ar/llvm-6502.git
synced 2026-04-27 04:18:42 +00:00
Re-apply r211399, "Generate native unwind info on Win64" with a fix to ignore SEH pseudo ops in X86 JIT emitter.
-- This patch enables LLVM to emit Win64-native unwind info rather than DWARF CFI. It handles all corner cases (I hope), including stack realignment. Because the unwind info is not flexible enough to describe stack frames with a gap of unknown size in the middle, such as the one caused by stack realignment, I modified register spilling code to place all spills into the fixed frame slots, so that they can be accessed relative to the frame pointer. Patch by Vadim Chugunov! Reviewed By: rnk Differential Revision: http://reviews.llvm.org/D4081 git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@211691 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
1 parent
2fc4d9923f
commit
b720a3d15c
20 files changed
+634
-205
No files matched your search
@@ -504,6 +504,8 @@ void MCStreamer::EmitWin64EHSetFrame(unsigned Register, unsigned Offset) {
|
||||
report_fatal_error("Frame register and offset already specified!");
|
||||
if (Offset & 0x0F)
|
||||
report_fatal_error("Misaligned frame pointer offset!");
|
||||
if (Offset > 240)
|
||||
report_fatal_error("Frame offset must be less than or equal to 240!");
|
||||
MCSymbol *Label = getContext().CreateTempSymbol();
|
||||
MCWin64EHInstruction Inst(Win64EH::UOP_SetFPReg, Label, Register, Offset);
|
||||
EmitLabel(Label);
|
||||
|
||||
Reference in new issue
Block a user