[llvm] r329705 - [CodeGen/Dwarf] Rename the "sizetype" synthetic type and add it to the accelerator table

Pavel Labath via llvm-commits llvm-commits at lists.llvm.org
Tue Apr 10 07:23:41 PDT 2018


Author: labath
Date: Tue Apr 10 07:23:41 2018
New Revision: 329705

URL: http://llvm.org/viewvc/llvm-project?rev=329705&view=rev
Log:
[CodeGen/Dwarf] Rename the "sizetype" synthetic type and add it to the accelerator table

Summary:
This type is created on-demand and used as the base type for array
ranges. Since it is "special", its construction did not go through the
createTypeDIE function and so it was never inserted into the accelerator
table, although it clearly belongs there.

I add an explicit addAccelType call to insert it into the table.

During review, we also decided to rename the type to something more
unique to avoid confusion in case the user has own "sizetype" type. The
new name for the type size __ARRAY_SIZE_TYPE__.

Reviewers: JDevlieghere, aprantl, dblaikie

Subscribers: llvm-commits

Differential Revision: https://reviews.llvm.org/D45445

Added:
    llvm/trunk/test/DebugInfo/Generic/debug-names-index-type.ll
Modified:
    llvm/trunk/lib/CodeGen/AsmPrinter/DwarfUnit.cpp
    llvm/trunk/test/DebugInfo/X86/nondefault-subrange-array.ll
    llvm/trunk/test/DebugInfo/X86/vla-dependencies.ll
    llvm/trunk/test/DebugInfo/X86/vla-global.ll
    llvm/trunk/test/DebugInfo/X86/vla-multi.ll

Modified: llvm/trunk/lib/CodeGen/AsmPrinter/DwarfUnit.cpp
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/CodeGen/AsmPrinter/DwarfUnit.cpp?rev=329705&r1=329704&r2=329705&view=diff
==============================================================================
--- llvm/trunk/lib/CodeGen/AsmPrinter/DwarfUnit.cpp (original)
+++ llvm/trunk/lib/CodeGen/AsmPrinter/DwarfUnit.cpp Tue Apr 10 07:23:41 2018
@@ -1404,10 +1404,12 @@ DIE *DwarfUnit::getIndexTyDie() {
     return IndexTyDie;
   // Construct an integer type to use for indexes.
   IndexTyDie = &createAndAddDIE(dwarf::DW_TAG_base_type, getUnitDie());
-  addString(*IndexTyDie, dwarf::DW_AT_name, "sizetype");
+  StringRef Name = "__ARRAY_SIZE_TYPE__";
+  addString(*IndexTyDie, dwarf::DW_AT_name, Name);
   addUInt(*IndexTyDie, dwarf::DW_AT_byte_size, None, sizeof(int64_t));
   addUInt(*IndexTyDie, dwarf::DW_AT_encoding, dwarf::DW_FORM_data1,
           dwarf::DW_ATE_unsigned);
+  DD->addAccelType(Name, *IndexTyDie, /*Flags*/ 0);
   return IndexTyDie;
 }
 

