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/99138] ICE in gfc_match_rvalue, at fortran/primary.c:3738
Date: Mon, 22 Feb 2021 17:29:47 +0000	[thread overview]
Message-ID: <bug-99138-4-KGqmkYncxZ@http.gcc.gnu.org/bugzilla/> (raw)
In-Reply-To: <bug-99138-4@http.gcc.gnu.org/bugzilla/>

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

--- Comment #3 from Paul Thomas <pault at gcc dot gnu.org> ---
(In reply to Tobias Burnus from comment #2)
> Confirmed – with 'class(*), allocatable :: f(:)' it should be valid (with
> prior assignment).
> 
> The problem is in gfc_match_rvalue:
> 
> 3737          if (sym->ts.type == BT_CLASS && sym->attr.class_ok
> 3738              && CLASS_DATA (sym)->as)
> 
> without submodules, we have:
>   sym->ts.u.derived->components->as
> which is working (and either NULL in the original example or != NULL with my
> modification).
> 
> However, with submodules,
>   sym->ts.u.derived->components
> is NULL, i.e. 'sym->ts.u.derived' (name = "STAR") does not have any
> scomponents, but it should have two, _data and _vptr!

Hi Tobias,

Is the problem not that the parser is not picking up the incorrectly placed
print statement? It should never be passed to the matcher because it is in the
contains context.

It also should said that it has everything to do with module procedures and
nothing to do with submodules. This has the same error sequence:

module m
   interface
      module function f(x)
         integer, intent(in) :: x
         class(*), allocatable :: f
      end
   end interface
contains
   module function f(x)
      integer, intent(in) :: x
      class(*), allocatable :: f
   end function
   print *, f(3)
end

I suspect that the end function is not popping the level.

Cheers

Paul

  parent reply	other threads:[~2021-02-22 17:29 UTC|newest]

Thread overview: 9+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2021-02-17 18:10 [Bug fortran/99138] New: " gscfq@t-online.de
2021-02-18  8:37 ` [Bug fortran/99138] " marxin at gcc dot gnu.org
2021-02-22 14:21 ` burnus at gcc dot gnu.org
2021-02-22 17:29 ` pault at gcc dot gnu.org [this message]
2021-02-22 18:17 ` burnus at gcc dot gnu.org
2021-02-22 23:37 ` burnus at gcc dot gnu.org
2021-03-15 21:56 ` anlauf at gcc dot gnu.org
2021-03-16 20:43 ` anlauf at gcc dot gnu.org
2021-03-16 21:32 ` anlauf 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-99138-4-KGqmkYncxZ@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).