sjlj-exceptions ICE. simplified test case

Richard Henderson rth@cygnus.com
Tue Apr 25 17:50:00 GMT 2000


On Tue, Apr 25, 2000 at 03:55:07PM -0700, Jason Merrill wrote:
> There are already a couple of tests that test -fsjlj-exceptions;
> g++.eh/crash3.C and g++.eh/vbase3.C.  They've been failing for a while.

g++.eh/crash3.C fixed thus.  The only other compiler crashes I
see are g++.oliva/template7.C and g++.other/crash15.C. 

There were a handful of eh execution failures.  Not enough to
make me believe sjlj is completely broken, but enough to think
something's not quite right.  I have not yet looked into them.


r~


        * reg-stack.c (convert_regs_1): Treat EDGE_ABNORMAL_CALL edges
        like EDGE_EH edges.

Index: reg-stack.c
===================================================================
RCS file: /cvs/gcc/egcs/gcc/reg-stack.c,v
retrieving revision 1.57
diff -c -p -d -r1.57 reg-stack.c
*** reg-stack.c	2000/02/26 14:23:43	1.57
--- reg-stack.c	2000/04/26 00:40:20
*************** convert_regs_1 (file, block)
*** 2550,2556 ****
        /* Care for EH edges specially.  The normal return path may return
  	 a value in st(0), but the EH path will not, and there's no need
  	 to add popping code to the edge.  */
!       if (e->flags & EDGE_EH)
  	{
  	  /* Assert that the lifetimes are as we expect -- one value
  	     live at st(0) on the end of the source block, and no
--- 2550,2556 ----
        /* Care for EH edges specially.  The normal return path may return
  	 a value in st(0), but the EH path will not, and there's no need
  	 to add popping code to the edge.  */
!       if (e->flags & (EDGE_EH | EDGE_ABNORMAL_CALL))
  	{
  	  /* Assert that the lifetimes are as we expect -- one value
  	     live at st(0) on the end of the source block, and no


More information about the Gcc mailing list