https://gcc.gnu.org/bugzilla/show_bug.cgi?id=89330
Martin Jambor <jamborm at gcc dot gnu.org> changed: What |Removed |Added ---------------------------------------------------------------------------- Attachment #45730|0 |1 is obsolete| | Attachment #46544|0 |1 is obsolete| | --- Comment #12 from Martin Jambor <jamborm at gcc dot gnu.org> --- Created attachment 46584 --> https://gcc.gnu.org/bugzilla/attachment.cgi?id=46584&action=edit Another WIP patch Thanks for tracking that down, indeed we found that the speculation was undoing inlining decisions which is something that is generally unsupported by the inliner. This patch fixes that and it indeed survives LTO bootstrap of all languages (profiled LTO bootstrap is underway). Unfortunately, it causes the following tests to fail: FAIL: g++.dg/tree-prof/devirt.C scan-tree-dump-times tracer "folding virtual function call to virtual unsigned int mozPersonalDictionary::_ZThn16" 1 FAIL: g++.dg/tree-prof/devirt.C scan-tree-dump-times tracer "folding virtual function call to virtual unsigned int mozPersonalDictionary::AddRef" 1 So far all my attempts to quickly fix this without actually having to understand what is going on in the testcase have failed. I'm afraid I'll have to look deeper into it which will take time, so far I did not even manage to reproduce the problem manually.