This is the mail archive of the gcc@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: [tree-ssa] RFC: Making control flow more explicit


Hello,

> Op za 09-08-2003, om 15:40 schreef Steven Bosscher:
> > Op za 09-08-2003, om 13:58 schreef Steven Bosscher:
> > > In fact it bootstraps c,c++,objc,java,gfortran + libraries.  I'm running
> > > the test suites now.
> > 
> > Here are the test results for tree-ssa with your patches applied.
> > 
> > I've compared these results with
> > http://gcc.gnu.org/ml/gcc-testresults/2003-08/msg00459.html:
> > The g++/objc test summaries are identical, so no c++ regressions.
> 
> Unfortunately, with the patches, tree-ssa gcc fails to compile the test
> case for PR8361.  I've tried to cut down the huge test case to something
> managable, but it doesn't help, the GIMPLE dump still is huge.
> 
> (Note that the attached test case code isn't even valid, but it still
> shows the ICE and that's what mattes.)

it seems there is some problem in exception handling in gcc.  The code
(admitedly stupid) I currently produce looks like

try
 {
   goto bla;
 }
finally
 {
   something;
 }
bla: ;

where similar constructs are nested in "something".  This causes
problems, as somehow fixup.real_region of ERT_FIXUP gets set to another
ERT_FIXUP.  I unfortunately don't understand what except.c is trying to
do to find out what's going wrong.  My best guess is

Index: except.c
===================================================================
RCS file: /cvs/gcc/gcc/gcc/except.c,v
retrieving revision 1.227.2.16
diff -c -3 -p -r1.227.2.16 except.c
*** except.c	25 Jul 2003 12:28:24 -0000	1.227.2.16
--- except.c	10 Aug 2003 09:25:14 -0000
*************** resolve_fixup_regions (void)
*** 930,936 ****
        if (j > n)
  	abort ();
  
!       fixup->u.fixup.real_region = cleanup->outer;
      }
  }
  
--- 930,936 ----
        if (j > n)
  	abort ();
  
!       fixup->u.fixup.real_region = cleanup;
      }
  }

but since the code could not ever work if this was the problem, I am
almost sure something else is wrong.

Zdenek


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