[Bug target/80080] S390: Isses with emitted cs-instructions for __atomic builtins.
iii at gcc dot gnu.org
gcc-bugzilla@gcc.gnu.org
Mon Sep 24 14:32:00 GMT 2018
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=80080
--- Comment #15 from iii at gcc dot gnu.org ---
Author: iii
Date: Mon Sep 24 14:21:03 2018
New Revision: 264535
URL: https://gcc.gnu.org/viewcvs?rev=264535&root=gcc&view=rev
Log:
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.
Modified:
trunk/gcc/ChangeLog
trunk/gcc/config/s390/s390.c
trunk/gcc/testsuite/ChangeLog
trunk/gcc/testsuite/gcc.target/s390/risbg-ll-3.c
trunk/gcc/testsuite/gcc.target/s390/zvector/vec-cmp-2.c
More information about the Gcc-bugs
mailing list