Commit 4a371c8d by Jan Hubicka Committed by Jan Hubicka

cgraph.c (cgraph_function_body_availability): Functions declared inline are…

cgraph.c (cgraph_function_body_availability): Functions declared inline are always safe to assume that it is not going to be...


	* cgraph.c (cgraph_function_body_availability): Functions declared
	inline are always safe to assume that it is not going to be replaced.

From-SVN: r145174
parent 6cdb0ee3
2009-03-28 Jan Hubicka <jh@suse.cz>
* cgraph.c (cgraph_function_body_availability): Functions declared
inline are always safe to assume that it is not going to be replaced.
2009-03-28 Richard Guenther <rguenther@suse.de>
PR tree-optimization/38513
......
......@@ -1429,6 +1429,11 @@ cgraph_function_body_availability (struct cgraph_node *node)
avail = AVAIL_LOCAL;
else if (!node->local.externally_visible)
avail = AVAIL_AVAILABLE;
/* Inline functions are safe to be analyzed even if their sybol can
be overwritten at runtime. It is not meaningful to enfore any sane
behaviour on replacing inline function by different body. */
else if (DECL_DECLARED_INLINE_P (node->decl))
avail = AVAIL_AVAILABLE;
/* If the function can be overwritten, return OVERWRITABLE. Take
care at least of two notable extensions - the COMDAT functions
......@@ -1438,15 +1443,9 @@ cgraph_function_body_availability (struct cgraph_node *node)
??? Does the C++ one definition rule allow us to always return
AVAIL_AVAILABLE here? That would be good reason to preserve this
hook Similarly deal with extern inline functions - this is again
necessary to get C++ shared functions having keyed templates
right and in the C extension documentation we probably should
document the requirement of both versions of function (extern
inline and offline) having same side effect characteristics as
good optimization is what this optimization is about. */
else if (!(*targetm.binds_local_p) (node->decl)
&& !DECL_COMDAT (node->decl) && !DECL_EXTERNAL (node->decl))
bit. */
else if (DECL_REPLACEABLE_P (node->decl) && !DECL_EXTERNAL (node->decl))
avail = AVAIL_OVERWRITABLE;
else avail = AVAIL_AVAILABLE;
......
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