[Bug tree-optimization/16705] ICE in verify_flow_insensitive_alias_info
Diego Novillo
dnovillo@redhat.com
Wed Jul 28 18:36:00 GMT 2004
On Wed, 2004-07-28 at 01:20, Richard Kenner wrote:
> stage1/xgcc -Bstage1/ -B/usr/local/x86_64-unknown-linux-gnu/bin/ -c -g -O2
> -gnatpg -gnata -I- -I. -Iada -I/gcc/gcc/gcc-head/gcc/ada /gcc/gcc/gcc-head/gcc/a
> da/sprint.adb -o ada/sprint.o
> /gcc/gcc/gcc-head/gcc/ada/sprint.adb: In function `Sprint.Sprint_Node_Actual':
> /gcc/gcc/gcc-head/gcc/ada/sprint.adb:615: error: Addressable variable that is an
> alias tag but is not in any alias set.
> .GLOBAL_VAR, UID 1581, is an alias tag, is static, call clobbered, default def:
> .GLOBAL_VAR_396
> +===========================GNAT BUG DETECTED==============================+
> | 5.03h (20040725) (x86_64-unknown-linux-gnu) GCC error: |
> | verify_flow_insensitive_alias_info failed.
>
> Peculiar that it would move like that.
>
I *think* this ia a bug in the verifier. I could trigger it on a C-only
bootstrap by forcing the creation of .GLOBAL_VAR always (--params
global-var-threshold).
For some reason, I don't seem to get too far when I enable Ada:
stage1/xgcc -Bstage1/ -B/home/dnovillo/gcc.ada/native/i686-pc-linux-gnu/bin/ -c -g -O2 -gnatpg -gnata -I- -I. -Iada -I/home/dnovillo/gcc.ada/src/gcc/ada /home/dnovillo/gcc.ada/src/gcc/ada/ada.ads -o ada/ada.o
xgcc: installation problem, cannot exec 'gnat1': No such file or directory
make[1]: *** [ada/ada.o] Error 1
make[1]: Leaving directory `/home/dnovillo/notnfs/BLD-gcc.ada-native.topo/gcc'
make: *** [stage2_build] Error 2
I've configured with '--enable-languages=ada,c'. I do have a host ada
compiler as well. What else should I check?
Try this (not really tested):
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 13:18:23 -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;
}
}
}
*************** verify_flow_insensitive_alias_info (void
*** 381,389 ****
var = referenced_var (i);
ann = var_ann (var);
! if (ann->mem_tag_kind == NOT_A_TAG
! && ann->is_alias_tag
! && !bitmap_bit_p (visited, ann->uid))
{
error ("Addressable variable that is an alias tag but is not in any alias set.");
goto err;
--- 378,384 ----
var = referenced_var (i);
ann = var_ann (var);
! if (ann->is_alias_tag && !bitmap_bit_p (visited, ann->uid))
{
error ("Addressable variable that is an alias tag but is not in any alias set.");
goto err;
More information about the Gcc-patches
mailing list