forked from OSchip/llvm-project
Reapply r205655, DebugInfo: Place global constants in their appropriate context.
This was reverted in 205664 and seems to be fixed by 205668... though that may be more by accident than anything well founded. llvm-svn: 205669
This commit is contained in:
parent
bb11391d04
commit
506a745a0a
|
@ -3234,8 +3234,11 @@ void CGDebugInfo::EmitGlobalVariable(const ValueDecl *VD,
|
|||
auto pair = DeclCache.insert(std::make_pair(VD, llvm::WeakVH()));
|
||||
if (!pair.second)
|
||||
return;
|
||||
llvm::DIDescriptor DContext =
|
||||
getContextDescriptor(dyn_cast<Decl>(VD->getDeclContext()));
|
||||
llvm::DIGlobalVariable GV = DBuilder.createStaticVariable(
|
||||
Unit, Name, Name, Unit, getLineNumber(VD->getLocation()), Ty, true, Init,
|
||||
DContext, Name, StringRef(), Unit, getLineNumber(VD->getLocation()), Ty,
|
||||
true, Init,
|
||||
getOrCreateStaticDataMemberDeclarationOrNull(cast<VarDecl>(VD)));
|
||||
pair.first->second = llvm::WeakVH(GV);
|
||||
}
|
||||
|
|
|
@ -3,12 +3,17 @@
|
|||
// Multiple references to the same constant should result in only one entry in
|
||||
// the globals list.
|
||||
|
||||
namespace ns {
|
||||
const int cnst = 42;
|
||||
}
|
||||
int f1() {
|
||||
return cnst + cnst;
|
||||
return ns::cnst + ns::cnst;
|
||||
}
|
||||
|
||||
// CHECK: metadata [[GLOBALS:![0-9]*]], metadata {{![0-9]*}}, metadata !"{{.*}}", i32 {{[0-9]*}}} ; [ DW_TAG_compile_unit ]
|
||||
|
||||
// CHECK: [[GLOBALS]] = metadata !{metadata [[CNST:![0-9]*]]}
|
||||
|
||||
// CHECK: [[CNST]] = {{.*}}, metadata [[NS:![0-9]*]], metadata !"cnst", {{.*}}; [ DW_TAG_variable ] [cnst]
|
||||
// CHECK: [[NS]] = {{.*}}; [ DW_TAG_namespace ] [ns]
|
||||
|
||||
|
|
Loading…
Reference in New Issue