This is the mail archive of the
gcc-patches@gcc.gnu.org
mailing list for the GCC project.
Re: mem-ssa merge 3/3
> Benjamin Kosnik wrote on 12/12/06 05:29:
>
> >Hey Diego. Now that the big part of your patch is in, I am seeing a
> >10-15% compile speed benefit.
> >
> Glad to hear that. One thing I would like to watch out for is
> performance of generated code. The memory partitioning scheme may
> change the use-def and def-def chains we place between memory references.
>
> So, it is possible that we may be making different optimization
> decisions (though according to Nullstone and SPEC2000, that should
> remain unchanged).
Hi,
I can only add that the memory savings reported by memory testers are
nice too. There is regression of 8% for PR28071, but 30% savings for
combine.c are very cool ;)
Honza
comparing combine.c compilation at -O0 level:
Peak amount of GGC memory allocated before garbage collecting increased from 9267k to 9285k, overall 0.19%
Peak amount of GGC memory still allocated after garbage collectin increased from 8784k to 8800k, overall 0.18%
Amount of produced GGC garbage increased from 37441k to 37513k, overall 0.19%
Overall memory needed: 28397k -> 28429k
Peak memory use before GGC: 9267k -> 9285k
Peak memory use after GGC: 8784k -> 8800k
Maximum of released memory in single GGC run: 2643k
Garbage: 37441k -> 37513k
Leak: 6450k -> 6447k
Overhead: 4862k -> 4666k
GGC runs: 280
comparing combine.c compilation at -O0 -g level:
Peak amount of GGC memory allocated before garbage collecting increased from 10795k to 10811k, overall 0.15%
Peak amount of GGC memory still allocated after garbage collectin increased from 10425k to 10440k, overall 0.14%
Amount of produced GGC garbage increased from 38023k to 38085k, overall 0.16%
Overall memory needed: 30477k -> 30513k
Peak memory use before GGC: 10795k -> 10811k
Peak memory use after GGC: 10425k -> 10440k
Maximum of released memory in single GGC run: 2360k
Garbage: 38023k -> 38085k
Leak: 9260k -> 9257k
Overhead: 5530k -> 5333k
GGC runs: 272
comparing combine.c compilation at -O1 level:
Ovarall memory allocated via mmap and sbrk decreased from 39825k to 29470k, overall -35.14%
Peak amount of GGC memory allocated before garbage collecting increased from 16870k to 16958k, overall 0.52%
Peak amount of GGC memory still allocated after garbage collectin increased from 16702k to 16787k, overall 0.51%
Amount of produced GGC garbage decreased from 58326k to 55524k, overall -5.05%
Overall memory needed: 39825k -> 29470k
Peak memory use before GGC: 16870k -> 16958k
Peak memory use after GGC: 16702k -> 16787k
Maximum of released memory in single GGC run: 2259k -> 2255k
Garbage: 58326k -> 55524k
Leak: 6473k -> 6479k
Overhead: 6290k -> 9642k
GGC runs: 358 -> 363
comparing combine.c compilation at -O2 level:
Peak amount of GGC memory allocated before garbage collecting increased from 16872k to 16956k, overall 0.50%
Peak amount of GGC memory still allocated after garbage collectin increased from 16702k to 16787k, overall 0.51%
Amount of produced GGC garbage decreased from 79634k to 71476k, overall -11.41%
Amount of memory still referenced at the end of compilation increased from 6598k to 6610k, overall 0.19%
Overall memory needed: 29386k -> 29470k
Peak memory use before GGC: 16872k -> 16956k
Peak memory use after GGC: 16702k -> 16787k
Maximum of released memory in single GGC run: 4308k -> 2647k
Garbage: 79634k -> 71476k
Leak: 6598k -> 6610k
Overhead: 8621k -> 11468k
GGC runs: 416 -> 417
comparing combine.c compilation at -O3 level:
Peak amount of GGC memory allocated before garbage collecting run decreased from 18754k to 18182k, overall -3.15%
Amount of produced GGC garbage decreased from 116549k to 105939k, overall -10.02%
Amount of memory still referenced at the end of compilation increased from 6668k to 6682k, overall 0.22%
Overall memory needed: 29510k -> 29598k
Peak memory use before GGC: 18754k -> 18182k
Peak memory use after GGC: 17982k -> 17676k
Maximum of released memory in single GGC run: 6490k -> 4116k
Garbage: 116549k -> 105939k
Leak: 6668k -> 6682k
Overhead: 13281k -> 16395k
GGC runs: 466 -> 471
comparing insn-attrtab.c compilation at -O0 level:
Peak amount of GGC memory allocated before garbage collecting increased from 70078k to 71190k, overall 1.59%
Peak amount of GGC memory still allocated after garbage collectin increased from 43585k to 44696k, overall 2.55%
Amount of produced GGC garbage increased from 131129k to 131968k, overall 0.64%
Amount of memory still referenced at the end of compilation increased from 9289k to 9513k, overall 2.41%
Overall memory needed: 88530k -> 89646k
Peak memory use before GGC: 70078k -> 71190k
Peak memory use after GGC: 43585k -> 44696k
Maximum of released memory in single GGC run: 37868k
Garbage: 131129k -> 131968k
Leak: 9289k -> 9513k
Overhead: 16940k -> 15975k
GGC runs: 216 -> 211
comparing insn-attrtab.c compilation at -O0 -g level:
Peak amount of GGC memory allocated before garbage collecting increased from 71228k to 72339k, overall 1.56%
Peak amount of GGC memory still allocated after garbage collectin increased from 44840k to 45952k, overall 2.48%
Amount of produced GGC garbage increased from 132027k to 133122k, overall 0.83%
Overall memory needed: 89714k -> 90830k
Peak memory use before GGC: 71228k -> 72339k
Peak memory use after GGC: 44840k -> 45952k
Maximum of released memory in single GGC run: 37869k -> 37868k
Garbage: 132027k -> 133122k
Leak: 11184k -> 11184k
Overhead: 17318k -> 16354k
GGC runs: 213 -> 209
comparing insn-attrtab.c compilation at -O1 level:
Ovarall memory allocated via mmap and sbrk decreased from 110266k to 94330k, overall -16.89%
Peak amount of GGC memory allocated before garbage collecting run decreased from 85470k to 72446k, overall -17.98%
Peak amount of GGC memory still allocated after garbage collecting decreased from 79437k to 70077k, overall -13.36%
Amount of produced GGC garbage decreased from 271413k to 229261k, overall -18.39%
Overall memory needed: 110266k -> 94330k
Peak memory use before GGC: 85470k -> 72446k
Peak memory use after GGC: 79437k -> 70077k
Maximum of released memory in single GGC run: 31672k -> 31671k
Garbage: 271413k -> 229261k
Leak: 9336k -> 9340k
Overhead: 28721k -> 28172k
GGC runs: 223 -> 224
comparing insn-attrtab.c compilation at -O2 level:
Overall memory allocated via mmap and sbrk increased from 117834k to 123310k, overall 4.65%
Peak amount of GGC memory allocated before garbage collecting run decreased from 87632k to 78010k, overall -12.33%
Peak amount of GGC memory still allocated after garbage collecting decreased from 80352k to 75480k, overall -6.45%
Amount of produced GGC garbage decreased from 310281k to 282035k, overall -10.01%
Overall memory needed: 117834k -> 123310k
Peak memory use before GGC: 87632k -> 78010k
Peak memory use after GGC: 80352k -> 75480k
Maximum of released memory in single GGC run: 30216k -> 30215k
Garbage: 310281k -> 282035k
Leak: 9339k -> 9343k
Overhead: 35201k -> 34348k
GGC runs: 246 -> 248
comparing insn-attrtab.c compilation at -O3 level:
Ovarall memory allocated via mmap and sbrk decreased from 132294k to 113698k, overall -16.36%
Peak amount of GGC memory allocated before garbage collecting run decreased from 87658k to 78036k, overall -12.33%
Peak amount of GGC memory still allocated after garbage collecting decreased from 80377k to 75505k, overall -6.45%
Amount of produced GGC garbage decreased from 311122k to 282863k, overall -9.99%
Overall memory needed: 132294k -> 113698k
Peak memory use before GGC: 87658k -> 78036k
Peak memory use after GGC: 80377k -> 75505k
Maximum of released memory in single GGC run: 30409k
Garbage: 311122k -> 282863k
Leak: 9342k -> 9348k
Overhead: 35427k -> 34576k
GGC runs: 250 -> 252
comparing Gerald's testcase PR8361 compilation at -O0 level:
Peak amount of GGC memory allocated before garbage collecting increased from 91699k to 92191k, overall 0.54%
Peak amount of GGC memory still allocated after garbage collectin increased from 90791k to 91269k, overall 0.53%
Amount of produced GGC garbage increased from 209462k to 209930k, overall 0.22%
Amount of memory still referenced at the end of compilation increased from 47751k to 48078k, overall 0.68%
Overall memory needed: 118582k -> 119062k
Peak memory use before GGC: 91699k -> 92191k
Peak memory use after GGC: 90791k -> 91269k
Maximum of released memory in single GGC run: 19168k -> 19185k
Garbage: 209462k -> 209930k
Leak: 47751k -> 48078k
Overhead: 20904k -> 20539k
GGC runs: 413 -> 412
comparing Gerald's testcase PR8361 compilation at -O0 -g level:
Amount of produced GGC garbage increased from 216047k to 216527k, overall 0.22%
Amount of memory still referenced at the end of compilation increased from 70710k to 70950k, overall 0.34%
Overall memory needed: 131790k -> 131642k
Peak memory use before GGC: 104519k -> 104385k
Peak memory use after GGC: 103480k -> 103349k
Maximum of released memory in single GGC run: 19647k -> 18862k
Garbage: 216047k -> 216527k
Leak: 70710k -> 70950k
Overhead: 26521k -> 26156k
GGC runs: 385 -> 384
comparing Gerald's testcase PR8361 compilation at -O1 level:
Peak amount of GGC memory allocated before garbage collecting increased from 96182k to 96659k, overall 0.50%
Peak amount of GGC memory still allocated after garbage collectin increased from 93928k to 94406k, overall 0.51%
Amount of memory still referenced at the end of compilation increased from 49435k to 50143k, overall 1.43%
Overall memory needed: 119578k -> 120098k
Peak memory use before GGC: 96182k -> 96659k
Peak memory use after GGC: 93928k -> 94406k
Maximum of released memory in single GGC run: 17997k -> 18009k
Garbage: 447346k -> 439924k
Leak: 49435k -> 50143k
Overhead: 32335k -> 101046k
GGC runs: 565
comparing Gerald's testcase PR8361 compilation at -O2 level:
Peak amount of GGC memory allocated before garbage collecting increased from 96209k to 96686k, overall 0.50%
Peak amount of GGC memory still allocated after garbage collectin increased from 93956k to 94433k, overall 0.51%
Amount of produced GGC garbage decreased from 565496k to 494683k, overall -14.31%
Amount of memory still referenced at the end of compilation increased from 50350k to 51112k, overall 1.51%
Overall memory needed: 119602k -> 120142k
Peak memory use before GGC: 96209k -> 96686k
Peak memory use after GGC: 93956k -> 94433k
Maximum of released memory in single GGC run: 17997k -> 18009k
Garbage: 565496k -> 494683k
Leak: 50350k -> 51112k
Overhead: 42152k -> 55999k
GGC runs: 626 -> 619
comparing Gerald's testcase PR8361 compilation at -O3 level:
Peak amount of GGC memory allocated before garbage collecting increased from 97180k to 97680k, overall 0.51%
Peak amount of GGC memory still allocated after garbage collectin increased from 95588k to 96087k, overall 0.52%
Amount of produced GGC garbage decreased from 587055k to 514724k, overall -14.05%
Amount of memory still referenced at the end of compilation increased from 50305k to 51087k, overall 1.55%
Overall memory needed: 121418k -> 121938k
Peak memory use before GGC: 97180k -> 97680k
Peak memory use after GGC: 95588k -> 96087k
Maximum of released memory in single GGC run: 18403k
Garbage: 587055k -> 514724k
Leak: 50305k -> 51087k
Overhead: 42978k -> 55482k
GGC runs: 635 -> 626
comparing PR rtl-optimization/28071 testcase compilation at -O0 level:
Overall memory needed: 137618k -> 137638k
Peak memory use before GGC: 81563k -> 81585k
Peak memory use after GGC: 58443k -> 58465k
Maximum of released memory in single GGC run: 45145k -> 45166k
Garbage: 148485k -> 148443k
Leak: 7540k -> 7539k
Overhead: 25305k -> 25101k
GGC runs: 82
comparing PR rtl-optimization/28071 testcase compilation at -O0 -g level:
Overall memory needed: 137990k -> 138182k
Peak memory use before GGC: 82197k -> 82218k
Peak memory use after GGC: 59077k -> 59098k
Maximum of released memory in single GGC run: 45210k -> 45232k
Garbage: 148688k -> 148662k
Leak: 9247k -> 9247k
Overhead: 25770k -> 25566k
GGC runs: 88
comparing PR rtl-optimization/28071 testcase compilation at -O1 level:
Overall memory allocated via mmap and sbrk increased from 408354k to 423542k, overall 3.72%
Peak amount of GGC memory allocated before garbage collecting increased from 194178k to 202462k, overall 4.27%
Peak amount of GGC memory still allocated after garbage collectin increased from 187997k to 196531k, overall 4.54%
Overall memory needed: 408354k -> 423542k
Peak memory use before GGC: 194178k -> 202462k
Peak memory use after GGC: 187997k -> 196531k
Maximum of released memory in single GGC run: 94123k -> 94103k
Garbage: 283657k -> 281969k
Leak: 29776k -> 29776k
Overhead: 29619k -> 29673k
GGC runs: 98 -> 99
comparing PR rtl-optimization/28071 testcase compilation at -O2 level:
Overall memory allocated via mmap and sbrk increased from 330166k to 353098k, overall 6.95%
Peak amount of GGC memory allocated before garbage collecting increased from 194171k to 202459k, overall 4.27%
Peak amount of GGC memory still allocated after garbage collectin increased from 187990k to 196528k, overall 4.54%
Overall memory needed: 330166k -> 353098k
Peak memory use before GGC: 194171k -> 202459k
Peak memory use after GGC: 187990k -> 196528k
Maximum of released memory in single GGC run: 96138k -> 96113k
Garbage: 363897k -> 362205k
Leak: 30359k -> 30359k
Overhead: 45368k -> 45422k
GGC runs: 105 -> 106
comparing PR rtl-optimization/28071 testcase compilation at -O3 -fno-tree-pre -fno-tree-fre level:
Peak amount of GGC memory allocated before garbage collecting increased from 310802k to 321489k, overall 3.44%
Peak amount of GGC memory still allocated after garbage collectin increased from 289146k to 299831k, overall 3.70%
Overall memory needed: 778354k -> 769610k
Peak memory use before GGC: 310802k -> 321489k
Peak memory use after GGC: 289146k -> 299831k
Maximum of released memory in single GGC run: 166516k -> 166488k
Garbage: 501676k -> 498586k
Leak: 45411k -> 45411k
Overhead: 57008k -> 55694k
GGC runs: 98
Head of the ChangeLog is: