#include "X86MCTargetDesc.h"
#include "X86TargetStreamer.h"
#include "llvm/DebugInfo/CodeView/CodeView.h"
#include "llvm/MC/MCCodeView.h"
#include "llvm/MC/MCContext.h"
#include "llvm/MC/MCInstPrinter.h"
#include "llvm/MC/MCRegisterInfo.h"
#include "llvm/MC/MCSubtargetInfo.h"
#include "llvm/MC/MCSymbol.h"
#include "llvm/Support/FormattedStream.h"
usingnamespacellvm;
usingnamespacellvm::codeview;
namespace {
class X86WinCOFFAsmTargetStreamer : public X86TargetStreamer { … };
struct FPOInstruction { … };
struct FPOData { … };
class X86WinCOFFTargetStreamer : public X86TargetStreamer { … };
}
bool X86WinCOFFAsmTargetStreamer::emitFPOProc(const MCSymbol *ProcSym,
unsigned ParamsSize, SMLoc L) { … }
bool X86WinCOFFAsmTargetStreamer::emitFPOEndPrologue(SMLoc L) { … }
bool X86WinCOFFAsmTargetStreamer::emitFPOEndProc(SMLoc L) { … }
bool X86WinCOFFAsmTargetStreamer::emitFPOData(const MCSymbol *ProcSym,
SMLoc L) { … }
bool X86WinCOFFAsmTargetStreamer::emitFPOPushReg(MCRegister Reg, SMLoc L) { … }
bool X86WinCOFFAsmTargetStreamer::emitFPOStackAlloc(unsigned StackAlloc,
SMLoc L) { … }
bool X86WinCOFFAsmTargetStreamer::emitFPOStackAlign(unsigned Align, SMLoc L) { … }
bool X86WinCOFFAsmTargetStreamer::emitFPOSetFrame(MCRegister Reg, SMLoc L) { … }
bool X86WinCOFFTargetStreamer::checkInFPOPrologue(SMLoc L) { … }
MCSymbol *X86WinCOFFTargetStreamer::emitFPOLabel() { … }
bool X86WinCOFFTargetStreamer::emitFPOProc(const MCSymbol *ProcSym,
unsigned ParamsSize, SMLoc L) { … }
bool X86WinCOFFTargetStreamer::emitFPOEndProc(SMLoc L) { … }
bool X86WinCOFFTargetStreamer::emitFPOSetFrame(MCRegister Reg, SMLoc L) { … }
bool X86WinCOFFTargetStreamer::emitFPOPushReg(MCRegister Reg, SMLoc L) { … }
bool X86WinCOFFTargetStreamer::emitFPOStackAlloc(unsigned StackAlloc, SMLoc L) { … }
bool X86WinCOFFTargetStreamer::emitFPOStackAlign(unsigned Align, SMLoc L) { … }
bool X86WinCOFFTargetStreamer::emitFPOEndPrologue(SMLoc L) { … }
namespace {
struct RegSaveOffset { … };
struct FPOStateMachine { … };
}
static Printable printFPOReg(const MCRegisterInfo *MRI, unsigned LLVMReg) { … }
void FPOStateMachine::emitFrameDataRecord(MCStreamer &OS, MCSymbol *Label) { … }
bool X86WinCOFFTargetStreamer::emitFPOData(const MCSymbol *ProcSym, SMLoc L) { … }
MCTargetStreamer *llvm::createX86AsmTargetStreamer(MCStreamer &S,
formatted_raw_ostream &OS,
MCInstPrinter *InstPrinter) { … }
MCTargetStreamer *
llvm::createX86ObjectTargetStreamer(MCStreamer &S, const MCSubtargetInfo &STI) { … }