public inbox for gcc-bugs@sourceware.org
help / color / mirror / Atom feed
From: "pault at gcc dot gnu.org" <gcc-bugzilla@gcc.gnu.org>
To: gcc-bugs@gcc.gnu.org
Subject: [Bug fortran/96320] gfortran 8-10 shape mismatch in assumed-length dummy argument character array
Date: Mon, 27 Jul 2020 07:26:06 +0000	[thread overview]
Message-ID: <bug-96320-4-DsGUHenwmS@http.gcc.gnu.org/bugzilla/> (raw)
In-Reply-To: <bug-96320-4@http.gcc.gnu.org/bugzilla/>

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

Paul Thomas <pault at gcc dot gnu.org> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
           Assignee|unassigned at gcc dot gnu.org      |pault at gcc dot gnu.org
                 CC|                            |pault at gcc dot gnu.org

--- Comment #10 from Paul Thomas <pault at gcc dot gnu.org> ---
Confirmed.

The argument in the interface is assumed shape, as expected, while its shadow
in the module procedure is tagged as deferred shape. Yet another fix (!):

index ba1c8bc322e..9e822f5c396 100644
--- a/gcc/fortran/interface.c
+++ b/gcc/fortran/interface.c
@@ -1464,8 +1464,12 @@ gfc_check_dummy_characteristics (gfc_symbol *s1,
gfc_symb
ol *s2,
     {
       int i, compval;
       gfc_expr *shape1, *shape2;
+      bool module_procedure;

-      if (s1->as->type != s2->as->type)
+      module_procedure = s1->ns->proc_name &&
+                        s1->ns->proc_name->attr.module_procedure;
+
+      if (s1->as->type != s2->as->type && !module_procedure)
        {
          snprintf (errmsg, err_len, "Shape mismatch in argument '%s'",
                    s1->name);

This fixes the problem but I rather think that the proper way to do it is
further upstream. decl.c(gfc_match_submod_proc) looks as if the array spec is
copied as it should be but I need to do a gdb session to check this. I'll have
to put my thinking cap on regarding Steve's offering in comment 5.

It should be noted that the submodule version works as intended in all versions
of gfortran for which submodules are implemented:

module foobar
  type foo
  contains
    procedure, nopass :: bar
  end type
  interface
    module subroutine bar(arg)
      character(len=*) arg(:)
    end subroutine
  end interface
end module

submodule (foobar) sbar
contains
  module procedure bar
    print *, arg
  end procedure
end submodule

  use foobar
  character(4) :: book(2) = ['abcd', 'efgh']
  call bar(book)
end


I'm onto it.

Thanks for the report

Paul

  parent reply	other threads:[~2020-07-27  7:26 UTC|newest]

Thread overview: 31+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2020-07-26  4:47 [Bug fortran/96320] New: " damian at sourceryinstitute dot org
2020-07-26 16:34 ` [Bug fortran/96320] " dominiq at lps dot ens.fr
2020-07-26 16:44 ` damian at sourceryinstitute dot org
2020-07-26 16:54 ` dominiq at lps dot ens.fr
2020-07-26 18:43 ` kargl at gcc dot gnu.org
2020-07-26 19:13 ` kargl at gcc dot gnu.org
2020-07-26 21:35 ` jvdelisle at charter dot net
2020-07-27  0:39 ` damian at sourceryinstitute dot org
2020-07-27  0:45 ` sgk at troutmask dot apl.washington.edu
2020-07-27  3:34 ` damian at sourceryinstitute dot org
2020-07-27  7:26 ` pault at gcc dot gnu.org [this message]
2020-07-27 11:37 ` dominiq at lps dot ens.fr
2020-07-27 17:26 ` pault at gcc dot gnu.org
2020-07-27 18:12 ` damian at sourceryinstitute dot org
2020-07-27 19:03 ` dominiq at lps dot ens.fr
2020-07-28  9:24 ` dominiq at lps dot ens.fr
2020-07-28  9:43 ` paul.richard.thomas at gmail dot com
2020-07-28 10:32 ` dominiq at lps dot ens.fr
2020-07-28 14:13 ` sgk at troutmask dot apl.washington.edu
2020-07-28 15:18 ` dominiq at lps dot ens.fr
2020-08-02 10:00 ` cvs-commit at gcc dot gnu.org
2020-08-02 10:05 ` pault at gcc dot gnu.org
2020-08-03 23:45 ` damian at sourceryinstitute dot org
2020-08-04  1:53 ` sgk at troutmask dot apl.washington.edu
2020-08-15  1:59 ` damian at sourceryinstitute dot org
2020-08-20 17:17 ` damian at sourceryinstitute dot org
2020-12-28 14:55 ` cvs-commit at gcc dot gnu.org
2021-01-04 14:42 ` cvs-commit at gcc dot gnu.org
2021-01-04 15:15 ` pault at gcc dot gnu.org
2021-01-21 10:01 ` cvs-commit at gcc dot gnu.org
2023-10-31 14:17 ` pault at gcc dot gnu.org

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=bug-96320-4-DsGUHenwmS@http.gcc.gnu.org/bugzilla/ \
    --to=gcc-bugzilla@gcc.gnu.org \
    --cc=gcc-bugs@gcc.gnu.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).