https://gcc.gnu.org/bugzilla/show_bug.cgi?id=61782
--- Comment #10 from Daniel Santos <daniel.santos at pobox dot com> --- (In reply to rguent...@suse.de from comment #7) > Heh - I've been there as well and guess what - I invented > __attribute__((flatten)) because of this... > > Note that flatten has the same issues as always_inline with respect > to indirect function calls (or virtual method calls, which are > indirect calls). > > > Portions of these functions (often the majority) I expect to be executed by > > the > > compiler and the result emitted, rather than having the whole of the > > function > > emitted as generated code. As the complexity of such functions grows, the > > cost > > of failing to inline by indirection can be the explosion of the function to > > 10, > > 20 times or more of it's size when all inlining happens. (sorry, that's a > > little off topic). > > Yeah, similar catastrophic things happened in the past with > profile-feedback where instrumentation was applied _before_ all > inlining... (I changed that as well). Hah! That makes you my hero then! I haven't learned the internals of gcc yet, so I still have to rely on others for this fringe stuff. Thanks again everybody.