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).