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
This commit is contained in:
Jan Hubicka 2009-02-06 17:47:39 +01:00 committed by Jan Hubicka
parent 3cfa762bf0
commit e901811a8b
2 changed files with 15 additions and 7 deletions

View 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

View 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;
}