diff options
author | Segher Boessenkool <segher@kernel.crashing.org> | 2016-08-30 18:30:01 +0200 |
---|---|---|
committer | Segher Boessenkool <segher@gcc.gnu.org> | 2016-08-30 18:30:01 +0200 |
commit | dd9fe1b95bd57d1f69816b546cfea2b507b15a72 (patch) | |
tree | 1ac5bdadede8518c52f7f5869ecbb43eaa1564ac /libgo/runtime/signal_unix.c | |
parent | ac45b2ba8c75573b9630656ccf3a20e6da333913 (diff) | |
download | gcc-dd9fe1b95bd57d1f69816b546cfea2b507b15a72.zip gcc-dd9fe1b95bd57d1f69816b546cfea2b507b15a72.tar.gz gcc-dd9fe1b95bd57d1f69816b546cfea2b507b15a72.tar.bz2 |
rs6000: Don't emit a use of LR in returns and sibcalls
The exit block (to which every return artificially jumps) already has
a use of LR. The LR use in all returns and sibcalls is an anachronism,
probably made unnecessary by the dataflow merge. The simple_returns
that shrink-wrapping generates also do not have such a use. Newer
backends do not do this either it seems.
With this use removed, a normal return is no longer a parallel but just
a return insn, and cfgcleanup then can transform conditional jumps to
those into conditional returns.
This splits the return emission code with restoring_FPRs_inline from
that without it; this is simpler code, fewer lines, and less indentation.
The return_internal_<mode> pattern can now be deleted since nothing uses
it anymore.
* config/rs6000/rs6000.c (rs6000_emit_epilogue): Do not emit
USEs of LR_REGNO in returns and sibcalls.
(rs6000_output_mi_thunk): Similar.
(rs6000_sibcall_aix): Similar.
* config/rs6000/rs6000.md (sibcall, sibcall_value, sibcall_local32,
sibcall_local64, sibcall_value_local32, sibcall_value_local64,
sibcall_nonlocal_sysv<mode>, sibcall_value_nonlocal_sysv<mode>):
Remove the USE of LR_REGNO from the patterns as well. Delete an
obsolete comment.
(return_internal_<mode>): Delete.
From-SVN: r239866
Diffstat (limited to 'libgo/runtime/signal_unix.c')
0 files changed, 0 insertions, 0 deletions