Skip to content

Commit 5901459

Browse files
committed
1 parent 7e957b5 commit 5901459

File tree

1 file changed

+23
-1
lines changed

1 file changed

+23
-1
lines changed

src/disasm.cpp

Lines changed: 23 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -103,6 +103,7 @@
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
11571161
class LineNumberPrinterHandler : public AsmPrinterHandler {
1162+
#endif
11581163
MCStreamer &S;
11591164
LineNumberAnnotatedWriter LinePrinter;
11601165
std::string Buffer;
@@ -1163,7 +1168,11 @@ class LineNumberPrinterHandler : public AsmPrinterHandler {
11631168

11641169
public:
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

Comments
 (0)