summaryrefslogtreecommitdiffstats
path: root/clang/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
commit9b1932d4e471419238bbee26e4b2f0aacfb264ba (patch)
tree56701478513820207ac5a6e8f0170eef15fb8ada /clang/lib/Driver/Tools.cpp
parent2783b6c0e54fbe5b9257a0c807ad56d97c8070ba (diff)
downloadbcm5719-llvm-9b1932d4e471419238bbee26e4b2f0aacfb264ba.tar.gz
bcm5719-llvm-9b1932d4e471419238bbee26e4b2f0aacfb264ba.zip
MIPS: Factor out the code converting command line options to target features.
llvm-svn: 159767
Diffstat (limited to 'clang/lib/Driver/Tools.cpp')
-rw-r--r--clang/lib/Driver/Tools.cpp25
1 files changed, 17 insertions, 8 deletions
diff --git a/clang/lib/Driver/Tools.cpp b/clang/lib/Driver/Tools.cpp
index 1be4659f614..a4153515de5 100644
--- a/clang/lib/Driver/Tools.cpp
+++ b/clang/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.
OpenPOWER on IntegriCloud