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]
Other format: [Raw text]

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


> 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;


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