Remove global call sets: rtlanal.c
authorRichard Sandiford <richard.sandiford@arm.com>
Mon, 30 Sep 2019 16:21:28 +0000 (16:21 +0000)
committerRichard Sandiford <rsandifo@gcc.gnu.org>
Mon, 30 Sep 2019 16:21:28 +0000 (16:21 +0000)
commit52053c3b536353510cac1c8370541b24847f8022
treebc46d336910adf4e72a730f2226eb19a3f1a20c9
parent12e20dde63c77eb696118e2624aacf8f11feb1f9
Remove global call sets: rtlanal.c

The reg_set_p part is simple, since the caller is asking about
a specific REG rtx, with a known register number and mode.

The find_all_hard_reg_sets part emphasises that the "implicit"
behaviour was always a bit suspect, since it includes fully-clobbered
registers but not partially-clobbered registers.  The only current
user of this path is the c6x-specific scheduler predication code,
and c6x doesn't have partly call-clobbered registers, so in practice
it's fine.  I've added a comment to try to disuade future users.
(The !implicit path is OK and useful though.)

2019-09-30  Richard Sandiford  <richard.sandiford@arm.com>

gcc/
* rtlanal.c: Include function-abi.h.
(reg_set_p): Use insn_callee_abi to get the ABI of the called
function and clobbers_reg_p to test whether the register
is call-clobbered.
(find_all_hard_reg_sets): When implicit is true, use insn_callee_abi
to get the ABI of the called function and full_reg_clobbers to
get the set of fully call-clobbered registers.  Warn about the
pitfalls of using this mode.

From-SVN: r276334
gcc/ChangeLog
gcc/rtlanal.c