ARM on darwin, v6 implies the presence of VFP for the assembler.
authorJim Grosbach <grosbach@apple.com>
Fri, 10 Feb 2012 02:21:49 +0000 (02:21 +0000)
committerJim Grosbach <grosbach@apple.com>
Fri, 10 Feb 2012 02:21:49 +0000 (02:21 +0000)
rdar://10838899

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@150222 91177308-0d34-0410-b5e6-96231b3b80d8

lib/Target/ARM/MCTargetDesc/ARMMCTargetDesc.cpp

index e86f48e309ce022beff018ee0d037861be58174f..bc6d8f9894453de020d7b8e2efda86a9194f3279 100644 (file)
@@ -66,13 +66,21 @@ std::string ARM_MC::ParseARMTriple(StringRef TT) {
         // v7a: FeatureNEON, FeatureDB, FeatureDSPThumb2, FeatureT2XtPk
         ARMArchFeature = "+v7,+neon,+db,+t2dsp,+t2xtpk";
     } else if (SubVer == '6') {
-      if (Len >= Idx+3 && TT[Idx+1] == 't' && TT[Idx+2] == '2')
+      Triple TheTriple(TT);
+      if (Len >= Idx+3 && TT[Idx+1] == 't' && TT[Idx+2] == '2') {
         ARMArchFeature = "+v6t2";
-      else if (Len >= Idx+2 && TT[Idx+1] == 'm')
+        // On darwin, v6 implies VFP.
+        if (TheTriple.isOSDarwin())
+          ARMArchFeature += ",+vfp2";
+      } else if (Len >= Idx+2 && TT[Idx+1] == 'm')
         // v6m: FeatureNoARM, FeatureMClass
         ARMArchFeature = "+v6t2,+noarm,+mclass";
-      else
+      else {
         ARMArchFeature = "+v6";
+        // On darwin, v6 implies VFP.
+        if (TheTriple.isOSDarwin())
+          ARMArchFeature += ",+vfp2";
+      }
     } else if (SubVer == '5') {
       if (Len >= Idx+3 && TT[Idx+1] == 't' && TT[Idx+2] == 'e')
         ARMArchFeature = "+v5te";