So, while interesting work, and certainly an accomplishment i have a couple problems with this (and i know it's alpha and not supposed to be used in production, blah blah blah). First and foremost, the language reference is not a language reference: https://gcc.gnu.org/onlinedocs/jit/ It tries to define operations by saying "it's analogous to C". But that's not an actual thing. Either it's C or it's not C. If it's C,…
Where does it claim to be a language reference? I only see it referred to as an API. It seems like you are evaluating it in terms of how LLVM does things, which is maybe the wrong way to look at it. It's a library, not an IR.
It claims to have types, etc. It doesn't say "these are GCC types, see the GCC docs". It says "here are some types, they act kinda like C".
It's certainly a library, but that's not relevant.
It has it's own expressions, lvalues, rvalues, Something, somewhere, needs to describe the semantics of these operations.
The JIT docs at https://gcc.gnu.org/onlinedocs/jit/topics/expressions.html, again, don't say "this is identical to GCC's NEGATE_EXPR" or whatever, they say:
"GCC_JIT_UNARY_OP_MINUS Negate an arithmetic value; analogous to:
-(EXPR) in C."
IE It defines it's own UNARY_MINUS operator, not "GCC's" (GCC is NEGATE_EXPR).
It then tells you nothing about what it actually does (because it's only analogous to some random version of C).
If it said "this has the semantics of GCC's NEGATE_EXPR", that might be something (but the semantics of GCC's operations are not well defined either :P)
A lot of JIT's are programming language specific, and so they have it easy. They just define their operations/results/etc in terms of the programing language they are a JIT for.
But they are not attempting to do that here. They are attempting to present it as a JIT for "whatever you want". But you couldn't actually use this to produce a JIT for a language and know how the end result will act when you produce certain JIT operations with what they have given you. That is a pretty basic requirement for using a JIT, library or not :)
In short, again, i think this is built the wrong way around. Building a Jit for a bunch of not-well-defined operations doesn't give anyone anything interesting.