> Anyway, as regards *which* specific functions are not inlined, I would > say all the functions which break the ABI test as newly exported symbols > should be checked, like the above, 'std::ios_base::getloc() const'. I'm > attaching below a complete list, from my libstdc++.log, but I would > guess should be easy to reproduce with a GCC tree post your last changes...
Hi, from quick glance at the symbols it seems that the functions are not that small they would be considered code size win after inlining, so it might be that inliner just no longer inline them into cold sections callers. There is one change concerning COMDAT I made in my patch. Inliner when doing size estimates knows that inlining all calls might make out of line function unnecesary. This logic was working for COMDAT functions too (they do disappear from current unit) while after the patch COMDAT functions are assumed to stay in the unit size after inlining. I did this because this logic has an effect that all COMDAT functions that are called just once in current compilation unit will get inlined (since producing inline copy while removing offline copy always reduce size) regardless their size that might lead to uncontrolled program size growth. I will see if it reproduces on my setup and if it disappears after this logic is reverted to original behaviour. Lets also see how C++ benchmarks will change in behaviour today. Honza