Mathematica 8 includes a new feature called "symbolic-C" for representing C code. We could replace much of CodeGen.m with this, but this would introduce a dependency on Mathematica 8.
This feature suffers from the usual Mathematica problem of not allowing variable names with underscores. Having a C representation of the code is also not particularly useful. It might be useful for low-level optimisation of the code, but if the code is C code, the compiler should be able to do this. The typical manipulations we do on equations and calculations need to be done at a higher level, especially since we want to be able to generate multiple output languages.