r239818 - [mips] Don't propagate -mfpxx by default if soft/single float were also set.

Toma Tabacu toma.tabacu at imgtec.com
Tue Jun 16 06:54:13 PDT 2015


Author: tomatabacu
Date: Tue Jun 16 08:54:13 2015
New Revision: 239818

URL: http://llvm.org/viewvc/llvm-project?rev=239818&view=rev
Log:
[mips] Don't propagate -mfpxx by default if soft/single float were also set.

Summary:
If the driver is only given -msoft-float/-mfloat-abi=soft or -msingle-float,
we should refrain from propagating -mfpxx, unless it was explicitly given on the
command line.

Reviewers: atanasyan, dsanders

Reviewed By: atanasyan, dsanders

Subscribers: cfe-commits, mpf

Differential Revision: http://reviews.llvm.org/D10387

Modified:
    cfe/trunk/lib/Driver/Tools.cpp
    cfe/trunk/lib/Driver/Tools.h
    cfe/trunk/test/Driver/mips-as.c
    cfe/trunk/test/Driver/mips-features.c
    cfe/trunk/test/Driver/mips-integrated-as.s

Modified: cfe/trunk/lib/Driver/Tools.cpp
URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/Driver/Tools.cpp?rev=239818&r1=239817&r2=239818&view=diff
==============================================================================
--- cfe/trunk/lib/Driver/Tools.cpp (original)
+++ cfe/trunk/lib/Driver/Tools.cpp Tue Jun 16 08:54:13 2015
@@ -1116,7 +1116,7 @@ static void getMIPSTargetFeatures(const
       Features.push_back(Args.MakeArgString("+nooddspreg"));
     } else
       Features.push_back(Args.MakeArgString("+fp64"));
-  } else if (mips::isFPXXDefault(Triple, CPUName, ABIName)) {
+  } else if (mips::shouldUseFPXX(Args, Triple, CPUName, ABIName, FloatABI)) {
     Features.push_back(Args.MakeArgString("+fpxx"));
     Features.push_back(Args.MakeArgString("+nooddspreg"));
   }
