LLVM: lib/MC/MCWin64EH.cpp File Reference (original) (raw)

Go to the source code of this file.

Namespaces
namespace llvm
This is an optimization pass for GlobalISel generic memory operations.
Functions
static uint8_t CountOfUnwindCodes (std::vector< WinEH::Instruction > &Insns)
static void EmitAbsDifference (MCStreamer &Streamer, const MCSymbol *LHS, const MCSymbol *RHS)
static void EmitUnwindCode (MCStreamer &streamer, const MCSymbol *begin, WinEH::Instruction &inst)
static void EmitSymbolRefWithOfs (MCStreamer &streamer, const MCSymbol *Base, int64_t Offset)
static void EmitSymbolRefWithOfs (MCStreamer &streamer, const MCSymbol *Base, const MCSymbol *Other)
static void EmitRuntimeFunction (MCStreamer &streamer, const WinEH::FrameInfo *info)
static std::optional< int64_t > GetOptionalAbsDifference (const MCAssembler &Assembler, const MCSymbol *LHS, const MCSymbol *RHS)
static void EmitUnwindInfo (MCStreamer &streamer, WinEH::FrameInfo *info)
static const MCExpr * GetSubDivExpr (MCStreamer &Streamer, const MCSymbol *LHS, const MCSymbol *RHS, int Div)
static std::optional< int64_t > GetOptionalAbsDifference (MCStreamer &Streamer, const MCSymbol *LHS, const MCSymbol *RHS)
static int64_t GetAbsDifference (MCStreamer &Streamer, const MCSymbol *LHS, const MCSymbol *RHS)
static void checkARM64Instructions (MCStreamer &Streamer, ArrayRef< WinEH::Instruction > Insns, const MCSymbol *Begin, const MCSymbol *End, StringRef Name, StringRef Type)
static uint32_t ARM64CountOfUnwindCodes (ArrayRef< WinEH::Instruction > Insns)
static void ARM64EmitUnwindCode (MCStreamer &streamer, const WinEH::Instruction &inst)
static MCSymbol * FindMatchingEpilog (const std::vector< WinEH::Instruction > &EpilogInstrs, const std::vector< MCSymbol * > &Epilogs, const WinEH::FrameInfo *info)
static void simplifyARM64Opcodes (std::vector< WinEH::Instruction > &Instructions, bool Reverse)
static int getARM64OffsetInProlog (const std::vector< WinEH::Instruction > &Prolog, const std::vector< WinEH::Instruction > &Epilog)
static int checkARM64PackedEpilog (MCStreamer &streamer, WinEH::FrameInfo *info, WinEH::FrameInfo::Segment *Seg, int PrologCodeBytes)
static bool tryARM64PackedUnwind (WinEH::FrameInfo *info, uint32_t FuncLength, int PackedEpilogOffset)
static void ARM64ProcessEpilogs (WinEH::FrameInfo *info, WinEH::FrameInfo::Segment *Seg, uint32_t &TotalCodeBytes, MapVector< MCSymbol *, uint32_t > &EpilogInfo)
static void ARM64FindSegmentsInFunction (MCStreamer &streamer, WinEH::FrameInfo *info, int64_t RawFuncLength)
static void ARM64EmitUnwindInfoForSegment (MCStreamer &streamer, WinEH::FrameInfo *info, WinEH::FrameInfo::Segment &Seg, bool TryPacked=true)
static void ARM64EmitUnwindInfo (MCStreamer &streamer, WinEH::FrameInfo *info, bool TryPacked=true)
static uint32_t ARMCountOfUnwindCodes (ArrayRef< WinEH::Instruction > Insns)
static uint32_t ARMCountOfInstructionBytes (ArrayRef< WinEH::Instruction > Insns, bool *HasCustom=nullptr)
static void checkARMInstructions (MCStreamer &Streamer, ArrayRef< WinEH::Instruction > Insns, const MCSymbol *Begin, const MCSymbol *End, StringRef Name, StringRef Type)
static bool isARMTerminator (const WinEH::Instruction &inst)
static void ARMEmitUnwindCode (MCStreamer &streamer, const WinEH::Instruction &inst)
static int getARMOffsetInProlog (const std::vector< WinEH::Instruction > &Prolog, const std::vector< WinEH::Instruction > &Epilog, bool CanTweakProlog)
static int checkARMPackedEpilog (MCStreamer &streamer, WinEH::FrameInfo *info, int PrologCodeBytes)
static bool parseRegMask (unsigned Mask, bool &HasLR, bool &HasR11, unsigned &Folded, int &IntRegs)
static bool tryARMPackedUnwind (MCStreamer &streamer, WinEH::FrameInfo *info, uint32_t FuncLength)
static void ARMEmitUnwindInfo (MCStreamer &streamer, WinEH::FrameInfo *info, bool TryPacked=true)
static void ARM64EmitRuntimeFunction (MCStreamer &streamer, const WinEH::FrameInfo *info)
static void ARMEmitRuntimeFunction (MCStreamer &streamer, const WinEH::FrameInfo *info)

