------- Comment #8 from hubicka at gcc dot gnu dot org 2006-07-21 21:11 ------- Hmm, the function fi contains 30000 calls, many of called functions contains further calls. Since our metric allows to replace each call by up to 10 instructions and we allow fi to grow twice, we can end up with 600000 instructions in single basic block (in fact we do with roughly 390000 in the inliner metrics). This is still linear growth and the testcase is rather extreme, so I am not sure if I would declare this inliner bug (user has asked for it by declaring stuff inline after all ;)
Without inlining we are not behaving much better (I am just running the compilation and it is at 900MB, so using 1GB for inlined function bodies don't seems to be that unresonable. I will try to play with this a bit. One solution might be to adjust our size estimates to be less aggressive for large functions so the growth in actual number of statements is not 20 fold at most but some smaller constant, but it is rather ugly. Honza -- http://gcc.gnu.org/bugzilla/show_bug.cgi?id=28071