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

          Issue ID: 17590
           Summary: Unnecessary GC alloc on returning static local struct
           Product: D
           Version: D2
          Hardware: All
                OS: All
            Status: NEW
          Severity: enhancement
          Priority: P1
         Component: dmd
          Assignee: nob...@puremagic.com
          Reporter: johanenge...@weka.io

The following code does not compile:

```
auto foo(int a, bool b) @nogc {
    static struct SInside {}

    SInside res;

    lazyfun(a);

    return res;
}


void lazyfun(scope lazy int a) @nogc;
```

Because the return type is a local struct, the frontend thinks a GC allocated
closure is needed. But, the local struct is static, so no reference to the
local frame and a closure is not needed.

--

Reply via email to