https://gcc.gnu.org/bugzilla/show_bug.cgi?id=87119
Bug ID: 87119 Summary: ice in set_value_range, at tree-vrp.c:289 Product: gcc Version: 8.0 Status: UNCONFIRMED Severity: normal Priority: P3 Component: c Assignee: unassigned at gcc dot gnu.org Reporter: dcb314 at hotmail dot com Target Milestone: --- The following C code: enum { a = 1 } b; unsigned long c; d, e, f, g, h, i, j, k; l() { while (h) while (i) if (j) return; if (g && f && e && m() == a) k = d && c && strncmp(&b, "", c - 1); } when compiled by recent gcc trunk and compiler flag -O2, does this: /home/dcb/gcc/results.263799.asan/bin/gcc /home/dcb/gcc/results.263849/bin/gcc during RTL pass: expand bug461.c: In function ālā: bug461.c:10:19: internal compiler error: in set_value_range, at tree-vrp.c:289 10 | k = d && c && strncmp(&b, "", c - 1); | ^~~~~~~~~~~~~~~~~~~~~~ 0x116adfe set_value_range(value_range*, value_range_type, tree_node*, tree_node* , bitmap_head*) ../../trunk/gcc/tree-vrp.c:289 0x1175cff extract_range_from_binary_expr_1(value_range*, tree_code, tree_node*, value_range*, value_range*) ../../trunk/gcc/tree-vrp.c:1568 0x1177924 determine_value_range_1 ../../trunk/gcc/tree-vrp.c:6765 0x1177aff determine_value_range(tree_node*, generic_wide_int<wide_int_storage>*, generic_wide_int<wide_int_storage>*) ../../trunk/gcc/tree-vrp.c:6800 The problem seems to exist from 263799 to 263849.