This is the mail archive of the
gcc-patches@gcc.gnu.org
mailing list for the GCC project.
Re: dce3 botch with c41203a ACATS test
- From: kenner at vlsi1 dot ultra dot nyu dot edu (Richard Kenner)
- To: dnovillo at redhat dot com
- Cc: gcc-patches at gcc dot gnu dot org
- Date: Fri, 30 Jul 04 12:25:47 EDT
- Subject: Re: dce3 botch with c41203a ACATS test
Given a variable V whose address has been taken, we call get_alias_set
(V). Given a pointer P that has been dereferenced, we create an
artificial variable TMT of type TREE_TYPE (TREE_TYPE (P)) and compute
get_alias_set (TMT). Later on, we compare the alias sets of V and TMT
with alias_sets_conflict_p (inside may_alias_p). If that is true,
then we add V to the may-alias set of TMT.
If the calls to get_alias_set take those flags into account, then I
guess we do.
Yes, that's fine. The key point is that it must be the *outermost*
reference that's passed to get_alias_set. If you pass someting
inside, the code that goes inside has to know about these flags.
No. This part is purely type-based. We don't check individual
references, just the types of the variables and type memory tags.
Then I wonder why this couldn't be reproduced in another language ...
I'm going to do a build with current sources but the loop optimizer
disabled and see where things stand.
I think we'll have problems with the invariant test, but we'll see.