https://gcc.gnu.org/bugzilla/show_bug.cgi?id=92430

--- Comment #5 from iii at gcc dot gnu.org ---
Author: iii
Date: Tue Nov 12 14:24:35 2019
New Revision: 278095

URL: https://gcc.gnu.org/viewcvs?rev=278095&root=gcc&view=rev
Log:
Free dominance info at the beginning of pass_jump_after_combine

try_forward_edges does not update dominance info, and merge_blocks
relies on it being up-to-date.  In PR92430 stale dominance info makes
merge_blocks produce a loop in the dominator tree, which in turn makes
delete_basic_block loop forever.

Fix by freeing dominance info at the beginning of cleanup_cfg.

gcc/ChangeLog:

2019-11-12  Ilya Leoshkevich  <i...@linux.ibm.com>

        PR rtl-optimization/92430
        * cfgcleanup.c (pass_jump_after_combine::execute): Free
        dominance info at the beginning.

gcc/testsuite/ChangeLog:

2019-11-12  Ilya Leoshkevich  <i...@linux.ibm.com>

        PR rtl-optimization/92430
        * gcc.dg/pr92430.c: New test (from Arseny Solokha).

Added:
    trunk/gcc/testsuite/gcc.dg/pr92430.c
Modified:
    trunk/gcc/ChangeLog
    trunk/gcc/cfgcleanup.c
    trunk/gcc/testsuite/ChangeLog

Reply via email to