[patch]Fix the aliasing on vector replacements to match the original scalar array
Keith Besaw
kbesaw@us.ibm.com
Tue May 10 06:58:00 GMT 2005
When an indirect vector reference replaced an array element reference that
had no
associated type tag then an existing type tag was being used and the array
was added.
For example, an automatic array may have no aliases and therefore no type
tag that
could be used for the indirect vector replacement. Using an existing type
tag with the
automatic array added results in aliases that didn't originally exist. It
also results in
errors out of verify_ssa because the vectorizer was attempting to update
the ssa form
without considering the new aliases.
This patch adds a new routine new_type_alias that can be used to create a
new type tag
for an unaliased declaration and uses the type tag in pointer to vector
declarations used
in indirect vector references that replace array element references.
tested on ppc
OK for mainline?
Keith
Changelog:
2005-05-10 Keith Besaw <kbesaw@us.ibm.com>
* tree-ssa-alias.c (new_type_alias): New procedure to
create a type memory tag for a pointer with a may-alias
set determined from a variable declaration.
* tree-flow.h: export declaration of new_type_alias
* tree-vect-transform (vect_create_data_ref_ptr): Call
new_type_alias when an type memory tag isn't available
for a reference.
(vectorizable_store): Use copy_virtual_operands to update
virtual defs in place (so that loop_version can be called).
Call mark_for_renaming for the virtual defs in case peeling
is done and virtual uses outside the loop need to be updated.
Patch:
-------------- next part --------------
A non-text attachment was scrubbed...
Name: vect.5-9m.diff
Type: application/octet-stream
Size: 4820 bytes
Desc: not available
URL: <http://gcc.gnu.org/pipermail/gcc-patches/attachments/20050510/1c84419a/attachment.obj>
More information about the Gcc-patches
mailing list