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, what language level is it?
Does it actually have the same semantics as C? (The answer, from what I can tell, is no, it has the semantics of GIMPLE, which is to say, 'random stuff unless you set flags on DECL's, etc')
I could go on, but i would have much rather seen someone sit down, think about what the JIT semantics were supposed to be, and build that, rather than take GCC, and build a JIT out of whatever pieces happened to be laying around :)
For those who think is a lot of work, this is generally the right way around to do it. You build the IR, then the compiler (or start building the IR, then the compiler, and refine the IR as you discover you f'd it up).
2. It has no real optimization pipeline management. About all you can manage is the GCC options (both internal and external).
This is pretty bad. Again, normally you would start with a simple pass manager, etc.
3. From what i can tell, it only targets whatever arch you have compiled GCC for in this case, which is usually "1".
To be frank (with no disrespect to it's author meant!), compared to something like LLVM's JIT, this is at least 4-5 years of serious engineering work behind (this includes all the work to do things like "define the semantics of the IR", etc).
Again, to be frank, considering the alternatives, i have trouble seeing why anyone would want to use this unless they were a serious free software advocate.
It reminds me of the old joke about cygwin - the power of windows, the interface of unix.