As camgunz said, emitting C code makes your compiler far more portable, as you can find C compilers for virtually every target (e.g., AFAIK, the current version of LLVM does not support SPARC architectures).<p>Another theoretical advantage of generating C code is that it should be easy to try adding bits of code written in these new languages to existing C&#x2F;C++ projects. In this way you can test the new language on real life projects without the need of rewriting everything from scratch. (I have never followed this approach, although I have heard of people having done this [1].)<p>[1] <a href="http:&#x2F;&#x2F;roscidus.com&#x2F;blog&#x2F;blog&#x2F;2014&#x2F;06&#x2F;06&#x2F;python-to-ocaml-retrospective&#x2F;" rel="nofollow">http:&#x2F;&#x2F;roscidus.com&#x2F;blog&#x2F;blog&#x2F;2014&#x2F;06&#x2F;06&#x2F;python-to-ocaml-ret...</a> The languages here were quite different, though (Python&#x2F;OCaml): but the author followed the idea of slowly converting a project to a new language by first rewriting parts of it. Had the OCaml compiler emitted Python code, I bet the task would have been easier.