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