tree.h (BINFO_SIZE, [...]): New macros.

* 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
This commit is contained in:
Jason Merrill 1998-05-15 14:56:11 -04:00
parent 92834d7d83
commit bbc0e64172
4 changed files with 19 additions and 2 deletions

View 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

View 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

View 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)

View 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))