https://gcc.gnu.org/bugzilla/show_bug.cgi?id=116055
--- Comment #4 from Jan Hubicka <hubicka at gcc dot gnu.org> --- This does not reproduce for me (with trunk nor gcc14 build with --target=powerpc64le-linux-gnu) However the problem is almost surely sanity check in dumping code that flags does not get worse (which they can now thanks to store merging) gcc/ChangeLog: * ipa-modref.cc (analyze_function): Do not ICE when flags regress. diff --git a/gcc/ipa-modref.cc b/gcc/ipa-modref.cc index f6a758b5f42..59cfe91f987 100644 --- a/gcc/ipa-modref.cc +++ b/gcc/ipa-modref.cc @@ -3297,7 +3297,8 @@ analyze_function (bool ipa) fprintf (dump_file, " Flags for param %i improved:", (int)i); else - gcc_unreachable (); + fprintf (dump_file, " Flags for param %i changed:", + (int)i); dump_eaf_flags (dump_file, old_flags, false); fprintf (dump_file, " -> "); dump_eaf_flags (dump_file, new_flags, true); @@ -3313,7 +3314,7 @@ analyze_function (bool ipa) || (summary->retslot_flags & EAF_UNUSED)) fprintf (dump_file, " Flags for retslot improved:"); else - gcc_unreachable (); + fprintf (dump_file, " Flags for retslot changed:"); dump_eaf_flags (dump_file, past_retslot_flags, false); fprintf (dump_file, " -> "); dump_eaf_flags (dump_file, summary->retslot_flags, true); @@ -3328,7 +3329,7 @@ analyze_function (bool ipa) || (summary->static_chain_flags & EAF_UNUSED)) fprintf (dump_file, " Flags for static chain improved:"); else - gcc_unreachable (); + fprintf (dump_file, " Flags for static chain changed:"); dump_eaf_flags (dump_file, past_static_chain_flags, false); fprintf (dump_file, " -> "); dump_eaf_flags (dump_file, summary->static_chain_flags, true); Does it help?