&gt; You will spend forever eliminating undefined behavior.<p>Wrong. You can build an abstraction layer above C code-generator which makes sure undefined C code doesn&#x27;t get generated.<p>&gt; the debugging experience will be bad because you don&#x27;t have direct control over the DWARF DIEs.<p>Nope. Once you have generated C code, you debug your C code with gdb or whatever is available. No problems there.<p>&gt; your compilation will be slower for no reason<p>Nope. C compilation is about an order of magnitude faster than C++ compilation.<p>&gt; you will not be able to add custom metadata to be consumed by optimization passes<p>Does that mean the clang project asks C&#x2F;C++ programmers to insert custom metadata into their C&#x2F;C++ source files to give hints to clang?<p>&gt; you won&#x27;t have access to special instructions like LLVM add nuw&#x2F;nsw<p>You&#x27;re looking at it the wrong way. This article for C++ programmers who are sick and tired of C++&#x27;s arbitrary man-made complexity and limitations over abstraction management. They can handle generated C code quite well. They&#x27;re not interested in looking at or working on assembly languages like LLVM IR, especially the one they&#x27;ll have to learn before they resume their work.<p>LLVM IR creates an additional abstraction barrier between a game programmer&#x27;s code and hardware. Getting rid of C++ and moving to LLVM IR (not to mention LLVM codebase itself is a giant C++ blob, and might want to switch to a saner system like, e.g., amplify-C) is not a very good strategy for a game project.