Added: llvm/trunk/test/DebugInfo/Generic/debug-names-index-type.ll
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/test/DebugInfo/Generic/debug-names-index-type.ll?rev=329705&view=auto
==============================================================================
--- llvm/trunk/test/DebugInfo/Generic/debug-names-index-type.ll (added)
+++ llvm/trunk/test/DebugInfo/Generic/debug-names-index-type.ll Tue Apr 10 07:23:41 2018
@@ -0,0 +1,38 @@
+; REQUIRES: object-emission
+; RUN: %llc_dwarf -accel-tables=Dwarf -filetype=obj -o %t < %s
+; RUN: llvm-dwarfdump -debug-names %t | FileCheck %s
+; RUN: llvm-dwarfdump -debug-names -verify %t | FileCheck --check-prefix=VERIFY %s
+
+; Check that the entry for the "__ARRAY_SIZE_TYPE__" index type is present in the
+; accelerator table.
+; CHECK: String: 0x{{[0-9a-f]*}} "__ARRAY_SIZE_TYPE__"
+; CHECK-NEXT: Entry
+; CHECK-NEXT: Abbrev
+; CHECK-NEXT: Tag: DW_TAG_base_type
+
+; VERIFY: No errors.
+
+; Generated by:
+; clang -g -x c - -o - -S -emit-llvm <<<"int a[1];"
+
+ at a = common dso_local global [1 x i32] zeroinitializer, align 4, !dbg !0
+
+!llvm.dbg.cu = !{!2}
+!llvm.module.flags = !{!11, !12, !13}
+!llvm.ident = !{!14}
+
+!0 = !DIGlobalVariableExpression(var: !1, expr: !DIExpression())
+!1 = distinct !DIGlobalVariable(name: "a", scope: !2, file: !6, line: 1, type: !7, isLocal: false, isDefinition: true)
+!2 = distinct !DICompileUnit(language: DW_LANG_C99, file: !3, producer: "clang version 7.0.0 (trunk 329543) (llvm/trunk 329575)", isOptimized: false, runtimeVersion: 0, emissionKind: FullDebug, enums: !4, globals: !5)
+!3 = !DIFile(filename: "-", directory: "/tmp")
+!4 = !{}
+!5 = !{!0}
+!6 = !DIFile(filename: "<stdin>", directory: "/tmp")
+!7 = !DICompositeType(tag: DW_TAG_array_type, baseType: !8, size: 32, elements: !9)
+!8 = !DIBasicType(name: "int", size: 32, encoding: DW_ATE_signed)
+!9 = !{!10}
+!10 = !DISubrange(count: 1)
+!11 = !{i32 2, !"Dwarf Version", i32 4}
+!12 = !{i32 2, !"Debug Info Version", i32 3}
+!13 = !{i32 1, !"wchar_size", i32 4}
+!14 = !{!"clang version 7.0.0 (trunk 329543) (llvm/trunk 329575)"}

Modified: llvm/trunk/test/DebugInfo/X86/nondefault-subrange-array.ll
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/test/DebugInfo/X86/nondefault-subrange-array.ll?rev=329705&r1=329704&r2=329705&view=diff
==============================================================================
--- llvm/trunk/test/DebugInfo/X86/nondefault-subrange-array.ll (original)
+++ llvm/trunk/test/DebugInfo/X86/nondefault-subrange-array.ll Tue Apr 10 07:23:41 2018
@@ -24,7 +24,7 @@ source_filename = "test/DebugInfo/X86/no
 
 ; CHECK: [[BASE]]: DW_TAG_base_type
 ; CHECK: [[BASE2]]: DW_TAG_base_type
-; CHECK-NEXT:                 DW_AT_name [DW_FORM_strp]       ( .debug_str[0x{{[0-9a-f]*}}] = "sizetype")
+; CHECK-NEXT:                 DW_AT_name [DW_FORM_strp]       ( .debug_str[0x{{[0-9a-f]*}}] = "__ARRAY_SIZE_TYPE__")
 ; CHECK-NEXT:                 DW_AT_byte_size [DW_FORM_data1] (0x08)
 ; CHECK-NEXT:                 DW_AT_encoding [DW_FORM_data1]  (DW_ATE_unsigned)
 

Modified: llvm/trunk/test/DebugInfo/X86/vla-dependencies.ll
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/test/DebugInfo/X86/vla-dependencies.ll?rev=329705&r1=329704&r2=329705&view=diff
==============================================================================
--- llvm/trunk/test/DebugInfo/X86/vla-dependencies.ll (original)
+++ llvm/trunk/test/DebugInfo/X86/vla-dependencies.ll Tue Apr 10 07:23:41 2018
@@ -7,7 +7,7 @@
 ; CHECK-NEXT:     DW_AT_type	{{.*}}"int"
 ; CHECK-NOT: DW_TAG
 ; CHECK:        DW_TAG_subrange_type
