diff options
Diffstat (limited to 'clang/lib/Driver/ToolChains/Arch/RISCV.cpp')
-rw-r--r-- | clang/lib/Driver/ToolChains/Arch/RISCV.cpp | 10 |
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); |