1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158
|
; REQUIRES: webassembly-registered-target
; Test case 6 - Full logical view
; test.cpp
; 1 using INTPTR = const int *;
; 2 int foo(INTPTR ParamPtr, unsigned ParamUnsigned, bool ParamBool) {
; 3 if (ParamBool) {
; 4 typedef int INTEGER;
; 5 const INTEGER CONSTANT = 7;
; 6 return CONSTANT;
; 7 }
; 8 return ParamUnsigned;
; 9 }
; Print low level details.
; The following command prints low level information that includes
; offsets within the debug information section, debug location
; operands, linkage names, etc.
; RUN: llvm-mc -arch=wasm32 -filetype=obj \
; RUN: %p/Inputs/test-clang.s -o %t.test-clang.o
; RUN: llvm-debuginfo-analyzer --attribute=all \
; RUN: --print=all \
; RUN: %t.test-clang.o 2>&1 | \
; RUN: FileCheck --strict-whitespace -check-prefix=ONE %s
; ONE: Logical View:
; ONE-NEXT: [0x0000000000][000] {File} '{{.*}}test-clang.o' -> WASM
; ONE-EMPTY:
; ONE-NEXT: [0x000000000b][001] {CompileUnit} 'test.cpp'
; ONE-NEXT: [0x000000000b][002] {Producer} 'clang version 19{{.*}}'
; ONE-NEXT: {Directory} '{{.*}}/general'
; ONE-NEXT: {File} 'test.cpp'
; ONE-NEXT: {Public} 'foo' [0x0000000002:0x000000007f]
; ONE-NEXT: [0x000000000b][002] {Range} Lines 2:9 [0x0000000002:0x000000007f]
; ONE-NEXT: [0x00000000b3][002] {BaseType} 'bool'
; ONE-NEXT: [0x0000000090][002] {BaseType} 'int'
; ONE-NEXT: [0x00000000ac][002] {BaseType} 'unsigned int'
; ONE-EMPTY:
; ONE-NEXT: [0x0000000097][002] {Source} '{{.*}}general/test.cpp'
; ONE-NEXT: [0x0000000097][002] 1 {TypeAlias} 'INTPTR' -> [0x00000000a2]'* const int'
; ONE-NEXT: [0x0000000026][002] 2 {Function} extern not_inlined 'foo' -> [0x0000000090]'int'
; ONE-NEXT: [0x0000000026][003] {Range} Lines 2:9 [0x0000000002:0x000000007f]
; ONE-NEXT: [0x0000000026][003] {Linkage} 0x3 '_Z3fooPKijb'
; ONE-NEXT: [0x000000006c][003] {Block}
; ONE-NEXT: [0x000000006c][004] {Range} Lines 5:0 [0x000000004c:0x0000000064]
; ONE-NEXT: [0x0000000075][004] 5 {Variable} 'CONSTANT' -> [0x00000000ba]'const INTEGER'
; ONE-NEXT: [0x0000000075][005] {Coverage} 100.00%
; ONE-NEXT: [0x0000000076][005] {Location}
; ONE-NEXT: [0x0000000076][006] {Entry} fbreg 12
; ONE-NEXT: [0x000000004c][004] 5 {Line} {NewStatement} '{{.*}}/general/test.cpp'
; ONE-NEXT: [0x000000004c][004] {Code} 'i32.const 7'
; ONE-NEXT: [0x000000004e][004] {Code} 'local.set 10'
; ONE-NEXT: [0x0000000050][004] {Code} 'local.get 5'
; ONE-NEXT: [0x0000000052][004] {Code} 'local.get 10'
; ONE-NEXT: [0x0000000054][004] {Code} 'i32.store 12'
; ONE-NEXT: [0x0000000057][004] 6 {Line} {NewStatement} '{{.*}}/general/test.cpp'
; ONE-NEXT: [0x0000000057][004] {Code} 'i32.const 7'
; ONE-NEXT: [0x0000000059][004] {Code} 'local.set 11'
; ONE-NEXT: [0x000000005b][004] {Code} 'local.get 5'
; ONE-NEXT: [0x000000005d][004] {Code} 'local.get 11'
; ONE-NEXT: [0x000000005f][004] {Code} 'i32.store 28'
; ONE-NEXT: [0x0000000062][004] {Code} 'br 1'
; ONE-NEXT: [0x0000000064][004] 0 {Line} '{{.*}}/general/test.cpp'
; ONE-NEXT: [0x0000000064][004] {Code} 'end'
; ONE-NEXT: [0x000000005e][003] 2 {Parameter} 'ParamBool' -> [0x00000000b3]'bool'
; ONE-NEXT: [0x000000005e][004] {Coverage} 100.00%
; ONE-NEXT: [0x000000005f][004] {Location}
; ONE-NEXT: [0x000000005f][005] {Entry} fbreg 19
; ONE-NEXT: [0x0000000042][003] 2 {Parameter} 'ParamPtr' -> [0x0000000097]'INTPTR'
; ONE-NEXT: [0x0000000042][004] {Coverage} 100.00%
; ONE-NEXT: [0x0000000043][004] {Location}
; ONE-NEXT: [0x0000000043][005] {Entry} fbreg 24
; ONE-NEXT: [0x0000000050][003] 2 {Parameter} 'ParamUnsigned' -> [0x00000000ac]'unsigned int'
; ONE-NEXT: [0x0000000050][004] {Coverage} 100.00%
; ONE-NEXT: [0x0000000051][004] {Location}
; ONE-NEXT: [0x0000000051][005] {Entry} fbreg 20
; ONE-NEXT: [0x0000000084][003] 4 {TypeAlias} 'INTEGER' -> [0x0000000090]'int'
; ONE-NEXT: [0x0000000002][003] 2 {Line} {NewStatement} '{{.*}}/general/test.cpp'
; ONE-NEXT: [0x0000000002][003] {Code} 'nop'
; ONE-NEXT: [0x0000000003][003] {Code} 'end'
; ONE-NEXT: [0x0000000004][003] {Code} 'i64.div_s'
; ONE-NEXT: [0x0000000005][003] {Code} 'global.get 0'
; ONE-NEXT: [0x000000000b][003] {Code} 'local.set 3'
; ONE-NEXT: [0x000000000d][003] {Code} 'i32.const 32'
; ONE-NEXT: [0x000000000f][003] {Code} 'local.set 4'
; ONE-NEXT: [0x0000000011][003] {Code} 'local.get 3'
; ONE-NEXT: [0x0000000013][003] {Code} 'local.get 4'
; ONE-NEXT: [0x0000000015][003] {Code} 'i32.sub'
; ONE-NEXT: [0x0000000016][003] {Code} 'local.set 5'
; ONE-NEXT: [0x0000000018][003] {Code} 'local.get 5'
; ONE-NEXT: [0x000000001a][003] {Code} 'local.get 0'
; ONE-NEXT: [0x000000001c][003] {Code} 'i32.store 24'
; ONE-NEXT: [0x000000001f][003] {Code} 'local.get 5'
; ONE-NEXT: [0x0000000021][003] {Code} 'local.get 1'
; ONE-NEXT: [0x0000000023][003] {Code} 'i32.store 20'
; ONE-NEXT: [0x0000000026][003] {Code} 'local.get 2'
; ONE-NEXT: [0x0000000028][003] {Code} 'local.set 6'
; ONE-NEXT: [0x000000002a][003] {Code} 'local.get 5'
; ONE-NEXT: [0x000000002c][003] {Code} 'local.get 6'
; ONE-NEXT: [0x000000002e][003] {Code} 'i32.store8 19'
; ONE-NEXT: [0x0000000031][003] 3 {Line} {NewStatement} {PrologueEnd} '{{.*}}/general/test.cpp'
; ONE-NEXT: [0x0000000031][003] {Code} 'local.get 5'
; ONE-NEXT: [0x0000000033][003] {Code} 'i32.load8_u 19'
; ONE-NEXT: [0x0000000036][003] {Code} 'local.set 7'
; ONE-NEXT: [0x0000000038][003] 3 {Line} '{{.*}}/general/test.cpp'
; ONE-NEXT: [0x0000000038][003] {Code} 'i32.const 1'
; ONE-NEXT: [0x000000003a][003] {Code} 'local.set 8'
; ONE-NEXT: [0x000000003c][003] {Code} 'local.get 7'
; ONE-NEXT: [0x000000003e][003] {Code} 'local.get 8'
; ONE-NEXT: [0x0000000040][003] {Code} 'i32.and'
; ONE-NEXT: [0x0000000041][003] {Code} 'local.set 9'
; ONE-NEXT: [0x0000000043][003] {Code} 'block'
; ONE-NEXT: [0x0000000045][003] {Code} 'block'
; ONE-NEXT: [0x0000000047][003] {Code} 'local.get 9'
; ONE-NEXT: [0x0000000049][003] {Code} 'i32.eqz'
; ONE-NEXT: [0x000000004a][003] {Code} 'br_if 0'
; ONE-NEXT: [0x0000000065][003] 8 {Line} {NewStatement} '{{.*}}/general/test.cpp'
; ONE-NEXT: [0x0000000065][003] {Code} 'local.get 5'
; ONE-NEXT: [0x0000000067][003] {Code} 'i32.load 20'
; ONE-NEXT: [0x000000006a][003] {Code} 'local.set 12'
; ONE-NEXT: [0x000000006c][003] 8 {Line} '{{.*}}/general/test.cpp'
; ONE-NEXT: [0x000000006c][003] {Code} 'local.get 5'
; ONE-NEXT: [0x000000006e][003] {Code} 'local.get 12'
; ONE-NEXT: [0x0000000070][003] {Code} 'i32.store 28'
; ONE-NEXT: [0x0000000073][003] 0 {Line} '{{.*}}/general/test.cpp'
; ONE-NEXT: [0x0000000073][003] {Code} 'end'
; ONE-NEXT: [0x0000000074][003] 9 {Line} {NewStatement} '{{.*}}/general/test.cpp'
; ONE-NEXT: [0x0000000074][003] {Code} 'local.get 5'
; ONE-NEXT: [0x0000000076][003] {Code} 'i32.load 28'
; ONE-NEXT: [0x0000000079][003] {Code} 'local.set 13'
; ONE-NEXT: [0x000000007b][003] {Code} 'local.get 13'
; ONE-NEXT: [0x000000007d][003] {Code} 'return'
; ONE-NEXT: [0x000000007e][003] {Code} 'end'
; ONE-NEXT: [0x000000007f][003] 9 {Line} {NewStatement} {EndSequence} '{{.*}}/general/test.cpp'
; ONE-NEXT: [0x000000007f][003] {Code} 'unreachable'
; ONE-EMPTY:
; ONE-NEXT: -----------------------------
; ONE-NEXT: Element Total Printed
; ONE-NEXT: -----------------------------
; ONE-NEXT: Scopes 3 3
; ONE-NEXT: Symbols 4 4
; ONE-NEXT: Types 5 5
; ONE-NEXT: Lines 73 73
; ONE-NEXT: -----------------------------
; ONE-NEXT: Total 85 85
; ONE-EMPTY:
; ONE-NEXT: Scope Sizes:
; ONE-NEXT: 180 (100.00%) : [0x000000000b][001] {CompileUnit} 'test.cpp'
; ONE-NEXT: 105 ( 58.33%) : [0x0000000026][002] 2 {Function} extern not_inlined 'foo' -> [0x0000000090]'int'
; ONE-NEXT: 23 ( 12.78%) : [0x000000006c][003] {Block}
; ONE-EMPTY:
; ONE-NEXT: Totals by lexical level:
; ONE-NEXT: [001]: 180 (100.00%)
; ONE-NEXT: [002]: 105 ( 58.33%)
; ONE-NEXT: [003]: 23 ( 12.78%)
|