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;

Reply via email to