cp-tree.h (note_decl_for_pch): New function.
* cp-tree.h (note_decl_for_pch): New function. * class.c (build_clone): Call note_decl_for_pch. * semantics.c (finish_member_declaration): Likewise. (note_decl_for_pch): New function. From-SVN: r92402
This commit is contained in:
parent
57829bc4f0
commit
5e2f4cd242
@ -1,3 +1,10 @@
|
||||
2004-12-19 Mark Mitchell <mark@codesourcery.com>
|
||||
|
||||
* cp-tree.h (note_decl_for_pch): New function.
|
||||
* class.c (build_clone): Call note_decl_for_pch.
|
||||
* semantics.c (finish_member_declaration): Likewise.
|
||||
(note_decl_for_pch): New function.
|
||||
|
||||
2004-12-17 Steven Bosscher <stevenb@suse.de>
|
||||
|
||||
* init.c (build_zero_init): max_index is the number of
|
||||
|
@ -3786,6 +3786,8 @@ build_clone (tree fn, tree name)
|
||||
DECL_TEMPLATE_INFO (result) = copy_node (DECL_TEMPLATE_INFO (result));
|
||||
DECL_TI_TEMPLATE (result) = clone;
|
||||
}
|
||||
else if (pch_file)
|
||||
note_decl_for_pch (clone);
|
||||
|
||||
return clone;
|
||||
}
|
||||
|
@ -4188,6 +4188,7 @@ extern void check_accessibility_of_qualified_id (tree, tree, tree);
|
||||
extern tree finish_qualified_id_expr (tree, tree, bool, bool);
|
||||
extern void simplify_aggr_init_expr (tree *);
|
||||
extern void finalize_nrv (tree *, tree, tree);
|
||||
extern void note_decl_for_pch (tree);
|
||||
|
||||
/* in tree.c */
|
||||
extern void lang_check_failed (const char *, int,
|
||||
|
@ -2226,6 +2226,40 @@ finish_member_declaration (tree decl)
|
||||
maybe_add_class_template_decl_list (current_class_type, decl,
|
||||
/*friend_p=*/0);
|
||||
}
|
||||
|
||||
if (pch_file)
|
||||
note_decl_for_pch (decl);
|
||||
}
|
||||
|
||||
/* DECL has been declared while we are building a PCH file. Perform
|
||||
actions that we might normally undertake lazily, but which can be
|
||||
performed now so that they do not have to be performed in
|
||||
translation units which include the PCH file. */
|
||||
|
||||
void
|
||||
note_decl_for_pch (tree decl)
|
||||
{
|
||||
gcc_assert (pch_file);
|
||||
|
||||
/* A non-template inline function with external linkage will always
|
||||
be COMDAT. As we must eventually determine the linkage of all
|
||||
functions, and as that causes writes to the data mapped in from
|
||||
the PCH file, it's advantageous to mark the functions at this
|
||||
point. */
|
||||
if (TREE_CODE (decl) == FUNCTION_DECL
|
||||
&& TREE_PUBLIC (decl)
|
||||
&& DECL_DECLARED_INLINE_P (decl)
|
||||
&& !DECL_IMPLICIT_INSTANTIATION (decl))
|
||||
{
|
||||
comdat_linkage (decl);
|
||||
DECL_INTERFACE_KNOWN (decl) = 1;
|
||||
}
|
||||
|
||||
/* There's a good chance that we'll have to mangle names at some
|
||||
point, even if only for emission in debugging information. */
|
||||
if (TREE_CODE (decl) == VAR_DECL
|
||||
|| TREE_CODE (decl) == FUNCTION_DECL)
|
||||
mangle_decl (decl);
|
||||
}
|
||||
|
||||
/* Finish processing a complete template declaration. The PARMS are
|
||||
|
Loading…
Reference in New Issue
Block a user