summaryrefslogtreecommitdiffstats
path: root/llvm/lib/CodeGen/LocalStackSlotAllocation.cpp
Commit message (Collapse)AuthorAgeFilesLines
...
* Add materialization of virtual base registers for frame indices allocated intoJim Grosbach2010-08-171-2/+26
| | | | | | | | | | | | | the local block. Resolve references to those indices to a new base register. For simplification and testing purposes, a new virtual base register is allocated for each frame index being resolved. The result is truly horrible, but correct, code that's good for exercising the new code paths. Next up is adding thumb1 support, which should be very simple. Following that will be adding base register re-use and implementing a reasonable ARM heuristic for when a virtual base register should be generated at all. llvm-svn: 111315
* silence warningJim Grosbach2010-08-171-0/+5
| | | | llvm-svn: 111274
* Add hook to examine an instruction referencing a frame index to determineJim Grosbach2010-08-171-2/+52
| | | | | | | | | | | | | | | whether to allocate a virtual frame base register to resolve the frame index reference in it. Implement a simple version for ARM to aid debugging. In LocalStackSlotAllocation, scan the function for frame index references to local frame indices and ask the target whether to allocate virtual frame base registers for any it encounters. Purely infrastructural for debug output. Next step is to actually allocate base registers, then add intelligent re-use of them. rdar://8277890 llvm-svn: 111262
* tidy up. remove unused local.Jim Grosbach2010-08-161-2/+0
| | | | llvm-svn: 111206
* Better handle alignment requirements for local objects in pre-regalloc frameJim Grosbach2010-08-161-28/+2
| | | | | | | | | | mapping. Have the local block track its alignment requirement, and then apply that when the block itself is allocated. Previously, offsets could get adjusted in PEI to be different, relative to one another, than the block allocation thought they would be, which defeats the point of doing the allocation this way. Continuing rdar://8277890 llvm-svn: 111197
* track local frame size in MFI, not local to the pass, since PEI needs it.Jim Grosbach2010-08-161-4/+1
| | | | llvm-svn: 111164
* Add a local stack object block allocation pass. This is still anJim Grosbach2010-08-141-0/+169
experimental pass that allocates locals relative to one another before register allocation and then assigns them to actual stack slots as a block later in PEI. This will eventually allow targets with limited index offset range to allocate additional base registers (not just FP and SP) to more efficiently reference locals, as well as handle situations where locals cannot be referenced via SP or FP at all (dynamic stack realignment together with variable sized objects, for example). It's currently incomplete and almost certainly buggy. Work in progress. Disabled by default and gated via the -enable-local-stack-alloc command line option. rdar://8277890 llvm-svn: 111059
OpenPOWER on IntegriCloud