[llvm-dev] Skipping construction/destruction of stack allocated objects
Alexandre Isoard via llvm-dev
llvm-dev at lists.llvm.org
Tue Jan 15 18:09:32 PST 2019
Hello,
For performance reasons, I would like to provide a way to skip
construction/destruction of objects that are stack allocated. Typically,
C-style arrays of std::complex create an initialization loops that is
almost always unnecessary.
I am thinking of providing an __attribute__((uninitialized)) that can be
applied to an object declaration:
{
std::complex<float> foo[64][64] __attribute__((uninitialized));
// does not need to generate a zeroinitializer loop here
somefunction(foo);
// does not need to generate a destructor loop here
(std::complex<float> don't have one anyway)
}
Formally speaking, we won't call constructors/destructors on those objects
anymore. We would provide "uninitialized" memory in the same meaning as
malloc/free.
Do you see this as a good idea? Do we already have a better way of
achieving this?
I'm worried about the fact that for non-POD types it is not safe to ignore
that attribute, which probably means using an attribute is not a good fit...
--
*Alexandre Isoard*
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/llvm-dev/attachments/20190115/d0e22529/attachment.html>
More information about the llvm-dev
mailing list