https://gcc.gnu.org/bugzilla/show_bug.cgi?id=91775
--- Comment #1 from Uroš Bizjak <ubizjak at gmail dot com> --- Even if the loop is rewritten as: --cut here-- #define N 1024 int a[N], b[N], c[N]; void foo (void) { int i; for (i = -N; i < 0; i++) a[i+N] = b[i+N] + c[i+N]; } --cut here-- gcc still emits compare insn: xorl %eax, %eax .L2: movl c(%rax), %edx addl b(%rax), %edx addq $4, %rax movl %edx, a-4(%rax) * cmpq $4096, %rax jne .L2 ret