This is the mail archive of the
gcc@gcc.gnu.org
mailing list for the GCC project.
Re: Bootstrap failure on Linux/i686 in Ada
- From: Jeffrey A Law <law at redhat dot com>
- To: Laurent GUERBY <laurent at guerby dot net>
- Cc: Rainer Emrich <r dot emrich at de dot tecosim dot com>, gcc at gcc dot gnu dot org
- Date: Tue, 03 Jan 2006 13:43:35 -0700
- Subject: Re: Bootstrap failure on Linux/i686 in Ada
- References: <43B94C46.4090805@de.tecosim.com> <1136226716.20435.214.camel@pc.site>
- Reply-to: law at redhat dot com
On Mon, 2006-01-02 at 19:31 +0100, Laurent GUERBY wrote:
> Hi Rainer, this is PR24994:
>
> http://gcc.gnu.org/bugzilla/show_bug.cgi?id=24994
>
> And is under investigation:
>
> http://gcc.gnu.org/ml/gcc-patches/2005-12/msg01756.html
>
So, here's what appears to be happening.
1. A statement is recorded into the EH throw
statement hash table.
2. SRA replaces the statement in the IL, but does
not remove the statement from the EH throw
statement table. This is our bug.
3. remove_cfg_annotations removes annotations from
all the statements in the IL, but note that it
does not walk the EH throw table (a reasonable thing
since statements in the EH table ought to appear
in the IL).
4. Eventually the RTL optimizers run and remove the
block referenced by the bogus statement in the
EH hash table.
5. Even later GC runs, walks the EH throw statement
table, the bogus statement within the table, then
the bogus statement's annotation, then the block
in the annotation, which was expunged and unlinked
leading to dereferencing a null pointer.
It'll take until tomorrow or so before I can get all the
bootstrapping and regression testing done, but I'm pretty
sure all we need to do is add
remove_stmt_from_eh_region (orig_stmt);
into the appropriate location within bsi_replace.
jeff