-
- Downloads
PR modula2/109729 cannot use a CHAR type as a FOR loop iterator
This patch introduces a new quadruple ArithAddOp which is used in
the construction of FOR loop to ensure that when constant folding
is applied it does not concatenate two constant char operands into
a string constant. Overloading only occurs with constant operands.
gcc/m2/ChangeLog:
PR modula2/109729
* gm2-compiler/M2GenGCC.mod (CodeStatement): Detect
ArithAddOp and call CodeAddChecked.
(ResolveConstantExpressions): Detect ArithAddOp and call
FoldArithAdd.
(FoldArithAdd): New procedure.
(FoldAdd): Refactor to use FoldArithAdd.
* gm2-compiler/M2Quads.def (QuadOperator): Add ArithAddOp.
* gm2-compiler/M2Quads.mod: Remove commented imports.
(QuadFrame): Changed comments to use GNU coding standards.
(ArithPlusTok): New global variable.
(BuildForToByDo): Use ArithPlusTok instead of PlusTok.
(MakeOp): Detect ArithPlusTok and return ArithAddOp.
(WriteQuad): Add ArithAddOp clause.
(WriteOperator): Add ArithAddOp clause.
(Init): Initialize ArithPlusTok.
gcc/testsuite/ChangeLog:
PR modula2/109729
* gm2/pim/run/pass/ForChar.mod: New test.
Signed-off-by:
Gaius Mulley <gaiusmod2@gmail.com>
Showing
- gcc/m2/gm2-compiler/M2GenGCC.mod 19 additions, 5 deletionsgcc/m2/gm2-compiler/M2GenGCC.mod
- gcc/m2/gm2-compiler/M2Quads.def 1 addition, 0 deletionsgcc/m2/gm2-compiler/M2Quads.def
- gcc/m2/gm2-compiler/M2Quads.mod 32 additions, 25 deletionsgcc/m2/gm2-compiler/M2Quads.mod
- gcc/testsuite/gm2/pim/run/pass/ForChar.mod 33 additions, 0 deletionsgcc/testsuite/gm2/pim/run/pass/ForChar.mod
Loading
Please register or sign in to comment