https://gcc.gnu.org/bugzilla/show_bug.cgi?id=117120
Bug ID: 117120 Summary: case ch with a nul char constant causes ICE Product: gcc Version: 15.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: --- Consider the following code: $ cat test.mod MODULE test; FROM STextIO IMPORT WriteString; VAR ch: CHAR; BEGIN ch := ''; CASE ch OF '' : WriteString("") | '1': WriteString("1") ELSE END END test. $ gm2 -g test.mod cc1gm2: internal compiler error: tree check: expected integer_cst, have string_cst in get_len, at tree.h:6509 0x2e3c9a9 internal_error(char const*, ...) ../../gcc/diagnostic-global-context.cc:517 0x1295fe1 tree_check_failed(tree_node const*, char const*, int, char const*, ...) ../../gcc/tree.cc:9003 0x411175 tree_check(tree_node const*, char const*, int, char const*, tree_code) ../../gcc/tree.h:3921 0x43226a wi::extended_tree<131072>::get_len() const ../../gcc/tree.h:6509 0x4321ba wi::int_traits<generic_wide_int<wi::extended_tree<131072> > >::decompose(long*, unsigned int, generic_wide_int<wi::extended_tree<131072> > const&) ../../gcc/wide-int.h:1050 0x432018 wide_int_ref_storage<true, false>::wide_int_ref_storage<generic_wide_int<wi::extended_tree<131072> > >(generic_wide_int<wi::extended_tree<131072> > const&, unsigned int) ../../gcc/wide-int.h:1099 0x431b86 generic_wide_int<wide_int_ref_storage<true, false> >::generic_wide_int<generic_wide_int<wi::extended_tree<131072> > >(generic_wide_int<wi::extended_tree<131072> > const&, unsigned int) ../../gcc/wide-int.h:855 0x43159a int wi::cmps<generic_wide_int<wi::extended_tree<131072> >, generic_wide_int<wi::extended_tree<131072> > >(generic_wide_int<wi::extended_tree<131072> > const&, generic_wide_int<wi::extended_tree<131072> > const&) ../../gcc/wide-int.h:2447 0x431508 tree_int_cst_compare(tree_node const*, tree_node const*) ../../gcc/tree.h:6694 0x4270eb m2expr_CompareTrees ../../gcc/m2/gm2-gcc/m2expr.cc:86 0x4f5f75 M2Range_OverlapsRange ../../gcc/m2/gm2-compiler/M2Range.mod:163 0x471fbe Overlaps ../../gcc/m2/gm2-compiler/M2CaseList.mod:390 0x472799 OverlappingCaseBound ../../gcc/m2/gm2-compiler/M2CaseList.mod:464 0x471871 M2CaseList_OverlappingCaseBounds ../../gcc/m2/gm2-compiler/M2CaseList.mod:500 0x4fa4be FoldCaseBounds ../../gcc/m2/gm2-compiler/M2Range.mod:2086 0x4f4b0f M2Range_FoldRangeCheck ../../gcc/m2/gm2-compiler/M2Range.mod:2312 0x49cb47 FoldRange ../../gcc/m2/gm2-compiler/M2GenGCC.mod:895 0x49b041 M2GenGCC_ResolveConstantExpressions ../../gcc/m2/gm2-compiler/M2GenGCC.mod:651 0x486fea M2GCCDeclare_FoldConstants ../../gcc/m2/gm2-compiler/M2GCCDeclare.mod:2643 0x46ea48 M2BasicBlock_ForeachBasicBlockDo ../../gcc/m2/gm2-compiler/M2BasicBlock.mod:282 Please submit a full bug report, with preprocessed source (by using -freport-bug). Please include the complete backtrace with any bug report. See <https://gcc.gnu.org/bugs/> for instructions.