re PR tree-optimization/38844 (deadlock with __attribute__((always_inline)) at -O1...
authorJan Hubicka <jh@suse.cz>
Fri, 6 Feb 2009 16:47:39 +0000 (17:47 +0100)
committerJan Hubicka <hubicka@gcc.gnu.org>
Fri, 6 Feb 2009 16:47:39 +0000 (16:47 +0000)
PR tree-optimization/38844
* ipa-inline.c (try_inline): Stop inlining recursion when edge
is already inlined.

From-SVN: r143985

gcc/ChangeLog
gcc/ipa-inline.c

index 849f101d6e41795c52bcb42bd38b52fedb33c18b..f7ed966138f15490faaabedcdd60dce5a6012c83 100644 (file)
@@ -1,3 +1,9 @@
+2009-02-06  Jan Hubicka  <jh@suse.cz>
+
+       PR tree-optimization/38844
+       * ipa-inline.c (try_inline): Stop inlining recursion when edge
+       is already inlined.
+
 2009-02-06  Richard Guenther  <rguenther@suse.de>
 
        PR middle-end/38977
index 0656d798bc21c03936ac87b87b31f110e736a8c9..e6b956c8106df33a000e4ddc60655a68e15e5e2c 100644 (file)
@@ -1303,16 +1303,18 @@ try_inline (struct cgraph_edge *e, enum inlining_mode mode, int depth)
               cgraph_node_name (e->caller));
     }
   if (e->inline_failed)
-    cgraph_mark_inline (e);
+    {
+      cgraph_mark_inline (e);
 
-  /* In order to fully inline always_inline functions, we need to
-     recurse here, since the inlined functions might not be processed by
-     incremental inlining at all yet.  
+      /* In order to fully inline always_inline functions, we need to
+        recurse here, since the inlined functions might not be processed by
+        incremental inlining at all yet.  
 
-     Also flattening needs to be done recursively.  */
+        Also flattening needs to be done recursively.  */
 
-  if (mode == INLINE_ALL || always_inline)
-    cgraph_decide_inlining_incrementally (e->callee, mode, depth + 1);
+      if (mode == INLINE_ALL || always_inline)
+       cgraph_decide_inlining_incrementally (e->callee, mode, depth + 1);
+    }
   callee->aux = (void *)(size_t) callee_mode;
   return true;
 }