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?

Reply via email to