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

--- Comment #5 from Gaius Mulley <gaius at gcc dot gnu.org> ---
Thanks for the report.

[As an aside gm2 from GCC-12 has a completely different linking mechanism to
gm2 GCC-14.2]

The file gcc/m2/gm2-libs/COROUTINES.def is a definition for "C" and thus has no
accompanying .mod file (just like libc.def, libm.def, cxxabi.def).  The reason
for this stripped down version of COROUTINES.def is to provide a base layer
compatibility between the runtime modules of the ISO and PIM dialects.  The
file gcc/m2/gm2-libs/COROUTINES.def is tiny:

DEFINITION MODULE FOR "C" COROUTINES ;

CONST
   UnassignedPriority = 0 ;

TYPE
   INTERRUPTSOURCE = CARDINAL ;
   PROTECTION = [UnassignedPriority..7] ;

END COROUTINES.

and is only defining a constant and two types, just enough to satisfy the
shared code between the ISO and PIM libraries.  COROUTINES are not part of the
PIM dialect (PIM uses the type PROCESS found in SYSTEM), so the application
module should be compiled using the -fiso switch.  

$ gm2 -fiso coex.mod 
$ > ./a.out 
A
B
C
D
E

It would be good to improve the gm2 error message saying wrong dialect (try
-fiso) maybe with a yet to be implemented warning or error attribute.

Reply via email to