[all-commits] [llvm/llvm-project] 5df55b: [FileCheck] Fix isalpha/isalnum calls
Joel E. Denny via All-commits
all-commits at lists.llvm.org
Thu May 14 17:26:11 PDT 2020
Branch: refs/heads/master
Home: https://github.com/llvm/llvm-project
Commit: 5df55bc7a46fd5319402ac856753bc5ba5e7fb8a
https://github.com/llvm/llvm-project/commit/5df55bc7a46fd5319402ac856753bc5ba5e7fb8a
Author: Joel E. Denny <jdenny.ornl at gmail.com>
Date: 2020-05-14 (Thu, 14 May 2020)
Changed paths:
M llvm/lib/Support/FileCheck.cpp
A llvm/test/FileCheck/bad-char.txt
Log Message:
-----------
[FileCheck] Fix isalpha/isalnum calls
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.
524457edbc3d fixed the above tests. This patch changes FileCheck to
use LLVM's replacements for `ctype.h` functions, and it adds tests for
cases that are representative with or without D79276.
Reviewed By: jhenderson, thopre, efriedma
Differential Revision: https://reviews.llvm.org/D79810
More information about the All-commits
mailing list