[llvm-dev] Skipping construction/destruction of stack allocated objects (original) (raw)
Alexandre Isoard via llvm-dev llvm-dev at lists.llvm.org
Tue Jan 15 18:09:32 PST 2019
- Previous message: [llvm-dev] Issues with using scalar evolution with newer versions of LLVM IR
- Next message: [llvm-dev] Skipping construction/destruction of stack allocated objects
- Messages sorted by: [ date ] [ thread ] [ subject ] [ author ]
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 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 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>
- Previous message: [llvm-dev] Issues with using scalar evolution with newer versions of LLVM IR
- Next message: [llvm-dev] Skipping construction/destruction of stack allocated objects
- Messages sorted by: [ date ] [ thread ] [ subject ] [ author ]