These backends are completely interchangeable. Our preferred route is the native code generator, because the C code generator relies on some serious hackery, namely the [wiki:Commentary/EvilMangler Evil Mangler], to get fast tail-calls and other performance tricks. The Evil Mangler is slated for removal as soon as possible, which would leave us with just the native code generator for optimised compilation, and the C code generator for portable, non-optimised, or unregisterised compilation.