[LLVMdev] C++ to C

John Criswell criswell at cs.uiuc.edu
Fri Nov 17 07:20:16 PST 2006


Mohd-Hanafiah Abdullah wrote:
> On Thu, 2006-11-16 at 21:08 -0800, Chris Lattner wrote:
>   
>> On Fri, 17 Nov 2006, Mohd-Hanafiah Abdullah wrote:
>>     
>>> After converting a piece of C++ code to C one of the functions that are
>>> generated is this:
>>> _ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc
>>>       
>> This is defined in the C++ standard library.  You can get the demangled 
>> name like so:
>> $ c++filt _ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc
>> std::basic_ostream<char, std::char_traits<char> >& std::operator<< 
>> <std::char_traits<char> >(std::basic_ostream<char, std::char_traits<char> 
>>     
>>> &, char const*)
>>>       
>>> Where is it defined and where can I find the source for it?  I need the
>>> source to compile it with a C compiler (AMPC) that will convert the C
>>> code to Java Bytecode.  If the above function is in C++ then I need to
>>> convert it to C first.
>>>       
>> It comes with llvm-gcc4 in libstdc++.  You'll need to compile it to 
>> bytecode by modifying the makefile though.
>>     
>
> Thanks.  Do I need to deal with the long names like
> _ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc() or is there an
> option to use the shorter version?
>   
I don't think you will need to deal with any names.  The C++ standard
library has already been compiled to LLVM bytecode (it is part of the
llvm-gcc/llvm-g++ distribution).  If you use "llvm-g++ -lstdc++" it
should link in whatever libstdc++ functions are needed by your program;
they will get translated to C code along with the rest of your program
when you use llc.

-- John T.

> Cheers.
>
> Napi
>
> _______________________________________________
> LLVM Developers mailing list
> LLVMdev at cs.uiuc.edu         http://llvm.cs.uiuc.edu
> http://lists.cs.uiuc.edu/mailman/listinfo/llvmdev
>   




More information about the llvm-dev mailing list