https://gcc.gnu.org/bugzilla/show_bug.cgi?id=109952
Bug ID: 109952 Summary: Inconsistent HIGH values with 'ARRAY OF CHAR' 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: --- As reported on the gm2 mailing list the behaviour of HIGH is inconsistent. MODULE port_test8_gm2; FROM IOChan IMPORT ChanId; FROM StdChans IMPORT StdOutChan; FROM Strings IMPORT Length; FROM TextIO IMPORT WriteLn, WriteString; FROM WholeIO IMPORT WriteCard; VAR str_a: ARRAY[0..0] OF CHAR; str_b: ARRAY[0..1] OF CHAR; str_c: ARRAY[0..2] OF CHAR; PROCEDURE ShowStringInfos(the_str: ARRAY OF CHAR); VAR cid_out: ChanId; BEGIN (* PROCEDURE ShowStringInfos *) cid_out:=StdOutChan(); WriteString(cid_out, 'Length(the_str): '); WriteCard(cid_out, Length(the_str), 1); WriteLn(cid_out); WriteString(cid_out, 'HIGH(the_str): '); WriteCard(cid_out, HIGH(the_str), 1); WriteLn(cid_out); WriteString(cid_out, 'the_str: '); WriteString(cid_out, the_str); WriteLn(cid_out); WriteLn(cid_out); END ShowStringInfos; BEGIN (* MODULE port_test8_gm2 *) ShowStringInfos('1'); ShowStringInfos('12'); ShowStringInfos('123'); str_a:='a'; ShowStringInfos(str_a); str_b:='ab'; ShowStringInfos(str_b); str_c:='abc'; ShowStringInfos(str_c); str_c:='d'; ShowStringInfos(str_c); END port_test8_gm2. ShowStringInfos just prints out the Length, the HIGH value and the string proper which is passed to the PROCEDURE. When using literals '1', '12' and '123' the HIGH values are 0, 2 and 3.