The reason for this is that the compiler itself is built using setjump/longjump style exceptions which is not supported by LLVM (normal code built by the compiler uses dwarf zero-cost style exceptions which are supported by LLVM). Exceptions are raised inside the compiler when it builds the runtime (due to processing files containing pragmas for VAX) and need to be caught. The exceptions are caught if the new compiler was built by the system compiler, but not if it was built using the llvm-gcc Ada compiler, which is what happens during bootstrap. This could be fixed by adding sj/lj exception support to LLVM, or by modifying the build system so that the compiler uses dwarf zcx internally.
was this magically fixed by jim's sjlj work?
I was unable to test whether this has been fixed because bootstrap fails earlier when comparing the stage 2 and stage 3 compilers.
The stage2 vs stage3 comparison is still failing. It looks like I will have to debug it!
OK, I disabled the stage2 vs stage3 comparison check, and bootstrap fails just the same as it always did: due to an uncaught exception SEM_PRAG.ANALYZE_PRAGMA.PRAGMA_EXIT : sem_prag.adb:1475 while building s-auxdec.adb. Jim's sjlj work was not enough :(