https://gcc.gnu.org/bugzilla/show_bug.cgi?id=98338
--- Comment #12 from Jan Hubicka <hubicka at ucw dot cz> --- > > Honza, any ideas on this? > The comment on assert says > /* In LTO mode we may have speculative edges set. */ > gcc_assert (in_lto_p || size_info->size == size_info->self_size); > > Which seems expected because the speculative edges are not accounted by > self_size. So perhaps we simply want to track if there is speculative > edge and disable the sanity check inthat case. https://gcc.gnu.org/legacy-ml/gcc-patches/2018-12/msg01650.html is the patch that intoduced the comment and it seems it does right thing. size_inf->self_size is normally computed from original function body and if speculation is added it is not udpated, while size_info->size contains size adjusted by all speculations and inline decision, so in presence of speculatie edges we can not expect both to match. I will check tomorrow if it makes code to compile. Honza > > Honza