This is the mail archive of the gcc-patches@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: -fstrict-aliasing fixes 5/6: make type system independent of flag_strict_aliasing


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.  */


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