https://gcc.gnu.org/bugzilla/show_bug.cgi?id=103603
--- Comment #4 from Kito Cheng <kito at gcc dot gnu.org> --- Hi Andrew: Thanks for your quick response! the patch is work to me for the testcase, but...I got seg fault when I built x86 GCC. Here is a reduced case from gcov, and this testcase also take longer compilation time than expect (>15s to compile and ICE, but ~0.01s w/o patch): ``` struct gcov_ctr_info { int values; }; struct gcov_fn_info { struct gcov_ctr_info ctrs[1]; }; struct gcov_info { struct gcov_fn_info **functions; }; void __gcov_dump_one() { { struct gcov_info gi_ptr; int gi_ptr_1; struct gcov_info gi_ptr_0; int run_max ; for (; ; ) for (unsigned f_ix ; gi_ptr_1; f_ix) { struct gcov_ctr_info *cinfo = gi_ptr.functions[0]; int cinfo_0; for (unsigned i ; cinfo_0; i) { run_max < &cinfo; run_max = cinfo->values; } } for (; &gi_ptr; ) ; } } ``` Backtrace: during GIMPLE pass: evrp gcov.c:28:1: internal compiler error: Segmentation fault 28 | } | ^ 0xba283f crash_signal ../../../riscv-gnu-toolchain/riscv-gcc/gcc/toplev.c:327 0x1488666 vec<tree_node*, va_heap, vl_embed>::quick_push(tree_node* const&) ../../../riscv-gnu-toolchain/riscv-gcc/gcc/vec.h:1023 0x1488666 vec<tree_node*, va_heap, vl_ptr>::quick_push(tree_node* const&) ../../../riscv-gnu-toolchain/riscv-gcc/gcc/vec.h:1875 0x1488666 vec<tree_node*, va_heap, vl_ptr>::safe_push(tree_node* const&) ../../../riscv-gnu-toolchain/riscv-gcc/gcc/vec.h:1888 0x1488666 gimple_ranger::prefill_stmt_dependencies(tree_node*) ../../../riscv-gnu-toolchain/riscv-gcc/gcc/gimple-range.cc:1177 0x14892de gimple_ranger::range_of_stmt(irange&, gimple*, tree_node*) ../../../riscv-gnu-toolchain/riscv-gcc/gcc/gimple-range.cc:1089 0x1482b45 gimple_ranger::range_of_expr(irange&, tree_node*, gimple*) ../../../riscv-gnu-toolchain/riscv-gcc/gcc/gimple-range.cc:982 0xe46670 range_query::value_of_expr(tree_node*, gimple*) ../../../riscv-gnu-toolchain/riscv-gcc/gcc/value-query.cc:86 0x14960e0 hybrid_folder::value_of_expr(tree_node*, gimple*) ../../../riscv-gnu-toolchain/riscv-gcc/gcc/gimple-ssa-evrp.c:235 0xd1575b substitute_and_fold_dom_walker::before_dom_children(basic_block_def*) ../../../riscv-gnu-toolchain/riscv-gcc/gcc/tree-ssa-propagate.c:1072 0x145cb34 dom_walker::walk(basic_block_def*) ../../../riscv-gnu-toolchain/riscv-gcc/gcc/domwalk.c:309 0xd14d85 substitute_and_fold_engine::substitute_and_fold(basic_block_def*) ../../../riscv-gnu-toolchain/riscv-gcc/gcc/tree-ssa-propagate.c:1283 0x1495c34 execute_early_vrp ../../../riscv-gnu-toolchain/riscv-gcc/gcc/gimple-ssa-evrp.c:349 Please submit a full bug report, with preprocessed source if appropriate. Please include the complete backtrace with any bug report. See <https://gcc.gnu.org/bugs/> for instructions.