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

            Bug ID: 87112
           Summary: [9 Regression] ICE in fold_binary_loc, at
                    fold-const.c:9334
           Product: gcc
           Version: 9.0
            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
  Target Milestone: ---

Starting from r263855 we ICE on:

$  ./xgcc -B.
/home/marxin/Programming/gcc/gcc/testsuite/gcc.c-torture/execute/builtins/strnlen.c
-O1 -c
/home/marxin/Programming/gcc/gcc/testsuite/gcc.c-torture/execute/builtins/strnlen.c:
In function ‘test_strnlen_str_cst’:
/home/marxin/Programming/gcc/gcc/testsuite/gcc.c-torture/execute/builtins/strnlen.c:25:6:
warning: ‘strnlen’ specified bound 18446744073709551615 exceeds maximum object
size 9223372036854775807 [-Wstringop-overflow=]
25 |   A (strnlen ("", SIZE_MAX) == 0);
   |      ^~~~~~~~~~~~~~~~~~~~~~
/home/marxin/Programming/gcc/gcc/testsuite/gcc.c-torture/execute/builtins/strnlen.c:14:5:
note: in definition of macro ‘A’
14 |   ((expr) ? (void)0      \
   |     ^~~~
/home/marxin/Programming/gcc/gcc/testsuite/gcc.c-torture/execute/builtins/strnlen.c:32:6:
warning: ‘strnlen’ specified bound 18446744073709551615 exceeds maximum object
size 9223372036854775807 [-Wstringop-overflow=]
32 |   A (strnlen ("1", SIZE_MAX) == 1);
   |      ^~~~~~~~~~~~~~~~~~~~~~~
/home/marxin/Programming/gcc/gcc/testsuite/gcc.c-torture/execute/builtins/strnlen.c:14:5:
note: in definition of macro ‘A’
14 |   ((expr) ? (void)0      \
   |     ^~~~
/home/marxin/Programming/gcc/gcc/testsuite/gcc.c-torture/execute/builtins/strnlen.c:33:6:
warning: ‘strnlen’ specified bound 18446744073709551614 exceeds maximum object
size 9223372036854775807 [-Wstringop-overflow=]
33 |   A (strnlen ("1", -2) == 1);
   |      ^~~~~~~~~~~~~~~~~
/home/marxin/Programming/gcc/gcc/testsuite/gcc.c-torture/execute/builtins/strnlen.c:14:5:
note: in definition of macro ‘A’
14 |   ((expr) ? (void)0      \
   |     ^~~~
/home/marxin/Programming/gcc/gcc/testsuite/gcc.c-torture/execute/builtins/strnlen.c:41:6:
warning: ‘strnlen’ specified bound 18446744073709551615 exceeds maximum object
size 9223372036854775807 [-Wstringop-overflow=]
41 |   A (strnlen ("123", SIZE_MAX) == 3);
   |      ^~~~~~~~~~~~~~~~~~~~~~~~~
/home/marxin/Programming/gcc/gcc/testsuite/gcc.c-torture/execute/builtins/strnlen.c:14:5:
note: in definition of macro ‘A’
14 |   ((expr) ? (void)0      \
   |     ^~~~
/home/marxin/Programming/gcc/gcc/testsuite/gcc.c-torture/execute/builtins/strnlen.c:42:6:
warning: ‘strnlen’ specified bound 18446744073709551614 exceeds maximum object
size 9223372036854775807 [-Wstringop-overflow=]
42 |   A (strnlen ("123", -2) == 3);
   |      ^~~~~~~~~~~~~~~~~~~
/home/marxin/Programming/gcc/gcc/testsuite/gcc.c-torture/execute/builtins/strnlen.c:14:5:
note: in definition of macro ‘A’
14 |   ((expr) ? (void)0      \
   |     ^~~~
during RTL pass: expand
/home/marxin/Programming/gcc/gcc/testsuite/gcc.c-torture/execute/builtins/strnlen.c:
In function ‘test_strnlen_str_range’:
/home/marxin/Programming/gcc/gcc/testsuite/gcc.c-torture/execute/builtins/strnlen.c:51:6:
internal compiler error: in fold_binary_loc, at fold-const.c:9334
51 |   A (strnlen ("",     r_0_3) == 0);
   |      ^~~~~~~~~~~~~~~~~~~~~~~
/home/marxin/Programming/gcc/gcc/testsuite/gcc.c-torture/execute/builtins/strnlen.c:14:5:
note: in definition of macro ‘A’
14 |   ((expr) ? (void)0      \
   |     ^~~~
0xbf973c fold_binary_loc(unsigned int, tree_code, tree_node*, tree_node*,
tree_node*)
        ../../gcc/fold-const.c:9333
0xc088f8 fold_build2_loc(unsigned int, tree_code, tree_node*, tree_node*,
tree_node*)
        ../../gcc/fold-const.c:12360
0x9cbdb7 expand_builtin_strnlen
        ../../gcc/builtins.c:3023
0x9d9db1 expand_builtin(tree_node*, rtx_def*, rtx_def*, machine_mode, int)
        ../../gcc/builtins.c:7331
0xbb9961 expand_expr_real_1(tree_node*, rtx_def*, machine_mode,
expand_modifier, rtx_def**, bool)
        ../../gcc/expr.c:10943
0xbac1ce expand_expr_real(tree_node*, rtx_def*, machine_mode, expand_modifier,
rtx_def**, bool)
        ../../gcc/expr.c:8209
0xba15c8 store_expr(tree_node*, rtx_def*, int, bool, bool)
        ../../gcc/expr.c:5636
0xb9fbf8 expand_assignment(tree_node*, tree_node*, bool)
        ../../gcc/expr.c:5420
0xa1750d expand_call_stmt
        ../../gcc/cfgexpand.c:2685
0xa1a68f expand_gimple_stmt_1
        ../../gcc/cfgexpand.c:3575
0xa1ad1d expand_gimple_stmt
        ../../gcc/cfgexpand.c:3734
0xa2356a expand_gimple_basic_block
        ../../gcc/cfgexpand.c:5770
0xa24f3c execute
        ../../gcc/cfgexpand.c:6373

Reply via email to