diff options
Diffstat (limited to 'gcc')
-rw-r--r-- | gcc/ChangeLog | 6 | ||||
-rw-r--r-- | gcc/ipa-inline.c | 16 |
2 files changed, 15 insertions, 7 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 849f101..f7ed966 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -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 diff --git a/gcc/ipa-inline.c b/gcc/ipa-inline.c index 0656d79..e6b956c 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; } |