https://gcc.gnu.org/bugzilla/show_bug.cgi?id=56789

--- Comment #14 from Thomas Koenig <tkoenig at gcc dot gnu.org> ---
This would reject the obvious non-contiguous cases.

Index: interface.c
===================================================================
--- interface.c (Revision 264540)
+++ interface.c (Arbeitskopie)
@@ -3297,6 +3297,14 @@ compare_actual_formal (gfc_actual_arglist **ap, gf
          return false;
        }

+      if (f->sym->attr.contiguous
+         && !gfc_is_simply_contiguous (a->expr, false, true))
+       {
+         gfc_error ("Non-contiguous argument actual argument passed to "
+                    "contiguous dummy argument %qs at %L", f->sym->name,
+                    &a->expr->where);
+       }
+
       /* Find the last array_ref.  */
       actual_arr_ref = NULL;
       if (a->expr->ref)
Index: trans-array.c
===================================================================
--- trans-array.c       (Revision 264540)
+++ trans-array.c       (Arbeitskopie)
@@ -7862,8 +7862,7 @@ gfc_conv_array_parameter (gfc_se * se, gfc_expr *
       gfc_prepend_expr_to_block (&se->post, tmp);
     }

-  if (g77 || (fsym && fsym->attr.contiguous
-             && !gfc_is_simply_contiguous (expr, false, true)))
+  if (g77)
     {
       tree origptr = NULL_TREE;

Reply via email to