diff options
author | Ilya Leoshkevich <iii@linux.ibm.com> | 2018-09-24 14:21:03 +0000 |
---|---|---|
committer | Ilya Leoshkevich <iii@gcc.gnu.org> | 2018-09-24 14:21:03 +0000 |
commit | f80316c5d79c3c12a4e97160fcf17d78c5b99fc4 (patch) | |
tree | 11ffbecfac733e0290e4bb15c7e73e4330059707 /libgo/go/regexp/regexp.go | |
parent | e595522aa89d0cd427d5251456ff7cf347319a9c (diff) | |
download | gcc-f80316c5d79c3c12a4e97160fcf17d78c5b99fc4.zip gcc-f80316c5d79c3c12a4e97160fcf17d78c5b99fc4.tar.gz gcc-f80316c5d79c3c12a4e97160fcf17d78c5b99fc4.tar.bz2 |
S/390: Fix conditional returns on z196+
S/390 epilogue ends with (parallel [(return) (use %r14)]) instead of
the more usual (return) or (simple_return). This sequence is not
recognized by the conditional return logic in try_optimize_cfg ().
This was introduced for processors older than z196, where it is
sometimes profitable to use call-clobbered register for returning
instead of %r14. On newer processors we always return via %r14,
for which the fact that it's used is already reflected by
EPILOGUE_USES. In this case a simple (return) suffices.
This patch changes return_use () to emit simple (return)s when
returning via %r14. The resulting sequences are recognized by the
conditional return logic in try_optimize_cfg ().
gcc/ChangeLog:
2018-09-24 Ilya Leoshkevich <iii@linux.ibm.com>
PR target/80080
* config/s390/s390.c (s390_emit_epilogue): Do not use PARALLEL
RETURN+USE when returning via %r14.
gcc/testsuite/ChangeLog:
2018-09-24 Ilya Leoshkevich <iii@linux.ibm.com>
PR target/80080
* gcc.target/s390/risbg-ll-3.c: Expect conditional returns.
* gcc.target/s390/zvector/vec-cmp-2.c: Likewise.
From-SVN: r264535
Diffstat (limited to 'libgo/go/regexp/regexp.go')
0 files changed, 0 insertions, 0 deletions