This is the mail archive of the
gcc-patches@gcc.gnu.org
mailing list for the GCC project.
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;