Commit e901811a by Jan Hubicka Committed by Jan Hubicka

re PR tree-optimization/38844 (deadlock with __attribute__((always_inline)) at -O1 and above)


	PR tree-optimization/38844
	* ipa-inline.c (try_inline): Stop inlining recursion when edge
	is already inlined.

From-SVN: r143985
parent 3cfa762b
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> 2009-02-06 Richard Guenther <rguenther@suse.de>
PR middle-end/38977 PR middle-end/38977
......
...@@ -1303,16 +1303,18 @@ try_inline (struct cgraph_edge *e, enum inlining_mode mode, int depth) ...@@ -1303,16 +1303,18 @@ try_inline (struct cgraph_edge *e, enum inlining_mode mode, int depth)
cgraph_node_name (e->caller)); cgraph_node_name (e->caller));
} }
if (e->inline_failed) if (e->inline_failed)
cgraph_mark_inline (e); {
cgraph_mark_inline (e);
/* In order to fully inline always_inline functions, we need to /* In order to fully inline always_inline functions, we need to
recurse here, since the inlined functions might not be processed by recurse here, since the inlined functions might not be processed by
incremental inlining at all yet. 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) if (mode == INLINE_ALL || always_inline)
cgraph_decide_inlining_incrementally (e->callee, mode, depth + 1); cgraph_decide_inlining_incrementally (e->callee, mode, depth + 1);
}
callee->aux = (void *)(size_t) callee_mode; callee->aux = (void *)(size_t) callee_mode;
return true; return true;
} }
......
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