http://gcc.gnu.org/bugzilla/show_bug.cgi?id=55683
--- Comment #3 from Richard Biener <rguenth at gcc dot gnu.org> 2012-12-14 10:25:53 UTC --- 263 #ifdef ENABLE_CHECKING 264 /* Verify that estimated growth match real growth. Allow off-by-one 265 error due to INLINE_SIZE_SCALE roudoff errors. */ 266 gcc_assert (!update_overall_summary || !overall_size 267 || abs (estimated_growth - (new_size - old_size)) <= 1 268 /* FIXME: a hack. Edges with false predicate are accounted 269 wrong, we should remove them from callgraph. */ 270 || predicated); (gdb) p update_overall_summary $1 = true (gdb) p overall_size $2 = (int *) 0x1bb83a0 <_ZL12overall_size> (gdb) p estimated_growth - (new_size - old_size) $3 = -2 (gdb) p predicated $4 = false (gdb) p new_size $5 = 32 (gdb) p old_size $6 = 22 (gdb) p estimated_growth $7 = 8 So this is an off-by-two error. Do multiple INLINE_SIZE_SCALE roundoff errors not accumulate?