https://gcc.gnu.org/bugzilla/show_bug.cgi?id=105604
Bug ID: 105604 Summary: [10/11/12 Regression] ICE: in tree_to_shwi, at tree.cc:6369 Product: gcc Version: 12.0 Status: UNCONFIRMED Severity: normal Priority: P3 Component: middle-end Assignee: unassigned at gcc dot gnu.org Reporter: slyfox at gcc dot gnu.org Target Milestone: --- Originally reported by cpu in https://bugs.gentoo.org/844091. Here is my attempt at minimizing it: //$ cat main.c struct { long users; long size; char *data; } * main_trans; void *main___trans_tmp_1; int sprintf(char *, char *, ...); int main() { int users = 0; struct { long users; long size; char *data; int links[users]; char buf[]; } *trans = trans; trans->data = trans->buf; main___trans_tmp_1 = trans; main_trans = main___trans_tmp_1; sprintf(main_trans->data, "test"); } $ /tmp/gb/gcc/xgcc -B/tmp/gb/gcc -c -Wall -O2 -pipe -fomit-frame-pointer main.c during GIMPLE pass: strlen main.c: In function ‘main’: main.c:8:5: internal compiler error: in tree_to_shwi, at tree.cc:6369 8 | int main() { | ^~~~ 0x1116ade tree_to_shwi(tree_node const*) gcc/tree.cc:6369 0x1116b36 int_byte_position(tree_node const*) gcc/tree.cc:3616 0x1cd1ce8 get_origin_and_offset_r gcc/gimple-ssa-sprintf.cc:2354 0x1cd1845 get_origin_and_offset_r gcc/gimple-ssa-sprintf.cc:2307 0x1cd1f29 get_origin_and_offset_r gcc/gimple-ssa-sprintf.cc:2370 0x1cd64ce get_origin_and_offset gcc/gimple-ssa-sprintf.cc:2427 0x1cd64ce handle_printf_call(gimple_stmt_iterator*, pointer_query&) gcc/gimple-ssa-sprintf.cc:4703 0x103ff10 strlen_pass::check_and_optimize_call(bool*) gcc/tree-ssa-strlen.cc:5461 0x103ffb3 strlen_pass::check_and_optimize_stmt(bool*) gcc/tree-ssa-strlen.cc:5665 0x1040326 strlen_pass::before_dom_children(basic_block_def*) gcc/tree-ssa-strlen.cc:5849 0x1c5d56b dom_walker::walk(basic_block_def*) gcc/domwalk.cc:309 0x10409cf printf_strlen_execute gcc/tree-ssa-strlen.cc:5908 0x1040c58 execute gcc/tree-ssa-strlen.cc:6007 I seem to be able to reproduce ICE on: 10.3.0, 11.3.0, 12.1.0. This does not ICE: 9.3.0 $ /tmp/gb/gcc/xgcc -B/tmp/gb/gcc -v Reading specs from /tmp/gb/gcc/specs COLLECT_GCC=/tmp/gb/gcc/xgcc COLLECT_LTO_WRAPPER=/tmp/gb/gcc/lto-wrapper Target: x86_64-pc-linux-gnu Configured with: /home/slyfox/dev/git/gcc/configure --disable-multilib --disable-bootstrap --with-native-system-header-dir=/<<NIX>>/glibc-2.34-115-dev/include --prefix=/tmp/gb/__td__ CFLAGS='-O1 -ggdb3' CXXFLAGS='-O1 -ggdb3' LDFLAGS='-O1 -ggdb3' Thread model: posix Supported LTO compression algorithms: zlib gcc version 13.0.0 20220514 (experimental) (GCC)