This is the mail archive of the gcc-patches@gcc.gnu.org mailing list for the GCC project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Re: [patch] tree-cfg.c: Speed up cleanup_tree_cfg().


Hello,

> > in fact I think whole loop can be removed, since thread_jumps
> > cannot create new unreachable blocks the way it is written
> > now (it removes the blocks directly in the case they become
> > unreachable).
> 
> Actually, if you don't mind, may I ask a question?  In thread_jumps()
> in tree-cfg.c,
> 
> 	  /* Update the dominators.  */
> 	  if (dom_computed[CDI_DOMINATORS] >= DOM_CONS_OK)
> 	    {
> 	      /* Remove the unreachable blocks (observe that if all blocks
> 		 were reachable before, only those in the path we threaded
> 		 over and did not have any predecessor outside of the path
> 		 become unreachable).  */
> 	      for (; old_dest != dest; old_dest = tmp)
> 		{
> 		  tmp = EDGE_SUCC (old_dest, 0)->dest;
> 
> 		  if (EDGE_COUNT (old_dest->preds) > 0)
> 		    break;
> 
> 		  delete_basic_block (old_dest);
> 		}
> 
> why do you remove unreachable_blocks under "if (...)"?  I don't
> understand the dominator code very well, but it seems to me that
> removing unreachable blocks is something you want to do
> unconditionally.

you are of course right.

Zdenek


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]