diff options
author | Misha Brukman <brukman+llvm@gmail.com> | 2002-12-13 04:34:02 +0000 |
---|---|---|
committer | Misha Brukman <brukman+llvm@gmail.com> | 2002-12-13 04:34:02 +0000 |
commit | cea2245f04556ad718a7f18cb286b3150d5631a7 (patch) | |
tree | f74b4aade1787c0e98f4de5a3947e7e56363a0be /lib/CodeGen/RegAllocSimple.cpp | |
parent | 07e376bd0de0ae8451c9036310e670f098555c7a (diff) |
Start allocating stack space at [ebp-4] to not overwrite the return address.
Also make all loads & stores 4-byte aligned for performance. ;)
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@4982 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'lib/CodeGen/RegAllocSimple.cpp')
-rw-r--r-- | lib/CodeGen/RegAllocSimple.cpp | 11 |
1 files changed, 9 insertions, 2 deletions
diff --git a/lib/CodeGen/RegAllocSimple.cpp b/lib/CodeGen/RegAllocSimple.cpp index d78a75c92e..e5f7ddb9e9 100644 --- a/lib/CodeGen/RegAllocSimple.cpp +++ b/lib/CodeGen/RegAllocSimple.cpp @@ -50,13 +50,15 @@ namespace { RegAllocSimple(TargetMachine &tm) : TM(tm), CurrMBB(0), maxOffset(0), RegInfo(tm.getRegisterInfo()), - NumBytesAllocated(0), ByteAlignment(4) + ByteAlignment(4) { // build reverse mapping for physReg -> register class RegInfo->buildReg2RegClassMap(PhysReg2RegClassMap); RegsUsed[RegInfo->getFramePointer()] = 1; RegsUsed[RegInfo->getStackPointer()] = 1; + + cleanupAfterFunction(); } bool isAvailableReg(unsigned Reg) { @@ -80,7 +82,7 @@ namespace { void cleanupAfterFunction() { RegMap.clear(); SSA2PhysRegMap.clear(); - NumBytesAllocated = 0; + NumBytesAllocated = 4; } /// Moves value from memory into that register @@ -112,6 +114,7 @@ unsigned RegAllocSimple::allocateStackSpaceFor(unsigned VirtReg, const TargetRegisterClass *regClass) { if (RegMap.find(VirtReg) == RegMap.end()) { +#if 0 unsigned size = regClass->getDataSize(); unsigned over = NumBytesAllocated - (NumBytesAllocated % ByteAlignment); if (size >= ByteAlignment - over) { @@ -120,6 +123,10 @@ unsigned RegAllocSimple::allocateStackSpaceFor(unsigned VirtReg, } RegMap[VirtReg] = NumBytesAllocated; NumBytesAllocated += size; +#endif + // FIXME: forcing each arg to take 4 bytes on the stack + RegMap[VirtReg] = NumBytesAllocated; + NumBytesAllocated += 4; } return RegMap[VirtReg]; } |