39 Commits

Author SHA1 Message Date
George Karpenkov
4571da68d1 [FileCheck] Provide an option for FileCheck to dump original input to stderr on failure
The option can be either set using environment variable (e.g. env
FILECHECK_DUMP_INPUT_ON_FAILURE=1 ninja check-fuzzer) or with a
FileCheck flag.

This can be extremely useful for debugging, cf.
https://groups.google.com/forum/#!topic/llvm-dev/kLrzg8OM_h8 for
discussion.

Differential Revision: https://reviews.llvm.org/D49328

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@337609 91177308-0d34-0410-b5e6-96231b3b80d8
2018-07-20 20:21:57 +00:00
Joel E. Denny
9074a87ea5 [FileCheck] Implement -v and -vv for tracing matches
-v prints all directive pattern matches.

-vv additionally prints info that might be noise to users but that can
be helpful to FileCheck developers.

To maximize code reuse and to make diagnostics more consistent, this
patch also adjusts and extends some of the existing diagnostics.
CHECK-NOT failures now report variables uses.  Many more diagnostics
now report the check prefix and kind of directive.

Reviewed By: probinson

Differential Revision: https://reviews.llvm.org/D47114

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@336967 91177308-0d34-0410-b5e6-96231b3b80d8
2018-07-13 03:08:23 +00:00
Joel E. Denny
0195c0bee9 [FileCheck] Don't permit overlapping CHECK-DAG
That is, make CHECK-DAG skip matches that overlap the matches of any
preceding consecutive CHECK-DAG directives.  This change makes
CHECK-DAG more consistent with other directives, and there is evidence
it makes CHECK-DAG more intuitive and less error-prone.  See the RFC
discussion starting at:

  http://lists.llvm.org/pipermail/llvm-dev/2018-May/123010.html

Moreover, this behavior enables CHECK-DAG groups for unordered,
non-unique strings or patterns.  For example, it is useful for
verifying output or logs from a parallel program, such as the OpenMP
runtime.

This patch also implements the command-line option
-allow-deprecated-dag-overlap, which reverts CHECK-DAG to the old
overlapping behavior.  This option should not be used in new tests.
It is meant only for the existing tests that are broken by this change
and that need time to update.

See the following bugzilla issue for tracking of such tests:

  https://bugs.llvm.org/show_bug.cgi?id=37532

Patches to add -allow-deprecated-dag-overlap to those tests will
follow immediately.

Reviewed By: probinson

Differential Revision: https://reviews.llvm.org/D47106

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@336847 91177308-0d34-0410-b5e6-96231b3b80d8
2018-07-11 20:27:27 +00:00
Joel E. Denny
0e8a665664 Revert r336830: [FileCheck] Don't permit overlapping CHECK-DAG
Companion patches are failing to commit, and this patch alone breaks
many tests.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@336833 91177308-0d34-0410-b5e6-96231b3b80d8
2018-07-11 19:03:00 +00:00
Joel E. Denny
c642c1b4d7 [FileCheck] Don't permit overlapping CHECK-DAG
That is, make CHECK-DAG skip matches that overlap the matches of any
preceding consecutive CHECK-DAG directives.  This change makes
CHECK-DAG more consistent with other directives, and there is evidence
it makes CHECK-DAG more intuitive and less error-prone.  See the RFC
discussion starting at:

  http://lists.llvm.org/pipermail/llvm-dev/2018-May/123010.html

Moreover, this behavior enables CHECK-DAG groups for unordered,
non-unique strings or patterns.  For example, it is useful for
verifying output or logs from a parallel program, such as the OpenMP
runtime.

This patch also implements the command-line option
-allow-deprecated-dag-overlap, which reverts CHECK-DAG to the old
overlapping behavior.  This option should not be used in new tests.
It is meant only for the existing tests that are broken by this change
and that need time to update.

See the following bugzilla issue for tracking of such tests:

  https://bugs.llvm.org/show_bug.cgi?id=37532

Patches to add -allow-deprecated-dag-overlap to those tests will
follow immediately.

Reviewed By: probinson

