[cfe-dev] Patch: Make ccc generate native object files

Shantonu Sen ssen at apple.com
Sat Feb 9 12:49:43 PST 2008

I'm not sure about the "perform some necessary optimizations" part of  
the patch. It seems somewhat premature to overload clang testing with  
optimization of the code it produces. Can we have -O{0,1,2,3,4,s} map  
to those so it's more user configurable, and people can use -O0 if  
they want to disable "opt" from running at all?

One approach that would probably make everyone happy is to teach "llc"  
how to output the original bitcode stream in its own section/segment  
in the native assembly stream, and teach the LLVM libraries how to  
extract this encapsulated bitcode data for Mach-O, ELF, etc., in the  
event that the input file is not a bitcode file directly. Maybe I'm  
not the first person to think of this and LLVM supports it already (in  
which case awesome!). At the expense of the added native object file  
size, users could run either their native "nm" or "llvm-nm", for  
example, and get useful information. They could either use their  
native linker/compiler driver to link the object files, or use llvm-ld.

People testing frontend features only would probably use "gcc" or  
"ccc" (which would invoke gcc) to link the hybrid object files against  
other native objects and native libraries. People wanting to try LTO  
could use "llvm-ld" or "ccc -O4" (which would invoke llvm-ld) to link  
the hybrid objects (and mixing in native objects would probably result  
in undefined symbols).


Sent from my MacBook

On Feb 8, 2008, at 12:22 AM, Török Edwin wrote:

> Anders Carlsson wrote:
>> Here's a patch that makes ccc generate native object files instead of
>> bitcode files. This makes it work better with the native toolchains,
>> which should make testing random apps easier. I'll commit this unless
>> anyone has a good reason or finds any bugs in the code :)
> Actually generating bitcode is very useful for me, and I'd like to  
> keep
> that possibility. Maybe there could be a flag to ccc to tell  it to
> generate bitcode or native (and default to native)?
> For example I can use 'ccc' to call 'llvm-gcc -O4' to generate bitcode
> and 'llvm-ld -native' to do linking and LTO.
> I am unable to do this without 'ccc', because my system linker doesn't
> recognize the bitcode files generated by -O4.
> With ccc it was simply a matter of replacing clang with 'llvm-gcc - 
> O4 -c' ;)
> Also I think keeping the possibility to generate bitcode is useful for
> clang too, if we want LTO.
> Thanks,
> --Edwin
> _______________________________________________
> cfe-dev mailing list
> cfe-dev at cs.uiuc.edu
> http://lists.cs.uiuc.edu/mailman/listinfo/cfe-dev

More information about the cfe-dev mailing list