[Issue 12153] Ternary operator on static array lvalues creates copy

d-bugmail at puremagic.com d-bugmail at puremagic.com
Wed Feb 19 02:38:19 PST 2014


https://d.puremagic.com/issues/show_bug.cgi?id=12153



--- Comment #5 from yebblies <yebblies at gmail.com> 2014-02-19 21:38:16 EST ---
(In reply to comment #4)
> (In reply to comment #3)
> > Sure it is.  If instead of converting `a = b` (where lhs is a static array)
> > into `a[] = b[]` the compiler left the lhs intact as a static array, then
> > converting the condexp to an lvalue would have resulted in `*(b ? &i : &j) =
> > [4]` and this bug would not have occurred.
> 
> But in the cond exp, both i and j are already lvalue. So translating lvalue (b
> ? i : j) to lvalue *(b ? &i : &j) is redundant in front-end layer and will
> never occur.

Sure it will.
This:

int a, b, c;

void main()
{
    c ? a : b = c;
}

results in this getting sent to codegen:

*(c ? & a : & b) = c;

-- 
Configure issuemail: https://d.puremagic.com/issues/userprefs.cgi?tab=email
------- You are receiving this mail because: -------


More information about the Digitalmars-d-bugs mailing list