diff options
author | Simon Atanasyan <satanasyan@mips.com> | 2012-04-07 22:09:23 +0000 |
---|---|---|
committer | Simon Atanasyan <satanasyan@mips.com> | 2012-04-07 22:09:23 +0000 |
commit | 3b7589a6c3036252505511b5443090386cdb9dd6 (patch) | |
tree | 0eef0f8b93d43493a2e7da41d68fd08fc06861d4 /clang/lib/Driver/Tools.cpp | |
parent | aa9aab5ad2dcef7d63862321b504f99de11161f1 (diff) | |
download | bcm5719-llvm-3b7589a6c3036252505511b5443090386cdb9dd6.tar.gz bcm5719-llvm-3b7589a6c3036252505511b5443090386cdb9dd6.zip |
MIPS: Move code calculates CPU and ABI names to the separate function to reuse this function later.
llvm-svn: 154269
Diffstat (limited to 'clang/lib/Driver/Tools.cpp')
-rw-r--r-- | clang/lib/Driver/Tools.cpp | 34 |
1 files changed, 21 insertions, 13 deletions
diff --git a/clang/lib/Driver/Tools.cpp b/clang/lib/Driver/Tools.cpp index ae9c1a54f1c..db336676b7b 100644 --- a/clang/lib/Driver/Tools.cpp +++ b/clang/lib/Driver/Tools.cpp @@ -787,38 +787,46 @@ static const char* getMipsABIFromArch(StringRef ArchName) { return "n64"; } -void Clang::AddMIPSTargetArgs(const ArgList &Args, - ArgStringList &CmdArgs) const { - const Driver &D = getToolChain().getDriver(); - +// Get CPU and ABI names. They are not independent +// so we have to calculate them together. +static void getMipsCPUAndABI(const ArgList &Args, + const ToolChain &TC, + StringRef &CPUName, + StringRef &ABIName) { StringRef ArchName; - const char *CPUName; - // Set target cpu and architecture. + // Select target cpu and architecture. if (Arg *A = Args.getLastArg(options::OPT_mcpu_EQ)) { CPUName = A->getValue(Args); ArchName = getMipsArchFromCPU(CPUName); } else { - ArchName = Args.MakeArgString(getToolChain().getArchName()); + ArchName = Args.MakeArgString(TC.getArchName()); if (!checkMipsArchName(ArchName)) - D.Diag(diag::err_drv_invalid_arch_name) << ArchName; + TC.getDriver().Diag(diag::err_drv_invalid_arch_name) << ArchName; else CPUName = getMipsCPUFromArch(ArchName); } - - CmdArgs.push_back("-target-cpu"); - CmdArgs.push_back(CPUName); // Select the ABI to use. - const char *ABIName = 0; if (Arg *A = Args.getLastArg(options::OPT_mabi_EQ)) ABIName = A->getValue(Args); else ABIName = getMipsABIFromArch(ArchName); +} + +void Clang::AddMIPSTargetArgs(const ArgList &Args, + ArgStringList &CmdArgs) const { + const Driver &D = getToolChain().getDriver(); + StringRef CPUName; + StringRef ABIName; + getMipsCPUAndABI(Args, getToolChain(), CPUName, ABIName); + + CmdArgs.push_back("-target-cpu"); + CmdArgs.push_back(CPUName.data()); CmdArgs.push_back("-target-abi"); - CmdArgs.push_back(ABIName); + CmdArgs.push_back(ABIName.data()); // Select the float ABI as determined by -msoft-float, -mhard-float, // and -mfloat-abi=. |