diff --git a/ctx.cpp b/ctx.cpp index 95ad4854..1e79c97b 100644 --- a/ctx.cpp +++ b/ctx.cpp @@ -332,7 +332,11 @@ FunctionEmitContext::FunctionEmitContext(Function *func, Symbol *funSym, diFile = funcStartPos.GetDIFile(); AssertPos(currentPos, diFile.Verify()); +#if defined(LLVM_3_1) || defined(LLVM_3_2) || defined(LLVM_3_3) llvm::DIScope scope = llvm::DIScope(m->diBuilder->getCU()); +#else // LLVM_3_4+ + llvm::DIScope scope = llvm::DIScope(m->diCompileUnit); +#endif AssertPos(currentPos, scope.Verify()); const FunctionType *functionType = function->GetType(); diff --git a/module.cpp b/module.cpp index fe82be37..cfa00110 100644 --- a/module.cpp +++ b/module.cpp @@ -307,6 +307,9 @@ Module::Module(const char *fn) { sprintf(producerString, "ispc version %s (built on %s)", ISPC_VERSION, __DATE__); #endif +#if !defined(LLVM_3_1) && !defined(LLVM_3_2) && !defined(LLVM_3_3) + diCompileUnit = +#endif // LLVM_3_4+ diBuilder->createCompileUnit(llvm::dwarf::DW_LANG_C99, /* lang */ name, /* filename */ directory, /* directory */ diff --git a/module.h b/module.h index a61493de..a817d5ba 100644 --- a/module.h +++ b/module.h @@ -41,6 +41,9 @@ #include "ispc.h" #include "ast.h" +#if !defined(LLVM_3_1) && !defined(LLVM_3_2) && !defined(LLVM_3_3) + #include +#endif namespace llvm { @@ -153,6 +156,10 @@ public: /** The diBuilder manages generating debugging information */ llvm::DIBuilder *diBuilder; +#if !defined(LLVM_3_1) && !defined(LLVM_3_2) && !defined(LLVM_3_3) + llvm::DICompileUnit diCompileUnit; +#endif // LLVM_3_4+ + private: const char *filename; AST *ast;