diff options
| author | Tim Neumann <mail@timnn.me> | 2017-03-16 21:10:04 +0100 |
|---|---|---|
| committer | Tim Neumann <mail@timnn.me> | 2017-03-16 21:10:04 +0100 |
| commit | 95bd7f2e013ad79d857ac54b42b362b36ae8806d (patch) | |
| tree | 0f09b103165f0fcc5ae282e94e21a32c97a262d8 /src/rustllvm/RustWrapper.cpp | |
| parent | 222ca3c4a550e001e0b1bb957f0035d6bd753d4a (diff) | |
| download | rust-95bd7f2e013ad79d857ac54b42b362b36ae8806d.tar.gz rust-95bd7f2e013ad79d857ac54b42b362b36ae8806d.zip | |
add missing global metadata
Diffstat (limited to 'src/rustllvm/RustWrapper.cpp')
| -rw-r--r-- | src/rustllvm/RustWrapper.cpp | 11 |
1 files changed, 8 insertions, 3 deletions
diff --git a/src/rustllvm/RustWrapper.cpp b/src/rustllvm/RustWrapper.cpp index bb0a44cef67..5ab786f40b9 100644 --- a/src/rustllvm/RustWrapper.cpp +++ b/src/rustllvm/RustWrapper.cpp @@ -9,6 +9,7 @@ // except according to those terms. #include "rustllvm.h" +#include "llvm/IR/DebugInfoMetadata.h" #include "llvm/IR/DiagnosticInfo.h" #include "llvm/IR/DiagnosticPrinter.h" #include "llvm/IR/Instructions.h" @@ -594,7 +595,7 @@ extern "C" LLVMRustMetadataRef LLVMRustDIBuilderCreateStaticVariable( const char *LinkageName, LLVMRustMetadataRef File, unsigned LineNo, LLVMRustMetadataRef Ty, bool IsLocalToUnit, LLVMValueRef V, LLVMRustMetadataRef Decl = nullptr, uint32_t AlignInBits = 0) { - Constant *InitVal = cast<Constant>(unwrap(V)); + llvm::GlobalVariable *InitVal = cast<llvm::GlobalVariable>(unwrap(V)); #if LLVM_VERSION_GE(4, 0) llvm::DIExpression *InitExpr = nullptr; @@ -607,10 +608,14 @@ extern "C" LLVMRustMetadataRef LLVMRustDIBuilderCreateStaticVariable( FPVal->getValueAPF().bitcastToAPInt().getZExtValue()); } - return wrap(Builder->createGlobalVariableExpression( + llvm::DIGlobalVariableExpression *VarExpr = Builder->createGlobalVariableExpression( unwrapDI<DIDescriptor>(Context), Name, LinkageName, unwrapDI<DIFile>(File), LineNo, unwrapDI<DIType>(Ty), IsLocalToUnit, - InitExpr, unwrapDIPtr<MDNode>(Decl), AlignInBits)); + InitExpr, unwrapDIPtr<MDNode>(Decl), AlignInBits); + + InitVal->setMetadata("dbg", VarExpr); + + return wrap(VarExpr); #else return wrap(Builder->createGlobalVariable( unwrapDI<DIDescriptor>(Context), Name, LinkageName, |
