aboutsummaryrefslogtreecommitdiff
path: root/lib/Driver/Tools.cpp
diff options
context:
space:
mode:
authorSimon Atanasyan <satanasyan@mips.com>2012-04-07 22:31:29 +0000
committerSimon Atanasyan <satanasyan@mips.com>2012-04-07 22:31:29 +0000
commit073a780f7cb863cd382d1c966ef11d05c6fad075 (patch)
treecf2369df7b291a548611a2cd7e00ef324fd78257 /lib/Driver/Tools.cpp
parenta2768be144256f9eb721bef8b751e56e0b64fa0b (diff)
MIPS: Pass -mabi option to the assmbler when compile MIPS targets.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@154270 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'lib/Driver/Tools.cpp')
-rw-r--r--lib/Driver/Tools.cpp24
1 files changed, 14 insertions, 10 deletions
diff --git a/lib/Driver/Tools.cpp b/lib/Driver/Tools.cpp
index db336676b7..fd064d5bb5 100644
--- a/lib/Driver/Tools.cpp
+++ b/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)