LLVM  14.0.0git
Functions
MCWin64EH.cpp File Reference
#include "llvm/MC/MCWin64EH.h"
#include "llvm/ADT/Twine.h"
#include "llvm/MC/MCContext.h"
#include "llvm/MC/MCExpr.h"
#include "llvm/MC/MCObjectFileInfo.h"
#include "llvm/MC/MCObjectStreamer.h"
#include "llvm/MC/MCSectionCOFF.h"
#include "llvm/MC/MCStreamer.h"
#include "llvm/MC/MCSymbol.h"
#include "llvm/Support/Win64EH.h"
Include dependency graph for MCWin64EH.cpp:

Go to the source code of this file.

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, const MCSymbol *Other)
 
static void EmitRuntimeFunction (MCStreamer &streamer, const WinEH::FrameInfo *info)
 
static void EmitUnwindInfo (MCStreamer &streamer, WinEH::FrameInfo *info)
 
static int64_t GetAbsDifference (MCStreamer &Streamer, const MCSymbol *LHS, const MCSymbol *RHS)
 
static uint32_t ARM64CountOfUnwindCodes (ArrayRef< WinEH::Instruction > Insns)
 
static void ARM64EmitUnwindCode (MCStreamer &streamer, const MCSymbol *begin, WinEH::Instruction &inst)
 
static MCSymbolFindMatchingEpilog (const std::vector< WinEH::Instruction > &EpilogInstrs, const std::vector< MCSymbol * > &Epilogs, const WinEH::FrameInfo *info)
 
static void simplifyOpcodes (std::vector< WinEH::Instruction > &Instructions, bool Reverse)
 
static int checkPackedEpilog (MCStreamer &streamer, WinEH::FrameInfo *info, int PrologCodeBytes)
 
static bool tryPackedUnwind (WinEH::FrameInfo *info, uint32_t FuncLength, int PackedEpilogOffset)
 
static void ARM64EmitUnwindInfo (MCStreamer &streamer, WinEH::FrameInfo *info, bool TryPacked=true)
 
static void ARM64EmitRuntimeFunction (MCStreamer &streamer, const WinEH::FrameInfo *info)
 

Function Documentation

◆ ARM64CountOfUnwindCodes()

static uint32_t ARM64CountOfUnwindCodes ( ArrayRef< WinEH::Instruction Insns)
static

◆ ARM64EmitRuntimeFunction()

static void ARM64EmitRuntimeFunction ( MCStreamer streamer,
const WinEH::FrameInfo info 
)
static

◆ ARM64EmitUnwindCode()

static void ARM64EmitUnwindCode ( MCStreamer streamer,
const MCSymbol begin,
WinEH::Instruction inst 
)
static

◆ ARM64EmitUnwindInfo()

static void ARM64EmitUnwindInfo ( MCStreamer streamer,
WinEH::FrameInfo info,
bool  TryPacked = true 
)
static

◆ checkPackedEpilog()

static int checkPackedEpilog ( MCStreamer streamer,
WinEH::FrameInfo info,
int  PrologCodeBytes 
)
static

Definition at line 609 of file MCWin64EH.cpp.

References ARM64CountOfUnwindCodes(), Epilog, GetAbsDifference(), I, info, and Offset.

Referenced by ARM64EmitUnwindInfo().

◆ CountOfUnwindCodes()

static uint8_t CountOfUnwindCodes ( std::vector< WinEH::Instruction > &  Insns)
static

◆ EmitAbsDifference()

static void EmitAbsDifference ( MCStreamer Streamer,
const MCSymbol LHS,
const MCSymbol RHS 
)
static

◆ EmitRuntimeFunction()

static void EmitRuntimeFunction ( MCStreamer streamer,
const WinEH::FrameInfo info 
)
static

◆ EmitSymbolRefWithOfs()

static void EmitSymbolRefWithOfs ( MCStreamer streamer,
const MCSymbol Base,
const MCSymbol Other 
)
static

◆ EmitUnwindCode()

static void EmitUnwindCode ( MCStreamer streamer,
const MCSymbol begin,
WinEH::Instruction inst 
)
static

◆ EmitUnwindInfo()

static void EmitUnwindInfo ( MCStreamer streamer,
WinEH::FrameInfo info 
)
static

◆ FindMatchingEpilog()

static MCSymbol* FindMatchingEpilog ( const std::vector< WinEH::Instruction > &  EpilogInstrs,
const std::vector< MCSymbol * > &  Epilogs,
const WinEH::FrameInfo info 
)
static

Definition at line 520 of file MCWin64EH.cpp.

References assert(), i, info, llvm::Match, Offset, and Operation.

Referenced by ARM64EmitUnwindInfo().

◆ GetAbsDifference()

static int64_t GetAbsDifference ( MCStreamer Streamer,
const MCSymbol LHS,
const MCSymbol RHS 
)
static

◆ simplifyOpcodes()

static void simplifyOpcodes ( std::vector< WinEH::Instruction > &  Instructions,
bool  Reverse 
)
static

◆ tryPackedUnwind()

static bool tryPackedUnwind ( WinEH::FrameInfo info,
uint32_t  FuncLength,
int  PackedEpilogOffset 
)
static

Definition at line 652 of file MCWin64EH.cpp.

References info, and llvm::Win64EH::UOP_SetFP.

Referenced by ARM64EmitUnwindInfo().