Karl Rehm via llvm-dev
2020-Jan-29 07:40 UTC
[llvm-dev] Question about ObjectSizeOffsetVisitor::visitGlobalVariable
In this function (used to check the size of a global) there is an initial check for whether the initializer to this function is "definitive." My question is: why do we need this? How does the object's size change if a global's initializer is defined at link time? Thanks, Karl -------------- next part -------------- An HTML attachment was scrubbed... URL: <http://lists.llvm.org/pipermail/llvm-dev/attachments/20200129/82eff886/attachment-0001.html>
George Burgess IV via llvm-dev
2020-Jan-30 01:13 UTC
[llvm-dev] Question about ObjectSizeOffsetVisitor::visitGlobalVariable
Looks like the commit that added that was
https://github.com/llvm/llvm-project/commit/16e42128c24f5df8a61cfd2e6cdf3bd3966db0c5
. A reduced example might look something like this:
https://godbolt.org/z/r4G_g-
At the C source level, static object size detection has to be similarly
conservative in the face of 'variable-length' structs like `struct
my_string { size_t size; char data[0]; };`, though I don't know how
relevant that is here.
On Tue, Jan 28, 2020 at 11:41 PM Karl Rehm via llvm-dev <
llvm-dev at lists.llvm.org> wrote:
> In this function (used to check the size of a global) there is an initial
> check for whether the initializer to this function is
"definitive." My
> question is: why do we need this? How does the object's size change if
a
> global's initializer is defined at link time?
>
> Thanks,
> Karl
> _______________________________________________
> LLVM Developers mailing list
> llvm-dev at lists.llvm.org
> https://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-dev
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL:
<http://lists.llvm.org/pipermail/llvm-dev/attachments/20200129/c4f21ffd/attachment.html>
Karl Rehm via llvm-dev
2020-Jan-30 01:28 UTC
[llvm-dev] Question about ObjectSizeOffsetVisitor::visitGlobalVariable
Interesting, so I guess we can check for whether it's an array type and adjust accordingly instead? Blocking *all* global variables without definitive initializers feels a bit much to me, especially if they have primitive types (i.e. integers) that don't have the potential to be screwed around with like this. On Wed, Jan 29, 2020 at 8:14 PM George Burgess IV < george.burgess.iv at gmail.com> wrote:> Looks like the commit that added that was > https://github.com/llvm/llvm-project/commit/16e42128c24f5df8a61cfd2e6cdf3bd3966db0c5 > . A reduced example might look something like this: > https://godbolt.org/z/r4G_g- > > At the C source level, static object size detection has to be similarly > conservative in the face of 'variable-length' structs like `struct > my_string { size_t size; char data[0]; };`, though I don't know how > relevant that is here. > > On Tue, Jan 28, 2020 at 11:41 PM Karl Rehm via llvm-dev < > llvm-dev at lists.llvm.org> wrote: > >> In this function (used to check the size of a global) there is an initial >> check for whether the initializer to this function is "definitive." My >> question is: why do we need this? How does the object's size change if a >> global's initializer is defined at link time? >> >> Thanks, >> Karl >> _______________________________________________ >> LLVM Developers mailing list >> llvm-dev at lists.llvm.org >> https://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-dev >> >-------------- next part -------------- An HTML attachment was scrubbed... URL: <http://lists.llvm.org/pipermail/llvm-dev/attachments/20200129/93082068/attachment.html>
Reasonably Related Threads
- Question about ObjectSizeOffsetVisitor::visitGlobalVariable
- Removing a block of text within a string
- Questions about jump threading optimization and what we can do
- Questions about jump threading optimization and what we can do
- Questions about jump threading optimization and what we can do