https://gcc.gnu.org/g:bdcea7007be2e04d92de1f275762a08afb23cc33

commit bdcea7007be2e04d92de1f275762a08afb23cc33
Author: Mikael Morin <[email protected]>
Date:   Sat Sep 26 18:34:27 2026 +0200

    Sauvegarde modifs

Diff:
---
 gcc/fortran/interface.cc | 18 +++++++++++++-----
 1 file changed, 13 insertions(+), 5 deletions(-)

diff --git a/gcc/fortran/interface.cc b/gcc/fortran/interface.cc
index 9dae6685be2a..ba05c08c62c9 100644
--- a/gcc/fortran/interface.cc
+++ b/gcc/fortran/interface.cc
@@ -2838,11 +2838,19 @@ compare_parameter (gfc_symbol *formal, gfc_expr *actual,
       && (actual->symtree->n.sym->attr.asynchronous
          || actual->symtree->n.sym->attr.volatile_)
       &&  (formal->attr.asynchronous || formal->attr.volatile_)
-      && actual->rank && formal->as
-      && !gfc_is_simply_contiguous (actual, true, false)
-      && ((formal->as->type != AS_ASSUMED_SHAPE
-          && formal->as->type != AS_ASSUMED_RANK && !formal->attr.pointer)
-         || formal->attr.contiguous))
+      && actual->rank
+      && ((formal->ts.type == BT_CLASS
+          && formal->ts.u.derived->attr.is_class
+          && CLASS_DATA (formal)->as
+          && !(CLASS_DATA (formal)->as->type == AS_ASSUMED_SHAPE
+               || CLASS_DATA (formal)->as->type == AS_ASSUMED_RANK)
+          && !CLASS_DATA (formal)->attr.class_pointer)
+         || (formal->as
+             && !(formal->as->type == AS_ASSUMED_SHAPE
+                  || formal->as->type == AS_ASSUMED_RANK)
+             && !formal->attr.pointer)
+         || formal->attr.contiguous)
+      && !gfc_is_simply_contiguous (actual, true, false))
     {
       if (where)
        gfc_error ("Dummy argument %qs has to be a pointer, assumed-shape or "

Reply via email to