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

Richard Biener <rguenth at gcc dot gnu.org> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
             Status|NEW                         |ASSIGNED

--- Comment #2 from Richard Biener <rguenth at gcc dot gnu.org> ---
Ok, so it looks like this can happen for all not released SSA names given
that then may point to dead (and GCed) stmts which may point to BBs that
no longer exist.  Because we do

1802      /* If this optimization is disabled, we need to coalesce all the
1803         names originating from the same SSA_NAME_VAR so debug info
1804         remains undisturbed.  */
1805      if (!flag_tree_coalesce_vars)
1806        {
(gdb) l
1807          hash_table<ssa_name_var_hash> ssa_name_hash (10);
1808
1809          FOR_EACH_SSA_NAME (i, a, cfun)
1810            {
1811              if (SSA_NAME_VAR (a)
1812                  && !DECL_IGNORED_P (SSA_NAME_VAR (a))
1813                  && (!has_zero_uses (a) || !SSA_NAME_IS_DEFAULT_DEF (a)
1814                      || !VAR_P (SSA_NAME_VAR (a))))
1815                {

and in this case the SSA name is not a default def.

The extra oddity with this case is that the def is a PHI which still has
a BB assigned.  Ah this is because graphite doing

      gphi *new_phi = create_phi_node (SSA_NAME_VAR (res), new_bb);
      tree new_res = create_new_def_for (res, new_phi,
                                         gimple_phi_result_ptr (new_phi));
      set_rename (res, new_res);

which is ... eh?   Not sure what they are trying to do here...

Reply via email to