Skip to content

Commit 3c912fb

Browse files
author
Ariel Ben-Yehuda
authored
Rollup merge of rust-lang#40581 - TimNN:di-global-40, r=alexcrichton
[LLVM 4.0] Add missing debuginfo metadata to globals Fixes rust-lang#40580. cc @rkruppe cc rust-lang#40123
2 parents 196011c + 95bd7f2 commit 3c912fb

File tree

1 file changed

+11
-15
lines changed

1 file changed

+11
-15
lines changed

src/rustllvm/RustWrapper.cpp

+11-15
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@
99
// except according to those terms.
1010

1111
#include "rustllvm.h"
12+
#include "llvm/IR/DebugInfoMetadata.h"
1213
#include "llvm/IR/DiagnosticInfo.h"
1314
#include "llvm/IR/DiagnosticPrinter.h"
1415
#include "llvm/IR/Instructions.h"
@@ -594,7 +595,7 @@ extern "C" LLVMRustMetadataRef LLVMRustDIBuilderCreateStaticVariable(
594595
const char *LinkageName, LLVMRustMetadataRef File, unsigned LineNo,
595596
LLVMRustMetadataRef Ty, bool IsLocalToUnit, LLVMValueRef V,
596597
LLVMRustMetadataRef Decl = nullptr, uint32_t AlignInBits = 0) {
597-
Constant *InitVal = cast<Constant>(unwrap(V));
598+
llvm::GlobalVariable *InitVal = cast<llvm::GlobalVariable>(unwrap(V));
598599

599600
#if LLVM_VERSION_GE(4, 0)
600601
llvm::DIExpression *InitExpr = nullptr;
@@ -606,26 +607,21 @@ extern "C" LLVMRustMetadataRef LLVMRustDIBuilderCreateStaticVariable(
606607
InitExpr = Builder->createConstantValueExpression(
607608
FPVal->getValueAPF().bitcastToAPInt().getZExtValue());
608609
}
609-
#endif
610610

611-
#if LLVM_VERSION_GE(4, 0)
612-
return wrap(Builder->createGlobalVariableExpression(
611+
llvm::DIGlobalVariableExpression *VarExpr = Builder->createGlobalVariableExpression(
612+
unwrapDI<DIDescriptor>(Context), Name, LinkageName,
613+
unwrapDI<DIFile>(File), LineNo, unwrapDI<DIType>(Ty), IsLocalToUnit,
614+
InitExpr, unwrapDIPtr<MDNode>(Decl), AlignInBits);
615+
616+
InitVal->setMetadata("dbg", VarExpr);
617+
618+
return wrap(VarExpr);
613619
#else
614620
return wrap(Builder->createGlobalVariable(
615-
#endif
616621
unwrapDI<DIDescriptor>(Context), Name, LinkageName,
617622
unwrapDI<DIFile>(File), LineNo, unwrapDI<DIType>(Ty), IsLocalToUnit,
618-
#if LLVM_VERSION_GE(4, 0)
619-
InitExpr,
620-
#else
621-
InitVal,
622-
#endif
623-
unwrapDIPtr<MDNode>(Decl)
624-
#if LLVM_VERSION_GE(4, 0)
625-
,
626-
AlignInBits
623+
InitVal, unwrapDIPtr<MDNode>(Decl)));
627624
#endif
628-
));
629625
}
630626

631627
extern "C" LLVMRustMetadataRef LLVMRustDIBuilderCreateVariable(

0 commit comments

Comments
 (0)