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]

Fix for flow_loop_pre_header_scan



I've committed the following obvious bugfix to deal with the
case when we enter straight into a loop.

Michael.

	* flow.c (flow_loop_pre_header_scan): Punt if loop enters
	from entry block.


Index: flow.c
===================================================================
RCS file: /cvs/gcc/egcs/gcc/flow.c,v
retrieving revision 1.340
diff -c -3 -p -r1.340 flow.c
*** flow.c	2000/09/18 06:59:23	1.340
--- flow.c	2000/09/26 09:55:27
*************** flow_loop_pre_header_scan (loop)
*** 7869,7880 ****
    sbitmap_zero (loop->pre_header_trace);
    
    ebb = loop->entry_edges[0]->src;
!   SET_BIT (loop->pre_header_trace, ebb->index);
!   while (ebb->pred->src != ENTRY_BLOCK_PTR
! 	 && ! ebb->pred->pred_next)
      {
-       ebb = ebb->pred->src;
        SET_BIT (loop->pre_header_trace, ebb->index);
      }
    
    loop->pre_header_root = ebb;
--- 7869,7884 ----
    sbitmap_zero (loop->pre_header_trace);
    
    ebb = loop->entry_edges[0]->src;
! 
!   if (ebb != ENTRY_BLOCK_PTR)
      {
        SET_BIT (loop->pre_header_trace, ebb->index);
+       while (ebb->pred->src != ENTRY_BLOCK_PTR
+ 	     && ! ebb->pred->pred_next)
+ 	{
+ 	  ebb = ebb->pred->src;
+ 	  SET_BIT (loop->pre_header_trace, ebb->index);
+ 	}
      }
    
    loop->pre_header_root = ebb;

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