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.

Reply via email to