rs6000: mark clobber for registers changed by untpyed_call
authorJiufu Guo <guojiufu@linux.ibm.com>
Mon, 17 Feb 2020 02:48:39 +0000 (10:48 +0800)
committerJiufu Guo <guojiufu@linux.ibm.com>
Mon, 17 Feb 2020 02:48:39 +0000 (10:48 +0800)
commita8532e9927ad6e4bbedbb957b02ca413aedf9098
tree69c9dbdafe0cc4d702a0f8104b1a592da0011e76
parentf0a33db5fb64f35a56e02e976920ee8400181719
rs6000: mark clobber for registers changed by untpyed_call

As PR93047 said, __builtin_apply/__builtin_return does not work well with
-frename-registers.  This is caused by return register(e.g. r3) is used to
rename another register, before return register is stored to stack.
This patch fix this issue by emitting clobber for those egisters which
maybe changed by untyped call.

gcc/
2020-02-17  Jiufu Guo  <guojiufu@linux.ibm.com>

PR target/93047
* config/rs6000/rs6000.md (untyped_call): Add emit_clobber.

gcc/testsuite
2020-02-17  Jiufu Guo  <guojiufu@linux.ibm.com>

PR target/93047
* gcc.dg/torture/stackalign/builtin-return-2.c: New test case.
gcc/ChangeLog
gcc/config/rs6000/rs6000.md
gcc/testsuite/ChangeLog
gcc/testsuite/gcc.dg/torture/stackalign/builtin-return-2.c [new file with mode: 0644]