[autovect] [patch] and aliasing question
Ira Rosen
IRAR@il.ibm.com
Thu May 26 09:58:00 GMT 2005
Diego Novillo <dnovillo@redhat.com> wrote on 25/05/2005 16:38:29:
> On Tue, May 24, 2005 at 09:36:35AM +0300, Ira Rosen wrote:
>
> > 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.
> >
> No, there isn't one. But it should not be hard to implement.
> Something along the lines of:
>
> bool
> is_aliased_with (tree tag, tree sym)
> {
> size_t i;
> varray_type aliases;
>
> if (var_ann (sym)->is_alias_tag)
> {
> aliases = var_ann (tag)->may_aliases;
>
> if (aliases == NULL)
> return false;
>
> for (i = 0; i < VARRAY_ACTIVE_SIZE (aliases); i++)
> if (VARRAY_TREE (aliases, i) == sym)
> return true;
> }
> else
> {
> aliases = var_ann (var)->may_aliases;
>
> if (aliases == NULL)
> return false;
>
> for (i = 0; i < VARRAY_ACTIVE_SIZE (aliases); i++)
> if (VARRAY_TREE (aliases, i) == tag)
> return true;
> }
>
> return false
> }
>
> Coded off the top of my head, so it won't be totally correct.
> Give it two symbols and it will tell you if one is in the alias
> set of the other. In general, normal symbols are in the alias
> sets of tags, but when we have applied grouping heuristics, the
> alias sets are turned inside-out (tags are put in the alias sets
> of symbols).
>
> Is this roughly what you're looking for?
>
Yes, thanks.
Ira
>
> Diego.
More information about the Gcc-patches
mailing list