public inbox for gcc-bugs@sourceware.org
help / color / mirror / Atom feed
* [Bug modula2/110246] New: Using variables of type CHAR or BYTE as array index does not work
@ 2023-06-14  5:11 admin@tho-otto.de
  2023-06-14  5:27 ` [Bug modula2/110246] " admin@tho-otto.de
                   ` (3 more replies)
  0 siblings, 4 replies; 5+ messages in thread
From: admin@tho-otto.de @ 2023-06-14  5:11 UTC (permalink / raw)
  To: gcc-bugs

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

            Bug ID: 110246
           Summary: Using variables of type CHAR or BYTE as array index
                    does not work
           Product: gcc
           Version: 13.1.0
            Status: UNCONFIRMED
          Severity: normal
          Priority: P3
         Component: modula2
          Assignee: gaius at gcc dot gnu.org
          Reporter: admin@tho-otto.de
  Target Milestone: ---

In the following example:

IMPLEMENTATION MODULE foo;

FROM SYSTEM IMPORT BYTE;

VAR arr: ARRAY['A'..'Z'] OF INTEGER;
VAR ch: CHAR;

BEGIN
  FOR ch := 'A' TO 'Z' DO arr[ch] := 0 END;
END foo.

I get error messages:

/usr/lib64/gcc/x86_64-suse-linux/13/m2/m2pim/COROUTINES.def:37:1: error: type
incompatibility, attempting to use a string ('_T38') when a CHAR is expected
/usr/lib64/gcc/x86_64-suse-linux/13/m2/m2pim/COROUTINES.def:37:1: error: type
incompatibility, attempting to use a string ('_T38') when a CHAR is expected
/usr/lib64/gcc/x86_64-suse-linux/13/m2/m2pim/COROUTINES.def:37:1: error: type
incompatibility, attempting to use a string ('_T38') when a CHAR is expected
/usr/lib64/gcc/x86_64-suse-linux/13/m2/m2pim/COROUTINES.def:37:1: error: type
incompatibility, attempting to use a string ('_T38') when a CHAR is expected

(note also the totally unrelated source line in the error message)

Changing the type of ch to BYTE i get instead:

/usr/lib64/gcc/x86_64-suse-linux/13/m2/m2pim/COROUTINES.def:37:1: error: left
operand ‘ch’ of type ‘BYTE’ is not allowed in binary expression +

^ permalink raw reply	[flat|nested] 5+ messages in thread

* [Bug modula2/110246] Using variables of type CHAR or BYTE as array index does not work
  2023-06-14  5:11 [Bug modula2/110246] New: Using variables of type CHAR or BYTE as array index does not work admin@tho-otto.de
@ 2023-06-14  5:27 ` admin@tho-otto.de
  2023-07-28 14:12 ` cvs-commit at gcc dot gnu.org
                   ` (2 subsequent siblings)
  3 siblings, 0 replies; 5+ messages in thread
From: admin@tho-otto.de @ 2023-06-14  5:27 UTC (permalink / raw)
  To: gcc-bugs

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

--- Comment #1 from Thorsten Otto <admin@tho-otto.de> ---
Edit: the problem seems to be caused by using a FOR loop. Changing it to a
similar WHILE loop:

  ch := 'A';
  WHILE ch <= 'Z' DO arr[ch] := 0; INC(ch); END;

does work without problems.

^ permalink raw reply	[flat|nested] 5+ messages in thread

* [Bug modula2/110246] Using variables of type CHAR or BYTE as array index does not work
  2023-06-14  5:11 [Bug modula2/110246] New: Using variables of type CHAR or BYTE as array index does not work admin@tho-otto.de
  2023-06-14  5:27 ` [Bug modula2/110246] " admin@tho-otto.de
@ 2023-07-28 14:12 ` cvs-commit at gcc dot gnu.org
  2023-07-28 14:13 ` gaius at gcc dot gnu.org
  2023-07-28 14:14 ` gaius at gcc dot gnu.org
  3 siblings, 0 replies; 5+ 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=110246

--- Comment #2 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] 5+ messages in thread

* [Bug modula2/110246] Using variables of type CHAR or BYTE as array index does not work
  2023-06-14  5:11 [Bug modula2/110246] New: Using variables of type CHAR or BYTE as array index does not work admin@tho-otto.de
  2023-06-14  5:27 ` [Bug modula2/110246] " admin@tho-otto.de
  2023-07-28 14:12 ` cvs-commit at gcc dot gnu.org
@ 2023-07-28 14:13 ` gaius at gcc dot gnu.org
  2023-07-28 14:14 ` gaius at gcc dot gnu.org
  3 siblings, 0 replies; 5+ messages in thread
From: gaius at gcc dot gnu.org @ 2023-07-28 14:13 UTC (permalink / raw)
  To: gcc-bugs

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

Gaius Mulley <gaius at gcc dot gnu.org> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
     Ever confirmed|0                           |1
             Status|UNCONFIRMED                 |ASSIGNED
   Last reconfirmed|                            |2023-07-28

--- Comment #3 from Gaius Mulley <gaius at gcc dot gnu.org> ---
Confirmed thanks for the bug report.

^ permalink raw reply	[flat|nested] 5+ messages in thread

* [Bug modula2/110246] Using variables of type CHAR or BYTE as array index does not work
  2023-06-14  5:11 [Bug modula2/110246] New: Using variables of type CHAR or BYTE as array index does not work admin@tho-otto.de
                   ` (2 preceding siblings ...)
  2023-07-28 14:13 ` gaius at gcc dot gnu.org
@ 2023-07-28 14:14 ` gaius at gcc dot gnu.org
  3 siblings, 0 replies; 5+ messages in thread
From: gaius at gcc dot gnu.org @ 2023-07-28 14:14 UTC (permalink / raw)
  To: gcc-bugs

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

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 now that the patch has been applied.

^ permalink raw reply	[flat|nested] 5+ messages in thread

end of thread, other threads:[~2023-07-28 14:14 UTC | newest]

Thread overview: 5+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2023-06-14  5:11 [Bug modula2/110246] New: Using variables of type CHAR or BYTE as array index does not work admin@tho-otto.de
2023-06-14  5:27 ` [Bug modula2/110246] " admin@tho-otto.de
2023-07-28 14:12 ` cvs-commit at gcc dot gnu.org
2023-07-28 14:13 ` gaius at gcc dot gnu.org
2023-07-28 14:14 ` gaius 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).