]> git.ipfire.org Git - thirdparty/gcc.git/commit - gcc/m2/mc-boot-ch/GSysExceptions.c
Fixup noreturn attributes in modula-2 [PR108551] and [PR108612]
authorGaius Mulley <gaiusmod2@gmail.com>
Wed, 1 Feb 2023 17:26:00 +0000 (17:26 +0000)
committerGaius Mulley <gaiusmod2@gmail.com>
Wed, 1 Feb 2023 17:26:00 +0000 (17:26 +0000)
commit9fadd8dec79876d3c393daccc62959f6f4853cc5
tree61a085460a1adf3cb66436254ba31e0dffad7ebb
parenta939dd835798efd40b78f7c0070177616e3f36d3
Fixup noreturn attributes in modula-2 [PR108551] and [PR108612]

PR108612 - m2/gm2-libs-iso/ClientSocket.mod:229:1: error: control
reaches end of non-void function [-Werror=return-type]
PR108551 - gcc/m2/gm2-libs-pim/Termbase.mod:128:1: error: control
reaches end of non-void function [-Werror=return-type]
This patch adds missing return values to the procedure functions
mentioned in PR108612 and PR108551.  It corrects the noreturn
attribute to throw and rethrow in the modula2 frontend.  The patch
also changes HALT, Halt, Raise procedures in the libraries to use
the <* noreturn *> attribute.  Finally the patch includes
rebuilt bootstrap tools mc and pge.

gcc/m2/ChangeLog:

