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

            Bug ID: 87490
           Summary: [9 Regression] ICE in expand_builtin_strnlen at
                    gcc/builtins.c:3164
           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: ---
              Host: x86_64-linux-gnu

Following causes ICE:

$ gcc
/home/marxin/Programming/gcc/gcc/testsuite/gcc.c-torture/execute/builtins/strnlen.c
-O1
/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      \
   |     ^~~~
/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:57:6:
warning: ‘strnlen’ specified bound [1, 3] exceeds the size 0 of unterminated
array [-Wstringop-overflow=]
57 |   A (strnlen ("",     r_1_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      \
   |     ^~~~
during RTL pass: expand
/home/marxin/Programming/gcc/gcc/testsuite/gcc.c-torture/execute/builtins/strnlen.c:57:6:
internal compiler error: Segmentation fault
57 |   A (strnlen ("",     r_1_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      \
   |     ^~~~
0xa126df crash_signal
       
/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-trunk-ppc64le/build/gcc/toplev.c:325
0x7ffff6bc310f ???
       
/usr/src/debug/glibc-2.27-6.1.x86_64/signal/../sysdeps/unix/sysv/linux/x86_64/sigaction.c:0
0x66111b expand_builtin_strnlen
       
/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-trunk-ppc64le/build/gcc/builtins.c:3164
0x668ad4 expand_builtin(tree_node*, rtx_def*, rtx_def*, machine_mode, int)
       
/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-trunk-ppc64le/build/gcc/builtins.c:7503
0x76f1f0 expand_expr_real_1(tree_node*, rtx_def*, machine_mode,
expand_modifier, rtx_def**, bool)
       
/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-trunk-ppc64le/build/gcc/expr.c:10943
0x778bea store_expr(tree_node*, rtx_def*, int, bool, bool)
       
/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-trunk-ppc64le/build/gcc/expr.c:5636
0x779824 expand_assignment(tree_node*, tree_node*, bool)
       
/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-trunk-ppc64le/build/gcc/expr.c:5420
0x682160 expand_call_stmt
       
/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-trunk-ppc64le/build/gcc/cfgexpand.c:2706
0x682160 expand_gimple_stmt_1
       
/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-trunk-ppc64le/build/gcc/cfgexpand.c:3596
0x682160 expand_gimple_stmt
       
/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-trunk-ppc64le/build/gcc/cfgexpand.c:3755
0x683eff expand_gimple_basic_block
       
/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-trunk-ppc64le/build/gcc/cfgexpand.c:5791
0x687ebe execute
       
/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-trunk-ppc64le/build/gcc/cfgexpand.c:6396

Reply via email to