diff options
author | Alan Modra <amodra@gmail.com> | 2018-11-29 15:13:21 +1030 |
---|---|---|
committer | Alan Modra <amodra@gcc.gnu.org> | 2018-11-29 15:13:21 +1030 |
commit | ce83eeda066824074e56fbecdfcc5dd23fac6486 (patch) | |
tree | 8707ec139df15a2a40d15143b861c4d580e5109d /gcc/alias.c | |
parent | 75a0b80599ca4326da8a203e042cb9db6c27ab08 (diff) | |
download | gcc-ce83eeda066824074e56fbecdfcc5dd23fac6486.zip gcc-ce83eeda066824074e56fbecdfcc5dd23fac6486.tar.gz gcc-ce83eeda066824074e56fbecdfcc5dd23fac6486.tar.bz2 |
[RS6000] rs6000_indirect_call_template
Like the last patch for external calls, now handle most assembly code
for indirect calls in one place. The patch also merges some insns,
correcting some !rs6000_speculate_indirect_jumps cases branching to
LR, which don't require a speculation barrier.
* config/rs6000/rs6000-protos.h (rs6000_indirect_call_template),
(rs6000_indirect_sibcall_template): Declare.
* config/rs6000/rs6000.c (rs6000_indirect_call_template_1),
(rs6000_indirect_call_template, rs6000_indirect_sibcall_template):
New functions.
* config/rs6000/rs6000.md (call_indirect_nonlocal_sysv),
(call_value_indirect_nonlocal_sysv, sibcall_nonlocal_sysv),
(call_indirect_aix, call_value_indirect_aix): Use
rs6000_indirect_call_template and rs6000_indirect_sibcall_template.
call_indirect_elfv2, call_value_indirect_elfv2): Likewise, and
handle both speculation and non-speculation cases.
(call_indirect_aix_nospec, call_value_indirect_aix_nospec): Delete.
(call_indirect_elfv2_nospec, call_value_indirect_elfv2_nospec): Delete.
From-SVN: r266601
Diffstat (limited to 'gcc/alias.c')
0 files changed, 0 insertions, 0 deletions