From e009860049c0062fc1c708e46c7d868a84e3a41f Mon Sep 17 00:00:00 2001 From: Jim Grosbach Date: Fri, 10 Feb 2012 02:21:49 +0000 Subject: [PATCH] ARM on darwin, v6 implies the presence of VFP for the assembler. 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 | 14 +++++++++++--- 1 file changed, 11 insertions(+), 3 deletions(-) diff --git a/lib/Target/ARM/MCTargetDesc/ARMMCTargetDesc.cpp b/lib/Target/ARM/MCTargetDesc/ARMMCTargetDesc.cpp index e86f48e309c..bc6d8f98944 100644 --- a/lib/Target/ARM/MCTargetDesc/ARMMCTargetDesc.cpp +++ b/lib/Target/ARM/MCTargetDesc/ARMMCTargetDesc.cpp @@ -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";