https://gcc.gnu.org/bugzilla/show_bug.cgi?id=105392
--- Comment #2 from Rainer Orth <ro at gcc dot gnu.org> --- With PR modula2/101392 fixed, I ran into this one again. As it turns out, it's another instance of the same issue: $ cc1gm2 -iplugindir=/var/gcc/modula-2/11.4-gcc-g3/./gcc/plugin -quiet -mcpu=v9 -g -O2 -fPIC -fplugin=m2rte -c -I ../libm2pim -I /vol/gcc/src/hg/master/modula-2/gcc/m2/gm2-libs-pim -I /vol/gcc/src/hg/master/modula-2/gcc/m2/gm2-libs -I /vol/gcc/src/hg/master/modula-2/gcc/m2/gm2-libs-iso /vol/gcc/src/hg/master/modula-2/libgm2/libm2log/../../gcc/m2/gm2-libs-pim/BitBlockOps.mod -o BitBlockOps.s Thread 2 received signal SIGSEGV, Segmentation fault. [Switching to Thread 1 (LWP 1)] 0xffbfde4c in ?? () (gdb) bt #0 0xffbfde4c in ?? () #1 0x00d2d40c in m2statement_BuildUnaryForeachWordDo (location=3659819, type=<type_decl 0xfa820630 BITSET>, op1=<var_decl 0xfa86c840 _T97>, op2=<var_decl 0xfa86c7e8 _T96>, unop=0xffbfde4c, is_op1lvalue=0, is_op2lvalue=1, is_op1const=0, is_op2const=0) at /vol/gcc/src/hg/master/modula-2/gcc/m2/gm2-gcc/m2statement.cc:543 #2 0x00d95e4c in CodeUnarySet (unop=..., constop=..., quad=338, result=2319, expr=2318) at m2/gm2-compiler-boot/M2GenGCC.c:6017 #3 0x00d979a8 in CodeNegateChecked (quad=338, op1=2319, op3=2318) at m2/gm2-compiler-boot/M2GenGCC.c:6554 #4 0x00d893dc in CodeStatement (q=338) at m2/gm2-compiler-boot/M2GenGCC.c:1815 #5 0x00d9f104 in M2GenGCC_ConvertQuadsToTree (Start=338, End=382) at m2/gm2-compiler-boot/M2GenGCC.c:8454 #6 0x00de2f28 in M2Scope_ForeachScopeBlockDo (sb=0x38efa90, p=...) at m2/gm2-compiler-boot/M2Scope.c:651 #7 0x00d720e0 in M2Code_CodeBlock (scope=304) at m2/gm2-compiler-boot/M2Code.c:511 #8 0x00d54c70 in Lists_ForeachItemInListDo (l=0x3773c48, P=...) at m2/gm2-compiler-boot/Lists.c:393 #9 0x00e0bb38 in SymbolTable_ForeachProcedureDo (Sym=155, P=...) at m2/gm2-compiler-boot/SymbolTable.c:14044 #10 0x00d722e4 in M2Code_CodeBlock (scope=155) at m2/gm2-compiler-boot/M2Code.c:543 #11 0x00d71660 in DoCodeBlock () at m2/gm2-compiler-boot/M2Code.c:274 #12 0x00d71f20 in M2Code_Code () at m2/gm2-compiler-boot/M2Code.c:474 #13 0x00d72574 in Compile (s=0x376d628) at m2/gm2-compiler-boot/M2Comp.c:211 #14 0x00d73a84 in M2Comp_compile (filename=0xffbfe9df) at m2/gm2-compiler-boot/M2Comp.c:768 #15 0x00d3a638 in init_PerCompilationInit (filename=0xffbfe9df "/vol/gcc/src/hg/master/modula-2/libgm2/libm2log/../../gcc/m2/gm2-libs-pim/BitBlockOps.mod") at /vol/gcc/src/hg/master/modula-2/gcc/m2/gm2-gcc/init.cc:198 #16 0x00ce1c0c in gm2_parse_input_files (filenames=0x372d6a8, filename_count=1) at /vol/gcc/src/hg/master/modula-2/gcc/m2/gm2-lang.cc:461 #17 0x00ce1c68 in gm2_langhook_parse_file () at /vol/gcc/src/hg/master/modula-2/gcc/m2/gm2-lang.cc:468 #18 0x0190637c in compile_file () at /vol/gcc/src/hg/master/modula-2/gcc/toplev.cc:444 #19 0x0190b1bc in do_compile (no_backend=false) at /vol/gcc/src/hg/master/modula-2/gcc/toplev.cc:2125 #20 0x0190b784 in toplev::main (this=0xffbfe66a, argc=20, argv=0xffbfe6d4) at /vol/gcc/src/hg/master/modula-2/gcc/toplev.cc:2277 #21 0x02e05328 in main (argc=20, argv=0xffbfe6d4) at /vol/gcc/src/hg/master/modula-2/gcc/main.cc:39 (gdb) up #1 0x00d2d40c in m2statement_BuildUnaryForeachWordDo (location=3659819, type=<type_decl 0xfa820630 BITSET>, op1=<var_decl 0xfa86c840 _T97>, op2=<var_decl 0xfa86c7e8 _T96>, unop=0xffbfde4c, is_op1lvalue=0, is_op2lvalue=1, is_op1const=0, is_op2const=0) at /vol/gcc/src/hg/master/modula-2/gcc/m2/gm2-gcc/m2statement.cc:543 543 m2statement_BuildAssignmentTree ( /* Small set size <= TSIZE(WORD). */ m2statement_BuildAssignmentTree ( location, m2treelib_get_rvalue (location, op1, type, is_op1lvalue), (*unop) (location, m2treelib_get_rvalue (location, op2, type, is_op2lvalue), FALSE)); (gdb) x/5i unop 0xffbfde4c: unknown 0xffbfde50: unknown 0xffbfde54: unknown 0xffbfde58: fbne 0xfff004f8 0xffbfde5c: illtrap 0xfff7d82b (gdb) ptype unop type = union tree_node { [...] } *(*)(location_t, tree, int) (gdb) up #2 0x00d95e4c in CodeUnarySet (unop=..., constop=..., quad=338, result=2319, expr=2318) at m2/gm2-compiler-boot/M2GenGCC.c:6017 6017 m2statement_BuildUnaryForeachWordDo (location, SymbolConversion_Mod2Gcc (SymbolTable_GetType (result)), SymbolConversion_Mod2Gcc (result), SymbolConversion_Mod2Gcc (expr), unop, (SymbolTable_GetMode (result)) == SymbolTable_LeftValue, (SymbolTable_GetMode (expr)) == SymbolTable_LeftValue, SymbolTable_IsConst (result), SymbolTable_IsConst (expr)); (gdb) ptype unop type = struct m2expr_BuildUnarySetFunction_p { m2expr_BuildUnarySetFunction_t proc; } With the attached patch, I got the build to complete.