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!
}

Reply via email to