From e3aaeabb6da645219abba218f5dcc38087c0d07e Mon Sep 17 00:00:00 2001 From: Shiva Chen Date: Sun, 17 Feb 2019 16:05:51 +0000 Subject: [PATCH] [RISCV] Default enable RISCV linker relaxation Differential Revision: https://reviews.llvm.org/D47127 llvm-svn: 354222 --- clang/lib/Driver/ToolChains/Arch/RISCV.cpp | 12 ++++++++++++ clang/test/Driver/riscv-features.c | 2 +- 2 files changed, 13 insertions(+), 1 deletion(-) diff --git a/clang/lib/Driver/ToolChains/Arch/RISCV.cpp b/clang/lib/Driver/ToolChains/Arch/RISCV.cpp index e40911f4dbff..b5cee381e1f7 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 95f84f31c611..bdf9ef4084c8 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"