Differential Revision: https://reviews.llvm.org/D47106

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@336830 91177308-0d34-0410-b5e6-96231b3b80d8
2018-07-11 18:42:58 +00:00
James Henderson
3e90a9b8c8 Fix doc title underlining.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@335615 91177308-0d34-0410-b5e6-96231b3b80d8
2018-06-26 15:29:09 +00:00
James Henderson
583ccd4384 [FileCheck] Add CHECK-EMPTY directive for checking for blank lines
Prior to this change, there was no clean way of getting FileCheck to
check that a line is completely empty. The expected way of using
"CHECK: {{^$}}" does not work because the '^' matches the end of the
previous match (this behaviour may be desirable in certain instances).
For the same reason, "CHECK-NEXT: {{^$}}" will fail when the previous
match was at the end of the line, as the pattern will match there.
Using the recommended [[:space:]] to match an explicit new line could
also match a space, and thus is not always desired. Literal '\n'
matches also do not work. A workaround was suggested in the review, but
it is a little clunky.

This change adds a new directive that behaves the same as CHECK-NEXT,
except that it only matches against empty lines (nothing, not even
whitespace, is allowed). As with CHECK-NEXT, it will fail if more than
one newline occurs before the next blank line. Example usage:
; test.txt
foo

bar
; CHECK: foo
; CHECK-EMPTY:
; CHECK-NEXT: bar

Differential Revision: https://reviews.llvm.org/D28896

Reviewed by: probinson


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@335613 91177308-0d34-0410-b5e6-96231b3b80d8
2018-06-26 15:15:45 +00:00
Alexander Richardson
7c37aa1189 Add a -D flag to FileCheck to define variables
Summary:
This makes it very easy to test files that only differ in a constant
value somewhere in the test case.

Reviewers: jlebar, hfinkel, chandlerc, probinson

Reviewed By: probinson

Subscribers: probinson, llvm-commits

Differential Revision: https://reviews.llvm.org/D39629

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@317572 91177308-0d34-0410-b5e6-96231b3b80d8
2017-11-07 13:24:44 +00:00
Sjoerd Meijer
a0af046f39 [FileCheck] regexp doc update/fix
Minor doc update that the FileCheck matcher supports POSIX ERE.
It also fixes a minor issue in the regexp describing a variable
name: underscores are allowed too.

Differential Revision: https://reviews.llvm.org/D38787



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@315679 91177308-0d34-0410-b5e6-96231b3b80d8
2017-10-13 14:02:36 +00:00
Artem Belevich
bb9779aa2e [FileCheck] Added --enable-var-scope option to enable scope for regex variables.
If `--enable-var-scope` is in effect, variables with names that
start with `$` are considered to be global. All other variables are
local. All local variables get undefined at the beginning of each
CHECK-LABEL block. Global variables are not affected by CHECK-LABEL.
This makes it easier to ensure that individual tests are not affected
by variables set in preceding tests.

Differential Revision: https://reviews.llvm.org/D30749

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@297396 91177308-0d34-0410-b5e6-96231b3b80d8
2017-03-09 17:59:04 +00:00
Renato Golin
88ea57fa26 [docs] Fixing Sphinx warnings to unclog the buildbot
Lots of blocks had "llvm" or "nasm" syntax types but either weren't following
the syntax, or the syntax has changed (and sphinx hasn't keep up) or the type
doesn't even exist (nasm?).

Other documents had :options: what were invalid. I only removed those that had
warnings, and left the ones that didn't, in order to follow the principle of
least surprise.

This is like this for ages, but the buildbot is now failing on errors. It may
take a while to upgrade the buildbot's sphinx, if that's even possible, but
that shouldn't stop us from getting docs updates (which seem down for quite
a while).

Also, we're not losing any syntax highlight, since when it doesn't parse, it
doesn't colour. Ie. those blocks are not being highlighted anyway.

