[PATCH][TUPLES] Two simple bug fixes.

Richard Guenther richard.guenther@gmail.com
Sun Apr 13 09:42:00 GMT 2008


2008/4/13 Doug Kwan (關振德) <dougkwan@google.com>:
> Here is the patch.
>
>  -Doug
>
>
>
>   2008-04-13  Doug Kwan  <dougkwan@google.com>
>
>         * gimple-iterator.c (gsi_move_to_bb_end): Use gsi_last_bb
>         instead of calling both gsi_last and bb_seq.
>         * passes.c (init_optimization_passes): Re-eanble second tail-recursion
>         pass.
>
>   Index: gcc/gcc/gimple-iterator.c
>   ===================================================================
>   --- gcc/gcc/gimple-iterator.c   (revision 134208)
>   +++ gcc/gcc/gimple-iterator.c   (working copy)
>   @@ -566,7 +566,7 @@ gsi_move_before (gimple_stmt_iterator *f
>   void
>   gsi_move_to_bb_end (gimple_stmt_iterator *from, basic_block bb)
>   {
>   -  gimple_stmt_iterator last = gsi_last (bb_seq (bb));
>   +  gimple_stmt_iterator last = gsi_last_bb (bb);

Can we put an assert guarded by #if ENABLE_CHECKING for the case you ran
into in gsi_last?  I also hit similar issues if you split a bb when
there are active
tsis in that bb (they get invalid bbs and strange things occur).

Otherwise this is ok.

Richard.

>    /* Have to check gsi_end_p because it could be an empty block.  */
>    if (!gsi_end_p (last) && is_ctrl_stmt (gsi_stmt (last)))
>   Index: gcc/gcc/passes.c
>   ===================================================================
>   --- gcc/gcc/passes.c    (revision 134209)
>   +++ gcc/gcc/passes.c    (working copy)
>   @@ -629,8 +629,8 @@ init_optimization_passes (void)
>        NEXT_PASS (pass_phi_only_cprop);
>        NEXT_PASS (pass_tree_ifcombine);
>        NEXT_PASS (pass_phiopt);
>   -      NEXT_PASS (pass_tail_recursion);
>   #endif
>   +      NEXT_PASS (pass_tail_recursion);
>        NEXT_PASS (pass_ch);
>   #if 0
>        NEXT_PASS (pass_stdarg);
>
>
>   2008/4/13 Rafael Espindola <espindola@google.com>:
>
>
>  > Patch is missing.
>   >
>   >  2008/4/13 Doug Kwan (關振德) <dougkwan@google.com>:
>
>
>  >
>   >
>   > > Hi Diego,
>   >  >
>   >  >     Could you please review this simple patch?  The first fix is in
>   >  >  gsi_move_to_bb_end.  The bug is quite subtle.  In the old code,  if
>   >  >  the target bb is empty, bb_seq will be empty and gsi_last will not
>   >  >  have the correct bb set.  That causes the moved gimple to have NULL is
>   >  >  its bb.  The second fix is to re-enable the second tail recursion
>   >  >  pass.  I did not do so when I check in the patch for tree-tailcall.c.
>   >  >
>   >  >  Thanks.
>   >  >
>   >  >  -Doug
>   >  >
>   >
>   >
>   >
>   >  --
>   >  Rafael Avila de Espindola
>   >
>   >  Google Ireland Ltd.
>   >  Gordon House
>   >  Barrow Street
>   >  Dublin 4
>   >  Ireland
>   >
>   >  Registered in Dublin, Ireland
>   >  Registration Number: 368047
>   >
>


More information about the Gcc-patches mailing list