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

            Bug ID: 87059
           Summary: internal compiler error: in set_value_range, at
                    tree-vrp.c:289
           Product: gcc
           Version: unknown
            Status: UNCONFIRMED
          Severity: normal
          Priority: P3
         Component: target
          Assignee: unassigned at gcc dot gnu.org
          Reporter: anton at samba dot org
                CC: meissner at gcc dot gnu.org, segher at gcc dot gnu.org,
                    wschmidt at gcc dot gnu.org
  Target Milestone: ---
            Target: powerpc64le-linux

The following test case:

#include <string.h>

void d(void);
char *a, *b;

void c(void) {
  if (b == a)
    return;
  if (strncmp(a, "", b - a))
    d();
}

hits an ICE on trunk:

gcc -O2 test.c

during RTL pass: expand
test.c: In function ā€˜c’:
test.c:9:7: internal compiler error: in set_value_range, at tree-vrp.c:289
9 |   if (strncmp(a, "", b - a))
  |       ^~~~~~~~~~~~~~~~~~~~~
0x10d3ceb7 set_value_range(value_range*, value_range_type, tree_node*,
tree_node*, bitmap_head*)
        ../../gcc/gcc/tree-vrp.c:289
0x10d4106f extract_range_from_binary_expr_1(value_range*, tree_code,
tree_node*, value_range*, value_range*)
        ../../gcc/gcc/tree-vrp.c:1893
0x10d43a2b determine_value_range_1
        ../../gcc/gcc/tree-vrp.c:6866
0x10d43cbf determine_value_range(tree_node*,
generic_wide_int<wide_int_storage>*, generic_wide_int<wide_int_storage>*)
        ../../gcc/gcc/tree-vrp.c:6901
0x1036385b get_size_range(tree_node*, tree_node**, bool)
        ../../gcc/gcc/calls.c:1258
0x10369c5b maybe_warn_nonstring_arg(tree_node*, tree_node*)
        ../../gcc/gcc/calls.c:1617
0x1036c003 initialize_argument_information
        ../../gcc/gcc/calls.c:2197
0x1036d367 expand_call(tree_node*, rtx_def*, int)
        ../../gcc/gcc/calls.c:3577
0x103454ef expand_builtin_strncmp
        ../../gcc/gcc/builtins.c:4793
0x10355f5b expand_builtin(tree_node*, rtx_def*, rtx_def*, machine_mode, int)
        ../../gcc/gcc/builtins.c:7445
0x1052816f expand_expr_real_1(tree_node*, rtx_def*, machine_mode,
expand_modifier, rtx_def**, bool)
        ../../gcc/gcc/expr.c:10943
0x10542cc3 expand_expr
        ../../gcc/gcc/expr.h:279
0x10542cc3 expand_expr_real_2(separate_ops*, rtx_def*, machine_mode,
expand_modifier)
        ../../gcc/gcc/expr.c:8456
0x10528703 expand_expr_real_1(tree_node*, rtx_def*, machine_mode,
expand_modifier, rtx_def**, bool)
        ../../gcc/gcc/expr.c:11230
0x1053958f expand_expr
        ../../gcc/gcc/expr.h:279
0x1053958f store_expr(tree_node*, rtx_def*, int, bool, bool)
        ../../gcc/gcc/expr.c:5556
0x1053b6a3 expand_assignment(tree_node*, tree_node*, bool)
        ../../gcc/gcc/expr.c:5420
0x10388133 expand_call_stmt
        ../../gcc/gcc/cfgexpand.c:2685
0x10388133 expand_gimple_stmt_1
        ../../gcc/gcc/cfgexpand.c:3575
0x10388133 expand_gimple_stmt
        ../../gcc/gcc/cfgexpand.c:3734

The CI that tripped up on this started failing at:

commit 9e4ef9eec6c786e3edbdcb7f26a1d735c9d7f4b9
Author: aldyh <aldyh@138bc75d-0d04-0410-961f-82ee72b054a4>
Date:   Tue Aug 21 06:27:14 2018 +0000

            * wide-int-range.cc (wide_int_range_abs): New.
            (wide_int_range_order_set): Rename from wide_int_range_min_max.
            * wide-int-range.h (wide_int_range_abs): New.
            (wide_int_range_min_max): New.
            * tree-vrp.c (extract_range_from_unary_expr): Rewrite ABS_EXPR
            case to call wide_int_range_abs.
            Rewrite MIN/MAX_EXPR to call wide_int_range_min_max.
            (extract_range_from_abs_expr): Delete.

Reply via email to