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