forked from OSchip/llvm-project
5df55bc7a4
D79276 caused the following builder to fail:
http://lab.llvm.org:8011/builders/llvm-clang-x86_64-expensive-checks-win/builds/23489
Specifically, FileCheck dumped stack in the following tests:
LLVM :: MC/Mips/micromips-jump-pc-region.s
LLVM :: MC/Mips/mips-jump-pc-region.s
Those tests contained characters encoded as 160 but that render (at
least for me in vim) like a single space (32). Those characters
appeared between the `#` and `RUN:` on several lines, and D79276
caused FileCheck to process those lines differently: `RUN:` is a
comment directive. As a result, D79276 caused FileCheck to start
calling is `isalnum` on those characters.
The problem is that FileCheck calls `isalnum` on type `char` without
casting to `unsigned char` first, so it sign-extends 160 beyond what
`unsigned char` or `EOF` can represent. C says that has undefined
behavior. This problem is general to FileCheck's prefix parsing and
so exists independently of D79276.
|
||
---|---|---|
.. | ||
comment | ||
bad-char.txt | ||
check-a-b-has-b.txt | ||
check-b-a-has-b.txt | ||
check-count.txt | ||
check-dag-multi-prefix-2.txt | ||
check-dag-multi-prefix.txt | ||
check-dag-not-dag.txt | ||
check-dag-overlap-torture.txt | ||
check-dag-overlap.txt | ||
check-dag-substring-prefix.txt | ||
check-dag-xfails.txt | ||
check-dag.txt | ||
check-empty-tag.txt | ||
check-empty.txt | ||
check-empty2.txt | ||
check-ignore-case.txt | ||
check-label-dag-capture.txt | ||
check-label-dag.txt | ||
check-label.txt | ||
check-multi-prefix-label.txt | ||
check-multiple-prefixes-mixed.txt | ||
check-multiple-prefixes-nomatch-2.txt | ||
check-multiple-prefixes-nomatch.txt | ||
check-multiple-prefixes-substr.txt | ||
check-not-diaginfo.txt | ||
check-prefixes.txt | ||
check-substring-multi-prefix-2.txt | ||
check-substring-multi-prefix.txt | ||
dos-style-eol.txt | ||
dump-input-annotations.txt | ||
dump-input-enable.txt | ||
empty-regex-match-at-start.txt | ||
envvar-opts.txt | ||
first-character-match.txt | ||
implicit-check-not.txt | ||
line-count-2.txt | ||
line-count.txt | ||
lit.local.cfg | ||
match-full-lines.txt | ||
multiple-missing-prefixes.txt | ||
next-no-match.txt | ||
no-check-file.txt | ||
no-multi-suffixes.txt | ||
numeric-defines-diagnostics.txt | ||
numeric-defines.txt | ||
numeric-expression.txt | ||
opt-color.txt | ||
regex-brackets.txt | ||
regex-no-match.txt | ||
same.txt | ||
separate-multi-prefix.txt | ||
simple-var-capture.txt | ||
string-defines-diagnostics.txt | ||
string-defines.txt | ||
two-checks-for-same-match.txt | ||
validate-check-prefix.txt | ||
var-ref-same-line.txt | ||
var-scope.txt | ||
verbose.txt |