[llvm] r262092 - [FileCheck] Abort if -NOT is combined with another suffix.

Sean Silva via llvm-commits llvm-commits at lists.llvm.org
Sat Feb 27 00:08:11 PST 2016


Nice!

-- Sean Silva

On Fri, Feb 26, 2016 at 3:34 PM, Paul Robinson via llvm-commits <
llvm-commits at lists.llvm.org> wrote:

> Author: probinson
> Date: Fri Feb 26 17:34:02 2016
> New Revision: 262092
>
> URL: http://llvm.org/viewvc/llvm-project?rev=262092&view=rev
> Log:
> [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
>
> Added:
>     llvm/trunk/test/FileCheck/no-multi-suffixes.txt
> Modified:
>     llvm/trunk/utils/FileCheck/FileCheck.cpp
>
> Added: llvm/trunk/test/FileCheck/no-multi-suffixes.txt
> URL:
> http://llvm.org/viewvc/llvm-project/llvm/trunk/test/FileCheck/no-multi-suffixes.txt?rev=262092&view=auto
>
> ==============================================================================
> --- llvm/trunk/test/FileCheck/no-multi-suffixes.txt (added)
> +++ llvm/trunk/test/FileCheck/no-multi-suffixes.txt Fri Feb 26 17:34:02
> 2016
> @@ -0,0 +1,28 @@
> +; RUN: not FileCheck -check-prefix=DAGNOT -input-file %s %s 2>&1 |
> FileCheck -check-prefix=ERROR -check-prefix=DAGNOT-ERROR %s
> +; RUN: not FileCheck -check-prefix=NOTDAG -input-file %s %s 2>&1 |
> FileCheck -check-prefix=ERROR -check-prefix=NOTDAG-ERROR %s
> +; RUN: not FileCheck -check-prefix=NEXTNOT -input-file %s %s 2>&1 |
> FileCheck -check-prefix=ERROR -check-prefix=NEXTNOT-ERROR %s
> +; RUN: not FileCheck -check-prefix=NOTNEXT -input-file %s %s 2>&1 |
> FileCheck -check-prefix=ERROR -check-prefix=NOTNEXT-ERROR %s
> +; RUN: not FileCheck -check-prefix=SAMENOT -input-file %s %s 2>&1 |
> FileCheck -check-prefix=ERROR -check-prefix=SAMENOT-ERROR %s
> +; RUN: not FileCheck -check-prefix=NOTSAME -input-file %s %s 2>&1 |
> FileCheck -check-prefix=ERROR -check-prefix=NOTSAME-ERROR %s
> +
> +foo
> +; DAGNOT: foo
> +; DAGNOT-DAG-NOT: bar
> +; NOTDAG: foo
> +; NOTDAG-NOT-DAG: bar
> +; NEXTNOT: foo
> +; NEXTNOT-NEXT-NOT: bar
> +; NOTNEXT: foo
> +; NOTNEXT-NOT-NEXT: bar
> +; SAMENOT: foo
> +; SAMENOT-SAME-NOT: bar
> +; NOTSAME: foo
> +; NOTSAME-NOT-SAME: bar
> +
> +; ERROR: error: unsupported -NOT combo on prefix
> +; DAGNOT-ERROR-SAME:  'DAGNOT'
> +; NOTDAG-ERROR-SAME:  'NOTDAG'
> +; NEXTNOT-ERROR-SAME: 'NEXTNOT'
> +; NOTNEXT-ERROR-SAME: 'NOTNEXT'
> +; SAMENOT-ERROR-SAME: 'SAMENOT'
> +; NOTSAME-ERROR-SAME: 'NOTSAME'
>
> Modified: llvm/trunk/utils/FileCheck/FileCheck.cpp
> URL:
> http://llvm.org/viewvc/llvm-project/llvm/trunk/utils/FileCheck/FileCheck.cpp?rev=262092&r1=262091&r2=262092&view=diff
>
> ==============================================================================
> --- llvm/trunk/utils/FileCheck/FileCheck.cpp (original)
> +++ llvm/trunk/utils/FileCheck/FileCheck.cpp Fri Feb 26 17:34:02 2016
> @@ -86,7 +86,9 @@ namespace Check {
>
>      /// MatchEOF - When set, this pattern only matches the end of file.
> This is
>      /// used for trailing CHECK-NOTs.
> -    CheckEOF
> +    CheckEOF,
> +    /// CheckBadNot - Found -NOT combined with another CHECK suffix.
> +    CheckBadNot
>    };
>  }
>
> @@ -693,6 +695,7 @@ static bool IsPartOfWord(char c) {
>  static size_t CheckTypeSize(Check::CheckType Ty) {
>    switch (Ty) {
>    case Check::CheckNone:
> +  case Check::CheckBadNot:
>      return 0;
>
>    case Check::CheckPlain:
> @@ -746,6 +749,12 @@ static Check::CheckType FindCheckType(St
>    if (Rest.startswith("LABEL:"))
>      return Check::CheckLabel;
>
> +  // You can't combine -NOT with another suffix.
> +  if (Rest.startswith("DAG-NOT:") || Rest.startswith("NOT-DAG:") ||
> +      Rest.startswith("NEXT-NOT:") || Rest.startswith("NOT-NEXT:") ||
> +      Rest.startswith("SAME-NOT:") || Rest.startswith("NOT-SAME:"))
> +    return Check::CheckBadNot;
> +
>    return Check::CheckNone;
>  }
>
> @@ -914,6 +923,14 @@ static bool ReadCheckFile(SourceMgr &SM,
>      // PrefixLoc is to the start of the prefix. Skip to the end.
>      Buffer = Buffer.drop_front(UsedPrefix.size() +
> CheckTypeSize(CheckTy));
>
> +    // Complain about useful-looking but unsupported suffixes.
> +    if (CheckTy == Check::CheckBadNot) {
> +      SM.PrintMessage(SMLoc::getFromPointer(Buffer.data()),
> +                      SourceMgr::DK_Error,
> +                      "unsupported -NOT combo on prefix '" + UsedPrefix +
> "'");
> +      return true;
> +    }
> +
>      // Okay, we found the prefix, yay. Remember the rest of the line, but
> ignore
>      // leading and trailing whitespace.
>      Buffer = Buffer.substr(Buffer.find_first_not_of(" \t"));
>
>
> _______________________________________________
> llvm-commits mailing list
> llvm-commits at lists.llvm.org
> http://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-commits
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/llvm-commits/attachments/20160227/00f66a32/attachment.html>


More information about the llvm-commits mailing list