[Issue 18516] New: Add -vnrvo switch for showing user when nrv is done
d-bugmail at puremagic.com
d-bugmail at puremagic.com
Sat Feb 24 10:00:15 UTC 2018
https://issues.dlang.org/show_bug.cgi?id=18516
Issue ID: 18516
Summary: Add -vnrvo switch for showing user when nrv is done
Product: D
Version: D2
Hardware: All
OS: All
Status: NEW
Severity: enhancement
Priority: P1
Component: dmd
Assignee: nobody at puremagic.com
Reporter: ibuclaw at gdcproject.org
This optimization is practically undocumented, save for the glossary, and the
existing checks for NRVO in the D2 testsuite are really quite fragile as the
test for it is checking what is effectively undefined behaviour in normal
circumstances.
i.e:
What `p` is pointing to here is not known, as `tmp` is no longer in scope when
the assert() contract is executed.
---
static S* p;
S fn()
{
S tmp;
p = &tmp;
return tmp;
}
S s = fn();
assert(p == &s);
---
So there's also a desire for a better way to test NRVO in the compiler, this
could be done by validating an AST dump of the backend codegen, but using the
existing TEST_OUTPUT support should be simpler.
--
More information about the Digitalmars-d-bugs
mailing list