[RS6000] PR81996, __builtin_return_address(0) fails
commita24f02ffdb51513c05369f600dfff62329a6c8a1
authorAlan Modra <amodra@gmail.com>
Mon, 18 Sep 2017 02:25:10 +0000 (18 11:55 +0930)
committerAlan Modra <amodra@gcc.gnu.org>
Mon, 18 Sep 2017 02:25:10 +0000 (18 11:55 +0930)
tree0b9349065d60fb914971689fffdd7e3e7c0de184
parentf26a27f300a72e89e4314adc95182f5433754033
[RS6000] 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: r252901
gcc/ChangeLog
gcc/config/rs6000/rs6000.c