http://gcc.gnu.org/bugzilla/show_bug.cgi?id=59999
--- Comment #14 from Paulo J. Matos <pa...@matos-sorge.com> --- Something like this which looks much simpler hits the same problem: extern int arr[]; void foo32 (int limit) { short i; for (i = 0; (int)i < limit; i++) arr[i] += 1; }