mirror of git://gcc.gnu.org/git/gcc.git
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:
parent
3cfa762bf0
commit
e901811a8b
|
@ -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>
|
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)
|
||||||
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;
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue