> 2. Assignment of op->d.iocoerce.escontext needed to be changed like this: > > v_params[4] = l_ptr_const(op->d.iocoerce.escontext, > - > l_ptr(StructErrorSaveContext)); > + l_ptr(StructNode));
Oh, so you had to go back to using StructNode in order to get this fixed? That's weird. Is it just because InputFunctionCallSafe is defined to take fmNodePtr? (I still fail to see that a pointer to ErrorSaveContext would differ in any material way from a pointer to Node).
The difference matters to LLVM’s type system, which considers Node to be a type with 1 sub-type (struct member) and ErrorSaveContext with 4 sub-types. It doesn’t seem to understand that both share the first member.
Another think I thought was weird is that it would only crash in LLVM5 debug and not the other LLVM-enabled animals, but looking closer at the buildfarm results, I think that may have been only because you reverted too quickly, and phycodorus and petalura didn't actually run with 7fbc75b26ed8 before you reverted it. Dragonet did make a run with it, but it's marked as "LLVM optimized" instead of "LLVM debug". I suppose that must be making a difference.