Richard Sandiford <richard.sandif...@arm.com> writes: > Wilco Dijkstra <wilco.dijks...@arm.com> writes: >> We can do all kinds of arithmetic based on pointers, either using >> pointer types or converted to uintptr_t. Note that the optimizer >> actually creates these expressions, for example arr[N-x] can be >> evaluated as (&arr[0] + N) - x. So this remains legal even if N is >> well outside the bounds of the array. > > Yeah, true, and I remember valid "x[n - big_offset]" -> invalid > "x + big_offset - n" being a problem for MIPS too. It was one of > the things offset_within_block_p was helping to avoid.
Doh, I of course meant "x - big_offset + n" here ;-)