103103// for outputting assembly
104104#include < llvm/CodeGen/AsmPrinter.h>
105105#include < llvm/CodeGen/AsmPrinterHandler.h>
106+ #include < llvm/CodeGen/DebugHandlerBase.h>
106107#include < llvm/CodeGen/MachineModuleInfo.h>
107108#include < llvm/CodeGen/Passes.h>
108109#include < llvm/CodeGen/TargetPassConfig.h>
@@ -1154,7 +1155,11 @@ addPassesToGenerateCode(LLVMTargetMachine *TM, PassManagerBase &PM) {
11541155 return &MMIWP->getMMI ().getContext ();
11551156}
11561157
1158+ #if JL_LLVM_VERSION >= 190000
1159+ class LineNumberPrinterHandler : public DebugHandlerBase {
1160+ #else
11571161class LineNumberPrinterHandler : public AsmPrinterHandler {
1162+ #endif
11581163 MCStreamer &S;
11591164 LineNumberAnnotatedWriter LinePrinter;
11601165 std::string Buffer;
@@ -1163,7 +1168,11 @@ class LineNumberPrinterHandler : public AsmPrinterHandler {
11631168
11641169public:
11651170 LineNumberPrinterHandler (AsmPrinter &Printer, const char *debuginfo)
1166- : S(*Printer.OutStreamer),
1171+ :
1172+ #if JL_LLVM_VERSION >= 190000
1173+ DebugHandlerBase (&Printer),
1174+ #endif
1175+ S (*Printer.OutStreamer),
11671176 LinePrinter (" ; " , true , debuginfo),
11681177 RawStream (Buffer),
11691178 Stream (RawStream) {}
@@ -1182,12 +1191,20 @@ class LineNumberPrinterHandler : public AsmPrinterHandler {
11821191 // virtual void beginModule(Module *M) override {}
11831192 virtual void endModule () override {}
11841193 // / note that some AsmPrinter implementations may not call beginFunction at all
1194+ #if JL_LLVM_VERSION >= 190000
1195+ virtual void beginFunctionImpl (const MachineFunction *MF) override {
1196+ #else
11851197 virtual void beginFunction (const MachineFunction *MF) override {
1198+ #endif
11861199 LinePrinter.emitFunctionAnnot (&MF->getFunction (), Stream);
11871200 emitAndReset ();
11881201 }
11891202 // virtual void markFunctionEnd() override {}
1203+ #if JL_LLVM_VERSION >= 190000
1204+ virtual void endFunctionImpl (const MachineFunction *MF) override {
1205+ #else
11901206 virtual void endFunction (const MachineFunction *MF) override {
1207+ #endif
11911208 LinePrinter.emitEnd (Stream);
11921209 emitAndReset ();
11931210 }
@@ -1272,9 +1289,14 @@ jl_value_t *jl_dump_function_asm_impl(jl_llvmf_dump_t* dump, char emit_mc, const
12721289 ));
12731290 std::unique_ptr<AsmPrinter> Printer (
12741291 TM->getTarget ().createAsmPrinter (*TM, std::move (S)));
1292+ #if JL_LLVM_VERSION >= 190000
1293+ Printer->addDebugHandler (
1294+ std::make_unique<LineNumberPrinterHandler>(*Printer, debuginfo));
1295+ #else
12751296 Printer->addAsmPrinterHandler (AsmPrinter::HandlerInfo (
12761297 std::unique_ptr<AsmPrinterHandler>(new LineNumberPrinterHandler (*Printer, debuginfo)),
12771298 " emit" , " Debug Info Emission" , " Julia" , " Julia::LineNumberPrinterHandler Markup" ));
1299+ #endif
12781300 if (!Printer)
12791301 return jl_an_empty_string;
12801302 PM.add (Printer.release ());
0 commit comments