[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