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

--- Comment #3 from Richard Biener <rguenth at gcc dot gnu.org> ---
      gcc_assert (var->ssa_name.fast_iteration_depth == 0
                  && (var->ssa_name.active_iterated_stmt == NULL
                      || (var->ssa_name.active_iterated_stmt
                          == linknode->loc.stmt)));
(gdb) p var->ssa_name.active_iterated_stmt
$2 = <gimple_assign 0x7ffff660e370>
(gdb) p linknode->loc.stmt
$3 = <gimple_cond 0x7ffff69f86e0>
(gdb) p var
$6 = <ssa_name 0x7ffff69f8f78 7>
(gdb) p debug_gimple_stmt ($3)
if (_7 == _14)
$4 = void
(gdb) p debug_gimple_stmt ($2)
# .MEM_16 = VDEF <.MEM_24>
MEM[(struct B *)&w3].t = 0;

looks ike active_iterated_stmt is stale (update_stmt missing?)

In the end it's replace_uses_by doing

          if (maybe_clean_or_replace_eh_stmt (orig_stmt, stmt))
            gimple_purge_dead_eh_edges (gimple_bb (stmt));

under FOR_EACH_IMM_USE_STMT that's problematic.  Fixing.

Reply via email to