Sometimes there's a need to verify output which contain several numeric

values that are related by a numeric expression. For example, one might

want to check that two numbers are consecutive but accept any value for

the smallest of the two.

This patch introduces support for numeric variables and expressions to

express this sort of constraint. A user can then define variables to

have a numeric value and write numeric expression using those variable.

A matching format specifier allows to match numbers in a variety of

format: signed and unsigned decimal numbers as well as hex number in

lower or capital case. For example, matching 2 consecutive signed

decimal integers separated by a space is done via:

[[%d,#N:]] #N+1

The syntax is modeled after that of use and definition of the already

supported variables flavour (renamed pattern variable for clarity) and

pseudo variable by adding a # just after the double opening square

bracket [[. Full details of the syntax can be found in the updated

docs/CommandGuide/FileCheck.rst.

One notable pitfall is that CHECK pattern with numeric expression using

variable defined on the same line might fail to match despite there be a

line which satisfy the conditions expressed by those numeric expression.

This is due to lack of needed support from the regular expression engine

that FileCheck relies on and is documented in the updated

docs/CommandGuide/FileCheck.rst as well as possible workaround.

Copyright:

- Linaro (changes up to diff 183612 of revision D55940)
- GraphCore (changes in later versions)