This is the mail archive of the
gcc-bugs@gcc.gnu.org
mailing list for the GCC project.
[Bug gcov/profile/28480] [4.2 Regression] inliner-1.c:31: ICE: in set_bb_for_stmt, at tree-cfg.c:2775
- From: "hubicka at ucw dot cz" <gcc-bugzilla at gcc dot gnu dot org>
- To: gcc-bugs at gcc dot gnu dot org
- Date: 27 Jul 2006 16:06:17 -0000
- Subject: [Bug gcov/profile/28480] [4.2 Regression] inliner-1.c:31: ICE: in set_bb_for_stmt, at tree-cfg.c:2775
- References: <bug-28480-276@http.gcc.gnu.org/bugzilla/>
- Reply-to: gcc-bugzilla at gcc dot gnu dot org
------- 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