http://gcc.gnu.org/bugzilla/show_bug.cgi?id=56493
--- Comment #10 from Andrew Gallagher <andrewjcg at gmail dot com> 2013-04-13 01:44:27 UTC --- I did several attempts at bisecting this. Whenever I (hackily) reverted the change which caused the regression, it just popped up a few hundred revs later. This seems to be gcc assigning new weights to functions, which determines whether the functions is early inlined or not. So I *think* this is really an early inlining v. late inlining issue, and we happened to get lucky with the weights that 4.6 selected (I don't think there is a really effective way for gcc to predict how subsequent optimizations will/can benefit by early inlining). Also, as far as I can see, there is no way to force early inlining (other than switching to macros).