https://gcc.gnu.org/bugzilla/show_bug.cgi?id=63447
Bug ID: 63447 Summary: merge consecutive stw to std Product: gcc Version: 5.0 Status: UNCONFIRMED Severity: normal Priority: P3 Component: target Assignee: unassigned at gcc dot gnu.org Reporter: carrot at google dot com Target: powerpc64le In bzip2 there are code segment like: if (s->state == BZ_X_MAGIC_1) { /*initialise the save area*/ s->save_i = 0; s->save_j = 0; s->save_t = 0; s->save_alphaSize = 0; s->save_nGroups = 0; s->save_nSelectors = 0; s->save_EOB = 0; s->save_groupNo = 0; s->save_groupPos = 0; s->save_nextSym = 0; s->save_nblockMAX = 0; s->save_nblock = 0; s->save_es = 0; s->save_N = 0; s->save_curr = 0; s->save_zt = 0; s->save_zn = 0; s->save_zvec = 0; s->save_zj = 0; s->save_gSel = 0; s->save_gMinlen = 0; s->save_gLimit = NULL; s->save_gBase = NULL; s->save_gPerm = NULL; } trunk gcc generates: li 9,0 li 10,0 li 28,0 li 17,0 stw 9,-1500(30) stw 9,-1496(30) li 26,0 li 16,0 stw 9,-1492(30) stw 9,-1488(30) li 0,0 li 15,0 stw 9,-1484(30) stw 9,-1480(30) li 27,0 li 29,0 stw 9,-1476(30) stw 9,-1472(30) li 20,0 li 22,0 stw 9,-1468(30) stw 9,-1464(30) li 24,0 li 8,0 stw 9,-1460(30) stw 9,-1456(30) li 21,0 li 19,0 stw 9,-1452(30) stw 9,-1448(30) li 18,0 li 14,0 stw 9,-1444(30) stw 9,-1440(30) li 23,0 li 11,0 stw 9,-1436(30) stw 9,-1432(30) li 7,0 li 25,0 stw 9,-1428(30) stw 9,-1424(30) stw 9,-1420(30) Consecutive 2 stw instructions can be merged into one std instruction. My command line options are: -m64 -mvsx -mcpu=power8 -O2 -fno-strict-aliasing