From c591025a25f1318b268766b665f37f65e99349ba Mon Sep 17 00:00:00 2001 From: Simon Atanasyan Date: Tue, 19 Nov 2013 12:22:38 +0000 Subject: [PATCH] [Mips] Do not adjust float-abi flags in case of MIPS16 mode. This code should be isolated in the backend (r195123). From the frontend point of view in case of "-mhard-float -mips16" combination of flags the float ABI mode should remain unchanged. The patch reviewed by Reed Kotler. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@195124 91177308-0d34-0410-b5e6-96231b3b80d8 --- lib/Driver/Tools.cpp | 12 ++---------- test/Driver/mips-float.c | 18 ++++++++---------- 2 files changed, 10 insertions(+), 20 deletions(-) diff --git a/lib/Driver/Tools.cpp b/lib/Driver/Tools.cpp index ad03e2ec11..ac1fe5cee2 100644 --- a/lib/Driver/Tools.cpp +++ b/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/test/Driver/mips-float.c b/test/Driver/mips-float.c index ad2106a00e..1621075672 100644 --- a/test/Driver/mips-float.c +++ b/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" -- 2.50.1