https://gcc.gnu.org/bugzilla/show_bug.cgi?id=112946
Bug ID: 112946 Summary: Assignment of string to enumeration or set crashes Product: gcc Version: 14.0 Status: UNCONFIRMED Severity: normal Priority: P3 Component: modula2 Assignee: gaius at gcc dot gnu.org Reporter: juriad at gmail dot com Target Milestone: --- Created attachment 56846 --> https://gcc.gnu.org/bugzilla/attachment.cgi?id=56846&action=edit reproducer + gcc crash output + crash report I am playing with Modula-2 (due to Advent of Code). I compiled GCC from master branch (fbfe43daec6443978df65530dc5f7f3f8a4e6f9e). The attached program crashes when compiling (the error differs between strings of length 1 and 2): gm2 -freport-bug -fiso -static-libgm2 -o prg bug.mod The full output is attached as well as the referenced report from /tmp/: cc1gm2: internal compiler error: tree check: expected integer_cst, have string_cst in get_len, at tree.h:6473 The expected behavior would be to show the error as usual with highlighted line and explanation. Apart from this crash, I encountered one more issue which may not be an error (no idea; I have less than 1 day of experience with Modula) but would deserve at least a warning. Arithmetic between set and enumeration does not produce what I would expect. DIRS := Dirs{Left, Right}; DIRS := DIRS + Up; IF NOT (Up IN DIRS) THEN HALT END; On the other hand: DIRS := Dirs{Left, Right} + Up; leads to another crash: cc1gm2: internal compiler error: expecting type of constant to be a set