Make ifcvt clean up dead comparisons
authorRichard Sandiford <richard.sandiford@arm.com>
Thu, 18 Jul 2019 08:24:16 +0000 (08:24 +0000)
committerRichard Sandiford <rsandifo@gcc.gnu.org>
Thu, 18 Jul 2019 08:24:16 +0000 (08:24 +0000)
commitf1f10541903b082d27114db38947fb31f5364bcc
tree81b40e730cc48482b0a65592b9ea5e4372ae654b
parentd119bf79862015d4ba3c7f8774835c216c9a26ed
Make ifcvt clean up dead comparisons

This change is needed to avoid a regression in gcc.dg/ifcvt-3.c
for a later patch.  Without it, we enter CSE with a dead comparison left
by if-conversion and then eliminate the second (live) comparison in
favour of the dead one.  That's functionally correct in itself, but it
meant that we'd combine the subtraction and comparison into a SUBS
before we have a chance to fold away the subtraction.

2019-07-18  Richard Sandiford  <richard.sandiford@arm.com>

gcc/
* basic-block.h (CLEANUP_FORCE_FAST_DCE): New macro.
* cfgcleanup.c (cleanup_cfg): Call run_fast_dce if
CLEANUP_FORCE_FAST_DCE is set.
* ifcvt.c (rest_of_handle_if_conversion): Pass
CLEANUP_FORCE_FAST_DCE to the final cleanup_cfg call if
if-conversion succeeded.

From-SVN: r273569
gcc/ChangeLog
gcc/basic-block.h
gcc/cfgcleanup.c
gcc/ifcvt.c