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().


Hi Zdenek,

> 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.

Kazu Hirata


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