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.