Hand-written in assembly in libc, setjmp+longjmp

It’s not that IR setjump is useful in itself, more that compiling most of libc to IR and then having to put that in an archive to bundle a couple of object files with it as well is a nuisance. If it’s all wrapped in IR, that single .bc file can be shipped around as-is.

IR libraries are a thing already, if slightly contentious. If we ultimately fix the long tail of libc assumptions in llvm, it’s the right format for statically linking executables with link time optimisation.

Why is it a problem (or in any way less convenient) to ship a “libc.a” file containing multiple .bc files and .o files?

Thank you for clarifying that - sounds like there’s not really a disagreement on this point then.