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]

Re: thread_prologue_epilogue_insns cleanup


Richard Henderson <rth@cygnus.com> writes:

> 2000-01-28  Richard Henderson  <rth@cygnus.com>
>
>         * flow.c (find_basic_blocks): Remove do_cleanup argument.
>         Break out that code ...
>         (cleanup_cfg): ... here.

We need to keep label_value_list around for delete_ureachable_blocks.  (This
means we keep it around indefitely after regstack since cleanup_cfg isn't
called, but it should be in the noise.)

This should clear up the "recent C++ on coff tankage"
(http://gcc.gnu.org/ml/gcc-bugs/2000-01/msg00927.html) because things like:

	void what() throw() { }

would end up with undefined labels under sjlj-exceptions.  

Ok?  

				-Clint

2000-02-01  Clinton Popetz  <cpopetz@cygnus.com>
	
	* flow.c (find_basic_blocks): Don't kill label_value_list
	here.
	(cleanup_cfg): Kill it here.

Index: flow.c
===================================================================
RCS file: /cvs/gcc/egcs/gcc/flow.c,v
retrieving revision 1.213
diff -c -2 -p -r1.213 flow.c
*** flow.c	2000/01/29 23:52:33	1.213
--- flow.c	2000/02/02 03:54:53
*************** find_basic_blocks (f, nregs, file)
*** 429,435 ****
    mark_critical_edges ();
  
-   /* Kill the data we won't maintain.  */
-   label_value_list = NULL_RTX;
- 
  #ifdef ENABLE_CHECKING
    verify_flow_info ();
--- 429,432 ----
*************** cleanup_cfg (f)
*** 736,739 ****
--- 733,739 ----
    try_merge_blocks ();
    mark_critical_edges ();
+ 
+   /* Kill the data we won't maintain.  */
+   label_value_list = NULL_RTX;
  }
  

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