diff options
author | Simon Atanasyan <satanasyan@mips.com> | 2012-04-07 22:31:29 +0000 |
---|---|---|
committer | Simon Atanasyan <satanasyan@mips.com> | 2012-04-07 22:31:29 +0000 |
commit | 571d7bde3ca1325cf05c3a73822025bae94a2640 (patch) | |
tree | ca2a20aab5c89df564e2a09c10e875270fc0762b /clang/lib/Driver/Tools.cpp | |
parent | 3b7589a6c3036252505511b5443090386cdb9dd6 (diff) | |
download | bcm5719-llvm-571d7bde3ca1325cf05c3a73822025bae94a2640.tar.gz bcm5719-llvm-571d7bde3ca1325cf05c3a73822025bae94a2640.zip |
MIPS: Pass -mabi option to the assmbler when compile MIPS targets.
llvm-svn: 154270
Diffstat (limited to 'clang/lib/Driver/Tools.cpp')
-rw-r--r-- | clang/lib/Driver/Tools.cpp | 24 |
1 files changed, 14 insertions, 10 deletions
diff --git a/clang/lib/Driver/Tools.cpp b/clang/lib/Driver/Tools.cpp index db336676b7b..fd064d5bb54 100644 --- a/clang/lib/Driver/Tools.cpp +++ b/clang/lib/Driver/Tools.cpp @@ -5029,17 +5029,21 @@ void linuxtools::Assemble::ConstructJob(Compilation &C, const JobAction &JA, getToolChain().getArch() == llvm::Triple::mipsel || getToolChain().getArch() == llvm::Triple::mips64 || getToolChain().getArch() == llvm::Triple::mips64el) { - // Get Mips CPU name and pass it to 'as'. - const char *CPUName; - if (Arg *A = Args.getLastArg(options::OPT_mcpu_EQ)) - CPUName = A->getValue(Args); - else - CPUName = getMipsCPUFromArch(getToolChain().getArchName()); + StringRef CPUName; + StringRef ABIName; + getMipsCPUAndABI(Args, getToolChain(), CPUName, ABIName); - if (CPUName) { - CmdArgs.push_back("-march"); - CmdArgs.push_back(CPUName); - } + CmdArgs.push_back("-march"); + CmdArgs.push_back(CPUName.data()); + + // Convert ABI name to the GNU tools acceptable variant. + if (ABIName == "o32") + ABIName = "32"; + else if (ABIName == "n64") + ABIName = "64"; + + CmdArgs.push_back("-mabi"); + CmdArgs.push_back(ABIName.data()); if (getToolChain().getArch() == llvm::Triple::mips || getToolChain().getArch() == llvm::Triple::mips64) |