> 
> Ah, yes.  Now I see.
> 
> >  The test I updated that looks for DECL simply assumes
> > that declarations can not be accessed past their end.
> > It would make more sense to use object size machinery here somehow.
> > (i.e. even in fortran we have accesses to mallocated buffers of constant 
> > size).
> > But this probably could be better handled at niter side where we can also 
> > deal with
> > case of real trailing arrays of known size.
> 
> But then I'm not sure that TYPE_SIZE (TREE_TYPE (ref)) == NULL is
> handled correctly.  I suppose you can hope for the array to be the
> one forcing it NULL and thus its TYPE_DOMAIN max val being NULL ...

Hmm, you are probably right. If we can have array with TYPE_DOMAIN != NULL
and sane bounds, but with TYPE_SIZE == NULL, we probably need to punt on NULL
TYPE_SIZE.  I can add it just to be sure.

I am testing

Index: tree.c
===================================================================
--- tree.c      (revision 236557)
+++ tree.c      (working copy)
@@ -13079,7 +13079,8 @@ array_at_struct_end_p (tree ref)
   tree size = NULL;
 
   if (TREE_CODE (ref) == MEM_REF
-      && TREE_CODE (TREE_OPERAND (ref, 0)) == ADDR_EXPR)
+      && TREE_CODE (TREE_OPERAND (ref, 0)) == ADDR_EXPR
+      && TYPE_SIZE (TREE_TYPE (ref)))
     {
       size = TYPE_SIZE (TREE_TYPE (ref));
       ref = TREE_OPERAND (TREE_OPERAND (ref, 0), 0);

Reply via email to