C to C++

Yup, LLVM can do that and more. Use commands like this:

#1. Compile your program as normal with llvmg++

$ llvmg++ x.cpp -o program

llvmg++ a.cpp -c
llvmg++ b.cpp -c
llvmg++ a.o b.o -o program

This will generate program and program.bc. The .bc file is the LLVM
version of the program all linked together.

#2. Convert the LLVM code to C code, using the LLC tool with the C

$ llc -march=c program.bc -o program.c

#3. Then compile the c file:

$ cc x.c

Note that, by default, the C backend does not support exception handling.
If you want/need it for a certain program, you can enable it by passing
"-enable-correct-eh-support" to the llc program. The resultant code will
use setjmp/longjmp to implement exception support that is correct but
relatively slow.

LLVM will eventually also have Java and other front-ends, which will allow
you to convert java code to C as well.