https://gcc.gnu.org/bugzilla/show_bug.cgi?id=84933
Bug ID: 84933 Summary: [8 Regression] ICE in set_value_range, at tree-vrp.c:288 since r257852 Product: gcc Version: unknown Status: UNCONFIRMED Keywords: ice-on-valid-code Severity: normal Priority: P3 Component: tree-optimization Assignee: unassigned at gcc dot gnu.org Reporter: marxin at gcc dot gnu.org CC: law at gcc dot gnu.org, msebor at gcc dot gnu.org Target Milestone: --- Following ICEs: $ cat /tmp/ice.ii enum a {}; int *d; int b, e, f; a c, g; class h { virtual unsigned i(); }; class j : h { unsigned i() { for (;;) { b = c <= 0; if (b) e = *d; b = g && c; if (b) f = *d; } } }; void k() { new j; } $ gcc -fstrict-enums -O3 -fno-inline /tmp/ice.ii -c during GIMPLE pass: printf-return-value /tmp/ice.ii: In member function ‘virtual unsigned int j::i()’: /tmp/ice.ii:9:12: internal compiler error: in set_value_range, at tree-vrp.c:288 unsigned i() { ^ c0x108f87f set_value_range(value_range*, value_range_type, tree_node*, tree_node*, bitmap_head*) ../../gcc/tree-vrp.c:288 0x108f966 set_and_canonicalize_value_range(value_range*, value_range_type, tree_node*, tree_node*, bitmap_head*) ../../gcc/tree-vrp.c:433 0x108fffc vrp_intersect_ranges_1 ../../gcc/tree-vrp.c:6297 0x108fffc vrp_intersect_ranges(value_range*, value_range*) ../../gcc/tree-vrp.c:6334 0x1112b45 vr_values::extract_range_for_var_from_comparison_expr(tree_node*, tree_code, tree_node*, tree_node*, value_range*) ../../gcc/vr-values.c:682 0x15b8bf5 evrp_range_analyzer::try_find_new_range(tree_node*, tree_node*, tree_code, tree_node*) ../../gcc/gimple-ssa-evrp-analyze.c:89 0x15b9a62 evrp_range_analyzer::record_ranges_from_incoming_edge(basic_block_def*) ../../gcc/gimple-ssa-evrp-analyze.c:198 0x15ba06c evrp_range_analyzer::enter(basic_block_def*) ../../gcc/gimple-ssa-evrp-analyze.c:75 0x15dc8eb before_dom_children ../../gcc/gimple-ssa-sprintf.c:4018 0x159a0d7 dom_walker::walk(basic_block_def*) ../../gcc/domwalk.c:353 0x15d567a execute ../../gcc/gimple-ssa-sprintf.c:4053