16
16
#include " llvm/CodeGen/MachineFrameInfo.h"
17
17
#include " llvm/CodeGen/MachineFunction.h"
18
18
#include " llvm/CodeGen/MachineInstrBuilder.h"
19
- #include " llvm/CodeGen/MachineRegisterInfo.h"
20
19
21
20
using namespace llvm ;
22
21
23
22
namespace {
24
23
25
24
void adjustStackPointer (MachineFunction &MF, MachineBasicBlock &MBB,
26
- MachineBasicBlock::iterator &MBBI,
27
- unsigned int Opcode) {
25
+ MachineBasicBlock::iterator &MBBI, bool IsSubtract) {
28
26
MachineFrameInfo &MFI = MF.getFrameInfo ();
29
27
int NumBytes = (int )MFI.getStackSize ();
30
28
if (NumBytes) {
31
29
DebugLoc Dl;
32
30
const SBFInstrInfo &TII =
33
31
*static_cast <const SBFInstrInfo *>(MF.getSubtarget ().getInstrInfo ());
34
- BuildMI (MBB, MBBI, Dl, TII.get (Opcode ), SBF::R11)
32
+ BuildMI (MBB, MBBI, Dl, TII.get (SBF::ADD_ri ), SBF::R11)
35
33
.addReg (SBF::R11)
36
- .addImm (NumBytes);
34
+ .addImm (IsSubtract ? -NumBytes : NumBytes);
37
35
}
38
36
}
39
37
@@ -47,7 +45,7 @@ void SBFFrameLowering::emitPrologue(MachineFunction &MF,
47
45
return ;
48
46
}
49
47
MachineBasicBlock::iterator MBBI = MBB.begin ();
50
- adjustStackPointer (MF, MBB, MBBI, SBF::SUB_ri );
48
+ adjustStackPointer (MF, MBB, MBBI, true );
51
49
}
52
50
53
51
void SBFFrameLowering::emitEpilogue (MachineFunction &MF,
@@ -56,7 +54,7 @@ void SBFFrameLowering::emitEpilogue(MachineFunction &MF,
56
54
return ;
57
55
}
58
56
MachineBasicBlock::iterator MBBI = MBB.getLastNonDebugInstr ();
59
- adjustStackPointer (MF, MBB, MBBI, SBF::ADD_ri );
57
+ adjustStackPointer (MF, MBB, MBBI, false );
60
58
}
61
59
62
60
void SBFFrameLowering::determineCalleeSaves (MachineFunction &MF,
0 commit comments