This is the mail archive of the
gcc-patches@gcc.gnu.org
mailing list for the GCC project.
Re: [tree-ssa] ia64 bootstrap broken
- From: Zdenek Dvorak <rakdver at atrey dot karlin dot mff dot cuni dot cz>
- To: Andreas Schwab <schwab at suse dot de>
- Cc: gcc-patches at gcc dot gnu dot org
- Date: Sun, 18 Jan 2004 01:12:28 +0100
- Subject: Re: [tree-ssa] ia64 bootstrap broken
- References: <jefzeea6p9.fsf@sykes.suse.de>
Hello,
> Since 2004-01-14 bootstrap on tree-ssa branch is broken for ia64.
this patch fixes it. Commited as obvious.
Zdenek
Index: ChangeLog.tree-ssa
===================================================================
RCS file: /cvs/gcc/gcc/gcc/Attic/ChangeLog.tree-ssa,v
retrieving revision 1.1.2.1096
diff -c -3 -p -r1.1.2.1096 ChangeLog.tree-ssa
*** ChangeLog.tree-ssa 17 Jan 2004 22:33:38 -0000 1.1.2.1096
--- ChangeLog.tree-ssa 18 Jan 2004 00:09:48 -0000
***************
*** 1,3 ****
--- 1,9 ----
+ 2004-01-18 Zdenek Dvorak <rakdver@atrey.karlin.mff.cuni.cz>
+
+ * cfghooks.c (split_block): Don't redirect edges.
+ * cfgrtl.c (rtl_split_block): Do it here.
+ * tree-cfg.c (tree_split_block): Ditto.
+
2004-01-17 Richard Henderson <rth@redhat.com>
* tree-cfg.c (verify_expr): Tidy. Check COND_EXPR for boolean
Index: cfghooks.c
===================================================================
RCS file: /cvs/gcc/gcc/gcc/cfghooks.c,v
retrieving revision 1.1.2.7
diff -c -3 -p -r1.1.2.7 cfghooks.c
*** cfghooks.c 15 Jan 2004 14:39:36 -0000 1.1.2.7
--- cfghooks.c 18 Jan 2004 00:09:49 -0000
*************** edge
*** 303,309 ****
split_block (basic_block bb, void *i)
{
basic_block new_bb;
- edge e;
if (!cfg_hooks->split_block)
internal_error ("%s does not support split_block.", cfg_hooks->name);
--- 303,308 ----
*************** split_block (basic_block bb, void *i)
*** 315,326 ****
new_bb->count = bb->count;
new_bb->frequency = bb->frequency;
new_bb->loop_depth = bb->loop_depth;
-
- /* Redirect the outgoing edges. */
- new_bb->succ = bb->succ;
- bb->succ = NULL;
- for (e = new_bb->succ; e; e = e->succ_next)
- e->src = new_bb;
if (dom_computed[CDI_DOMINATORS] >= DOM_CONS_OK)
{
--- 314,319 ----
Index: cfgrtl.c
===================================================================
RCS file: /cvs/gcc/gcc/gcc/cfgrtl.c,v
retrieving revision 1.57.2.24
diff -c -3 -p -r1.57.2.24 cfgrtl.c
*** cfgrtl.c 14 Jan 2004 22:39:33 -0000 1.57.2.24
--- cfgrtl.c 18 Jan 2004 00:09:51 -0000
*************** rtl_split_block (basic_block bb, void *i
*** 465,470 ****
--- 465,471 ----
{
basic_block new_bb;
rtx insn = insnp;
+ edge e;
if (!insn)
{
*************** rtl_split_block (basic_block bb, void *i
*** 485,490 ****
--- 486,497 ----
/* Create the new basic block. */
new_bb = create_basic_block (NEXT_INSN (insn), BB_END (bb), bb);
BB_END (bb) = insn;
+
+ /* Redirect the outgoing edges. */
+ new_bb->succ = bb->succ;
+ bb->succ = NULL;
+ for (e = new_bb->succ; e; e = e->succ_next)
+ e->src = new_bb;
if (bb->global_live_at_start)
{
Index: tree-cfg.c
===================================================================
RCS file: /cvs/gcc/gcc/gcc/Attic/tree-cfg.c,v
retrieving revision 1.1.4.256
diff -c -3 -p -r1.1.4.256 tree-cfg.c
*** tree-cfg.c 17 Jan 2004 22:33:39 -0000 1.1.4.256
--- tree-cfg.c 18 Jan 2004 00:09:54 -0000
*************** tree_split_block (basic_block bb, void *
*** 3604,3611 ****
--- 3604,3618 ----
block_stmt_iterator bsi, bsi_tgt;
tree act;
basic_block new_bb;
+ edge e;
new_bb = create_empty_bb (bb);
+
+ /* Redirect the outgoing edges. */
+ new_bb->succ = bb->succ;
+ bb->succ = NULL;
+ for (e = new_bb->succ; e; e = e->succ_next)
+ e->src = new_bb;
if (stmt && TREE_CODE ((tree) stmt) == LABEL_EXPR)
stmt = NULL;