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

--- Comment #3 from GCC Commits <cvs-commit at gcc dot gnu.org> ---
The master branch has been updated by Gaius Mulley <ga...@gcc.gnu.org>:

https://gcc.gnu.org/g:eadd05d5601063bd0c7ef6c3606b4eeb856d57d7

commit r14-9998-geadd05d5601063bd0c7ef6c3606b4eeb856d57d7
Author: Gaius Mulley <gaiusm...@gmail.com>
Date:   Tue Apr 16 23:08:43 2024 +0100

    PR modula2/114745: const cast causes ICE

    This patch allows SYSTEM.CAST to be used during a const expression and
    prevents an ICE.

    gcc/m2/ChangeLog:

            PR modula2/114745
            * gm2-compiler/M2Code.mod (DumpLangDecl): Replace with ...
            (GetDumpDecl): ... this.
            (DumpLangGimple): Replace with ...
            (GetDumpGimple): ... this.
            * gm2-compiler/M2GenGCC.mod:
            * gm2-compiler/M2LangDump.mod (GetDumpLangQuadFilename): Replace
with ...
            (GetDumpQuadFilename): ... this.
            (GetDumpLangDeclFilename): Replace with ...
            (GetDumpDeclFilename): ... this.
            (GetDumpLangGimpleFilename): Replace with ...
            (GetDumpGimpleFilename): ... this.
            * gm2-compiler/M2Options.def (GetDumpLangDeclFilename): New
            procedure function.
            (GetDumpDeclFilename): Ditto.
            (SetDumpLangDeclFilename): New procedure.
            (SetDumpDeclFilename): Ditto.
            (GetDumpLangQuadFilename): New procedure function.
            (GetDumpQuadFilename): Ditto
            (SetDumpLangQuadFilename): New procedure.
            (SetDumpQuadFilename): Ditto.
            (GetDumpLangGimpleFilename): New procedure function.
            (GetDumpGimpleFilename): Ditto.
            (SetDumpLangGimpleFilename): New procedure.
            (SetDumpGimpleFilename): Ditto.
            (GetDumpLangGimple): New procedure function.
            (SetM2Dump): New procedure.
            (GetDumpGimple): New procedure function.
            (GetDumpQuad): Ditto.
            (GetDumpDecl): Ditto.
            * gm2-compiler/M2Options.mod (DumpLangDeclFilename): Remove.
            (DumpLangQuadFilename): Ditto.
            (DumpLangGimpleFilename): Ditto.
            (DumpDeclFilename): New variable.
            (DumpQuadFilename): Ditto.
            (DumpGimpleFilename): Ditto.
            (DebugTraceTree): New variable.
            (SetQuadDebugging): Rewrite.
            (GetDumpLangDeclFilename): Replace with ...
            (GetDumpDeclFilename): ... this.
            (SetDumpLangQuadFilename): Replace with ...
            (SetDumpQuadFilename): ... this.
            (GetDumpLangGimpleFilename): Replace with ...
            (GetDumpGimpleFilename): ... this.
            (SetDumpLangGimpleFilename): Replace with ...
            (SetDumpGimpleFilename): ... this.
            (GetDumpLangGimple): Remove.
            (MatchDump): New procedure function.
            (SetM2Dump): New procedure.
            (GetDumpGimple): New procedure function.
            (GetDumpQuad): Ditto.
            (GetDumpDecl): Ditto.
            (GetDumpLangGimple): Ditto.
            * gm2-compiler/M2Quads.mod (BreakAtQuad): Assigned to 140.
            (BuildTypeCoercion): Add ConstExpr parameter.
            Check for const parameter in a const expression.
            Create a constant temporary if in a const expression.
            (BuildCastFunction): Pass ConstExpr to BuildTypeCoercion.
            (BuildFunctionCall): Pass ConstExpr to BuildTypeCoercion.
            * gm2-compiler/PCSymBuild.mod (buildConstFunction): Test for Cast
            and call InitConvert.
            (ErrorConstFunction): Add CAST to the error message.
            * gm2-compiler/SymbolTable.mod (GetConstStringContent): Remove
            unused procedure.
            * gm2-gcc/m2decl.cc (m2decl_DeclareKnownConstant): Copy value
            and change type of value.
            * gm2-gcc/m2options.h (M2Options_GetDumpLangDeclFilename): Remove.
            (M2Options_SetDumpLangDeclFilename): Ditto.
            (M2Options_GetDumpLangQuadFilename): Ditto.
            (M2Options_SetDumpLangQuadFilename): Ditto.
            (M2Options_GetDumpLangGimpleFilename): Ditto.
            (M2Options_SetDumpLangGimpleFilename): Ditto.
            (M2Options_GetDumpLangGimple): Ditto.
            (M2Options_GetDumpDeclFilename): New function.
            (M2Options_SetDumpDeclFilename): Ditto.
            (M2Options_GetDumpQuadFilename): Ditto.
            (M2Options_SetDumpQuadFilename): Ditto.
            (M2Options_GetDumpGimpleFilename): Ditto.
            (M2Options_SetDumpGimpleFilename): Ditto.
            (M2Options_SetM2Dump): Ditto.
            (M2Options_GetDumpGimple): Ditto.
            * gm2-gcc/m2pp.cc (GM2): New define.
            (m2pp_type_lowlevel): Remove linefeed.
            (m2pp_identifier): Add type description for const.
            (m2pp_assignment): Display lhs/rhs types.
            (m2pp_dump_gimple): Replace GetDumpLangGimple with GetDumpGimple.
            * gm2-lang.cc (ENABLE_QUAD_DUMP_ALL): Remove.
            (ENABLE_M2DUMP_ALL): New define.
            (gm2_langhook_handle_option): Remove commented options
            OPT_fdump_lang_all, OPT_fdump_lang_decl_, OPT_fdump_lang_gimple,
            OPT_fdump_lang_gimple_, OPT_fdump_lang_quad and
            OPT_fdump_lang_quad_.
            Add commented options OPT_fm2_dump_, OPT_fm2_dump_decl_,
            OPT_fm2_dump_gimple_ and OPT_fm2_dump_quad_.

    gcc/testsuite/ChangeLog:

            PR modula2/114745
            * gm2/iso/const/pass/constcast.mod: New test.
            * gm2/iso/const/pass/constodd.mod: New test.
            * gm2/pim/pass/tinyindr.mod: New test.

    Signed-off-by: Gaius Mulley <gaiusm...@gmail.com>

Reply via email to