https://gcc.gnu.org/bugzilla/show_bug.cgi?id=108551
--- Comment #4 from Richard Biener <rguenth at gcc dot gnu.org> --- (In reply to Martin Liška from comment #3) > I might reduced that: > > $ cat Termbase.mod > IMPLEMENTATION MODULE Termbase ; > TYPE > ReadMethods = POINTER TO RECORD > s : StatusProcedure ; > END ; > WriteMethod = POINTER TO RECORD > END ; > VAR > rStack: ReadMethods ; > wStack: WriteMethod ; > PROCEDURE AssignRead (rp: ReadProcedure; sp: StatusProcedure; > VAR Done: BOOLEAN) ; > BEGIN > IF rStack=NIL > THEN > END > END AssignRead ; > (* > *) > PROCEDURE UnAssignRead (VAR Done: BOOLEAN) ; > END UnAssignRead ; > PROCEDURE Read (VAR ch: CHAR) ; > END Read ; > PROCEDURE KeyPressed () : BOOLEAN ; > BEGIN > IF rStack=NIL > THEN > RETURN( rStack^.s() ) > ELSE > RETURN( rStack^.s() ) > END > END KeyPressed ; > PROCEDURE AssignWrite (wp: WriteProcedure; VAR Done: BOOLEAN) ; > BEGIN > IF wStack=NIL > THEN > END > END AssignWrite ; > PROCEDURE UnAssignWrite (VAR Done: BOOLEAN) ; > END UnAssignWrite ; > PROCEDURE Write (VAR ch: CHAR) ; > END Write ; > END Termbase. > > $ /dev/shm/objdir/./gcc/gm2 -B/dev/shm/objdir/./gcc/ Termbase.mod > -Werror=return-type -I/home/marxin/Programming/gcc/gcc/m2/gm2-libs-pim > -I/home/marxin/Programming/gcc/gcc/m2/gm2-libs > Termbase.mod: In function ‘main’: ^^^ that's again for 'main', like my attempt at a reduced testcase. I think the proper fix is to give up on fixing this diagnostic and instead ignore -Wreturn-type as intended.