ooo-build r11349 - trunk/patches/test



Author: michael
Date: Mon Jan 21 18:11:58 2008
New Revision: 11349
URL: http://svn.gnome.org/viewvc/ooo-build?rev=11349&view=rev

Log:
actually works too now.


Modified:
   trunk/patches/test/gcc-vt-copy-4.diff

Modified: trunk/patches/test/gcc-vt-copy-4.diff
==============================================================================
--- trunk/patches/test/gcc-vt-copy-4.diff	(original)
+++ trunk/patches/test/gcc-vt-copy-4.diff	Mon Jan 21 18:11:58 2008
@@ -12,7 +12,7 @@
  
 diff -u -r -x '*~' -x testsuite -x libjava -x cc-nptl -x build-dir -x '*.orig' -x obj-i586-suse-linux -x texis -x Makeconfig -x version.h -x '*.o' -x '*.1' -x 'Makefile*' -x 'config*' -x libtool -x '*.info' -x '*.tex' pristine-gcc-4.2.1-simple/gcc/cp/class.c gcc-4.2.1-simple/gcc/cp/class.c
 --- pristine-gcc-4.2.1-simple/gcc/cp/class.c	2007-07-05 10:02:39.000000000 +0100
-+++ gcc-4.2.1-simple/gcc/cp/class.c	2008-01-21 18:00:15.000000000 +0000
++++ gcc-4.2.1-simple/gcc/cp/class.c	2008-01-21 18:12:52.000000000 +0000
 @@ -136,7 +136,7 @@
  static tree fixed_type_or_null (tree, int *, int *);
  static tree build_simple_base_path (tree expr, tree binfo);
@@ -48,7 +48,7 @@
  
    /* Check for adjusting covariant return types.  */
    over_return = TREE_TYPE (TREE_TYPE (overrider_target));
-@@ -6355,6 +6359,47 @@
+@@ -6355,6 +6359,49 @@
    return decl;
  }
  
@@ -89,6 +89,8 @@
 +      DECL_NOT_REALLY_EXTERN (d) = 1;
 +      set_linkage_according_to_type (t, d);
 +      pushdecl_top_level_and_finish (d, NULL_TREE);
++
++      vtable_copy_slots = tree_cons (t, inits, vtable_copy_slots);
 +    }
 +
 +  return d;
@@ -96,7 +98,7 @@
  
  /* Returns the binfo for the primary base of BINFO.  If the resulting
     BINFO is a virtual base, and it is inherited elsewhere in the
-@@ -6438,7 +6483,7 @@
+@@ -6438,7 +6485,7 @@
    if (indented)
      fprintf (stream, "\n");
  
@@ -105,7 +107,7 @@
      {
        int indented = 0;
  
-@@ -6637,33 +6682,529 @@
+@@ -6637,33 +6684,531 @@
    dump_thunk (stderr, 0, fn);
  }
  
@@ -146,12 +148,12 @@
 +    if (!dest_binfo || !bitmap)
 +      return chain;
 +
-+    /*    fprintf (stderr, "Copy %s + %d => ",
++    fprintf (stderr, "Copy %s + %d => ",
 +             type_as_string (src_binfo, TFF_PLAIN_IDENTIFIER),
 +             src_offset);
 +    fprintf (stderr, " %s + %d mask 0x%x\n",
 +             type_as_string (dest_binfo, TFF_PLAIN_IDENTIFIER),
-+             dest_offset, bitmap); */
++             dest_offset, bitmap);
 +
 +    elem = tree_cons (NULL_TREE, build_int_cst (NULL_TREE, bitmap), elem);
 +
@@ -166,6 +168,7 @@
 +    return tree_cons (NULL_TREE, init, chain);
 +}
 +
++#if 0
 +/* Register vtreloc for a given type, and return a decl
 +   for this type's vtrelocs */
 +static tree
@@ -231,7 +234,7 @@
 +				      src_offset - i, bitmap, inits); */
 +    }
 +
-+  if (inits)
++  /*  if (inits)
 +    {
 +      tree decl;
 +
@@ -241,12 +244,13 @@
 +
 +      return build_nop (vfunc_ptr_type_node, build_address (decl));
 +    }
-+  else
++    else */
 +    return fold_build1 (NOP_EXPR,
 +			vtable_entry_type,
 +			build_int_cst (build_pointer_type (void_type_node),
 +				       0xf00df00d));
 +}
