121 lines · plain
1; REQUIRES: webassembly-registered-target2 3; Test case 1 - General options.4 5; test.cpp6; 1 using INTPTR = const int *;7; 2 int foo(INTPTR ParamPtr, unsigned ParamUnsigned, bool ParamBool) {8; 3 if (ParamBool) {9; 4 typedef int INTEGER;10; 5 const INTEGER CONSTANT = 7;11; 6 return CONSTANT;12; 7 }13; 8 return ParamUnsigned;14; 9 }15 16; Print basic details.17; The following command prints basic details for all the logical elements18; sorted by the debug information internal offset; it includes its lexical19; level and debug info format.20 21; RUN: llvm-mc -arch=wasm32 -filetype=obj \22; RUN: %p/Inputs/test-clang.s -o %t.test-clang.o23 24; RUN: llvm-debuginfo-analyzer --attribute=level,format \25; RUN: --output-sort=offset \26; RUN: --print=scopes,symbols,types,lines,instructions \27; RUN: %t.test-clang.o 2>&1 | \28; RUN: FileCheck --strict-whitespace -check-prefix=ONE %s29 30; RUN: llvm-debuginfo-analyzer --attribute=level,format \31; RUN: --output-sort=offset \32; RUN: --print=elements \33; RUN: %t.test-clang.o 2>&1 | \34; RUN: FileCheck --strict-whitespace -check-prefix=ONE %s35 36; ONE: Logical View:37; ONE-NEXT: [000] {File} '{{.*}}test-clang.o' -> WASM38; ONE-EMPTY:39; ONE-NEXT: [001] {CompileUnit} 'test.cpp'40; ONE-NEXT: [002] 2 {Function} extern not_inlined 'foo' -> 'int'41; ONE-NEXT: [003] 2 {Parameter} 'ParamPtr' -> 'INTPTR'42; ONE-NEXT: [003] 2 {Parameter} 'ParamUnsigned' -> 'unsigned int'43; ONE-NEXT: [003] 2 {Parameter} 'ParamBool' -> 'bool'44; ONE-NEXT: [003] {Block}45; ONE-NEXT: [004] 5 {Variable} 'CONSTANT' -> 'const INTEGER'46; ONE-NEXT: [004] 5 {Line}47; ONE-NEXT: [004] {Code} 'i32.const 7'48; ONE-NEXT: [004] {Code} 'local.set 10'49; ONE-NEXT: [004] {Code} 'local.get 5'50; ONE-NEXT: [004] {Code} 'local.get 10'51; ONE-NEXT: [004] {Code} 'i32.store 12'52; ONE-NEXT: [004] 6 {Line}53; ONE-NEXT: [004] {Code} 'i32.const 7'54; ONE-NEXT: [004] {Code} 'local.set 11'55; ONE-NEXT: [004] {Code} 'local.get 5'56; ONE-NEXT: [004] {Code} 'local.get 11'57; ONE-NEXT: [004] {Code} 'i32.store 28'58; ONE-NEXT: [004] {Code} 'br 1'59; ONE-NEXT: [003] 4 {TypeAlias} 'INTEGER' -> 'int'60; ONE-NEXT: [003] 2 {Line}61; ONE-NEXT: [003] {Code} 'nop'62; ONE-NEXT: [003] {Code} 'end'63; ONE-NEXT: [003] {Code} 'i64.div_s'64; ONE-NEXT: [003] {Code} 'global.get 0'65; ONE-NEXT: [003] {Code} 'local.set 3'66; ONE-NEXT: [003] {Code} 'i32.const 32'67; ONE-NEXT: [003] {Code} 'local.set 4'68; ONE-NEXT: [003] {Code} 'local.get 3'69; ONE-NEXT: [003] {Code} 'local.get 4'70; ONE-NEXT: [003] {Code} 'i32.sub'71; ONE-NEXT: [003] {Code} 'local.set 5'72; ONE-NEXT: [003] {Code} 'local.get 5'73; ONE-NEXT: [003] {Code} 'local.get 0'74; ONE-NEXT: [003] {Code} 'i32.store 24'75; ONE-NEXT: [003] {Code} 'local.get 5'76; ONE-NEXT: [003] {Code} 'local.get 1'77; ONE-NEXT: [003] {Code} 'i32.store 20'78; ONE-NEXT: [003] {Code} 'local.get 2'79; ONE-NEXT: [003] {Code} 'local.set 6'80; ONE-NEXT: [003] {Code} 'local.get 5'81; ONE-NEXT: [003] {Code} 'local.get 6'82; ONE-NEXT: [003] {Code} 'i32.store8 19'83; ONE-NEXT: [003] 3 {Line}84; ONE-NEXT: [003] {Code} 'local.get 5'85; ONE-NEXT: [003] {Code} 'i32.load8_u 19'86; ONE-NEXT: [003] {Code} 'local.set 7'87; ONE-NEXT: [003] 3 {Line}88; ONE-NEXT: [003] {Code} 'i32.const 1'89; ONE-NEXT: [003] {Code} 'local.set 8'90; ONE-NEXT: [003] {Code} 'local.get 7'91; ONE-NEXT: [003] {Code} 'local.get 8'92; ONE-NEXT: [003] {Code} 'i32.and'93; ONE-NEXT: [003] {Code} 'local.set 9'94; ONE-NEXT: [003] {Code} 'block'95; ONE-NEXT: [003] {Code} 'block'96; ONE-NEXT: [003] {Code} 'local.get 9'97; ONE-NEXT: [003] {Code} 'i32.eqz'98; ONE-NEXT: [003] {Code} 'br_if 0'99; ONE-NEXT: [003] - {Line}100; ONE-NEXT: [003] {Code} 'end'101; ONE-NEXT: [003] 8 {Line}102; ONE-NEXT: [003] {Code} 'local.get 5'103; ONE-NEXT: [003] {Code} 'i32.load 20'104; ONE-NEXT: [003] {Code} 'local.set 12'105; ONE-NEXT: [003] 8 {Line}106; ONE-NEXT: [003] {Code} 'local.get 5'107; ONE-NEXT: [003] {Code} 'local.get 12'108; ONE-NEXT: [003] {Code} 'i32.store 28'109; ONE-NEXT: [003] - {Line}110; ONE-NEXT: [003] {Code} 'end'111; ONE-NEXT: [003] 9 {Line}112; ONE-NEXT: [003] {Code} 'local.get 5'113; ONE-NEXT: [003] {Code} 'i32.load 28'114; ONE-NEXT: [003] {Code} 'local.set 13'115; ONE-NEXT: [003] {Code} 'local.get 13'116; ONE-NEXT: [003] {Code} 'return'117; ONE-NEXT: [003] {Code} 'end'118; ONE-NEXT: [002] 1 {TypeAlias} 'INTPTR' -> '* const int'119; ONE-NEXT: [002] 9 {Line}120; ONE-NEXT: [002] {Code} 'unreachable'121