[PATCH] D86044: [llvm-dwarfdump][test] Add a --statistics test for a DW_AT_artificial variable

Fangrui Song via Phabricator via llvm-commits llvm-commits at lists.llvm.org
Mon Aug 17 12:07:35 PDT 2020


MaskRay updated this revision to Diff 286103.
MaskRay added a comment.

Simply the test to `void T::empty() {}`


Repository:
  rG LLVM Github Monorepo

CHANGES SINCE LAST ACTION
  https://reviews.llvm.org/D86044/new/

https://reviews.llvm.org/D86044

Files:
  llvm/test/tools/llvm-dwarfdump/X86/statistics.ll


Index: llvm/test/tools/llvm-dwarfdump/X86/statistics.ll
===================================================================
--- llvm/test/tools/llvm-dwarfdump/X86/statistics.ll
+++ llvm/test/tools/llvm-dwarfdump/X86/statistics.ll
@@ -23,6 +23,11 @@
 ;
 ; int boo(int, int) {}
 
+; struct T {
+;   void empty();
+; };
+; void T::empty() {}
+
 ; Following variables/arguments/members should be counted:
 ;     - GlobalConst,
 ;     - Global,
@@ -30,16 +35,17 @@
 ;     - square::i,
 ;     - cube::i, cube::squared
 ;     - boo::1, boo::2
+;     - this in T::empty()
 ; Skipped entities:
 ;     - declaration of test::a,
 ;     - non-constant member S:fn,
 ;     - arguments of S:fn.
 
-; CHECK: "#unique source variables":9
+; CHECK: "#unique source variables":10
 ; +1 extra inline i.
-; CHECK: "#source variables":10
+; CHECK: "#source variables":11
 ; -1 square::i
-; CHECK: "#source variables with location":9
+; CHECK: "#source variables with location":10
 ; CHECK: "sum_all_local_vars(#bytes in parent scope)":[[BYTES:[0-9]+]]
 ; Because of the dbg.value in the middle of the function, the pc range coverage
 ; must be below 100%.
@@ -48,11 +54,11 @@
 ; CHECK: "sum_all_local_vars(#bytes in parent scope covered by DW_AT_location)":
 ; CHECK: "#bytes witin functions":[[FUNCSIZE:[0-9]+]]
 ; CHECK: "#bytes witin inlined functions":[[INLINESIZE:[0-9]+]]
-; CHECK: "#bytes in __debug_info":380
+; CHECK: "#bytes in __debug_info":459
 ; CHECK: "#bytes in __debug_loc":35
-; CHECK: "#bytes in __debug_abbrev":303
-; CHECK: "#bytes in __debug_line":117
-; CHECK: "#bytes in __debug_str":204
+; CHECK: "#bytes in __debug_abbrev":384
+; CHECK: "#bytes in __debug_line":126
+; CHECK: "#bytes in __debug_str":231
 
 ; ModuleID = '/tmp/quality.cpp'
 source_filename = "/tmp/quality.cpp"
@@ -118,6 +124,17 @@
   ret i32 0, !dbg !58
 }
 
+%struct.T = type { i8 }
+
+define void @_ZN1T5emptyEv(%struct.T* %this) #2 !dbg !59 {
+entry:
+  %this.addr = alloca %struct.T*, align 8
+  store %struct.T* %this, %struct.T** %this.addr, align 8
+  call void @llvm.dbg.declare(metadata %struct.T** %this.addr, metadata !67, metadata !DIExpression()), !dbg !69
+  %this1 = load %struct.T*, %struct.T** %this.addr, align 8
+  ret void, !dbg !70
+}
+
 attributes #0 = { alwaysinline nounwind ssp uwtable }
 attributes #1 = { nounwind readnone speculatable }
 attributes #2 = { noinline nounwind optnone ssp uwtable }
@@ -185,3 +202,16 @@
 !56 = !DILocation(line: 10, column: 12, scope: !52)
 !57 = !DILocalVariable(arg: 2, scope: !52, file: !3, line: 10, type: !8)
 !58 = !DILocation(line: 10, column: 17, scope: !52)
+
+!59 = distinct !DISubprogram(name: "empty", linkageName: "_ZN1T5emptyEv", scope: !60, file: !3, line: 25, type: !63, scopeLine: 25, flags: DIFlagPrototyped, spFlags: DISPFlagDefinition, unit: !2, declaration: !62, retainedNodes: !4)
+!60 = distinct !DICompositeType(tag: DW_TAG_structure_type, name: "T", file: !3, line: 22, size: 8, flags: DIFlagTypePassByValue, elements: !61, identifier: "_ZTS1T")
+!61 = !{!62}
+!62 = !DISubprogram(name: "empty", linkageName: "_ZN1T5emptyEv", scope: !60, file: !3, line: 23, type: !63, scopeLine: 23, flags: DIFlagPrototyped, spFlags: 0)
+!63 = !DISubroutineType(types: !64)
+!64 = !{!65, !66}
+!65 = !DIDerivedType(tag: DW_TAG_pointer_type, baseType: null, size: 64)
+!66 = !DIDerivedType(tag: DW_TAG_pointer_type, baseType: !60, size: 64, flags: DIFlagArtificial | DIFlagObjectPointer)
+!67 = !DILocalVariable(name: "this", arg: 1, scope: !59, type: !68, flags: DIFlagArtificial | DIFlagObjectPointer)
+!68 = !DIDerivedType(tag: DW_TAG_pointer_type, baseType: !60, size: 64)
+!69 = !DILocation(line: 0, scope: !59)
+!70 = !DILocation(line: 25, column: 19, scope: !59)


-------------- next part --------------
A non-text attachment was scrubbed...
Name: D86044.286103.patch
Type: text/x-patch
Size: 3707 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/llvm-commits/attachments/20200817/86ca492d/attachment.bin>


More information about the llvm-commits mailing list