r199896 - MachO embedded: default to soft float without issuing warning

Tim Northover tnorthover at apple.com
Thu Jan 23 07:00:01 PST 2014


Author: tnorthover
Date: Thu Jan 23 09:00:01 2014
New Revision: 199896

URL: http://llvm.org/viewvc/llvm-project?rev=199896&view=rev
Log:
MachO embedded: default to soft float without issuing warning

This is a simpler rule, broadly in line with previous Darwin (which chose
between "soft" and "softfp") but probably safer. In practice the only real
reason for "softfp" is ABI compatibility, not usually an issue on limited chips
like these, so anyone who wanted hard-float should already be saying so.

That's my story and I'm sticking to it.

rdar://problem/15887493

Modified:
    cfe/trunk/lib/Driver/Tools.cpp
    cfe/trunk/test/Driver/darwin-embedded.c

Modified: cfe/trunk/lib/Driver/Tools.cpp
URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/Driver/Tools.cpp?rev=199896&r1=199895&r2=199896&view=diff
==============================================================================
--- cfe/trunk/lib/Driver/Tools.cpp (original)
+++ cfe/trunk/lib/Driver/Tools.cpp Thu Jan 23 09:00:01 2014
@@ -662,6 +662,10 @@ StringRef tools::arm::getARMFloatABI(con
         // EABI is always AAPCS, and if it was not marked 'hard', it's softfp
         FloatABI = "softfp";
         break;
+      case llvm::Triple::MachO: {
+        FloatABI = "soft";
+        break;
+      }
       case llvm::Triple::Android: {
         std::string ArchName =
           arm::getLLVMArchSuffixForARM(arm::getARMTargetCPU(Args, Triple));

Modified: cfe/trunk/test/Driver/darwin-embedded.c
URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/test/Driver/darwin-embedded.c?rev=199896&r1=199895&r2=199896&view=diff
==============================================================================
--- cfe/trunk/test/Driver/darwin-embedded.c (original)
+++ cfe/trunk/test/Driver/darwin-embedded.c Thu Jan 23 09:00:01 2014
@@ -12,24 +12,49 @@
 // RUN: FileCheck %s < %t
 
 // ARMv6m has no float
+// CHECK-LABEL: Target:
+// CHECK-NOT: warning: unknown platform
+// CHECK: "-mfloat-abi" "soft"
 // CHECK: libclang_rt.soft_static.a
 
 // ARMv7em does, but defaults to soft
+// CHECK-LABEL: Target:
+// CHECK-NOT: warning: unknown platform
+// CHECK: "-mfloat-abi" "soft"
 // CHECK: libclang_rt.soft_static.a
 
 // Which can be overridden
+// CHECK-LABEL: Target:
+// CHECK-NOT: warning: unknown platform
+// CHECK: "-mfloat-abi" "hard"
 // CHECK: libclang_rt.hard_static.a
 
 // ARMv7m has no float either
+// CHECK-LABEL: Target:
+// CHECK-NOT: warning: unknown platform
+// CHECK: "-mfloat-abi" "soft"
 // CHECK: libclang_rt.soft_pic.a
 
 // But it can be enabled on ARMv7em
+// CHECK-LABEL: Target:
+// CHECK-NOT: warning: unknown platform
+// CHECK: "-mfloat-abi" "hard"
 // CHECK: libclang_rt.hard_pic.a
 
 // "softfp" must link against a soft-float library since that's what the
 // callers we're compiling will expect.
+// CHECK-LABEL: Target:
+// CHECK-NOT: warning: unknown platform
+// CHECK: "-mfloat-abi" "soft"
 // CHECK: libclang_rt.soft_pic.a
 
 // -arch "armv7" (== embedded v7a) can be used in a couple of variants:
+// CHECK-LABEL: Target:
+// CHECK-NOT: warning: unknown platform
+// CHECK: "-mfloat-abi" "hard"
 // CHECK: libclang_rt.hard_static.a
+
+// CHECK-LABEL: Target:
+// CHECK-NOT: warning: unknown platform
+// CHECK: "-mfloat-abi" "soft"
 // CHECK: libclang_rt.soft_pic.a





More information about the cfe-commits mailing list