flow.c fix

Jeffrey A Law law@cygnus.com
Fri Oct 16 17:44:00 GMT 1998


I've checked in this patch.  It fixes a problem exposed during testing of the
post-reload flow code.


	flow.c (find_basic_blocks_1): Do not delete unreachable blocks
	after reload has completed.

Index: flow.c
===================================================================
RCS file: /egcs/carton/cvsfiles/egcs/./gcc/flow.c,v
retrieving revision 1.73
diff -c -3 -p -r1.73 flow.c
*** flow.c	1998/10/16 00:08:32	1.73
--- flow.c	1998/10/17 00:43:11
*************** find_basic_blocks_1 (f, nonlocal_labels)
*** 597,603 ****
    if (n_basic_blocks > 0)
      {
        int something_marked = 1;
!       int deleted;
  
        /* Pass over all blocks, marking each block that is reachable
  	 and has not yet been marked.
--- 597,603 ----
    if (n_basic_blocks > 0)
      {
        int something_marked = 1;
!       int deleted = 0;
  
        /* Pass over all blocks, marking each block that is reachable
  	 and has not yet been marked.
*************** find_basic_blocks_1 (f, nonlocal_labels)
*** 631,637 ****
  	    && LABEL_REFS (basic_block_head[i]) == basic_block_head[i])
  	  abort ();
  
!       deleted = delete_unreachable_blocks ();
  
        /* There are pathological cases where one function calling hundreds of
  	 nested inline functions can generate lots and lots of unreachable
--- 631,638 ----
  	    && LABEL_REFS (basic_block_head[i]) == basic_block_head[i])
  	  abort ();
  
!       if (! reload_completed)
! 	deleted = delete_unreachable_blocks ();
  
        /* There are pathological cases where one function calling hundreds of
  	 nested inline functions can generate lots and lots of unreachable



More information about the Gcc-patches mailing list