https://gcc.gnu.org/bugzilla/show_bug.cgi?id=91606
--- Comment #8 from Jakub Jelinek <jakub at gcc dot gnu.org> --- And the reason for alias set 5 is that it is TYPE_ALIAS_SET of pointer to the METHOD_TYPE. reference_alias_ptr_type_1 in the D.10827._M_elems[0].D.10649.f1.__pfn case skips through the f1 and __pfn COMPONENT_REFs and thus we use alias set of D.10827._M_elems[0].D.10649, but in case of _31->__pfn it doesn't skip anything and uses the alias set of that pointer. I guess previously alias set 0 was considered a fallback alias set and so things worked fine, but with the above mentioned change it doesn't seem to be safe to return alias set 0 for the TYPE_PTRMEMFUNC_P types anymore, when they are structs that contain fields that have non-0 alias set. So, shall we try to drop that TYPE_PTRMEMFUNC_P -> return 0; case and see what breaks, or create some alias set for all pointer to members and make sure the elements have the same alias set, something different?