This is the mail archive of the
gcc@gcc.gnu.org
mailing list for the GCC project.
Re: GCC 3.1 ARM crosscompiler crashes (ICE) while compiling GCC 3.1 libstdc++ [was Re: GCC 3.1 ARM assembler problem (glibc 2.2.5 related)]
On Wed, Apr 10, 2002 at 01:07:24PM -0700, Richard Henderson wrote:
> On Wed, Apr 10, 2002 at 10:04:59PM +0200, Karel Gardas wrote:
> > ../../../../gcc3.1/libstdc++-v3/libsupc++/eh_personality.cc:485: Internal
> > compiler error in add_ehl_entry, at except.c:1441
>
> I'm working on this one. It's a sjlj exception problem.
Fixed thus.
r~
* except.c (add_ehl_entry): Allow duplicates after landing pad
creation.
Index: except.c
===================================================================
RCS file: /cvs/gcc/gcc/gcc/except.c,v
retrieving revision 1.212.2.2
diff -c -p -d -r1.212.2.2 except.c
*** except.c 9 Apr 2002 20:38:56 -0000 1.212.2.2
--- except.c 11 Apr 2002 01:02:28 -0000
*************** add_ehl_entry (label, region)
*** 1437,1444 ****
slot = (struct ehl_map_entry **)
htab_find_slot (exception_handler_label_map, entry, INSERT);
! if (*slot)
abort ();
*slot = entry;
}
--- 1437,1450 ----
slot = (struct ehl_map_entry **)
htab_find_slot (exception_handler_label_map, entry, INSERT);
!
! /* Before landing pad creation, each exception handler has its own
! label. After landing pad creation, the exception handlers may
! share landing pads. This is ok, since maybe_remove_eh_handler
! only requires the 1-1 mapping before landing pad creation. */
! if (*slot && !cfun->eh->built_landing_pads)
abort ();
+
*slot = entry;
}