From: Chris Lattner Date: Wed, 19 Jul 2006 18:19:59 +0000 (+0000) Subject: Answer the FAQ: "can llvm convert C++ code to C?" X-Git-Url: http://plrg.eecs.uci.edu/git/?a=commitdiff_plain;h=af7fd20b54a88e60f5a6420de3f37588215434d9;p=oota-llvm.git Answer the FAQ: "can llvm convert C++ code to C?" git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@29212 91177308-0d34-0410-b5e6-96231b3b80d8 --- diff --git a/docs/FAQ.html b/docs/FAQ.html index e015f91df54..2ab00ac7e90 100644 --- a/docs/FAQ.html +++ b/docs/FAQ.html @@ -79,6 +79,8 @@ How can I disable all optimizations when compiling code using the LLVM GCC front end? +
  • Can I use LLVM to convert C++ code to C code?
  • + @@ -501,6 +503,61 @@ code that you desire.

    + +
    +

    +Can I use LLVM to convert C++ code to C code? +

    +
    + +
    +

    Yes, you can use LLVM to convert code from any language LLVM supports to C. +Note that the generated C code will be very low level (all loops are lowered +to gotos, etc) and not very pretty (comments are stripped, original source +formatting is totally lost, variables are renamed, expressions are regrouped), +so this may not be what you're looking for. However, this is a good way to add +C++ support for a processor that does not otherwise have a C++ compiler. +

    + +

    Use commands like this:

    + +
      +
    1. Compile your program as normal with llvm-g++:

    2. + +
      $ llvm-g++ x.cpp -o program
      + +

      or:

      + +
      + llvm-g++ a.cpp -c + llvm-g++ b.cpp -c + llvm-g++ a.o b.o -o program +
      + +

      With llvm-gcc3, this will generate program and program.bc. The .bc file is +the LLVM version of the program all linked together.

      + +
    3. Convert the LLVM code to C code, using the LLC tool with the C +backend:

    4. + +
      $ llc -march=c program.bc -o program.c
      + +
    5. Finally, compile the c file:

    6. + +
      $ 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. +

    +
    + + +
    Questions about code generated by the GCC front-end