diff options
author | Daniel Sanders <daniel.sanders@imgtec.com> | 2015-01-30 17:35:23 +0000 |
---|---|---|
committer | Daniel Sanders <daniel.sanders@imgtec.com> | 2015-01-30 17:35:23 +0000 |
commit | 7f933f4c5ecd61a6ea3411f13c79ac5ccf82eb3b (patch) | |
tree | 5194a427770153326774513c0f0869af418dbc8b /clang/lib/Driver/Tools.cpp | |
parent | e4ca47875f5376c280de86d45c95cf479000e544 (diff) | |
download | llvm-7f933f4c5ecd61a6ea3411f13c79ac5ccf82eb3b.zip llvm-7f933f4c5ecd61a6ea3411f13c79ac5ccf82eb3b.tar.gz llvm-7f933f4c5ecd61a6ea3411f13c79ac5ccf82eb3b.tar.bz2 |
[mips] Pass ABI name via -target-abi instead of target-features
Patch by Vladimir Medic
Reviewers: echristo, atanasyan, dsanders
Reviewed By: atanasyan, dsanders
Subscribers: llvm-commits, echristo, atanasyan
Differential Revision: http://reviews.llvm.org/D6091
llvm-svn: 227583
Diffstat (limited to 'clang/lib/Driver/Tools.cpp')
-rw-r--r-- | clang/lib/Driver/Tools.cpp | 35 |
1 files changed, 24 insertions, 11 deletions
diff --git a/clang/lib/Driver/Tools.cpp b/clang/lib/Driver/Tools.cpp index 9cd411d..ceb6775 100644 --- a/clang/lib/Driver/Tools.cpp +++ b/clang/lib/Driver/Tools.cpp @@ -1095,17 +1095,6 @@ static void getMIPSTargetFeatures(const Driver &D, const llvm::Triple &Triple, mips::getMipsCPUAndABI(Args, Triple, CPUName, ABIName); ABIName = getGnuCompatibleMipsABIName(ABIName); - // Always override the backend's default ABI. - std::string ABIFeature = llvm::StringSwitch<StringRef>(ABIName) - .Case("32", "+o32") - .Case("n32", "+n32") - .Case("64", "+n64") - .Case("eabi", "+eabi") - .Default(("+" + ABIName).str()); - Features.push_back("-o32"); - Features.push_back("-n64"); - Features.push_back(Args.MakeArgString(ABIFeature)); - AddTargetFeature(Args, Features, options::OPT_mno_abicalls, options::OPT_mabicalls, "noabicalls"); @@ -4874,6 +4863,17 @@ visualstudio::Compile *Clang::getCLFallback() const { return CLFallback.get(); } +void ClangAs::AddMIPSTargetArgs(const ArgList &Args, + ArgStringList &CmdArgs) const { + StringRef CPUName; + StringRef ABIName; + const llvm::Triple &Triple = getToolChain().getTriple(); + mips::getMipsCPUAndABI(Args, Triple, CPUName, ABIName); + + CmdArgs.push_back("-target-abi"); + CmdArgs.push_back(ABIName.data()); +} + void ClangAs::ConstructJob(Compilation &C, const JobAction &JA, const InputInfo &Output, const InputInfoList &Inputs, @@ -4981,6 +4981,19 @@ void ClangAs::ConstructJob(Compilation &C, const JobAction &JA, // FIXME: Add -static support, once we have it. + // Add target specific flags. + switch(getToolChain().getArch()) { + default: + break; + + case llvm::Triple::mips: + case llvm::Triple::mipsel: + case llvm::Triple::mips64: + case llvm::Triple::mips64el: + AddMIPSTargetArgs(Args, CmdArgs); + break; + } + // Consume all the warning flags. Usually this would be handled more // gracefully by -cc1 (warning about unknown warning flags, etc) but -cc1as // doesn't handle that so rather than warning about unused flags that are |