------- Comment #22 from rguenth at gcc dot gnu dot org 2006-07-19 13:19 ------- I see what the problem is. cgraph_postorder doesn't help us if we're having a cycle like here, so
nnodes = cgraph_postorder (order); for (i = nnodes - 1; i >= 0; i--) { node = order[i]; if (node->analyzed && node->local.inlinable && (node->needed || node->reachable) && node->callers) { if (cgraph_decide_inlining_incrementally (node, true)) ggc_collect (); } } after inlining into foo, which we do first, bar is no longer referenced and is collected. We still reference it from order[0] though. -- http://gcc.gnu.org/bugzilla/show_bug.cgi?id=27882