This is the mail archive of the 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]

[patch]Fix the aliasing on vector replacements to match the original scalararray

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?



      2005-05-10  Keith Besaw  <>

      * 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.


Attachment: vect.5-9m.diff
Description: Binary data

Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]