Skip to content

Commit a27e003

Browse files
author
Yeting Kuo
committed
Use feature to allow/disallow experimental extensions.
1 parent 066445e commit a27e003

File tree

4 files changed

+13
-12
lines changed

4 files changed

+13
-12
lines changed

clang/lib/Driver/ToolChains/Clang.cpp

Lines changed: 0 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -8449,11 +8449,6 @@ void ClangAs::AddRISCVTargetArgs(const ArgList &Args,
84498449
CmdArgs.push_back("-mllvm");
84508450
CmdArgs.push_back("-riscv-add-build-attributes");
84518451
}
8452-
8453-
if (!Args.hasArg(options::OPT_menable_experimental_extensions)) {
8454-
CmdArgs.push_back("-mllvm");
8455-
CmdArgs.push_back("-riscv-disable-experimental-ext");
8456-
}
84578452
}
84588453

84598454
void ClangAs::ConstructJob(Compilation &C, const JobAction &JA,

clang/test/Driver/riscv-option-arch.c

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
// RUN: %clang --target=riscv64 -menable-experimental-extensions -c -o /dev/null %s
2+
// RUN: ! %clang --target=riscv64 -c -o /dev/null %s 2>&1 | FileCheck -check-prefixes=CHECK-ERR %s
3+
4+
void foo() {
5+
asm volatile (".option arch, +zicfiss");
6+
// CHECK-ERR: Unexpected experimental extensions.
7+
}

llvm/lib/Target/RISCV/AsmParser/RISCVAsmParser.cpp

Lines changed: 4 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -51,10 +51,6 @@ STATISTIC(RISCVNumInstrsCompressed,
5151

5252
static cl::opt<bool> AddBuildAttributes("riscv-add-build-attributes",
5353
cl::init(false));
54-
static cl::opt<bool>
55-
DisableExperimentalExtension("riscv-disable-experimental-ext",
56-
cl::init(false));
57-
5854
namespace llvm {
5955
extern const SubtargetFeatureKV RISCVFeatureKV[RISCV::NumSubtargetFeatures];
6056
} // namespace llvm
@@ -87,6 +83,9 @@ class RISCVAsmParser : public MCTargetAsmParser {
8783
SMLoc getLoc() const { return getParser().getTok().getLoc(); }
8884
bool isRV64() const { return getSTI().hasFeature(RISCV::Feature64Bit); }
8985
bool isRVE() const { return getSTI().hasFeature(RISCV::FeatureStdExtE); }
86+
bool enableExperimentalExtension() const {
87+
return getSTI().hasFeature(RISCV::Experimental);
88+
}
9089

9190
RISCVTargetStreamer &getTargetStreamer() {
9291
assert(getParser().getStreamer().getTargetStreamer() &&
@@ -2828,7 +2827,7 @@ bool RISCVAsmParser::parseDirectiveOption() {
28282827
}
28292828

28302829
std::string Feature = RISCVISAInfo::getTargetFeatureForExtension(Arch);
2831-
if (DisableExperimentalExtension &&
2830+
if (!enableExperimentalExtension() &&
28322831
StringRef(Feature).starts_with("experimental-"))
28332832
return Error(Loc, "Unexpected experimental extensions.");
28342833
auto Ext = llvm::lower_bound(RISCVFeatureKV, Feature);

llvm/test/MC/RISCV/option-arch.s

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
1-
# RUN: llvm-mc -triple riscv32 -show-encoding < %s \
1+
# RUN: llvm-mc -triple riscv32 -mattr=+experimental -show-encoding < %s \
22
# RUN: | FileCheck -check-prefixes=CHECK %s
3-
# RUN: llvm-mc -triple riscv32 -filetype=obj < %s \
3+
# RUN: llvm-mc -triple riscv32 -mattr=+experimental -filetype=obj < %s \
44
# RUN: | llvm-objdump --triple=riscv32 --mattr=+c,+m,+a,+f,+zba,+experimental-zicfiss -d -M no-aliases - \
55
# RUN: | FileCheck -check-prefixes=CHECK-INST %s
66

0 commit comments

Comments
 (0)