r205669 - Reapply r205655, DebugInfo: Place global constants in their appropriate context.

David Blaikie dblaikie at gmail.com
Sat Apr 5 00:46:58 PDT 2014


Author: dblaikie
Date: Sat Apr  5 02:46:57 2014
New Revision: 205669

URL: http://llvm.org/viewvc/llvm-project?rev=205669&view=rev
Log:
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.

Modified:
    cfe/trunk/lib/CodeGen/CGDebugInfo.cpp
    cfe/trunk/test/CodeGenCXX/debug-info-global.cpp

Modified: cfe/trunk/lib/CodeGen/CGDebugInfo.cpp
URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/CodeGen/CGDebugInfo.cpp?rev=205669&r1=205668&r2=205669&view=diff
==============================================================================
--- cfe/trunk/lib/CodeGen/CGDebugInfo.cpp (original)
+++ cfe/trunk/lib/CodeGen/CGDebugInfo.cpp Sat Apr  5 02:46:57 2014
@@ -3234,8 +3234,11 @@ void CGDebugInfo::EmitGlobalVariable(con
   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);
 }

Modified: cfe/trunk/test/CodeGenCXX/debug-info-global.cpp
URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/test/CodeGenCXX/debug-info-global.cpp?rev=205669&r1=205668&r2=205669&view=diff
==============================================================================
--- cfe/trunk/test/CodeGenCXX/debug-info-global.cpp (original)
+++ cfe/trunk/test/CodeGenCXX/debug-info-global.cpp Sat Apr  5 02:46:57 2014
@@ -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]
+





More information about the cfe-commits mailing list