ARM64CountOfUnwindCodes()

Definition at line 513 of file MCWin64EH.cpp.

References llvm::Count, I, llvm_unreachable, llvm::Win64EH::UOP_AddFP, llvm::Win64EH::UOP_AllocLarge, llvm::Win64EH::UOP_AllocMedium, llvm::Win64EH::UOP_AllocSmall, llvm::Win64EH::UOP_AllocZ, llvm::Win64EH::UOP_ClearUnwoundToCall, llvm::Win64EH::UOP_Context, llvm::Win64EH::UOP_ECContext, llvm::Win64EH::UOP_End, llvm::Win64EH::UOP_Nop, llvm::Win64EH::UOP_PACSignLR, llvm::Win64EH::UOP_PushMachFrame, llvm::Win64EH::UOP_SaveAnyRegD, llvm::Win64EH::UOP_SaveAnyRegDP, llvm::Win64EH::UOP_SaveAnyRegDPX, llvm::Win64EH::UOP_SaveAnyRegDX, llvm::Win64EH::UOP_SaveAnyRegI, llvm::Win64EH::UOP_SaveAnyRegIP, llvm::Win64EH::UOP_SaveAnyRegIPX, llvm::Win64EH::UOP_SaveAnyRegIX, llvm::Win64EH::UOP_SaveAnyRegQ, llvm::Win64EH::UOP_SaveAnyRegQP, llvm::Win64EH::UOP_SaveAnyRegQPX, llvm::Win64EH::UOP_SaveAnyRegQX, llvm::Win64EH::UOP_SaveFPLR, llvm::Win64EH::UOP_SaveFPLRX, llvm::Win64EH::UOP_SaveFReg, llvm::Win64EH::UOP_SaveFRegP, llvm::Win64EH::UOP_SaveFRegPX, llvm::Win64EH::UOP_SaveFRegX, llvm::Win64EH::UOP_SaveLRPair, llvm::Win64EH::UOP_SaveNext, llvm::Win64EH::UOP_SavePReg, llvm::Win64EH::UOP_SaveR19R20X, llvm::Win64EH::UOP_SaveReg, llvm::Win64EH::UOP_SaveRegP, llvm::Win64EH::UOP_SaveRegPX, llvm::Win64EH::UOP_SaveRegX, llvm::Win64EH::UOP_SaveZReg, llvm::Win64EH::UOP_SetFP, and llvm::Win64EH::UOP_TrapFrame.

Referenced by ARM64EmitUnwindInfo(), ARM64ProcessEpilogs(), checkARM64PackedEpilog(), and getARM64OffsetInProlog().

ARM64EmitRuntimeFunction()

ARM64EmitUnwindCode()

Definition at line 623 of file MCWin64EH.cpp.

