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