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

Reply via email to