25 AArch64WinCOFFStreamer(
MCContext &
C, std::unique_ptr<MCAsmBackend> AB,
26 std::unique_ptr<MCCodeEmitter> CE,
27 std::unique_ptr<MCObjectWriter> OW)
30 void EmitWinEHHandlerData(
SMLoc Loc)
override;
31 void EmitWindowsUnwindTables()
override;
32 void FinishImpl()
override;
35 void AArch64WinCOFFStreamer::EmitWinEHHandlerData(
SMLoc Loc) {
40 EHStreamer.EmitUnwindInfo(*
this, getCurrentWinFrameInfo());
43 void AArch64WinCOFFStreamer::EmitWindowsUnwindTables() {
44 if (!getNumWinFrameInfos())
49 void AArch64WinCOFFStreamer::FinishImpl() {
51 EmitWindowsUnwindTables();
65 void AArch64TargetWinCOFFStreamer::EmitARM64WinUnwindCode(
unsigned UnwindCode,
68 auto &S = getStreamer();
75 CurFrame->
EpilogMap[CurrentEpilog].push_back(Inst);
86 EmitARM64WinUnwindCode(Op, -1, Size);
99 assert(Offset >= 0 && Offset <= 504 &&
100 "Offset for save reg should be >= 0 && <= 504");
121 assert(Offset >= 0 && Offset <= 504 &&
122 "Offset for save reg should be >= 0 && <= 504");
146 assert(Offset <= 2040 &&
"UOP_AddFP must have offset <= 2040");
157 auto &S = getStreamer();
170 auto &S = getStreamer();
176 CurrentEpilog = S.EmitCFILabel();
180 auto &S = getStreamer();
188 CurFrame->
EpilogMap[CurrentEpilog].push_back(Inst);
189 CurrentEpilog =
nullptr;
194 std::unique_ptr<MCObjectWriter> OW, std::unique_ptr<MCCodeEmitter> Emitter,
195 bool RelaxAll,
bool IncrementalLinkerCompatible) {
196 auto *S =
new AArch64WinCOFFStreamer(Context, std::move(MAB),
197 std::move(Emitter), std::move(OW));
198 S->getAssembler().setIncrementalLinkerCompatible(IncrementalLinkerCompatible);
void FinishImpl() override
Streamer specific finalization.
This class represents lattice values for constants.
void EmitARM64WinCFISaveRegP(unsigned Reg, int Offset) override
MCSymbol - Instances of this class represent a symbol name in the MC file, and MCSymbols are created ...
void EmitARM64WinCFIEpilogEnd() override
MCWinCOFFStreamer * createAArch64WinCOFFStreamer(MCContext &Context, std::unique_ptr< MCAsmBackend > MAB, std::unique_ptr< MCObjectWriter > OW, std::unique_ptr< MCCodeEmitter > Emitter, bool RelaxAll, bool IncrementalLinkerCompatible)
std::vector< Instruction > Instructions
void EmitARM64WinCFISaveFReg(unsigned Reg, int Offset) override
Emits exception handling directives.
void EmitARM64WinCFIPrologEnd() override
void EmitARM64WinCFISaveFRegP(unsigned Reg, int Offset) override
Context object for machine code objects.
void EmitARM64WinCFINop() override
void EmitARM64WinCFISaveFPLR(int Offset) override
void EmitARM64WinCFISaveFRegPX(unsigned Reg, int Offset) override
virtual void EmitWinEHHandlerData(SMLoc Loc=SMLoc())
void EmitARM64WinCFISaveReg(unsigned Reg, int Offset) override
void EmitARM64WinCFISaveRegX(unsigned Reg, int Offset) override
void EmitARM64WinCFISaveFRegX(unsigned Reg, int Offset) override
const MCSymbol * PrologEnd
void EmitARM64WinCFIEpilogStart() override
MapVector< MCSymbol *, std::vector< Instruction > > EpilogMap
void EmitARM64WinCFISetFP() override
void EmitARM64WinCFIAddFP(unsigned Size) override
void EmitARM64WinCFIAllocStack(unsigned Size) override
void EmitARM64WinCFISaveFPLRX(int Offset) override
assert(ImpDefSCC.getReg()==AMDGPU::SCC &&ImpDefSCC.isDef())
void EmitARM64WinCFISaveRegPX(unsigned Reg, int Offset) override
Represents a location in source code.