Move getInitialFrameState from TargetFrameInfo to MCAsmInfo (suggestions for
[oota-llvm.git] / lib / Target / CellSPU / MCTargetDesc / SPUMCTargetDesc.cpp
index 7d9b29531d626cf66dd25736eb51f553e9b9dccf..3c4147bc9f66d9ba3650fa1140bb5964fd98db80 100644 (file)
@@ -13,6 +13,7 @@
 
 #include "SPUMCTargetDesc.h"
 #include "SPUMCAsmInfo.h"
+#include "llvm/MC/MachineLocation.h"
 #include "llvm/MC/MCInstrInfo.h"
 #include "llvm/MC/MCRegisterInfo.h"
 #include "llvm/MC/MCSubtargetInfo.h"
@@ -62,6 +63,17 @@ extern "C" void LLVMInitializeCellSPUMCSubtargetInfo() {
                                           createSPUMCSubtargetInfo);
 }
 
+static MCAsmInfo *createSPUMCAsmInfo(const Target &T, StringRef TT) {
+  MCAsmInfo *MAI = new SPULinuxMCAsmInfo(T, TT);
+
+  // Initial state of the frame pointer is R1.
+  MachineLocation Dst(MachineLocation::VirtualFP);
+  MachineLocation Src(SPU::R1, 0);
+  MAI->addInitialFrameState(0, Dst, Src);
+
+  return MAI;
+}
+
 extern "C" void LLVMInitializeCellSPUMCAsmInfo() {
-  RegisterMCAsmInfo<SPULinuxMCAsmInfo> X(TheCellSPUTarget);
+  RegisterMCAsmInfoFn X(TheCellSPUTarget, createSPUMCAsmInfo);
 }