References assert(), llvm::MCStreamer::emitInt8(), llvm_unreachable, Mode, llvm::Offset, llvm::WinEH::Instruction::Offset, llvm::WinEH::Instruction::Operation, llvm::WinEH::Instruction::Register, llvm::Win64EH::UOP_AddFP, llvm::Win64EH::UOP_AllocLarge, llvm::Win64EH::UOP_AllocMedium, llvm::Win64EH::UOP_AllocSmall, llvm::Win64EH::UOP_AllocZ, llvm::Win64EH::UOP_ClearUnwoundToCall, llvm::Win64EH::UOP_Context, llvm::Win64EH::UOP_ECContext, llvm::Win64EH::UOP_End, llvm::Win64EH::UOP_Nop, llvm::Win64EH::UOP_PACSignLR, llvm::Win64EH::UOP_PushMachFrame, llvm::Win64EH::UOP_SaveAnyRegD, llvm::Win64EH::UOP_SaveAnyRegDP, llvm::Win64EH::UOP_SaveAnyRegDPX, llvm::Win64EH::UOP_SaveAnyRegDX, llvm::Win64EH::UOP_SaveAnyRegI, llvm::Win64EH::UOP_SaveAnyRegIP, llvm::Win64EH::UOP_SaveAnyRegIPX, llvm::Win64EH::UOP_SaveAnyRegIX, llvm::Win64EH::UOP_SaveAnyRegQ, llvm::Win64EH::UOP_SaveAnyRegQP, llvm::Win64EH::UOP_SaveAnyRegQPX, llvm::Win64EH::UOP_SaveAnyRegQX, llvm::Win64EH::UOP_SaveFPLR, llvm::Win64EH::UOP_SaveFPLRX, llvm::Win64EH::UOP_SaveFReg, llvm::Win64EH::UOP_SaveFRegP, llvm::Win64EH::UOP_SaveFRegPX, llvm::Win64EH::UOP_SaveFRegX, llvm::Win64EH::UOP_SaveLRPair, llvm::Win64EH::UOP_SaveNext, llvm::Win64EH::UOP_SavePReg, llvm::Win64EH::UOP_SaveR19R20X, llvm::Win64EH::UOP_SaveReg, llvm::Win64EH::UOP_SaveRegP, llvm::Win64EH::UOP_SaveRegPX, llvm::Win64EH::UOP_SaveRegX, llvm::Win64EH::UOP_SaveZReg, llvm::Win64EH::UOP_SetFP, and llvm::Win64EH::UOP_TrapFrame.

Referenced by ARM64EmitUnwindInfoForSegment().

ARM64EmitUnwindInfo()

Definition at line 1607 of file MCWin64EH.cpp.

References ARM64CountOfUnwindCodes(), ARM64EmitUnwindInfoForSegment(), ARM64FindSegmentsInFunction(), GetAbsDifference(), llvm::MCStreamer::getContext(), I, info, llvm::report_fatal_error(), llvm::MCContext::reportError(), and simplifyARM64Opcodes().

Referenced by llvm::Win64EH::ARM64UnwindEmitter::Emit(), and llvm::Win64EH::ARM64UnwindEmitter::EmitUnwindInfo().

ARM64EmitUnwindInfoForSegment()

Definition at line 1460 of file MCWin64EH.cpp.

References ARM64EmitUnwindCode(), ARM64ProcessEpilogs(), assert(), checkARM64PackedEpilog(), llvm::MCSymbolRefExpr::create(), llvm::MCContext::createTempSymbol(), llvm::MCStreamer::emitInt32(), llvm::MCStreamer::emitInt8(), llvm::MCStreamer::emitLabel(), llvm::MCStreamer::emitValue(), llvm::MCStreamer::emitValueToAlignment(), llvm::WinEH::FrameInfo::Segment::Epilogs, llvm::MCStreamer::getContext(), llvm::WinEH::FrameInfo::Segment::HasProlog, I, info, llvm::WinEH::FrameInfo::Segment::Length, llvm::WinEH::FrameInfo::Segment::Offset, llvm::report_fatal_error(), llvm::reverse(), llvm::WinEH::FrameInfo::Segment::Symbol, tryARM64PackedUnwind(), and llvm::MCSymbolRefExpr::VK_COFF_IMGREL32.

