Skip to content

Commit 0faf494

Browse files
authored
[RISCV] Make parseArchString only accept [a-z0-9_]. (#90879)
Similar change was recently made to parseNormalizedArchString.
1 parent 7a6847e commit 0faf494

File tree

3 files changed

+7
-6
lines changed

3 files changed

+7
-6
lines changed

clang/test/Driver/riscv-arch.c

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -199,7 +199,7 @@
199199
// RUN: not %clang --target=riscv32-unknown-elf -march=rv32imC -### %s \
200200
// RUN: -fsyntax-only 2>&1 | FileCheck -check-prefix=RV32-LOWER %s
201201
// RV32-LOWER: error: invalid arch name 'rv32imC',
202-
// RV32-LOWER: string must be lowercase
202+
// RV32-LOWER: string may only contain [a-z0-9_]
203203

204204
// RUN: not %clang --target=riscv32-unknown-elf -march=unknown -### %s \
205205
// RUN: -fsyntax-only 2>&1 | FileCheck -check-prefix=RV32-STR %s

llvm/lib/TargetParser/RISCVISAInfo.cpp

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -599,10 +599,11 @@ llvm::Expected<std::unique_ptr<RISCVISAInfo>>
599599
RISCVISAInfo::parseArchString(StringRef Arch, bool EnableExperimentalExtension,
600600
bool ExperimentalExtensionVersionCheck,
601601
bool IgnoreUnknown) {
602-
// RISC-V ISA strings must be lowercase.
603-
if (llvm::any_of(Arch, isupper))
602+
// RISC-V ISA strings must be [a-z0-9_]
603+
if (!llvm::all_of(
604+
Arch, [](char C) { return isDigit(C) || isLower(C) || C == '_'; }))
604605
return createStringError(errc::invalid_argument,
605-
"string must be lowercase");
606+
"string may only contain [a-z0-9_]");
606607

607608
// ISA string must begin with rv32, rv64, or a profile.
608609
unsigned XLen = 0;

llvm/unittests/TargetParser/RISCVISAInfoTest.cpp

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -125,10 +125,10 @@ TEST(ParseNormalizedArchString, UpdatesFLenMinVLenMaxELen) {
125125
EXPECT_EQ(Info.getMaxELen(), 64U);
126126
}
127127

128-
TEST(ParseArchString, RejectsUpperCase) {
128+
TEST(ParseArchString, RejectsInvalidChars) {
129129
for (StringRef Input : {"RV32", "rV64", "rv32i2P0", "rv64i2p0_A2p0"}) {
130130
EXPECT_EQ(toString(RISCVISAInfo::parseArchString(Input, true).takeError()),
131-
"string must be lowercase");
131+
"string may only contain [a-z0-9_]");
132132
}
133133
}
134134

0 commit comments

Comments
 (0)