&gt; Wrong. You can build an abstraction layer above C code-generator which makes sure undefined C code doesn&#x27;t get generated.<p>Yes, you could. But now you&#x27;re talking way more work, and yet another IR. If you&#x27;re going to build another IR for this, and you really really want to compile to C, why not just fix up LLVM&#x27;s C backend and save yourself a lot of work?<p>&gt; Nope. Once you have generated C code, you debug your C code with gdb or whatever is available. No problems there.<p>Debugging the generated C code is not a good experience. A developer wants to develop the code they wrote. For that to work you need fine-grained control over the contents of the DWARF DIEs.<p>&gt; Nope. C compilation is about an order of magnitude faster than C++ compilation.<p>I&#x27;m not comparing C++ compilation to C compilation. I&#x27;m comparing the time it takes to compile C to LLVM IR, plus the overhead of in-memory or disk serialization, against zero (which is what you have if you go straight to LLVM IR).<p>&gt; LLVM IR creates an additional abstraction barrier between a game programmer&#x27;s code and hardware.<p>A C compiler IR, like LLVM IR, is not an additional abstraction barrier. What do you think C compilers compile their code into?