r188651 - DebugInfo: Do not include line/file info for artificial parameters & parameters of artificial functions

David Blaikie dblaikie at gmail.com
Sun Aug 18 20:37:48 PDT 2013


Author: dblaikie
Date: Sun Aug 18 22:37:48 2013
New Revision: 188651

URL: http://llvm.org/viewvc/llvm-project?rev=188651&view=rev
Log:
DebugInfo: Do not include line/file info for artificial parameters & parameters of artificial functions

Modified:
    cfe/trunk/lib/CodeGen/CGDebugInfo.cpp
    cfe/trunk/test/CodeGenObjC/2010-02-09-DbgSelf.m
    cfe/trunk/test/CodeGenObjC/debug-info-id-with-protocol.m
    cfe/trunk/test/CodeGenObjC/debug-info-self.m

Modified: cfe/trunk/lib/CodeGen/CGDebugInfo.cpp
URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/CodeGen/CGDebugInfo.cpp?rev=188651&r1=188650&r2=188651&view=diff
==============================================================================
--- cfe/trunk/lib/CodeGen/CGDebugInfo.cpp (original)
+++ cfe/trunk/lib/CodeGen/CGDebugInfo.cpp Sun Aug 18 22:37:48 2013
@@ -1063,8 +1063,12 @@ CGDebugInfo::CreateCXXMemberFunction(con
     MethodLinkageName = CGM.getMangledName(Method);
 
   // Get the location for the method.
-  llvm::DIFile MethodDefUnit = getOrCreateFile(Method->getLocation());
-  unsigned MethodLine = getLineNumber(Method->getLocation());
+  llvm::DIFile MethodDefUnit;
+  unsigned MethodLine = 0;
+  if (!Method->isImplicit()) {
+    MethodDefUnit = getOrCreateFile(Method->getLocation());
+    MethodLine = getLineNumber(Method->getLocation());
+  }
 
   // Collect virtual method info.
   llvm::DIType ContainingType;
@@ -2685,7 +2689,12 @@ void CGDebugInfo::EmitDeclare(const VarD
   assert(DebugKind >= CodeGenOptions::LimitedDebugInfo);
   assert(!LexicalBlockStack.empty() && "Region stack mismatch, stack empty!");
 
-  llvm::DIFile Unit = getOrCreateFile(VD->getLocation());
+  bool Unwritten =
+      VD->isImplicit() || (isa<Decl>(VD->getDeclContext()) &&
+                           cast<Decl>(VD->getDeclContext())->isImplicit());
+  llvm::DIFile Unit;
+  if (!Unwritten)
+    Unit = getOrCreateFile(VD->getLocation());
   llvm::DIType Ty;
   uint64_t XOffset = 0;
   if (VD->hasAttr<BlocksAttr>())
@@ -2699,8 +2708,12 @@ void CGDebugInfo::EmitDeclare(const VarD
     return;
 
   // Get location information.
-  unsigned Line = getLineNumber(VD->getLocation());
-  unsigned Column = getColumnNumber(VD->getLocation());
+  unsigned Line = 0;
+  unsigned Column = 0;
+  if (!Unwritten) {
+    Line = getLineNumber(VD->getLocation());
+    Column = getColumnNumber(VD->getLocation());
+  }
   unsigned Flags = 0;
   if (VD->isImplicit())
     Flags |= llvm::DIDescriptor::FlagArtificial;

Modified: cfe/trunk/test/CodeGenObjC/2010-02-09-DbgSelf.m
URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/test/CodeGenObjC/2010-02-09-DbgSelf.m?rev=188651&r1=188650&r2=188651&view=diff
==============================================================================
--- cfe/trunk/test/CodeGenObjC/2010-02-09-DbgSelf.m (original)
+++ cfe/trunk/test/CodeGenObjC/2010-02-09-DbgSelf.m Sun Aug 18 22:37:48 2013
@@ -1,5 +1,7 @@
-// RUN: %clang_cc1 -x objective-c -emit-llvm -g < %s | grep  "\"self\", metadata" 
+// RUN: %clang_cc1 -x objective-c -emit-llvm -g < %s | FileCheck %s
 // Test to check that "self" argument is assigned a location.
+// CHECK: call void @llvm.dbg.declare(metadata !{%0** %self.addr}, metadata [[SELF:![0-9]*]])
+// CHECK: [[SELF]] = {{.*}} ; [ DW_TAG_arg_variable ] [self]
 
 @interface Foo 
 -(void) Bar: (int)x ;

Modified: cfe/trunk/test/CodeGenObjC/debug-info-id-with-protocol.m
URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/test/CodeGenObjC/debug-info-id-with-protocol.m?rev=188651&r1=188650&r2=188651&view=diff
==============================================================================
--- cfe/trunk/test/CodeGenObjC/debug-info-id-with-protocol.m (original)
+++ cfe/trunk/test/CodeGenObjC/debug-info-id-with-protocol.m Sun Aug 18 22:37:48 2013
@@ -36,6 +36,6 @@ int main()
     }
 }
 // Verify that the debug type for both variables is 'id'.
-// CHECK: metadata !{i32 {{[0-9]+}}, metadata !{{[0-9]+}}, metadata !"bad_carrier", metadata !{{[0-9]+}}, i32 {{[0-9]+}}, metadata ![[IDTYPE:[0-9]+]], i32 0, i32 0} ; [ DW_TAG_arg_variable ] [bad_carrier] [line 21]
-// CHECK: metadata !{i32 {{[0-9]+}}, metadata !{{[0-9]+}}, metadata !"good_carrier", metadata !{{[0-9]+}}, i32 {{[0-9]+}}, metadata !{{.*}}[[IDTYPE]], i32 0, i32 0} ; [ DW_TAG_arg_variable ] [good_carrier] [line 22]
+// CHECK: metadata !{i32 {{[0-9]+}}, metadata !{{[0-9]+}}, metadata !"bad_carrier", null, i32 {{[0-9]+}}, metadata ![[IDTYPE:[0-9]+]], i32 0, i32 0} ; [ DW_TAG_arg_variable ] [bad_carrier] [line 0]
+// CHECK: metadata !{i32 {{[0-9]+}}, metadata !{{[0-9]+}}, metadata !"good_carrier", null, i32 {{[0-9]+}}, metadata !{{.*}}[[IDTYPE]], i32 0, i32 0} ; [ DW_TAG_arg_variable ] [good_carrier] [line 0]
 // CHECK !{{.*}}[[IDTYPE]] = metadata !{i32 {{[0-9]+}}, null, metadata !"id", metadata !{{[0-9]+}}, i32 !{{[0-9]+}}, i64 0, i64 0, i64 0, i32 0, metadata !{{[0-9]+}}} ; [ DW_TAG_typedef ] [id]

Modified: cfe/trunk/test/CodeGenObjC/debug-info-self.m
URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/test/CodeGenObjC/debug-info-self.m?rev=188651&r1=188650&r2=188651&view=diff
==============================================================================
--- cfe/trunk/test/CodeGenObjC/debug-info-self.m (original)
+++ cfe/trunk/test/CodeGenObjC/debug-info-self.m Sun Aug 18 22:37:48 2013
@@ -14,10 +14,6 @@
 }
 @end
 
