We could go further. With LLVM 14 as the minimum we can just use
opaque pointers everywhere, and delete more conditional code in
master. Tested on 14-18.
I explored using the new pass manager everywhere too. It almost
worked, but I couldn't see how to override the inlining threshold
before LLVM 16[1], even in C++, so we couldn't fix that with a
llvmjit_wrap.cpp hack.
I like this. How can I find out if someone would shout at me for
dropping LLVM 13?
[1] https://github.com/llvm/llvm-project/commit/4fa328074efd7eefdbb314b8f6e9f855e443ca20