aboutsummaryrefslogtreecommitdiff
path: root/libgo/runtime/signal_unix.c
diff options
context:
space:
mode:
authorSegher Boessenkool <segher@kernel.crashing.org>2016-08-30 18:30:01 +0200
committerSegher Boessenkool <segher@gcc.gnu.org>2016-08-30 18:30:01 +0200
commitdd9fe1b95bd57d1f69816b546cfea2b507b15a72 (patch)
tree1ac5bdadede8518c52f7f5869ecbb43eaa1564ac /libgo/runtime/signal_unix.c
parentac45b2ba8c75573b9630656ccf3a20e6da333913 (diff)
downloadgcc-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