ARM: mark additional instructions as MachineFrameSetup

Mark up additional instructions which are part of the function prologue as
MachineFrameSetup.  These instructions are part of the function prologue,
emitted by the PEI pass to setup the stack for use in the activating frame.

llvm-svn: 208153
This commit is contained in:
Saleem Abdulrasool 2014-05-07 03:03:31 +00:00
parent acd0338c61
commit 985dcf18a9
1 changed files with 10 additions and 5 deletions

View File

@ -299,10 +299,12 @@ void ARMFrameLowering::emitPrologue(MachineFunction &MF) const {
if (NumWords < 65536) if (NumWords < 65536)
AddDefaultPred(BuildMI(MBB, MBBI, dl, TII.get(ARM::t2MOVi16), ARM::R4) AddDefaultPred(BuildMI(MBB, MBBI, dl, TII.get(ARM::t2MOVi16), ARM::R4)
.addImm(NumWords)); .addImm(NumWords)
.setMIFlags(MachineInstr::FrameSetup));
else else
BuildMI(MBB, MBBI, dl, TII.get(ARM::t2MOVi32imm), ARM::R4) BuildMI(MBB, MBBI, dl, TII.get(ARM::t2MOVi32imm), ARM::R4)
.addImm(NumWords); .addImm(NumWords)
.setMIFlags(MachineInstr::FrameSetup);
switch (TM.getCodeModel()) { switch (TM.getCodeModel()) {
case CodeModel::Small: case CodeModel::Small:
@ -312,17 +314,20 @@ void ARMFrameLowering::emitPrologue(MachineFunction &MF) const {
BuildMI(MBB, MBBI, dl, TII.get(ARM::tBL)) BuildMI(MBB, MBBI, dl, TII.get(ARM::tBL))
.addImm((unsigned)ARMCC::AL).addReg(0) .addImm((unsigned)ARMCC::AL).addReg(0)
.addExternalSymbol("__chkstk") .addExternalSymbol("__chkstk")
.addReg(ARM::R4, RegState::Implicit); .addReg(ARM::R4, RegState::Implicit)
.setMIFlags(MachineInstr::FrameSetup);
break; break;
case CodeModel::Large: case CodeModel::Large:
case CodeModel::JITDefault: case CodeModel::JITDefault:
BuildMI(MBB, MBBI, dl, TII.get(ARM::t2MOVi32imm), ARM::R12) BuildMI(MBB, MBBI, dl, TII.get(ARM::t2MOVi32imm), ARM::R12)
.addExternalSymbol("__chkstk"); .addExternalSymbol("__chkstk")
.setMIFlags(MachineInstr::FrameSetup);
BuildMI(MBB, MBBI, dl, TII.get(ARM::tBLXr)) BuildMI(MBB, MBBI, dl, TII.get(ARM::tBLXr))
.addImm((unsigned)ARMCC::AL).addReg(0) .addImm((unsigned)ARMCC::AL).addReg(0)
.addReg(ARM::R12, RegState::Kill) .addReg(ARM::R12, RegState::Kill)
.addReg(ARM::R4, RegState::Implicit); .addReg(ARM::R4, RegState::Implicit)
.setMIFlags(MachineInstr::FrameSetup);
break; break;
} }