9
9
// except according to those terms.
10
10
11
11
#include " rustllvm.h"
12
+ #include " llvm/IR/DebugInfoMetadata.h"
12
13
#include " llvm/IR/DiagnosticInfo.h"
13
14
#include " llvm/IR/DiagnosticPrinter.h"
14
15
#include " llvm/IR/Instructions.h"
@@ -594,7 +595,7 @@ extern "C" LLVMRustMetadataRef LLVMRustDIBuilderCreateStaticVariable(
594
595
const char *LinkageName, LLVMRustMetadataRef File, unsigned LineNo,
595
596
LLVMRustMetadataRef Ty, bool IsLocalToUnit, LLVMValueRef V,
596
597
LLVMRustMetadataRef Decl = nullptr , uint32_t AlignInBits = 0 ) {
597
- Constant *InitVal = cast<Constant >(unwrap (V));
598
+ llvm::GlobalVariable *InitVal = cast<llvm::GlobalVariable >(unwrap (V));
598
599
599
600
#if LLVM_VERSION_GE(4, 0)
600
601
llvm::DIExpression *InitExpr = nullptr ;
@@ -607,10 +608,14 @@ extern "C" LLVMRustMetadataRef LLVMRustDIBuilderCreateStaticVariable(
607
608
FPVal->getValueAPF ().bitcastToAPInt ().getZExtValue ());
608
609
}
609
610
610
- return wrap ( Builder->createGlobalVariableExpression (
611
+ llvm::DIGlobalVariableExpression *VarExpr = Builder->createGlobalVariableExpression (
611
612
unwrapDI<DIDescriptor>(Context), Name, LinkageName,
612
613
unwrapDI<DIFile>(File), LineNo, unwrapDI<DIType>(Ty), IsLocalToUnit,
613
- InitExpr, unwrapDIPtr<MDNode>(Decl), AlignInBits));
614
+ InitExpr, unwrapDIPtr<MDNode>(Decl), AlignInBits);
615
+
616
+ InitVal->setMetadata (" dbg" , VarExpr);
617
+
618
+ return wrap (VarExpr);
614
619
#else
615
620
return wrap (Builder->createGlobalVariable (
616
621
unwrapDI<DIDescriptor>(Context), Name, LinkageName,
0 commit comments