Not really Re: PR java/17689 [4.0 Regression] New testsuite failures indicate signal unwinding is broken

Diego Novillo dnovillo@redhat.com
Tue Sep 28 15:39:00 GMT 2004


Bah.  I knew this was going to be embarrassing.  We call
create_memory_tag from more than one place.  That's why your initial
patch was fixing them.  This patch fixes the following libjava failures
on x86:

         FAIL: Array_3 execution - source compiled test
         FAIL: Array_3 -O3 execution - source compiled test
         FAIL: Invoke_1 execution - source compiled test
         FAIL: Invoke_1 execution - bytecode->native test
         FAIL: Invoke_1 -O3 execution - source compiled test
         FAIL: Invoke_1 -O3 execution - bytecode->native test
         FAIL: pr83 -O3 compilation from bytecode

The reason why I didn't want to go with your patch was because we not
always call create_memory_tag, we re-use tags from other pointers when
we can.  So, we need to make sure we mark tags as volatile when we
associate them with a pointer, not just when we create them.

Sorry for the breakage.  Bootstrapped on x86 and x86-64.


Diego.


	* tree-ssa-alias.c (create_name_tags): If PTR points to a
	volatile type, mark the tag volatile.
	(get_tmt_for): If TAG_TYPE is a volatile type, mark the tag
	volatile.

Index: tree-ssa-alias.c
===================================================================
RCS file: /cvs/gcc/gcc/gcc/tree-ssa-alias.c,v
retrieving revision 2.44
diff -d -c -p -r2.44 tree-ssa-alias.c
*** tree-ssa-alias.c	26 Sep 2004 19:53:13 -0000	2.44
--- tree-ssa-alias.c	28 Sep 2004 13:35:02 -0000
*************** create_name_tags (struct alias_info *ai)
*** 809,814 ****
--- 809,817 ----
  	  continue;
  	}
  
+       TREE_THIS_VOLATILE (pi->name_mem_tag)
+ 	  |= TREE_THIS_VOLATILE (TREE_TYPE (TREE_TYPE (ptr)));
+ 
        /* Mark the new name tag for renaming.  */
        bitmap_set_bit (vars_to_rename, var_ann (pi->name_mem_tag)->uid);
      }
*************** get_tmt_for (tree ptr, struct alias_info
*** 2138,2144 ****
      }
  
    /* If the pointed-to type is volatile, so is the tag.  */
!   TREE_THIS_VOLATILE (tag) = TREE_THIS_VOLATILE (tag_type);
  
    /* Make sure that the type tag has the same alias set as the
       pointed-to type.  */
--- 2141,2147 ----
      }
  
    /* If the pointed-to type is volatile, so is the tag.  */
!   TREE_THIS_VOLATILE (tag) |= TREE_THIS_VOLATILE (tag_type);
  
    /* Make sure that the type tag has the same alias set as the
       pointed-to type.  */




More information about the Gcc-patches mailing list