aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJim Grosbach <grosbach@apple.com>2012-02-10 02:21:49 +0000
committerJim Grosbach <grosbach@apple.com>2012-02-10 02:21:49 +0000
commite009860049c0062fc1c708e46c7d868a84e3a41f (patch)
tree5f2cef9f64e3f9accddd5e7dcae4649e8dcb6c2c
parent9f10ac63a3a2a74ac381a05d8ba0f7b1b455a6b6 (diff)
downloadexternal_llvm-e009860049c0062fc1c708e46c7d868a84e3a41f.zip
external_llvm-e009860049c0062fc1c708e46c7d868a84e3a41f.tar.gz
external_llvm-e009860049c0062fc1c708e46c7d868a84e3a41f.tar.bz2
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
-rw-r--r--lib/Target/ARM/MCTargetDesc/ARMMCTargetDesc.cpp14
1 files changed, 11 insertions, 3 deletions
diff --git a/lib/Target/ARM/MCTargetDesc/ARMMCTargetDesc.cpp b/lib/Target/ARM/MCTargetDesc/ARMMCTargetDesc.cpp
index e86f48e..bc6d8f9 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";