It seems I either have forgotten how C works, or ICC has a very basic (and thus very serious bug).
When compiling x = a[x]++; ICC does not increment the array value, while GCC does (as it should).
I am using the latest ICC (14.0.2). This toy code shows this:
#include <stdio.h>
int main(void)
{
int a[1] = {5}, i = 0;
i = a[i]++;
printf("%d %d\n", i, a[0]);
return 0;
}