LLVM中FileCheck开发者工具--1--命令介绍

LLVM中FileCheck开发者工具–1--命令介绍

命令格式:

FileCheck match-filename [–check-prefix=XXX] [–strict-whitespace]

描述:

FileCheck命令读取两个文件,一个从标准输入流读取,另一个为命令行中的match-filename参数。该命令使用后者(match-filename指定的文件)去校验前者。FileCheck命令在测试(testsuites)中非常有用,例如,用于校验llc命令的输出结果中是否包含期望的信息。

FileCheck的功能类似于grep,但在对于输入文件的不同特定顺序和多种匹配规则方面做了很大的优化。

--input-file选项可以指定FileCheck命令从文件中读入待校验的输入文件。如果不指定该选项默认从标准输入流读取。

选项

所有的选项可以从设置的环境变量FILECHECK_OPTS和从命令行中解析。

  • -help

  • –check-prefix prefix

    FileCheck搜索match-filename文件的内容中用作匹配的模式规则。默认情况下,模式规则都是以"CHECK:"开头的。如果你想使用不同的模式规则的前缀,使用--check-prefix选项可以指定一个或多个模式规则的前缀用于匹配。使用该选项一般由于,多个工具或者功能的测试检测,需要用到同一个输入文件。

  • –check-prefixs prefix1,prefix2,…

    --check-prefix选项的别名,它允许指定多个逗号分割的模式匹配前缀。

  • –input-file filename

    指定检查的文件,默认从标准输入流读取。

  • –match-full-lines

    默认,FileCheck允许匹配一行的任何位置。该选项要求所有的肯定匹配模式,匹配整行。

    除非设定了--strict-whitespace选项,行首/尾的空白字符才会被匹配忽略,但否定匹配(CHECK-NOT)不受该选项的影响。

    Note:

    1. 肯定匹配(positive matches):匹配任务中有效的匹配模式,在FileCheck中一般指*–check-prefix**选项或者默认的"CHECK:"开头的匹配规则*

    2. 否定匹配(negative matches):一般指"CHECK-NOT"开头的匹配规则,这种匹配规则,一般用于检查两个规则之间没有出现过某个字符。

  • –strict–whitespace

    默认情况下,FileCheck规范化输入水平空白(空格和制表符),这导致它忽略一些差异(空格将匹配制表符)。 该参数禁用此行为。 在所有模式下,行尾序列均被规范化为UNIX样式\ n。

  • –ignore–case

    默认情况下,FileCheck的匹配是大小写敏感的。

  • –implicit-check-not check-pattern

    在肯定检查之间为指定的模式添加隐式否定检查。 该选项允许在不用"CHECK-NOT"下,编写更严格的测试。

    例如,在测试一些工具的诊断信息(如clang -verify)的时候,使用--implicit-check-not warning:选项非常有用,它不会检查匹配输入中包含warning:的诊断信息。

  • –dump-input

    将输入转储输出到stderr,并追加诊断注释信息。参数接受alwaysfailnever等模式,具体参考命令的帮助信息。

  • –dump-input-on-failure

    如果检查失败,则转储所有原始输入到stderr。 此选项已经被弃用了,而建议使用–dump-input = fail。

  • –enable-var-scope

    启用正则表达式变量的作用域。

    名称以$开头的变量被认为是全局变量,并在整个文件中保持设置状态。

    在遇到每个CHECK-LABEL之后,所有其他变量均未定义。

  • -D<VAR=VALUE>

    为变量VAR设置VALUE,VAR变量可在"CHECK:"行中使用。

  • -D#,=

    设置一个FileCheck的匹配格式为FMT的数字变量NUMVAR,可在"CHECK:"行中使用来计算结果。

  • -version

  • -v

    打印良好的指令模式匹配。 但是,如果-input-dump = fail或-input-dump = always,则将这些匹配项添加为输入注释。

  • -vv

    打印有助于诊断FileCheck内部问题的信息,如:丢弃重叠CHECK-DAG,隐式的EOF模式匹配和没有匹配的CHECK-NOT。

  • –allow-deprecated-dag-overlap

    启用一组连续的CHECK-DAG指令之间的重叠匹配。该选项已经被弃用了,它为老的测试用例迁移到新的不重叠CHECK-DAG测试在实现中提供便利。

  • –color

    设置输出流的颜色,默认是自动的设置。

退出状态

如果成功,退出码为0。否则为非0。

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
llvm-config 是 LLVM 提供的一个命令工具,它可以用来查询 LLVM 安装的相关信息,例如 LLVM 的版本、安装路径、支持的语言等等。如果你已经成功安装了 LLVM,那么 llvm-config 应该已经在你的系统上可用了。 如果你无法在命令使用 llvm-config 命令,可能是因为 LLVM 的可执行文件路径没有被添加到系统的 PATH 环境变量。你可以通过以下几种方式来解决这个问题: 1. 在命令使用绝对路径来调用 llvm-config。例如,如果 LLVM 安装在 /usr/local/llvm 目录下,那么 llvm-config 的绝对路径应该是 /usr/local/llvm/bin/llvm-config。 2. 将 LLVM 的可执行文件路径添加到系统的 PATH 环境变量。具体方法取决于你使用的操作系统和命令工具。以 Linux 系统为例,在命令执行以下命令可以将 LLVM 的可执行文件路径添加到 PATH 环境变量: ``` export PATH=/path/to/llvm/bin:$PATH ``` 其 /path/to/llvmLLVM 的安装路径。 3. 如果你使用的是 CMake 构建系统,你可以在 CMakeLists.txt 文件使用 find_program() 函数来查找 llvm-config 可执行文件,并将其设置为变量。例如: ``` find_program(LLVM_CONFIG_EXECUTABLE llvm-config) if(NOT LLVM_CONFIG_EXECUTABLE) message(FATAL_ERROR "llvm-config not found") endif() ``` 这样在 CMake 构建时就可以使用 ${LLVM_CONFIG_EXECUTABLE} 变量来调用 llvm-config 命令了。 希望这些信息对你有帮助。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值