From 4ca99ba6b5cd1268e850d6eb9aba830ac05e0fcc Mon Sep 17 00:00:00 2001 From: Eli Bendersky Date: Sat, 1 Dec 2012 22:03:57 +0000 Subject: [PATCH] Update FileCheck's documentation to mention recently added feature of matching a variable defined on the same line. llvm-svn: 169103 --- llvm/docs/CommandGuide/FileCheck.rst | 31 ++++++++++++++-------------- 1 file changed, 16 insertions(+), 15 deletions(-) diff --git a/llvm/docs/CommandGuide/FileCheck.rst b/llvm/docs/CommandGuide/FileCheck.rst index 3c46ee213034..256970b36240 100644 --- a/llvm/docs/CommandGuide/FileCheck.rst +++ b/llvm/docs/CommandGuide/FileCheck.rst @@ -223,9 +223,9 @@ FileCheck Variables It is often useful to match a pattern and then verify that it occurs again later in the file. For codegen tests, this can be useful to allow any register, -but verify that that register is used consistently later. To do this, FileCheck -allows named variables to be defined and substituted into patterns. Here is a -simple example: +but verify that that register is used consistently later. To do this, +:program:`FileCheck` allows named variables to be defined and substituted into +patterns. Here is a simple example: .. code-block:: llvm @@ -235,20 +235,21 @@ simple example: The first check line matches a regex ``%[a-z]+`` and captures it into the variable ``REGISTER``. The second line verifies that whatever is in -``REGISTER`` occurs later in the file after an "``andw``". FileCheck variable -references are always contained in ``[[ ]]`` pairs, and their names can be -formed with the regex ``[a-zA-Z][a-zA-Z0-9]*``. If a colon follows the name, +``REGISTER`` occurs later in the file after an "``andw``". :program:`FileCheck` +variable references are always contained in ``[[ ]]`` pairs, and their names can +be formed with the regex ``[a-zA-Z][a-zA-Z0-9]*``. If a colon follows the name, then it is a definition of the variable; otherwise, it is a use. -FileCheck variables can be defined multiple times, and uses always get the -latest value. Note that variables are all read at the start of a "``CHECK``" -line and are all defined at the end. This means that if you have something -like "``CHECK: [[XYZ:.*]]x[[XYZ]]``", the check line will read the previous -value of the ``XYZ`` variable and define a new one after the match is -performed. If you need to do something like this you can probably take -advantage of the fact that FileCheck is not actually line-oriented when it -matches, this allows you to define two separate "``CHECK``" lines that match on -the same line. +:program:`FileCheck` variables can be defined multiple times, and uses always +get the latest value. Variables can also be used later on the same line they +were defined on. For example: + +.. code-block:: llvm + + ; CHECK: op [[REG:r[0-9]+]], [[REG]] + +Can be useful if you want the operands of ``op`` to be the same register, +and don't care exactly which register it is. FileCheck Expressions ~~~~~~~~~~~~~~~~~~~~~