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..