    	* gimple.c (gimple_call_set_cannot_inline): Move from gimple.h.
     	Update field call_stmt_cannot_inline_p from call graph edge, if
     	needed.
     	* gimple.h (gimple_call_set_cannot_inline): Move to gimple.c.

diff --git a/gcc/gimple.c b/gcc/gimple.c
index 071c651..d27e94b 100644
--- a/gcc/gimple.c
+++ b/gcc/gimple.c
@@ -5558,4 +5558,34 @@ gimple_asm_clobbers_memory_p (const_gimple stmt)
 
   return false;
 }
+
+
+/* Set the inlinable status of GIMPLE_CALL S to INLINABLE_P.  */
+
+void
+gimple_call_set_cannot_inline (gimple s, bool inlinable_p)
+{
+  bool prev_inlinable_p;
+
+  GIMPLE_CHECK (s, GIMPLE_CALL);
+
+  prev_inlinable_p = gimple_call_cannot_inline_p (s);
+
+  if (inlinable_p)
+    s->gsbase.subcode |= GF_CALL_CANNOT_INLINE;
+  else
+    s->gsbase.subcode &= ~GF_CALL_CANNOT_INLINE;
+
+  /* If we have changed the inlinable attribute, and there is a call
+     graph edge going out of this statement, update its inlinable
+     attribute as well.  */
+  if (current_function_decl && prev_inlinable_p != inlinable_p)
+    {
+      struct cgraph_node *n = cgraph_get_node (current_function_decl);
+      struct cgraph_edge *e = cgraph_edge (n, s);
+      if (e)
+	e->call_stmt_cannot_inline_p = inlinable_p;
+    }
+}
+
 #include "gt-gimple.h"
diff --git a/gcc/gimple.h b/gcc/gimple.h
index 8536c70..df31bf3 100644
--- a/gcc/gimple.h
+++ b/gcc/gimple.h
@@ -1035,6 +1035,7 @@ extern bool walk_stmt_load_store_ops (gimple, void *,
 extern bool gimple_ior_addresses_taken (bitmap, gimple);
 extern bool gimple_call_builtin_p (gimple, enum built_in_function);
 extern bool gimple_asm_clobbers_memory_p (const_gimple);
+extern void gimple_call_set_cannot_inline (gimple, bool);
 
 /* In gimplify.c  */
 extern tree create_tmp_var_raw (tree, const char *);
@@ -2343,19 +2344,6 @@ gimple_call_tail_p (gimple s)
 }
 
 
-/* Set the inlinable status of GIMPLE_CALL S to INLINABLE_P.  */
-
-static inline void
-gimple_call_set_cannot_inline (gimple s, bool inlinable_p)
-{
-  GIMPLE_CHECK (s, GIMPLE_CALL);
-  if (inlinable_p)
-    s->gsbase.subcode |= GF_CALL_CANNOT_INLINE;
-  else
-    s->gsbase.subcode &= ~GF_CALL_CANNOT_INLINE;
-}
-
-
 /* Return true if GIMPLE_CALL S cannot be inlined.  */
 
 static inline bool
