This is the mail archive of the
gcc-patches@gcc.gnu.org
mailing list for the GCC project.
Re: Not really Re: PR java/17689 [4.0 Regression] New testsuitefailures indicate signal unwinding is broken
- From: Diego Novillo <dnovillo at redhat dot com>
- To: Andrew Haley <aph at redhat dot com>
- Cc: "java-patches at gcc dot gnu dot org" <java-patches at gcc dot gnu dot org>, "gcc-patches at gcc dot gnu dot org" <gcc-patches at gcc dot gnu dot org>
- Date: Tue, 28 Sep 2004 09:45:12 -0400
- Subject: Re: Not really Re: PR java/17689 [4.0 Regression] New testsuitefailures indicate signal unwinding is broken
- Organization: Red Hat Canada
- References: <16728.9702.891886.656600@cuddles.cambridge.redhat.com> <1096296575.24553.115.camel@localhost.localdomain> <16728.15880.101039.46049@cuddles.cambridge.redhat.com> <1096314468.5016.46.camel@localhost.localdomain> <16729.10757.993828.384469@cuddles.cambridge.redhat.com> <1096368891.11232.59.camel@localhost.localdomain> <16729.21930.730846.7366@cuddles.cambridge.redhat.com> <16729.22074.152180.539806@cuddles.cambridge.redhat.com>
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. */