++#endif
 +
  /* Virtual function table initialization.  */
  
@@ -281,12 +285,12 @@
 +
 +  /* So ... we have a hack here - we append a reference to
 +     the vtable to ourselves, in order to stop us getting GC'd */
-+  if (slot_relocs)
++  /*  if (slot_relocs)
 +    {
 +      tree init = build_vtreloc_decl (t, slot_relocs);
 +      TREE_VALUE (list) = chainon (TREE_VALUE (list),
 +				   build_tree_list (NULL_TREE, init));
-+    }
++				   } */
 +
 +  return TREE_VALUE (list);
 +}
@@ -571,8 +575,8 @@
 +	  elt->index = TREE_PURPOSE (t);
 +	  elt->value = TREE_VALUE (t);
 +	}
-+    }
-+
+     }
+ 
 +  return v;
 +}
 +
@@ -628,8 +632,8 @@
 +	  fprintf (stderr, "Use new inits !\n");
 +	  inits = new_inits;
 +	}
-     }
- 
++    }
++
 +    vec_heap_free (dest_frags);
 +    vec_heap_free (src_frags);
 +  }
@@ -640,7 +644,7 @@
  }
  
  /* Initialize the vtable for BINFO with the INITS.  */
-@@ -6945,6 +7486,7 @@
+@@ -6945,6 +7490,7 @@
    tree inits;
    tree id;
    tree vbase;
@@ -648,7 +652,7 @@
  
    /* See if we've already created this construction vtable group.  */
    id = mangle_ctor_vtbl_for_type (t, binfo);
-@@ -6955,11 +7497,13 @@
+@@ -6955,11 +7501,13 @@
    /* Build a version of VTBL (with the wrong type) for use in
       constructing the addresses of secondary vtables in the
       construction vtable group.  */
@@ -663,7 +667,7 @@
  
    /* Add the vtables for each of our virtual bases using the vbase in T
       binfo.  */
-@@ -6973,7 +7517,7 @@
+@@ -6973,7 +7521,7 @@
  	continue;
        b = copied_binfo (vbase, binfo);
  
@@ -672,7 +676,7 @@
      }
    inits = TREE_VALUE (list);
  
-@@ -6986,6 +7530,11 @@
+@@ -6986,6 +7534,11 @@
    CLASSTYPE_VTABLES (t) = chainon (CLASSTYPE_VTABLES (t), vtbl);
    initialize_artificial_var (vtbl, inits);
    dump_vtable (t, binfo, vtbl);
@@ -684,7 +688,7 @@
  }
  
  /* Add the vtbl initializers for BINFO (and its bases other than
-@@ -7003,7 +7552,8 @@
+@@ -7003,7 +7556,8 @@
  		       tree orig_binfo,
  		       tree rtti_binfo,
  		       tree t,
@@ -694,7 +698,7 @@
  {
    int i;
    tree base_binfo;
-@@ -7026,7 +7576,7 @@
+@@ -7026,7 +7580,7 @@
    TREE_VALUE (inits)
      = chainon (TREE_VALUE (inits),
  	       dfs_accumulate_vtbl_inits (binfo, orig_binfo,
@@ -703,7 +707,7 @@
  
    /* Walk the BINFO and its bases.  We walk in preorder so that as we
       initialize each vtable we can figure out at what offset the
-@@ -7041,7 +7591,7 @@
+@@ -7041,7 +7595,7 @@
        accumulate_vtbl_inits (base_binfo,
  			     BINFO_BASE_BINFO (orig_binfo, i),
  			     rtti_binfo, t,
@@ -712,7 +716,7 @@
      }
  }
  
-@@ -7053,7 +7603,8 @@
+@@ -7053,7 +7607,8 @@
  			   tree orig_binfo,
  			   tree rtti_binfo,
  			   tree t,
@@ -722,7 +726,7 @@
  {
    tree inits = NULL_TREE;
    tree vtbl = NULL_TREE;
-@@ -7120,7 +7671,7 @@
+@@ -7120,7 +7675,7 @@
  
        /* Compute the initializer for this vtable.  */
        inits = build_vtbl_initializer (binfo, orig_binfo, t, rtti_binfo,
@@ -731,7 +735,7 @@
  
        /* Figure out the position to which the VPTR should point.  */
        vtbl = TREE_PURPOSE (l);
-@@ -7184,7 +7735,8 @@
+@@ -7184,7 +7739,8 @@
  			tree orig_binfo,
  			tree t,
  			tree rtti_binfo,
@@ -741,7 +745,7 @@
  {
    tree v, b;
    tree vfun_inits;
-@@ -7192,6 +7744,8 @@
+@@ -7192,6 +7748,8 @@
    unsigned ix;
    tree vbinfo;
    VEC(tree,gc) *vbases;
@@ -750,7 +754,7 @@
  
    /* Initialize VID.  */
    memset (&vid, 0, sizeof (vid));
-@@ -7213,7 +7767,7 @@
+@@ -7213,7 +7771,7 @@
       signature, we share the vcall offsets.  */
    vid.fns = VEC_alloc (tree, gc, 32);
    /* Add the vcall and vbase offset entries.  */
@@ -759,7 +763,7 @@
  
    /* Clear BINFO_VTABLE_PATH_MARKED; it's set by
       build_vbase_offset_vtbl_entries.  */
-@@ -7240,20 +7794,62 @@
+@@ -7240,20 +7798,62 @@
  	}
      }
  
