This is the mail archive of the
gcc@gcc.gnu.org
mailing list for the GCC project.
Re: Problem with ssa optimization making an uninitialized variable
- From: Diego Novillo <dnovillo at redhat dot com>
- To: Richard Kenner <kenner at vlsi1 dot ultra dot nyu dot edu>
- Cc: "gcc at gcc dot gnu dot org" <gcc at gcc dot gnu dot org>
- Date: Sat, 19 Jun 2004 12:52:01 -0400
- Subject: Re: Problem with ssa optimization making an uninitialized variable
- Organization: Red Hat Canada
- References: <10406191452.AA15149@vlsi1.ultra.nyu.edu>
On Sat, 2004-06-19 at 10:52, Richard Kenner wrote:
> Look at ada/g-socket.adb, line 1083. Note that V4 has its address taken, so
> that reference is not an unitialized reference. But I get a warning about it.
>
> If I look at .t25.phiop1, I see:
>
> <L81>:;
> v4.1099_135 = v4;
> v4.1105_136 = (natural___XDLU_0__2147483647)v4.1099_135;
> opt.size = v4.1105_136;
>
> That looks right.
>
> But in .t26.alias, I have:
>
> <L81>:;
> v4.1099_135 = v4_131;
> v4.1105_136 = (natural___XDLU_0__2147483647)v4.1099_135;
> opt.size = v4.1105_136;
>
> That looks wrong with v4_131 undefined.
>
If you get this, it means that we have been able to remove
TREE_ADDRESSABLE from v4 and now we consider v4 a local variable.
Either compute_may_aliases got it wrong or the FE is not telling the
optimizers something about v4. Or maybe v4 really is uninitialized in
the source code?
The specific function that clears TREE_ADDRESSABLE is
tree-ssa-alias.c:setup_pointers_and_addressables.
Diego.