Commit 5e2f4cd2 by Mark Mitchell Committed by Mark Mitchell

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
parent 57829bc4
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
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment