[FileCheck] Support comment directives
authorJoel E. Denny <jdenny.ornl@gmail.com>
Mon, 4 May 2020 22:05:55 +0000 (18:05 -0400)
committerJoel E. Denny <jdenny.ornl@gmail.com>
Wed, 13 May 2020 15:29:48 +0000 (11:29 -0400)
commita1fd188223d9c9b404dccd3511fe8b63ef022a13
treead9b884a74ca7745beb36e442a57647df092b168
parent1370757dd019c4e1b7bf623622e2bfc94680509f
[FileCheck] Support comment directives

Sometimes you want to disable a FileCheck directive without removing
it entirely, or you want to write comments that mention a directive by
name.  The `COM:` directive makes it easy to do this.  For example,
you might have:

```
; X32: pinsrd_1:
; X32:    pinsrd $1, 4(%esp), %xmm0

; COM: FIXME: X64 isn't working correctly yet for this part of codegen, but
; COM: X64 will have something similar to X32:
; COM:
; COM:   X64: pinsrd_1:
; COM:   X64:    pinsrd $1, %edi, %xmm0
```

Without this patch, you need to use some combination of rewording and
directive syntax mangling to prevent FileCheck from recognizing the
commented occurrences of `X32:` and `X64:` above as directives.
Moreover, FileCheck diagnostics have been proposed that might complain
about the occurrences of `X64` that don't have the trailing `:`
because they look like directive typos:

  <http://lists.llvm.org/pipermail/llvm-dev/2020-April/140610.html>

I think dodging all these problems can prove tedious for test authors,
and directive syntax mangling already makes the purpose of existing
test code unclear.  `COM:` can avoid all these problems.

This patch also updates the small set of existing tests that define
`COM` as a check prefix:

- clang/test/CodeGen/default-address-space.c
- clang/test/CodeGenOpenCL/addr-space-struct-arg.cl
- clang/test/Driver/hip-device-libs.hip
- llvm/test/Assembler/drop-debug-info-nonzero-alloca.ll

I think lit should support `COM:` as well.  Perhaps `clang -verify`
should too.

Reviewed By: jhenderson, thopre

Differential Revision: https://reviews.llvm.org/D79276
18 files changed:
clang/test/CodeGen/default-address-space.c
clang/test/CodeGenOpenCL/addr-space-struct-arg.cl
clang/test/Driver/hip-device-libs.hip
llvm/docs/CommandGuide/FileCheck.rst
llvm/include/llvm/Support/FileCheck.h
llvm/lib/Support/FileCheck.cpp
llvm/test/Assembler/drop-debug-info-nonzero-alloca.ll
llvm/test/FileCheck/comment/after-words.txt [new file with mode: 0644]
llvm/test/FileCheck/comment/bad-comment-prefix.txt [new file with mode: 0644]
llvm/test/FileCheck/comment/blank-comments.txt [new file with mode: 0644]
llvm/test/FileCheck/comment/suffixes.txt [new file with mode: 0644]
llvm/test/FileCheck/comment/suppresses-checks.txt [new file with mode: 0644]
llvm/test/FileCheck/comment/unused-check-prefixes.txt [new file with mode: 0644]
llvm/test/FileCheck/comment/unused-comment-prefixes.txt [new file with mode: 0644]
llvm/test/FileCheck/comment/within-checks.txt [new file with mode: 0644]
llvm/test/FileCheck/first-character-match.txt
llvm/test/FileCheck/validate-check-prefix.txt
llvm/utils/FileCheck/FileCheck.cpp