[Issue 10527] New: Eliding more postblit constructor calls
d-bugmail at puremagic.com
d-bugmail at puremagic.com
Wed Jul 3 03:51:22 PDT 2013
http://d.puremagic.com/issues/show_bug.cgi?id=10527
Summary: Eliding more postblit constructor calls
Product: D
Version: unspecified
Platform: All
OS/Version: All
Status: NEW
Severity: enhancement
Priority: P2
Component: DMD
AssignedTo: nobody at puremagic.com
ReportedBy: tommitissari at hotmail.com
--- Comment #0 from Tommi <tommitissari at hotmail.com> 2013-07-03 03:51:18 PDT ---
Definitions:
1) 'Str' is a struct type which has a postblit constructor
2) 'var' is a variable whose unqualified type is Str
3) 'cpy' is a copy of the variable var
Proposed language change:
Whenever a copy is made from var to cpy (either by making a new variable or by
passing var to a function by value) and the compiler can determine (either
through analysing code or by deduction from a function signature) that during
the lifetime of cpy, no mutation is done to var nor to any data reachable from
it, the language should guarantee these two things:
1) cpy's postblit constructor is omitted when cpy is constructed
2) cpy's destructor is omitted when cpy goes out of scope
Examples:
Here are some examples, where the compiler can deduce that it's safe to omit
the postblit and destructor of cpy by merely looking at the function signature:
1)
int foo(T, U)(const Str cpy, const T t, immutable U u) pure { }
2)
void foo(T, U)(immutable Str cpy, T t, U u) { }
--
Configure issuemail: http://d.puremagic.com/issues/userprefs.cgi?tab=email
------- You are receiving this mail because: -------
More information about the Digitalmars-d-bugs
mailing list