@@ -5878,7 +5878,7 @@ bool mips::isNaN2008(const ArgList &Args
 }
 
 bool mips::isFPXXDefault(const llvm::Triple &Triple, StringRef CPUName,
-                         StringRef ABIName) {
+                         StringRef ABIName, StringRef FloatABI) {
   if (Triple.getVendor() != llvm::Triple::ImaginationTechnologies &&
       Triple.getVendor() != llvm::Triple::MipsTechnologies)
     return false;
@@ -5886,6 +5886,11 @@ bool mips::isFPXXDefault(const llvm::Tri
   if (ABIName != "32")
     return false;
 
+  // FPXX shouldn't be used if either -msoft-float or -mfloat-abi=soft is
+  // present.
+  if (FloatABI == "soft")
+    return false;
+
   return llvm::StringSwitch<bool>(CPUName)
              .Cases("mips2", "mips3", "mips4", "mips5", true)
              .Cases("mips32", "mips32r2", "mips32r3", "mips32r5", true)
@@ -5893,6 +5898,20 @@ bool mips::isFPXXDefault(const llvm::Tri
              .Default(false);
 }
 
+bool mips::shouldUseFPXX(const ArgList &Args, const llvm::Triple &Triple,
+                         StringRef CPUName, StringRef ABIName,
+                         StringRef FloatABI) {
+  bool UseFPXX = isFPXXDefault(Triple, CPUName, ABIName, FloatABI);
+
+  // FPXX shouldn't be used if -msingle-float is present.
+  if (Arg *A = Args.getLastArg(options::OPT_msingle_float,
+                               options::OPT_mdouble_float))
+    if (A->getOption().matches(options::OPT_msingle_float))
+      UseFPXX = false;
+
+  return UseFPXX;
+}
+
 llvm::Triple::ArchType darwin::getArchTypeForMachOArchName(StringRef Str) {
   // See arch(3) and llvm-gcc's driver-driver.c. We don't implement support for
   // archs which Darwin doesn't use.
@@ -7703,12 +7722,13 @@ void gnutools::Assemble::ConstructJob(Co
     }
 
     // Add the last -mfp32/-mfpxx/-mfp64 or -mfpxx if it is enabled by default.
+    StringRef MIPSFloatABI = getMipsFloatABI(getToolChain().getDriver(), Args);
     if (Arg *A = Args.getLastArg(options::OPT_mfp32, options::OPT_mfpxx,
                                  options::OPT_mfp64)) {
       A->claim();
       A->render(Args, CmdArgs);
-    } else if (mips::isFPXXDefault(getToolChain().getTriple(), CPUName,
-                                   ABIName))
+    } else if (mips::shouldUseFPXX(Args, getToolChain().getTriple(), CPUName,
+                                   ABIName, MIPSFloatABI))
       CmdArgs.push_back("-mfpxx");
 
     // Pass on -mmips16 or -mno-mips16. However, the assembler equivalent of

Modified: cfe/trunk/lib/Driver/Tools.h
URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/Driver/Tools.h?rev=239818&r1=239817&r2=239818&view=diff
==============================================================================
--- cfe/trunk/lib/Driver/Tools.h (original)
+++ cfe/trunk/lib/Driver/Tools.h Tue Jun 16 08:54:13 2015
@@ -249,7 +249,9 @@ namespace mips {
   bool isUCLibc(const llvm::opt::ArgList &Args);
   bool isNaN2008(const llvm::opt::ArgList &Args, const llvm::Triple &Triple);
   bool isFPXXDefault(const llvm::Triple &Triple, StringRef CPUName,
-                     StringRef ABIName);
+                     StringRef ABIName, StringRef FloatABI);
+  bool shouldUseFPXX(const llvm::opt::ArgList &Args, const llvm::Triple &Triple,
+                     StringRef CPUName, StringRef ABIName, StringRef FloatABI);
 }
 
 namespace ppc {

Modified: cfe/trunk/test/Driver/mips-as.c
URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/test/Driver/mips-as.c?rev=239818&r1=239817&r2=239818&view=diff
==============================================================================
--- cfe/trunk/test/Driver/mips-as.c (original)
+++ cfe/trunk/test/Driver/mips-as.c Tue Jun 16 08:54:13 2015
@@ -291,3 +291,69 @@
 // RUN:   | FileCheck -check-prefix=DOUBLEFLOAT --implicit-check-not=-msingle-float %s
 // DOUBLEFLOAT: as{{(.exe)?}}"
 // DOUBLEFLOAT: -mdouble-float
+//
+// RUN: %clang -target mips-linux-gnu -### -no-integrated-as -msoft-float -c %s 2>&1 \
+// RUN:   | FileCheck -check-prefix=SOFTFLOAT-IMPLICIT-FPXX --implicit-check-not=-mfpxx %s
+// SOFTFLOAT-IMPLICIT-FPXX: as{{(.exe)?}}"
+// SOFTFLOAT-IMPLICIT-FPXX: -msoft-float
+//
+// RUN: %clang -target mips-linux-gnu -### -no-integrated-as -msoft-float -mfpxx -c %s 2>&1 \
+// RUN:   | FileCheck -check-prefix=SOFTFLOAT-EXPLICIT-FPXX %s
+// SOFTFLOAT-EXPLICIT-FPXX: as{{(.exe)?}}"
+// SOFTFLOAT-EXPLICIT-FPXX: -mfpxx
+// SOFTFLOAT-EXPLICIT-FPXX: -msoft-float
+//
+// RUN: %clang -target mips-mti-linux-gnu -### -no-integrated-as -msoft-float -c %s 2>&1 \
+// RUN:   | FileCheck -check-prefix=MTI-SOFTFLOAT-IMPLICIT-FPXX --implicit-check-not=-mfpxx %s
+// MTI-SOFTFLOAT-IMPLICIT-FPXX: as{{(.exe)?}}"
+// MTI-SOFTFLOAT-IMPLICIT-FPXX: -msoft-float
+//
+// RUN: %clang -target mips-mti-linux-gnu -### -no-integrated-as -msoft-float -mfpxx -c %s 2>&1 \
+// RUN:   | FileCheck -check-prefix=MTI-SOFTFLOAT-EXPLICIT-FPXX %s
+// MTI-SOFTFLOAT-EXPLICIT-FPXX: as{{(.exe)?}}"
+// MTI-SOFTFLOAT-EXPLICIT-FPXX: -mfpxx
+// MTI-SOFTFLOAT-EXPLICIT-FPXX: -msoft-float
+//
+// RUN: %clang -target mips-img-linux-gnu -### -no-integrated-as -msoft-float -c %s 2>&1 \
+// RUN:   | FileCheck -check-prefix=IMG-SOFTFLOAT-IMPLICIT-FPXX --implicit-check-not=-mfpxx %s
+// IMG-SOFTFLOAT-IMPLICIT-FPXX: as{{(.exe)?}}"
+// IMG-SOFTFLOAT-IMPLICIT-FPXX: -msoft-float
+//
+// RUN: %clang -target mips-img-linux-gnu -### -no-integrated-as -msoft-float -mfpxx -c %s 2>&1 \
+// RUN:   | FileCheck -check-prefix=IMG-SOFTFLOAT-EXPLICIT-FPXX %s
+// IMG-SOFTFLOAT-EXPLICIT-FPXX: as{{(.exe)?}}"
+// IMG-SOFTFLOAT-EXPLICIT-FPXX: -mfpxx
+// IMG-SOFTFLOAT-EXPLICIT-FPXX: -msoft-float
+//
+// RUN: %clang -target mips-linux-gnu -### -no-integrated-as -msingle-float -c %s 2>&1 \
+// RUN:   | FileCheck -check-prefix=SINGLEFLOAT-IMPLICIT-FPXX --implicit-check-not=-mfpxx %s
+// SINGLEFLOAT-IMPLICIT-FPXX: as{{(.exe)?}}"
+// SINGLEFLOAT-IMPLICIT-FPXX: -msingle-float
+//
+// RUN: %clang -target mips-linux-gnu -### -no-integrated-as -msingle-float -mfpxx -c %s 2>&1 \
+// RUN:   | FileCheck -check-prefix=SINGLEFLOAT-EXPLICIT-FPXX %s
+// SINGLEFLOAT-EXPLICIT-FPXX: as{{(.exe)?}}"
+// SINGLEFLOAT-EXPLICIT-FPXX: -mfpxx
+// SINGLEFLOAT-EXPLICIT-FPXX: -msingle-float
+//
+// RUN: %clang -target mips-mti-linux-gnu -### -no-integrated-as -msingle-float -c %s 2>&1 \
+// RUN:   | FileCheck -check-prefix=MTI-SINGLEFLOAT-IMPLICIT-FPXX --implicit-check-not=-mfpxx %s
+// MTI-SINGLEFLOAT-IMPLICIT-FPXX: as{{(.exe)?}}"
+// MTI-SINGLEFLOAT-IMPLICIT-FPXX: -msingle-float
+//
+// RUN: %clang -target mips-mti-linux-gnu -### -no-integrated-as -msingle-float -mfpxx -c %s 2>&1 \
+// RUN:   | FileCheck -check-prefix=MTI-SINGLEFLOAT-EXPLICIT-FPXX %s
+// MTI-SINGLEFLOAT-EXPLICIT-FPXX: as{{(.exe)?}}"
+// MTI-SINGLEFLOAT-EXPLICIT-FPXX: -mfpxx
+// MTI-SINGLEFLOAT-EXPLICIT-FPXX: -msingle-float
+//
+// RUN: %clang -target mips-img-linux-gnu -### -no-integrated-as -msingle-float -c %s 2>&1 \
+// RUN:   | FileCheck -check-prefix=IMG-SINGLEFLOAT-IMPLICIT-FPXX --implicit-check-not=-mfpxx %s
+// IMG-SINGLEFLOAT-IMPLICIT-FPXX: as{{(.exe)?}}"
+// IMG-SINGLEFLOAT-IMPLICIT-FPXX: -msingle-float
+//
+// RUN: %clang -target mips-img-linux-gnu -### -no-integrated-as -msingle-float -mfpxx -c %s 2>&1 \
+// RUN:   | FileCheck -check-prefix=IMG-SINGLEFLOAT-EXPLICIT-FPXX %s
+// IMG-SINGLEFLOAT-EXPLICIT-FPXX: as{{(.exe)?}}"
+// IMG-SINGLEFLOAT-EXPLICIT-FPXX: -mfpxx
+// IMG-SINGLEFLOAT-EXPLICIT-FPXX: -msingle-float

Modified: cfe/trunk/test/Driver/mips-features.c
URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/test/Driver/mips-features.c?rev=239818&r1=239817&r2=239818&view=diff
==============================================================================
--- cfe/trunk/test/Driver/mips-features.c (original)
+++ cfe/trunk/test/Driver/mips-features.c Tue Jun 16 08:54:13 2015
@@ -157,3 +157,75 @@
 // RUN:     -G 16 2>&1 \
 // RUN:   | FileCheck --check-prefix=CHECK-MIPS-G %s
 // CHECK-MIPS-G: "-mllvm" "-mips-ssection-threshold=16"
+//
+// -msoft-float (unknown vendor)
+// RUN: %clang -target mips-linux-gnu -### -c %s -msoft-float 2>&1 \
+// RUN:   | FileCheck --check-prefix=CHECK-SOFTFLOAT %s
+// CHECK-SOFTFLOAT: "-target-feature" "+soft-float"
+// CHECK-SOFTFLOAT-NOT: "-target-feature" "+fpxx"
+//
+// -msoft-float -mfpxx (unknown vendor)
+// RUN: %clang -target mips-linux-gnu -### -c %s -msoft-float -mfpxx 2>&1 \
+// RUN:   | FileCheck --check-prefix=CHECK-SOFTFLOAT-FPXX %s
+// CHECK-SOFTFLOAT-FPXX: "-target-feature" "+soft-float"
+// CHECK-SOFTFLOAT-FPXX: "-target-feature" "+fpxx"
+//
+// -msoft-float (MTI)
+// RUN: %clang -target mips-mti-linux-gnu -### -c %s -msoft-float 2>&1 \
+// RUN:   | FileCheck --check-prefix=CHECK-MTI-SOFTFLOAT %s
+// CHECK-MTI-SOFTFLOAT: "-target-feature" "+soft-float"
+// CHECK-MTI-SOFTFLOAT-NOT: "-target-feature" "+fpxx"
+//
+// -msoft-float -mfpxx (MTI)
+// RUN: %clang -target mips-mti-linux-gnu -### -c %s -msoft-float -mfpxx 2>&1 \
+// RUN:   | FileCheck --check-prefix=CHECK-MTI-SOFTFLOAT-FPXX %s
+// CHECK-MTI-SOFTFLOAT-FPXX: "-target-feature" "+soft-float"
+// CHECK-MTI-SOFTFLOAT-FPXX: "-target-feature" "+fpxx"
+//
+// -msoft-float (IMG)
+// RUN: %clang -target mips-img-linux-gnu -### -c %s -msoft-float 2>&1 \
+// RUN:   | FileCheck --check-prefix=CHECK-IMG-SOFTFLOAT %s
+// CHECK-IMG-SOFTFLOAT: "-target-feature" "+soft-float"
+// CHECK-IMG-SOFTFLOAT-NOT: "-target-feature" "+fpxx"
+//
+// -msoft-float -mfpxx (IMG)
+// RUN: %clang -target mips-img-linux-gnu -### -c %s -msoft-float -mfpxx 2>&1 \
+// RUN:   | FileCheck --check-prefix=CHECK-IMG-SOFTFLOAT-FPXX %s
+// CHECK-IMG-SOFTFLOAT-FPXX: "-target-feature" "+soft-float"
+// CHECK-IMG-SOFTFLOAT-FPXX: "-target-feature" "+fpxx"
+//
+// -msingle-float (unknown vendor)
+// RUN: %clang -target mips-linux-gnu -### -c %s -msingle-float 2>&1 \
+// RUN:   | FileCheck --check-prefix=CHECK-SINGLEFLOAT %s
+// CHECK-SINGLEFLOAT: "-target-feature" "+single-float"
+// CHECK-SINGLEFLOAT-NOT: "-target-feature" "+fpxx"
+//
+// -msingle-float -mfpxx (unknown vendor)
+// RUN: %clang -target mips-linux-gnu -### -c %s -msingle-float -mfpxx 2>&1 \
+// RUN:   | FileCheck --check-prefix=CHECK-SINGLEFLOAT-FPXX %s
+// CHECK-SINGLEFLOAT-FPXX: "-target-feature" "+single-float"
+// CHECK-SINGLEFLOAT-FPXX: "-target-feature" "+fpxx"
+//
+// -msingle-float (MTI)
+// RUN: %clang -target mips-mti-linux-gnu -### -c %s -msingle-float 2>&1 \
+// RUN:   | FileCheck --check-prefix=CHECK-MTI-SINGLEFLOAT %s
+// CHECK-MTI-SINGLEFLOAT: "-target-feature" "+single-float"
+// CHECK-MTI-SINGLEFLOAT-NOT: "-target-feature" "+fpxx"
+//
+// -msingle-float -mfpxx (MTI)
+// RUN: %clang -target mips-mti-linux-gnu -### -c %s -msingle-float -mfpxx 2>&1 \
+// RUN:   | FileCheck --check-prefix=CHECK-MTI-SINGLEFLOAT-FPXX %s
+// CHECK-MTI-SINGLEFLOAT-FPXX: "-target-feature" "+single-float"
+// CHECK-MTI-SINGLEFLOAT-FPXX: "-target-feature" "+fpxx"
+//
+// -msingle-float (IMG)
+// RUN: %clang -target mips-img-linux-gnu -### -c %s -msingle-float 2>&1 \
+// RUN:   | FileCheck --check-prefix=CHECK-IMG-SINGLEFLOAT %s
+// CHECK-IMG-SINGLEFLOAT: "-target-feature" "+single-float"
+// CHECK-IMG-SINGLEFLOAT-NOT: "-target-feature" "+fpxx"
+//
+// -msingle-float -mfpxx (IMG)
+// RUN: %clang -target mips-img-linux-gnu -### -c %s -msingle-float -mfpxx 2>&1 \
+// RUN:   | FileCheck --check-prefix=CHECK-IMG-SINGLEFLOAT-FPXX %s
+// CHECK-IMG-SINGLEFLOAT-FPXX: "-target-feature" "+single-float"
+// CHECK-IMG-SINGLEFLOAT-FPXX: "-target-feature" "+fpxx"

Modified: cfe/trunk/test/Driver/mips-integrated-as.s
URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/test/Driver/mips-integrated-as.s?rev=239818&r1=239817&r2=239818&view=diff
==============================================================================
--- cfe/trunk/test/Driver/mips-integrated-as.s (original)
+++ cfe/trunk/test/Driver/mips-integrated-as.s Tue Jun 16 08:54:13 2015
@@ -209,3 +209,87 @@
 // RUN:   FileCheck -check-prefix=ABICALLS-OFF %s
 // ABICALLS-OFF: -cc1as
 // ABICALLS-OFF: "-target-feature" "+noabicalls"
+
+// RUN: %clang -target mips-linux-gnu -### -fintegrated-as -msoft-float -c %s 2>&1 | \
+// RUN:   FileCheck -check-prefix=SOFTFLOAT-IMPLICIT-FPXX --implicit-check-not=-mfpxx %s
+// SOFTFLOAT-IMPLICIT-FPXX: -cc1as
+// SOFTFLOAT-IMPLICIT-FPXX: "-target-feature" "+soft-float"
+// SOFTFLOAT-IMPLICIT-FPXX-NOT: "-target-feature" "+fpxx"
+// SOFTFLOAT-IMPLICIT-FPXX-NOT: "-target-feature" "+nooddspreg"
+
+// RUN: %clang -target mips-linux-gnu -### -fintegrated-as -msoft-float -mfpxx -c %s 2>&1 | \
+// RUN:   FileCheck -check-prefix=SOFTFLOAT-EXPLICIT-FPXX %s
+// SOFTFLOAT-EXPLICIT-FPXX: -cc1as
+// SOFTFLOAT-EXPLICIT-FPXX: "-target-feature" "+soft-float"
+// SOFTFLOAT-EXPLICIT-FPXX: "-target-feature" "+fpxx"
+// SOFTFLOAT-EXPLICIT-FPXX: "-target-feature" "+nooddspreg"
+
+// RUN: %clang -target mips-mti-linux-gnu -### -fintegrated-as -msoft-float -c %s 2>&1 | \
+// RUN:   FileCheck -check-prefix=MTI-SOFTFLOAT-IMPLICIT-FPXX --implicit-check-not=-mfpxx %s
+// MTI-SOFTFLOAT-IMPLICIT-FPXX: -cc1as
+// MTI-SOFTFLOAT-IMPLICIT-FPXX: "-target-feature" "+soft-float"
+// MTI-SOFTFLOAT-IMPLICIT-FPXX-NOT: "-target-feature" "+fpxx"
+// MTI-SOFTFLOAT-IMPLICIT-FPXX-NOT: "-target-feature" "+nooddspreg"
+
+// RUN: %clang -target mips-mti-linux-gnu -### -fintegrated-as -msoft-float -mfpxx -c %s 2>&1 | \
+// RUN:   FileCheck -check-prefix=MTI-SOFTFLOAT-EXPLICIT-FPXX %s
+// MTI-SOFTFLOAT-EXPLICIT-FPXX: -cc1as
+// MTI-SOFTFLOAT-EXPLICIT-FPXX: "-target-feature" "+soft-float"
+// MTI-SOFTFLOAT-EXPLICIT-FPXX: "-target-feature" "+fpxx"
+// MTI-SOFTFLOAT-EXPLICIT-FPXX: "-target-feature" "+nooddspreg"
+
+// RUN: %clang -target mips-img-linux-gnu -### -fintegrated-as -msoft-float -c %s 2>&1 | \
+// RUN:   FileCheck -check-prefix=IMG-SOFTFLOAT-IMPLICIT-FPXX --implicit-check-not=-mfpxx %s
+// IMG-SOFTFLOAT-IMPLICIT-FPXX: -cc1as
+// IMG-SOFTFLOAT-IMPLICIT-FPXX: "-target-feature" "+soft-float"
+// IMG-SOFTFLOAT-IMPLICIT-FPXX-NOT: "-target-feature" "+fpxx"
+// IMG-SOFTFLOAT-IMPLICIT-FPXX-NOT: "-target-feature" "+nooddspreg"
+
+// RUN: %clang -target mips-img-linux-gnu -### -fintegrated-as -msoft-float -mfpxx -c %s 2>&1 | \
+// RUN:   FileCheck -check-prefix=IMG-SOFTFLOAT-EXPLICIT-FPXX %s
+// IMG-SOFTFLOAT-EXPLICIT-FPXX: -cc1as
+// IMG-SOFTFLOAT-EXPLICIT-FPXX: "-target-feature" "+soft-float"
+// IMG-SOFTFLOAT-EXPLICIT-FPXX: "-target-feature" "+fpxx"
+// IMG-SOFTFLOAT-EXPLICIT-FPXX: "-target-feature" "+nooddspreg"
+
+// RUN: %clang -target mips-linux-gnu -### -fintegrated-as -msingle-float -c %s 2>&1 | \
+// RUN:   FileCheck -check-prefix=SINGLEFLOAT-IMPLICIT-FPXX --implicit-check-not=-mfpxx %s
+// SINGLEFLOAT-IMPLICIT-FPXX: -cc1as
+// SINGLEFLOAT-IMPLICIT-FPXX: "-target-feature" "+single-float"
+// SINGLEFLOAT-IMPLICIT-FPXX-NOT: "-target-feature" "+fpxx"
+// SINGLEFLOAT-IMPLICIT-FPXX-NOT: "-target-feature" "+nooddspreg"
+
+// RUN: %clang -target mips-linux-gnu -### -fintegrated-as -msingle-float -mfpxx -c %s 2>&1 | \
+// RUN:   FileCheck -check-prefix=SINGLEFLOAT-EXPLICIT-FPXX %s
+// SINGLEFLOAT-EXPLICIT-FPXX: -cc1as
+// SINGLEFLOAT-EXPLICIT-FPXX: "-target-feature" "+single-float"
+// SINGLEFLOAT-EXPLICIT-FPXX: "-target-feature" "+fpxx"
+// SINGLEFLOAT-EXPLICIT-FPXX: "-target-feature" "+nooddspreg"
+
+// RUN: %clang -target mips-mti-linux-gnu -### -fintegrated-as -msingle-float -c %s 2>&1 | \
+// RUN:   FileCheck -check-prefix=MTI-SINGLEFLOAT-IMPLICIT-FPXX --implicit-check-not=-mfpxx %s
+// MTI-SINGLEFLOAT-IMPLICIT-FPXX: -cc1as
+// MTI-SINGLEFLOAT-IMPLICIT-FPXX: "-target-feature" "+single-float"
+// MTI-SINGLEFLOAT-IMPLICIT-FPXX-NOT: "-target-feature" "+fpxx"
+// MTI-SINGLEFLOAT-IMPLICIT-FPXX-NOT: "-target-feature" "+nooddspreg"
+
+// RUN: %clang -target mips-mti-linux-gnu -### -fintegrated-as -msingle-float -mfpxx -c %s 2>&1 | \
+// RUN:   FileCheck -check-prefix=MTI-SINGLEFLOAT-EXPLICIT-FPXX %s
+// MTI-SINGLEFLOAT-EXPLICIT-FPXX: -cc1as
+// MTI-SINGLEFLOAT-EXPLICIT-FPXX: "-target-feature" "+single-float"
+// MTI-SINGLEFLOAT-EXPLICIT-FPXX: "-target-feature" "+fpxx"
+// MTI-SINGLEFLOAT-EXPLICIT-FPXX: "-target-feature" "+nooddspreg"
+
+// RUN: %clang -target mips-img-linux-gnu -### -fintegrated-as -msingle-float -c %s 2>&1 | \
+// RUN:   FileCheck -check-prefix=IMG-SINGLEFLOAT-IMPLICIT-FPXX --implicit-check-not=-mfpxx %s
+// IMG-SINGLEFLOAT-IMPLICIT-FPXX: -cc1as
+// IMG-SINGLEFLOAT-IMPLICIT-FPXX: "-target-feature" "+single-float"
+// IMG-SINGLEFLOAT-IMPLICIT-FPXX-NOT: "-target-feature" "+fpxx"
+// IMG-SINGLEFLOAT-IMPLICIT-FPXX-NOT: "-target-feature" "+nooddspreg"
+
+// RUN: %clang -target mips-img-linux-gnu -### -fintegrated-as -msingle-float -mfpxx -c %s 2>&1 | \
+// RUN:   FileCheck -check-prefix=IMG-SINGLEFLOAT-EXPLICIT-FPXX %s
+// IMG-SINGLEFLOAT-EXPLICIT-FPXX: -cc1as
+// IMG-SINGLEFLOAT-EXPLICIT-FPXX: "-target-feature" "+single-float"
+// IMG-SINGLEFLOAT-EXPLICIT-FPXX: "-target-feature" "+fpxx"
+// IMG-SINGLEFLOAT-EXPLICIT-FPXX: "-target-feature" "+nooddspreg"





More information about the cfe-commits mailing list