diff options
| author | Michael Woerister <michaelwoerister@posteo> | 2018-04-12 14:52:09 +0200 |
|---|---|---|
| committer | Michael Woerister <michaelwoerister@posteo> | 2018-04-17 15:01:31 +0200 |
| commit | 5cc7d5ef704f5bff67b675a4bd4dda5b16396310 (patch) | |
| tree | 7b5af53a49ff449d4d9ae8c61db0203c5d677872 | |
| parent | d5b48a4b1b13342fdaccffe9517061b9e95ecb8c (diff) | |
| download | rust-5cc7d5ef704f5bff67b675a4bd4dda5b16396310.tar.gz rust-5cc7d5ef704f5bff67b675a4bd4dda5b16396310.zip | |
Support #[no_debug] for global variables.
| -rw-r--r-- | src/librustc_trans/debuginfo/metadata.rs | 13 |
1 files changed, 10 insertions, 3 deletions
diff --git a/src/librustc_trans/debuginfo/metadata.rs b/src/librustc_trans/debuginfo/metadata.rs index f3d95cf794b..eb550d7a605 100644 --- a/src/librustc_trans/debuginfo/metadata.rs +++ b/src/librustc_trans/debuginfo/metadata.rs @@ -23,6 +23,7 @@ use llvm::{self, ValueRef}; use llvm::debuginfo::{DIType, DIFile, DIScope, DIDescriptor, DICompositeType, DILexicalBlock, DIFlags}; +use rustc::hir::TransFnAttrFlags; use rustc::hir::def::CtorKind; use rustc::hir::def_id::{DefId, CrateNum, LOCAL_CRATE}; use rustc::ty::fold::TypeVisitor; @@ -41,7 +42,7 @@ use std::ffi::CString; use std::fmt::Write; use std::ptr; use std::path::{Path, PathBuf}; -use syntax::{ast, attr}; +use syntax::ast; use syntax::symbol::{Interner, InternedString, Symbol}; use syntax_pos::{self, Span, FileName}; @@ -1644,11 +1645,17 @@ pub fn create_global_var_metadata(cx: &CodegenCx, } let tcx = cx.tcx; - let no_mangle = attr::contains_name(&tcx.get_attrs(def_id), "no_mangle"); + let attrs = tcx.trans_fn_attrs(def_id); + + if attrs.flags.contains(TransFnAttrFlags::NO_DEBUG) { + return; + } + + let no_mangle = attrs.flags.contains(TransFnAttrFlags::NO_MANGLE); // We may want to remove the namespace scope if we're in an extern block, see: // https://github.com/rust-lang/rust/pull/46457#issuecomment-351750952 let var_scope = get_namespace_for_item(cx, def_id); - let span = cx.tcx.def_span(def_id); + let span = tcx.def_span(def_id); let (file_metadata, line_number) = if span != syntax_pos::DUMMY_SP { let loc = span_start(cx, span); |
