From: Shiva Chen Date: Sun, 17 Feb 2019 16:05:51 +0000 (+0000) Subject: [RISCV] Default enable RISCV linker relaxation X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=c551f904869133291160f423ae824ec9be6045ff;p=clang [RISCV] Default enable RISCV linker relaxation Differential Revision: https://reviews.llvm.org/D47127 git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@354222 91177308-0d34-0410-b5e6-96231b3b80d8 --- diff --git a/lib/Driver/ToolChains/Arch/RISCV.cpp b/lib/Driver/ToolChains/Arch/RISCV.cpp index e40911f4db..b5cee381e1 100644 --- a/lib/Driver/ToolChains/Arch/RISCV.cpp +++ b/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/test/Driver/riscv-features.c b/test/Driver/riscv-features.c index 95f84f31c6..bdf9ef4084 100644 --- a/test/Driver/riscv-features.c +++ b/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"