------- Comment #3 from rguenth at gcc dot gnu dot org 2006-10-19 14:31 ------- I can confirm this. We are gimplifying some large tree(s) like
#150 0x00000000005257ff in gimplify_stmt (stmt_p=0x7fffcff543e8) at /space//rguenther/src/svn/gcc-4_1-branch/gcc/gimplify.c:4028 4028 gimplify_expr (stmt_p, NULL, NULL, is_gimple_stmt, fb_none); (gdb) call debug_generic_expr (*stmt_p) operator= (&TARGET_EXPR <D.120775, operator| (D.121290, (struct parser<boost::spirit::alternative<boost::spirit::alternative ....... [return slot optimization]>, &((struct definition<boost::spirit::scanner<const char*, boost::spirit::scanner_policies<boost::spirit::skipper_iteration_policy<boost::spirit::iteration_policy>, boost::spirit::match_policy, boost::spirit::action_policy> > >D.98251 *) thisD.100424)->hex_digit_ntD.101683) and thus spend a lot of time in #60 0x0000000000524020 in gimplify_modify_expr_rhs (expr_p=0x7fffcff50c60, from_p=0x2ac5e2795090, to_p=0x2ac5e2795088, pre_p=0x7fffcff542e8, post_p=0x7fffcff50f40, want_value=0 '\0') at /space//rguenther/src/svn/gcc-4_1-branch/gcc/gimplify.c:3183 3183 if (!CALL_EXPR_RETURN_SLOT_OPT (*from_p) which in turn dispatches to i386.c:classify_argument at some point which is a nice (*cough*) O(n^m) with m >= 2 complexity function. And for some reason we won't return from frame #55, which is the topmost classify_argument frame: #57 0x00000000008ed590 in ix86_return_in_memory (type=0x2ac5dfd980b0) at /space//rguenther/src/svn/gcc-4_1-branch/gcc/config/i386/i386.c:3531 3531 return !examine_argument (mode, type, 1, &needed_intregs, &needed_sseregs); (gdb) down #56 0x00000000008ebf29 in examine_argument (mode=BLKmode, type=0x2ac5dfd980b0, in_return=1, int_nregs=0x7fffcff509c4, sse_nregs=0x7fffcff509c0) at /space//rguenther/src/svn/gcc-4_1-branch/gcc/config/i386/i386.c:2882 2882 int n = classify_argument (mode, type, class, 0); (gdb) #55 0x00000000008eb47a in classify_argument (mode=BLKmode, type=0x2ac5dfd980b0, classes=0x7fffcff50980, bit_offset=0) at /space//rguenther/src/svn/gcc-4_1-branch/gcc/config/i386/i386.c:2637 2637 num = classify_argument (TYPE_MODE (type), (gdb) finish Run till exit from #55 0x00000000008eb47a in classify_argument (mode=BLKmode, type=0x2ac5dfd980b0, classes=0x7fffcff50980, bit_offset=0) at /space//rguenther/src/svn/gcc-4_1-branch/gcc/config/i386/i386.c:2637 (it's probably not really dead here, just taking a long time to complete, as finishing earlier frames takes more and more time) -- rguenth at gcc dot gnu dot org changed: What |Removed |Added ---------------------------------------------------------------------------- CC| |hubicka at gcc dot gnu dot | |org http://gcc.gnu.org/bugzilla/show_bug.cgi?id=29512