-; CHECK-NEXT:     DW_AT_type {{.*}}"sizetype"
+; CHECK-NEXT:     DW_AT_type {{.*}}"__ARRAY_SIZE_TYPE__"
 ; CHECK-NEXT:     DW_AT_count	(0x00000[[VLAEXPR]]
 ;
 ;

Modified: llvm/trunk/test/DebugInfo/X86/vla-global.ll
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/test/DebugInfo/X86/vla-global.ll?rev=329705&r1=329704&r2=329705&view=diff
==============================================================================
--- llvm/trunk/test/DebugInfo/X86/vla-global.ll (original)
+++ llvm/trunk/test/DebugInfo/X86/vla-global.ll Tue Apr 10 07:23:41 2018
@@ -5,7 +5,7 @@
 ; CHECK-NEXT:  DW_AT_type	({{.*}} "int")
 ; CHECK-NOT: DW_TAG
 ; CHECK:       DW_TAG_subrange_type
-; CHECK-NEXT:     DW_AT_type	({{.*}} "sizetype")
+; CHECK-NEXT:     DW_AT_type	({{.*}} "__ARRAY_SIZE_TYPE__")
 ; CHECK-NEXT:      DW_AT_count	(0x00000[[G]])
 ; Test that a VLA referring to a global variable is handled correctly.
 ; Clang doesn't generate this, but the verifier allows it.

Modified: llvm/trunk/test/DebugInfo/X86/vla-multi.ll
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/test/DebugInfo/X86/vla-multi.ll?rev=329705&r1=329704&r2=329705&view=diff
==============================================================================
--- llvm/trunk/test/DebugInfo/X86/vla-multi.ll (original)
+++ llvm/trunk/test/DebugInfo/X86/vla-multi.ll Tue Apr 10 07:23:41 2018
@@ -11,37 +11,37 @@
 ; CHECK-NEXT:     DW_AT_type	(0x000000f8 "int")
 ; CHECK-NOT: TAG
 ; CHECK:          DW_TAG_subrange_type
-; CHECK-NEXT:       DW_AT_type	(0x{{.*}}"sizetype")
+; CHECK-NEXT:       DW_AT_type	(0x{{.*}}"__ARRAY_SIZE_TYPE__")
 ; CHECK-NEXT:       DW_AT_count	(0x{{.*}})
 ; CHECK-NOT: TAG
 ; CHECK:          DW_TAG_subrange_type
-; CHECK-NEXT:       DW_AT_type	(0x{{.*}} "sizetype")
+; CHECK-NEXT:       DW_AT_type	(0x{{.*}} "__ARRAY_SIZE_TYPE__")
 ; CHECK-NEXT:       DW_AT_count	(0x{{.*}})
 ; CHECK-NOT: TAG
 ; CHECK:          DW_TAG_subrange_type
-; CHECK-NEXT:       DW_AT_type	(0x{{.*}} "sizetype")
+; CHECK-NEXT:       DW_AT_type	(0x{{.*}} "__ARRAY_SIZE_TYPE__")
 ; CHECK-NEXT:       DW_AT_count	(0x{{.*}})
 ; CHECK-NOT: TAG
 ; CHECK:          DW_TAG_subrange_type
-; CHECK-NEXT:       DW_AT_type	(0x{{.*}} "sizetype")
+; CHECK-NEXT:       DW_AT_type	(0x{{.*}} "__ARRAY_SIZE_TYPE__")
 ; CHECK-NEXT:       DW_AT_count	(0x{{.*}})
 ; CHECK:        DW_TAG_array_type
 ; CHECK-NEXT:     DW_AT_type	(0x000000f8 "int")
 ; CHECK-NOT: TAG
 ; CHECK:          DW_TAG_subrange_type
-; CHECK-NEXT:       DW_AT_type	(0x{{.*}}"sizetype")
+; CHECK-NEXT:       DW_AT_type	(0x{{.*}}"__ARRAY_SIZE_TYPE__")
 ; CHECK-NEXT:       DW_AT_count	(0x{{.*}})
 ; CHECK-NOT: TAG
 ; CHECK:          DW_TAG_subrange_type
-; CHECK-NEXT:       DW_AT_type	(0x{{.*}} "sizetype")
+; CHECK-NEXT:       DW_AT_type	(0x{{.*}} "__ARRAY_SIZE_TYPE__")
 ; CHECK-NEXT:       DW_AT_count	(0x{{.*}})
 ; CHECK-NOT: TAG
 ; CHECK:          DW_TAG_subrange_type
-; CHECK-NEXT:       DW_AT_type	(0x{{.*}} "sizetype")
+; CHECK-NEXT:       DW_AT_type	(0x{{.*}} "__ARRAY_SIZE_TYPE__")
 ; CHECK-NEXT:       DW_AT_count	(0x{{.*}})
 ; CHECK-NOT: TAG
 ; CHECK:          DW_TAG_subrange_type
-; CHECK-NEXT:       DW_AT_type	(0x{{.*}} "sizetype")
+; CHECK-NEXT:       DW_AT_type	(0x{{.*}} "__ARRAY_SIZE_TYPE__")
 ; CHECK-NEXT:       DW_AT_count	(0x{{.*}})
 
 




More information about the llvm-commits mailing list