https://gcc.gnu.org/bugzilla/show_bug.cgi?id=86259

--- Comment #13 from joseph at codesourcery dot com <joseph at codesourcery dot 
com> ---
Well, C90 TC1 adds (to the informative Annex listing undefined behavior) 
the case of array subscripts being out of range even if they wouldn't be 
simply based on the top-level object, such as a[1][7] given the 
declaration int a[4][5].  And of course array references are defined in 
terms of equivalent pointer arithmetic, so that's *(*(a+1) + 7).  So 
certainly for array objects, once you've got to a[1] or *(a+1) - as 
opposed to &a[1] or &*(a+1) - you can't then get something from a[2] from 
there.  (But e.g. &a[1] + 1 is a perfectly valid way of writing &a[2].  
And at least some of the examples here may be closer to that.)

Reply via email to