gimple.c (gimple_call_set_cannot_inline): Move from gimple.h.
authorDiego Novillo <dnovillo@google.com>
Tue, 29 Nov 2011 14:16:16 +0000 (09:16 -0500)
committerDiego Novillo <dnovillo@gcc.gnu.org>
Tue, 29 Nov 2011 14:16:16 +0000 (09:16 -0500)
* 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.

From-SVN: r181803

gcc/ChangeLog
gcc/gimple.c
gcc/gimple.h

index 9bacc8e2a7e7a15285cc764fe59ff5ca9881c709..bf5a6a1a6ceb945ef08c063d9721d53dc06be9d4 100644 (file)
@@ -1,3 +1,10 @@
+2011-11-29   Diego Novillo  <dnovillo@google.com>
+
+       * 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.
+
 2011-11-29  Sameera Deshpande  <sameera.deshpande@arm.com>
 
        * config/arm/arm.md (arm_movdi): Update NEG_POOL_RANGE.
index 071c6515b4cae3f008672714d3937b890968bf71..d27e94b218c61ea6c5897bac5f26d5e7c5bc18d5 100644 (file)
@@ -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"
index 8536c70e87e21bdc421cbf90026bb346cb701744..df31bf3c23a3ef6e7114bb0e18431b38fd3bd19b 100644 (file)
@@ -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