When allocating space on stack for writing a register,
use the size of the register, not the size of the Value type,
to get the right alignment.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@1284 91177308-0d34-0410-b5e6-96231b3b80d8
diff --git a/lib/Target/SparcV9/SparcV9RegInfo.cpp b/lib/Target/SparcV9/SparcV9RegInfo.cpp
index 16e3b9f..e59a3ab 100644
--- a/lib/Target/SparcV9/SparcV9RegInfo.cpp
+++ b/lib/Target/SparcV9/SparcV9RegInfo.cpp
@@ -709,9 +709,9 @@
int TReg = PRA.getRegNotUsedByThisInst( LR->getRegClass(), CallMI );
- int TmpOff = PRA.mcInfo.pushTempValue(target,
- target.findOptimalStorageSize(LR->getType()));
- // getStackOffsets().getNewTmpPosOffFromFP();
+ /**** NOTE: THIS SHOULD USE THE RIGHT SIZE FOR THE REG BEING PUSHED ****/
+ int TmpOff = PRA.mcInfo.pushTempValue(target, 8);
+ // target.findOptimalStorageSize(LR->getType()));
int argOffset = PRA.mcInfo.allocateOptionalArg(target, LR->getType());
@@ -1174,8 +1174,9 @@
// and add them to InstrnsBefore and InstrnsAfter of the
// call instruction
- int StackOff = PRA.mcInfo.pushTempValue(target,
- target.findOptimalStorageSize(LR->getType()));
+ /**** NOTE: THIS SHOULD USE THE RIGHT SIZE FOR THE REG BEING PUSHED ****/
+ int StackOff = PRA.mcInfo.pushTempValue(target, 8);
+ // target.findOptimalStorageSize(LR->getType()));
MachineInstr *AdIBefCC, *AdIAftCC, *AdICpCC;
MachineInstr *AdIBef, *AdIAft;
@@ -1548,6 +1549,7 @@
MachineInstr *AdIBef, *AdIAft;
// TODO: Change 8 below
+ /**** NOTE: THIS SHOULD USE THE RIGHT SIZE FOR THE REG BEING PUSHED ****/
const int StackOff = PRA.mcInfo.pushTempValue(target, 8);
// Save the UReg (%ox) on stack before it's destroyed