This is the mail archive of the
gcc-patches@gcc.gnu.org
mailing list for the GCC project.
Re: [Bug tree-optimization/16705] ICE inverify_flow_insensitive_alias_info
- From: Diego Novillo <dnovillo at redhat dot com>
- To: Richard Kenner <kenner at vlsi1 dot ultra dot nyu dot edu>
- Cc: "gcc-patches at gcc dot gnu dot org" <gcc-patches at gcc dot gnu dot org>
- Date: Wed, 28 Jul 2004 10:22:39 -0400
- Subject: Re: [Bug tree-optimization/16705] ICE inverify_flow_insensitive_alias_info
- Organization: Red Hat Canada
- References: <10407281420.AA01666@vlsi1.ultra.nyu.edu>
On Wed, 2004-07-28 at 10:20, Richard Kenner wrote:
> Try this (not really tested):
>
> It fixes that file. It's one of the last to be compiled, so it's probably
> OK now (at least that problem), but I'm running a full bootstrap now.
>
Ironically, that patch went on to cause an ICE in a non-ada file. I'll
commit this version of the patch if I get through a bootstrap cycle.
Just to make sure, Ada bootstraps but doesn't pass all of its testsuite,
right?
Diego.
Index: tree-ssa.c
===================================================================
RCS file: /cvs/gcc/gcc/gcc/tree-ssa.c,v
retrieving revision 2.24
diff -d -c -p -r2.24 tree-ssa.c
*** tree-ssa.c 28 Jul 2004 05:13:08 -0000 2.24
--- tree-ssa.c 28 Jul 2004 14:22:06 -0000
*************** verify_flow_insensitive_alias_info (void
*** 348,375 ****
for (i = 0; i < num_referenced_vars; i++)
{
var_ann_t ann;
var = referenced_var (i);
ann = var_ann (var);
! if (ann->mem_tag_kind == TYPE_TAG || ann->mem_tag_kind == NAME_TAG)
{
! size_t j;
! varray_type may_aliases = ann->may_aliases;
!
! for (j = 0; may_aliases && j < VARRAY_ACTIVE_SIZE (may_aliases); j++)
! {
! tree alias = VARRAY_TREE (may_aliases, j);
! bitmap_set_bit (visited, var_ann (alias)->uid);
! if (!may_be_aliased (alias))
! {
! error ("Non-addressable variable inside an alias set.");
! debug_variable (alias);
! goto err;
! }
}
}
}
--- 348,372 ----
for (i = 0; i < num_referenced_vars; i++)
{
+ size_t j;
var_ann_t ann;
+ varray_type may_aliases;
var = referenced_var (i);
ann = var_ann (var);
+ may_aliases = ann->may_aliases;
! for (j = 0; may_aliases && j < VARRAY_ACTIVE_SIZE (may_aliases); j++)
{
! tree alias = VARRAY_TREE (may_aliases, j);
! bitmap_set_bit (visited, var_ann (alias)->uid);
! if (!may_be_aliased (alias))
! {
! error ("Non-addressable variable inside an alias set.");
! debug_variable (alias);
! goto err;
}
}
}