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. --