aboutsummaryrefslogtreecommitdiff
path: root/gcc/go
diff options
context:
space:
mode:
authorRichard Sandiford <richard.sandiford@arm.com>2023-09-12 16:05:06 +0100
committerRichard Sandiford <richard.sandiford@arm.com>2023-09-12 16:05:06 +0100
commit99305f306246079cc57d30dae7c32107f02ff3e8 (patch)
tree38a3229ecf9910273726dec07348f129f52298c0 /gcc/go
parent7b792ecaa9414bc81520b3da552d40ad854be976 (diff)
downloadgcc-99305f306246079cc57d30dae7c32107f02ff3e8.zip
gcc-99305f306246079cc57d30dae7c32107f02ff3e8.tar.gz
gcc-99305f306246079cc57d30dae7c32107f02ff3e8.tar.bz2
aarch64: Add bytes_below_hard_fp to frame info
Following on from the previous bytes_below_saved_regs patch, this one records the number of bytes that are below the hard frame pointer. This eventually replaces below_hard_fp_saved_regs_size. If a frame pointer is not needed, the epilogue adds final_adjust to the stack pointer before restoring registers: aarch64_add_sp (tmp1_rtx, tmp0_rtx, final_adjust, true); Therefore, if the epilogue needs to restore the stack pointer from the hard frame pointer, the directly corresponding offset is: -bytes_below_hard_fp + final_adjust i.e. go from the hard frame pointer to the bottom of the frame, then add the same amount as if we were using the stack pointer from the outset. gcc/ * config/aarch64/aarch64.h (aarch64_frame::bytes_below_hard_fp): New field. * config/aarch64/aarch64.cc (aarch64_layout_frame): Initialize it. (aarch64_expand_epilogue): Use it instead of below_hard_fp_saved_regs_size.
Diffstat (limited to 'gcc/go')
0 files changed, 0 insertions, 0 deletions