diff --git a/lib/Driver/Tools.cpp b/lib/Driver/Tools.cpp index 6165c15fefa73d14e0f58288c2c7e1e5264875f1..bbcba47b4021fb3ccc9d867e0efed5d408bb32cd 100644 --- a/lib/Driver/Tools.cpp +++ b/lib/Driver/Tools.cpp @@ -5068,6 +5068,10 @@ void linuxtools::Assemble::ConstructJob(Compilation &C, const JobAction &JA, StringRef ARMFloatABI = getARMFloatABI(getToolChain().getDriver(), Args, getToolChain().getTriple()); CmdArgs.push_back(Args.MakeArgString("-mfloat-abi=" + ARMFloatABI)); + + Args.AddLastArg(CmdArgs, options::OPT_march_EQ); + Args.AddLastArg(CmdArgs, options::OPT_mcpu_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 || @@ -5095,10 +5099,6 @@ void linuxtools::Assemble::ConstructJob(Compilation &C, const JobAction &JA, CmdArgs.push_back("-EL"); } - Args.AddLastArg(CmdArgs, options::OPT_march_EQ); - Args.AddLastArg(CmdArgs, options::OPT_mcpu_EQ); - Args.AddLastArg(CmdArgs, options::OPT_mfpu_EQ); - Args.AddAllArgValues(CmdArgs, options::OPT_Wa_COMMA, options::OPT_Xassembler); diff --git a/test/Driver/linux-as.c b/test/Driver/linux-as.c index 8c14993a405149ee9309185dc55f00b0179b299f..b3265da234788666ee73a344f6713aefca51af5d 100644 --- a/test/Driver/linux-as.c +++ b/test/Driver/linux-as.c @@ -49,3 +49,8 @@ // RUN: -no-integrated-as -c %s 2>&1 \ // RUN: | FileCheck -check-prefix=ARM-HARDFP %s // CHECK-ARM-HARDFP: as{{(.exe)?}}" "-mfloat-abi=hard" +// +// RUN: %clang -target ppc-linux -mcpu=invalid-cpu -### \ +// RUN: -no-integrated-as -c %s 2>&1 \ +// RUN: | FileCheck -check-prefix=PPC-NO-MCPU %s +// CHECK-PPC-NO-MCPU-NOT: as{{.*}} "-mcpu=invalid-cpu"