diff options
author | Alan Modra <amodra@gmail.com> | 2017-09-21 22:55:45 +0930 |
---|---|---|
committer | Alan Modra <amodra@gcc.gnu.org> | 2017-09-21 22:55:45 +0930 |
commit | c0ced9e080eca19fdd48bae7e959908ce3ab31c7 (patch) | |
tree | 1c8560e78b817786440bdfb38b31bda0bc11fd44 /gcc/config/rs6000/476.md | |
parent | 24b0a9e2315ce74ccfa1bbfb0c50957d8723b9a4 (diff) | |
download | gcc-c0ced9e080eca19fdd48bae7e959908ce3ab31c7.tar.gz |
PR81996, __builtin_return_address(0) fails
rs6000_return_addr assumes that the stack link is at frame+0, which is
true for count>0. For count==0, rs6000_return_addr is called with
frame==frame_pointer_rtx and the stack link is *not* at frame+0 if
-fstack-protector-all or -fsanitize=address because rs6000.h sets
FRAME_GROWS_DOWNWARD for those options.
PR target/81996
* gcc/config/rs6000/rs6000.c (rs6000_return_addr): Use
stack_pointer_rtx for count 0. Update comments. Break up
large rtl expression.
From-SVN: r253070
Diffstat (limited to 'gcc/config/rs6000/476.md')
0 files changed, 0 insertions, 0 deletions