[LLVMdev] AsmPrinter behavior

Aaron Gray aaronngray.lists at googlemail.com
Fri May 7 10:02:39 PDT 2010


On 7 May 2010 17:53, Chris Lattner <clattner at apple.com> wrote:

>
> On May 7, 2010, at 9:51 AM, Nathan Jeffords wrote:
>
> This seems counter intuitive to me, I can understand that C assigned that
>> behavior somewhat arbitrarily to uninitialized global variables, but in LLVM
>> there is explicitly a common linkage attribute to get that behavior. Nothing
>> in the llvm language reference indicates the behavior of a global with the
>> 'internal' linkage attribute should change based of the values used to
>> initialize it.
>>
>>
>> I don't follow.  The object file format provides a means for efficiently
>> zero filling a local symbol.  The compiler is just using it.  What is the
>> problem you're trying to solve here?  Since it is not exported out of the .o
>> file (it is local) there whether it is "common" or not is undetectable, we
>> just get a storage optimization.
>>
>>
> I don't know, I see common and it makes me think that things are getting
> merged together, but as you say it is local so the fact that its also common
> becomes irrelevant. In MachO do you just put these into the .bss section?
>
>
> Macho has a special zerofill directive (targeted at the BSS section) for
> this.  You can see this by running your example like this:
>
> $ llc t.ll -o - -mtriple=i386-apple-darwin10
>  .section __TEXT,__text,regular,pure_instructions
> .zerofill __DATA,__bss,_tst1,4,0        ## @tst1
> .section __DATA,__data
> _tst2:                                  ## @tst2
> .ascii "\000\001\002\003"
>

I think we should have an 'EmitZeroFill()' and 'EmitASCII()' OutStream
methods, the latter to deal with dllexports in '
lib/Target/X86/AsmPrinter/AsmPrinter.cpp:569'.

We also need to sort out COFF TLOF, and get rid of the directive stuff.

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


More information about the llvm-dev mailing list