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

--- Comment #32 from Walter Bright <bugzi...@digitalmars.com> ---
I filed two bug reports based on Tomer's work:

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

which have PRs:

    https://github.com/dlang/dmd/pull/7989
    https://github.com/dlang/dmd/pull/7990

The second example in comment 1 is a bug in the example, as:

    auto f() {auto x = g();}

should be:

    auto f() { return g();}

This addresses all the issues in examples provided. I.e. the escapes are
properly detected with -dip1000, and the structs don't move due to RVO (Return
Value Optimization) where the results are written into the caller's stack
frame.

If you discover more problems with escape detection and moved stack objects,
please let me know with examples. Thanks!

--

Reply via email to