Commit 2e118f3c by Jan Hubicka Committed by Jan Hubicka

decl2.c (decl_needed_p): When not optimizing, do not consider external decls as needed.


	* decl2.c (decl_needed_p): When not optimizing, do not consider external
	decls as needed.

From-SVN: r218769
parent daca16d1
2014-12-15 Jan Hubicka <hubicka@ucw.cz>
* decl2.c (decl_needed_p): When not optimizing, do not consider external
decls as needed.
2014-12-15 Jason Merrill <jason@redhat.com>
PR c++/64297
......
......@@ -1996,19 +1996,30 @@ decl_needed_p (tree decl)
COMDAT until that point. */
gcc_assert (at_eof);
/* All entities with external linkage that are not COMDAT should be
/* All entities with external linkage that are not COMDAT/EXTERN should be
emitted; they may be referred to from other object files. */
if (TREE_PUBLIC (decl) && !DECL_COMDAT (decl))
return true;
/* If this entity was used, let the back end see it; it will decide
whether or not to emit it into the object file. */
if (TREE_USED (decl))
if (TREE_PUBLIC (decl) && !DECL_COMDAT (decl) && !DECL_REALLY_EXTERN (decl))
return true;
/* Functions marked "dllexport" must be emitted so that they are
visible to other DLLs. */
if (flag_keep_inline_dllexport
&& lookup_attribute ("dllexport", DECL_ATTRIBUTES (decl)))
return true;
/* When not optimizing, do not bother to produce definitions for extern
symbols. */
if (DECL_REALLY_EXTERN (decl)
&& ((TREE_CODE (decl) != FUNCTION_DECL
&& !optimize)
|| (TREE_CODE (decl) == FUNCTION_DECL
&& !opt_for_fn (decl, optimize)))
&& !lookup_attribute ("always_inline", decl))
return false;
/* If this entity was used, let the back end see it; it will decide
whether or not to emit it into the object file. */
if (TREE_USED (decl))
return true;
/* Virtual functions might be needed for devirtualization. */
if (flag_devirtualize
&& TREE_CODE (decl) == FUNCTION_DECL
......
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