"based on pointer providence"
I think you meant "provenance" (mentioning it for the sake of anyone who wants to search for it).
I think you meant "provenance" (mentioning it for the sake of anyone who wants to search for it).
extern int x[],y[];
int test(int i)
{
y[0] = 1;
if ((uintptr_t)(x+5) == (uintptr_t)(y+i))
y[i] = 2;
return y[0];
}
If this function is invoked with i==0, it should be possible for y[0] and the return value to both be 1, or both be 2. If x has five elements, however, and y immediately follows it, clang's generated code will set y[0] to 2 and yet return 1. Cool, eh?