public inbox for gcc-bugs@sourceware.org
help / color / mirror / Atom feed
* [Bug modula2/109729] New: gm2 (14.0.0) does not like a CHAR type FOR loop control variable any more
@ 2023-05-04 9:01 gaius at gcc dot gnu.org
2023-05-04 9:07 ` [Bug modula2/109729] " gaius at gcc dot gnu.org
` (4 more replies)
0 siblings, 5 replies; 6+ messages in thread
From: gaius at gcc dot gnu.org @ 2023-05-04 9:01 UTC (permalink / raw)
To: gcc-bugs
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=109729
Bug ID: 109729
Summary: gm2 (14.0.0) does not like a CHAR type FOR loop
control variable any more
Product: gcc
Version: 14.0
Status: UNCONFIRMED
Severity: normal
Priority: P3
Component: modula2
Assignee: gaius at gcc dot gnu.org
Reporter: gaius at gcc dot gnu.org
Target Milestone: ---
Copied from the gm2 mailing list:
"""
just recognised that gm2 (14.0.0) does not like a CHAR type FOR loop control
variable any more ... :-)
Here the simplified code reproducing the error
MODULE RealConvert;
FROM ConvTypes IMPORT ConvResults;
VAR RKonv : ARRAY ['0'..'9'] OF REAL;
IKonv : ARRAY ['0'..'9'] OF CARDINAL;
KommaZeichen : CHAR; (* Macht 1,0 statt 1.0 in Ausgaben m"oglich. *)
Ziffern : ARRAY [0..11] OF CHAR; (* + 0C *)
VAR c : CHAR;
p : CARDINAL;
BEGIN
(* Does not work ... *)
p:=0;
FOR c:='0' TO '9' DO RKonv[c]:=VAL(REAL,p); IKonv[c]:=p; INC(p); END;
(* This is essentially doing the same as the loop before - does work *)
IKonv["0"] := 0; IKonv["1"] := 1; IKonv["2"] := 2;
IKonv["3"] := 3; IKonv["4"] := 4; IKonv["5"] := 5;
IKonv["6"] := 6; IKonv["7"] := 7; IKonv["8"] := 8;
IKonv["9"] := 9;
RKonv["0"] := 0.0; RKonv["1"] := 1.0; RKonv["2"] := 2.0;
RKonv["3"] := 3.0; RKonv["4"] := 4.0; RKonv["5"] := 5.0;
RKonv["6"] := 6.0; RKonv["7"] := 7.0; RKonv["8"] := 8.0;
RKonv["9"] := 9.0;
KommaZeichen:='.';
Ziffern := "0123456789"; (* wg. GM2 *)
END RealConvert.
"""
^ permalink raw reply [flat|nested] 6+ messages in thread
* [Bug modula2/109729] gm2 (14.0.0) does not like a CHAR type FOR loop control variable any more
2023-05-04 9:01 [Bug modula2/109729] New: gm2 (14.0.0) does not like a CHAR type FOR loop control variable any more gaius at gcc dot gnu.org
@ 2023-05-04 9:07 ` gaius at gcc dot gnu.org
2023-05-04 14:18 ` gaius at gcc dot gnu.org
` (3 subsequent siblings)
4 siblings, 0 replies; 6+ messages in thread
From: gaius at gcc dot gnu.org @ 2023-05-04 9:07 UTC (permalink / raw)
To: gcc-bugs
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=109729
Gaius Mulley <gaius at gcc dot gnu.org> changed:
What |Removed |Added
----------------------------------------------------------------------------
Status|UNCONFIRMED |ASSIGNED
Ever confirmed|0 |1
Last reconfirmed| |2023-05-04
--- Comment #1 from Gaius Mulley <gaius at gcc dot gnu.org> ---
I think this bug was introduced when fixing PR-109497 (adding to constant chars
to generate a string). I suspect the internal inc (iterator) in the FOR loop
is trying to produce a string!
^ permalink raw reply [flat|nested] 6+ messages in thread
* [Bug modula2/109729] gm2 (14.0.0) does not like a CHAR type FOR loop control variable any more
2023-05-04 9:01 [Bug modula2/109729] New: gm2 (14.0.0) does not like a CHAR type FOR loop control variable any more gaius at gcc dot gnu.org
2023-05-04 9:07 ` [Bug modula2/109729] " gaius at gcc dot gnu.org
@ 2023-05-04 14:18 ` gaius at gcc dot gnu.org
2023-05-04 17:16 ` cvs-commit at gcc dot gnu.org
` (2 subsequent siblings)
4 siblings, 0 replies; 6+ messages in thread
From: gaius at gcc dot gnu.org @ 2023-05-04 14:18 UTC (permalink / raw)
To: gcc-bugs
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=109729
Gaius Mulley <gaius at gcc dot gnu.org> changed:
What |Removed |Added
----------------------------------------------------------------------------
CC| |gaius at gcc dot gnu.org
--- Comment #2 from Gaius Mulley <gaius at gcc dot gnu.org> ---
Created attachment 54995
--> https://gcc.gnu.org/bugzilla/attachment.cgi?id=54995&action=edit
Proposed fix
Here is a proposed fix and new testsuite entry. It introduces a new quadruple
used if the compiler needs to produce an arithmetic add rather than an add
which might be overloaded. The FOR loop uses the arithmetic add to increment
the iterator.
^ permalink raw reply [flat|nested] 6+ messages in thread
* [Bug modula2/109729] gm2 (14.0.0) does not like a CHAR type FOR loop control variable any more
2023-05-04 9:01 [Bug modula2/109729] New: gm2 (14.0.0) does not like a CHAR type FOR loop control variable any more gaius at gcc dot gnu.org
2023-05-04 9:07 ` [Bug modula2/109729] " gaius at gcc dot gnu.org
2023-05-04 14:18 ` gaius at gcc dot gnu.org
@ 2023-05-04 17:16 ` cvs-commit at gcc dot gnu.org
2023-05-04 17:22 ` gaius at gcc dot gnu.org
2023-07-28 14:12 ` cvs-commit at gcc dot gnu.org
4 siblings, 0 replies; 6+ messages in thread
From: cvs-commit at gcc dot gnu.org @ 2023-05-04 17:16 UTC (permalink / raw)
To: gcc-bugs
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=109729
--- Comment #3 from CVS Commits <cvs-commit at gcc dot gnu.org> ---
The master branch has been updated by Gaius Mulley <gaius@gcc.gnu.org>:
https://gcc.gnu.org/g:ac7c9954ece9a75c5e7c3b76a4800f2432002487
commit r14-484-gac7c9954ece9a75c5e7c3b76a4800f2432002487
Author: Gaius Mulley <gaiusmod2@gmail.com>
Date: Thu May 4 18:15:59 2023 +0100
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>
^ permalink raw reply [flat|nested] 6+ messages in thread
* [Bug modula2/109729] gm2 (14.0.0) does not like a CHAR type FOR loop control variable any more
2023-05-04 9:01 [Bug modula2/109729] New: gm2 (14.0.0) does not like a CHAR type FOR loop control variable any more gaius at gcc dot gnu.org
` (2 preceding siblings ...)
2023-05-04 17:16 ` cvs-commit at gcc dot gnu.org
@ 2023-05-04 17:22 ` gaius at gcc dot gnu.org
2023-07-28 14:12 ` cvs-commit at gcc dot gnu.org
4 siblings, 0 replies; 6+ messages in thread
From: gaius at gcc dot gnu.org @ 2023-05-04 17:22 UTC (permalink / raw)
To: gcc-bugs
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=109729
Gaius Mulley <gaius at gcc dot gnu.org> changed:
What |Removed |Added
----------------------------------------------------------------------------
Status|ASSIGNED |RESOLVED
Resolution|--- |FIXED
--- Comment #4 from Gaius Mulley <gaius at gcc dot gnu.org> ---
Closing after successful bootstrap and patch has been applied.
^ permalink raw reply [flat|nested] 6+ messages in thread
* [Bug modula2/109729] gm2 (14.0.0) does not like a CHAR type FOR loop control variable any more
2023-05-04 9:01 [Bug modula2/109729] New: gm2 (14.0.0) does not like a CHAR type FOR loop control variable any more gaius at gcc dot gnu.org
` (3 preceding siblings ...)
2023-05-04 17:22 ` gaius at gcc dot gnu.org
@ 2023-07-28 14:12 ` cvs-commit at gcc dot gnu.org
4 siblings, 0 replies; 6+ messages in thread
From: cvs-commit at gcc dot gnu.org @ 2023-07-28 14:12 UTC (permalink / raw)
To: gcc-bugs
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=109729
--- Comment #5 from CVS Commits <cvs-commit at gcc dot gnu.org> ---
The releases/gcc-13 branch has been updated by Gaius Mulley
<gaius@gcc.gnu.org>:
https://gcc.gnu.org/g:3e9aaa9bcb2fc64e64f4e8a2aa0f6f7395a21c52
commit r13-7622-g3e9aaa9bcb2fc64e64f4e8a2aa0f6f7395a21c52
Author: Gaius Mulley <gaiusmod2@gmail.com>
Date: Fri Jul 28 15:00:29 2023 +0100
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
PR modula2/110246
* 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.
(cherry picked from commit ac7c9954ece9a75c5e7c3b76a4800f2432002487)
Signed-off-by: Gaius Mulley <gaiusmod2@gmail.com>
^ permalink raw reply [flat|nested] 6+ messages in thread
end of thread, other threads:[~2023-07-28 14:12 UTC | newest]
Thread overview: 6+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2023-05-04 9:01 [Bug modula2/109729] New: gm2 (14.0.0) does not like a CHAR type FOR loop control variable any more gaius at gcc dot gnu.org
2023-05-04 9:07 ` [Bug modula2/109729] " gaius at gcc dot gnu.org
2023-05-04 14:18 ` gaius at gcc dot gnu.org
2023-05-04 17:16 ` cvs-commit at gcc dot gnu.org
2023-05-04 17:22 ` gaius at gcc dot gnu.org
2023-07-28 14:12 ` cvs-commit at gcc dot gnu.org
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).