bearophile wrote:
Don:I think this change is mandatory. We need it for SIMD operations.<Why? Why the compiler can't optimize things and perform SIMD operations with the fixed-sized array semantics of D1? (I ask this for LDC too, that's mostly D1 still). Bye, bearophile
Because they are passed by reference. It certainly can't do it on D1:
float dot(float[4] x) {
x[3] = 4.5; // surprise!
return 0;
}
void main()
{
float[4] a;
a[3]= 0;
float x = dot(a);
assert(a[3]==0); // FAILS!
}
