[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