#
bcf5b441 |
| 11-Jul-2018 |
Joel E. Denny <jdenny.ornl@gmail.com> |
[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 cons
[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
llvm-svn: 336847
show more ...
|
#
614c9861 |
| 11-Jul-2018 |
Joel E. Denny <jdenny.ornl@gmail.com> |
Revert r336830: [FileCheck] Don't permit overlapping CHECK-DAG
Companion patches are failing to commit, and this patch alone breaks many tests.
llvm-svn: 336833
|
#
edf33885 |
| 11-Jul-2018 |
Joel E. Denny <jdenny.ornl@gmail.com> |
[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 cons
[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
llvm-svn: 336830
show more ...
|
#
5507f668 |
| 26-Jun-2018 |
James Henderson <jh7370@my.bristol.ac.uk> |
[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 usi
[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
llvm-svn: 335613
show more ...
|
Revision tags: llvmorg-6.0.1, llvmorg-6.0.1-rc3, llvmorg-6.0.1-rc2, llvmorg-6.0.1-rc1 |
|
#
197194b6 |
| 13-Apr-2018 |
Rui Ueyama <ruiu@google.com> |
Define InitLLVM to do common initialization all at once.
We have a few functions that virtually all command wants to run on process startup/shutdown. This patch adds InitLLVM class to do that all at
Define InitLLVM to do common initialization all at once.
We have a few functions that virtually all command wants to run on process startup/shutdown. This patch adds InitLLVM class to do that all at once, so that we don't need to copy-n-paste boilerplate code to each llvm command's main() function.
Differential Revision: https://reviews.llvm.org/D45602
llvm-svn: 330046
show more ...
|
Revision tags: llvmorg-5.0.2, llvmorg-5.0.2-rc2, llvmorg-5.0.2-rc1, llvmorg-6.0.0, llvmorg-6.0.0-rc3, llvmorg-6.0.0-rc2, llvmorg-6.0.0-rc1 |
|
#
83e63d96 |
| 16-Jan-2018 |
George Rimar <grimar@accesssoftek.com> |
[FileCheck] - Fix possible buffer out of bounds access when parsing --check-prefix.
FileCheck tool crashes when trying to parse --check-prefix argument if there is no any data after it.
For example
[FileCheck] - Fix possible buffer out of bounds access when parsing --check-prefix.
FileCheck tool crashes when trying to parse --check-prefix argument if there is no any data after it.
For example test like following would crash if there are no symbols and no EOL mark after `boom`:
# REQUIRES: x86 # RUN: <skipped few lines> # RUN: llvm-readobj -t %t | FileCheck %s --check-prefix=boom
Patch fixes the issue.
Differential revision: https://reviews.llvm.org/D42057
llvm-svn: 322536
show more ...
|
Revision tags: llvmorg-5.0.1, llvmorg-5.0.1-rc3, llvmorg-5.0.1-rc2 |
|
#
46e1fd61 |
| 07-Nov-2017 |
Alexander Richardson <arichardson.kde@gmail.com> |
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,
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
llvm-svn: 317572
show more ...
|
Revision tags: llvmorg-5.0.1-rc1, llvmorg-5.0.0, llvmorg-5.0.0-rc5, llvmorg-5.0.0-rc4, llvmorg-5.0.0-rc3, llvmorg-5.0.0-rc2, llvmorg-5.0.0-rc1, llvmorg-4.0.1, llvmorg-4.0.1-rc3 |
|
#
cf60ab31 |
| 07-Jun-2017 |
Benjamin Kramer <benny.kra@googlemail.com> |
[FileCheck] Don't scan past the closing CHECK-DAG for CHECK-NOT inside CHECK-DAG
If there's enough data in fron of it the skipped region would just become arbitrarily large, and we scan for the CHEC
[FileCheck] Don't scan past the closing CHECK-DAG for CHECK-NOT inside CHECK-DAG
If there's enough data in fron of it the skipped region would just become arbitrarily large, and we scan for the CHECK-NOT everywhere.
llvm-svn: 304900
show more ...
|
Revision tags: llvmorg-4.0.1-rc2, llvmorg-4.0.1-rc1 |
|
#
b5ecceff |
| 14-Mar-2017 |
James Henderson <jh7370@my.bristol.ac.uk> |
Test commit.
llvm-svn: 297731
|
#
f55e72a5 |
| 09-Mar-2017 |
Artem Belevich <tra@google.com> |
[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
[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
llvm-svn: 297396
show more ...
|
Revision tags: llvmorg-4.0.0, llvmorg-4.0.0-rc4, llvmorg-4.0.0-rc3, llvmorg-4.0.0-rc2, llvmorg-4.0.0-rc1 |
|
#
1714676a |
| 18-Dec-2016 |
Tom de Vries <vries@codesourcery.com> |
[FileCheck] Fix --strict-whitespace --match-full-lines
Make sure FileCheck --strict-whitespace --match-full-lines translates 'CHECK: bla ' into pattern '^ bla $' instead of pattern '^bla$'.
llvm-sv
[FileCheck] Fix --strict-whitespace --match-full-lines
Make sure FileCheck --strict-whitespace --match-full-lines translates 'CHECK: bla ' into pattern '^ bla $' instead of pattern '^bla$'.
llvm-svn: 290069
show more ...
|
#
a26bc914 |
| 18-Dec-2016 |
Tom de Vries <vries@codesourcery.com> |
[FileCheck] Fix comment in ReadCheckFile
The comment in ReadCheckFile claims that both leading and trailing whitespace are removed, but the associated statement only removes leading whitespace.
llv
[FileCheck] Fix comment in ReadCheckFile
The comment in ReadCheckFile claims that both leading and trailing whitespace are removed, but the associated statement only removes leading whitespace.
llvm-svn: 290061
show more ...
|
#
726774cb |
| 11-Dec-2016 |
Chandler Carruth <chandlerc@gmail.com> |
[FileCheck] Re-implement the logic to find each check prefix in the check file to not be unreasonably slow in the face of multiple check prefixes.
The previous logic would repeatedly scan potentiall
[FileCheck] Re-implement the logic to find each check prefix in the check file to not be unreasonably slow in the face of multiple check prefixes.
The previous logic would repeatedly scan potentially large portions of the check file looking for alternative prefixes. In the worst case this would scan most of the file looking for a rare prefix between every single occurance of a common prefix. Even if we bounded the scan, this would do bad things if the order of the prefixes was "unlucky" and the distant prefix was scanned for first.
None of this is necessary. It is straightforward to build a state machine that recognizes the first, longest of the set of alternative prefixes. That is in fact exactly whan a regular expression does.
This patch builds a regular expression once for the set of prefixes and then uses it to search incrementally for the next prefix. This requires some threading of state but actually makes the code dramatically simpler. I've also added a big comment describing the algorithm as it was not at all obvious to me when I started.
With this patch, several previously pathological test cases in test/CodeGen/X86 are 5x and more faster. Overall, running all tests under test/CodeGen/X86 uses 10% less CPU after this, and because all the slowest tests were hitting this, finishes in 40% less wall time on my system (going from just over 5.38s to just over 3.23s) on a release build! This patch substantially improves the time of all 7 X86 tests that were in the top 20 reported by --time-tests, 5 of them are completely off the list and the remaining 2 are much lower. (Sadly, the new tests on the list include 2 new X86 ones that are slow for unrelated reasons, so the count stays at 4 of the top 20.)
It isn't clear how much this helps debug builds in aggregate in part because of the noise, but it again makes mane of the slowest x86 tests significantly faster (10% or more improvement).
llvm-svn: 289382
show more ...
|
#
b03c166a |
| 11-Dec-2016 |
Chandler Carruth <chandlerc@gmail.com> |
[FileCheck] Remove a parameter that was simply always set to a commandline flag and test the flag directly. NFC.
If we ever need this generality it can be added back.
llvm-svn: 289381
|
#
4dabac20 |
| 11-Dec-2016 |
Chandler Carruth <chandlerc@gmail.com> |
[FileCheck] Clean up doxygen comments throughout. NFC.
llvm-svn: 289380
|
#
e8f2fb20 |
| 11-Dec-2016 |
Chandler Carruth <chandlerc@gmail.com> |
[FileCheck] Run clang-format over this code. NFC.
This fixes one formatting goof I left in my previous commit and *many* other inconsistencies.
I'm planning to make substantial changes here and so
[FileCheck] Run clang-format over this code. NFC.
This fixes one formatting goof I left in my previous commit and *many* other inconsistencies.
I'm planning to make substantial changes here and so wanted to get to a clean baseline.
llvm-svn: 289379
show more ...
|
#
20247900 |
| 11-Dec-2016 |
Chandler Carruth <chandlerc@gmail.com> |
Refactor FileCheck some to reduce memory allocation and copying. Also make some readability improvements.
Both the check file and input file have to be fully buffered to normalize their whitespace.
Refactor FileCheck some to reduce memory allocation and copying. Also make some readability improvements.
Both the check file and input file have to be fully buffered to normalize their whitespace. But previously this would be done in a stack SmallString and then copied into a heap allocated MemoryBuffer. That seems pretty wasteful, especially for something like FileCheck where there are only ever two such entities.
This just rearranges the code so that we can keep the canonicalized buffers on the stack of the main function, use reasonably large stack buffers to reduce allocation. A rough estimate seems to show that about 80% of LLVM's .ll and .s files will fit into a 4k buffer, so this should completely avoid heap allocation for the buffer in those cases. My system's malloc is fast enough that the allocations don't directly show up in timings. However, on some very slow test cases, this saves 1% - 2% by avoiding the copy into the heap allocated buffer.
This also splits out the code which checks the input into a helper much like the code to build the checks as that made the code much more readable to me. Nit picks and suggestions welcome here. It has really exposed a *bunch* of stuff that could be cleaned up though, so I'm probably going to go and spring clean all of this code as I have more changes coming to speed things up.
llvm-svn: 289378
show more ...
|
Revision tags: llvmorg-3.9.1, llvmorg-3.9.1-rc3, llvmorg-3.9.1-rc2, llvmorg-3.9.1-rc1 |
|
#
d1e020f7 |
| 26-Aug-2016 |
Saleem Abdulrasool <compnerd@compnerd.org> |
FileCheck: Minor cleanup of the class Pattern
1. Add the "explicit" specifier to the single-argument constructor of Pattern 2. Reorder the fields to remove excessive padding (8 bytes).
Patch by Ale
FileCheck: Minor cleanup of the class Pattern
1. Add the "explicit" specifier to the single-argument constructor of Pattern 2. Reorder the fields to remove excessive padding (8 bytes).
Patch by Alexander Shaposhnikov!
llvm-svn: 279832
show more ...
|
Revision tags: llvmorg-3.9.0, llvmorg-3.9.0-rc3, llvmorg-3.9.0-rc2, llvmorg-3.9.0-rc1 |
|
#
fd557cb0 |
| 14-Jun-2016 |
Daniel Sanders <daniel.sanders@imgtec.com> |
[FileCheck] Add --check-prefixes as a shorthand for multiple --check-prefix options.
Summary: This new alias takes a comma separated list of prefixes which allows '--check-prefix=A --check-prefix=B
[FileCheck] Add --check-prefixes as a shorthand for multiple --check-prefix options.
Summary: This new alias takes a comma separated list of prefixes which allows '--check-prefix=A --check-prefix=B --check-prefix=C' to be written as '--check-prefixes=A,B,C'.
Reviewers: probinson
Subscribers: probinson, llvm-commits, dsanders
Differential Revision: http://reviews.llvm.org/D21293
llvm-svn: 272670
show more ...
|
#
2ad6d48b |
| 09-Jun-2016 |
Richard Smith <richard-llvm@metafoo.co.uk> |
Search for llvm-symbolizer binary in the same directory as argv[0], before looking for it along $PATH. This allows installs of LLVM tools outside of $PATH to find the symbolizer and produce pretty ba
Search for llvm-symbolizer binary in the same directory as argv[0], before looking for it along $PATH. This allows installs of LLVM tools outside of $PATH to find the symbolizer and produce pretty backtraces if they crash.
llvm-svn: 272232
show more ...
|
Revision tags: llvmorg-3.8.1, llvmorg-3.8.1-rc1 |
|
#
2bd4f8b6 |
| 27-May-2016 |
Xinliang David Li <davidxl@google.com> |
FileCheck: dump command line context with empty input
Differential Revision: http://reviews.llvm.org/D20716
llvm-svn: 271047
|
Revision tags: llvmorg-3.8.0 |
|
#
a908e7bd |
| 29-Feb-2016 |
Paul Robinson <paul_robinson@playstation.sony.com> |
Reapply r262092: [FileCheck] Abort if -NOT is combined with another suffix. Combinations of suffixes that look useful are actually ignored; complaining about them will avoid mistakes.
Differential R
Reapply r262092: [FileCheck] Abort if -NOT is combined with another suffix. Combinations of suffixes that look useful are actually ignored; complaining about them will avoid mistakes.
Differential Revision: http://reviews.llvm.org/D17587
llvm-svn: 262263
show more ...
|
#
4b618dcc |
| 26-Feb-2016 |
Paul Robinson <paul_robinson@playstation.sony.com> |
Revert r262092, caught LLD tests
llvm-svn: 262093
|
#
abcfa395 |
| 26-Feb-2016 |
Paul Robinson <paul_robinson@playstation.sony.com> |
[FileCheck] Abort if -NOT is combined with another suffix. Combinations of suffixes that look useful actually are ignored; complaining about them will avoid mistakes.
Differential Revision: http://r
[FileCheck] Abort if -NOT is combined with another suffix. Combinations of suffixes that look useful actually are ignored; complaining about them will avoid mistakes.
Differential Revision: http://reviews.llvm.org/D17587
llvm-svn: 262092
show more ...
|
Revision tags: llvmorg-3.8.0-rc3 |
|
#
85913cca |
| 11-Feb-2016 |
James Y Knight <jyknight@google.com> |
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.
llvm-svn: 260540
|