aboutsummaryrefslogtreecommitdiff
path: root/lib/Target/ARM/MCTargetDesc/ARMMCTargetDesc.cpp
diff options
context:
space:
mode:
authorDerek Schuff <dschuff@chromium.org>2012-07-09 10:52:46 -0700
committerDerek Schuff <dschuff@chromium.org>2012-07-09 11:00:37 -0700
commit5dbcc7e0c9c12f4a4042fb4a226654aee927999c (patch)
treeb316a3370e9286cb4e6f81b2f9d8bd8b54ce5123 /lib/Target/ARM/MCTargetDesc/ARMMCTargetDesc.cpp
parent86dc97be9ac3b4804528e087b04b4f4192cdee54 (diff)
LOCALMODs from hg 0b098ca44de7 against r158408 (hg 90a87d6bfe45)
(only non-new files; new files in git 4f429c8b) Change-Id: Ia39f818088485bd90e4d048db404f8d6ba5f836b
Diffstat (limited to 'lib/Target/ARM/MCTargetDesc/ARMMCTargetDesc.cpp')
-rw-r--r--lib/Target/ARM/MCTargetDesc/ARMMCTargetDesc.cpp27
1 files changed, 24 insertions, 3 deletions
diff --git a/lib/Target/ARM/MCTargetDesc/ARMMCTargetDesc.cpp b/lib/Target/ARM/MCTargetDesc/ARMMCTargetDesc.cpp
index 5df84c8b10..e581cc82fa 100644
--- a/lib/Target/ARM/MCTargetDesc/ARMMCTargetDesc.cpp
+++ b/lib/Target/ARM/MCTargetDesc/ARMMCTargetDesc.cpp
@@ -78,10 +78,22 @@ std::string ARM_MC::ParseARMTriple(StringRef TT, StringRef CPU) {
// features.
if (NoCPU)
// v7a: FeatureNEON, FeatureDB, FeatureDSPThumb2, FeatureT2XtPk
- ARMArchFeature = "+v7,+neon,+db,+t2dsp,+t2xtpk";
+ // @LOCALMOD-BEGIN
+ // Orig: ARMArchFeature = "+v7,+neon,+db,+t2dsp,+t2xtpk";
+ // TODO(pdox): Eliminate this strange exception, possibly
+ // with our own cpu tag. (neon doesn't work, but vfp2 does).
+ // We also don't seem to handle The DSP features.
+ ARMArchFeature = "+v7,+db,+vfp2";
+ // @LOCALMOD-END
else
// Use CPU to figure out the exact features.
- ARMArchFeature = "+v7";
+ // @LOCALMOD-BEGIN
+ // Orig: ARMArchFeature = "+v7";
+ // TODO(pdox): Eliminate this strange exception, possibly
+ // with our own cpu tag. (neon doesn't work, but vfp2 does).
+ // We also don't seem to handle The DSP features.
+ ARMArchFeature = "+v7,+db,+vfp2";
+ // @LOCALMOD-END
}
} else if (SubVer == '6') {
if (Len >= Idx+3 && TT[Idx+1] == 't' && TT[Idx+2] == '2')
@@ -146,7 +158,16 @@ static MCAsmInfo *createARMMCAsmInfo(const Target &T, StringRef TT) {
if (TheTriple.isOSDarwin())
return new ARMMCAsmInfoDarwin();
- return new ARMELFMCAsmInfo();
+ // @LOCALMOD-BEGIN
+ ARMELFMCAsmInfo *MAI = new ARMELFMCAsmInfo();
+ if (TheTriple.getOS() == Triple::NativeClient) {
+ // Initial state of the frame ARM:SP points to cfa
+ MachineLocation Dst(MachineLocation::VirtualFP);
+ MachineLocation Src(ARM::SP, 0);
+ MAI->addInitialFrameState(0, Dst, Src);
+ }
+ return MAI;
+ // @LOCALMOD-END
}
static MCCodeGenInfo *createARMMCCodeGenInfo(StringRef TT, Reloc::Model RM,