-// It's weird that the first two parameters are recorded as being in a
-// different, ("<unknown>") file compared to the third parameter which is 'in'
-// the actual source file. (see the metadata node after the arg name in each
-// line)
-// CHECK: metadata !{i32 {{.*}}, metadata ![[CTOR:.*]], metadata !"self", metadata ![[UNKFILE:.*]], i32 16777227, metadata !{{.*}}, i32 1088, i32 0} ; [ DW_TAG_arg_variable ] [self] [line 11]
-// CHECK: metadata !{i32 {{.*}}, metadata ![[CTOR]], metadata !"_cmd", metadata ![[UNKFILE]], i32 33554443, metadata !{{.*}}, i32 64, i32 0} ; [ DW_TAG_arg_variable ] [_cmd] [line 11]
+// CHECK: metadata !{i32 {{.*}}, metadata ![[CTOR:.*]], metadata !"self", null, i32 16777216, metadata !{{.*}}, i32 1088, i32 0} ; [ DW_TAG_arg_variable ] [self] [line 0]
+// CHECK: metadata !{i32 {{.*}}, metadata ![[CTOR]], metadata !"_cmd", null, i32 33554432, metadata !{{.*}}, i32 64, i32 0} ; [ DW_TAG_arg_variable ] [_cmd] [line 0]
 // CHECK: metadata !{i32 {{.*}}, metadata ![[CTOR]], metadata !"myarg", metadata !{{.*}}, i32 50331659, metadata !{{.*}}, i32 0, i32 0} ; [ DW_TAG_arg_variable ] [myarg] [line 11]





More information about the cfe-commits mailing list