Referenced by ARM64EmitUnwindInfo().

ARM64FindSegmentsInFunction()

Definition at line 1379 of file MCWin64EH.cpp.

References assert(), llvm::SmallVectorTemplateCommon< T, typename >::back(), checkARM64Instructions(), E(), GetAbsDifference(), I, info, llvm::Offset, llvm::SmallVectorTemplateBase< T, bool >::push_back(), and llvm::SmallVectorTemplateCommon< T, typename >::size().

Referenced by ARM64EmitUnwindInfo().

ARM64ProcessEpilogs()

Definition at line 1335 of file MCWin64EH.cpp.

References ARM64CountOfUnwindCodes(), assert(), llvm::MapVector< KeyT, ValueT, MapType, VectorType >::clear(), llvm::MapVector< KeyT, ValueT, MapType, VectorType >::contains(), llvm::WinEH::FrameInfo::Segment::Epilogs, FindMatchingEpilog(), getARM64OffsetInProlog(), llvm::WinEH::FrameInfo::Segment::HasProlog, I, info, and llvm::MapVector< KeyT, ValueT, MapType, VectorType >::lookup().

Referenced by ARM64EmitUnwindInfoForSegment().

ARMCountOfInstructionBytes()

Definition at line 1756 of file MCWin64EH.cpp.

References llvm::Count, I, llvm_unreachable, llvm::Win64EH::UOP_AllocHuge, llvm::Win64EH::UOP_AllocLarge, llvm::Win64EH::UOP_AllocSmall, llvm::Win64EH::UOP_Custom, llvm::Win64EH::UOP_End, llvm::Win64EH::UOP_EndNop, llvm::Win64EH::UOP_Nop, llvm::Win64EH::UOP_SaveFRegD0D15, llvm::Win64EH::UOP_SaveFRegD16D31, llvm::Win64EH::UOP_SaveFRegD8D15, llvm::Win64EH::UOP_SaveLR, llvm::Win64EH::UOP_SaveRegMask, llvm::Win64EH::UOP_SaveRegsR4R7LR, llvm::Win64EH::UOP_SaveSP, llvm::Win64EH::UOP_WideAllocHuge, llvm::Win64EH::UOP_WideAllocLarge, llvm::Win64EH::UOP_WideAllocMedium, llvm::Win64EH::UOP_WideEndNop, llvm::Win64EH::UOP_WideNop, llvm::Win64EH::UOP_WideSaveRegMask, and llvm::Win64EH::UOP_WideSaveRegsR4R11LR.

Referenced by checkARMInstructions(), checkARMPackedEpilog(), and tryARMPackedUnwind().

ARMCountOfUnwindCodes()

Definition at line 1685 of file MCWin64EH.cpp.

References llvm::Count, I, llvm_unreachable, llvm::Win64EH::UOP_AllocHuge, llvm::Win64EH::UOP_AllocLarge, llvm::Win64EH::UOP_AllocSmall, llvm::Win64EH::UOP_Custom, llvm::Win64EH::UOP_End, llvm::Win64EH::UOP_EndNop, llvm::Win64EH::UOP_Nop, llvm::Win64EH::UOP_SaveFRegD0D15, llvm::Win64EH::UOP_SaveFRegD16D31, llvm::Win64EH::UOP_SaveFRegD8D15, llvm::Win64EH::UOP_SaveLR, llvm::Win64EH::UOP_SaveRegMask, llvm::Win64EH::UOP_SaveRegsR4R7LR, llvm::Win64EH::UOP_SaveSP, llvm::Win64EH::UOP_WideAllocHuge, llvm::Win64EH::UOP_WideAllocLarge, llvm::Win64EH::UOP_WideAllocMedium, llvm::Win64EH::UOP_WideEndNop, llvm::Win64EH::UOP_WideNop, llvm::Win64EH::UOP_WideSaveRegMask, and llvm::Win64EH::UOP_WideSaveRegsR4R11LR.

