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: ad...@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 +

Reply via email to