[RFA] Fix Ada bootstrap (was: 16: EH redirection)

Jan Hubicka hubicka@ucw.cz
Mon Apr 27 14:28:00 GMT 2009


> Hi,
> 
> On Sun, 26 Apr 2009, Jan Hubicka wrote:
> 
> > > FAIL:   c37213d
> > > FAIL:   c37213h
> > > FAIL:   c37213k
> > > FAIL:   c37215h
> > > FAIL:   c93004f
> > > FAIL:   c94008c
> > 
> > I will look into these. THanks for fixing the SRA issue.
> > There was EH checking issues related to prev_try pointer I have patch
> > for.
> 
> Yeah, that's the error for the first four cases.

This is the patch I am testing (x86_64-linux) and will commit once
passes.  The problem here is that removing dead TRY region imply need to
update prev_try pointers in the subregions.  This is actually ages old
bug, I am surprised it did not lead to any wrong code issues.

There is still one ICE on ada testsuite in my run.  This one is caused
by dominance calcuation being called in forprop2 on CFG containing dead
code.  Seems weird since preceeding CCP calls cfgcleanup.

Honza

	* except.c (remove_eh_handler_and_replace): Update prev_try pointers.
Index: except.c
===================================================================
--- except.c	(revision 146829)
+++ except.c	(working copy)
@@ -2674,7 +2674,7 @@ remove_eh_handler_and_replace (struct eh
   outer = region->outer;
 
   /* When we are moving the region in EH tree, update prev_try pointers.  */
-  if (outer != replace && region->inner)
+  if ((outer != replace || region->type == ERT_TRY) && region->inner)
     {
       struct eh_region *prev_try = find_prev_try (replace);
       p = region->inner;



More information about the Gcc-patches mailing list