This is the mail archive of the
gcc-patches@gcc.gnu.org
mailing list for the GCC project.
Re: [tree-ssa]: PRE updates
- From: Daniel Berlin <dberlin at dberlin dot org>
- To: Andrew MacLeod <amacleod at redhat dot com>
- Cc: Diego Novillo <dnovillo at redhat dot com>,gcc-patches <gcc-patches at gcc dot gnu dot org>
- Date: Wed, 11 Jun 2003 10:33:49 -0400
- Subject: Re: [tree-ssa]: PRE updates
On Wednesday, June 11, 2003, at 10:04 AM, Andrew MacLeod wrote:
On Wed, 2003-06-11 at 09:49, Diego Novillo wrote:
On Wed, 2003-06-11 at 09:27, Andrew MacLeod wrote:
SO the code you are looking at above created thge a_5 PHI stmt... Its
a_5 I am creating the var_ann for, because I just created it out of
thin
air.
But wait, var_ann(a_5) *must* be the same as var_ann(a_4) which is
var_ann(a). SSA_NAMEs do not have annotations, their associated
VAR_DECLs do. So, if you are only creating a new SSA_NAME for a
VAR_DECL that has been referenced already, then that VAR_DECL should
already have an annotation.
So, I still wonder why VAR_DECL 'a' didn't have an annotation. It
should.
Maybe it did, I didnt try dan's test case, just looked at the line
numbner and the line number in my file, and said 'ah ha'. So maybe its
something else. we'll have to actually look closer.
Dan, whats the line in your source code that is failing, and if its in
that hunk, whats the PHi node? the one I just created?
I was about to say.
The place in *my* source it's failing on is:
/* Assign root variable as partition representative for each live on
entry
partition. */
EXECUTE_IF_SET_IN_SBITMAP (live, 0, x,
{
var = root_var (rv, find_root_var (rv, x));
ann = var_ann (var);
/* If these aren't already coalesced... */
if (partition_to_var (map, x) != var)
{
if (ann->out_of_ssa_tag)
{
/* This root variable has already been assigned to another
partition which is not coalesced with this one. */
abort ();
}
if (tree_ssa_dump_file && (tree_ssa_dump_flags & TDF_DETAILS))
{
fprintf (tree_ssa_dump_file, "Must coalesce ");
print_generic_expr (tree_ssa_dump_file,
partition_to_var (map, x),
TDF_SLIM);
fprintf (tree_ssa_dump_file, " with the root variable ");
print_generic_expr (tree_ssa_dump_file, var, TDF_SLIM);
fprintf (tree_ssa_dump_file, ".\n");
}
change_partition_var (map, var, x);
}
});
(inside the macro, so it gets tagged as the end of the macro).
There is only one abort in this code, so i assume that's it.