diff options
-rw-r--r-- | clang/lib/Driver/ToolChains/Arch/RISCV.cpp | 12 | ||||
-rw-r--r-- | clang/test/Driver/riscv-features.c | 2 |
2 files changed, 13 insertions, 1 deletions
diff --git a/clang/lib/Driver/ToolChains/Arch/RISCV.cpp b/clang/lib/Driver/ToolChains/Arch/RISCV.cpp index e40911f4dbf..b5cee381e1f 100644 --- a/clang/lib/Driver/ToolChains/Arch/RISCV.cpp +++ b/clang/lib/Driver/ToolChains/Arch/RISCV.cpp @@ -364,6 +364,18 @@ void riscv::getRISCVTargetFeatures(const Driver &D, const ArgList &Args, getExtensionFeatures(D, Args, Features, MArch, OtherExts); } + // -mrelax is default, unless -mno-relax is specified. + bool Relax = true; + if (auto *A = Args.getLastArg(options::OPT_mrelax, options::OPT_mno_relax)) { + if (A->getOption().matches(options::OPT_mno_relax)) { + Relax = false; + Features.push_back("-relax"); + } + } + + if (Relax) + Features.push_back("+relax"); + // Now add any that the user explicitly requested on the command line, // which may override the defaults. handleTargetFeaturesGroup(Args, Features, options::OPT_m_riscv_Features_Group); diff --git a/clang/test/Driver/riscv-features.c b/clang/test/Driver/riscv-features.c index 95f84f31c61..bdf9ef4084c 100644 --- a/clang/test/Driver/riscv-features.c +++ b/clang/test/Driver/riscv-features.c @@ -9,5 +9,5 @@ // RELAX: "-target-feature" "+relax" // NO-RELAX: "-target-feature" "-relax" -// DEFAULT-NOT: "-target-feature" "+relax" +// DEFAULT: "-target-feature" "+relax" // DEFAULT-NOT: "-target-feature" "-relax" |