www.digitalmars.com         C & C++   DMDScript  

digitalmars.D.bugs - [Issue 23815] New: closure allocated even if the escape is opnly

https://issues.dlang.org/show_bug.cgi?id=23815

          Issue ID: 23815
           Summary: closure allocated even if the escape is opnly used to
                    access static members
           Product: D
           Version: D2
          Hardware: x86_64
                OS: Linux
            Status: NEW
          Keywords: performance
          Severity: enhancement
          Priority: P1
         Component: dmd
          Assignee: nobody puremagic.com
          Reporter: b2.temp gmx.com



D allocates a closure for an escaped aggregate instance even if only used to
access a static member.



```d
class C
{
    static int i;
}

auto v(C c)
{
    return {return c.i;}(); // it thinks `c` is escaped
}
```



This is not a LDC bug but we can verify more easily that a closure is allocated
using its IR output: https://godbolt.org/z/j3EvorjzY.

Note that it is not a dup of 17804. Here the escape is well on the stack, it is
really that there should not be any escape.

--
Mar 29 2023