1; REQUIRES: webassembly-registered-target
2
3; Test case 1 - General options
4
5; test.cpp
6;  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; Compare mode - Logical view.
17; The output shows in view form the 'missing (-), added (+)' elements,
18; giving more context by swapping the reference and target object files.
19
20; RUN: llvm-mc -arch=wasm32 -filetype=obj \
21; RUN:         %p/Inputs/test-clang.s -o %t.test-clang.o
22
23; RUN: llvm-debuginfo-analyzer --attribute=level \
24; RUN:                         --compare=types \
25; RUN:                         --report=view \
26; RUN:                         --print=symbols,types \
27; RUN:                         %t.test-clang.o \
28; RUN:                         %p/../DWARF/Inputs/test-dwarf-gcc.o 2>&1 | \
29; RUN: FileCheck --strict-whitespace -check-prefix=ONE %s
30
31; ONE:      Reference: '{{.*}}test-clang.o'
32; ONE-NEXT: Target:    'test-dwarf-gcc.o'
33; ONE-EMPTY:
34; ONE-NEXT: Logical View:
35; ONE-NEXT:  [000]           {File} '{{.*}}test-clang.o'
36; ONE-EMPTY:
37; ONE-NEXT:  [001]             {CompileUnit} 'test.cpp'
38; ONE-NEXT:  [002]     1         {TypeAlias} 'INTPTR' -> '* const int'
39; ONE-NEXT:  [002]     2         {Function} extern not_inlined 'foo' -> 'int'
40; ONE-NEXT:  [003]                 {Block}
41; ONE-NEXT:  [004]     5             {Variable} 'CONSTANT' -> 'const INTEGER'
42; ONE-NEXT: +[004]     4             {TypeAlias} 'INTEGER' -> 'int'
43; ONE-NEXT:  [003]     2           {Parameter} 'ParamBool' -> 'bool'
44; ONE-NEXT:  [003]     2           {Parameter} 'ParamPtr' -> 'INTPTR'
45; ONE-NEXT:  [003]     2           {Parameter} 'ParamUnsigned' -> 'unsigned int'
46; ONE-NEXT: -[003]     4           {TypeAlias} 'INTEGER' -> 'int'
47
48; Compare mode - Logical elements.
49; The output shows in tabular form the 'missing (-), added (+)' elements,
50; giving more context by swapping the reference and target object files.
51
52; RUN: llvm-debuginfo-analyzer --attribute=level \
53; RUN:                         --compare=types \
54; RUN:                         --report=list \
55; RUN:                         --print=symbols,types,summary \
56; RUN:                         %t.test-clang.o \
57; RUN:                         %p/../DWARF/Inputs/test-dwarf-gcc.o 2>&1 | \
58; RUN: FileCheck --strict-whitespace -check-prefix=TWO %s
59
60; TWO:      Reference: '{{.*}}test-clang.o'
61; TWO-NEXT: Target:    'test-dwarf-gcc.o'
62; TWO-EMPTY:
63; TWO-NEXT: (1) Missing Types:
64; TWO-NEXT: -[003]     4     {TypeAlias} 'INTEGER' -> 'int'
65; TWO-EMPTY:
66; TWO-NEXT: (1) Added Types:
67; TWO-NEXT: +[004]     4     {TypeAlias} 'INTEGER' -> 'int'
68; TWO-EMPTY:
69; TWO-NEXT: ----------------------------------------
70; TWO-NEXT: Element   Expected    Missing      Added
71; TWO-NEXT: ----------------------------------------
72; TWO-NEXT: Scopes           4          0          0
73; TWO-NEXT: Symbols          0          0          0
74; TWO-NEXT: Types            2          1          1
75; TWO-NEXT: Lines            0          0          0
76; TWO-NEXT: ----------------------------------------
77; TWO-NEXT: Total            6          1          1
78
79; Changing the 'Reference' and 'Target' order:
80
81; RUN: llvm-debuginfo-analyzer --attribute=level \
82; RUN:                         --compare=types \
83; RUN:                         --report=list \
84; RUN:                         --print=symbols,types,summary \
85; RUN:                         %p/../DWARF/Inputs/test-dwarf-gcc.o \
86; RUN:                         %t.test-clang.o 2>&1 | \
87; RUN: FileCheck --strict-whitespace -check-prefix=THR %s
88
89; THR:      Reference: 'test-dwarf-gcc.o'
90; THR-NEXT: Target:    '{{.*}}test-clang.o'
91; THR-EMPTY:
92; THR-NEXT: (1) Missing Types:
93; THR-NEXT: -[004]     4     {TypeAlias} 'INTEGER' -> 'int'
94; THR-EMPTY:
95; THR-NEXT: (1) Added Types:
96; THR-NEXT: +[003]     4     {TypeAlias} 'INTEGER' -> 'int'
97; THR-EMPTY:
98; THR-NEXT: ----------------------------------------
99; THR-NEXT: Element   Expected    Missing      Added
100; THR-NEXT: ----------------------------------------
101; THR-NEXT: Scopes           4          0          0
102; THR-NEXT: Symbols          0          0          0
103; THR-NEXT: Types            2          1          1
104; THR-NEXT: Lines            0          0          0
105; THR-NEXT: ----------------------------------------
106; THR-NEXT: Total            6          1          1
107