https://gcc.gnu.org/bugzilla/show_bug.cgi?id=116378
Iain Sandoe <iains at gcc dot gnu.org> changed: What |Removed |Added ---------------------------------------------------------------------------- Ever confirmed|0 |1 Last reconfirmed| |2024-08-15 Status|UNCONFIRMED |NEW --- Comment #1 from Iain Sandoe <iains at gcc dot gnu.org> --- reproduced on multiple Darwin versions, so confirming. (guess) Looks to me as if there might be UB somewhere - perhaps a function that should have a return statement is missing it? (see the asm below) example: m2/boot-bin/mc --olang=c++ --h-file-prefix=G -I/src-local/gcc-master/gcc/m2/gm2-libs -I/src-local/gcc-master/gcc/m2/gm2-compiler -I/src-local/gcc-master/gcc/m2/gm2-libiberty -I/src-local/gcc-master/gcc/m2/gm2-gcc --quiet --gcc-config-system -o=m2/gm2-libs-boot/GASCII.h /src-local/gcc-master/gcc/m2/gm2-libs/ASCII.def -v Illegal instruction: 4 ==== * thread #1, queue = 'com.apple.main-thread', stop reason = EXC_BAD_INSTRUCTION (code=EXC_I386_INVOP, subcode=0x0) frame #0: 0x000000010008a279 mc`libc_open + 10 mc`libc_open: -> 0x10008a279 <+10>: ud2 mc`dtoa_dtoa.cold: 0x10008a27b <+0>: leaq 0x526a(%rip), %rdx ; "dtoa_dtoa" 0x10008a282 <+7>: movl $0xa4, %esi 0x10008a287 <+12>: leaq 0x526a(%rip), %rdi ; "/src-local/gcc-master/gcc/m2/mc-boot-ch/Gdtoa.cc" Target 0: (mc) stopped. (lldb) bt * thread #1, queue = 'com.apple.main-thread', stop reason = EXC_BAD_INSTRUCTION (code=EXC_I386_INVOP, subcode=0x0) * frame #0: 0x000000010008a279 mc`libc_open + 10 frame #1: 0x0000000100003764 mc`ConnectToUnix(unsigned int, bool, bool) (.part.0) + 100 frame #2: 0x0000000100003a8b mc`FIO_openToRead + 91 frame #3: 0x0000000100004809 mc`FIO_exists + 9 frame #4: 0x00000001000405a3 mc`mcSearch_findSourceFile + 403 frame #5: 0x00000001000362d1 mc`openDef(void*, bool) + 65 frame #6: 0x00000001000364cf mc`pass(unsigned int, void*, mcComp_parserFunction_p, decl_isNodeF_p, mcComp_openFunction_p) (.isra.0) + 63 frame #7: 0x000000010003653a mc`p1(void*) + 42 frame #8: 0x000000010001093c mc`Indexing_ForeachIndiceInIndexDo + 60 frame #9: 0x0000000100036463 mc`doPass(bool, bool, unsigned int, symbolKey_performOperation_p, char const*, unsigned int) (.constprop.0) + 275 frame #10: 0x0000000100036919 mc`mcComp_compile + 297 frame #11: 0x000000010008a866 mc`main + 758 frame #12: 0x00007fff6f105cc9 libdyld.dylib`start + 1 frame #13: 0x00007fff6f105cc9 libdyld.dylib`start + 1 ==== Looks like that's hit an unreachable (which has been made into a trap). dis -n libc_open mc`libc_open: 0x10008a26f <+0>: leaq 0x8(%rsp), %rax 0x10008a274 <+5>: movq %rax, -0x10(%rsp) -> 0x10008a279 <+10>: ud2