[LLVMdev] Issues in converting C++ code to C using llvm and llc

Raj Parihar parihar at ece.rochester.edu
Tue Dec 13 08:07:02 PST 2011

Hello All,

I came to know from a friend that using LLVM insfrastucture one can convert
C++ programs to C. I needed this for my cross-compiler because we don't
have support for C++ compilation in our cross-compiler.

I tried following:

While I can generate .bc its llc which gives error. Then I also tried
"clang" as oppose to llvm-g++.

Here is what I want to accomplish: I have a simple c++ prog which I want to
convert to c using llvm

For example
c++ orig file: test_orig.cpp
int main()
  std::cout << "hello world from C++\n";
  return 0;
c orig file: test_orig.c
int main()
  printf("Hello workd from C\n");
  return 0;
I used following commands

% clang -c -emit-llvm test_orig.*EXT* -o test_orig.bc
% llvm-g++ -c -emit-llvm test_orig.*EXT* -o test_orig.bc

% llc -march=c test_orig.bc -o test_new.c

and then I simply used gcc to compile test_new.c
gcc test_new.c

When *EXT* is .c then everything works fine however when it is .cpp then
when I try to recompile the test_new.c using gcc it says undefiend
references to std::cout, std::basic_ostream, std::ios_base

I thought that llvm should be able to convert "cout" to "printf" or
Also how does llvm handles the libraries which are not part of std C but
are in C++.

When I tried to compile my original benchmarks (They are from PARSEC suite)
I see this error

LLVM_ERROR: code generator does not support intrinsic function

How can I avoid this. I am running things on 64-bit Intel machine loaded
with CentOS 5.x

Any help/pointers to solve the above issues would be highly appriciated.

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/llvm-dev/attachments/20111213/ab22b9d5/attachment.html>

More information about the llvm-dev mailing list