>>861をC++で試してみた。インライン展開させればrestrictがなくても自動判別するようだ。
void sumup(int n, int * /*restrict*/ array1,/*restrict*/ int * array2)
{
//  assert((n % 4)== 0);
for(int i = 0; i < n; i++) array1[i] += array2[i];
}

int a[100];
int b[100];

int _tmain(int argc, _TCHAR* argv[])
{
sumup(100,a,a); //VC8 アンロールされない ICC11 アンロールされない
sumup(100,a,b); //VC8 5個にアンロールされる ICC11 paddに展開される。
sumup(99,a,b); //VC8 3個にアンロールされる ICC11 端数分以外はpaddに展開される。
return 0;
}