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