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.

Reply via email to