diff --git a/gen/dibuilder.cpp b/gen/dibuilder.cpp index f847c822d0..6c4d4cd63c 100644 --- a/gen/dibuilder.cpp +++ b/gen/dibuilder.cpp @@ -61,7 +61,11 @@ llvm::LLVMContext &ldc::DIBuilder::getContext() return IR->context(); } +#if LDC_LLVM_VER >= 307 +llvm::MDScope* ldc::DIBuilder::GetCurrentScope() +#else llvm::DIDescriptor ldc::DIBuilder::GetCurrentScope() +#endif { IrFunction *fn = IR->func(); if (fn->diLexicalBlocks.empty()) @@ -81,6 +85,9 @@ void ldc::DIBuilder::Declare(llvm::Value *var, llvm::DIVariable divar llvm::Instruction *instr = DBuilder.insertDeclare(var, divar, #if LDC_LLVM_VER >= 306 diexpr, +#endif +#if LDC_LLVM_VER >= 307 + IR->ir->getCurrentDebugLocation(), #endif IR->scopebb()); instr->setDebugLoc(IR->ir->getCurrentDebugLocation()); @@ -437,7 +444,7 @@ llvm::DIType ldc::DIBuilder::CreateCompositeType(Type *type) } #if LDC_LLVM_VER >= 307 - ir->diCompositeType = DBuilder.replaceTemporary(llvm::TempMDType(ir->diCompositeType), static_cast(ret.get())); + ir->diCompositeType = DBuilder.replaceTemporary(llvm::TempMDType(ir->diCompositeType), static_cast(ret)); #else ir->diCompositeType.replaceAllUsesWith(ret); #endif @@ -815,6 +822,9 @@ void ldc::DIBuilder::EmitValue(llvm::Value *val, VarDeclaration *vd) llvm::Instruction *instr = DBuilder.insertDbgValueIntrinsic(val, 0, debugVariable, #if LDC_LLVM_VER >= 306 DBuilder.createExpression(), +#endif +#if LDC_LLVM_VER >= 307 + IR->ir->getCurrentDebugLocation(), #endif IR->scopebb()); instr->setDebugLoc(IR->ir->getCurrentDebugLocation()); diff --git a/gen/dibuilder.h b/gen/dibuilder.h index 1ec204e5ae..1aae328645 100644 --- a/gen/dibuilder.h +++ b/gen/dibuilder.h @@ -156,7 +156,11 @@ public: private: llvm::LLVMContext &getContext(); Module *getDefinedModule(Dsymbol *s); +#if LDC_LLVM_VER >= 307 + llvm::MDScope* GetCurrentScope(); +#else llvm::DIDescriptor GetCurrentScope(); +#endif void Declare(llvm::Value *var, llvm::DIVariable divar #if LDC_LLVM_VER >= 306 , llvm::DIExpression diexpr