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

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

           What    |Removed                     |Added
----------------------------------------------------------------------------
             Status|UNCONFIRMED                 |ASSIGNED
   Last reconfirmed|                            |2016-09-28
           Assignee|unassigned at gcc dot gnu.org      |rguenth at gcc dot 
gnu.org
     Ever confirmed|0                           |1

--- Comment #6 from Richard Biener <rguenth at gcc dot gnu.org> ---
So somebody is writing to vr_const_varying declared here:

static value_range *
get_value_range (const_tree var)
{
  static const value_range vr_const_varying
    = { VR_VARYING, NULL_TREE, NULL_TREE, NULL };
...
  /* If we query the range for a new SSA name return an unmodifiable VARYING.
     We should get here at most from the substitute-and-fold stage which
     will never try to change values.  */
  if (ver >= num_vr_values)
    return CONST_CAST (value_range *, &vr_const_varying);

I wonder if this is related to early VRP or latent.  Yeah,

              FOR_EACH_SSA_TREE_OPERAND (def, stmt, iter, SSA_OP_DEF)
                set_value_range_to_varying (get_value_range (def));

those callers are certainly prone of hitting this after we eventually allocated
new SSA names (early VRP folds and thus does).

Reply via email to