]> git.ipfire.org Git - thirdparty/gcc.git/commitdiff
tree.h (BINFO_SIZE, [...]): New macros.
authorJason Merrill <jason@gcc.gnu.org>
Fri, 15 May 1998 18:56:11 +0000 (14:56 -0400)
committerJason Merrill <jason@gcc.gnu.org>
Fri, 15 May 1998 18:56:11 +0000 (14:56 -0400)
* tree.h (BINFO_SIZE, TYPE_BINFO_SIZE): New macros.
* stor-layout.c (layout_record): Set it.
* toplev.c (rest_of_compilation): Don't defer nested functions.

From-SVN: r19781

gcc/ChangeLog
gcc/stor-layout.c
gcc/toplev.c
gcc/tree.h

index 1cb532e3ce9636cb38f54b6108473f534c9486a1..f4066258538bfe64012f49800ae13f72a29ba262 100644 (file)
@@ -1,3 +1,12 @@
+Fri May 15 18:55:22 1998  Jason Merrill  <jason@yorick.cygnus.com>
+
+       * tree.h (BINFO_SIZE, TYPE_BINFO_SIZE): New macros.
+       * stor-layout.c (layout_record): Set it.
+
+Fri May 15 18:49:30 1998  Mark Mitchell  <mmitchell@usa.net>
+
+       * toplev.c (rest_of_compilation): Don't defer nested functions.
+
 Fri May 15 17:42:52 1998  Bob Manson  <manson@charmed.cygnus.com>
 
        * config/rs6000/rs6000.c (rs6000_stack_info): Align the stack bottom
index 0c1710b530a971a458a23fb0cd77511ae946bb83..c5c4d1cf7330dac4f9acfac3d224c34b236fd3f0 100644 (file)
@@ -549,6 +549,11 @@ layout_record (rec)
   TYPE_ALIGN (rec) = MAX (TYPE_ALIGN (rec), record_align);
 #endif
 
+  /* Record the un-rounded size in the binfo node.  But first we check
+     the size of TYPE_BINFO to make sure that BINFO_SIZE is available.  */
+  if (TYPE_BINFO (rec) && TREE_VEC_LENGTH (TYPE_BINFO (rec)) >= 6)
+    TYPE_BINFO_SIZE (rec) = TYPE_SIZE (rec);
+
 #ifdef ROUND_TYPE_SIZE
   TYPE_SIZE (rec) = ROUND_TYPE_SIZE (rec, TYPE_SIZE (rec), TYPE_ALIGN (rec));
 #else
index 59d81ac9b1eee6b76b05724c94570620092982b0..107b1c4f1caebf8a6937d14787d61a3785b510f5 100644 (file)
@@ -3023,7 +3023,8 @@ rest_of_compilation (decl)
         for those functions that need to be output.  Also defer those
         functions that we are supposed to defer.  We cannot defer
         functions containing nested functions since the nested function
-        data is in our non-saved obstack.  */
+        data is in our non-saved obstack.  We cannot defer nested
+        functions for the same reason.  */
 
       /* If this is a nested inline, remove ADDRESSOF now so we can
         finish compiling ourselves.  Otherwise, wait until EOF.
@@ -3038,6 +3039,7 @@ rest_of_compilation (decl)
        }
 
       if (! current_function_contains_functions
+         && ! decl_function_context (decl)
          && (DECL_DEFER_OUTPUT (decl)
              || (DECL_INLINE (decl)
                  && ((! TREE_PUBLIC (decl) && ! TREE_ADDRESSABLE (decl)
index 7b7e4cf8215e528840ba0b7df41b00b69c3b58b4..9643f5dcaa62f9121a5102759be1326022c82aee 100644 (file)
@@ -899,7 +899,8 @@ struct tree_type
    class pointer" for the given inheritance.  */
 #define BINFO_VPTR_FIELD(NODE) TREE_VEC_ELT ((NODE), 5)
 
-/* The size of a base class subobject of this type.  */
+/* The size of a base class subobject of this type.  Not all frontends
+   currently allocate the space for this field.  */
 #define BINFO_SIZE(NODE) TREE_VEC_ELT ((NODE), 6)
 #define TYPE_BINFO_SIZE(NODE) BINFO_SIZE (TYPE_BINFO (NODE))