diff options
Diffstat (limited to 'lib/Target/SystemZ/SystemZAsmPrinter.h')
-rw-r--r-- | lib/Target/SystemZ/SystemZAsmPrinter.h | 17 |
1 files changed, 16 insertions, 1 deletions
diff --git a/lib/Target/SystemZ/SystemZAsmPrinter.h b/lib/Target/SystemZ/SystemZAsmPrinter.h index fe8c88fe23e3..cb88ec32f83a 100644 --- a/lib/Target/SystemZ/SystemZAsmPrinter.h +++ b/lib/Target/SystemZ/SystemZAsmPrinter.h @@ -11,7 +11,9 @@ #define LLVM_LIB_TARGET_SYSTEMZ_SYSTEMZASMPRINTER_H #include "SystemZTargetMachine.h" +#include "SystemZMCInstLower.h" #include "llvm/CodeGen/AsmPrinter.h" +#include "llvm/CodeGen/StackMaps.h" #include "llvm/Support/Compiler.h" namespace llvm { @@ -22,20 +24,33 @@ class Module; class raw_ostream; class LLVM_LIBRARY_VISIBILITY SystemZAsmPrinter : public AsmPrinter { +private: + StackMaps SM; + public: SystemZAsmPrinter(TargetMachine &TM, std::unique_ptr<MCStreamer> Streamer) - : AsmPrinter(TM, std::move(Streamer)) {} + : AsmPrinter(TM, std::move(Streamer)), SM(*this) {} // Override AsmPrinter. StringRef getPassName() const override { return "SystemZ Assembly Printer"; } void EmitInstruction(const MachineInstr *MI) override; void EmitMachineConstantPoolValue(MachineConstantPoolValue *MCPV) override; + void EmitEndOfAsmFile(Module &M) override; bool PrintAsmOperand(const MachineInstr *MI, unsigned OpNo, unsigned AsmVariant, const char *ExtraCode, raw_ostream &OS) override; bool PrintAsmMemoryOperand(const MachineInstr *MI, unsigned OpNo, unsigned AsmVariant, const char *ExtraCode, raw_ostream &OS) override; + + bool doInitialization(Module &M) override { + SM.reset(); + return AsmPrinter::doInitialization(M); + } + +private: + void LowerSTACKMAP(const MachineInstr &MI); + void LowerPATCHPOINT(const MachineInstr &MI, SystemZMCInstLower &Lower); }; } // end namespace llvm |