From e901811a8be42e9c292324550c84be46d4f27e4c Mon Sep 17 00:00:00 2001 From: Jan Hubicka Date: Fri, 6 Feb 2009 17:47:39 +0100 Subject: [PATCH] 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 --- gcc/ChangeLog | 6 ++++++ gcc/ipa-inline.c | 16 +++++++++------- 2 files changed, 15 insertions(+), 7 deletions(-) diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 849f101d6e4..f7ed966138f 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,9 @@ +2009-02-06 Jan Hubicka + + PR tree-optimization/38844 + * ipa-inline.c (try_inline): Stop inlining recursion when edge + is already inlined. + 2009-02-06 Richard Guenther PR middle-end/38977 diff --git a/gcc/ipa-inline.c b/gcc/ipa-inline.c index 0656d798bc2..e6b956c8106 100644 --- a/gcc/ipa-inline.c +++ b/gcc/ipa-inline.c @@ -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; } -- 2.30.2