I'm trying to get all docs in one go, so that it's easy to revert later if we
do fix, or at least easy to know what's to fix.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@276109 91177308-0d34-0410-b5e6-96231b3b80d8
2016-07-20 12:16:38 +00:00
Wolfgang Pieb
f64136cb37 Document the ability to perform multi-line pattern matching in FileCheck.
Differential review: http://reviews.llvm.org/D21522


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@273962 91177308-0d34-0410-b5e6-96231b3b80d8
2016-06-27 23:59:00 +00:00
Daniel Sanders
3fc85ab7c2 [FileCheck] Document --check-prefixes.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@272683 91177308-0d34-0410-b5e6-96231b3b80d8
2016-06-14 16:42:05 +00:00
James Y Knight
5b06a939bd Add -match-full-lines argument to FileCheck.
This is useful for some tests where more-exact matching is useful, such
as clang's Preprocessor tests.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@260540 91177308-0d34-0410-b5e6-96231b3b80d8
2016-02-11 16:46:09 +00:00
Duncan P. N. Exon Smith
e56023a059 IR: Give 'DI' prefix to debug info metadata
Finish off PR23080 by renaming the debug info IR constructs from `MD*`
to `DI*`.  The last of the `DIDescriptor` classes were deleted in
r235356, and the last of the related typedefs removed in r235413, so
this has all baked for about a week.

Note: If you have out-of-tree code (like a frontend), I recommend that
you get everything compiling and tests passing with the *previous*
commit before updating to this one.  It'll be easier to keep track of
what code is using the `DIDescriptor` hierarchy and what you've already
updated, and I think you're extremely unlikely to insert bugs.  YMMV of
course.

