[llvm-dev] why do undefined globals end up in .data instead of .bss? (original) (raw)
Friedman, Eli via llvm-dev llvm-dev at lists.llvm.org
Mon Apr 24 12:05:17 PDT 2017
- Previous message: [llvm-dev] why do undefined globals end up in .data instead of .bss?
- Next message: [llvm-dev] why do undefined globals end up in .data instead of .bss?
- Messages sorted by: [ date ] [ thread ] [ subject ] [ author ]
On 4/24/2017 11:55 AM, Andrew Kelley wrote:
On Mon, Apr 24, 2017 at 2:53 PM, Friedman, Eli <efriedma at codeaurora.org <mailto:efriedma at codeaurora.org>> wrote: On 4/23/2017 10:10 AM, Andrew Kelley via llvm-dev wrote: Here is a module: @vals = internal unnamedaddr global [20000000 x i32] undef, align 4 LLVM puts the global in the .data section, and results in a 77MB .o file of mostly zeroes. Why does this variable not go in the .bss section? I think it's just an oversight; it doesn't matter for clang because it never emits globals like that. See TargetLoweringObjectFile::getKindForGlobal for the relevant logic. I see, thanks. Would a patch be welcome which changed this behavior? Or I suppose I could emit zeroinitializer instead of undef. But it seems like undef is the more correct value. Sure, patch welcome.
-Eli
-- Employee of Qualcomm Innovation Center, Inc. Qualcomm Innovation Center, Inc. is a member of Code Aurora Forum, a Linux Foundation Collaborative Project
-------------- next part -------------- An HTML attachment was scrubbed... URL: <http://lists.llvm.org/pipermail/llvm-dev/attachments/20170424/d9eff130/attachment.html>
- Previous message: [llvm-dev] why do undefined globals end up in .data instead of .bss?
- Next message: [llvm-dev] why do undefined globals end up in .data instead of .bss?
- Messages sorted by: [ date ] [ thread ] [ subject ] [ author ]