https://gcc.gnu.org/bugzilla/show_bug.cgi?id=100513

--- Comment #12 from Martin Liška <marxin at gcc dot gnu.org> ---
Created attachment 50789
  --> https://gcc.gnu.org/bugzilla/attachment.cgi?id=50789&action=edit
Reduced test-case (x86_64)

Fails on master with:

$ g++ tree-cfg.ii -O3 --param ggc-min-expand=1 --param ggc-min-heapsize=1 -c -w
...
tree-cfg2.ii: In function ‘unsigned int split_critical_edges(bool)’:
tree-cfg2.ii:1877:15: internal compiler error: Segmentation fault
 1877 |  unsigned int split_critical_edges (bool for_edge_insertion_p ) {  
basic_block bb;   edge e;   edge_iterator ei;   start_recording_case_labels ();
  for (bb = (((cfun + 0))->cfg->x_entry_block_ptr); bb; bb = bb->next_bb)     {
      for ((ei) = ei_start_1 (&((bb->succs))); ei_cond ((ei), &(e)); ei_next
(&(ei)))         {    if ((vec_safe_length ((e)->src->succs) >= 2 &&
vec_safe_length ((e)->dest->preds) >= 2) && !(e->flags & EDGE_ABNORMAL))     
split_edge (e);    else if (for_edge_insertion_p      && (!single_pred_p
(e->dest)          || !gimple_seq_empty_p (phi_nodes (e->dest))          ||
e->dest == (((cfun + 0))->cfg->x_exit_block_ptr))      && e->src != (((cfun +
0))->cfg->x_entry_block_ptr)      && !(e->flags & EDGE_ABNORMAL))      {       
gimple_stmt_iterator gsi;        gsi = gsi_last_bb (e->src);        if
(!gsi_end_p (gsi)     && stmt_ends_bb_p (gsi_stmt (gsi))     && (gimple_code
(gsi_stmt (gsi)) != GIMPLE_RETURN         && !gimple_call_builtin_p (gsi_stmt
(gsi),        BUILT_IN_RETURN)))   split_edge (e);      }  }     }  
end_recording_case_labels ();   return 0; }
      |               ^~~~~~~~~~~~~~~~~~~~
0x117deda crash_signal
        /home/marxin/Programming/gcc/gcc/toplev.c:327
0x7ffff789352f ???
       
/usr/src/debug/glibc-2.33-5.2.x86_64/signal/../sysdeps/unix/sysv/linux/x86_64/sigaction.c:0
0xc782cb lookup_page_table_entry
        /home/marxin/Programming/gcc/gcc/ggc-page.c:630
0xc782cb ggc_set_mark(void const*)
        /home/marxin/Programming/gcc/gcc/ggc-page.c:1550
0xeefdf1 gt_ggc_mx_basic_block_def(void*)
        /dev/shm/objdir/gcc/gtype-desc.c:1525
0xef226f gt_ggc_mx_gimple(void*)
        /dev/shm/objdir/gcc/gtype-desc.c:1285
0xbb0b8b gt_ggc_mx_lang_tree_node(void*)
        ./gt-cp-tree.h:483
0xef257e gt_ggc_mx_gimple(void*)
        /dev/shm/objdir/gcc/gtype-desc.c:1233
0xef4e01 gt_ggc_mx_cgraph_edge(void*)
        /dev/shm/objdir/gcc/gtype-desc.c:1401
0xef4df3 gt_ggc_mx_cgraph_edge(void*)
        /dev/shm/objdir/gcc/gtype-desc.c:1400
0xef4b7d gt_ggc_mx_symtab_node(void*)
        /dev/shm/objdir/gcc/gtype-desc.c:1346
0xbb11a7 gt_ggc_mx_lang_tree_node(void*)
        ./gt-cp-tree.h:346
0xeedcde void gt_ggc_mx<tree_node*>(vec<tree_node*, va_gc, vl_embed>*)
        /home/marxin/Programming/gcc/gcc/vec.h:1353
0xeedcde gt_ggc_mx_vec_tree_va_gc_(void*)
        /dev/shm/objdir/gcc/gtype-desc.c:1877
0xeedcde gt_ggc_mx_vec_tree_va_gc_(void*)
        /dev/shm/objdir/gcc/gtype-desc.c:1872
0xbb20de gt_ggc_mx_lang_type(void*)
        ./gt-cp-tree.h:36
0xbb20de gt_ggc_mx_lang_type(void*)
        ./gt-cp-tree.h:23
0xbb0f71 gt_ggc_mx_lang_tree_node(void*)
        ./gt-cp-tree.h:440
0xbb1a2c gt_ggc_mx_lang_tree_node(void*)
        ./gt-cp-tree.h:321
0xbb0f5f gt_ggc_mx_lang_tree_node(void*)
        ./gt-cp-tree.h:439

Note that --param ggc-min-expand=0 --param ggc-min-heapsize=0 takes ages, do
not use it..

Reply via email to