summaryrefslogtreecommitdiffstats
path: root/clang/lib/Driver/ToolChains/Arch/RISCV.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'clang/lib/Driver/ToolChains/Arch/RISCV.cpp')
-rw-r--r--clang/lib/Driver/ToolChains/Arch/RISCV.cpp10
1 files changed, 10 insertions, 0 deletions
diff --git a/clang/lib/Driver/ToolChains/Arch/RISCV.cpp b/clang/lib/Driver/ToolChains/Arch/RISCV.cpp
index e74fe13e2d4..075c951e82f 100644
--- a/clang/lib/Driver/ToolChains/Arch/RISCV.cpp
+++ b/clang/lib/Driver/ToolChains/Arch/RISCV.cpp
@@ -358,6 +358,16 @@ void riscv::getRISCVTargetFeatures(const Driver &D, const ArgList &Args,
else
Features.push_back("-relax");
+ // -mno-save-restore is default, unless -msave-restore is specified.
+ if (Args.hasFlag(options::OPT_msave_restore, options::OPT_mno_save_restore, false)) {
+ Features.push_back("+save-restore");
+ // ... but we don't yet support +save-restore, so issue a warning.
+ D.Diag(diag::warn_drv_clang_unsupported)
+ << Args.getLastArg(options::OPT_msave_restore)->getAsString(Args);
+ } else {
+ Features.push_back("-save-restore");
+ }
+
// 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);
OpenPOWER on IntegriCloud