On Fri, 2005-11-04 at 10:17 -0500, Diego Novillo wrote:
> On Friday 04 November 2005 10:07, Richard Kenner wrote:
> >     #if defined ENABLE_CHECKING
> >             gcc_assert (handled_component_p (ref))
> >     #endif
> >
> > If the comment says it has to be an ARRAY_REF, why not just check for
> > that?
> 
> The comment is out of sync with the code.  It's used in code that may be 
> sending an arbitrary aggregate.
> 
> Given that Dan asked to remove the call from tree-ssa-structalias.c, then 
> we can take advantage and tighten the two predicates more.
> 
> In ref_contains_indirect_ref:
>       Rename to array_ref_contains_indirect_ref
>       Add gcc_assert (TREE_CODE (ref) == ARRAY_REF) at the start.

This would be fine.
The use in tree-ssa-loop-niter.c is really trying to skip out on
inferring loop bounds from pointer to structure accesses in the case of
things like:


struct a
{
  char foo[1];
};


struct a *b = malloc (sizeof (struct a) + 100);
b->foo = "I like candy!"


Since we have to keep this working:)

Thus, it should *always* be handed an ARRAY_REF.


Reply via email to