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