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

--- Comment #4 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:4bd2f59af4a78cdc80039cffa51c1d9ad91081a3

commit r14-9739-g4bd2f59af4a78cdc80039cffa51c1d9ad91081a3
Author: Gaius Mulley <gaiusm...@gmail.com>
Date:   Mon Apr 1 19:18:36 2024 +0100

    PR modula2/114548 gm2 fails to identify variable in a const expression

    This patch introduces stricter checking within standard procedure
    functions which detect whether paramaters are variable when used
    in a const expression.

    gcc/m2/ChangeLog:

            PR modula2/114548
            * gm2-compiler/M2Quads.mod (ConvertToAddress): Pass
            procedure, false parameters to BuildConvertFunction.
            (PushOne): Pass procedure, true parameters to
            BuildConvertFunction.
            Remove usused parameter internal.
            (BuildPseudoBy): Remove parameter to PushOne.
            (BuildIncProcedure): Ditto.
            (BuildDecProcedure): Ditto.
            (BuildFunctionCall): Add ConstExpr parameter to
            BuildPseudoFunctionCall.
            (BuildConstFunctionCall): Add procedure and true to
            BuildConvertFunction.
            (BuildPseudoFunctionCall): Add ConstExpr parameter.
            Pass ProcSym and ConstExpr to BuildLengthFunction,
            BuildConvertFunction, BuildOddFunction, BuildAbsFunction,
            BuildCapFunction, BuildValFunction, BuildChrFunction,
            BuildOrdFunction, BuildIntFunction, BuildTruncFunction,
            BuildFloatFunction, BuildAddAdrFunction, BuildSubAdrFunction,
            BuildDifAdrFunction, BuildCastFunction, BuildReFunction,
            BuildImFunction and BuildCmplxFunction.
            (BuildAddAdrFunction): Add ProcSym, ConstExpr parameters and
            check for constant parameters.
            (BuildSubAdrFunction): Ditto.
            (BuildDifAdrFunction): Ditto.
            (ConstExprError): Ditto.
            (BuildLengthFunction): Ditto.
            (BuildOddFunction): Ditto.
            (BuildAbsFunction): Ditto.
            (BuildCapFunction): Ditto.
            (BuildChrFunction): Ditto.
            (BuildOrdFunction): Ditto.
            (BuildIntFunction): Ditto.
            (BuildValFunction): Ditto.
            (BuildCastFunction): Ditto.
            (BuildConvertFunction): Ditto.
            (BuildTruncFunction): Ditto.
            (BuildFloatFunction): Ditto.
            (BuildReFunction): Ditto.
            (BuildImFunction): Ditto.
            (BuildCmplxFunction): Ditto.

    gcc/testsuite/ChangeLog:

            PR modula2/114548
            * gm2/iso/const/fail/expression.mod: New test.
            * gm2/iso/const/fail/iso-const-fail.exp: New test.
            * gm2/iso/const/fail/testabs.mod: New test.
            * gm2/iso/const/fail/testaddadr.mod: New test.
            * gm2/iso/const/fail/testcap.mod: New test.
            * gm2/iso/const/fail/testcap2.mod: New test.
            * gm2/iso/const/fail/testchr.mod: New test.
            * gm2/iso/const/fail/testchr2.mod: New test.
            * gm2/iso/const/fail/testcmplx.mod: New test.
            * gm2/iso/const/fail/testfloat.mod: New test.
            * gm2/iso/const/fail/testim.mod: New test.
            * gm2/iso/const/fail/testint.mod: New test.
            * gm2/iso/const/fail/testlength.mod: New test.
            * gm2/iso/const/fail/testodd.mod: New test.
            * gm2/iso/const/fail/testord.mod: New test.
            * gm2/iso/const/fail/testre.mod: New test.
            * gm2/iso/const/fail/testtrunc.mod: New test.
            * gm2/iso/const/fail/testval.mod: New test.
            * gm2/iso/const/pass/constbool.mod: New test.
            * gm2/iso/const/pass/constbool2.mod: New test.
            * gm2/iso/const/pass/constbool3.mod: New test.

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

Reply via email to