On 17/01/12 9:24 PM, Walter Bright wrote:
On 1/17/2012 1:20 PM, Peter Alexander wrote:
As Manu said, you need something like __restrict (or a linear type
system) to
solve this problem.

No, you don't. It can be done with a runtime check, like array bounds
checking is done.

So you'd change it to this, even in release builds?

void foo(int[] a, int[] b, int[] c)
{
  if ( /* arrays overlap */ )
  {
    foreach(i; 0..256)
      a[i] = b[i] + c[i];
  }
  else
  {
    /* vectorized code */
  }
}


i.e. duplicate all loops that can be potentially vectorized depending on aliasing? Please bear in mind that this is a simple example.

Seems a bit inefficient (code size).

Reply via email to