There's no need for a DW_AT_byte_size on a pointer type.
authorEric Christopher <echristo@apple.com>
Tue, 21 Feb 2012 22:25:53 +0000 (22:25 +0000)
committerEric Christopher <echristo@apple.com>
Tue, 21 Feb 2012 22:25:53 +0000 (22:25 +0000)
Part of rdar://10493979 where it reduces by about .5% (10k)

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@151097 91177308-0d34-0410-b5e6-96231b3b80d8

lib/CodeGen/AsmPrinter/DwarfCompileUnit.cpp
test/DebugInfo/X86/DW_AT_specification.ll
test/DebugInfo/X86/concrete_out_of_line.ll
test/DebugInfo/X86/pr11300.ll

index 162e17e5ef7ba1a7d0c69503b44eb26488a97562..d8d1e5a78d35b970a86d43e336f45d4eb0b18588 100644 (file)
@@ -723,7 +723,7 @@ void CompileUnit::constructTypeDIE(DIE &Buffer, DIDerivedType DTy) {
     addString(&Buffer, dwarf::DW_AT_name, Name);
 
   // Add size if non-zero (derived types might be zero-sized.)
-  if (Size)
+  if (Size && Tag != dwarf::DW_TAG_pointer_type)
     addUInt(&Buffer, dwarf::DW_AT_byte_size, 0, Size);
 
   // Add source line info if available and TyDesc is not a forward declaration.
index 862349f8b064152b84edab3b65795a2437dd0ef3..fc6cd4bbe4c73603c4df69d3bd8edab32b5e4951 100644 (file)
@@ -4,7 +4,7 @@
 ; test that the DW_AT_specification is a back edge in the file.
 
 ; CHECK: 0x00000038: DW_TAG_subprogram [5] *
-; CHECK: 0x00000060: DW_AT_specification [DW_FORM_ref4]      (cu + 0x0038 => {0x00000038})
+; CHECK: 0x0000005f: DW_AT_specification [DW_FORM_ref4]      (cu + 0x0038 => {0x00000038})
 
 
 @_ZZN3foo3barEvE1x = constant i32 0, align 4
index 92895f199c014aa830846d4f81e7ee2be60cc5b0..18948445157f7ec1f354b4b25ac44c6a78451295 100644 (file)
@@ -7,7 +7,7 @@
 ; first check that we have a TAG_subprogram at a given offset and it has
 ; AT_inline.
 
-; CHECK: 0x00000136:   DW_TAG_subprogram
+; CHECK: 0x00000134:   DW_TAG_subprogram
 ; CHECK-NEXT:     DW_AT_MIPS_linkage_name
 ; CHECK-NEXT:     DW_AT_specification
 ; CHECK-NEXT:     DW_AT_inline
@@ -15,8 +15,8 @@
 
 ; and then that a TAG_subprogram refers to it with AT_abstract_origin.
 
-; CHECK: 0x00000186:   DW_TAG_subprogram
-; CHECK-NEXT: DW_AT_abstract_origin [DW_FORM_ref4]    (cu + 0x0136 => {0x00000136})
+; CHECK: 0x00000184:   DW_TAG_subprogram
+; CHECK-NEXT: DW_AT_abstract_origin [DW_FORM_ref4]    (cu + 0x0134 => {0x00000134})
 
 define i32 @_ZN17nsAutoRefCnt7ReleaseEv() {
 entry:
index fcb358ad853500d441dcfdc251c056275b5708ff..507e3f6d9b49d49627fd32ede0fde3061f3ff881 100644 (file)
@@ -4,7 +4,7 @@
 ; test that the DW_AT_specification is a back edge in the file.
 
 ; CHECK: 0x0000005b:     DW_TAG_subprogram [5]
-; CHECK: 0x0000007d:     DW_AT_specification [DW_FORM_ref4]      (cu + 0x005b => {0x0000005b})
+; CHECK: 0x0000007c:     DW_AT_specification [DW_FORM_ref4]      (cu + 0x005b => {0x0000005b})
 
 %struct.foo = type { i8 }