summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--lib/Driver/Tools.cpp9
1 files changed, 8 insertions, 1 deletions
diff --git a/lib/Driver/Tools.cpp b/lib/Driver/Tools.cpp
index 4043452181..d848535701 100644
--- a/lib/Driver/Tools.cpp
+++ b/lib/Driver/Tools.cpp
@@ -5826,6 +5826,14 @@ void gnutools::Assemble::ConstructJob(Compilation &C, const JobAction &JA,
getToolChain().getTriple());
CmdArgs.push_back(Args.MakeArgString("-mfloat-abi=" + ARMFloatABI));
llvm::Triple Triple = getToolChain().getTriple();
+ if (Args.hasArg(options::OPT_mfpu_EQ)) {
+ Args.AddLastArg(CmdArgs, options::OPT_mfpu_EQ);
+ } else if (Triple.getEnvironment() == llvm::Triple::GNUEABIHF &&
+ llvm::sys::hasDefaultTargetFpu()) {
+ StringRef MFPU = llvm::sys::getDefaultTargetFpu();
+ CmdArgs.push_back(Args.MakeArgString("-mfpu=" + MFPU));
+ }
+
if (Args.hasArg(options::OPT_mcpu_EQ)) {
Args.AddLastArg(CmdArgs, options::OPT_mcpu_EQ);
} else {
@@ -5833,7 +5841,6 @@ void gnutools::Assemble::ConstructJob(Compilation &C, const JobAction &JA,
CmdArgs.push_back(Args.MakeArgString("-mcpu=" + MCPU));
}
Args.AddLastArg(CmdArgs, options::OPT_march_EQ);
- Args.AddLastArg(CmdArgs, options::OPT_mfpu_EQ);
} else if (getToolChain().getArch() == llvm::Triple::mips ||
getToolChain().getArch() == llvm::Triple::mipsel ||
getToolChain().getArch() == llvm::Triple::mips64 ||