https://gcc.gnu.org/bugzilla/show_bug.cgi?id=91222
--- Comment #26 from ktkachov at gcc dot gnu.org --- (In reply to Jan Hubicka from comment #25) > > --- Comment #24 from ktkachov at gcc dot gnu.org --- > > Thanks. Unfortunately I still see the ICE building 507.cactuBSSN_r on > > aarch64 > > with -flto in the same place: > > 995 gcc_assert (TYPE_NAME (t1) > > 996 && TREE_CODE (TYPE_NAME (t1)) == TYPE_DECL); > Sorry to hear that seems cactusBSSN triggers a lot of interesting > behaviour here. This conditional should fix it. > > Index: ipa-devirt.c > =================================================================== > --- ipa-devirt.c (revision 276420) > +++ ipa-devirt.c (working copy) > @@ -986,8 +986,8 @@ warn_types_mismatch (tree t1, tree t2, l > || (type_with_linkage_p (TYPE_MAIN_VARIANT (t2)) > && type_in_anonymous_namespace_p (TYPE_MAIN_VARIANT (t2)))) > { > - if (type_with_linkage_p (TYPE_MAIN_VARIANT (t1)) > - && !type_in_anonymous_namespace_p (TYPE_MAIN_VARIANT (t1))) > + if (!type_with_linkage_p (TYPE_MAIN_VARIANT (t1)) > + || !type_in_anonymous_namespace_p (TYPE_MAIN_VARIANT (t1))) > { > std::swap (t1, t2); > std::swap (loc_t1, loc_t2); Thanks! That fixes the benchmark build (and the rest of SPEC builds fine with -flto). It also bootstraps and tests on aarch64-none-linux-gnu fine.