Hello All,<br><br>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. <br>
<br>I tried following:<br><a href="http://llvm.org/docs/FAQ.html#translatecxx">http://llvm.org/docs/FAQ.html#translatecxx</a><br><br>While I can generate .bc its llc which gives error. Then I also tried "clang" as oppose to llvm-g++.<br>
<br>Here is what I want to accomplish: I have a simple c++ prog which I want to convert to c using llvm<br>-----------------------------------------------------------------<br><div id=":22d"><br>For example<br>-------------------------------------------------------------------------<br>
c++ orig file: test_orig.cpp<br>-----<br>#include<iostream><br>int main()<br>
{<br>  std::cout << "hello world from C++\n";<br>  return 0;<br>}<br>---------------------------------<br>c orig file: test_orig.c<br>-----<br>#include<stdio><br>
int main()<br>
{<br>  printf("Hello workd from C\n");<br>
  return 0;<br>
}<br>-------------------------------------<br>I used following commands<br><br>% clang -c -emit-llvm test_orig.<i><b>EXT</b></i> -o test_orig.bc<br>or<br>% llvm-g++ -c -emit-llvm test_orig.<i><b>EXT</b></i> -o test_orig.bc<br>
<br><br>
% llc -march=c test_orig.bc -o test_new.c<br><br>and then I simply used gcc to compile test_new.c<br>gcc test_new.c<br><br>When <i><b>EXT</b></i>
 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<br>
<br>I thought that llvm should be able to convert "cout" to "printf" or equivalent.<br>Also how does llvm handles the libraries which are not part of std C but are in C++.<br>-----------------------------------------<br>
<br>When I tried to compile my original benchmarks (They are from PARSEC suite)<br>I see this error<br><br>LLVM_ERROR: code generator does not support intrinsic function "llvm.umul.with.overflow.i32"<br><br>How can I avoid this. I am running things on 64-bit Intel machine loaded with CentOS 5.x<br>
<br>Any help/pointers to solve the above issues would be highly appriciated.<br><br>Thanks,<br>-Raj <br><br></div><br>