------- Additional Comments From dnovillo at gcc dot gnu dot org 2005-07-26 16:19 -------
Testing patch. The shortcut we were taking in may_alias_p is invalid even with strict aliasing. --- tree-ssa-alias.c 25 Jul 2005 12:04:50 -0000 2.107 +++ tree-ssa-alias.c 26 Jul 2005 16:16:34 -0000 @@ -1511,23 +1511,6 @@ may_alias_p (tree ptr, HOST_WIDE_INT mem alias_stats.tbaa_queries++; - /* If VAR is a pointer with the same alias set as PTR, then dereferencing - PTR can't possibly affect VAR. Note, that we are specifically testing - for PTR's alias set here, not its pointed-to type. We also can't - do this check with relaxed aliasing enabled. */ - if (POINTER_TYPE_P (TREE_TYPE (var)) - && var_alias_set != 0 - && mem_alias_set != 0) - { - HOST_WIDE_INT ptr_alias_set = get_alias_set (ptr); - if (ptr_alias_set == var_alias_set) - { - alias_stats.alias_noalias++; - alias_stats.tbaa_resolved++; - return false; - } - } - /* If the alias sets don't conflict then MEM cannot alias VAR. */ if (!alias_sets_conflict_p (mem_alias_set, var_alias_set)) { -- http://gcc.gnu.org/bugzilla/show_bug.cgi?id=22591