aboutsummaryrefslogtreecommitdiff
path: root/gcc/fortran/options.cc
diff options
context:
space:
mode:
authorAlexandre Oliva <oliva@adacore.com>2023-12-14 04:50:45 -0300
committerAlexandre Oliva <oliva@gnu.org>2023-12-20 05:18:21 -0300
commit4e0a467302fea56d63b7a6d17f99c0f388960dc7 (patch)
tree0cdaf393c2c5e6b0b69f02d5ce48e8675155c8b9 /gcc/fortran/options.cc
parent9fa35dbb901b11d31a897cc88c9258e7cd35b899 (diff)
downloadgcc-4e0a467302fea56d63b7a6d17f99c0f388960dc7.zip
gcc-4e0a467302fea56d63b7a6d17f99c0f388960dc7.tar.gz
gcc-4e0a467302fea56d63b7a6d17f99c0f388960dc7.tar.bz2
strub: sparc64: unbias the stack address [PR112917]
The stack pointer is biased by 2047 bytes on sparc64, so the range it delimits is way off. Unbias the addresses returned by __builtin_stack_address (), so that the strub builtins, inlined or not, can function correctly. I've considered introducing a new target macro, but using STACK_POINTER_OFFSET seems safe, and it enables the register save areas to be scrubbed as well. Because of the large fixed-size outgoing args area next to the register save area on sparc, we still need __strub_leave to not allocate its own frame, otherwise it won't be able to clear part of the frame it should. for gcc/ChangeLog PR middle-end/112917 * builtins.cc (expand_bultin_stack_address): Add STACK_POINTER_OFFSET. * doc/extend.texi (__builtin_stack_address): Adjust.
Diffstat (limited to 'gcc/fortran/options.cc')
0 files changed, 0 insertions, 0 deletions