]> git.ipfire.org Git - thirdparty/gcc.git/commit
PR modula2/114548 gm2 fails to identify variable in a const expression
authorGaius Mulley <gaiusmod2@gmail.com>
Mon, 1 Apr 2024 18:18:36 +0000 (19:18 +0100)
committerGaius Mulley <gaiusmod2@gmail.com>
Mon, 1 Apr 2024 18:18:36 +0000 (19:18 +0100)
commit4bd2f59af4a78cdc80039cffa51c1d9ad91081a3
tree4069915fc9aed2dc104a58436aba7996d58370d9
parentbba118db3f63cb1e3953a014aa3ac2ad89908950
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 <gaiusmod2@gmail.com>
22 files changed:
gcc/m2/gm2-compiler/M2Quads.mod
gcc/testsuite/gm2/iso/const/fail/expression.mod [new file with mode: 0644]
gcc/testsuite/gm2/iso/const/fail/iso-const-fail.exp [new file with mode: 0644]
gcc/testsuite/gm2/iso/const/fail/testabs.mod [new file with mode: 0644]
gcc/testsuite/gm2/iso/const/fail/testaddadr.mod [new file with mode: 0644]
gcc/testsuite/gm2/iso/const/fail/testcap.mod [new file with mode: 0644]
gcc/testsuite/gm2/iso/const/fail/testcap2.mod [new file with mode: 0644]
gcc/testsuite/gm2/iso/const/fail/testchr.mod [new file with mode: 0644]
gcc/testsuite/gm2/iso/const/fail/testchr2.mod [new file with mode: 0644]
gcc/testsuite/gm2/iso/const/fail/testcmplx.mod [new file with mode: 0644]
gcc/testsuite/gm2/iso/const/fail/testfloat.mod [new file with mode: 0644]
gcc/testsuite/gm2/iso/const/fail/testim.mod [new file with mode: 0644]
gcc/testsuite/gm2/iso/const/fail/testint.mod [new file with mode: 0644]
gcc/testsuite/gm2/iso/const/fail/testlength.mod [new file with mode: 0644]
gcc/testsuite/gm2/iso/const/fail/testodd.mod [new file with mode: 0644]
gcc/testsuite/gm2/iso/const/fail/testord.mod [new file with mode: 0644]
gcc/testsuite/gm2/iso/const/fail/testre.mod [new file with mode: 0644]
gcc/testsuite/gm2/iso/const/fail/testtrunc.mod [new file with mode: 0644]
gcc/testsuite/gm2/iso/const/fail/testval.mod [new file with mode: 0644]
gcc/testsuite/gm2/iso/const/pass/constbool.mod [new file with mode: 0644]
gcc/testsuite/gm2/iso/const/pass/constbool2.mod [new file with mode: 0644]
gcc/testsuite/gm2/iso/const/pass/constbool3.mod [new file with mode: 0644]