http://gcc.gnu.org/bugzilla/show_bug.cgi?id=47000
--- Comment #8 from H.J. Lu <hjl.tools at gmail dot com> 2010-12-18 16:03:44 UTC --- Can you try -- diff --git a/gcc/tree-inline.c b/gcc/tree-inline.c index af1adf4..dd00de6 100644 --- a/gcc/tree-inline.c +++ b/gcc/tree-inline.c @@ -3342,7 +3342,11 @@ estimate_num_insns (gimple stmt, eni_weights *weights) if (POINTER_TYPE_P (funtype)) funtype = TREE_TYPE (funtype); - if (decl && DECL_BUILT_IN_CLASS (decl) == BUILT_IN_MD) + /* Do not special case builtins where we see the body. + This just confuse inliner. */ + if (!decl || cgraph_node (decl)->analyzed) + ; + else if (decl && DECL_BUILT_IN_CLASS (decl) == BUILT_IN_MD) cost = weights->target_builtin_call_cost; else cost = weights->call_cost; ---