http://gcc.gnu.org/bugzilla/show_bug.cgi?id=60737

            Bug ID: 60737
           Summary: rs6000 expand_block_clear uses word stores on double
                    word pointer
           Product: gcc
           Version: 4.8.3
            Status: UNCONFIRMED
          Severity: normal
          Priority: P3
         Component: middle-end
          Assignee: unassigned at gcc dot gnu.org
          Reporter: anton at samba dot org

The following code:

#include <string.h>

void foo(long *p)
{   
    memset(p, 0, 16);
}

When built with a 64bit target:

gcc -mcpu=power8 -O2 -S foo.c

Ends up using 32 byte stores:

foo:
    li 9,0
    stw 9,0(3)
    stw 9,4(3)
    stw 9,8(3)
    stw 9,12(3)
    blr

expand_block_move has a similar issue

Reply via email to