diff options
author | Simon Atanasyan <satanasyan@mips.com> | 2012-07-05 18:51:43 +0000 |
---|---|---|
committer | Simon Atanasyan <satanasyan@mips.com> | 2012-07-05 18:51:43 +0000 |
commit | dc536f55c0c85df7644592c69434b7b191d73dc8 (patch) | |
tree | 093df604c0cabc1c26bfaa6ab303c87000c88180 /lib/Driver/Tools.cpp | |
parent | 996fa80c175db9db49c81cf78e8e292101ce1e3e (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.cpp | 25 |
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. |