Referenced by ARMEmitUnwindInfo(), checkARMPackedEpilog(), and getARMOffsetInProlog().

ARMEmitRuntimeFunction()

ARMEmitUnwindCode()

Definition at line 1853 of file MCWin64EH.cpp.

References assert(), llvm::MCStreamer::emitInt8(), llvm_unreachable, llvm::WinEH::Instruction::Offset, llvm::WinEH::Instruction::Operation, llvm::WinEH::Instruction::Register, llvm::Win64EH::UOP_AllocHuge, llvm::Win64EH::UOP_AllocLarge, llvm::Win64EH::UOP_AllocSmall, llvm::Win64EH::UOP_Custom, llvm::Win64EH::UOP_End, llvm::Win64EH::UOP_EndNop, llvm::Win64EH::UOP_Nop, llvm::Win64EH::UOP_SaveFRegD0D15, llvm::Win64EH::UOP_SaveFRegD16D31, llvm::Win64EH::UOP_SaveFRegD8D15, llvm::Win64EH::UOP_SaveLR, llvm::Win64EH::UOP_SaveRegMask, llvm::Win64EH::UOP_SaveRegsR4R7LR, llvm::Win64EH::UOP_SaveSP, llvm::Win64EH::UOP_WideAllocHuge, llvm::Win64EH::UOP_WideAllocLarge, llvm::Win64EH::UOP_WideAllocMedium, llvm::Win64EH::UOP_WideEndNop, llvm::Win64EH::UOP_WideNop, llvm::Win64EH::UOP_WideSaveRegMask, and llvm::Win64EH::UOP_WideSaveRegsR4R11LR.

Referenced by ARMEmitUnwindInfo().

ARMEmitUnwindInfo()

Definition at line 2524 of file MCWin64EH.cpp.

References ARMCountOfUnwindCodes(), ARMEmitUnwindCode(), assert(), checkARMInstructions(), checkARMPackedEpilog(), llvm::MapVector< KeyT, ValueT, MapType, VectorType >::contains(), llvm::MCConstantExpr::create(), llvm::MCSymbolRefExpr::create(), llvm::MCBinaryExpr::createOr(), llvm::MCContext::createTempSymbol(), llvm::MCStreamer::emitInt32(), llvm::MCStreamer::emitInt8(), llvm::MCStreamer::emitLabel(), llvm::MCStreamer::emitValue(), llvm::MCStreamer::emitValueToAlignment(), Epilog, FindMatchingEpilog(), getARMOffsetInProlog(), llvm::MCStreamer::getContext(), GetOptionalAbsDifference(), GetSubDivExpr(), I, info, isARMTerminator(), llvm::MapVector< KeyT, ValueT, MapType, VectorType >::lookup(), llvm::report_fatal_error(), llvm::MCContext::reportError(), tryARMPackedUnwind(), and llvm::MCSymbolRefExpr::VK_COFF_IMGREL32.

Referenced by llvm::Win64EH::ARMUnwindEmitter::Emit(), and llvm::Win64EH::ARMUnwindEmitter::EmitUnwindInfo().

checkARM64Instructions()

checkARM64PackedEpilog()

checkARMInstructions()

checkARMPackedEpilog()

CountOfUnwindCodes()

Definition at line 71 of file MCWin64EH.cpp.

References llvm::Count, I, llvm_unreachable, llvm::Win64EH::UOP_AllocLarge, llvm::Win64EH::UOP_AllocSmall, llvm::Win64EH::UOP_PushMachFrame, llvm::Win64EH::UOP_PushNonVol, llvm::Win64EH::UOP_SaveNonVol, llvm::Win64EH::UOP_SaveNonVolBig, llvm::Win64EH::UOP_SaveXMM128, llvm::Win64EH::UOP_SaveXMM128Big, and llvm::Win64EH::UOP_SetFPReg.

Referenced by EmitUnwindInfo().

EmitAbsDifference()

