http://gcc.gnu.org/bugzilla/show_bug.cgi?id=55660



--- Comment #2 from Richard Biener <rguenth at gcc dot gnu.org> 2012-12-12 
14:18:46 UTC ---

Ok, the issue is we preload char_type_node anyway, as show by



Index: gcc/tree-streamer.c

===================================================================

--- gcc/tree-streamer.c (revision 194444)

+++ gcc/tree-streamer.c (working copy)

@@ -237,6 +237,12 @@ streamer_tree_cache_lookup (struct strea

 static void

 record_common_node (struct streamer_tree_cache_d *cache, tree node)

 {

+  /* Verify we don't recursively pre-load nodes we do not want to preload.  */

+  gcc_assert (node != char_type_node

+             && node != boolean_type_node

+             && node != boolean_true_node

+             && node != boolean_false_node);

+

   /* We have to make sure to fill exactly the same number of

      elements for all frontends.  That can include NULL trees.

      As our hash table can't deal with zero entries we'll simply stream



this is because we pre-load va_list_type_node (which is required, because

we compare that by pointer equality).  But the x86 backend (and possibly

others) do:



static tree

ix86_build_builtin_va_list_abi (enum calling_abi abi)

{

  tree f_gpr, f_fpr, f_ovf, f_sav, record, type_decl;



  /* For i386 we use plain pointer to argument area.  */

  if (!TARGET_64BIT || abi == MS_ABI)

    return build_pointer_type (char_type_node);



oops.

Reply via email to