GCC 4.0 RC2 Available

James E Wilson wilson@specifixinc.com
Tue Apr 19 07:53:00 GMT 2005


commented onMark Mitchell wrote:
> The changes that I anticipate between now and the final release are
> (a) documentation changes, (b) a patch for 20991, and (c) a possible
> patch for 20973.  Other than that, I will only consider patches that
> fix egregious problems, like a fail to bootstrap on a primary
> platform.

I put comments in PR 20973.  It seems reasonable for a reload patch, 
i.e. only moderately dangerously unsafe as opposed to severely 
dangerously unsafe.

However, there is a bigger issue for Itanium.  The example has an 
uninitialized register read.  On Itanium, this can result in a later NaT 
consumption fault if that uninitialized register happens to have the NaT 
bit set.  That will result in a core dump.  This problem will likely be 
extremely rare, as gcc doesn't have speculation support yet, and hence 
can't create NaT bits, but there are a few hand written glibc routines 
that use them.  I think this is a serious problem for Itanium.

This seems to be an unfortunate side effect of tree-ssa code to 
decompose structure references.  The old rtl code (e.g. 
store_constructor) was careful to always initialize a structure to zero 
if it was in a register, so that we did not have any uninitialized 
register reads.  The new tree-ssa code makes no attempt to do this.  If 
this problem is fixed, then we should not need any reload patch.

This can perhaps be fixed in flow by adding code to initialize registers 
that are used before they are set.  We already have some code for this 
in initialize_uninitialized_subregs, but it doesn't handle the general 
case.  Of course, trying to fix this at such a late stage might be just 
as risky as the reload patch.  Tis a shame I didn't notice this earlier.
-- 
Jim Wilson, GNU Tools Support, http://www.SpecifixInc.com



More information about the Gcc mailing list