[LLVMdev] How to not zeroinitialize array

David Majnemer david.majnemer at gmail.com
Tue Jul 21 13:45:52 PDT 2015


On Tue, Jul 21, 2015 at 1:31 PM, Russell Hadley <rhadley at microsoft.com>
wrote:

>  Hi,
>
>
>
> I’m trying to do a proof of concept of compiling some code down to a very
> simple runtime that doesn’t provide support for zeroinitialize.  If I run
> the below code through llc:
>
>
>
> ; ModuleID = '.\t.bc'
>
> target datalayout = "e-m:w-p:32:32-i64:64-f80:32-n8:16:32-S32"
>
> target triple = "i686-pc-windows-gnu"
>
>
>
> @_ZN3Foo11ZeroAndZeroE = global [2 x i32] [i32 0, i32 0], align 4
>
>
>
> !llvm.ident = !{!0}
>
>
>
> !0 = !{!"clang version 3.6.0 (tags/RELEASE_360/final)"}
>
>
>
> It turns into this:
>
>
>
> ; ModuleID = '.\t.ll'
>
> target datalayout = "e-m:w-p:32:32-i64:64-f80:32-n8:16:32-S32"
>
> target triple = "i686-pc-windows-gnu"
>
>
>
> @_ZN3Foo11ZeroAndZeroE = global [2 x i32] zeroinitializer, align 4
>
>
>
> !llvm.ident = !{!0}
>
>
>
> !0 = !{!"clang version 3.6.0 (tags/RELEASE_360/final)"}
>
>
>
> My question is where is this transform happening – it looks like it’s a
> byproduct of parsing the ll file which was super surprising to me.
>

This is a natural result of the IR constant folder.  It isn't an
optimization per-se, it is part of the mechanism which canonicalizes
constants.


>   And second is there a know what to circumvent this?
>

It is impossible to disable it.


>   For my app I just want the zero’d space in the section so I can copy it
> into memory.
>

I don't quite follow.  @_ZN3Foo11ZeroAndZeroE will be in the .bss section
section and will end up in memory.  Do you need it in some other section?


>
>
> Thanks,
>
>
>
> -R
>
> _______________________________________________
> LLVM Developers mailing list
> LLVMdev at cs.uiuc.edu         http://llvm.cs.uiuc.edu
> http://lists.cs.uiuc.edu/mailman/listinfo/llvmdev
>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/llvm-dev/attachments/20150721/34dcefbb/attachment.html>


More information about the llvm-dev mailing list