diff --git a/clang/lib/Driver/Tools.cpp b/clang/lib/Driver/Tools.cpp index ad03e2ec11c2..ac1fe5cee2cf 100644 --- a/clang/lib/Driver/Tools.cpp +++ b/clang/lib/Driver/Tools.cpp @@ -1015,8 +1015,7 @@ static void AddTargetFeature(const ArgList &Args, static void getMIPSTargetFeatures(const Driver &D, const ArgList &Args, std::vector &Features) { StringRef FloatABI = getMipsFloatABI(D, Args); - bool IsMips16 = Args.getLastArg(options::OPT_mips16) != NULL; - if (FloatABI == "soft" || (FloatABI == "hard" && IsMips16)) { + if (FloatABI == "soft") { // FIXME: Note, this is a hack. We need to pass the selected float // mode to the MipsTargetInfoBase to define appropriate macros there. // Now it is the only method. @@ -1057,18 +1056,11 @@ void Clang::AddMIPSTargetArgs(const ArgList &Args, StringRef FloatABI = getMipsFloatABI(D, Args); - bool IsMips16 = Args.getLastArg(options::OPT_mips16) != NULL; - - if (FloatABI == "soft" || (FloatABI == "hard" && IsMips16)) { + if (FloatABI == "soft") { // Floating point operations and argument passing are soft. CmdArgs.push_back("-msoft-float"); CmdArgs.push_back("-mfloat-abi"); CmdArgs.push_back("soft"); - - if (FloatABI == "hard" && IsMips16) { - CmdArgs.push_back("-mllvm"); - CmdArgs.push_back("-mips16-hard-float"); - } } else { // Floating point operations and argument passing are hard. diff --git a/clang/test/Driver/mips-float.c b/clang/test/Driver/mips-float.c index ad2106a00e81..162107567298 100644 --- a/clang/test/Driver/mips-float.c +++ b/clang/test/Driver/mips-float.c @@ -60,23 +60,22 @@ // RUN: %clang -c %s -### -o %t.o 2>&1 \ // RUN: -target mips-linux-gnu -mips16 \ // RUN: | FileCheck --check-prefix=CHECK-DEF-MIPS16 %s -// CHECK-DEF-MIPS16: "-mfloat-abi" "soft" -// CHECK-DEF-MIPS16: "-mllvm" "-mips16-hard-float" +// CHECK-DEF-MIPS16: "-target-feature" "+mips16" +// CHECK-DEF-MIPS16: "-mfloat-abi" "hard" // // -mhard-float -mips16 // RUN: %clang -c %s -### -o %t.o 2>&1 \ // RUN: -target mips-linux-gnu -mhard-float -mips16 \ // RUN: | FileCheck --check-prefix=CHECK-HARD-MIPS16 %s -// CHECK-HARD-MIPS16: "-target-feature" "+soft-float" -// CHECK-HARD-MIPS16: "-msoft-float" -// CHECK-HARD-MIPS16: "-mfloat-abi" "soft" -// CHECK-HARD-MIPS16: "-mllvm" "-mips16-hard-float" +// CHECK-HARD-MIPS16: "-target-feature" "+mips16" +// CHECK-HARD-MIPS16: "-mfloat-abi" "hard" // // -msoft-float -mips16 // RUN: %clang -c %s -### -o %t.o 2>&1 \ // RUN: -target mips-linux-gnu -msoft-float -mips16 \ // RUN: | FileCheck --check-prefix=CHECK-SOFT-MIPS16 %s // CHECK-SOFT-MIPS16: "-target-feature" "+soft-float" +// CHECK-SOFT-MIPS16: "-target-feature" "+mips16" // CHECK-SOFT-MIPS16: "-msoft-float" // CHECK-SOFT-MIPS16: "-mfloat-abi" "soft" // @@ -84,15 +83,14 @@ // RUN: %clang -c %s -### -o %t.o 2>&1 \ // RUN: -target mips-linux-gnu -mfloat-abi=hard -mips16 \ // RUN: | FileCheck --check-prefix=CHECK-ABI-HARD-MIPS16 %s -// CHECK-ABI-HARD-MIPS16: "-target-feature" "+soft-float" -// CHECK-ABI-HARD-MIPS16: "-msoft-float" -// CHECK-ABI-HARD-MIPS16: "-mfloat-abi" "soft" -// CHECK-ABI-HARD-MIPS16: "-mllvm" "-mips16-hard-float" +// CHECK-ABI-HARD-MIPS16: "-target-feature" "+mips16" +// CHECK-ABI-HARD-MIPS16: "-mfloat-abi" "hard" // // -mfloat-abi=soft -mips16 // RUN: %clang -c %s -### -o %t.o 2>&1 \ // RUN: -target mips-linux-gnu -mfloat-abi=soft -mips16 \ // RUN: | FileCheck --check-prefix=CHECK-ABI-SOFT-MIPS16 %s // CHECK-ABI-SOFT-MIPS16: "-target-feature" "+soft-float" +// CHECK-ABI-SOFT-MIPS16: "-target-feature" "+mips16" // CHECK-ABI-SOFT-MIPS16: "-msoft-float" // CHECK-ABI-SOFT-MIPS16: "-mfloat-abi" "soft"