cforntend and llvm ir

How does the cfrontend generate llvm ir? by adding an llvm ir backend
to gcc or modifying the gcc c frontend?

By modifying the middle end. After GCC has created a GIMPLE
representation it is converted to LLVM IL.

Rafael