diff options
author | Ilya Leoshkevich <iii@linux.ibm.com> | 2021-03-02 23:37:26 +0100 |
---|---|---|
committer | Ilya Leoshkevich <iii@linux.ibm.com> | 2021-03-23 19:44:22 +0100 |
commit | b61461ac7f9bdd0e98145be79423d19b933afaa0 (patch) | |
tree | 32bdc72e60004b8cb1085701134a8b35f850f600 /gcc/analyzer/program-state.cc | |
parent | d1aa5f57db7c14a62e9b7e2a2aa8a9c402a89363 (diff) | |
download | gcc-b61461ac7f9bdd0e98145be79423d19b933afaa0.zip gcc-b61461ac7f9bdd0e98145be79423d19b933afaa0.tar.gz gcc-b61461ac7f9bdd0e98145be79423d19b933afaa0.tar.bz2 |
fwprop: Fix single_use_p calculation
Commit efb6bc55a93a ("fwprop: Allow (subreg (mem)) simplifications")
introduced a check that was supposed to look at the propagated def's
number of uses. It uses insn_info::num_uses (), which in reality
returns the number of uses def's insn has. The whole change therefore
works only by accident.
Fix by looking at set_info's uses instead of insn_info's uses. This
requires passing around set_info instead of insn_info.
gcc/ChangeLog:
2021-03-02 Ilya Leoshkevich <iii@linux.ibm.com>
* fwprop.c (fwprop_propagation::fwprop_propagation): Look at
set_info's uses.
(try_fwprop_subst_note): Use set_info instead of insn_info.
(try_fwprop_subst_pattern): Likewise.
(try_fwprop_subst_notes): Likewise.
(try_fwprop_subst): Likewise.
(forward_propagate_subreg): Likewise.
(forward_propagate_and_simplify): Likewise.
(forward_propagate_into): Likewise.
* rtl-ssa/accesses.h (set_info::single_nondebug_use) New
method.
(set_info::single_nondebug_insn_use): Likewise.
(set_info::single_phi_use): Likewise.
* rtl-ssa/member-fns.inl (set_info::single_nondebug_use) New
method.
(set_info::single_nondebug_insn_use): Likewise.
(set_info::single_phi_use): Likewise.
gcc/testsuite/ChangeLog:
* gcc.target/s390/vector/long-double-asm-abi.c: New test.
Diffstat (limited to 'gcc/analyzer/program-state.cc')
0 files changed, 0 insertions, 0 deletions