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 variable definition of hex value with 0x prefix. 53DEF ALT FORM // CHECK-LABEL: DEF ALT FORM 540xf // CHECK-NEXT: {{^}}[[#%#x,PREFIXED_LHEX:]] 550xE // CHECK-NEXT: {{^}}[[#%#X,PREFIXED_UHEX:]] 56 57; Invalid numeric variable definition of non-hex value with 0x prefix. 58RUN: %ProtectFileCheckOutput \ 59RUN: not FileCheck --check-prefixes INVALID-ALT-FORM,INVALID-ALT-FORM1 --input-file %s %s 2>&1 \ 60RUN: | FileCheck --check-prefix INVALID-ALT-FORM-MSG1 --strict-whitespace %s 61RUN: %ProtectFileCheckOutput \ 62RUN: not FileCheck --check-prefixes INVALID-ALT-FORM,INVALID-ALT-FORM2 --input-file %s %s 2>&1 \ 63RUN: | FileCheck --check-prefix INVALID-ALT-FORM-MSG2 --strict-whitespace %s 64DEF INVALID ALT FORM 65PREFIXED_DEC=0x3 66INVALID-ALT-FORM-LABEL: DEF INVALID ALT FORM 67INVALID-ALT-FORM1-NEXT: PREFIXED_DEC=[[#%#u,PREFIXED_UNSI:]] 68INVALID-ALT-FORM2-NEXT: PREFIXED_DEC=[[#%#d,PREFIXED_SIGN:]] 69INVALID-ALT-FORM-MSG1: numeric-expression.txt:[[#@LINE-2]]:42: error: alternate form only supported for hex values 70INVALID-ALT-FORM-MSG1-NEXT: {{I}}NVALID-ALT-FORM1-NEXT: PREFIXED_DEC={{\[\[#%#u,PREFIXED_UNSI:\]\]}} 71INVALID-ALT-FORM-MSG1-NEXT: {{^}} ^{{$}} 72INVALID-ALT-FORM-MSG2: numeric-expression.txt:[[#@LINE-4]]:42: error: alternate form only supported for hex values 73INVALID-ALT-FORM-MSG2-NEXT: {{I}}NVALID-ALT-FORM2-NEXT: PREFIXED_DEC={{\[\[#%#d,PREFIXED_SIGN:\]\]}} 74INVALID-ALT-FORM-MSG2-NEXT: {{^}} ^{{$}} 75 76; Numeric variable definition of hex value with missing 0x prefix. 77RUN: FileCheck --check-prefix INVALID-HEX-PREFIX-DEF --input-file %s %s 78 79FAIL DEF ALT FORM // INVALID-HEX-PREFIX-DEF-LABEL: FAIL DEF ALT FORM 80INVALID_PREFIXED_LHEX: xf // INVALID-HEX-PREFIX-DEF-NOT: {{^}}INVALID_PREFIXED_LHEX: [[#%#x,INVALID_PREFIXED_LHEX:]] 81INVALID_PREFIXED_UHEX: 0E // INVALID-HEX-PREFIX-DEF-NOT: {{^}}INVALID_PREFIXED_UHEX: [[#%#X,INVALID_PREFIXED_UHEX:]] 82 83; Numeric variable definition with precision specifier. 84DEF PREC FMT // CHECK-LABEL: DEF PREC FMT 8500000022 // CHECK-NEXT: {{^}}[[#%.8,PADDED_UNSI:]] 86323232323 // CHECK-NEXT: {{^}}[[#%.8,PADDED_UNSI2:]] 8700000018 // CHECK-NEXT: {{^}}[[#%.8u,PADDED_UNSI3:]] 88181818181 // CHECK-NEXT: {{^}}[[#%.8u,PADDED_UNSI4:]] 890000000f // CHECK-NEXT: {{^}}[[#%.8x,PADDED_LHEX:]] 90fffffffff // CHECK-NEXT: {{^}}[[#%.8x,PADDED_LHEX2:]] 910000000E // CHECK-NEXT: {{^}}[[#%.8X,PADDED_UHEX:]] 92EEEEEEEEE // CHECK-NEXT: {{^}}[[#%.8X,PADDED_UHEX2:]] 93-00000055 // CHECK-NEXT: {{^}}[[#%.8d,PADDED_SIGN:]] 94-555555555 // CHECK-NEXT: {{^}}[[#%.8d,PADDED_SIGN2:]] 95 96; Numeric variable definition with precision specifier with value not padded 97; enough. 98RUN: FileCheck --check-prefix INVALID-PADDING-DEF --input-file %s %s 99 100FAIL DEF PREC FMT // INVALID-PADDING-DEF-LABEL: FAIL DEF PREC FMT 101INVALID_PADDED_UNSI: 0000022 // INVALID-PADDING-DEF-NOT: {{^}}INVALID_PADDED_UNSI: [[#%.8,INVALID_PADDED_UNSI:]] 102INVALID_PADDED_UNSI2: 0000018 // INVALID-PADDING-DEF-NOT: {{^}}INVALID_PADDED_UNSI2: [[#%.8u,INVALID_PADDED_UNSI2:]] 103INVALID_PADDED_LHEX: 000000f // INVALID-PADDING-DEF-NOT: {{^}}INVALID_PADDED_LHEX: [[#%.8x,INVALID_PADDED_LHEX:]] 104INVALID_PADDED_UHEX: 000000E // INVALID-PADDING-DEF-NOT: {{^}}INVALID_PADDED_UHEX: [[#%.8X,INVALID_PADDED_UHEX:]] 105INVALID_PADDED_SIGN: -0000055 // INVALID-PADDING-DEF-NOT: {{^}}INVALID_PADDED_SIGN: [[#%.8d,INVALID_PADDED_SIGN:]] 106 107; Numeric expressions with explicit matching format and default matching rule 108; using variables defined on other lines without spaces. 109USE EXPL FMT IMPL MATCH // CHECK-LABEL: USE EXPL FMT IMPL MATCH 11011 // CHECK-NEXT: {{^}}[[#%u,UNSI]] 11112 // CHECK-NEXT: {{^}}[[#%u,UNSI+1]] 11210 // CHECK-NEXT: {{^}}[[#%u,UNSI-1]] 11315 // CHECK-NEXT: {{^}}[[#%u,add(UNSI,4)]] 11411 // CHECK-NEXT: {{^}}[[#%u,max(UNSI,7)]] 11599 // CHECK-NEXT: {{^}}[[#%u,max(UNSI,99)]] 1167 // CHECK-NEXT: {{^}}[[#%u,min(UNSI,7)]] 11711 // CHECK-NEXT: {{^}}[[#%u,min(UNSI,99)]] 1188 // CHECK-NEXT: {{^}}[[#%u,sub(UNSI,3)]] 119c // CHECK-NEXT: {{^}}[[#%x,LHEX]] 120d // CHECK-NEXT: {{^}}[[#%x,LHEX+1]] 121b // CHECK-NEXT: {{^}}[[#%x,LHEX-1]] 1221a // CHECK-NEXT: {{^}}[[#%x,LHEX+0xe]] 1231a // CHECK-NEXT: {{^}}[[#%x,LHEX+0xE]] 124e // CHECK-NEXT: {{^}}[[#%x,add(LHEX,2)]] 125ff // CHECK-NEXT: {{^}}[[#%x,max(LHEX,0xff)]] 126a // CHECK-NEXT: {{^}}[[#%x,min(LHEX,0xa)]] 127a // CHECK-NEXT: {{^}}[[#%x,sub(LHEX,2)]] 128D // CHECK-NEXT: {{^}}[[#%X,UHEX]] 129E // CHECK-NEXT: {{^}}[[#%X,UHEX+1]] 130C // CHECK-NEXT: {{^}}[[#%X,UHEX-1]] 1311B // CHECK-NEXT: {{^}}[[#%X,UHEX+0xe]] 1321B // CHECK-NEXT: {{^}}[[#%X,UHEX+0xE]] 133F // CHECK-NEXT: {{^}}[[#%X,add(UHEX,2)]] 134FF // CHECK-NEXT: {{^}}[[#%X,max(UHEX,0xff)]] 135A // CHECK-NEXT: {{^}}[[#%X,min(UHEX,0xa)]] 136B // CHECK-NEXT: {{^}}[[#%X,sub(UHEX,2)]] 137-30 // CHECK-NEXT: {{^}}[[#%d,SIGN]] 138-29 // CHECK-NEXT: {{^}}[[#%d,SIGN+1]] 139-31 // CHECK-NEXT: {{^}}[[#%d,SIGN-1]] 14042 // CHECK-NEXT: {{^}}[[#%d,SIGN+72]] 141-29 // CHECK-NEXT: {{^}}[[#%d,add(SIGN,1)]] 142-17 // CHECK-NEXT: {{^}}[[#%d,max(SIGN,-17)]] 143-30 // CHECK-NEXT: {{^}}[[#%d,min(SIGN,-17)]] 144-31 // CHECK-NEXT: {{^}}[[#%d,sub(SIGN,1)]] 14511 // CHECK-NEXT: {{^}}[[#%u,UNSIa]] 14611 // CHECK-NEXT: {{^}}[[#%u,UNSIb]] 14711 // CHECK-NEXT: {{^}}[[#%u,UNSIc]] 148c // CHECK-NEXT: {{^}}[[#%x,LHEXa]] 149 150; Numeric expressions with explicit matching format and default matching rule 151; using variables defined on other lines with different spacing. 152USE EXPL FMT IMPL MATCH SPC // CHECK-LABEL: USE EXPL FMT IMPL MATCH SPC 15311 // CHECK-NEXT: {{^}}[[#%u, UNSI]] 15411 // CHECK-NEXT: {{^}}[[# %u, UNSI]] 15511 // CHECK-NEXT: {{^}}[[# %u, UNSI ]] 15612 // CHECK-NEXT: {{^}}[[#%u, UNSI+1]] 15712 // CHECK-NEXT: {{^}}[[# %u, UNSI+1]] 15812 // CHECK-NEXT: {{^}}[[# %u , UNSI+1]] 15912 // CHECK-NEXT: {{^}}[[# %u , UNSI +1]] 16012 // CHECK-NEXT: {{^}}[[# %u , UNSI + 1]] 16112 // CHECK-NEXT: {{^}}[[# %u , UNSI + 1 ]] 16210 // CHECK-NEXT: {{^}}[[#%u, UNSI-1]] 16310 // CHECK-NEXT: {{^}}[[# %u, UNSI-1]] 16410 // CHECK-NEXT: {{^}}[[# %u , UNSI-1]] 16510 // CHECK-NEXT: {{^}}[[# %u , UNSI -1]] 16610 // CHECK-NEXT: {{^}}[[# %u , UNSI - 1]] 16710 // CHECK-NEXT: {{^}}[[# %u , UNSI - 1 ]] 16813 // CHECK-NEXT: {{^}}[[#%u, add(UNSI,2)]] 16913 // CHECK-NEXT: {{^}}[[# %u, add(UNSI,2)]] 17013 // CHECK-NEXT: {{^}}[[# %u , add(UNSI,2)]] 17113 // CHECK-NEXT: {{^}}[[# %u , add(UNSI, 2)]] 17213 // CHECK-NEXT: {{^}}[[# %u , add( UNSI, 2)]] 17313 // CHECK-NEXT: {{^}}[[# %u , add( UNSI,2)]] 17413 // CHECK-NEXT: {{^}}[[# %u , add(UNSI,2) ]] 17513 // CHECK-NEXT: {{^}}[[# %u , add (UNSI,2)]] 176104 // CHECK-NEXT: {{^}}[[# %u , UNSI + sub( add (100 , UNSI+ 1 ), 20) +1 ]] 177 178; Numeric expressions with explicit matching format, precision, form and 179; default matching rule using variables defined on other lines without spaces. 180USE EXPL FMT WITH PREC IMPL MATCH // CHECK-LABEL: USE EXPL FMT WITH PREC IMPL MATCH 18111 // CHECK-NEXT: {{^}}[[#%.1u,UNSI]] 18200000011 // CHECK-NEXT: {{^}}[[#%.8u,UNSI]] 1831c // CHECK-NEXT: {{^}}[[#%.1x,LHEX+16]] 1840x1c // CHECK-NEXT: {{^}}[[#%#.1x,LHEX+16]] 1850000000c // CHECK-NEXT: {{^}}[[#%.8x,LHEX]] 1860x0000000c // CHECK-NEXT: {{^}}[[#%#.8x,LHEX]] 1871D // CHECK-NEXT: {{^}}[[#%.1X,UHEX+16]] 1880x1D // CHECK-NEXT: {{^}}[[#%#.1X,UHEX+16]] 1890000000D // CHECK-NEXT: {{^}}[[#%.8X,UHEX]] 1900x0000000D // CHECK-NEXT: {{^}}[[#%#.8X,UHEX]] 191-30 // CHECK-NEXT: {{^}}[[#%.1d,SIGN]] 192-00000030 // CHECK-NEXT: {{^}}[[#%.8d,SIGN]] 193 194; Numeric expressions with explicit matching format, precision and wrong 195; padding, and default matching rule using variables defined on other lines 196; without spaces. 197RUN: FileCheck --check-prefixes CHECK,INVALID-PADDING-EXPL-USE --input-file %s %s 198 199FAIL USE IMPL FMT WITH PREC EXPL MATCH // INVALID-PADDING-EXPL-USE-LABEL: FAIL USE IMPL FMT WITH PREC IMPL MATCH 200INVALID UNSI+1: 0000012 // INVALID-PADDING-EXPL-USE-NOT: {{^}}INVALID UNSI+1: [[#%.8u,UNSI+1]] 201INVALID UNSI-1: 000000010 // INVALID-PADDING-EXPL-USE-NOT: {{^}}INVALID UNSI-1: [[#%.8u,UNSI-1]] 202INVALID LHEX+1: 000000d // INVALID-PADDING-EXPL-USE-NOT: {{^}}INVALID LHEX+1: [[#%.8x,LHEX+1]] 203INVALID LHEX-1: 00000000b // INVALID-PADDING-EXPL-USE-NOT: {{^}}INVALID LHEX-1: [[#%.8x,LHEX-1]] 204INVALID UHEX+1: 000000E // INVALID-PADDING-EXPL-USE-NOT: {{^}}INVALID UHEX+1: [[#%.8X,UHEX+1]] 205INVALID UHEX-1: 00000000C // INVALID-PADDING-EXPL-USE-NOT: {{^}}INVALID UHEX-1: [[#%.8X,UHEX-1]] 206INVALID SIGN+1: -0000029 // INVALID-PADDING-EXPL-USE-NOT: {{^}}INVALID SIGN+1: [[#%.8d,SIGN+1]] 207INVALID SIGN-1: -000000031 // INVALID-PADDING-EXPL-USE-NOT: {{^}}INVALID SIGN-1: [[#%.8d,SIGN-1]] 208 209; Numeric expressions with implicit matching format and default matching rule 210; using variables defined on other lines. 211USE IMPL FMT IMPL MATCH // CHECK-LABEL: USE IMPL FMT IMPL MATCH 21211 // CHECK-NEXT: {{^}}[[#UNSI]] 21312 // CHECK-NEXT: {{^}}[[#UNSI+1]] 21410 // CHECK-NEXT: {{^}}[[#UNSI-1]] 21599 // CHECK-NEXT: {{^}}[[#max(UNSI,99)]] 2167 // CHECK-NEXT: {{^}}[[#min(UNSI,7)]] 217c // CHECK-NEXT: {{^}}[[#LHEX]] 218d // CHECK-NEXT: {{^}}[[#LHEX+1]] 219b // CHECK-NEXT: {{^}}[[#LHEX-1]] 2201a // CHECK-NEXT: {{^}}[[#LHEX+0xe]] 2211a // CHECK-NEXT: {{^}}[[#LHEX+0xE]] 222ff // CHECK-NEXT: {{^}}[[#max(LHEX,255)]] 223a // CHECK-NEXT: {{^}}[[#min(LHEX,10)]] 224D // CHECK-NEXT: {{^}}[[#UHEX]] 225E // CHECK-NEXT: {{^}}[[#UHEX+1]] 226C // CHECK-NEXT: {{^}}[[#UHEX-1]] 2271B // CHECK-NEXT: {{^}}[[#UHEX+0xe]] 2281B // CHECK-NEXT: {{^}}[[#UHEX+0xE]] 229FF // CHECK-NEXT: {{^}}[[#max(UHEX,255)]] 230A // CHECK-NEXT: {{^}}[[#min(UHEX,10)]] 231-30 // CHECK-NEXT: {{^}}[[#SIGN]] 232-29 // CHECK-NEXT: {{^}}[[#SIGN+1]] 233-31 // CHECK-NEXT: {{^}}[[#SIGN-1]] 234 235; Numeric expressions with implicit matching format, precision, and default 236; matching rule using variables defined on other lines. 237USE IMPL FMT WITH PREC IMPL MATCH // CHECK-LABEL: USE IMPL FMT WITH PREC IMPL MATCH 23800000023 // CHECK-NEXT: {{^}}[[#PADDED_UNSI+1]] 239323232324 // CHECK-NEXT: {{^}}[[#PADDED_UNSI2+1]] 24000000019 // CHECK-NEXT: {{^}}[[#PADDED_UNSI3+1]] 241181818182 // CHECK-NEXT: {{^}}[[#PADDED_UNSI4+1]] 24200000010 // CHECK-NEXT: {{^}}[[#PADDED_LHEX+1]] 2431000000000 // CHECK-NEXT: {{^}}[[#PADDED_LHEX2+1]] 2440000000F // CHECK-NEXT: {{^}}[[#PADDED_UHEX+1]] 245EEEEEEEEF // CHECK-NEXT: {{^}}[[#PADDED_UHEX2+1]] 246-00000054 // CHECK-NEXT: {{^}}[[#PADDED_SIGN+1]] 247-555555554 // CHECK-NEXT: {{^}}[[#PADDED_SIGN2+1]] 248 249; Numeric expression with implicit matching format, precision and wrong amount 250; of padding, and default matching rule using variables defined on other lines. 251RUN: FileCheck --check-prefixes CHECK,INVALID-PADDING-IMPL-USE --input-file %s %s 252 253FAIL USE IMPL FMT WITH PREC IMPL MATCH // INVALID-PADDING-IMPL-USE-LABEL: FAIL USE IMPL FMT WITH PREC IMPL MATCH 254INVALID PADDED_UNSI+1: 0000023 // INVALID-PADDING-IMPL-USE-NOT: {{^}}INVALID PADDED_UNSI+1: [[#PADDED_UNSI+1]] 255INVALID PADDED_UNSI-1: 000000021 // INVALID-PADDING-IMPL-USE-NOT: {{^}}INVALID PADDED_UNSI-1: [[#PADDED_UNSI-1]] 256INVALID PADDED_UNSI3+1: 0000019 // INVALID-PADDING-IMPL-USE-NOT: {{^}}INVALID PADDED_UNSI3+1: [[#PADDED_UNSI3+1]] 257INVALID PADDED_UNSI3-1: 000000017 // INVALID-PADDING-IMPL-USE-NOT: {{^}}INVALID PADDED_UNSI3-1: [[#PADDED_UNSI3-1]] 258INVALID PADDED_LHEX+1: 0000010 // INVALID-PADDING-IMPL-USE-NOT: {{^}}INVALID PADDED_LHEX+1: [[#PADDED_LHEX+1]] 259INVALID PADDED_LHEX-1: 00000000e // INVALID-PADDING-IMPL-USE-NOT: {{^}}INVALID PADDED_LHEX-1: [[#PADDED_LHEX-1]] 260INVALID PADDED_UHEX+1: 000000F // INVALID-PADDING-IMPL-USE-NOT: {{^}}INVALID PADDED_UHEX+1: [[#PADDED_UHEX+1]] 261INVALID PADDED_UHEX-1: 00000000D // INVALID-PADDING-IMPL-USE-NOT: {{^}}INVALID PADDED_UHEX-1: [[#PADDED_UHEX-1]] 262INVALID PADDED_SIGN+1: -0000054 // INVALID-PADDING-IMPL-USE-NOT: {{^}}INVALID PADDED_SIGN+1: [[#PADDED_SIGN+1]] 263INVALID PADDED_SIGN-1: -000000056 // INVALID-PADDING-IMPL-USE-NOT: {{^}}INVALID PADDED_SIGN-1: [[#PADDED_SIGN-1]] 264 265; Numeric expressions using variables defined on other lines and an immediate 266; interpreted as an unsigned value. 267; Note: 9223372036854775819 = 0x8000000000000000 + 11 268USE IMPL FMT IMPL MATCH UNSIGNED IMM 2699223372036854775819 270CHECK-LABEL: USE IMPL FMT IMPL MATCH UNSIGNED IMM 271CHECK-NEXT: [[#UNSI+0x8000000000000000]] 272 273; Numeric expressions in default matching format and explicit matching rule using 274; variables defined on other lines. 275USE DEF FMT EXPL MATCH // CHECK-LABEL: USE DEF FMT EXPL MATCH 27611 // CHECK-NEXT: {{^}}[[#==UNSI]] 27711 // CHECK-NEXT: {{^}}[[# == UNSI]] 27812 // CHECK-NEXT: {{^}}[[#UNSI2: == UNSI + 1]] 27912 // CHECK-NEXT: {{^}}[[#==UNSI2]] 280 281; Numeric expressions in default matching format and explicit matching rule using 282; variable defined on other lines with match failure. 283RUN: %ProtectFileCheckOutput \ 284RUN: not FileCheck --check-prefix NUMEXPR-CONSTRAINT-NOMATCH --input-file %s %s 2>&1 \ 285RUN: | FileCheck --check-prefix NUMEXPR-CONSTRAINT-NOMATCH-MSG --strict-whitespace %s 286 287USE DEF FMT EXPL NO MATCH 288UNSI=11 289UNSI: 12 290NUMEXPR-CONSTRAINT-NOMATCH-LABEL: USE DEF FMT EXPL NO MATCH 291NUMEXPR-CONSTRAINT-NOMATCH-NEXT: UNSI=[[#UNSI:]] 292NUMEXPR-CONSTRAINT-NOMATCH-NEXT: UNSI: [[#==UNSI]] 293NUMEXPR-CONSTRAINT-NOMATCH-MSG: numeric-expression.txt:[[#@LINE-1]]:34: error: {{N}}UMEXPR-CONSTRAINT-NOMATCH-NEXT: expected string not found in input 294NUMEXPR-CONSTRAINT-NOMATCH-MSG-NEXT: {{N}}UMEXPR-CONSTRAINT-NOMATCH-NEXT: UNSI: {{\[\[#==UNSI\]\]}} 295NUMEXPR-CONSTRAINT-NOMATCH-MSG-NEXT: {{^}} ^{{$}} 296 297; Empty numeric expression with matching constraint. 298RUN: %ProtectFileCheckOutput \ 299RUN: not FileCheck --check-prefix EMPTY-NUMEXPR-CONSTRAINT --input-file %s %s 2>&1 \ 300RUN: | FileCheck --check-prefix EMPTY-NUMEXPR-CONSTRAINT-MSG --strict-whitespace %s 301 302EMPTY NUMEXPR USE WITH CONSTRAINT 30318 304EMPTY-NUMEXPR-CONSTRAINT-LABEL: EMPTY NUMEXPR USE WITH CONSTRAINT 305EMPTY-NUMEXPR-CONSTRAINT-NEXT: [[# ==]] 306EMPTY-NUMEXPR-CONSTRAINT-MSG: numeric-expression.txt:[[#@LINE-1]]:38: error: empty numeric expression should not have a constraint 307EMPTY-NUMEXPR-CONSTRAINT-MSG-NEXT: {{E}}MPTY-NUMEXPR-CONSTRAINT-NEXT: {{\[\[# ==\]\]}} 308EMPTY-NUMEXPR-CONSTRAINT-MSG-NEXT: {{^}} ^{{$}} 309 310; Definition from empty numeric expression with matching constraint. 311RUN: %ProtectFileCheckOutput \ 312RUN: not FileCheck --check-prefix EMPTY-NUMDEF-CONSTRAINT --input-file %s %s 2>&1 \ 313RUN: | FileCheck --check-prefix EMPTY-NUMDEF-CONSTRAINT-MSG %s 314 315EMPTY NUMEXPR DEF WITH CONSTRAINT 31618 317EMPTY-NUMDEF-CONSTRAINT-LABEL: EMPTY NUMEXPR CONSTRAINT 318EMPTY-NUMDEF-CONSTRAINT-NEXT: [[#VARDEF: ==]] 319EMPTY-NUMDEF-CONSTRAINT-MSG: numeric-expression.txt:[[#@LINE-1]]:44: error: empty numeric expression should not have a constraint 320EMPTY-NUMDEF-CONSTRAINT-MSG-NEXT: {{E}}MPTY-NUMDEF-CONSTRAINT-NEXT: {{\[\[#VARDEF: ==\]\]}} 321EMPTY-NUMDEF-CONSTRAINT-MSG-NEXT: {{^}} ^{{$}} 322 323; Numeric expressions with matching format overriding the implicit format of 324; variables defined on other lines. 325USE CONV FMT IMPL MATCH // CHECK-LABEL: USE CONV FMT IMPL MATCH 326b // CHECK-NEXT: {{^}}[[# %x, UNSI]] 327B // CHECK-NEXT: {{^}}[[# %X, UNSI]] 328-1 // CHECK-NEXT: {{^}}[[# %d, UNSI-12]] 32912 // CHECK-NEXT: {{^}}[[# %u, LHEX]] 330C // CHECK-NEXT: {{^}}[[# %X, LHEX]] 331-2 // CHECK-NEXT: {{^}}[[# %d, LHEX-14]] 33213 // CHECK-NEXT: {{^}}[[# %u, UHEX]] 333d // CHECK-NEXT: {{^}}[[# %x, UHEX]] 334-5 // CHECK-NEXT: {{^}}[[# %d, UHEX-18]] 33515 // CHECK-NEXT: {{^}}[[# %u, SIGN+45]] 336f // CHECK-NEXT: {{^}}[[# %x, SIGN+45]] 337F // CHECK-NEXT: {{^}}[[# %X, SIGN+45]] 338 339; Conflicting implicit format. 340RUN: %ProtectFileCheckOutput \ 341RUN: not FileCheck --check-prefixes CHECK,FMT-CONFLICT1 --input-file %s %s 2>&1 \ 342RUN: | FileCheck --strict-whitespace --check-prefix FMT-CONFLICT1-MSG %s 343RUN: %ProtectFileCheckOutput \ 344RUN: not FileCheck --check-prefixes CHECK,FMT-CONFLICT2 --input-file %s %s 2>&1 \ 345RUN: | FileCheck --strict-whitespace --check-prefix FMT-CONFLICT2-MSG %s 346 347VAR USE IMPL FMT CONFLICT 34823 349FMT-CONFLICT1-LABEL: VAR USE IMPL FMT CONFLICT 350FMT-CONFLICT1-NEXT: [[#UNSI + LHEX]] 351FMT-CONFLICT1-MSG: numeric-expression.txt:[[#@LINE-1]]:24: error: implicit format conflict between 'UNSI' (%u) and 'LHEX' (%x), need an explicit format specifier 352FMT-CONFLICT1-MSG-NEXT: {{F}}MT-CONFLICT1-NEXT: {{\[\[#UNSI \+ LHEX\]\]}} 353FMT-CONFLICT1-MSG-NEXT: {{^ \^$}} 354 355VAR USE IMPL FMT CONFLICT COMPLEX 35634 357FMT-CONFLICT2-LABEL: VAR USE IMPL FMT CONFLICT 358FMT-CONFLICT2-NEXT: [[#UNSI + UNSIa + LHEX]] 359FMT-CONFLICT2-MSG: numeric-expression.txt:[[#@LINE-1]]:24: error: implicit format conflict between 'UNSI + UNSIa' (%u) and 'LHEX' (%x), need an explicit format specifier 360FMT-CONFLICT2-MSG-NEXT: {{F}}MT-CONFLICT2-NEXT: {{\[\[#UNSI \+ UNSIa \+ LHEX\]\]}} 361FMT-CONFLICT2-MSG-NEXT: {{^ \^$}} 362 363; Explicitly specified format can override conflicting implicit formats. 364VAR USE IMPL OVERRIDE FMT CONFLICT // CHECK-LABEL: VAR USE IMPL OVERRIDE FMT CONFLICT 36523 // CHECK-NEXT: {{^}}[[# %u, UNSI + LHEX]] 366 367; Numeric expressions using more than one variable defined on other lines. 368USE MULTI VAR // CHECK-LABEL: USE MULTI VAR 36922 // CHECK-NEXT: {{^}}[[#UNSI+UNSIa]] 370 371; Numeric expression using a variable defined from a numeric expression. 372DEF EXPR GOOD MATCH // CHECK-LABEL: DEF EXPR GOOD MATCH 37342 // CHECK-NEXT: {{^}}[[# VAR42:UNSI+31]] 37441 // CHECK-NEXT: {{^}}[[# VAR42-1]] 375 376; Empty numeric expression. 377EMPTY NUM EXPR // CHECK-LABEL: EMPTY NUM EXPR 378foo 104 bar // CHECK-NEXT: {{^}}foo [[#]] bar 379 380; Numeric expressions using parentheses. 381RUN: %ProtectFileCheckOutput \ 382RUN: not FileCheck -D#NUMVAR=10 --check-prefix PAREN-OP \ 383RUN: --input-file %s %s 2>&1 \ 384RUN: | FileCheck --strict-whitespace --check-prefix PAREN-OP-MSG %s 385 386PAREN EXPRESSIONS // PAREN-OP-LABEL: PAREN EXPRESSIONS 38711 // PAREN-OP-NEXT: [[#(NUMVAR+2)-1]] 38811 // PAREN-OP-NEXT: [[#NUMVAR+(2-1)]] 38911 // PAREN-OP-NEXT: [[#NUMVAR+(2-1]] 390PAREN-OP-MSG: numeric-expression.txt:[[#@LINE-1]]:36: error: missing ')' at end of nested expression 391PAREN-OP-MSG-NEXT: {{P}}AREN-OP-NEXT: {{\[\[#NUMVAR\+\(2\-1]\]}} 392PAREN-OP-MSG-NEXT: {{^}} ^{{$}} 393 394; Numeric expression using undefined variables. 395RUN: %ProtectFileCheckOutput \ 396RUN: not FileCheck --check-prefix UNDEF-USE --input-file %s %s 2>&1 \ 397RUN: | FileCheck --strict-whitespace --check-prefix UNDEF-USE-MSG %s 398 399UNDEF VAR USE 400UNDEFVAR: 11 401UNDEF-USE-LABEL: UNDEF VAR USE 402UNDEF-USE-NEXT: UNDEFVAR: [[#UNDEFVAR1+UNDEFVAR2]] 403UNDEF-USE-MSG: numeric-expression.txt:[[#@LINE-1]]:17: error: {{U}}NDEF-USE-NEXT: expected string not found in input 404UNDEF-USE-MSG-NEXT: {{U}}NDEF-USE-NEXT: UNDEFVAR: {{\[\[#UNDEFVAR1\+UNDEFVAR2\]\]}} 405UNDEF-USE-MSG-NEXT: {{^}} ^{{$}} 406UNDEF-USE-MSG-NEXT: numeric-expression.txt:[[#@LINE-7]]:14: note: scanning from here 407UNDEF-USE-MSG-NEXT: UNDEF VAR USE 408UNDEF-USE-MSG-NEXT: {{^}} ^{{$}} 409UNDEF-USE-MSG-NEXT: numeric-expression.txt:[[#@LINE-10]]:14: note: uses undefined variable(s): "UNDEFVAR1" "UNDEFVAR2" 410UNDEF-USE-MSG-NEXT: UNDEF VAR USE 411UNDEF-USE-MSG-NEXT: {{^}} ^{{$}} 412 413; Numeric expression with unsupported operator. 414RUN: %ProtectFileCheckOutput \ 415RUN: not FileCheck -D#NUMVAR=10 --check-prefix INVAL-OP \ 416RUN: --input-file %s %s 2>&1 \ 417RUN: | FileCheck --strict-whitespace --check-prefix INVAL-OP-MSG %s 418 419INVALID OPERATOR 420NUMVAR*2: 22 421INVAL-OP-LABEL: INVALID OPERATOR 422INVAL-OP-NEXT: NUMVAR*2: [[#NUMVAR*2]] 423INVAL-OP-MSG: numeric-expression.txt:[[#@LINE-1]]:35: error: unsupported operation '*' 424INVAL-OP-MSG-NEXT: {{I}}NVAL-OP-NEXT: NUMVAR*2: {{\[\[#NUMVAR\*2\]\]}} 425INVAL-OP-MSG-NEXT: {{^}} ^{{$}} 426 427; Name conflict between Numeric variable definition and string variable 428; definition whether from the command-line or input text. 429RUN: %ProtectFileCheckOutput \ 430RUN: not FileCheck --check-prefixes CONFLICT,CONFLICT1,CONFLICT2 \ 431RUN: --input-file %s %s 2>&1 \ 432RUN: | FileCheck --strict-whitespace --check-prefix INPUT-STR-CONFLICT %s 433RUN: %ProtectFileCheckOutput \ 434RUN: not FileCheck -D#NUMVAR=42 --check-prefixes CONFLICT,CONFLICT2 \ 435RUN: --input-file %s %s 2>&1 \ 436RUN: | FileCheck --strict-whitespace --check-prefix INPUT-STR-CONFLICT %s 437RUN: %ProtectFileCheckOutput \ 438RUN: not FileCheck -D#NUMVAR=42 -DNUMVAR=foobar --check-prefix CONFLICT \ 439RUN: --input-file %s %s 2>&1 \ 440RUN: | FileCheck --strict-whitespace --check-prefix CLI-STR-CONFLICT %s 441RUN: %ProtectFileCheckOutput \ 442RUN: not FileCheck --check-prefixes CONFLICT,CONFLICT3,CONFLICT4 \ 443RUN: --input-file %s %s 2>&1 \ 444RUN: | FileCheck --strict-whitespace --check-prefix INPUT-NUM-CONFLICT %s 445RUN: %ProtectFileCheckOutput \ 446RUN: not FileCheck -DSTRVAR=foobar --check-prefixes CONFLICT,CONFLICT4 \ 447RUN: --input-file %s %s 2>&1 \ 448RUN: | FileCheck --strict-whitespace --check-prefix INPUT-NUM-CONFLICT %s 449RUN: %ProtectFileCheckOutput \ 450RUN: not FileCheck -DSTRVAR=foobar -D#STRVAR=42 --check-prefix CONFLICT \ 451RUN: --input-file %s %s 2>&1 \ 452RUN: | FileCheck --strict-whitespace --check-prefix CLI-NUM-CONFLICT %s 453 454STRVAR NUMVAR CONFLICT 455redef1 42 456foobar 457redef2 42 458CONFLICT-LABEL: STRVAR NUMVAR CONFLICT 459CONFLICT1-NEXT: redef1 [[#NUMVAR:]] 460CONFLICT2: [[NUMVAR:foo.*]] 461CONFLICT3: [[STRVAR:foo.*]] 462CONFLICT4: redef2 [[#STRVAR:]] 463INPUT-STR-CONFLICT: numeric-expression.txt:[[#@LINE-3]]:14: error: numeric variable with name 'NUMVAR' already exists 464INPUT-STR-CONFLICT-NEXT: {{C}}ONFLICT2: {{\[\[NUMVAR:foo\.\*\]\]}} 465INPUT-STR-CONFLICT-NEXT: {{^}} ^{{$}} 466CLI-STR-CONFLICT: Global defines:2:19: error: numeric variable with name 'NUMVAR' already exists 467CLI-STR-CONFLICT-NEXT: Global define #2: NUMVAR=foobar 468CLI-STR-CONFLICT-NEXT: {{^}} ^{{$}} 469INPUT-NUM-CONFLICT: numeric-expression.txt:[[#@LINE-7]]:22: error: string variable with name 'STRVAR' already exists 470 INPUT-NUM-CONFLICT-NEXT: CONFLICT4: redef2 {{\[\[#STRVAR:\]\]}} 471INPUT-NUM-CONFLICT-NEXT: {{^}} ^{{$}} 472CLI-NUM-CONFLICT: Global defines:2:45: error: string variable with name 'STRVAR' already exists 473 CLI-NUM-CONFLICT-NEXT: Global define #2: #STRVAR=42 (parsed as: {{\[\[#STRVAR:42\]\]}}) 474CLI-NUM-CONFLICT-NEXT: {{^}} ^{{$}} 475 476; Numeric variable definition with too big value. 477RUN: %ProtectFileCheckOutput \ 478RUN: not FileCheck --check-prefix BIGVAL --input-file %s %s 2>&1 \ 479RUN: | FileCheck --strict-whitespace --check-prefix BIGVAL-MSG %s 480 481BIG VALUE 482NUMVAR: 10000000000000000000000 483BIGVAL-LABEL: BIG VALUE 484BIGVAL-NEXT: NUMVAR: [[#NUMVAR:]] 485BIGVAL-MSG: numeric-expression.txt:[[#@LINE-3]]:9: error: unable to represent numeric value 486 BIGVAL-MSG-NEXT: {{N}}UMVAR: 10000000000000000000000 487BIGVAL-MSG-NEXT: {{^}} ^{{$}} 488 489; Verify that when a variable is set to an expression the expression is still 490; checked. 491RUN: %ProtectFileCheckOutput \ 492RUN: not FileCheck --check-prefix DEF-EXPR-FAIL --input-file %s %s 2>&1 \ 493RUN: | FileCheck --strict-whitespace --check-prefix DEF-EXPR-FAIL-MSG %s 494 495DEF EXPR WRONG MATCH 49620 49743 498DEF-EXPR-FAIL-LABEL: DEF EXPR WRONG MATCH 499DEF-EXPR-FAIL-NEXT: [[# VAR20:]] 500DEF-EXPR-FAIL-NEXT: [[# VAR42: VAR20+22]] 501DEF-EXPR-FAIL-MSG: numeric-expression.txt:[[#@LINE-1]]:21: error: {{D}}EF-EXPR-FAIL-NEXT: is not on the line after the previous match 502DEF-EXPR-FAIL-MSG-NEXT: {{D}}EF-EXPR-FAIL-NEXT: {{\[\[# VAR42: VAR20\+22\]\]}} 503DEF-EXPR-FAIL-MSG-NEXT: {{^}} ^{{$}} 504 505; Verify that using a numeric variable defined on the same line (whether from 506; input or from an expression) is rejected. 507RUN: %ProtectFileCheckOutput \ 508RUN: not FileCheck --check-prefix SAME-LINE-USE1 --input-file %s %s 2>&1 \ 509RUN: | FileCheck --strict-whitespace --check-prefix SAME-LINE-USE-MSG1 %s 510RUN: %ProtectFileCheckOutput \ 511RUN: not FileCheck --check-prefix SAME-LINE-USE2 --input-file %s %s 2>&1 \ 512RUN: | FileCheck --strict-whitespace --check-prefix SAME-LINE-USE-MSG2 %s 513 514SAME LINE USE 5153 5164 5 517SAME-LINE-USE1-LABEL: SAME LINE USE 518SAME-LINE-USE1-NEXT: [[#]] 519SAME-LINE-USE1-NEXT: [[#UNSI:]] [[#UNSI+1]] 520SAME-LINE-USE-MSG1: numeric-expression.txt:[[#@LINE-1]]:36: error: numeric variable 'UNSI' defined earlier in the same CHECK directive 521SAME-LINE-USE-MSG1-NEXT: {{S}}AME-LINE-USE1-NEXT: {{\[\[#UNSI:\]\] \[\[#UNSI\+1\]\]}} 522SAME-LINE-USE-MSG1-NEXT: {{^}} ^{{$}} 523 524SAME-LINE-USE2-LABEL: SAME LINE USE 525SAME-LINE-USE2-NEXT: [[#UNSI:]] 526SAME-LINE-USE2-NEXT: [[#UNSI2:UNSI+1]] [[#UNSI2+1]] 527SAME-LINE-USE-MSG2: numeric-expression.txt:[[#@LINE-1]]:43: error: numeric variable 'UNSI2' defined earlier in the same CHECK directive 528SAME-LINE-USE-MSG2-NEXT: {{S}}AME-LINE-USE2-NEXT: {{\[\[#UNSI2:UNSI\+1\]\] \[\[#UNSI2\+1\]\]}} 529SAME-LINE-USE-MSG2-NEXT: {{^}} ^{{$}} 530 531; Invalid change of format in variable redefinition. 532RUN: %ProtectFileCheckOutput \ 533RUN: not FileCheck --check-prefix REDEF-NEW-FMT --input-file %s %s 2>&1 \ 534RUN: | FileCheck --strict-whitespace --check-prefix REDEF-NEW-FMT-MSG %s 535 536VAR REDEF FMT CHANGE 53722 538DC 539REDEF-NEW-FMT-LABEL: VAR REDEF FMT CHANGE 540REDEF-NEW-FMT-NEXT: [[#UNSI:]] 541REDEF-NEW-FMT-NEXT: [[#%X,UNSI:]] 542REDEF-NEW-FMT-MSG: numeric-expression.txt:[[#@LINE-1]]:31: error: format different from previous variable definition 543REDEF-NEW-FMT-MSG-NEXT: {{R}}EDEF-NEW-FMT-NEXT: {{\[\[#%X,UNSI:\]\]}} 544REDEF-NEW-FMT-MSG-NEXT: {{^}} ^{{$}} 545 546; Numeric expression with overflow. 547RUN: %ProtectFileCheckOutput \ 548RUN: not FileCheck --check-prefix OVERFLOW --input-file %s %s 2>&1 \ 549RUN: | FileCheck --check-prefix OVERFLOW-MSG --strict-whitespace %s 550 551OVERFLOW 552BIGVAR=10000000000000000 553OVERFLOW-LABEL: OVERFLOW 554OVERFLOW-NEXT: BIGVAR: [[#BIGVAR:0x8000000000000000+0x8000000000000000]] 555OVERFLOW-MSG: numeric-expression.txt:[[#@LINE-1]]:27: error: unable to substitute variable or numeric expression 556OVERFLOW-MSG-NEXT: {{O}}VERFLOW-NEXT: BIGVAR: {{\[\[#BIGVAR:0x8000000000000000\+0x8000000000000000\]\]}} 557OVERFLOW-MSG-NEXT: {{^}} ^{{$}} 558 559; Numeric expression with underflow. 560RUN: %ProtectFileCheckOutput \ 561RUN: not FileCheck --check-prefix UNDERFLOW --input-file %s %s 2>&1 \ 562RUN: | FileCheck --check-prefix UNDERFLOW-MSG --strict-whitespace %s 563 564UNDERFLOW 565TINYVAR=-10000000000000000 566UNDERFLOW-LABEL: UNDERFLOW 567UNDERFLOW-NEXT: TINYVAR: [[#%d,TINYVAR:-0x8000000000000000-0x8000000000000000]] 568UNDERFLOW-MSG: numeric-expression.txt:[[#@LINE-1]]:29: error: unable to substitute variable or numeric expression 569UNDERFLOW-MSG-NEXT: {{U}}NDERFLOW-NEXT: TINYVAR: {{\[\[#%d,TINYVAR:-0x8000000000000000-0x8000000000000000\]\]}} 570UNDERFLOW-MSG-NEXT: {{^}} ^{{$}} 571 572RUN: %ProtectFileCheckOutput \ 573RUN: not FileCheck -D#NUMVAR=10 --check-prefix CALL-MISSING-CLOSING-BRACKET --input-file %s %s 2>&1 \ 574RUN: | FileCheck --strict-whitespace --check-prefix CALL-MISSING-CLOSING-BRACKET-MSG %s 575 576CALL MISSING CLOSING BRACKET 57730 578CALL-MISSING-CLOSING-BRACKET-LABEL: CALL MISSING CLOSING BRACKET 579CALL-MISSING-CLOSING-BRACKET-NEXT: [[#add(NUMVAR,3]] 580CALL-MISSING-CLOSING-BRACKET-MSG: numeric-expression.txt:[[#@LINE-1]]:51: error: missing ')' at end of call expression 581CALL-MISSING-CLOSING-BRACKET-MSG-NEXT: {{C}}ALL-MISSING-CLOSING-BRACKET-NEXT: {{\[\[#add\(NUMVAR,3\]\]}} 582CALL-MISSING-CLOSING-BRACKET-MSG-NEXT: {{^}} ^{{$}} 583 584RUN: %ProtectFileCheckOutput \ 585RUN: not FileCheck -D#NUMVAR=10 --check-prefix CALL-MISSING-ARGUMENT --input-file %s %s 2>&1 \ 586RUN: | FileCheck --strict-whitespace --check-prefix CALL-MISSING-ARGUMENT-MSG %s 587 588CALL MISSING ARGUMENT 58930 590CALL-MISSING-ARGUMENT-LABEL: CALL MISSING ARGUMENT 591CALL-MISSING-ARGUMENT-NEXT: [[#add(NUMVAR,)]] 592CALL-MISSING-ARGUMENT-MSG: numeric-expression.txt:[[#@LINE-1]]:43: error: missing argument 593CALL-MISSING-ARGUMENT-MSG-NEXT: {{C}}ALL-MISSING-ARGUMENT-NEXT: {{\[\[#add\(NUMVAR,\)\]\]}} 594CALL-MISSING-ARGUMENT-MSG-NEXT: {{^}} ^{{$}} 595 596RUN: %ProtectFileCheckOutput \ 597RUN: not FileCheck -D#NUMVAR=10 --check-prefix CALL-WRONG-ARGUMENT-COUNT --input-file %s %s 2>&1 \ 598RUN: | FileCheck --strict-whitespace --check-prefix CALL-WRONG-ARGUMENT-COUNT-MSG %s 599 600CALL WRONG ARGUMENT COUNT 60130 602CALL-WRONG-ARGUMENT-COUNT-LABEL: CALL WRONG ARGUMENT COUNT 603CALL-WRONG-ARGUMENT-COUNT-NEXT: [[#add(NUMVAR)]] 604CALL-WRONG-ARGUMENT-COUNT-MSG: numeric-expression.txt:[[#@LINE-1]]:36: error: function 'add' takes 2 arguments but 1 given 605CALL-WRONG-ARGUMENT-COUNT-MSG-NEXT: {{C}}ALL-WRONG-ARGUMENT-COUNT-NEXT: {{\[\[#add\(NUMVAR\)\]\]}} 606CALL-WRONG-ARGUMENT-COUNT-MSG-NEXT: {{^}} ^{{$}} 607 608RUN: %ProtectFileCheckOutput \ 609RUN: not FileCheck -D#NUMVAR=10 --check-prefix CALL-UNDEFINED-FUNCTION --input-file %s %s 2>&1 \ 610RUN: | FileCheck --strict-whitespace --check-prefix CALL-UNDEFINED-FUNCTION-MSG %s 611 612CALL UNDEFINED FUNCTION 61330 614CALL-UNDEFINED-FUNCTION-LABEL: CALL UNDEFINED FUNCTION 615CALL-UNDEFINED-FUNCTION-NEXT: [[#bogus_function(NUMVAR)]] 616CALL-UNDEFINED-FUNCTION-MSG: numeric-expression.txt:[[#@LINE-1]]:34: error: call to undefined function 'bogus_function' 617CALL-UNDEFINED-FUNCTION-MSG-NEXT: {{C}}ALL-UNDEFINED-FUNCTION-NEXT: {{\[\[#bogus_function\(NUMVAR\)\]\]}} 618CALL-UNDEFINED-FUNCTION-MSG-NEXT: {{^}} ^{{$}} 619