https://gcc.gnu.org/bugzilla/show_bug.cgi?id=89329
--- Comment #2 from Jungmin Song <jungmin.song at nuance dot com> --- My understanding is that the compiler with O2 assumes that 'i' should be under ARR_MAX becuase there was undifend behavior, if it was not. Would you please point me to where is is in C standard? Becuase I'm not much faiilar with that part, it would be very appreciated.