EmitRuntimeFunction()

EmitSymbolRefWithOfs() [1/2]

EmitSymbolRefWithOfs() [2/2]

EmitUnwindCode()

Definition at line 108 of file MCWin64EH.cpp.

References EmitAbsDifference(), llvm::MCStreamer::emitInt16(), llvm::MCStreamer::emitInt8(), llvm::WinEH::Instruction::Label, llvm_unreachable, llvm::WinEH::Instruction::Offset, llvm::WinEH::Instruction::Operation, llvm::WinEH::Instruction::Register, llvm::Win64EH::UOP_AllocLarge, llvm::Win64EH::UOP_AllocSmall, llvm::Win64EH::UOP_PushMachFrame, llvm::Win64EH::UOP_PushNonVol, llvm::Win64EH::UOP_SaveNonVol, llvm::Win64EH::UOP_SaveNonVolBig, llvm::Win64EH::UOP_SaveXMM128, llvm::Win64EH::UOP_SaveXMM128Big, and llvm::Win64EH::UOP_SetFPReg.

Referenced by EmitUnwindInfo().

EmitUnwindInfo()

Definition at line 228 of file MCWin64EH.cpp.

References llvm::MCObjectStreamer::addFixup(), llvm::MCObjectStreamer::appendContents(), assert(), CountOfUnwindCodes(), llvm::MCSymbolRefExpr::create(), llvm::MCContext::createTempSymbol(), EmitAbsDifference(), llvm::MCStreamer::emitInt16(), llvm::MCStreamer::emitInt32(), llvm::MCStreamer::emitInt8(), llvm::MCStreamer::emitLabel(), EmitRuntimeFunction(), EmitUnwindCode(), llvm::MCStreamer::emitValue(), llvm::MCStreamer::emitValueToAlignment(), llvm::MCObjectStreamer::ensureHeadroom(), Epilog, llvm::FK_Data_2, llvm::MCObjectStreamer::getAssembler(), llvm::MCStreamer::getContext(), GetOptionalAbsDifference(), info, llvm::WinEH::Instruction::Offset, llvm::WinEH::Instruction::Operation, llvm::WinEH::Instruction::Register, llvm::MCContext::reportError(), llvm::reverse(), llvm::Win64EH::UNW_ChainInfo, llvm::Win64EH::UNW_ExceptionHandler, llvm::Win64EH::UNW_TerminateHandler, llvm::Win64EH::UOP_Epilog, llvm::Win64EH::UOP_SetFPReg, and llvm::MCSymbolRefExpr::VK_COFF_IMGREL32.

Referenced by llvm::Win64EH::UnwindEmitter::Emit(), and llvm::Win64EH::UnwindEmitter::EmitUnwindInfo().

FindMatchingEpilog()

GetAbsDifference()

getARM64OffsetInProlog()

getARMOffsetInProlog()

GetOptionalAbsDifference() [1/2]

Definition at line 213 of file MCWin64EH.cpp.

References llvm::MCSymbolRefExpr::create(), llvm::MCBinaryExpr::createSub(), llvm::MCAssembler::getContext(), LHS, and RHS.

Referenced by ARMEmitUnwindInfo(), checkARM64Instructions(), checkARMInstructions(), checkARMPackedEpilog(), EmitUnwindInfo(), GetAbsDifference(), GetOptionalAbsDifference(), and tryARMPackedUnwind().

GetOptionalAbsDifference() [2/2]

GetSubDivExpr()

isARMTerminator()

parseRegMask()

simplifyARM64Opcodes()

tryARM64PackedUnwind()

Definition at line 1013 of file MCWin64EH.cpp.

