This is the mail archive of the
gcc-bugs@gcc.gnu.org
mailing list for the GCC project.
[Bug other/29512] compile time hog / deadloop.
- From: "rguenth at gcc dot gnu dot org" <gcc-bugzilla at gcc dot gnu dot org>
- To: gcc-bugs at gcc dot gnu dot org
- Date: 19 Oct 2006 14:31:51 -0000
- Subject: [Bug other/29512] compile time hog / deadloop.
- References: <bug-29512-7667@http.gcc.gnu.org/bugzilla/>
- Reply-to: gcc-bugzilla at gcc dot gnu dot org
------- 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