@@ -824,7 +828,7 @@
        fn_original = fn;
        if (DECL_THUNK_P (fn))
  	{
-@@ -7281,7 +7877,10 @@
+@@ -7281,7 +7881,10 @@
  	{
  	  /* We found a defn before a lost primary; go ahead as normal.  */
  	  if (look_for_overrides_here (BINFO_TYPE (b), fn_original))
@@ -836,7 +840,7 @@
  
  	  /* The nearest definition is from a lost primary; clear the
  	     slot.  */
-@@ -7299,6 +7898,9 @@
+@@ -7299,6 +7902,9 @@
  	  delta = BV_DELTA (v);
  	  vcall_index = BV_VCALL_INDEX (v);
  
@@ -846,7 +850,7 @@
  	  gcc_assert (TREE_CODE (delta) == INTEGER_CST);
  	  gcc_assert (TREE_CODE (fn) == FUNCTION_DECL);
  
-@@ -7315,13 +7917,57 @@
+@@ -7315,13 +7921,57 @@
  	    {
  	      if (!integer_zerop (delta) || vcall_index)
  		{
@@ -910,7 +914,7 @@
  	    }
  	}
  
-@@ -7346,8 +7992,71 @@
+@@ -7346,8 +7996,71 @@
  	}
        else
  	vfun_inits = tree_cons (NULL_TREE, init, vfun_inits);
@@ -982,7 +986,7 @@
    /* The initializers for virtual functions were built up in reverse
       order; straighten them out now.  */
    vfun_inits = nreverse (vfun_inits);
-@@ -7363,7 +8072,8 @@
+@@ -7363,7 +8076,8 @@
     offsets in BINFO, which is in the hierarchy dominated by T.  */
  
  static void
@@ -992,7 +996,7 @@
  {
    tree b;
  
-@@ -7371,10 +8081,17 @@
+@@ -7371,10 +8085,17 @@
       corresponding to the primary base class.  */
    b = get_primary_binfo (binfo);
    if (b)
@@ -1119,7 +1123,7 @@
    pop_namespace ();
 diff -u -r -x '*~' -x testsuite -x libjava -x cc-nptl -x build-dir -x '*.orig' -x obj-i586-suse-linux -x texis -x Makeconfig -x version.h -x '*.o' -x '*.1' -x 'Makefile*' -x 'config*' -x libtool -x '*.info' -x '*.tex' pristine-gcc-4.2.1-simple/gcc/cp/decl2.c gcc-4.2.1-simple/gcc/cp/decl2.c
 --- pristine-gcc-4.2.1-simple/gcc/cp/decl2.c	2007-06-28 14:16:12.000000000 +0100
-+++ gcc-4.2.1-simple/gcc/cp/decl2.c	2008-01-18 14:08:10.000000000 +0000
++++ gcc-4.2.1-simple/gcc/cp/decl2.c	2008-01-21 18:14:16.000000000 +0000
 @@ -2910,6 +2910,45 @@
      finish_objects (function_key, priority, body);
  }
@@ -1129,7 +1133,7 @@
 +{
 +  tree k;
 +
-+  if (!getenv ("VT_SHRINK"))
++  if (!getenv ("VT_SHRINK") && !getenv ("INHERITEDINITS"))
 +      return;
 +
 +  fprintf (stderr, "Generate_vtable_copy_slots\n");



[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]