This is the mail archive of the
gcc-patches@gcc.gnu.org
mailing list for the GCC project.
Re: thread_prologue_epilogue_insns cleanup
- To: gcc-patches at gcc dot gnu dot org
- Subject: Re: thread_prologue_epilogue_insns cleanup
- From: Clinton Popetz <cpopetz at cpopetz dot com>
- Date: Tue, 1 Feb 2000 22:22:16 -0600
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;
}