Patrick observed recently that an element of the vector cache could be
arbitrarily large.  Let's only cache relatively small vecs.
gcc/c-family/ChangeLog:
	* c-common.c (release_tree_vector): Only cache vecs smaller than
	16 elements.
 {
   if (vec != NULL)
     {
-      vec->truncate (0);
-      vec_safe_push (tree_vector_cache, vec);
+      if (vec->allocated () >= 16)
+       /* Don't cache vecs that have expanded more than once.  On a p64
+          target, vecs double in alloc size with each power of 2 elements, e.g
+          at 16 elements the alloc increases from 128 to 256 bytes.  */
+       vec_free (vec);
+      else
+       {
+         vec->truncate (0);
+         vec_safe_push (tree_vector_cache, vec);
+       }
     }
 }