Hi
this patch implements the trik for punting if we get too many nested pointers.
This fixes the ada tstcases. Curiously enough I would like to replace safe_push
by quick_push but doing so I get weird error about freeing non-heap object
in the auto_vec desructor...

Bootstraping/regtesting x86_64-linux. Ok if it passes?

Honza

        * alias.c (get_alias_set): Punt after getting 8 nested pointers.

Index: alias.c
===================================================================
--- alias.c     (revision 231439)
+++ alias.c     (working copy)
@@ -990,6 +990,14 @@ get_alias_set (tree t)
           || TREE_CODE (p) == VECTOR_TYPE;
           p = TREE_TYPE (p))
        {
+         /* Ada supports recusive pointers.  Instead of doing recrusion check
+            just give up once the preallocated space of 8 elements is up.
+            In this case just punt to void * alias set.  */
+         if (reference.length () == 8)
+           {
+             p = ptr_type_node;
+             break;
+           }
          if (TREE_CODE (p) == REFERENCE_TYPE)
            /* In LTO we want languages that use references to be compatible
               with languages that use pointers.  */

Reply via email to