aboutsummaryrefslogtreecommitdiff
path: root/lib/Driver/Tools.cpp
diff options
context:
space:
mode:
authorSimon Atanasyan <satanasyan@mips.com>2012-07-05 18:51:43 +0000
committerSimon Atanasyan <satanasyan@mips.com>2012-07-05 18:51:43 +0000
commitdc536f55c0c85df7644592c69434b7b191d73dc8 (patch)
tree093df604c0cabc1c26bfaa6ab303c87000c88180 /lib/Driver/Tools.cpp
parent996fa80c175db9db49c81cf78e8e292101ce1e3e (diff)
MIPS: Factor out the code converting command line options to target features.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@159767 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'lib/Driver/Tools.cpp')
-rw-r--r--lib/Driver/Tools.cpp25
1 files changed, 17 insertions, 8 deletions
diff --git a/lib/Driver/Tools.cpp b/lib/Driver/Tools.cpp
index 1be4659f61..a4153515de 100644
--- a/lib/Driver/Tools.cpp
+++ b/lib/Driver/Tools.cpp
@@ -880,6 +880,20 @@ static StringRef getMipsFloatABI(const Driver &D, const ArgList &Args) {
return FloatABI;
}
+static void AddTargetFeature(const ArgList &Args,
+ ArgStringList &CmdArgs,
+ OptSpecifier OnOpt,
+ OptSpecifier OffOpt,
+ StringRef FeatureName) {
+ if (Arg *A = Args.getLastArg(OnOpt, OffOpt)) {
+ CmdArgs.push_back("-target-feature");
+ if (A->getOption().matches(OnOpt))
+ CmdArgs.push_back(Args.MakeArgString("+" + FeatureName));
+ else
+ CmdArgs.push_back(Args.MakeArgString("-" + FeatureName));
+ }
+}
+
void Clang::AddMIPSTargetArgs(const ArgList &Args,
ArgStringList &CmdArgs) const {
const Driver &D = getToolChain().getDriver();
@@ -920,14 +934,9 @@ void Clang::AddMIPSTargetArgs(const ArgList &Args,
CmdArgs.push_back("hard");
}
- if (Arg *A = Args.getLastArg(options::OPT_mips16,
- options::OPT_mno_mips16)) {
- CmdArgs.push_back("-target-feature");
- if (A->getOption().matches(options::OPT_mips16))
- CmdArgs.push_back("+mips16");
- else
- CmdArgs.push_back("-mips16");
- }
+ AddTargetFeature(Args, CmdArgs,
+ options::OPT_mips16, options::OPT_mno_mips16,
+ "mips16");
}
/// getPPCTargetCPU - Get the (LLVM) name of the PowerPC cpu we are targeting.