|
1 | 1 | ; Ensure that IR count remarks in the legacy pass manager work.
|
2 | 2 | ; What this test should check for:
|
3 |
| -; * Positive, nonzero sizes before/after |
| 3 | +; * Positive, nonzero sizes before/after for whole-module remarks |
| 4 | +; (It's okay to have nonzero sizes in per-function remarks, since a function |
| 5 | +; can be created/destroyed by a pass.) |
4 | 6 | ; * Nonzero deltas
|
5 | 7 | ; * Sizes are being tracked properly across multiple remarks. E.g, if we have
|
6 | 8 | ; original_count_1, final_count_1, and
|
|
20 | 22 | ; CGSCC-SAME: IR instruction count changed from
|
21 | 23 | ; CGSCC-SAME: [[ORIG:[1-9][0-9]*]] to [[FINAL:[1-9][0-9]*]];
|
22 | 24 | ; CGSCC-SAME: Delta: [[DELTA:-?[1-9][0-9]*]]
|
| 25 | +; CGSCC-NEXT: remark: <unknown>:0:0: Function Integration/Inlining: |
| 26 | +; CGSCC-SAME: Function: bar: IR instruction count changed from |
| 27 | +; CGSCC-SAME: [[ORIGFN:[1-9][0-9]*]] to [[FINALFN:[0-9][0-9]*]]; |
| 28 | +; CGSCC-SAME: Delta: [[DELTAFN:-?[1-9][0-9]*]] |
23 | 29 | ; CGSCC-NEXT: ---
|
24 | 30 | ; CGSCC-DAG: !Analysis
|
25 | 31 | ; CGSCC-NEXT: Pass: size-info
|
26 | 32 | ; CGSCC-NEXT: Name: IRSizeChange
|
27 | 33 | ; CGSCC-NEXT: Function:
|
28 |
| -; CGSCC-NEXT: Args: |
| 34 | +; CGSCC-NEXT: Args: |
29 | 35 | ; CGSCC-NEXT: - Pass: Function Integration/Inlining
|
30 | 36 | ; CGSCC-NEXT: - String: ': IR instruction count changed from '
|
31 | 37 | ; CGSCC-NEXT: - IRInstrsBefore: '[[ORIG]]'
|
32 | 38 | ; CGSCC-NEXT: - String: ' to '
|
33 | 39 | ; CGSCC-NEXT: - IRInstrsAfter: '[[FINAL]]'
|
34 | 40 | ; CGSCC-NEXT: - String: '; Delta: '
|
35 | 41 | ; CGSCC-NEXT: - DeltaInstrCount: '[[DELTA]]'
|
| 42 | +; CGSCC-DAG: --- !Analysis |
| 43 | +; CGSCC-NEXT: Pass: size-info |
| 44 | +; CGSCC-NEXT: Name: FunctionIRSizeChange |
| 45 | +; CGSCC-NEXT: Function: |
| 46 | +; CGSCC-NEXT: Args: |
| 47 | +; CGSCC-NEXT: - Pass: Function Integration/Inlining |
| 48 | +; CGSCC-NEXT: - String: ': Function: ' |
| 49 | +; CGSCC-NEXT: - Function: bar |
| 50 | +; CGSCC-NEXT: - String: ': IR instruction count changed from ' |
| 51 | +; CGSCC-NEXT: - IRInstrsBefore: '[[ORIGFN]]' |
| 52 | +; CGSCC-NEXT: - String: ' to ' |
| 53 | +; CGSCC-NEXT: - IRInstrsAfter: '[[FINALFN]]' |
| 54 | +; CGSCC-NEXT: - String: '; Delta: ' |
| 55 | +; CGSCC-NEXT: - DeltaInstrCount: '[[DELTAFN]]' |
| 56 | +; CGSCC-NEXT: ... |
36 | 57 |
|
37 | 58 | ; RUN: opt < %s -instcombine -pass-remarks-analysis='size-info' \
|
38 | 59 | ; RUN:-pass-remarks-output=%t.yaml -S -o /dev/null 2> %t; \
|
39 | 60 | ; RUN: cat %t %t.yaml | FileCheck %s -check-prefix=FUNC
|
40 | 61 | ; FUNC: remark: <unknown>:0:0: Combine redundant instructions:
|
41 | 62 | ; FUNC-SAME: IR instruction count changed from
|
42 |
| -; FUNC-SAME: [[SIZE1:[1-9][0-9]*]] to [[SIZE2:[1-9][0-9]*]]; |
| 63 | +; FUNC-SAME: [[SIZE1:[1-9][0-9]*]] to [[SIZE2:[0-9][0-9]*]]; |
43 | 64 | ; FUNC-SAME: Delta: [[DELTA1:-?[1-9][0-9]*]]
|
| 65 | +; FUNC-NEXT: remark: <unknown>:0:0: Combine redundant instructions: Function: |
| 66 | +; FUNC-SAME: foo: IR instruction count changed from |
| 67 | +; FUNC-SAME: [[FOOSIZE1:[1-9][0-9]*]] to [[FOOSIZE2:[0-9][0-9]*]]; |
| 68 | +; FUNC-SAME: Delta: [[DELTAFOO:-?[1-9][0-9]*]] |
44 | 69 | ; FUNC-NEXT: remark: <unknown>:0:0: Combine redundant instructions:
|
45 | 70 | ; FUNC-SAME: IR instruction count changed from
|
46 | 71 | ; FUNC-SAME: [[SIZE2]] to [[SIZE3:[1-9][0-9]*]];
|
47 | 72 | ; FUNC-SAME: Delta: [[DELTA2:-?[1-9][0-9]*]]
|
| 73 | +; FUNC-NEXT: remark: <unknown>:0:0: Combine redundant instructions: Function: |
| 74 | +; FUNC-SAME: bar: IR instruction count changed from |
| 75 | +; FUNC-SAME: [[BARSIZE1:[1-9][0-9]*]] to [[BARSIZE2:[0-9][0-9]*]]; |
| 76 | +; FUNC-SAME: Delta: [[DELTABAR:-?[1-9][0-9]*]] |
48 | 77 | ; FUNC-NEXT: ---
|
49 | 78 | ; FUNC-DAG: !Analysis
|
50 | 79 | ; FUNC-NEXT: Pass: size-info
|
51 | 80 | ; FUNC-NEXT: Name: IRSizeChange
|
52 | 81 | ; FUNC-NEXT: Function:
|
53 |
| -; FUNC-NEXT: Args: |
| 82 | +; FUNC-NEXT: Args: |
54 | 83 | ; FUNC-NEXT: - Pass: Combine redundant instructions
|
55 | 84 | ; FUNC-NEXT: - String: ': IR instruction count changed from '
|
56 | 85 | ; FUNC-NEXT: - IRInstrsBefore: '[[SIZE1]]'
|
57 | 86 | ; FUNC-NEXT: - String: ' to '
|
58 | 87 | ; FUNC-NEXT: - IRInstrsAfter: '[[SIZE2]]'
|
59 | 88 | ; FUNC-NEXT: - String: '; Delta: '
|
60 | 89 | ; FUNC-NEXT: - DeltaInstrCount: '[[DELTA1]]'
|
| 90 | +; FUNC-DAG: --- !Analysis |
| 91 | +; FUNC-NEXT: Pass: size-info |
| 92 | +; FUNC-NEXT: Name: FunctionIRSizeChange |
| 93 | +; FUNC-NEXT: Function: |
| 94 | +; FUNC-NEXT: Args: |
| 95 | +; FUNC-NEXT: - Pass: Combine redundant instructions |
| 96 | +; FUNC-NEXT: - String: ': Function: ' |
| 97 | +; FUNC-NEXT: - Function: foo |
| 98 | +; FUNC-NEXT: - String: ': IR instruction count changed from ' |
| 99 | +; FUNC-NEXT: - IRInstrsBefore: '[[FOOSIZE1]]' |
| 100 | +; FUNC-NEXT: - String: ' to ' |
| 101 | +; FUNC-NEXT: - IRInstrsAfter: '[[FOOSIZE2]]' |
| 102 | +; FUNC-NEXT: - String: '; Delta: ' |
| 103 | +; FUNC-NEXT: - DeltaInstrCount: '[[DELTAFOO]]' |
61 | 104 | ; FUNC: --- !Analysis
|
62 | 105 | ; FUNC-NEXT: Pass: size-info
|
63 | 106 | ; FUNC-NEXT: Name: IRSizeChange
|
64 | 107 | ; FUNC-NEXT: Function:
|
65 |
| -; FUNC-NEXT: Args: |
| 108 | +; FUNC-NEXT: Args: |
66 | 109 | ; FUNC-NEXT: - Pass: Combine redundant instructions
|
67 | 110 | ; FUNC-NEXT: - String: ': IR instruction count changed from '
|
68 | 111 | ; FUNC-NEXT: - IRInstrsBefore: '[[SIZE2]]'
|
69 | 112 | ; FUNC-NEXT: - String: ' to '
|
70 | 113 | ; FUNC-NEXT: - IRInstrsAfter: '[[SIZE3]]'
|
71 | 114 | ; FUNC-NEXT: - String: '; Delta: '
|
72 | 115 | ; FUNC-NEXT: - DeltaInstrCount: '[[DELTA2]]'
|
| 116 | +; FUNC-DAG: --- !Analysis |
| 117 | +; FUNC-NEXT: Pass: size-info |
| 118 | +; FUNC-NEXT: Name: FunctionIRSizeChange |
| 119 | +; FUNC-NEXT: Function: |
| 120 | +; FUNC-NEXT: Args: |
| 121 | +; FUNC-NEXT: - Pass: Combine redundant instructions |
| 122 | +; FUNC-NEXT: - String: ': Function: ' |
| 123 | +; FUNC-NEXT: - Function: bar |
| 124 | +; FUNC-NEXT: - String: ': IR instruction count changed from ' |
| 125 | +; FUNC-NEXT: - IRInstrsBefore: '[[BARSIZE1]]' |
| 126 | +; FUNC-NEXT: - String: ' to ' |
| 127 | +; FUNC-NEXT: - IRInstrsAfter: '[[BARSIZE2]]' |
| 128 | +; FUNC-NEXT: - String: '; Delta: ' |
| 129 | +; FUNC-NEXT: - DeltaInstrCount: '[[DELTABAR]]' |
73 | 130 |
|
74 | 131 | ; RUN: opt < %s -globaldce -pass-remarks-analysis='size-info' \
|
75 | 132 | ; RUN: -pass-remarks-output=%t.yaml -S -o /dev/null 2> %t; \
|
|
79 | 136 | ; MODULE-SAME: IR instruction count changed from
|
80 | 137 | ; MODULE-SAME: [[ORIG:[1-9][0-9]*]] to [[FINAL:[1-9][0-9]*]];
|
81 | 138 | ; MODULE-SAME: Delta: [[DELTA:-?[1-9][0-9]*]]
|
| 139 | +; MODULE-NEXT: remark: |
| 140 | +; MODULE-SAME: Dead Global Elimination: Function: pluto: |
| 141 | +; MODULE-SAME: IR instruction count changed from [[ORIGFN:[1-9][0-9]*]] to |
| 142 | +; MODULE-SAME: [[FINALFN:[0-9][0-9]*]]; Delta: [[DELTAFN:-?[1-9][0-9]*]] |
82 | 143 | ; MODULE-NEXT: ---
|
83 | 144 | ; MODULE-DAG: !Analysis
|
84 | 145 | ; MODULE-NEXT: Pass: size-info
|
85 | 146 | ; MODULE-NEXT: Name: IRSizeChange
|
86 | 147 | ; MODULE-NEXT: Function:
|
87 |
| -; MODULE-NEXT: Args: |
| 148 | +; MODULE-NEXT: Args: |
88 | 149 | ; MODULE-NEXT: - Pass: Dead Global Elimination
|
89 | 150 | ; MODULE-NEXT: - String: ': IR instruction count changed from '
|
90 | 151 | ; MODULE-NEXT: - IRInstrsBefore: '[[ORIG]]'
|
91 | 152 | ; MODULE-NEXT: - String: ' to '
|
92 | 153 | ; MODULE-NEXT: - IRInstrsAfter: '[[FINAL]]'
|
93 | 154 | ; MODULE-NEXT: - String: '; Delta: '
|
94 | 155 | ; MODULE-NEXT: - DeltaInstrCount: '[[DELTA]]'
|
| 156 | +; MODULE-DAG: --- !Analysis |
| 157 | +; MODULE-NEXT: Pass: size-info |
| 158 | +; MODULE-NEXT: Name: FunctionIRSizeChange |
| 159 | +; MODULE-NEXT: Function: |
| 160 | +; MODULE-NEXT: Args: |
| 161 | +; MODULE-NEXT: - Pass: Dead Global Elimination |
| 162 | +; MODULE-NEXT: - String: ': Function: ' |
| 163 | +; MODULE-NEXT: - Function: pluto |
| 164 | +; MODULE-NEXT: - String: ': IR instruction count changed from ' |
| 165 | +; MODULE-NEXT: - IRInstrsBefore: '[[ORIGFN]]' |
| 166 | +; MODULE-NEXT: - String: ' to ' |
| 167 | +; MODULE-NEXT: - IRInstrsAfter: '[[FINALFN]]' |
| 168 | +; MODULE-NEXT: - String: '; Delta: ' |
| 169 | +; MODULE-NEXT: - DeltaInstrCount: '[[DELTAFN]]' |
95 | 170 |
|
96 | 171 | ; RUN: opt < %s -dce -pass-remarks-analysis='size-info' \
|
97 | 172 | ; RUN: -pass-remarks-output=%t.yaml -S -o /dev/null 2> %t; \
|
|
100 | 175 | ; BB-SAME: IR instruction count changed from
|
101 | 176 | ; BB-SAME: [[ORIG:[1-9][0-9]*]] to [[FINAL:[1-9][0-9]*]];
|
102 | 177 | ; BB-SAME: Delta: [[DELTA:-?[1-9][0-9]*]]
|
| 178 | +; BB-NEXT: remark: <unknown>:0:0: Dead Code Elimination: Function: bar: |
| 179 | +; BB-SAME: IR instruction count changed from [[ORIGFN:[1-9][0-9]*]] to |
| 180 | +; BB-SAME: [[FINALFN:[0-9][0-9]*]]; Delta: [[DELTAFN:-?[1-9][0-9]*]] |
103 | 181 | ; BB-NEXT: ---
|
104 | 182 | ; BB-DAG: !Analysis
|
105 | 183 | ; BB-NEXT: Pass: size-info
|
|
113 | 191 | ; BB-NEXT: - IRInstrsAfter: '[[FINAL]]'
|
114 | 192 | ; BB-NEXT: - String: '; Delta: '
|
115 | 193 | ; BB-NEXT: - DeltaInstrCount: '[[DELTA]]'
|
| 194 | +; BB-DAG: --- !Analysis |
| 195 | +; BB-NEXT: Pass: size-info |
| 196 | +; BB-NEXT: Name: FunctionIRSizeChange |
| 197 | +; BB-NEXT: Function: |
| 198 | +; BB-NEXT: Args: |
| 199 | +; BB-NEXT: - Pass: Dead Code Elimination |
| 200 | +; BB-NEXT: - String: ': Function: ' |
| 201 | +; BB-NEXT: - Function: bar |
| 202 | +; BB-NEXT: - String: ': IR instruction count changed from ' |
| 203 | +; BB-NEXT: - IRInstrsBefore: '[[ORIGFN]]' |
| 204 | +; BB-NEXT: - String: ' to ' |
| 205 | +; BB-NEXT: - IRInstrsAfter: '[[FINALFN]]' |
| 206 | +; BB-NEXT: - String: '; Delta: ' |
| 207 | +; BB-NEXT: - DeltaInstrCount: '[[DELTAFN]]' |
116 | 208 |
|
117 | 209 | ; RUN: opt < %s -loop-unroll -pass-remarks-analysis='size-info' \
|
118 | 210 | ; RUN: -pass-remarks-output=%t.yaml -S -o /dev/null 2> %t; \
|
|
121 | 213 | ; LOOP-SAME: IR instruction count changed from
|
122 | 214 | ; LOOP-SAME: [[ORIG:[1-9][0-9]*]] to [[FINAL:[1-9][0-9]*]];
|
123 | 215 | ; LOOP-SAME: Delta: [[DELTA:-?[1-9][0-9]*]]
|
| 216 | +; LOOP-NEXT: remark: <unknown>:0:0: Unroll loops: Function: bar: |
| 217 | +; LOOP-SAME: IR instruction count changed from [[ORIGFN:[1-9][0-9]*]] |
| 218 | +; LOOP-SAME: to [[FINALFN:[0-9][0-9]*]]; |
| 219 | +; Since bar is the only function containing a loop, its delta must be identical |
| 220 | +; to the whole module remark's delta. |
| 221 | +; LOOP-SAME: Delta: [[DELTA]] |
124 | 222 | ; LOOP-NEXT: ---
|
125 | 223 | ; LOOP-DAG: !Analysis
|
126 | 224 | ; LOOP-NEXT: Pass: size-info
|
127 | 225 | ; LOOP-NEXT: Name: IRSizeChange
|
128 | 226 | ; LOOP-NEXT: Function:
|
129 |
| -; LOOP-NEXT: Args: |
| 227 | +; LOOP-NEXT: Args: |
130 | 228 | ; LOOP-DAG: - Pass: Unroll loops
|
131 | 229 | ; LOOP-NEXT: - String: ': IR instruction count changed from '
|
132 | 230 | ; LOOP-NEXT: - IRInstrsBefore: '[[ORIG]]'
|
133 | 231 | ; LOOP-NEXT: - String: ' to '
|
134 | 232 | ; LOOP-NEXT: - IRInstrsAfter: '[[FINAL]]'
|
135 | 233 | ; LOOP-NEXT: - String: '; Delta: '
|
136 | 234 | ; LOOP-NEXT: - DeltaInstrCount: '[[DELTA]]'
|
| 235 | +; LOOP-DAG: --- !Analysis |
| 236 | +; LOOP-NEXT: Pass: size-info |
| 237 | +; LOOP-NEXT: Name: FunctionIRSizeChange |
| 238 | +; LOOP-NEXT: Function: |
| 239 | +; LOOP-NEXT: Args: |
| 240 | +; LOOP-NEXT: - Pass: Unroll loops |
| 241 | +; LOOP-NEXT: - String: ': Function: ' |
| 242 | +; LOOP-NEXT: - Function: bar |
| 243 | +; LOOP-NEXT: - String: ': IR instruction count changed from ' |
| 244 | +; LOOP-NEXT: - IRInstrsBefore: '[[ORIGFN]]' |
| 245 | +; LOOP-NEXT: - String: ' to ' |
| 246 | +; LOOP-NEXT: - IRInstrsAfter: '[[FINALFN]]' |
| 247 | +; LOOP-NEXT: - String: '; Delta: ' |
| 248 | +; LOOP-NEXT: - DeltaInstrCount: '[[DELTA]]' |
137 | 249 | declare i1 ()* @boop()
|
138 | 250 |
|
139 | 251 | define internal i1 @pluto() {
|
|
0 commit comments