method.c (implicitly_declare_fn): Don't call defer_fn; abort if it might be needed.
* method.c (implicitly_declare_fn): Don't call defer_fn; abort if it might be needed. * pt.c (mark_decl_instantiated): Only call defer_fn if the function actually needs processing in finish_file. * decl2.c (finish_file): Add check that elements in deferred_fns_used are really needed there. Remove unnecessary test of DECL_SAVED_TREE. From-SVN: r82217
This commit is contained in:
parent
a668adb2f3
commit
bf2774382d
4 changed files with 22 additions and 5 deletions
|
@ -1,3 +1,13 @@
|
|||
2004-05-24 Geoffrey Keating <geoffk@apple.com>
|
||||
|
||||
* method.c (implicitly_declare_fn): Don't call defer_fn; abort
|
||||
if it might be needed.
|
||||
* pt.c (mark_decl_instantiated): Only call defer_fn if
|
||||
the function actually needs processing in finish_file.
|
||||
* decl2.c (finish_file): Add check that elements in
|
||||
deferred_fns_used are really needed there. Remove unnecessary
|
||||
test of DECL_SAVED_TREE.
|
||||
|
||||
2004-05-23 Paolo Bonzini <bonzini@gnu.org>
|
||||
|
||||
* Make-lang.in: No need to specify $(LIBCPP).
|
||||
|
|
|
@ -2749,9 +2749,14 @@ finish_file (void)
|
|||
calling import_export_decl will make an inline template
|
||||
instantiation "static", which will result in errors about
|
||||
the use of undefined functions if there is no body for
|
||||
the function. */
|
||||
the function. In fact, all the functions in this list
|
||||
*should* have a body. */
|
||||
if (!DECL_SAVED_TREE (decl))
|
||||
continue;
|
||||
{
|
||||
if (! DECL_DECLARED_INLINE_P (decl) || ! TREE_USED (decl))
|
||||
abort ();
|
||||
continue;
|
||||
}
|
||||
|
||||
import_export_decl (decl);
|
||||
|
||||
|
@ -2776,7 +2781,6 @@ finish_file (void)
|
|||
gotten around to synthesizing yet.) */
|
||||
if (!DECL_EXTERNAL (decl)
|
||||
&& DECL_NEEDED_P (decl)
|
||||
&& DECL_SAVED_TREE (decl)
|
||||
&& !TREE_ASM_WRITTEN (decl)
|
||||
&& (!flag_unit_at_a_time
|
||||
|| !cgraph_node (decl)->local.finalized))
|
||||
|
|
|
@ -1027,7 +1027,8 @@ implicitly_declare_fn (special_function_kind kind, tree type, bool const_p)
|
|||
DECL_NOT_REALLY_EXTERN (fn) = 1;
|
||||
DECL_DECLARED_INLINE_P (fn) = 1;
|
||||
DECL_INLINE (fn) = 1;
|
||||
defer_fn (fn);
|
||||
if (TREE_USED (fn))
|
||||
abort ();
|
||||
|
||||
return fn;
|
||||
}
|
||||
|
|
|
@ -10161,7 +10161,9 @@ mark_decl_instantiated (tree result, int extern_p)
|
|||
maybe_make_one_only (result);
|
||||
}
|
||||
|
||||
if (TREE_CODE (result) == FUNCTION_DECL)
|
||||
if (TREE_CODE (result) == FUNCTION_DECL
|
||||
&& (DECL_ARTIFICIAL (result)
|
||||
|| (DECL_DECLARED_INLINE_P (result) && TREE_USED (result))))
|
||||
defer_fn (result);
|
||||
}
|
||||
|
||||
|
|
Loading…
Add table
Reference in a new issue