https://gcc.gnu.org/bugzilla/show_bug.cgi?id=118318
Sam James <sjames at gcc dot gnu.org> changed: What |Removed |Added ---------------------------------------------------------------------------- Target Milestone|--- |15.0 Summary|ICE when building |[15 regression] ICE when |firefox-134.0 with PGO and |building firefox-134.0 with |LTO |PGO and LTO --- Comment #7 from Sam James <sjames at gcc dot gnu.org> --- (In reply to Jan Hubicka from comment #6) > Do you know why compatible_p returns false? It looks like mixing IPA and > function local profiles together.. ``` Breakpoint 2.2, profile_count::operator+= (this=0x7ffff6e7e888, other=...) at /usr/src/debug/sys-devel/gcc-15.0.9999/gcc-15.0.9999/gcc/profile-count.h:932 932 gcc_checking_assert (compatible_p (other)); (gdb) p other $1 = (const profile_count &) @0x7fffffff72c0: { static n_bits = 61, static max_count = 2305843009213693950, static uninitialized_count = 2305843009213693951, m_val = 3694, m_quality = ADJUSTED } (gdb) call compatible_p(other) $3 = false [...] Breakpoint 3.10, profile_count::compatible_p (this=0x7ffff6e7e888, other=...) at /usr/src/debug/sys-devel/gcc-15.0.9999/gcc-15.0.9999/gcc/profile-count.h:783 783 || other == zero ()) (gdb) n 787 if (ipa ().nonzero_p () (gdb) n 790 if (other.ipa ().nonzero_p () (gdb) n 791 && !(ipa () == *this)) (gdb) n during IPA pass: cp /var/tmp/portage/www-client/firefox-134.0/work/firefox-134.0/media/ffvpx/libavutil/tx.c: At top level: /var/tmp/portage/www-client/firefox-134.0/work/firefox-134.0/media/ffvpx/libavutil/tx.c:939:1: internal compiler error: in operator+=, at profile-count.h:932 0x555556e495aa internal_error(char const*, ...) ``` so your theory is right, I think.