https://gcc.gnu.org/g:ff9dcaf96f36526023d9dfb16f8ba9ad9f8dc669
commit ff9dcaf96f36526023d9dfb16f8ba9ad9f8dc669 Author: Mikael Morin <mik...@gcc.gnu.org> Date: Wed Mar 12 15:19:04 2025 +0100 Correction class_defined_operator_1.f03 Diff: --- gcc/fortran/f95-lang.cc | 13 ++++++++++--- 1 file changed, 10 insertions(+), 3 deletions(-) diff --git a/gcc/fortran/f95-lang.cc b/gcc/fortran/f95-lang.cc index dec2485168b3..851723bc9704 100644 --- a/gcc/fortran/f95-lang.cc +++ b/gcc/fortran/f95-lang.cc @@ -357,10 +357,17 @@ gfc_get_alias_set (tree t) if (!POINTER_TYPE_P (t)) { - alias_set_type parent_base_set = get_alias_set (TREE_TYPE (TYPE_FIELDS (parent_type))); - alias_set_type child_base_set = get_alias_set (TREE_TYPE (TYPE_FIELDS (t))); - + tree parent_field = TYPE_FIELDS (parent_type); + tree child_field = TYPE_FIELDS (t); + alias_set_type parent_base_set = get_alias_set (parent_field); + alias_set_type child_base_set = get_alias_set (child_field); record_alias_subset (parent_base_set, child_base_set); + + parent_field = TREE_CHAIN (parent_field); + child_field = TREE_CHAIN (child_field); + alias_set_type parent_vtype_ptr_set = get_alias_set (TREE_TYPE (parent_field)); + alias_set_type child_vtype_ptr_set = get_alias_set (TREE_TYPE (child_field)); + record_alias_subset (parent_vtype_ptr_set, child_vtype_ptr_set); } return new_set;