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