Back to *this* commit: I did this using the rename-md-di-nodes.sh
upgrade script I've attached to PR23080 (both code and testcases) and
filtered through clang-format-diff.py.  I edited the tests for
test/Assembler/invalid-generic-debug-node-*.ll by hand since the columns
were off-by-three.  It should work on your out-of-tree testcases (and
code, if you've followed the advice in the previous paragraph).

Some of the tests are in badly named files now (e.g.,
test/Assembler/invalid-mdcompositetype-missing-tag.ll should be
'dicompositetype'); I'll come back and move the files in a follow-up
commit.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@236120 91177308-0d34-0410-b5e6-96231b3b80d8
2015-04-29 16:38:44 +00:00
Paul Robinson
a0c307d623 All FileCheck directives allow patterns.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@231418 91177308-0d34-0410-b5e6-96231b3b80d8
2015-03-05 23:04:26 +00:00
Duncan P. N. Exon Smith
cc2c1c9bf6 FileCheck: Document CHECK-SAME, follow-up to r230612
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@231379 91177308-0d34-0410-b5e6-96231b3b80d8
2015-03-05 17:00:05 +00:00
Dan Liew
cef5388ce8 Fix Sphinx warnings.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@213559 91177308-0d34-0410-b5e6-96231b3b80d8
2014-07-21 16:39:00 +00:00
Alexander Kornienko
c58b079d23 Add FileCheck -implicit-check-not option to allow stricter tests without adding too many CHECK-NOTs manually.
Summary:
Add FileCheck -implicit-check-not option which allows specifying a
pattern that should only occur in the input when explicitly matched by a
positive check. This feature allows checking tool diagnostics in a way
clang -verify does it for compiler diagnostics.

The option has been tested on a number of clang-tidy checks, I'll post a link to
the clang-tidy patch to this thread.

Once there's an agreement on the general direction, I can add tests and
documentation.

Reviewers: djasper, bkramer

Reviewed By: bkramer

Subscribers: llvm-commits

Differential Revision: http://reviews.llvm.org/D4462

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@212810 91177308-0d34-0410-b5e6-96231b3b80d8
2014-07-11 12:39:32 +00:00
Matt Arsenault
ee4f5eae1c Allow multiple check prefixes in FileCheck.
This is useful if you want to run multiple variations
of a single test, and the majority of check lines
should be the same.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@194343 91177308-0d34-0410-b5e6-96231b3b80d8
2013-11-10 02:04:09 +00:00
Renato Golin
f02062f889 Add warning about CHECK-DAG with variable definition
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@192479 91177308-0d34-0410-b5e6-96231b3b80d8
2013-10-11 18:50:22 +00:00
Bill Wendling
d6a721b14d Fix underscore to be the proper length.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@187406 91177308-0d34-0410-b5e6-96231b3b80d8
2013-07-30 08:26:24 +00:00
Stephen Lin
d639206676 Fix FileCheck CHECK-LABEL documentation wording slightly; also mention that it allows error recovery.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@186628 91177308-0d34-0410-b5e6-96231b3b80d8
2013-07-18 23:26:58 +00:00
Stephen Lin
eeea96d4c0 Correct inaccurate statement in FileCheck docs.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@186290 91177308-0d34-0410-b5e6-96231b3b80d8
2013-07-14 18:12:25 +00:00
Stephen Lin
178504b07b Add new directive called CHECK-LABEL to FileCheck.
CHECK-LABEL is meant to be used in place on CHECK on lines containing identifiers or other unique labels (they need not actually be labels in the source or output language, though.) This is used to break up the input stream into separate blocks delineated by CHECK-LABEL lines, each of which is checked independently. This greatly improves the accuracy of errors and fix-it hints in many cases, and allows for FileCheck to recover from errors in one block by continuing to subsequent blocks.

Some tests will be converted to use this new directive in forthcoming patches.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@186162 91177308-0d34-0410-b5e6-96231b3b80d8
2013-07-12 14:51:05 +00:00
Sean Silva
a5706fcd80 [docs] Fix formatting.
'\n' was displaying as 'n'

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@184507 91177308-0d34-0410-b5e6-96231b3b80d8
2013-06-21 00:27:54 +00:00
Michael Liao
95ab326674 Add 'CHECK-DAG' support
Refer to 'FileCheck.rst'f for details of 'CHECK-DAG'.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@181827 91177308-0d34-0410-b5e6-96231b3b80d8
2013-05-14 20:34:12 +00:00
Guy Benyei
4cc74fcba0 Canonicalize line endings to Linux style also when the --strict-whitespace flag is in use. This flag is supposed to affect horizontal whitespaces only.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@174541 91177308-0d34-0410-b5e6-96231b3b80d8
2013-02-06 20:40:38 +00:00
Eli Bendersky
ed04fd2053 Update FileCheck's documentation to mention recently added feature of
matching a variable defined on the same line.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@169103 91177308-0d34-0410-b5e6-96231b3b80d8
2012-12-01 22:03:57 +00:00
Dmitri Gribenko
c8c3dbd911 Documentation for FileCheck: use 'option' and 'program' directives.
This enables option cross-referencing and now '--' in option names are no more turned into en dashes.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@168926 91177308-0d34-0410-b5e6-96231b3b80d8
2012-11-29 19:21:02 +00:00
Eli Bendersky
17ced4521f Fix a typo in FileCheck.rst
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@168466 91177308-0d34-0410-b5e6-96231b3b80d8
2012-11-21 22:40:52 +00:00
Alexander Kornienko
70a870add8 Support for [[@LINE]], [[@LINE+<offset>]], [[@LINE-<offset>]] expressions in
FileCheck.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@167978 91177308-0d34-0410-b5e6-96231b3b80d8
2012-11-14 21:07:37 +00:00
Dmitri Gribenko
0fab191994 FileCheck.rst: change formatting of code-like constructs to use a monospaced
font.  These were formatted in bold, but that's not correct.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@167964 91177308-0d34-0410-b5e6-96231b3b80d8
2012-11-14 19:42:32 +00:00
Eli Bendersky
796f2b02f7 Fix a broken sentence
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@167521 91177308-0d34-0410-b5e6-96231b3b80d8
2012-11-07 01:52:41 +00:00
Eli Bendersky
c78bb707a5 Document the -input-file option of FileCheck
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@167517 91177308-0d34-0410-b5e6-96231b3b80d8
2012-11-07 01:41:30 +00:00
Dmitri Gribenko
0d887a0942 Use correct syntax highliter in code blocks. Noticed by Sean Silva.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@158359 91177308-0d34-0410-b5e6-96231b3b80d8
2012-06-12 15:45:07 +00:00
Dmitri Gribenko
32f9bca2d7 FileCheck docs: remove leftover HTML markup.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@158344 91177308-0d34-0410-b5e6-96231b3b80d8
2012-06-12 00:48:47 +00:00
Chad Rosier
d6d05e3f78 Typo. Patch by Nicklas Bo Jensen <nbjensen@gmail.com>.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@157415 91177308-0d34-0410-b5e6-96231b3b80d8
2012-05-24 21:17:47 +00:00
Daniel Dunbar
3b709d5f55 [docs] Add ReST version of all the man pages.
- The POD versions are slated for execution, but are still around until
   llvm.org machinery is in place.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@156384 91177308-0d34-0410-b5e6-96231b3b80d8
2012-05-08 16:50:35 +00:00