[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