This is the mail archive of the
gcc-patches@gcc.gnu.org
mailing list for the GCC project.
Re: 3 GCC regressions, 3 new, with your patch on 2002-03-05T18:05:20Z.
> /home/hp/cvs_areas/combined/cvs_write/libstdc++-v3/libsupc++/eh_aux_runtime.cc
> -o eh_aux_ru\
> ntime.o
> /home/hp/cvs_areas/combined/cvs_write/libstdc++-v3/libsupc++/eh_aux_runtime.cc:
> In
> function `void __cxa_bad_cast()':
> /home/hp/cvs_areas/combined/cvs_write/libstdc++-v3/libsupc++/eh_aux_runtime.cc:46:
> Missing
> REG_EH_REGION note in the end of bb 8
> /home/hp/cvs_areas/combined/cvs_write/libstdc++-v3/libsupc++/eh_aux_runtime.cc:46:
> verify_flow_info
> failed
This is caused by RESX instructions that do not have REGION note but still
can cause EH_EDGE. I missed them as they are shortlived, sorry.
The attached patch solves equivalent problem on PPC and I am going to commit
it as obvious once i386 bootstrap/regtesting complettes.
I apologize for the breakage.
Honza
Wed Mar 6 19:04:05 CET 2002 Jan Hubicka <jh@suse.cz>
* cfgrtl.c (verify_flow_info): Accept RESX as EH edge source.
Index: cfgrtl.c
===================================================================
RCS file: /cvs/gcc/egcs/gcc/cfgrtl.c,v
retrieving revision 1.33
diff -c -3 -p -r1.33 cfgrtl.c
*** cfgrtl.c 2002/03/06 10:17:14 1.33
--- cfgrtl.c 2002/03/06 17:57:39
*************** verify_flow_info ()
*** 1855,1861 ****
edge_checksum[e->dest->index + 2] += (size_t) e;
}
! if (n_eh && !find_reg_note (bb->end, REG_EH_REGION, NULL_RTX))
{
error ("Missing REG_EH_REGION note in the end of bb %i", bb->index);
err = 1;
--- 1855,1862 ----
edge_checksum[e->dest->index + 2] += (size_t) e;
}
! if (n_eh && GET_CODE (PATTERN (bb->end)) != RESX
! && !find_reg_note (bb->end, REG_EH_REGION, NULL_RTX))
{
error ("Missing REG_EH_REGION note in the end of bb %i", bb->index);
err = 1;