]> git.ipfire.org Git - thirdparty/gcc.git/commit
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>
Wed, 26 Feb 2020 10:13:44 +0000 (18:13 +0800)
commit0ce89ea10d93a583854f02bc115e05cfd9d818e4
tree501c7f53e0b2840a93b527d1557a8b77f1b37fe5
parentd0eff1793dc844c2a9532d8ef1a07ba137cfb4e6
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-26  Jiufu Guo  <guojiufu@linux.ibm.com>

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

gcc/testsuite
2020-02-26  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]