References assert(), H, info, IntRegs, llvm::WinEH::Instruction::Offset, llvm::WinEH::Instruction::Operation, llvm::WinEH::Instruction::Register, llvm::report_fatal_error(), llvm::Win64EH::UOP_AddFP, llvm::Win64EH::UOP_AllocLarge, llvm::Win64EH::UOP_AllocMedium, llvm::Win64EH::UOP_AllocSmall, llvm::Win64EH::UOP_AllocZ, llvm::Win64EH::UOP_ClearUnwoundToCall, llvm::Win64EH::UOP_Context, llvm::Win64EH::UOP_ECContext, llvm::Win64EH::UOP_End, llvm::Win64EH::UOP_Nop, llvm::Win64EH::UOP_PACSignLR, llvm::Win64EH::UOP_PushMachFrame, llvm::Win64EH::UOP_SaveAnyRegD, llvm::Win64EH::UOP_SaveAnyRegDP, llvm::Win64EH::UOP_SaveAnyRegDPX, llvm::Win64EH::UOP_SaveAnyRegDX, llvm::Win64EH::UOP_SaveAnyRegI, llvm::Win64EH::UOP_SaveAnyRegIP, llvm::Win64EH::UOP_SaveAnyRegIPX, llvm::Win64EH::UOP_SaveAnyRegIX, llvm::Win64EH::UOP_SaveAnyRegQ, llvm::Win64EH::UOP_SaveAnyRegQP, llvm::Win64EH::UOP_SaveAnyRegQPX, llvm::Win64EH::UOP_SaveAnyRegQX, llvm::Win64EH::UOP_SaveFPLR, llvm::Win64EH::UOP_SaveFPLRX, llvm::Win64EH::UOP_SaveFReg, llvm::Win64EH::UOP_SaveFRegP, llvm::Win64EH::UOP_SaveFRegPX, llvm::Win64EH::UOP_SaveFRegX, llvm::Win64EH::UOP_SaveLRPair, llvm::Win64EH::UOP_SaveNext, llvm::Win64EH::UOP_SavePReg, llvm::Win64EH::UOP_SaveR19R20X, llvm::Win64EH::UOP_SaveReg, llvm::Win64EH::UOP_SaveRegP, llvm::Win64EH::UOP_SaveRegPX, llvm::Win64EH::UOP_SaveRegX, llvm::Win64EH::UOP_SaveZReg, llvm::Win64EH::UOP_SetFP, and llvm::Win64EH::UOP_TrapFrame.

Referenced by ARM64EmitUnwindInfoForSegment().

tryARMPackedUnwind()

Definition at line 2122 of file MCWin64EH.cpp.

References ARMCountOfInstructionBytes(), assert(), llvm::CallingConv::C, llvm::WinEH::FrameInfo::Epilog::Condition, Epilog, GetOptionalAbsDifference(), H, info, llvm::WinEH::FrameInfo::Epilog::Instructions, IntRegs, llvm_unreachable, llvm::WinEH::Instruction::Offset, llvm::WinEH::Instruction::Operation, parseRegMask(), Reg, llvm::WinEH::Instruction::Register, llvm::Win64EH::UOP_AllocHuge, llvm::Win64EH::UOP_AllocLarge, llvm::Win64EH::UOP_AllocSmall, llvm::Win64EH::UOP_Custom, llvm::Win64EH::UOP_End, llvm::Win64EH::UOP_EndNop, llvm::Win64EH::UOP_Nop, llvm::Win64EH::UOP_SaveFRegD0D15, llvm::Win64EH::UOP_SaveFRegD16D31, llvm::Win64EH::UOP_SaveFRegD8D15, llvm::Win64EH::UOP_SaveLR, llvm::Win64EH::UOP_SaveRegMask, llvm::Win64EH::UOP_SaveRegsR4R7LR, llvm::Win64EH::UOP_SaveSP, llvm::Win64EH::UOP_WideAllocHuge, llvm::Win64EH::UOP_WideAllocLarge, llvm::Win64EH::UOP_WideAllocMedium, llvm::Win64EH::UOP_WideEndNop, llvm::Win64EH::UOP_WideNop, llvm::Win64EH::UOP_WideSaveRegMask, and llvm::Win64EH::UOP_WideSaveRegsR4R11LR.

Referenced by ARMEmitUnwindInfo().