* Make-lang.in (GM2_FLAGS): Add -fno-return -Wreturn-type.
(GM2_ISO_FLAGS): Add -fno-return -Wreturn-type.
* Make-maintainer.in (GM2PATH): Split into separate -I components.
(MC-LIB-DEFS): Add RTentity.def.
(m2/boot-bin/mc-devel$(exeext)): Changed -I$(GM2PATH) to
$(GM2PATH).
(m2/boot-bin/mc-opt$(exeext)): Separate -I paths.
(m2/mc/decl.o): Separate -I paths.
(gm2-bootstrap): Separate -I paths.
(m2/mc-boot-gen/$(SRC_PREFIX)%.h): Separate -I paths.
(m2/mc-boot-gen/$(SRC_PREFIX)decl.c): Separate -I paths.
(m2/mc-boot-gen/$(SRC_PREFIX)%.c): Separate -I paths.
(gm2.verifyparanoid): Separate -I paths.
(gm2.verifystage12): Separate -I paths.
* gm2-compiler/M2ALU.mod (GetConstructorElement): Add default
Return NulSym.  Remove return from the error case.
* gm2-compiler/M2Base.mod (ComplexToScalar): Return RType
from the error case.
(MixMetaTypes):  Return MakeError as a default.
* gm2-compiler/M2GCCDeclare.mod (GetTypeMin): Return NulSym
from the error case.
(GetTypeMax): Return NulSym from the error case.
* gm2-compiler/M2GenGCC.mod (IsExportedGcc): Replace Assert
by InternalError.
* gm2-compiler/M2Quads.mod (GetItemPointedTo): Add InternalError.
(GetTypeMin): Add InternalError.
(GetTypeMax): Add InternalError.
* gm2-compiler/M2System.mod (InitSystem): Call
PutProcedureNoReturn on Throw.
* gm2-gcc/m2except.cc (m2except_InitExceptions): fn_throw_tree
declare as noreturn.  fn_rethrow_tree declare as noreturn.
* gm2-libs-coroutines/Debug.def (Halt): Add noreturn attribute.
* gm2-libs-coroutines/SYSTEM.def (THROW): Add noreturn attribute.
* gm2-libs-iso/ClientSocket.mod (dorbytes): Add return FALSE.
* gm2-libs-iso/EXCEPTIONS.def (RAISE): Add noreturn attribute.
* gm2-libs-iso/IOLink.def (RAISEdevException): Add noreturn attribute.
* gm2-libs-iso/M2RTS.def (HALT): Add noreturn attribute.
(Halt): Ditto.
(HaltC): Ditto.
(ErrorMessage): Ditto.
(AssignmentException): Ditto.
(ReturnException): Ditto.
(IncException): Ditto.
(DecException): Ditto.
(InclException): Ditto.
(ExclException): Ditto.
(ShiftException): Ditto.
(RotateException): Ditto.
(StaticArraySubscriptException): Ditto.
(DynamicArraySubscriptException): Ditto.
(ForLoopBeginException): Ditto.
(ForLoopToException): Ditto.
(ForLoopEndException): Ditto.
(PointerNilException): Ditto.
(NoReturnException): Ditto.
(CaseException): Ditto.
(WholeNonPosDivException): Ditto.
(WholeNonPosModException): Ditto.
(WholeZeroDivException): Ditto.
(WholeZeroRemException): Ditto.
(WholeValueException): Ditto.
(RealValueException): Ditto.
(ParameterException): Ditto.
(NoException): Ditto.
* gm2-libs-iso/SYSTEM.def (THROW): Ditto.
* gm2-libs-iso/TermFile.mod (dorbytes): Add default return FALSE.
* gm2-libs-min/M2RTS.def: Add noreturn attribute.
* gm2-libs/FIO.mod (BufferedRead): Return -1.
(getFileName): Return NIL.
(getFileNameLength): Return 0.
* gm2-libs/M2RTS.def (HaltC): Add noreturn attribute.
(AssignmentException): Ditto.
(ReturnException): Ditto.
(IncException): Ditto.
(DecException): Ditto.
(InclException): Ditto.
(ExclException): Ditto.
(ShiftException): Ditto.
(RotateException): Ditto.
(StaticArraySubscriptException): Ditto.
(DynamicArraySubscriptException): Ditto.
(ForLoopBeginException): Ditto.
(ForLoopToException): Ditto.
(ForLoopEndException): Ditto.
(PointerNilException): Ditto.
(NoReturnException): Ditto.
(CaseException): Ditto.
(WholeNonPosDivException): Ditto.
(WholeNonPosModException): Ditto.
(WholeZeroDivException): Ditto.
(WholeZeroRemException): Ditto.
(WholeValueException): Ditto.
(RealValueException): Ditto.
(ParameterException): Ditto.
(NoException): Ditto.
* gm2-libs/RTExceptions.def (Raise): Ditto.
* gm2-libs/RTExceptions.mod (InvokeHandler): Ditto.
* gm2-libs/SYSTEM.def (THROW): Ditto.
* m2.flex (_M2_m2flex_fini): Remamed to...
(_M2_m2flex_finish): ...here.
* mc-boot-ch/GBuiltins.c (_M2_Builtins_finish): Remamed to...
(_M2_Builtins_fini): ...this.
* mc-boot-ch/GRTco.c (_M2_RTco_finish): Remamed to...
(_M2_RTco_fini): ...this.
* mc-boot-ch/GSYSTEM.c (_M2_SYSTEM_finish): Remamed to...
(_M2_SYSTEM_fini): ...this.
* mc-boot-ch/GSelective.c (_M2_Selective_finish): Remamed to...
(_M2_Selective_fini): ...this.
* mc-boot-ch/GSysExceptions.c (_M2_SysExceptions_init): Add
parameters.
(_M2_SysExceptions_finish): Remamed to...
(_M2_SysExceptions_fini): ...this.
* mc-boot-ch/GUnixArgs.cc (_M2_UnixArgs_finish): Remamed to...
(_M2_UnixArgs_fini): ...this.
(_M2_UnixArgs_ctor::_M2_UnixArgs_ctor): Change parameter
to _M2_UnixArgs_fini.
* mc-boot-ch/Gdtoa.c (_M2_dtoa_finish): Remamed to...
(_M2_dtoa_fini): ...this.
* mc-boot-ch/Gerrno.c (_M2_errno_finish): Remamed to...
(_M2_errno_fini): ...this.
* mc-boot-ch/Gldtoa.c (_M2_ldtoa_finish): Remamed to...
(_M2_ldtoa_fini): ...this.
* mc-boot-ch/Gtermios.cc (_M2_termios_init): Add parameters.
(_M2_termios_finish): Remamed to...
(_M2_termios_fini): ...this.
* mc-boot-ch/Gwrapc.c (_M2_wrapc_init): Add parameters.
(_M2_wrapc_finish): Remamed to...
(_M2_wrapc_fini): ...this.
* mc-boot/GASCII.c: Rebuild.
* mc-boot/GArgs.c: Rebuild.
* mc-boot/GAssertion.c: Rebuild.
* mc-boot/GBreak.c: Rebuild.
* mc-boot/GCmdArgs.c: Rebuild.
* mc-boot/GDebug.c: Rebuild.
* mc-boot/GDynamicStrings.c: Rebuild.
* mc-boot/GEnvironment.c: Rebuild.
* mc-boot/GFIO.c: Rebuild.
* mc-boot/GFormatStrings.c: Rebuild.
* mc-boot/GFpuIO.c: Rebuild.
* mc-boot/GIO.c: Rebuild.
* mc-boot/GIndexing.c: Rebuild.
* mc-boot/GM2Dependent.c: Rebuild.
* mc-boot/GM2EXCEPTION.c: Rebuild.
* mc-boot/GM2RTS.c: Rebuild.
* mc-boot/GM2RTS.h: Rebuild.
* mc-boot/GMemUtils.c: Rebuild.
* mc-boot/GNumberIO.c: Rebuild.
* mc-boot/GPushBackInput.c: Rebuild.
* mc-boot/GRTExceptions.c: Rebuild.
* mc-boot/GRTExceptions.h: Rebuild.
* mc-boot/GRTco.h: Rebuild.
* mc-boot/GRTint.c: Rebuild.
* mc-boot/GSArgs.c: Rebuild.
* mc-boot/GSFIO.c: Rebuild.
* mc-boot/GStdIO.c: Rebuild.
* mc-boot/GStorage.c: Rebuild.
* mc-boot/GStrCase.c: Rebuild.
* mc-boot/GStrIO.c: Rebuild.
* mc-boot/GStrLib.c: Rebuild.
* mc-boot/GStringConvert.c: Rebuild.
* mc-boot/GSysStorage.c: Rebuild.
* mc-boot/GTimeString.c: Rebuild.
* mc-boot/Galists.c: Rebuild.
* mc-boot/Gdecl.c: Rebuild.
* mc-boot/Gkeyc.c: Rebuild.
* mc-boot/Glists.c: Rebuild.
* mc-boot/GmcComment.c: Rebuild.
* mc-boot/GmcComp.c: Rebuild.
* mc-boot/GmcDebug.c: Rebuild.
* mc-boot/GmcError.c: Rebuild.
* mc-boot/GmcFileName.c: Rebuild.
* mc-boot/GmcLexBuf.c: Rebuild.
* mc-boot/GmcMetaError.c: Rebuild.
* mc-boot/GmcOptions.c: Rebuild.
* mc-boot/GmcPreprocess.c: Rebuild.
* mc-boot/GmcPretty.c: Rebuild.
* mc-boot/GmcPrintf.c: Rebuild.
* mc-boot/GmcQuiet.c: Rebuild.
* mc-boot/GmcReserved.c: Rebuild.
* mc-boot/GmcSearch.c: Rebuild.
* mc-boot/GmcStack.c: Rebuild.
* mc-boot/GmcStream.c: Rebuild.
* mc-boot/Gmcp1.c: Rebuild.
* mc-boot/Gmcp2.c: Rebuild.
* mc-boot/Gmcp3.c: Rebuild.
* mc-boot/Gmcp4.c: Rebuild.
* mc-boot/Gmcp5.c: Rebuild.
* mc-boot/GnameKey.c: Rebuild.
* mc-boot/GsymbolKey.c: Rebuild.
* mc-boot/Gtop.c: Rebuild.
* mc-boot/Gvarargs.c: Rebuild.
* mc-boot/Gwlists.c: Rebuild.
* mc-boot/GRTentity.h: New file.
* mc/decl.mod (scaffoldStatic): Change _finish to _fini.
* mc/mc.flex (_M2_mcflex_fini): New function.
(_M2_mcflex_finish): Remove function.
* tools-src/mklink.c (GenerateFinishCalls): Change
_finish to _fini.
(GeneratePrototypes): Change _finish to _fini.

