1RUN: FileCheck --input-file %s %s
2
3; We use CHECK-NEXT directives to force a match on all lines with digits.
4
5; Numeric variable definition with default matching format without spaces.
6DEF DEFAULT FMT NO SPC  // CHECK-LABEL: DEF DEFAULT FMT NO SPC
710  // CHECK-NEXT: {{^}}[[#UNSI:]]
8
9; Numeric variable definition with default matching format with different
10; spacing.
11DEF DEFAULT FMT SPC  // CHECK-LABEL: DEF DEFAULT FMT SPC
1211  // CHECK-NEXT: {{^}}[[# UNSIa:]]
1311  // CHECK-NEXT: {{^}}[[# UNSIb :]]
1411  // CHECK-NEXT: {{^}}[[# UNSIc : ]]
15
16; Numeric variable redefinition.
17REDEF NO SPC  // CHECK-LABEL: REDEF
1811  // CHECK-NEXT: {{^}}[[#UNSI:]]
19
20; Numeric variable definition with explicit matching format.
21DEF FMT  // CHECK-LABEL: DEF FMT
22c    // CHECK-NEXT: {{^}}[[#%x,LHEX:]]
23D    // CHECK-NEXT: {{^}}[[#%X,UHEX:]]
24-30  // CHECK-NEXT: {{^}}[[#%d,SIGN:]]
25
26; Numeric variable definition with explicit matching format with different
27; spacing.
28DEF FMT SPC  // CHECK-LABEL: DEF FMT SPC
29c  // CHECK-NEXT: {{^}}[[# %x , LHEXa : ]]
30
31; Numeric variable definition with unsupported matching format.
32RUN: %ProtectFileCheckOutput \
33RUN: not FileCheck --check-prefixes ERR,INVALID-FMT-SPEC1 --input-file %s %s 2>&1 \
34RUN:   | FileCheck --check-prefix INVALID-FMT-SPEC-MSG1 --strict-whitespace %s
35RUN: %ProtectFileCheckOutput \
36RUN: not FileCheck --check-prefixes ERR,INVALID-FMT-SPEC2 --input-file %s %s 2>&1 \
37RUN:   | FileCheck --check-prefix INVALID-FMT-SPEC-MSG2 --strict-whitespace %s
38
39DEF INVALID FMT
40INVVAR1=a
41INVVAR2=11
42ERR-LABEL: DEF INVALID FMT
43INVALID-FMT-SPEC1-NEXT: INVVAR1=[[#%c,INVVAR1:]]
44INVALID-FMT-SPEC2-NEXT: INVVAR2=[[#%hhd,INVVAR2:]]
45INVALID-FMT-SPEC-MSG1: numeric-expression.txt:[[#@LINE-2]]:37: error: invalid format specifier in expression
46INVALID-FMT-SPEC-MSG1-NEXT: {{I}}NVALID-FMT-SPEC1-NEXT: INVVAR1={{\[\[#%c,INVVAR1:\]\]}}
47INVALID-FMT-SPEC-MSG1-NEXT:    {{^}}                                    ^{{$}}
48INVALID-FMT-SPEC-MSG2: numeric-expression.txt:[[#@LINE-4]]:37: error: invalid format specifier in expression
49INVALID-FMT-SPEC-MSG2-NEXT: {{I}}NVALID-FMT-SPEC2-NEXT: INVVAR2={{\[\[#%hhd,INVVAR2:\]\]}}
50INVALID-FMT-SPEC-MSG2-NEXT:    {{^}}                                    ^{{$}}
51
52; Numeric expressions in explicit matching format and default matching rule using
53; variables defined on other lines without spaces.
54USE EXPL FMT IMPL MATCH  // CHECK-LABEL: USE EXPL FMT IMPL MATCH
5511  // CHECK-NEXT: {{^}}[[#%u,UNSI]]
5612  // CHECK-NEXT: {{^}}[[#%u,UNSI+1]]
5710  // CHECK-NEXT: {{^}}[[#%u,UNSI-1]]
58c   // CHECK-NEXT: {{^}}[[#%x,LHEX]]
59d   // CHECK-NEXT: {{^}}[[#%x,LHEX+1]]
60b   // CHECK-NEXT: {{^}}[[#%x,LHEX-1]]
611a  // CHECK-NEXT: {{^}}[[#%x,LHEX+0xe]]
621a  // CHECK-NEXT: {{^}}[[#%x,LHEX+0xE]]
63D   // CHECK-NEXT: {{^}}[[#%X,UHEX]]
64E   // CHECK-NEXT: {{^}}[[#%X,UHEX+1]]
65C   // CHECK-NEXT: {{^}}[[#%X,UHEX-1]]
661B  // CHECK-NEXT: {{^}}[[#%X,UHEX+0xe]]
671B  // CHECK-NEXT: {{^}}[[#%X,UHEX+0xE]]
68-30 // CHECK-NEXT: {{^}}[[#%d,SIGN]]
69-29 // CHECK-NEXT: {{^}}[[#%d,SIGN+1]]
70-31 // CHECK-NEXT: {{^}}[[#%d,SIGN-1]]
7142  // CHECK-NEXT: {{^}}[[#%d,SIGN+72]]
7211  // CHECK-NEXT: {{^}}[[#%u,UNSIa]]
7311  // CHECK-NEXT: {{^}}[[#%u,UNSIb]]
7411  // CHECK-NEXT: {{^}}[[#%u,UNSIc]]
75c   // CHECK-NEXT: {{^}}[[#%x,LHEXa]]
76
77; Numeric expressions in explicit matching format and default matching rule using
78; variables defined on other lines with different spacing.
79USE EXPL FMT IMPL MATCH SPC  // CHECK-LABEL: USE EXPL FMT IMPL MATCH SPC
8011  // CHECK-NEXT: {{^}}[[#%u, UNSI]]
8111  // CHECK-NEXT: {{^}}[[# %u, UNSI]]
8211  // CHECK-NEXT: {{^}}[[# %u, UNSI ]]
8312  // CHECK-NEXT: {{^}}[[#%u, UNSI+1]]
8412  // CHECK-NEXT: {{^}}[[# %u, UNSI+1]]
8512  // CHECK-NEXT: {{^}}[[# %u , UNSI+1]]
8612  // CHECK-NEXT: {{^}}[[# %u , UNSI +1]]
8712  // CHECK-NEXT: {{^}}[[# %u , UNSI + 1]]
8812  // CHECK-NEXT: {{^}}[[# %u , UNSI + 1 ]]
8910  // CHECK-NEXT: {{^}}[[#%u, UNSI-1]]
9010  // CHECK-NEXT: {{^}}[[# %u, UNSI-1]]
9110  // CHECK-NEXT: {{^}}[[# %u , UNSI-1]]
9210  // CHECK-NEXT: {{^}}[[# %u , UNSI -1]]
9310  // CHECK-NEXT: {{^}}[[# %u , UNSI - 1]]
9410  // CHECK-NEXT: {{^}}[[# %u , UNSI - 1 ]]
95
96; Numeric expressions in implicit matching format and default matching rule using
97; variables defined on other lines.
98USE IMPL FMT IMPL MATCH  // CHECK-LABEL: USE IMPL FMT IMPL MATCH
9911  // CHECK-NEXT: {{^}}[[#UNSI]]
10012  // CHECK-NEXT: {{^}}[[#UNSI+1]]
10110  // CHECK-NEXT: {{^}}[[#UNSI-1]]
102c   // CHECK-NEXT: {{^}}[[#LHEX]]
103d   // CHECK-NEXT: {{^}}[[#LHEX+1]]
104b   // CHECK-NEXT: {{^}}[[#LHEX-1]]
1051a  // CHECK-NEXT: {{^}}[[#LHEX+0xe]]
1061a  // CHECK-NEXT: {{^}}[[#LHEX+0xE]]
107D   // CHECK-NEXT: {{^}}[[#UHEX]]
108E   // CHECK-NEXT: {{^}}[[#UHEX+1]]
109C   // CHECK-NEXT: {{^}}[[#UHEX-1]]
1101B  // CHECK-NEXT: {{^}}[[#UHEX+0xe]]
1111B  // CHECK-NEXT: {{^}}[[#UHEX+0xE]]
112-30 // CHECK-NEXT: {{^}}[[#SIGN]]
113-29 // CHECK-NEXT: {{^}}[[#SIGN+1]]
114-31 // CHECK-NEXT: {{^}}[[#SIGN-1]]
115
116; Numeric expressions using variables defined on other lines and an immediate
117; interpreted as an unsigned value.
118; Note: 9223372036854775819 = 0x8000000000000000 + 11
119USE IMPL FMT IMPL MATCH UNSIGNED IMM
1209223372036854775819
121CHECK-LABEL: USE IMPL FMT IMPL MATCH UNSIGNED IMM
122CHECK-NEXT: [[#UNSI+0x8000000000000000]]
123
124; Numeric expressions with matching format overriding the implicit format of
125; variables defined on other lines.
126USE CONV FMT IMPL MATCH  // CHECK-LABEL: USE CONV FMT IMPL MATCH
127b   // CHECK-NEXT: {{^}}[[# %x, UNSI]]
128B   // CHECK-NEXT: {{^}}[[# %X, UNSI]]
129-1  // CHECK-NEXT: {{^}}[[# %d, UNSI-12]]
13012  // CHECK-NEXT: {{^}}[[# %u, LHEX]]
131C   // CHECK-NEXT: {{^}}[[# %X, LHEX]]
132-2  // CHECK-NEXT: {{^}}[[# %d, LHEX-14]]
13313  // CHECK-NEXT: {{^}}[[# %u, UHEX]]
134d   // CHECK-NEXT: {{^}}[[# %x, UHEX]]
135-5  // CHECK-NEXT: {{^}}[[# %d, UHEX-18]]
13615  // CHECK-NEXT: {{^}}[[# %u, SIGN+45]]
137f   // CHECK-NEXT: {{^}}[[# %x, SIGN+45]]
138F   // CHECK-NEXT: {{^}}[[# %X, SIGN+45]]
139
140; Conflicting implicit format.
141RUN: %ProtectFileCheckOutput \
142RUN: not FileCheck --check-prefixes CHECK,FMT-CONFLICT1 --input-file %s %s 2>&1 \
143RUN:   | FileCheck --strict-whitespace --check-prefix FMT-CONFLICT1-MSG %s
144RUN: %ProtectFileCheckOutput \
145RUN: not FileCheck --check-prefixes CHECK,FMT-CONFLICT2 --input-file %s %s 2>&1 \
146RUN:   | FileCheck --strict-whitespace --check-prefix FMT-CONFLICT2-MSG %s
147
148VAR USE IMPL FMT CONFLICT
14923
150FMT-CONFLICT1-LABEL: VAR USE IMPL FMT CONFLICT
151FMT-CONFLICT1-NEXT: [[#UNSI + LHEX]]
152FMT-CONFLICT1-MSG: numeric-expression.txt:[[#@LINE-1]]:24: error: implicit format conflict between 'UNSI' (%u) and 'LHEX' (%x), need an explicit format specifier
153FMT-CONFLICT1-MSG-NEXT: {{F}}MT-CONFLICT1-NEXT: {{\[\[#UNSI \+ LHEX\]\]}}
154FMT-CONFLICT1-MSG-NEXT: {{^                       \^$}}
155
156VAR USE IMPL FMT CONFLICT COMPLEX
15734
158FMT-CONFLICT2-LABEL: VAR USE IMPL FMT CONFLICT
159FMT-CONFLICT2-NEXT: [[#UNSI + UNSIa + LHEX]]
160FMT-CONFLICT2-MSG: numeric-expression.txt:[[#@LINE-1]]:24: error: implicit format conflict between 'UNSI + UNSIa' (%u) and 'LHEX' (%x), need an explicit format specifier
161FMT-CONFLICT2-MSG-NEXT: {{F}}MT-CONFLICT2-NEXT: {{\[\[#UNSI \+ UNSIa \+ LHEX\]\]}}
162FMT-CONFLICT2-MSG-NEXT: {{^                       \^$}}
163
164; Explicitly specified format can override conflicting implicit formats.
165VAR USE IMPL OVERRIDE FMT CONFLICT  // CHECK-LABEL: VAR USE IMPL OVERRIDE FMT CONFLICT
16623  // CHECK-NEXT: {{^}}[[# %u, UNSI + LHEX]]
167
168; Numeric expressions using more than one variable defined on other lines.
169USE MULTI VAR  // CHECK-LABEL: USE MULTI VAR
17022  // CHECK-NEXT: {{^}}[[#UNSI+UNSIa]]
171
172; Numeric expression using a variable defined from a numeric expression.
173DEF EXPR GOOD MATCH  // CHECK-LABEL: DEF EXPR GOOD MATCH
17442  // CHECK-NEXT: {{^}}[[# VAR42:UNSI+31]]
17541  // CHECK-NEXT: {{^}}[[# VAR42-1]]
176
177; Empty numeric expression.
178EMPTY NUM EXPR  // CHECK-LABEL: EMPTY NUM EXPR
179foo 104 bar  // CHECK-NEXT: {{^}}foo [[#]] bar
180
181; Numeric expressions using parentheses.
182RUN: %ProtectFileCheckOutput \
183RUN: not FileCheck -D#NUMVAR=10 --check-prefix PAREN-OP \
184RUN:               --input-file %s %s 2>&1 \
185RUN:   | FileCheck --strict-whitespace --check-prefix PAREN-OP-MSG %s
186
187PAREN EXPRESSIONS // PAREN-OP-LABEL: PAREN EXPRESSIONS
18811  // PAREN-OP-NEXT: [[#(NUMVAR+2)-1]]
18911  // PAREN-OP-NEXT: [[#NUMVAR+(2-1)]]
19011  // PAREN-OP-NEXT: [[#NUMVAR+(2-1]]
191PAREN-OP-MSG: numeric-expression.txt:[[#@LINE-1]]:36: error: missing ')' at end of nested expression
192PAREN-OP-MSG-NEXT: {{P}}AREN-OP-NEXT: {{\[\[#NUMVAR\+\(2\-1]\]}}
193PAREN-OP-MSG-NEXT: {{^}}                                   ^{{$}}
194
195; Numeric expression using undefined variables.
196RUN: %ProtectFileCheckOutput \
197RUN: not FileCheck --check-prefix UNDEF-USE --input-file %s %s 2>&1 \
198RUN:   | FileCheck --strict-whitespace --check-prefix UNDEF-USE-MSG %s
199
200UNDEF VAR USE
201UNDEFVAR: 11
202UNDEF-USE-LABEL: UNDEF VAR USE
203UNDEF-USE-NEXT: UNDEFVAR: [[#UNDEFVAR1+UNDEFVAR2]]
204UNDEF-USE-MSG: numeric-expression.txt:[[#@LINE-1]]:17: error: {{U}}NDEF-USE-NEXT: expected string not found in input
205UNDEF-USE-MSG-NEXT:      {{U}}NDEF-USE-NEXT: UNDEFVAR: {{\[\[#UNDEFVAR1\+UNDEFVAR2\]\]}}
206UNDEF-USE-MSG-NEXT:     {{^}}                ^{{$}}
207UNDEF-USE-MSG-NEXT:      numeric-expression.txt:[[#@LINE-6]]:1: note: scanning from here
208UNDEF-USE-MSG-NEXT:      UNDEFVAR: 11
209UNDEF-USE-MSG-NEXT: {{^}}^{{$}}
210UNDEF-USE-MSG-NEXT:      numeric-expression.txt:[[#@LINE-9]]:1: note: uses undefined variable(s): "UNDEFVAR1" "UNDEFVAR2"
211UNDEF-USE-MSG-NEXT:      UNDEFVAR: 11
212UNDEF-USE-MSG-NEXT: {{^}}^{{$}}
213
214; Numeric expression with unsupported operator.
215RUN: %ProtectFileCheckOutput \
216RUN: not FileCheck -D#NUMVAR=10 --check-prefix INVAL-OP \
217RUN:               --input-file %s %s 2>&1 \
218RUN:   | FileCheck --strict-whitespace --check-prefix INVAL-OP-MSG %s
219
220INVALID OPERATOR
221NUMVAR*2: 22
222INVAL-OP-LABEL: INVALID OPERATOR
223INVAL-OP-NEXT: NUMVAR*2: [[#NUMVAR*2]]
224INVAL-OP-MSG: numeric-expression.txt:[[#@LINE-1]]:35: error: unsupported operation '*'
225INVAL-OP-MSG-NEXT: {{I}}NVAL-OP-NEXT: NUMVAR*2: {{\[\[#NUMVAR\*2\]\]}}
226INVAL-OP-MSG-NEXT:     {{^}}                                  ^{{$}}
227
228; Name conflict between Numeric variable definition and string variable
229; definition whether from the command-line or input text.
230RUN: %ProtectFileCheckOutput \
231RUN: not FileCheck --check-prefixes CONFLICT,CONFLICT1,CONFLICT2 \
232RUN:               --input-file %s %s 2>&1 \
233RUN:   | FileCheck --strict-whitespace --check-prefix INPUT-STR-CONFLICT %s
234RUN: %ProtectFileCheckOutput \
235RUN: not FileCheck -D#NUMVAR=42 --check-prefixes CONFLICT,CONFLICT2 \
236RUN:               --input-file %s %s 2>&1 \
237RUN:   | FileCheck --strict-whitespace --check-prefix INPUT-STR-CONFLICT %s
238RUN: %ProtectFileCheckOutput \
239RUN: not FileCheck -D#NUMVAR=42 -DNUMVAR=foobar --check-prefix CONFLICT \
240RUN:               --input-file %s %s 2>&1 \
241RUN:   | FileCheck --strict-whitespace --check-prefix CLI-STR-CONFLICT %s
242RUN: %ProtectFileCheckOutput \
243RUN: not FileCheck --check-prefixes CONFLICT,CONFLICT3,CONFLICT4 \
244RUN:               --input-file %s %s 2>&1 \
245RUN:   | FileCheck --strict-whitespace --check-prefix INPUT-NUM-CONFLICT %s
246RUN: %ProtectFileCheckOutput \
247RUN: not FileCheck -DSTRVAR=foobar --check-prefixes CONFLICT,CONFLICT4 \
248RUN:               --input-file %s %s 2>&1 \
249RUN:   | FileCheck --strict-whitespace --check-prefix INPUT-NUM-CONFLICT %s
250RUN: %ProtectFileCheckOutput \
251RUN: not FileCheck -DSTRVAR=foobar -D#STRVAR=42 --check-prefix CONFLICT \
252RUN:               --input-file %s %s 2>&1 \
253RUN:   | FileCheck --strict-whitespace --check-prefix CLI-NUM-CONFLICT %s
254
255STRVAR NUMVAR CONFLICT
256redef1 42
257foobar
258redef2 42
259CONFLICT-LABEL: STRVAR NUMVAR CONFLICT
260CONFLICT1-NEXT: redef1 [[#NUMVAR:]]
261CONFLICT2: [[NUMVAR:foo.*]]
262CONFLICT3: [[STRVAR:foo.*]]
263CONFLICT4: redef2 [[#STRVAR:]]
264INPUT-STR-CONFLICT: numeric-expression.txt:[[#@LINE-3]]:14: error: numeric variable with name 'NUMVAR' already exists
265INPUT-STR-CONFLICT-NEXT: {{C}}ONFLICT2: {{\[\[NUMVAR:foo\.\*\]\]}}
266INPUT-STR-CONFLICT-NEXT:    {{^}}             ^{{$}}
267CLI-STR-CONFLICT: Global defines:2:19: error: numeric variable with name 'NUMVAR' already exists
268CLI-STR-CONFLICT-NEXT:      Global define #2: NUMVAR=foobar
269CLI-STR-CONFLICT-NEXT: {{^}}                  ^{{$}}
270INPUT-NUM-CONFLICT: numeric-expression.txt:[[#@LINE-7]]:22: error: string variable with name 'STRVAR' already exists
271 INPUT-NUM-CONFLICT-NEXT: CONFLICT4: redef2 {{\[\[#STRVAR:\]\]}}
272INPUT-NUM-CONFLICT-NEXT: {{^}}                     ^{{$}}
273CLI-NUM-CONFLICT: Global defines:2:45: error: string variable with name 'STRVAR' already exists
274 CLI-NUM-CONFLICT-NEXT: Global define #2: #STRVAR=42 (parsed as: {{\[\[#STRVAR:42\]\]}})
275CLI-NUM-CONFLICT-NEXT: {{^}}                                            ^{{$}}
276
277; Numeric variable definition with too big value.
278RUN: %ProtectFileCheckOutput \
279RUN: not FileCheck --check-prefix BIGVAL --input-file %s %s 2>&1 \
280RUN:   | FileCheck --strict-whitespace --check-prefix BIGVAL-MSG %s
281
282BIG VALUE
283NUMVAR: 10000000000000000000000
284BIGVAL-LABEL: BIG VALUE
285BIGVAL-NEXT: NUMVAR: [[#NUMVAR:]]
286BIGVAL-MSG: numeric-expression.txt:[[#@LINE-3]]:9: error: unable to represent numeric value
287 BIGVAL-MSG-NEXT: {{N}}UMVAR: 10000000000000000000000
288BIGVAL-MSG-NEXT: {{^}}        ^{{$}}
289
290; Verify that when a variable is set to an expression the expression is still
291; checked.
292RUN: %ProtectFileCheckOutput \
293RUN: not FileCheck --check-prefix DEF-EXPR-FAIL --input-file %s %s 2>&1 \
294RUN:   | FileCheck --strict-whitespace --check-prefix DEF-EXPR-FAIL-MSG %s
295
296DEF EXPR WRONG MATCH
29720
29843
299DEF-EXPR-FAIL-LABEL: DEF EXPR WRONG MATCH
300DEF-EXPR-FAIL-NEXT: [[# VAR20:]]
301DEF-EXPR-FAIL-NEXT: [[# VAR42: VAR20+22]]
302DEF-EXPR-FAIL-MSG: numeric-expression.txt:[[#@LINE-1]]:21: error: {{D}}EF-EXPR-FAIL-NEXT: is not on the line after the previous match
303DEF-EXPR-FAIL-MSG-NEXT: {{D}}EF-EXPR-FAIL-NEXT: {{\[\[# VAR42: VAR20\+22\]\]}}
304DEF-EXPR-FAIL-MSG-NEXT:   {{^}}                    ^{{$}}
305
306; Verify that using a numeric variable defined on the same line (whether from
307; input or from an expression) is rejected.
308RUN: %ProtectFileCheckOutput \
309RUN: not FileCheck --check-prefix SAME-LINE-USE1 --input-file %s %s 2>&1 \
310RUN:   | FileCheck --strict-whitespace --check-prefix SAME-LINE-USE-MSG1 %s
311RUN: %ProtectFileCheckOutput \
312RUN: not FileCheck --check-prefix SAME-LINE-USE2 --input-file %s %s 2>&1 \
313RUN:   | FileCheck --strict-whitespace --check-prefix SAME-LINE-USE-MSG2 %s
314
315SAME LINE USE
3163
3174 5
318SAME-LINE-USE1-LABEL: SAME LINE USE
319SAME-LINE-USE1-NEXT: [[#]]
320SAME-LINE-USE1-NEXT: [[#UNSI:]] [[#UNSI+1]]
321SAME-LINE-USE-MSG1: numeric-expression.txt:[[#@LINE-1]]:36: error: numeric variable 'UNSI' defined earlier in the same CHECK directive
322SAME-LINE-USE-MSG1-NEXT: {{S}}AME-LINE-USE1-NEXT: {{\[\[#UNSI:\]\] \[\[#UNSI\+1\]\]}}
323SAME-LINE-USE-MSG1-NEXT:        {{^}}                                   ^{{$}}
324
325SAME-LINE-USE2-LABEL: SAME LINE USE
326SAME-LINE-USE2-NEXT: [[#UNSI:]]
327SAME-LINE-USE2-NEXT: [[#UNSI2:UNSI+1]] [[#UNSI2+1]]
328SAME-LINE-USE-MSG2: numeric-expression.txt:[[#@LINE-1]]:43: error: numeric variable 'UNSI2' defined earlier in the same CHECK directive
329SAME-LINE-USE-MSG2-NEXT: {{S}}AME-LINE-USE2-NEXT: {{\[\[#UNSI2:UNSI\+1\]\] \[\[#UNSI2\+1\]\]}}
330SAME-LINE-USE-MSG2-NEXT:        {{^}}                                          ^{{$}}
331
332; Invalid change of format in variable redefinition.
333RUN: %ProtectFileCheckOutput \
334RUN: not FileCheck --check-prefix REDEF-NEW-FMT --input-file %s %s 2>&1 \
335RUN:   | FileCheck --strict-whitespace --check-prefix REDEF-NEW-FMT-MSG %s
336
337VAR REDEF FMT CHANGE
33822
339DC
340REDEF-NEW-FMT-LABEL: VAR REDEF FMT CHANGE
341REDEF-NEW-FMT-NEXT: [[#UNSI:]]
342REDEF-NEW-FMT-NEXT: [[#%X,UNSI:]]
343REDEF-NEW-FMT-MSG: numeric-expression.txt:[[#@LINE-1]]:31: error: format different from previous variable definition
344REDEF-NEW-FMT-MSG-NEXT: {{R}}EDEF-NEW-FMT-NEXT: {{\[\[#%X,UNSI:\]\]}}
345REDEF-NEW-FMT-MSG-NEXT:    {{^}}                              ^{{$}}
346
347; Numeric expression with overflow.
348RUN: not FileCheck --check-prefix OVERFLOW --input-file %s %s 2>&1 \
349RUN:   | FileCheck --check-prefix OVERFLOW-MSG --strict-whitespace %s
350
351OVERFLOW
352BIGVAR=10000000000000000
353OVERFLOW-LABEL: OVERFLOW
354OVERFLOW-NEXT: BIGVAR: [[#BIGVAR:0x8000000000000000+0x8000000000000000]]
355OVERFLOW-MSG: numeric-expression.txt:[[#@LINE-1]]:27: error: unable to substitute variable or numeric expression
356OVERFLOW-MSG-NEXT: {{O}}VERFLOW-NEXT: BIGVAR: {{\[\[#BIGVAR:0x8000000000000000\+0x8000000000000000\]\]}}
357OVERFLOW-MSG-NEXT:    {{^}}                          ^{{$}}
358
359; Numeric expression with underflow.
360RUN: not FileCheck --check-prefix UNDERFLOW --input-file %s %s 2>&1 \
361RUN:   | FileCheck --check-prefix UNDERFLOW-MSG --strict-whitespace %s
362
363UNDERFLOW
364TINYVAR=-10000000000000000
365UNDERFLOW-LABEL: UNDERFLOW
366UNDERFLOW-NEXT: TINYVAR: [[#%d,TINYVAR:-0x8000000000000000-0x8000000000000000]]
367UNDERFLOW-MSG: numeric-expression.txt:[[#@LINE-1]]:29: error: unable to substitute variable or numeric expression
368UNDERFLOW-MSG-NEXT: {{U}}NDERFLOW-NEXT: TINYVAR: {{\[\[#%d,TINYVAR:-0x8000000000000000-0x8000000000000000\]\]}}
369UNDERFLOW-MSG-NEXT:    {{^}}                            ^{{$}}
370