------- Comment #5 from hubicka at ucw dot cz 2006-07-27 16:06 ------- Subject: Re: [Bug gcov/profile/28480] [4.2 Regression] inliner-1.c:31: ICE: in set_bb_for_stmt, at tree-cfg.c:2775
Hi, it is hitting sanity check in set_bb_for_stmt that is bit insane in this context. I am testing patch to inline neccesary parts of set_bb_for_stmt (because of quadratic time issue it is time critical too and we need very little of the function itself.) Index: tree-cfg.c =================================================================== *** tree-cfg.c (revision 115775) --- tree-cfg.c (working copy) *************** tree_split_block (basic_block bb, void * *** 4203,4209 **** new_bb->stmt_list = tsi_split_statement_list_before (&bsi.tsi); for (tsi_tgt = tsi_start (new_bb->stmt_list); !tsi_end_p (tsi_tgt); tsi_next (&tsi_tgt)) ! set_bb_for_stmt (tsi_stmt (tsi_tgt), new_bb); return new_bb; } --- 4205,4218 ---- new_bb->stmt_list = tsi_split_statement_list_before (&bsi.tsi); for (tsi_tgt = tsi_start (new_bb->stmt_list); !tsi_end_p (tsi_tgt); tsi_next (&tsi_tgt)) ! { ! tree stmt = tsi_stmt (tsi_tgt); ! ! get_stmt_ann (stmt)->bb = new_bb; ! if (TREE_CODE (stmt) == LABEL_EXPR) ! VEC_replace (basic_block, label_to_block_map, ! LABEL_DECL_UID (LABEL_EXPR_LABEL (stmt)), bb); ! } return new_bb; } -- http://gcc.gnu.org/bugzilla/show_bug.cgi?id=28480