http://gcc.gnu.org/bugzilla/show_bug.cgi?id=48316
davidxl <xinliangli at gmail dot com> changed: What |Removed |Added ---------------------------------------------------------------------------- CC| |xinliangli at gmail dot com --- Comment #1 from davidxl <xinliangli at gmail dot com> --- int a[8][8]; int foo(int i) { return a[i][3] + a[i+1][3] + a[i+2][3]; } ICC generates: movslq %edi, %rdi #5.1 shlq $5, %rdi #6.10 movl 12+a(%rdi), %eax #6.10 addl 44+a(%rdi), %eax #6.20 addl 76+a(%rdi), %eax GCC can not CSE the common code for address arithmetic: leal 1(%rdi), %eax movslq %edi, %rdx addl $2, %edi cltq movslq %edi, %rdi salq $5, %rdx salq $5, %rax salq $5, %rdi movl a+12(%rax), %eax addl a+12(%rdx), %eax addl a+12(%rdi), %eax ret