> From: David Miller <da...@davemloft.net> > Date: Tue, 06 Nov 2012 13:54:01 -0500 (EST) > > > From: David Miller <da...@davemloft.net> > > Date: Tue, 06 Nov 2012 13:26:53 -0500 (EST) > > > >> From: Jan Hubicka <hubi...@ucw.cz> > >> Date: Tue, 6 Nov 2012 19:21:46 +0100 > >> > >>> The problem here is really that MAX_TIME * MAX_FREQ do not fit into 32bit > >>> integer. Fixed thus. > >>> > >>> * ipa-inline.c (compute_uninlined_call_time): Return gcov_type. > >>> (compute_inlined_call_time): Watch overflows. > >>> (relative_time_benefit): Compute in gcov_type. > >> > >> Thanks Jan, I'll test this right now. > > > > Bootstrap still fails with this change installed: > > > > ../../gcc/gcc/graphite-interchange.c:645:1: internal compiler error: in > > relative_time_benefit, at \ > > ipa-inline.c:785 > > } > > The problem appears to be that inline_summary (edge->caller)->time > is negative. > > #1 0x010828a0 in relative_time_benefit (callee_info=0xf76fcb10, > edge=0xf598a980, edge_time=3861) \ > at ../../gcc/gcc/ipa-inline.c:785 > (gdb) p callee_info->time > $1200 = 3864 > (gdb) p edge->frequency > $1201 = 263 > (gdb) p (callee_info->time * edge->frequency) > $1202 = 1016232 > (gdb) p edge->caller->global.inlined_to > $1203 = (cgraph_node *) 0x0 > (gdb) p edge->caller > $1204 = (cgraph_node *) 0xf589ed10 > (gdb) p p inline_summary (edge->caller)->time > No symbol "p" in current context. > (gdb) p inline_summary (edge->caller)->time > $1205 = -1044761
Hmm, this is obvoiusly wrong. All the caller time computation should be capped to MAX_TIME that should be safe from overflows. I will dig into it tonight or tomorrow. Sorry for the trouble. Honza