We need to reserve an emergency spill slot in cases with large argument
types that could overflow immediate offsets for FP relative address
calculations.
Details
- Reviewers
rovka t.p.northover olista01 - Commits
- rG8aaa368d0018: ARMFrameLowering: Reserve emergency spill slot for large arguments
rG661d3d4b0050: ARMFrameLowering: Reserve emergency spill slot for large arguments
rL300761: ARMFrameLowering: Reserve emergency spill slot for large arguments
rL300639: ARMFrameLowering: Reserve emergency spill slot for large arguments
Diff Detail
- Repository
- rL LLVM
Event Timeline
lib/Target/ARM/ARMFrameLowering.cpp | ||
---|---|---|
340 | Should this be ArgumentStackSize too? I think ArgRegsSaveSize only accounts for when R0-R3 get pushed on function entry. |
lib/Target/ARM/ARMFrameLowering.cpp | ||
---|---|---|
340 | No, this is correct, but the getArgumentStackSize() above is an typo (an autocompleto). The intention here is to capture the displacement between the location the stack pointer pointed to at function begin and the location the frame pointer points to. The stack arguments are already part of SP when the functions starts so they are not part of the displacement. It seems the new FP points to wherever the old FP was saved. This means we have to account for stuff before this place:
|
Should this be ArgumentStackSize too? I think ArgRegsSaveSize only accounts for when R0-R3 get pushed on function entry.