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

Re: [lno] "no flow-sensitive alias info" warning to vectorizer


Hello,

> > would not there be some simpler possibility?  I do not really change
> > anything that should concern aliasing, I just change the way the address
> > of the memory reference is computed (in strength reduction).
> > 
> Show me where?  If you're just copying tags from one pointer to the
> other, then I agree, it's not necessary.

currently I do this (in tree-ssa-loop-ivopts.c:rewrite_use_address).

  if (TREE_CODE (op) == SSA_NAME)
    {
      /* We need to add a memory tag for the variable.  But we do not want
         to add it to the temporary used for the computations, since this leads
         to problems in redundancy elimination when there are common parts
         in two computations refering to the different arrays.  So we rewrite
         the base variable of the ssa name to a new temporary.  */
      tmp_var = create_tmp_var (TREE_TYPE (op), "ruatmp");
      add_referenced_tmp_var (tmp_var);
      SSA_NAME_VAR (op) = tmp_var;

      var = get_base_decl (*use->op_p);
      if (var_ann (var)->type_mem_tag)
        var = var_ann (var)->type_mem_tag;
      var_ann (tmp_var)->type_mem_tag = var;

      name = get_base_var (*use->op_p);
      if (name && TREE_CODE (name) == SSA_NAME)
        {
          ssa_name_ann_t ann = ssa_name_ann (name), new_ann;

          if (ann && ann->name_mem_tag)
            {
              new_ann = get_ssa_name_ann (op);
              new_ann->name_mem_tag = ann->name_mem_tag;
            }
        }
    }

Zdenek


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