libgm2/ChangeLog:

* libm2cor/Makefile.am (libm2cor_la_M2FLAGS): Add -Wreturn-type
-fcase.
* libm2cor/Makefile.in: Rebuild.
* libm2iso/Makefile.am (libm2iso_la_M2FLAGS): Add -Wreturn-type
-fcase.
* libm2iso/Makefile.in: Rebuild.
* libm2log/Makefile.am (libm2log_la_M2FLAGS): Add -Wreturn-type
-fcase.
* libm2log/Makefile.in: Rebuild.
* libm2pim/Makefile.am (libm2pim_la_M2FLAGS): Add -Wreturn-type
-fcase.
* libm2pim/Makefile.in: Rebuild.

PR modula2/108612
PR modula2/108551

Signed-off-by: Gaius Mulley <gaiusmod2@gmail.com>
111 files changed:
gcc/m2/Make-lang.in
gcc/m2/Make-maintainer.in
gcc/m2/gm2-compiler/M2ALU.mod
gcc/m2/gm2-compiler/M2Base.mod
gcc/m2/gm2-compiler/M2GCCDeclare.mod
gcc/m2/gm2-compiler/M2GenGCC.mod
gcc/m2/gm2-compiler/M2Quads.mod
gcc/m2/gm2-compiler/M2System.mod
gcc/m2/gm2-gcc/m2except.cc
gcc/m2/gm2-libs-coroutines/Debug.def
gcc/m2/gm2-libs-coroutines/SYSTEM.def
gcc/m2/gm2-libs-iso/ClientSocket.mod
gcc/m2/gm2-libs-iso/EXCEPTIONS.def
gcc/m2/gm2-libs-iso/IOLink.def
gcc/m2/gm2-libs-iso/M2RTS.def
gcc/m2/gm2-libs-iso/SYSTEM.def
gcc/m2/gm2-libs-iso/TermFile.mod
gcc/m2/gm2-libs-min/M2RTS.def
gcc/m2/gm2-libs/FIO.mod
gcc/m2/gm2-libs/M2RTS.def
gcc/m2/gm2-libs/RTExceptions.def
gcc/m2/gm2-libs/RTExceptions.mod
gcc/m2/gm2-libs/SYSTEM.def
gcc/m2/m2.flex
gcc/m2/mc-boot-ch/GBuiltins.c
gcc/m2/mc-boot-ch/GRTco.c
gcc/m2/mc-boot-ch/GSYSTEM.c
gcc/m2/mc-boot-ch/GSelective.c
gcc/m2/mc-boot-ch/GSysExceptions.c
gcc/m2/mc-boot-ch/GUnixArgs.cc
gcc/m2/mc-boot-ch/Gdtoa.c
gcc/m2/mc-boot-ch/Gerrno.c
gcc/m2/mc-boot-ch/Gldtoa.c
gcc/m2/mc-boot-ch/Gtermios.cc
gcc/m2/mc-boot-ch/Gwrapc.c
gcc/m2/mc-boot/GASCII.c
gcc/m2/mc-boot/GArgs.c
gcc/m2/mc-boot/GAssertion.c
gcc/m2/mc-boot/GBreak.c
gcc/m2/mc-boot/GCmdArgs.c
gcc/m2/mc-boot/GDebug.c
gcc/m2/mc-boot/GDynamicStrings.c
gcc/m2/mc-boot/GEnvironment.c
gcc/m2/mc-boot/GFIO.c
gcc/m2/mc-boot/GFormatStrings.c
gcc/m2/mc-boot/GFpuIO.c
gcc/m2/mc-boot/GIO.c
gcc/m2/mc-boot/GIndexing.c
gcc/m2/mc-boot/GM2Dependent.c
gcc/m2/mc-boot/GM2EXCEPTION.c
gcc/m2/mc-boot/GM2RTS.c
gcc/m2/mc-boot/GM2RTS.h
gcc/m2/mc-boot/GMemUtils.c
gcc/m2/mc-boot/GNumberIO.c
gcc/m2/mc-boot/GPushBackInput.c
gcc/m2/mc-boot/GRTExceptions.c
gcc/m2/mc-boot/GRTExceptions.h
gcc/m2/mc-boot/GRTco.h
gcc/m2/mc-boot/GRTentity.h [new file with mode: 0644]
gcc/m2/mc-boot/GRTint.c
gcc/m2/mc-boot/GSArgs.c
gcc/m2/mc-boot/GSFIO.c
gcc/m2/mc-boot/GStdIO.c
gcc/m2/mc-boot/GStorage.c
gcc/m2/mc-boot/GStrCase.c
gcc/m2/mc-boot/GStrIO.c
gcc/m2/mc-boot/GStrLib.c
gcc/m2/mc-boot/GStringConvert.c
gcc/m2/mc-boot/GSysStorage.c
gcc/m2/mc-boot/GTimeString.c
gcc/m2/mc-boot/Galists.c
gcc/m2/mc-boot/Gdecl.c
gcc/m2/mc-boot/Gkeyc.c
gcc/m2/mc-boot/Glists.c
gcc/m2/mc-boot/GmcComment.c
gcc/m2/mc-boot/GmcComp.c
gcc/m2/mc-boot/GmcDebug.c
gcc/m2/mc-boot/GmcError.c
gcc/m2/mc-boot/GmcFileName.c
gcc/m2/mc-boot/GmcLexBuf.c
gcc/m2/mc-boot/GmcMetaError.c
gcc/m2/mc-boot/GmcOptions.c
gcc/m2/mc-boot/GmcPreprocess.c
gcc/m2/mc-boot/GmcPretty.c
gcc/m2/mc-boot/GmcPrintf.c
gcc/m2/mc-boot/GmcQuiet.c
gcc/m2/mc-boot/GmcReserved.c
gcc/m2/mc-boot/GmcSearch.c
gcc/m2/mc-boot/GmcStack.c
gcc/m2/mc-boot/GmcStream.c
gcc/m2/mc-boot/Gmcp1.c
gcc/m2/mc-boot/Gmcp2.c
gcc/m2/mc-boot/Gmcp3.c
gcc/m2/mc-boot/Gmcp4.c
gcc/m2/mc-boot/Gmcp5.c
gcc/m2/mc-boot/GnameKey.c
gcc/m2/mc-boot/GsymbolKey.c
gcc/m2/mc-boot/Gtop.c
gcc/m2/mc-boot/Gvarargs.c
gcc/m2/mc-boot/Gwlists.c
gcc/m2/mc/decl.mod
gcc/m2/mc/mc.flex
gcc/m2/tools-src/mklink.c
libgm2/libm2cor/Makefile.am
libgm2/libm2cor/Makefile.in
libgm2/libm2iso/Makefile.am
libgm2/libm2iso/Makefile.in
libgm2/libm2log/Makefile.am
libgm2/libm2log/Makefile.in
libgm2/libm2pim/Makefile.am
libgm2/libm2pim/Makefile.in