static tree build_base_field PARAMS ((tree, tree, int *, int *, unsigned int *));
static tree build_base_fields PARAMS ((tree, int *));
static tree build_vbase_pointer_fields PARAMS ((tree, int *));
-static tree build_vtbl_or_vbase_field PARAMS ((tree, tree, tree, tree, int *));
+static tree build_vtbl_or_vbase_field PARAMS ((tree, tree, tree, tree, tree,
+ int *));
static void check_methods PARAMS ((tree));
static void remove_zero_width_bit_fields PARAMS ((tree));
static void check_bases PARAMS ((tree, int *, int *, int *));
get_identifier (VTABLE_BASE),
build_pointer_type (basetype),
rec,
+ basetype,
empty_p);
BINFO_VPTR_FIELD (base_binfo) = decl;
TREE_CHAIN (decl) = vbase_decls;
/* Return a FIELD_DECL for a pointer-to-virtual-table or
pointer-to-virtual-base. The NAME, ASSEMBLER_NAME, and TYPE of the
field are as indicated. The CLASS_TYPE in which this field occurs
- is also indicated. *EMPTY_P is set to a non-zero value by this
+ is also indicated. FCONTEXT is the type that is needed for the debug
+ info output routines. *EMPTY_P is set to a non-zero value by this
function to indicate that a class containing this field is
non-empty. */
static tree
-build_vtbl_or_vbase_field (name, assembler_name, type, class_type,
+build_vtbl_or_vbase_field (name, assembler_name, type, class_type, fcontext,
empty_p)
tree name;
tree assembler_name;
tree type;
tree class_type;
+ tree fcontext;
int *empty_p;
{
tree field;
DECL_ARTIFICIAL (field) = 1;
DECL_FIELD_CONTEXT (field) = class_type;
DECL_CLASS_CONTEXT (field) = class_type;
- DECL_FCONTEXT (field) = class_type;
+ DECL_FCONTEXT (field) = fcontext;
DECL_SAVED_INSNS (field) = 0;
DECL_FIELD_SIZE (field) = 0;
DECL_ALIGN (field) = TYPE_ALIGN (type);
get_identifier (VFIELD_BASE),
vtbl_ptr_type_node,
t,
+ t,
empty_p);
/* Add the new field to the list of fields in this class. */