This is the mail archive of the gcc-patches@gcc.gnu.org mailing list for the GCC project.
| Index Nav: | [Date Index] [Subject Index] [Author Index] [Thread Index] | |
|---|---|---|
| Message Nav: | [Date Prev] [Date Next] | [Thread Prev] [Thread Next] |
| Other format: | [Raw text] | |
Hi,
This patch fixes parameters of get_alias_set in base_address_differ_p and
base_object_differ_p. Instead of passing SSA_NAME, which is incorrect, we
now pass an INDIRECT_REF itself. As a result tests vect-100.c, vect-77.c,
vect-78.c, vect-96.c, no_version/vect-75.c, no_version/vect-76.c,
no_version/vect-77.c, no_version/vect-78.c, no_version/vect-96.c and
no_version/pr20122.c don't get vectorized, because the alias analyzer can't
determine that a pointer passed to the function as a parameter and a
local array don't alias (by the way, is that an expected behavior?), and
(vect-100.c) that a pointer to struct and a global array don't alias.
As a followup patch I'd like to check the type memory tag directly and not
call get_alias_set at all, as suggested by Diego. Is there an API that gets
a type tag (or a symbol) and a declaration and determines whether a
declaration is in may alias set of the tag, or do I have to go over the
may-aliases of the tag myself? I also need a similar API to decide if two
pointers alias.
Bootstrapped and tested on ppc-darwin. Committed to autovect branch.
Thanks,
Ira
ChangeLog entry:
* tree-data-ref.c (base_object_differ_p): Fix parameters of
get_alias_set.
(base_addr_differ_p): Likewise.
Patch:
(See attached file: diff.alias)Attachment:
diff.alias
Description: Binary data
| Index Nav: | [Date Index] [Subject Index] [Author Index] [Thread Index] | |
|---|---|---|
| Message Nav: | [Date Prev] [Date Next] | [Thread Prev] [Thread Next] |