https://gcc.gnu.org/bugzilla/show_bug.cgi?id=118705
--- Comment #3 from kargls at comcast dot net ---
(In reply to Ryan Koehler from comment #2)
> Hmm that is interesting.
>
> That fix seemed to work. Its been a while since I read the ISO standard, but
> I don't think what I sent over is out-of-spec. I do really appreciate that
> you found a really simple solution to unblock me in the short term. I am
> getting another internal compiler error though. Ill get that error isolated
> and submitted in another ticket.
You're welcome. Sorry about the issue. I don't use the 'module'
prefix in my own code. I would have thought that an import
statement is needed, like below
module heading_mod
use classification_mod, only: classification_t
implicit none
private
public :: HEADING
interface
module subroutine HEADING (class_)
import classification_t
type(classification_t), intent(in) :: class_
end subroutine HEADING
end interface
end module heading_mod
But this leads to an error!
% gfcx -c a.f90
a.f90:33:19:
33 | import classification_t
| 1
Error: F2008: C1210 IMPORT statement at (1) is not permitted in a module
procedure interface body
If I remove the 'module' prefix, then the code refuses to compile
without the import statement! With the import statement, it compiles.
Fun with Fortran!
A quick debug session shows the needed information is available
where the ICE occurs, but a data structure is missing!
(gdb) p *g
$1 = {specific_st = 0x2042703c0, specific = 0x0, next = 0x0,
is_operator = true}
(gdb) p *g->specific_st
$2 = {priority = 6462, left = 0x0, right = 0x0,
name = 0x204a1e6b0 "isprestressed", ambiguous = 0, n = {sym = 0x2042bfa00,
uop = 0x2042bfa00, common = 0x2042bfa00, tb = 0x2042bfa00,
omp_udr = 0x2042bfa00}}
Unfortunately, the code wants to look into g->specific to find
(gdb) (list)
4686 target = g->specific->u.specific->n.sym;
4687
and then it returns g->specific. g->specific_st->n.sym has the
missing information.