https://gcc.gnu.org/bugzilla/show_bug.cgi?id=114703
--- Comment #3 from Jan Hubicka <hubicka at ucw dot cz> --- > Yep, 'new' memory escapes. Yep, this is blocking a lot of propagation in common C++ code. Here it may help to do speculative devirtualization during IPA stage that will let the late optimization to get rid of the speculation (since after inlning we will know that the virtual call does not overwrite virtual table pointer). This is technically not too hard to add. We can optimistically rule out (some) may aliases while walking the alias oracle. I will take a look next stage1.