| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162 | diff --git a/gcc/cgraph.c b/gcc/cgraph.cindex fcdc02e..db04afd 100644--- a/gcc/cgraph.c+++ b/gcc/cgraph.c@@ -1169,7 +1169,7 @@ cgraph_function_body_availability (struct cgraph_node *node)      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)+  else if ((DECL_WEAK (node->decl) || !(*targetm.binds_local_p) (node->decl)) 	   && !DECL_COMDAT (node->decl) && !DECL_EXTERNAL (node->decl))     avail = AVAIL_OVERWRITABLE;   else avail = AVAIL_AVAILABLE;@@ -1190,7 +1190,8 @@ cgraph_variable_initializer_availability (struct cgraph_varpool_node *node)   /* If the variable can be overwritten, return OVERWRITABLE.  Takes      care of at least two notable extensions - the COMDAT variables      used to share template instantiations in C++.  */-  if (!(*targetm.binds_local_p) (node->decl) && !DECL_COMDAT (node->decl))+  if ((DECL_WEAK (node->decl) || !(*targetm.binds_local_p) (node->decl))+       && !DECL_COMDAT (node->decl))     return AVAIL_OVERWRITABLE;   return AVAIL_AVAILABLE; }diff --git a/gcc/ipa-inline.c b/gcc/ipa-inline.cindex 84ef830..73d9fcc 100644--- a/gcc/ipa-inline.c+++ b/gcc/ipa-inline.c@@ -300,7 +300,7 @@ cgraph_default_inline_p (struct cgraph_node *n, const char **reason)    if (n->inline_decl)     decl = n->inline_decl;-  if (!DECL_INLINE (decl))+  if (!DECL_INLINE (decl) || DECL_WEAK (decl))     {       if (reason) 	*reason = N_("function not inlinable");diff --git a/gcc/ipa-pure-const.c b/gcc/ipa-pure-const.cindex fdaff50..1bfd577 100644--- a/gcc/ipa-pure-const.c+++ b/gcc/ipa-pure-const.c@@ -512,7 +512,7 @@ analyze_function (struct cgraph_node *fn)   /* If this function does not return normally or does not bind local,      do not touch this unless it has been marked as const or pure by the      front end.  */-  if (TREE_THIS_VOLATILE (decl)+  if (TREE_THIS_VOLATILE (decl) || DECL_WEAK (decl)       || !targetm.binds_local_p (decl))     {       l->pure_const_state = IPA_NEITHER;diff --git a/gcc/tree-inline.c b/gcc/tree-inline.cindex 1c0b79b..5a3ba7e 100644--- a/gcc/tree-inline.c+++ b/gcc/tree-inline.c@@ -1522,6 +1522,8 @@ inlinable_function_p (tree fn)   else if (!DECL_INLINE (fn) && !flag_unit_at_a_time)     inlinable = false; +  else if (DECL_WEAK (fn))+    inlinable = false;   else if (inline_forbidden_p (fn))     {       /* See if we should warn about uninlinable functions.  Previously,
 |