A recent patch increased GCC's memory consumption in some cases!

Jan Hubicka jh@suse.cz
Sat Jul 26 22:34:00 GMT 2008


This is the difference for switching tester from mainline to tuples
branch.  Not too bad overall, about 4-8% savings on overall memory
footprint before IPA...

Honza
> Hi,
> 
> I am a friendly script caring about memory consumption in GCC.  Please
> contact jh@suse.cz if something is going wrong.
> 
> Comparing memory consumption on compilation of combine.i, insn-attrtab.i,
> and generate-3.4.ii I got:
> 
> 
> comparing empty function compilation at -O0 level:
>     Overall memory needed: 8475k -> 8472k
>     Peak memory use before GGC: 1409k -> 1408k
>     Peak memory use after GGC: 1338k
>     Maximum of released memory in single GGC run: 172k -> 173k
>     Garbage: 249k -> 249k
>     Leak: 1332k -> 1331k
>     Overhead: 159k -> 159k
>     GGC runs: 3
>   Amount of produced pre-ipa-GGC garbage increased from 238k to 238k, overall 0.12%
>     Pre-IPA-Garbage: 238k -> 238k
>     Pre-IPA-Leak: 1334k -> 1333k
>     Pre-IPA-Overhead: 158k -> 157k
>   Amount of produced post-ipa-GGC garbage increased from 238k to 238k, overall 0.12%
>     Post-IPA-Garbage: 238k -> 238k
>     Post-IPA-Leak: 1334k -> 1333k
>     Post-IPA-Overhead: 158k -> 157k
> 
> comparing empty function compilation at -O0 -g level:
>     Overall memory needed: 8503k -> 8500k
>     Peak memory use before GGC: 1436k
>     Peak memory use after GGC: 1366k -> 1365k
>     Maximum of released memory in single GGC run: 175k -> 167k
>     Garbage: 252k -> 252k
>     Leak: 1365k -> 1364k
>     Overhead: 164k -> 163k
>     GGC runs: 3 -> 4
>   Amount of produced pre-ipa-GGC garbage increased from 238k to 238k, overall 0.12%
>     Pre-IPA-Garbage: 238k -> 238k
>     Pre-IPA-Leak: 1334k -> 1333k
>     Pre-IPA-Overhead: 158k -> 157k
>   Amount of produced post-ipa-GGC garbage increased from 238k to 238k, overall 0.12%
>     Post-IPA-Garbage: 238k -> 238k
>     Post-IPA-Leak: 1334k -> 1333k
>     Post-IPA-Overhead: 158k -> 157k
> 
> comparing empty function compilation at -O1 level:
>     Overall memory needed: 8547k -> 8552k
>     Peak memory use before GGC: 1409k -> 1408k
>     Peak memory use after GGC: 1338k
>     Maximum of released memory in single GGC run: 169k -> 168k
>     Garbage: 252k -> 252k
>     Leak: 1332k -> 1331k
>     Overhead: 160k -> 159k
>     GGC runs: 4
>   Amount of produced pre-ipa-GGC garbage increased from 238k to 238k, overall 0.12%
>     Pre-IPA-Garbage: 238k -> 238k
>     Pre-IPA-Leak: 1334k -> 1334k
>     Pre-IPA-Overhead: 158k -> 157k
>   Amount of produced post-ipa-GGC garbage increased from 238k to 238k, overall 0.12%
>     Post-IPA-Garbage: 238k -> 238k
>     Post-IPA-Leak: 1334k -> 1334k
>     Post-IPA-Overhead: 158k -> 157k
> 
> comparing empty function compilation at -O2 level:
>     Overall memory needed: 8575k -> 8576k
>     Peak memory use before GGC: 1409k
>     Peak memory use after GGC: 1338k
>     Maximum of released memory in single GGC run: 168k
>     Garbage: 257k -> 255k
>     Leak: 1333k -> 1332k
>     Overhead: 161k -> 160k
>     GGC runs: 4
>   Amount of produced pre-ipa-GGC garbage increased from 238k to 238k, overall 0.12%
>     Pre-IPA-Garbage: 238k -> 238k
>     Pre-IPA-Leak: 1335k -> 1334k
>     Pre-IPA-Overhead: 158k -> 157k
>   Amount of produced post-ipa-GGC garbage increased from 238k to 238k, overall 0.12%
>     Post-IPA-Garbage: 238k -> 238k
>     Post-IPA-Leak: 1335k -> 1334k
>     Post-IPA-Overhead: 158k -> 157k
> 
> comparing empty function compilation at -O3 level:
>     Overall memory needed: 8579k -> 8580k
>     Peak memory use before GGC: 1409k
>     Peak memory use after GGC: 1338k
>     Maximum of released memory in single GGC run: 168k
>     Garbage: 257k -> 255k
>     Leak: 1333k -> 1332k
>     Overhead: 161k -> 160k
>     GGC runs: 4
>   Amount of produced pre-ipa-GGC garbage increased from 238k to 238k, overall 0.12%
>     Pre-IPA-Garbage: 238k -> 238k
>     Pre-IPA-Leak: 1335k -> 1334k
>     Pre-IPA-Overhead: 158k -> 157k
>   Amount of produced post-ipa-GGC garbage increased from 238k to 238k, overall 0.12%
>     Post-IPA-Garbage: 238k -> 238k
>     Post-IPA-Leak: 1335k -> 1334k
>     Post-IPA-Overhead: 158k -> 157k
> 
> comparing combine.c compilation at -O0 level:
>   Peak amount of GGC memory allocated before garbage collecting run decreased from 18853k to 18036k, overall -4.53%
>   Peak amount of GGC memory still allocated after garbage collecting decreased from 18660k to 17772k, overall -5.00%
>   Amount of produced GGC garbage increased from 39844k to 39998k, overall 0.39%
>     Overall memory needed: 32047k -> 31128k
>     Peak memory use before GGC: 18853k -> 18036k
>     Peak memory use after GGC: 18660k -> 17772k
>     Maximum of released memory in single GGC run: 1842k -> 1849k
>     Garbage: 39844k -> 39998k
>     Leak: 5766k -> 5752k
>     Overhead: 4991k -> 5236k
>     GGC runs: 340 -> 338
>   Amount of produced pre-ipa-GGC garbage decreased from 13096k to 12564k, overall -4.24%
>   Amount of memory referenced pre-ipa decreased from 20015k to 19308k, overall -3.66%
>     Pre-IPA-Garbage: 13096k -> 12564k
>     Pre-IPA-Leak: 20015k -> 19308k
>     Pre-IPA-Overhead: 2339k -> 2546k
>   Amount of produced post-ipa-GGC garbage decreased from 13096k to 12564k, overall -4.24%
>   Amount of memory referenced post-ipa decreased from 20015k to 19308k, overall -3.66%
>     Post-IPA-Garbage: 13096k -> 12564k
>     Post-IPA-Leak: 20015k -> 19308k
>     Post-IPA-Overhead: 2339k -> 2546k
> 
> comparing combine.c compilation at -O0 -g level:
>   Peak amount of GGC memory allocated before garbage collecting run decreased from 20746k to 19963k, overall -3.92%
>   Peak amount of GGC memory still allocated after garbage collecting decreased from 20530k to 19627k, overall -4.60%
>   Amount of produced GGC garbage increased from 40217k to 40344k, overall 0.31%
>   Amount of memory still referenced at the end of compilation increased from 9040k to 9066k, overall 0.28%
>     Overall memory needed: 33995k -> 32996k
>     Peak memory use before GGC: 20746k -> 19963k
>     Peak memory use after GGC: 20530k -> 19627k
>     Maximum of released memory in single GGC run: 1851k -> 1859k
>     Garbage: 40217k -> 40344k
>     Leak: 9040k -> 9066k
>     Overhead: 5812k -> 6055k
>     GGC runs: 325 -> 320
>   Amount of produced pre-ipa-GGC garbage decreased from 13195k to 12663k, overall -4.21%
>   Amount of memory referenced pre-ipa decreased from 22291k to 21581k, overall -3.29%
>     Pre-IPA-Garbage: 13195k -> 12663k
>     Pre-IPA-Leak: 22291k -> 21581k
>     Pre-IPA-Overhead: 2830k -> 3036k
>   Amount of produced post-ipa-GGC garbage decreased from 13195k to 12663k, overall -4.21%
>   Amount of memory referenced post-ipa decreased from 22291k to 21581k, overall -3.29%
>     Post-IPA-Garbage: 13195k -> 12663k
>     Post-IPA-Leak: 22291k -> 21581k
>     Post-IPA-Overhead: 2830k -> 3036k
> 
> comparing combine.c compilation at -O1 level:
>   Peak amount of GGC memory allocated before garbage collecting run decreased from 16650k to 15662k, overall -6.31%
>   Peak amount of GGC memory still allocated after garbage collecting decreased from 16484k to 15480k, overall -6.49%
>   Amount of produced GGC garbage decreased from 50469k to 47221k, overall -6.88%
>     Overall memory needed: 30599k -> 30060k
>     Peak memory use before GGC: 16650k -> 15662k
>     Peak memory use after GGC: 16484k -> 15480k
>     Maximum of released memory in single GGC run: 1396k -> 1355k
>     Garbage: 50469k -> 47221k
>     Leak: 5734k -> 5738k
>     Overhead: 5777k -> 5934k
>     GGC runs: 409 -> 392
>   Amount of produced pre-ipa-GGC garbage decreased from 13941k to 13456k, overall -3.61%
>   Amount of memory referenced pre-ipa decreased from 17656k to 16841k, overall -4.84%
>     Pre-IPA-Garbage: 13941k -> 13456k
>     Pre-IPA-Leak: 17656k -> 16841k
>     Pre-IPA-Overhead: 2288k -> 2491k
>   Amount of produced post-ipa-GGC garbage decreased from 13941k to 13456k, overall -3.61%
>   Amount of memory referenced post-ipa decreased from 17656k to 16841k, overall -4.84%
>     Post-IPA-Garbage: 13941k -> 13456k
>     Post-IPA-Leak: 17656k -> 16841k
>     Post-IPA-Overhead: 2288k -> 2491k
> 
> comparing combine.c compilation at -O2 level:
>   Peak amount of GGC memory allocated before garbage collecting run decreased from 16746k to 15770k, overall -6.19%
>   Peak amount of GGC memory still allocated after garbage collecting decreased from 16580k to 15594k, overall -6.32%
>   Amount of produced GGC garbage decreased from 66412k to 59586k, overall -11.45%
>   Amount of memory still referenced at the end of compilation increased from 5763k to 5774k, overall 0.20%
>     Overall memory needed: 31919k -> 31120k
>     Peak memory use before GGC: 16746k -> 15770k
>     Peak memory use after GGC: 16580k -> 15594k
>     Maximum of released memory in single GGC run: 1334k -> 1329k
>     Garbage: 66412k -> 59586k
>     Leak: 5763k -> 5774k
>     Overhead: 7589k -> 7591k
>     GGC runs: 481 -> 460
>   Amount of produced pre-ipa-GGC garbage decreased from 14090k to 13627k, overall -3.40%
>   Amount of memory referenced pre-ipa decreased from 17718k to 16910k, overall -4.78%
>     Pre-IPA-Garbage: 14090k -> 13627k
>     Pre-IPA-Leak: 17718k -> 16910k
>     Pre-IPA-Overhead: 2301k -> 2510k
>   Amount of produced post-ipa-GGC garbage decreased from 14090k to 13627k, overall -3.40%
>   Amount of memory referenced post-ipa decreased from 17718k to 16910k, overall -4.78%
>     Post-IPA-Garbage: 14090k -> 13627k
>     Post-IPA-Leak: 17718k -> 16910k
>     Post-IPA-Overhead: 2301k -> 2510k
> 
> comparing combine.c compilation at -O3 level:
>   Ovarall memory allocated via mmap and sbrk decreased from 37647k to 36176k, overall -4.07%
>   Peak amount of GGC memory allocated before garbage collecting run decreased from 16770k to 15794k, overall -6.18%
>   Peak amount of GGC memory still allocated after garbage collecting decreased from 16596k to 15637k, overall -6.13%
>   Amount of produced GGC garbage decreased from 83077k to 74205k, overall -11.96%
>   Amount of memory still referenced at the end of compilation increased from 5782k to 5789k, overall 0.12%
>     Overall memory needed: 37647k -> 36176k
>     Peak memory use before GGC: 16770k -> 15794k
>     Peak memory use after GGC: 16596k -> 15637k
>     Maximum of released memory in single GGC run: 2122k -> 1860k
>     Garbage: 83077k -> 74205k
>     Leak: 5782k -> 5789k
>     Overhead: 9220k -> 9260k
>     GGC runs: 513 -> 498
>   Amount of produced pre-ipa-GGC garbage decreased from 14091k to 13627k, overall -3.40%
>   Amount of memory referenced pre-ipa decreased from 17729k to 16921k, overall -4.77%
>     Pre-IPA-Garbage: 14091k -> 13627k
>     Pre-IPA-Leak: 17729k -> 16921k
>     Pre-IPA-Overhead: 2302k -> 2511k
>   Amount of produced post-ipa-GGC garbage decreased from 14091k to 13627k, overall -3.40%
>   Amount of memory referenced post-ipa decreased from 17729k to 16921k, overall -4.77%
>     Post-IPA-Garbage: 14091k -> 13627k
>     Post-IPA-Leak: 17729k -> 16921k
>     Post-IPA-Overhead: 2302k -> 2511k
> 
> comparing insn-attrtab.c compilation at -O0 level:
>   Ovarall memory allocated via mmap and sbrk decreased from 148235k to 140164k, overall -5.76%
>   Peak amount of GGC memory still allocated after garbage collecting decreased from 58720k to 54607k, overall -7.53%
>   Amount of produced GGC garbage decreased from 135591k to 131074k, overall -3.45%
>     Overall memory needed: 148235k -> 140164k
>     Peak memory use before GGC: 66309k -> 64730k
>     Peak memory use after GGC: 58720k -> 54607k
>     Maximum of released memory in single GGC run: 28091k -> 27749k
>     Garbage: 135591k -> 131074k
>     Leak: 7596k -> 7600k
>     Overhead: 14872k -> 15513k
>     GGC runs: 259 -> 260
>   Amount of produced pre-ipa-GGC garbage decreased from 43667k to 39184k, overall -11.44%
>   Amount of memory referenced pre-ipa decreased from 60539k to 54989k, overall -10.09%
>     Pre-IPA-Garbage: 43667k -> 39184k
>     Pre-IPA-Leak: 60539k -> 54989k
>     Pre-IPA-Overhead: 7757k -> 8306k
>   Amount of produced post-ipa-GGC garbage decreased from 43667k to 39184k, overall -11.44%
>   Amount of memory referenced post-ipa decreased from 60539k to 54989k, overall -10.09%
>     Post-IPA-Garbage: 43667k -> 39184k
>     Post-IPA-Leak: 60539k -> 54989k
>     Post-IPA-Overhead: 7757k -> 8306k
> 
> comparing insn-attrtab.c compilation at -O0 -g level:
>   Ovarall memory allocated via mmap and sbrk decreased from 149711k to 143076k, overall -4.64%
>   Peak amount of GGC memory still allocated after garbage collecting decreased from 59992k to 55880k, overall -7.36%
>   Amount of produced GGC garbage decreased from 136116k to 131590k, overall -3.44%
>     Overall memory needed: 149711k -> 143076k
>     Peak memory use before GGC: 67584k -> 66005k
>     Peak memory use after GGC: 59992k -> 55880k
>     Maximum of released memory in single GGC run: 28091k -> 27750k
>     Garbage: 136116k -> 131590k
>     Leak: 9247k -> 9251k
>     Overhead: 15331k -> 15970k
>     GGC runs: 253
>   Amount of produced pre-ipa-GGC garbage decreased from 43724k to 39241k, overall -11.42%
>   Amount of memory referenced pre-ipa decreased from 62081k to 56531k, overall -9.82%
>     Pre-IPA-Garbage: 43724k -> 39241k
>     Pre-IPA-Leak: 62081k -> 56531k
>     Pre-IPA-Overhead: 8094k -> 8641k
>   Amount of produced post-ipa-GGC garbage decreased from 43724k to 39241k, overall -11.42%
>   Amount of memory referenced post-ipa decreased from 62081k to 56531k, overall -9.82%
>     Post-IPA-Garbage: 43724k -> 39241k
>     Post-IPA-Leak: 62081k -> 56531k
>     Post-IPA-Overhead: 8094k -> 8641k
> 
> comparing insn-attrtab.c compilation at -O1 level:
>   Peak amount of GGC memory allocated before garbage collecting run decreased from 53459k to 49645k, overall -7.68%
>   Peak amount of GGC memory still allocated after garbage collecting decreased from 47720k to 42480k, overall -12.34%
>   Amount of produced GGC garbage decreased from 202867k to 185556k, overall -9.33%
>     Overall memory needed: 131999k -> 128156k
>     Peak memory use before GGC: 53459k -> 49645k
>     Peak memory use after GGC: 47720k -> 42480k
>     Maximum of released memory in single GGC run: 23289k -> 22930k
>     Garbage: 202867k -> 185556k
>     Leak: 6978k -> 6982k
>     Overhead: 24163k -> 25040k
>     GGC runs: 298 -> 299
>   Amount of produced pre-ipa-GGC garbage decreased from 50254k to 45165k, overall -11.27%
>   Amount of memory referenced pre-ipa decreased from 48654k to 42668k, overall -14.03%
>     Pre-IPA-Garbage: 50254k -> 45165k
>     Pre-IPA-Leak: 48654k -> 42668k
>     Pre-IPA-Overhead: 7367k -> 7852k
>   Amount of produced post-ipa-GGC garbage decreased from 50254k to 45165k, overall -11.27%
>   Amount of memory referenced post-ipa decreased from 48654k to 42668k, overall -14.03%
>     Post-IPA-Garbage: 50254k -> 45165k
>     Post-IPA-Leak: 48654k -> 42668k
>     Post-IPA-Overhead: 7367k -> 7852k
> 
> comparing insn-attrtab.c compilation at -O2 level:
>   Ovarall memory allocated via mmap and sbrk decreased from 178751k to 170752k, overall -4.68%
>   Peak amount of GGC memory allocated before garbage collecting run decreased from 54123k to 49693k, overall -8.91%
>   Peak amount of GGC memory still allocated after garbage collecting decreased from 48728k to 43507k, overall -12.00%
>   Amount of produced GGC garbage decreased from 239725k to 218680k, overall -9.62%
>     Overall memory needed: 178751k -> 170752k
>     Peak memory use before GGC: 54123k -> 49693k
>     Peak memory use after GGC: 48728k -> 43507k
>     Maximum of released memory in single GGC run: 22127k -> 21651k
>     Garbage: 239725k -> 218680k
>     Leak: 6986k -> 6990k
>     Overhead: 29748k -> 30421k
>     GGC runs: 331 -> 333
>   Amount of produced pre-ipa-GGC garbage decreased from 50323k to 45243k, overall -11.23%
>   Amount of memory referenced pre-ipa decreased from 48659k to 42673k, overall -14.03%
>     Pre-IPA-Garbage: 50323k -> 45243k
>     Pre-IPA-Leak: 48659k -> 42673k
>     Pre-IPA-Overhead: 7374k -> 7860k
>   Amount of produced post-ipa-GGC garbage decreased from 50323k to 45243k, overall -11.23%
>   Amount of memory referenced post-ipa decreased from 48659k to 42673k, overall -14.03%
>     Post-IPA-Garbage: 50323k -> 45243k
>     Post-IPA-Leak: 48659k -> 42673k
>     Post-IPA-Overhead: 7374k -> 7860k
> 
> comparing insn-attrtab.c compilation at -O3 level:
>   Ovarall memory allocated via mmap and sbrk decreased from 187239k to 179092k, overall -4.55%
>   Peak amount of GGC memory allocated before garbage collecting run decreased from 65039k to 61709k, overall -5.40%
>   Peak amount of GGC memory still allocated after garbage collecting decreased from 62171k to 58153k, overall -6.91%
>   Amount of produced GGC garbage decreased from 266382k to 250116k, overall -6.50%
>     Overall memory needed: 187239k -> 179092k
>     Peak memory use before GGC: 65039k -> 61709k
>     Peak memory use after GGC: 62171k -> 58153k
>     Maximum of released memory in single GGC run: 24136k -> 23742k
>     Garbage: 266382k -> 250116k
>     Leak: 6994k -> 6998k
>     Overhead: 31585k -> 33988k
>     GGC runs: 333 -> 338
>   Amount of produced pre-ipa-GGC garbage decreased from 50323k to 45243k, overall -11.23%
>   Amount of memory referenced pre-ipa decreased from 48659k to 42673k, overall -14.03%
>     Pre-IPA-Garbage: 50323k -> 45243k
>     Pre-IPA-Leak: 48659k -> 42673k
>     Pre-IPA-Overhead: 7374k -> 7860k
>   Amount of produced post-ipa-GGC garbage decreased from 50323k to 45243k, overall -11.23%
>   Amount of memory referenced post-ipa decreased from 48659k to 42673k, overall -14.03%
>     Post-IPA-Garbage: 50323k -> 45243k
>     Post-IPA-Leak: 48659k -> 42673k
>     Post-IPA-Overhead: 7374k -> 7860k
> 
> comparing Gerald's testcase PR8361 compilation at -O0 level:
>   Amount of produced GGC garbage increased from 205361k to 211214k, overall 2.85%
>     Overall memory needed: 148701k -> 147923k
>     Peak memory use before GGC: 83343k -> 81234k
>     Peak memory use after GGC: 82490k -> 80428k
>     Maximum of released memory in single GGC run: 14621k -> 15884k
>     Garbage: 205361k -> 211214k
>     Leak: 49661k -> 49337k
>     Overhead: 26144k -> 26892k
>     GGC runs: 414 -> 421
>   Amount of produced pre-ipa-GGC garbage increased from 107822k to 112585k, overall 4.42%
>     Pre-IPA-Garbage: 107822k -> 112585k
>     Pre-IPA-Leak: 88230k -> 86234k
>     Pre-IPA-Overhead: 13911k -> 14544k
>   Amount of produced post-ipa-GGC garbage increased from 107822k to 112585k, overall 4.42%
>     Post-IPA-Garbage: 107822k -> 112585k
>     Post-IPA-Leak: 88230k -> 86234k
>     Post-IPA-Overhead: 13911k -> 14544k
> 
> comparing Gerald's testcase PR8361 compilation at -O0 -g level:
>   Amount of produced GGC garbage increased from 210991k to 216833k, overall 2.77%
>     Overall memory needed: 166229k -> 165347k
>     Peak memory use before GGC: 97292k -> 94894k
>     Peak memory use after GGC: 96328k -> 93954k
>     Maximum of released memory in single GGC run: 14909k -> 16223k
>     Garbage: 210991k -> 216833k
>     Leak: 76251k -> 75899k
>     Overhead: 32832k -> 33548k
>     GGC runs: 385 -> 393
>   Amount of produced pre-ipa-GGC garbage increased from 108461k to 113207k, overall 4.38%
>     Pre-IPA-Garbage: 108461k -> 113207k
>     Pre-IPA-Leak: 104800k -> 102753k
>     Pre-IPA-Overhead: 17450k -> 18048k
>   Amount of produced post-ipa-GGC garbage increased from 108461k to 113207k, overall 4.38%
>     Post-IPA-Garbage: 108461k -> 113207k
>     Post-IPA-Leak: 104800k -> 102753k
>     Post-IPA-Overhead: 17450k -> 18048k
> 
> comparing Gerald's testcase PR8361 compilation at -O1 level:
>   Ovarall memory allocated via mmap and sbrk decreased from 111653k to 108276k, overall -3.12%
>   Amount of produced GGC garbage increased from 286799k to 291154k, overall 1.52%
>     Overall memory needed: 111653k -> 108276k
>     Peak memory use before GGC: 81606k -> 80809k
>     Peak memory use after GGC: 80791k -> 80003k
>     Maximum of released memory in single GGC run: 14786k -> 15998k
>     Garbage: 286799k -> 291154k
>     Leak: 46887k -> 46438k
>     Overhead: 28989k -> 31041k
>     GGC runs: 509 -> 511
>   Amount of produced pre-ipa-GGC garbage increased from 152239k to 160850k, overall 5.66%
>     Pre-IPA-Garbage: 152239k -> 160850k
>     Pre-IPA-Leak: 84520k -> 83803k
>     Pre-IPA-Overhead: 17402k -> 18931k
>   Amount of produced post-ipa-GGC garbage increased from 152239k to 160850k, overall 5.66%
>     Post-IPA-Garbage: 152239k -> 160850k
>     Post-IPA-Leak: 84520k -> 83803k
>     Post-IPA-Overhead: 17402k -> 18931k
> 
> comparing Gerald's testcase PR8361 compilation at -O2 level:
>     Overall memory needed: 113169k -> 110240k
>     Peak memory use before GGC: 81700k -> 80908k
>     Peak memory use after GGC: 80884k -> 80103k
>     Maximum of released memory in single GGC run: 14788k -> 16001k
>     Garbage: 339211k -> 338275k
>     Leak: 46961k -> 46605k
>     Overhead: 33953k -> 36150k
>     GGC runs: 578 -> 570
>   Amount of produced pre-ipa-GGC garbage increased from 153846k to 162586k, overall 5.68%
>     Pre-IPA-Garbage: 153846k -> 162586k
>     Pre-IPA-Leak: 84396k -> 83854k
>     Pre-IPA-Overhead: 17538k -> 19119k
>   Amount of produced post-ipa-GGC garbage increased from 153846k to 162586k, overall 5.68%
>     Post-IPA-Garbage: 153846k -> 162586k
>     Post-IPA-Leak: 84396k -> 83854k
>     Post-IPA-Overhead: 17538k -> 19119k
> 
> comparing Gerald's testcase PR8361 compilation at -O3 level:
>   Amount of produced GGC garbage increased from 363823k to 370237k, overall 1.76%
>     Overall memory needed: 119581k -> 116820k
>     Peak memory use before GGC: 81700k -> 80908k
>     Peak memory use after GGC: 80884k -> 80103k
>     Maximum of released memory in single GGC run: 14788k -> 16001k
>     Garbage: 363823k -> 370237k
>     Leak: 46936k -> 46451k
>     Overhead: 35784k -> 39289k
>     GGC runs: 594 -> 597
>   Amount of produced pre-ipa-GGC garbage increased from 153846k to 162586k, overall 5.68%
>     Pre-IPA-Garbage: 153846k -> 162586k
>     Pre-IPA-Leak: 84400k -> 83868k
>     Pre-IPA-Overhead: 17538k -> 19120k
>   Amount of produced post-ipa-GGC garbage increased from 153846k to 162586k, overall 5.68%
>     Post-IPA-Garbage: 153846k -> 162586k
>     Post-IPA-Leak: 84400k -> 83868k
>     Post-IPA-Overhead: 17538k -> 19120k
> 
> comparing PR rtl-optimization/28071 testcase compilation at -O0 level:
>   Amount of produced GGC garbage increased from 180611k to 181152k, overall 0.30%
>     Overall memory needed: 377731k -> 375459k
>     Peak memory use before GGC: 101152k -> 100315k
>     Peak memory use after GGC: 56806k -> 55968k
>     Maximum of released memory in single GGC run: 50582k
>     Garbage: 180611k -> 181152k
>     Leak: 6622k -> 6622k
>     Overhead: 30732k -> 31039k
>     GGC runs: 88 -> 90
>   Amount of produced pre-ipa-GGC garbage increased from 12467k to 13660k, overall 9.57%
>   Amount of memory referenced pre-ipa decreased from 21983k to 19296k, overall -13.93%
>     Pre-IPA-Garbage: 12467k -> 13660k
>     Pre-IPA-Leak: 21983k -> 19296k
>     Pre-IPA-Overhead: 1847k -> 1972k
>   Amount of produced post-ipa-GGC garbage increased from 12467k to 13660k, overall 9.57%
>   Amount of memory referenced post-ipa decreased from 21983k to 19296k, overall -13.93%
>     Post-IPA-Garbage: 12467k -> 13660k
>     Post-IPA-Leak: 21983k -> 19296k
>     Post-IPA-Overhead: 1847k -> 1972k
> 
> comparing PR rtl-optimization/28071 testcase compilation at -O0 -g level:
>   Amount of produced GGC garbage increased from 180728k to 181269k, overall 0.30%
>     Overall memory needed: 378691k -> 376279k
>     Peak memory use before GGC: 101851k -> 101014k
>     Peak memory use after GGC: 57504k -> 56667k
>     Maximum of released memory in single GGC run: 50583k
>     Garbage: 180728k -> 181269k
>     Leak: 8667k -> 8666k
>     Overhead: 31318k -> 31624k
>     GGC runs: 95 -> 97
>   Amount of produced pre-ipa-GGC garbage increased from 12475k to 13668k, overall 9.56%
>   Amount of memory referenced pre-ipa decreased from 22232k to 19545k, overall -13.75%
>     Pre-IPA-Garbage: 12475k -> 13668k
>     Pre-IPA-Leak: 22232k -> 19545k
>     Pre-IPA-Overhead: 1901k -> 2026k
>   Amount of produced post-ipa-GGC garbage increased from 12475k to 13668k, overall 9.56%
>   Amount of memory referenced post-ipa decreased from 22232k to 19545k, overall -13.75%
>     Post-IPA-Garbage: 12475k -> 13668k
>     Post-IPA-Leak: 22232k -> 19545k
>     Post-IPA-Overhead: 1901k -> 2026k
> 
> comparing PR rtl-optimization/28071 testcase compilation at -O1 level:
>   Ovarall memory allocated via mmap and sbrk decreased from 384083k to 363616k, overall -5.63%
>   Peak amount of GGC memory allocated before garbage collecting run decreased from 75898k to 71726k, overall -5.82%
>   Peak amount of GGC memory still allocated after garbage collecting decreased from 67842k to 63619k, overall -6.64%
>   Amount of memory still referenced at the end of compilation decreased from 8242k to 7266k, overall -13.44%
>     Overall memory needed: 384083k -> 363616k
>     Peak memory use before GGC: 75898k -> 71726k
>     Peak memory use after GGC: 67842k -> 63619k
>     Maximum of released memory in single GGC run: 34793k -> 34866k
>     Garbage: 243329k -> 242138k
>     Leak: 8242k -> 7266k
>     Overhead: 30714k -> 32534k
>     GGC runs: 94 -> 96
>   Amount of produced pre-ipa-GGC garbage increased from 49540k to 51866k, overall 4.69%
>   Amount of memory referenced pre-ipa decreased from 63958k to 60977k, overall -4.89%
>     Pre-IPA-Garbage: 49540k -> 51866k
>     Pre-IPA-Leak: 63958k -> 60977k
>     Pre-IPA-Overhead: 6527k -> 7892k
>   Amount of produced post-ipa-GGC garbage increased from 49540k to 51866k, overall 4.69%
>   Amount of memory referenced post-ipa decreased from 63958k to 60977k, overall -4.89%
>     Post-IPA-Garbage: 49540k -> 51866k
>     Post-IPA-Leak: 63958k -> 60977k
>     Post-IPA-Overhead: 6527k -> 7892k
> 
> comparing PR rtl-optimization/28071 testcase compilation at -O2 level:
>   Peak amount of GGC memory allocated before garbage collecting run decreased from 75899k to 71496k, overall -6.16%
>   Peak amount of GGC memory still allocated after garbage collecting decreased from 67843k to 63620k, overall -6.64%
>   Amount of produced GGC garbage decreased from 254882k to 245858k, overall -3.67%
>   Amount of memory still referenced at the end of compilation decreased from 8405k to 7429k, overall -13.14%
>     Overall memory needed: 319143k -> 316904k
>     Peak memory use before GGC: 75899k -> 71496k
>     Peak memory use after GGC: 67843k -> 63620k
>     Maximum of released memory in single GGC run: 32467k -> 36143k
>     Garbage: 254882k -> 245858k
>     Leak: 8405k -> 7429k
>     Overhead: 33489k -> 33920k
>     GGC runs: 106 -> 102
>   Amount of produced pre-ipa-GGC garbage increased from 107535k to 111746k, overall 3.92%
>   Amount of memory referenced pre-ipa decreased from 75847k to 72217k, overall -5.03%
>     Pre-IPA-Garbage: 107535k -> 111746k
>     Pre-IPA-Leak: 75847k -> 72217k
>     Pre-IPA-Overhead: 10845k -> 13700k
>   Amount of produced post-ipa-GGC garbage increased from 107535k to 111746k, overall 3.92%
>   Amount of memory referenced post-ipa decreased from 75847k to 72217k, overall -5.03%
>     Post-IPA-Garbage: 107535k -> 111746k
>     Post-IPA-Leak: 75847k -> 72217k
>     Post-IPA-Overhead: 10845k -> 13700k
> 
> comparing PR rtl-optimization/28071 testcase compilation at -O3 -fno-tree-pre -fno-tree-fre level:
>   Overall memory allocated via mmap and sbrk increased from 1068407k to 1118412k, overall 4.68%
>   Peak amount of GGC memory allocated before garbage collecting run decreased from 142724k to 137913k, overall -3.49%
>   Peak amount of GGC memory still allocated after garbage collecting decreased from 129380k to 125190k, overall -3.35%
>   Amount of produced GGC garbage increased from 356330k to 366793k, overall 2.94%
>   Amount of memory still referenced at the end of compilation decreased from 11384k to 9929k, overall -14.66%
>     Overall memory needed: 1068407k -> 1118412k
>     Peak memory use before GGC: 142724k -> 137913k
>     Peak memory use after GGC: 129380k -> 125190k
>     Maximum of released memory in single GGC run: 59679k -> 61836k
>     Garbage: 356330k -> 366793k
>     Leak: 11384k -> 9929k
>     Overhead: 38131k -> 42451k
>     GGC runs: 92 -> 97
>   Amount of produced pre-ipa-GGC garbage increased from 107535k to 111746k, overall 3.92%
>   Amount of memory referenced pre-ipa decreased from 75847k to 72217k, overall -5.03%
>     Pre-IPA-Garbage: 107535k -> 111746k
>     Pre-IPA-Leak: 75847k -> 72217k
>     Pre-IPA-Overhead: 10845k -> 13700k
>   Amount of produced post-ipa-GGC garbage increased from 107535k to 111746k, overall 3.92%
>   Amount of memory referenced post-ipa decreased from 75847k to 72217k, overall -5.03%
>     Post-IPA-Garbage: 107535k -> 111746k
>     Post-IPA-Leak: 75847k -> 72217k
>     Post-IPA-Overhead: 10845k -> 13700k
> 
> Head of the ChangeLog is:
> 
> --- /usr/src/SpecTests/sandbox-britten-memory/x86_64/mem-result/ChangeLog	2008-07-26 00:01:44.000000000 +0000
> +++ /usr/src/SpecTests/sandbox-britten-memory/gcc/gcc/ChangeLog	2008-07-26 18:54:49.000000000 +0000
> @@ -1,7 +1,732 @@
> -2008-07-25  Andreas Krebbel  <krebbel1@de.ibm.com>
> +2008-07-25  Michael Meissner  <gnu@the-meissners.org>
>  
> -	* tree-tailcall.c (process_assignment): Prevent tail call
> -	optimization if the modes of the return types don't match.
> +	* doc/extend.texi (hot attribute): Document that the hot attribute
> +	turns on -O3 for some ports.
> +	(cold attribute): Document that the cold attribute turns on -Os
> +	for some ports
> +
> +	* doc/tm.texi (OPTIMIZATION_OPTIONS): Update documentation to
> +	reflect function specific option support.
> +
> +	* target.h (struct target_option_hooks): Add fields to say whether
> +	the cold attribute implies -Os and the hot attribute implies -O3.
> +
> +	* target-def.h (TARGET_OPTION_COLD_ATTRIBUTE_SETS_OPTIMIZATION):
> +	By default, do not turn on -Os for cold functions.
> +	(TARGET_OPTION_COLD_ATTRIBUTE_SETS_OPTIMIZATION): By default, do
> +	not turn on -O3 for hot functions.
> +
> +	* c-common.c (handle_hot_attribute): Use target hook to determine
> +	if hot functions should enable -O3.
> +	(handle_cold_attribute): Use target hook to determine if cold
> +	functions should enable -Os.
> +
> +	* config/i386/i386.c (ix86_target_string): Add -m3dnowa support.
> +	(override_options): Move disable scheduling to
> +	optimization_options.
> +	(optimization_options): Disable scheduling here, not
> +	override_options.
> +	(TARGET_OPTION_COLD_ATTRIBUTE_SETS_OPTIMIZATION): Define.
> +	(TARGET_OPTION_HOT_ATTRIBUTE_SETS_OPTIMIZATION): Define.
> +
> +	* config/ia64/ia64.c (ia64_override_options): Move setting
> +	scheduling flags to ia64_optimization_options.
> +	(ia64_optimization_options): Disable scheduling options here, and
> +	not in ia64_override_options.
> +	(TARGET_OPTION_COLD_ATTRIBUTE_SETS_OPTIMIZATION): Define.
> +	(TARGET_OPTION_HOT_ATTRIBUTE_SETS_OPTIMIZATION): Define.
> +
> +2008-07-25  H.J. Lu  <hongjiu.lu@intel.com>
> +
> +	PR target/36936
> +	* config/i386/i386.c (override_options): Don't clear TARGET_CMOVE.
> +
> +2008-07-25  Martin Jambor  <mjambor@suse.cz>
> +
> +	PR tree-optimization/36926
> +	* ipa-prop.c (ipa_analyze_call_uses): Call
> +	ipa_is_ssa_with_stmt_def instead of SSA_NAME_IS_DEFAULT_DEF.
> +
> +2008-07-25  Joseph Myers  <joseph@codesourcery.com>
> +
> +	* config/arm/iwmmxt.md (movv8qi_internal, movv4hi_internal,
> +	movv2si_internal): Add mem = reg alternative.
> +
> +2008-07-25  Andreas Tobler  <a.tobler@schweiz.org>
> +
> +	PR bootstrap/36918
> +	* config/sparc/sparc.h (DEFAULT_PCC_STRUCT_RETURN): Define
> +	DEFAULT_PCC_STRUCT_RETURN to 127.
> +
> +2008-07-24  Jan Hubicka  <jh@suse.cz>
> +
> +	* cgraphbuild.c (record_reference): Drop non-unit-at-a-time code.
> +	(build_cgraph_edges): Likewise.
> +	* cgraph.c (cgraph_node): Do not update assembler hash.
> +	(cgraph_remove_node): Drop non-unit-at-a-time code.
> +	* tree-pass.h (pass_O0_always_inline): Remove.
> +	* ipa-reference.c (gate_reference): Remove unit-at-a-time check.
> +	* toplev.c (process_options): Flag unit-at-a-time does not imply
> +	no section anchors.
> +	* cgraphunit.c: Update comments.
> +	(decide_is_function_needed): Drop non-unit-at-a-time mode.
> +	(cgraph_assemble_pending_functions): Remove.
> +	(cgraph_reset_node): Drop non-unit-at-a-time code.
> +	(cgraph_finalize_function): Likewise.
> +	(cgraph_analyze_function): Likewise.
> +	(cgraph_finalize_compilation_unit): Likewise.
> +	(cgraph_expand_function): Likewise.
> +	(cgraph_optimize): Likesise.
> +	(save_inline_function_body): Likewise.
> +	* ipa-pure-const.c (gate_pure_const): Drop flag_unit_at_a_time check.
> +	* tree-ssa-alias.c (maybe_be_aliased): Likewise.
> +	* ipa-inline.c: Update comments.
> +	(enum inlining_mode): remove INLINE_SPEED.
> +	(cgraph_clone_inlined_nodes): Drop unit-at-a-time check.
> +	(cgraph_mark_inline_edge): Likewise.
> +	(try_inline): Likewise.
> +	(cgraph_decide_inlining_incrementally): Likewise.
> +	(cgraph_gate_inlining): Remove.
> +	(cgraph_early_inlining): Remove flag_unit_at_a_time checks.
> +	(cgraph_gate_early_inlining): Likewise.
> +	(gate_inline_passes): Remove.
> +	(pass_inline_parameters, pass_ipa_inline): Remove gates.
> +	(cgraph_gate_O0_always_inline, cgraph_O0_always_inline, 
> +	pass_O0_always_inline): Remove.
> +	* c-pch.c (c_pch_matching): Remove -funit-at-a-time.
> +	* dwarf2out.c (reference_to_unused): Remove flag_unit_at_a_time check.
> +	* opts.c (no_unit_at_a_time_default): Remove.
> +	(decode_options): Remove flag_unit_at_a_time reset and warning.
> +	* opts.h (no_unit_at_a_time_default): Remove.
> +	* c-decl.c (diagnose_mismatched_decls): Do not require inline keyword
> +	early in GNU dialect.
> +	(merge_decls): Update comment; drop unit-at-a-time check.
> +	(finish_decl): Likewise.
> +	(grok_declaration): Remove flag_inline_trees code.
> +	(finish_functions): Return on function returning non-void on all
> +	statics.
> +	* ipa-tye-escape.c (gate_type_escape_vars): Remove.
> +	* cfgexpand.c (expand_one_static_var): Remove.
> +	(expand_one_var): Remove expand_one_static_var call.
> +	(expand_used_vars_for_block): Remove flag_unit_a_time check.
> +	* c-opts.c (c_common_post_options): Remove flag_inline_trees code
> +	and flag_unit_at_a-time compatibility checks.
> +	* varasm.c (assemble_alias): Remove flag_unit_at_a_time check.
> +	* tree-inline.c (flag_inline_trees): Remove.
> +	(inlinable_function_p): Don't check it.
> +	(expand_call_inline): Remove non-unit-at-a-time code.
> +	* tree-inline.h (flag_inline_trees): Remove.
> +	* tree-optimize.c (execute_early_local_optimizations): Remove
> +	unit-at-a-time checks.
> +	(tree_rest_of_compilation): Likewise.
> +	* combine.c (setup_incoming_promotions): Likewise.
> +	* tree-profile.c (tree_gen_ic_func_profiler): Likewise.
> +	* tree-ssa-structalias.c (delete_points_to_sets): Likewise.
> +	* passes.c (pass_inline_parameters): Update comments; remove
> +	O0_alwaysinline pass.
> +	(execute_one_ipa_transform_pass): Do not reset in_gimple_form.
> +	(execute_one_pass): Likewise.
> +	* i386.c (ix86_function_regparm): Remove unit-at-a-time check.
> +	(ix86_function_sseregparm): Likewise.
> +	* arm.c (arm_function_in_section_p): Likewise.
> +	* bfin.c (bfin_load_pic_reg, bfin_function_ok_for_sibcall): Likewise.
> +	* varpool.c: Update comments.
> +	(decide_is_variable_needed): Remove unit-at-a-time checks.
> +	(varpool_finalize_decl): Likewise.
> +
> +2008-07-24  Kaz Kojima  <kkojima@gcc.gnu.org>
> +
> +	* config/sh/sh.h (OPTIMIZATION_OPTIONS): Set flag_omit_frame_pointer
> +	to 2 instead of -1.
> +	(OVERRIDE_OPTIONS): Check if flag_omit_frame_pointer is equal
> +	to 2.
> +
> +2008-07-24  Kai Tietz  <kai.tietz@onevision.com>
> +
> +	* config/i386/i386.c (get_dllimport_decl): Treat user_label_prefix for
> +	imp symbol extension.
> +
> +        2008-07-23  Ian Lance Taylor  <iant@google.com>
> +
> +	* tree-vrp.c (infer_value_range): Ignore asm statements when
> +	looking for memory accesses for -fdelete-null-pointer-checks.
> +
> +2008-07-24  Ben Elliston  <bje@au.ibm.com>
> +
> +	* config/spu/spu-c.c (__vector_keyword): New variable.
> +	(vector_keyword): Likewise.
> +	(spu_categorize_keyword): New function.
> +	(spu_macro_to_expand): Likewise.
> +	(spu_cpu_cpp_builtins): Enable context-sensitive macros if not
> +	compiling an ISO C dialect.
> +
> +2008-07-24  Ben Elliston  <bje@au.ibm.com>
> +
> +	* config/rs6000/rs6000-c.c: Move GTY(()) markers to match
> +	conventional usage.
> +
> +2008-07-23  Aaron W. LaFramboise  <aaronavay62@aaronwl.com>
> +
> +	* configure: Regenerate.
> +	* configure.ac: Require texinfo 4.7.
> +	* doc/install.texi: Document texinfo 4.7 requirement.
> +
> +2008-07-23  Martin Jambor  <mjambor@suse.cz>
> +
> +        * ipa-cp.c (ipcp_print_edge_profiles): Test for node->analyzed
> +	rather than for DECL_SAVED_TREE.
> +	* ipa-prop.c: Include diagnostic.h.
> +        (ipa_check_stmt_modifications): Check LHS of GIMPLE_MODIFY_EXPRs
> +	thoroughly.
> +	(ipa_detect_param_modifications): Function rewritten from scratch.
> +	(ipa_compute_jump_functions): Changed accesses to modification flags.
> +	(ipa_free_node_params_substructures): Update flags destruction.
> +	(ipa_node_duplication_hook): Update flags duplication.
> +	(ipa_print_all_params_modified): Updated flag access.
> +	* ipa-prop.h (struct ipa_param_flags): New structure.
> +        (struct ipa_node_params): New field modification_analysis_done,
> +        modified_flags changed into param_flags.
> +        (ipa_is_ith_param_modified): Changed to use new flags.
> +	* Makefile.in (ipa-prop.o): Add $(DIAGNOSTIC_H) to dependencies.
> +
> +	* ipa-prop.c (ipa_print_all_jump_functions): Moved here from
> +	ipa-cp.c and split into two functions.
> +	(ipa_print_node_jump_functions): New function.
> +	(compute_scalar_jump_functions): New function.
> +	(type_like_member_ptr_p): New function.
> +	(compute_pass_through_member_ptrs): New function.
> +	(fill_member_ptr_cst_jump_function): New function.
> +	(determine_cst_member_ptr): New function.
> +	(compute_cst_member_ptr_arguments): New function.
> +	(ipa_compute_jump_functions): Complete rewrite.
> +	* ipa-prop.h (enum jump_func_type): Make explicit that we depend
> +	on IPA_UNKNOWN being zero. Added value IPA_CONST_MEMBER_PTR.
> +	(struct ipa_member_ptr_cst): New structure.
> +	(union jump_func_value): New field member_cst.
> +	* ipa-cp.c (ipcp_lat_is_insertable): New function.
> +	(ipcp_lattice_from_jfunc): Produces bottom lattices for unhandled
> +	jump function types.
> +	(ipcp_print_all_lattices): Slight fprintf rearrangement.
> +	(ipcp_print_all_structures): Call ipa_print_all_jump_functions
> +	instead of ipcp_print_all_jump_functions.
> +	(ipcp_insert_stage): Use ipcp_lat_is_insertable, create replace maps
> +	only for replacable scalars.
> +
> +	* doc/invoke.texi (Optimize options): Add description of
> +	-findirect-inlining.
> +	* common.opt (flag_indirect_inlining): New flag.
> +	* opts.c (decode_options): Set flag_indirect_inlining when 
> +	optimize >= 3.
> +
> +	* ipa-inline.c: Include ipa-prop.h.
> +	(inline_indirect_intraprocedural_analysis): New function.
> +	(inline_generate_summary): Allocate parameter and argument info
> +	structures, call inline_indirect_intraprocedural_analysis on each
> +	node when doing indirect inlining and deallocate indirect inlining 
> +	data structures in the end.
> +	* ipa-prop.c (ipa_create_param_decls_array): Return if already done.
> +	(free_all_ipa_structures_after_iinln): New function.
> +	(free_all_ipa_structures_after_ipa_cp): Checks whether iinln will be 
> +	done.
> +	* Makefile.in (ipa-inline.o): Added $(IPA_PROP_H) to dependencies.
> +
> +	* cgraphbuild.c (compute_call_stmt_bb_frequency): New function.
> +	(build_cgraph_edges): Call compute_call_stmt_bb_frequency instead
> +	of computing the frequency separately.
> +	(rebuild_cgraph_edges): Call compute_call_stmt_bb_frequency instead
> +	of computing the frequency separately.
> +	* ipa-cp.c (ipcp_print_all_structures): Replace a call to 
> +	ipa_print_all_param_modified with a call to ipa_print_all_param_flags.
> +	* ipa-prop.c (ipa_get_member_ptr_load_param): New function.
> +	(ipa_get_stmt_member_ptr_load_param): New function.
> +	(ipa_is_ssa_with_stmt_def): New function.
> +	(ipa_note_param_call): New function.
> +	(ipa_analyze_call_uses): New function.
> +	(ipa_analyze_stmt_uses): New function.
> +	(ipa_analyze_params_uses): New function.
> +	(ipa_free_node_params_substructures): Also free the param_calls linked
> +	list.
> +	(ipa_node_duplication_hook): Also duplicate the param_calls linked list.
> +	(ipa_print_node_param_flags): New function.
> +	(ipa_print_all_params_modified): Renamed to ipa_print_all_param_flags.
> +	(ipa_print_all_param_flags): Calls ipa_print_node_param_flags.
> +	* ipa-prop.h (struct ipa_param_flags): New field called.
> +	(struct ipa_param_call_note): New structure.
> +	(struct ipa_node_params): New fields param_calls and
> +	uses_analysis_done.
> +	(ipa_is_ith_param_called): New function.
> +	* ipa-inline.c (inline_indirect_intraprocedural_analysis): Call
> +	ipa_analyze_params_uses and dump parameter flags.
> +
> +	* ipa-inline.c (cgraph_decide_recursive_inlining): Call
> +	ipa_propagate_indirect_call_infos if performing indirect inlining,
> +	pass a new parameter new_edges to it.
> +	(add_new_edges_to_heap): New fucntion.
> +	(cgraph_decide_inlining_of_small_functions): New vector
> +	new_indirect_edges for newly found indirect edges , call
> +	ipa_propagate_indirect_call_infos after inlining.
> +	(cgraph_decide_inlining): Call ipa_propagate_indirect_call_infos after
> +	inlining if performing indirect inlining.  Call
> +	free_all_ipa_structures_after_iinln when doing so too.
> +	(inline_generate_summary): Do not call
> +	free_all_ipa_structures_after_iinln here.
> +	* ipa-prop.c (update_jump_functions_after_inlining): New function.
> +	(print_edge_addition_message): New function.
> +	(update_call_notes_after_inlining): New function.
> +	(propagate_info_to_inlined_callees): New function.
> +	(ipa_propagate_indirect_call_infos): New function.
> +	* ipa-prop.h: Include cgraph.h
> +	(struct ipa_param_call_note): Fields reordered, new field processed.
> +	* cgraph.h (cgraph_edge): Shrink loop_nest field to 31 bits, add a new
> +	flag indirect_call.
> +	* cgraphunit.c (verify_cgraph_node): Allow indirect edges not to have
> +	rediscovered call statements.
> +	* cgraph.c (cgraph_create_edge): Initialize indirect_call to zero.
> +	(dump_cgraph_node): Dump also the indirect_call flag.
> +	(cgraph_clone_edge): Copy also the indirect_call flag.
> +	* tree-inline.c (copy_bb): Do not check for fndecls from call
> +	expressions, check for edge availability when moving clones.
> +	(get_indirect_callee_fndecl): New function.
> +	(expand_call_inline): If callee declaration is not apprent from
> +	the statement, try calling get_indirect_callee_fndecl.  Do not
> +	issue warnings or call sorry when not inlinings an indirect edge.
> +	* Makefile.in (IPA_PROP_H): Added $(CGRAPH_H) to dependencies.
> +
> +	* ipa-prop.c (ipa_print_node_param_flags): Make the dump format a
> +	bit more frandly to matching.
> +	* testsuite/g++.dg/ipa/iinline-1.C: New testcase.
> +	* testsuite/gcc.dg/ipa/iinline-1.c: New testcase.
> +	* testsuite/gcc.dg/ipa/modif-1.c: New testcase.
> +	
> +2008-07-23  Michael Meissner  <gnu@the-meissners.org>
> +
> +	PR 36907
> +	* opth-gen.awk: Suppress function specific features when building
> +	target libraries.
> +	* optc-gen.awk: Ditto.
> +
> +2008-07-23  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
> +
> +	PR 35058
> +	* diagnostic.c (pedwarn): Add opt parameter.
> +	(pedwarn0): New.
> +	* c-tree.h (pedwarn_init): Add opt parameter.
> +	(pedwarn_c90): Likewise.
> +	(pedwarn_c99): Likewise.
> +	* c-errors.c (pedwarn_c99): Likewise.
> +	(pedwarn_c90): Likewise.
> +	* toplev.h (pedwarn): Update declaration.
> +	(pedwarn0): Declare.
> +	* c-lex.c: All calls to pedwarn changed.
> +	* builtins.c: All calls to pedwarn changed.
> +	* toplev.c: All calls to pedwarn changed.
> +	* c-decl.c: All calls to pedwarn changed.
> +	* c-typeck.c: All calls to pedwarn changed.
> +	* c-common.c: All calls to pedwarn changed.
> +	* c-parser.c: All calls to pedwarn changed.
> +	
> +2008-07-23  Michael Meissner  <gnu@the-meissners.org>
> +	    Karthik Kumar  <karthikkumar@gmail.com>
> +
> +	* attribs.c (file scope): Include c-common.h.
> +	(decl_attributes): Add support for #pragma GCC optimize and
> +	#pragma GCC option.
> +
> +	* targhooks.c (default_can_inline_p): New function that is the
> +	default for the TARGET_CAN_INLINE_P target hook.
> +
> +	* targhooks.h (default_can_inline_p): Add declaration.
> +
> +	* tree.c (cl_optimization_node): New static tree for building
> +	OPTIMIZATION_NODE tree.
> +	(cl_target_option_node): New static tree for building
> +	TARGET_OPTION_NODE tree.
> +	(cl_option_hash_table): New hash table for hashing
> +	OPTIMIZATION_NODE and TARGET_OPTION_NODE trees.
> +	(cl_option_hash_hash): New function to provide the hash value for
> +	OPTIMIZATION_NODE and TARGET_OPTION_NODE trees.
> +	(cl_option_hash_eq): New function to provide an equality test for
> +	OPTIMIZATION_NODE and TARGET_OPTION_NODE trees.
> +	(tree_code_size): Add support for OPTIMIZATION_NODE and
> +	TARGET_OPTION_NODE trees.
> +	(tree_code_structure): Add support for OPTIMIZATION_NODE and
> +	TARGET_OPTION_NODE trees.
> +	(build_optimization_node): Build a tree that has all of the
> +	current optimization options.
> +	(build_target_option_node): Build a tree that has the target
> +	options that might be changed on a per function basis.
> +
> +	* tree.h (file scope): Include options.h.
> +	(DECL_FUNCTION_SPECIFIC_TARGET): New accessor macro.
> +	(DECL_FUNCTION_SPECIFIC_OPTIMIZATION): Ditto.
> +	(TREE_OPTIMIZATION): Ditto.
> +	(TREE_TARGET_SPECIFIC): Ditto.
> +	(struct tree_function_decl): Add fields for remembering the
> +	current optimization options and target specific options.
> +	(struct tree_optimization_option): New tree variant that remembers
> +	the optimization options.
> +	(struct tree_target_option): New tree variant that remembers the
> +	target specific flags that might change for compiling a particular
> +	function.
> +	(union tree_node): Include tree_optimization_option and
> +	tree_target_option fields.
> +	(enum tree_index): Add TI_OPTIMIZATION_DEFAULT,
> +	TI_OPTIMIZATION_CURRENT, TI_OPTIMIZATION_COLD,
> +	TI_OPTIMIZATION_HOT, TI_TARGET_OPTION_DEFAULT,
> +	TI_TARGET_OPTION_CURRENT, TI_CURRENT_OPTION_PRAGMA,
> +	TI_CURRENT_OPTIMIZE_PRAGMA entries for saving function specific
> +	optimization and target options.
> +	(optimization_default_node): New macro to refer to global_trees
> +	field.
> +	(optimization_current_node): Ditto.
> +	(optimization_cold_node): Ditto.
> +	(optimization_hot_node): Ditto.
> +	(target_option_default_node): Ditto.
> +	(target_option_current_node): Ditto.
> +	(current_option_pragma): Ditto.
> +	(current_optimize_pragma): Ditto.
> +
> +	* target.h (struct gcc_target): Add valid_option_attribute_p,
> +	target_option_save, target_option_restore, target_option_print,
> +	target_option_pragma_parse, and can_inline_p hooks.
> +
> +	* toplev.h (parse_optimize_options): Add declaration.
> +	(fast_math_flags_struct_set_p): Ditto.
> +
> +	* c-cppbuiltin.c (c_cpp_builtins_optimize_pragma): New function to
> +	adjust the current __OPTIMIZE__, etc. macros when #pragma GCC
> +	optimize is used.
> +
> +	* ipa-inline.c (cgraph_decide_inlining_of_small_function): Call
> +	tree_can_inline_p hook to see if one function can inline another.
> +	(cgraph_decide_inlining): Ditto.
> +	(cgraph_decide_inlining_incrementally): Ditto.
> +
> +	* opts.c (decode_options): Add support for running multiple times
> +	to allow functions with different target or optimization options
> +	than was specified on the command line.
> +	(fast_math_flags_struct_set_p): New function that is similar to
> +	fast_math_flags_set_p, except it uses the values in the
> +	cl_optimization structure instead of global variables.
> +
> +	* optc-gen.awk: Add support for TargetSave to allow a back end to
> +	declare new fields that need to be saved when using function
> +	specific options.  Include flags.h and target.h in the options.c
> +	source.  Add support for Save to indicate which options can be set
> +	for individual functions.  Generate cl_optimize_save,
> +	cl_optimize_restore, cl_optimize_print, cl_target_option_save,
> +	cl_target_option_restore, cl_target_option_print functions to
> +	allow functions to use different optimization or target options.
> +
> +	* opt-functions.awk (var_type_struct): Return the type used for
> +	storing the field in a structure.
> +
> +	* opth-gen.awk: Add support for TargetSave to allow a back end to
> +	declare new fields that need to be saved when using function
> +	specific options.  Add support for Save to indicate which options
> +	can be set for individual functions.  Only generate one extern for
> +	Mask fields.  Generate cl_optimization and cl_target_option
> +	structures to remember optimization and target options.
> +
> +	* treestruct.def (TS_OPTIMIZATION): Add support for garbage
> +	collecting new tree nodes.
> +	(TS_TARGET_OPTION): Ditto.
> +
> +	* c-decl.c (merge_decls): Merge function specific target and
> +	optimization options.
> +
> +	* function.c (invoke_set_current_function_hook): If the function
> +	uses different optimization options, change the global variables
> +	to reflect this.
> +
> +	* coretypes.h (struct cl_optimization): Add forward reference.
> +	(struct cl_target_option): Ditto.
> +
> +	* c-pragma.c (option_stack): New static vector to remember the
> +	current #pragma GCC option stack.
> +	(handle_pragma_option): New function to support #pragma GCC option
> +	to change target options.
> +	(optimize_stack): New static vector to remember the current
> +	#pragma GCC optimize stack.
> +	(handle_pragma_optimize): New function to support #pragma GCC
> +	optimize to change optimization options.
> +	(init_pragma): Add support for #pragma GCC optimize and #pragma
> +	GCC option.
> +
> +	* tree.def (OPTIMIZATION_NODE): New tree code for remembering
> +	optimization options.
> +	(TARGET_OPTION_NODE): New tree code for remembering certain target
> +	options.
> +
> +	* print-tree.c (print_node): Add support for OPTIMIZATION_NODE and
> +	TARGET_OPTION_NODE trees.
> +
> +	* common.opt (-O): Add Optimization flag.
> +	(-Os): Ditto.
> +	(-fmath-errno): Ditto.
> +	(-falign-functions): Add UInteger flag to make sure flag gets full
> +	int in cl_optimization structure.
> +	(-falign-jumps): Ditto.
> +	(-falign-labels): Ditto.
> +	(-falign-loops): Ditto.
> +	(-fsched-stalled-insns): Ditto.
> +	(-fsched-stalled-insns-dep): Ditto.
> +
> +	* target-def.h (TARGET_VALID_OPTION_ATTRIBUTE_P): Add default
> +	definition.
> +	(TARGET_OPTION_SAVE): Ditto.
> +	(TARGET_OPTION_RESTORE): Ditto.
> +	(TARGET_OPTION_PRINT): Ditto.
> +	(TARGET_OPTION_PRAGMA_PARSE): Ditto.
> +	(TARGET_CAN_INLINE_P): Ditto.
> +	(TARGET_INITIALIZER): Add new hooks.
> +
> +	* tree-inline.c (tree_can_inline_p): New function to determine
> +	whether one function can inline another.  Check if the functions
> +	use compatible optimization options, and also call the backend
> +	can_inline_p hook.
> +
> +	* tree-inline.h (tree_can_inline_p): Add declaration.
> +
> +	* c-common.c (c_common_attribute): Add support for option and
> +	optimize attributes.
> +	(handle_option_attribute): Add support for the option attribute to
> +	allow the user to specify different target options for compiling a
> +	specific function.
> +	(handle_optimize_attribute): Add support for the optimize
> +	attribute to allow the user to specify different optimization
> +	options for compiling a specific function.
> +	(handle_hot_attribute): Turn on -O3 optimization for this one
> +	function if it isn't the default optimization level.
> +	(handle_cold_attribute): Turn on -Os optimization for this one
> +	function if it insn't the default optimization.
> +	(const_char_p): New const char * typedef.
> +	(optimize_args): New static vector to remember the optimization
> +	arguments.
> +	(parse_optimize_options): New function to set up the optimization
> +	arguments from either the optimize attribute or #pragma GCC
> +	optimize.
> +
> +	* c-common.h (c_cpp_builtins_optimize_pragma): Add declaration.
> +	(builtin_define_std): Ditto.
> +
> +	* config.gcc (i[3467]86-*-*): Add i386-c.o to C/C++ languages.
> +	Add t-i386 Makefile fragment to add i386-c.o and i386.o
> +	dependencies.
> +	(x86_64-*-*): Ditto.
> +
> +	* Makefile.in (TREE_H): Add options.h.
> +	(options.o): Add $(TARGET_H) $(FLAGS_H) dependencies.
> +
> +	* doc/extend.texi (option attribute): Document new attribute.
> +	(optimize attribute): Ditto.
> +	(hot attribute): Document hot attribute sets -O3.
> +	(cold attribute): Document cold attribute sets -Os.
> +	(#pragma GCC option): Document new pragma.
> +	(#pragma GCC optimize): Ditto.
> +
> +	* doc/options.texi (TargetSave): Document TargetSave syntax.
> +	(UInteger): Document UInteger must be used for certain flags.
> +	(Save): Document Save option to create target specific options
> +	that can be saved/restored on a function specific context.
> +
> +	* doc/c-tree.texi (DECL_FUNCTION_SPECIFIC_TARGET): Document new
> +	macro.
> +	(DECL_FUNCTION_SPECIFIC_OPTIMIZATION): Ditto.
> +
> +	* doc/tm.texi (TARGET_VALID_OPTION_ATTRIBUTE_P): Document new
> +	hook.
> +	(TARGET_OPTION_SAVE): Ditto.
> +	(TARGET_OPTION_RESTORE): Ditto.
> +	(TARGET_OPTION_PRINT): Ditto.
> +	(TARGET_OPTION_PRAGMA_PARSE): Ditto.
> +	(TARGET_CAN_INLINE_P): Ditto.
> +
> +	* doc/invoke.texi (-mfpmath=sse+387): Document as an alias for
> +	-mfpmath=sse,387.
> +	(-mfpmath=both): Ditto.
> +
> +2008-07-23  Michael Meissner  <gnu@the-meissners.org>
> +	    Karthik Kumar  <karthikkumar@gmail.com>
> +
> +	* config/i386/i386.h (TARGET_ABM): Move switch into
> +	ix86_isa_flags.
> +	(TARGET_POPCNT): Ditto.
> +	(TARGET_SAHF): Ditto.
> +	(TARGET_AES): Ditto.
> +	(TARGET_PCLMUL): Ditto.
> +	(TARGET_CMPXCHG16B): Ditto.
> +	(TARGET_RECIP): Move switch into target_flags.
> +	(TARGET_FUSED_MADD): Ditto.
> +	(ix86_arch_features): Make an unsigned char type.
> +	(ix86_tune_features): Ditto.
> +	(OVERRIDE_OPTIONS): Add bool argument to override_options call.
> +	(TARGET_CPU_CPP_BUILTINS): Move into ix86_target_macros.
> +	(REGISTER_TARGET_PRAGMAS): Define, call ix86_register_pragmas.
> +
> +	* config/i386/i386.opt (arch): New TargetSave field to define
> +	fields that need to be saved for function specific option
> +	support.
> +	(tune): Ditto.
> +	(fpmath): Ditto.
> +	(branch_cost): Ditto.
> +	(ix86_isa_flags_explicit): Ditto.
> +	(tune_defaulted): Ditto.
> +	(arch_specified): Ditto.
> +	(-m128-long-double): Add Save flag to save option for target
> +	specific option support.
> +	(-m80387): Ditto.
> +	(-maccumulate-outgoing-args): Ditto.
> +	(-malign-double): Ditto.
> +	(-malign-stringops): Ditto.
> +	(-mfancy-math-387): Ditto.
> +	(-mhard-float): Ditto.
> +	(-mieee-fp): Ditto.
> +	(-minline-all-stringops): Ditto.
> +	(-minline-stringops-dynamically): Ditto.
> +	(-mms-bitfields): Ditto.
> +	(-mno-align-stringops): Ditto.
> +	(-mno-fancy-math-387): Ditto.
> +	(-mno-push-args): Ditto.
> +	(-mno-red-zone): Ditto.
> +	(-mpush-args): Ditto.
> +	(-mred-zone): Ditto.
> +	(-mrtd): Ditto.
> +	(-msseregparm): Ditto.
> +	(-mstack-arg-probe): Ditto.
> +	(-m32): Ditto.
> +	(-m64): Ditto.
> +	(-mmmx): Ditto.
> +	(-m3dnow): Ditto.
> +	(-m3dnowa): Ditto.
> +	(-msse): Ditto.
> +	(-msse2): Ditto.
> +	(-msse3): Ditto.
> +	(-msse4.1): Ditto.
> +	(-msse4.2): Ditto.
> +	(-msse4): Ditto.
> +	(-mno-sse4): Ditto.
> +	(-msse4a): Ditto.
> +	(-msse5): Ditto.
> +	(-mrecip): Move flag into target_flags.
> +	(-mcld): Ditto.
> +	(-mno-fused-madd): Ditto.
> +	(-mfused-madd): Ditto.
> +	(-mabm): Move flag into ix86_isa_flags.
> +	(-mcx16): Ditto.
> +	(-mpopcnt): Ditto.
> +	(-msahf): Ditto.
> +	(-maes): Ditto.
> +	(-mpclmul): Ditto.
> +
> +	* config/i386/i386-c.c: New file for #pragma support.
> +	(ix86_target_macros_internal): New function to #define or #undef
> +	target macros based when the user uses the #pragma GCC option to
> +	change target options.
> +	(ix86_pragma_option_parse): New function to add #pragma GCC option
> +	support.
> +	(ix86_target_macros): Move defining the target macros here from
> +	TARGET_CPU_CPP_BUILTINS in i386.h.
> +	(ix86_register_pragmas): Register the #pragma GCC option hook.  If
> +	defined, initialize any subtarget #pragmas.
> +
> +	* config/i386/darwin.h (REGISTER_SUBTARGET_PRAGMAS): Rename from
> +	REGISTER_TARGET_PRAGMAS.
> +
> +	* config/i386/t-i386: New file for x86 dependencies.
> +	(i386.o): Make dependencies mirror the include files used.
> +	(i386-c.o): New file, add dependencies.
> +
> +	* config/i386/i386-protos.h (override_options): Add bool
> +	argument.
> +	(ix86_valid_option_attribute_tree): Add declaration.
> +	(ix86_target_macros): Ditto.
> +	(ix86_register_macros): Ditto.
> +
> +	* config/i386/i386.c (ix86_tune_features): Move initialization of
> +	the target masks to initial_ix86_tune_features to allow functions
> +	to have different target options.  Make type unsigned char,
> +	instead of unsigned int.
> +	(initial_ix86_tune_features): New static vector to hold processor
> +	masks for the tune variables.
> +	(ix86_arch_features): Move initialization of the target masks to
> +	initial_ix86_arch_features to allow functions to have different
> +	target options.  Make type unsigned char, instead of unsigned
> +	int.
> +	(initial_ix86_arch_features): New static vector to hold processor
> +	masks for the arch variables.
> +	(enum ix86_function_specific_strings): New enum to describe the
> +	string options used for attribute((option(...))).
> +	(ix86_target_string): New function to return a string that
> +	describes the target options.
> +	(ix86_debug_options): New function to print the current options in
> +	the debugger.
> +	(ix86_function_specific_save): New function hook to save the
> +	function specific global variables in the cl_target_option
> +	structure.
> +	(ix86_function_specific_restore): New function hook to restore the
> +	function specific variables from the cl_target_option structure to
> +	the global variables.
> +	(ix86_function_specific_print): New function hook to print the
> +	target specific options in the cl_target_option structure.
> +	(ix86_valid_option_attribute_p): New function hook to validate
> +	attribute((option(...))) arguments.
> +	(ix86_valid_option_attribute_tree): New function that is common
> +	code between attribute((option(...))) and #pragma GCC option
> +	support that parses the options and returns a tree holding the
> +	options.
> +	(ix86_valid_option_attribute_inner_p): New helper function for
> +	ix86_valid_option_attribute_tree.
> +	(ix86_can_inline_p): New function hook to decide if one function
> +	can inline another on a target specific basis.
> +	(ix86_set_current_function); New function hook to switch target
> +	options if the user used attribute((option(...))) or #pragma GCC
> +	option.
> +	(ix86_tune_defaulted): Move to static file scope from
> +	override_options.
> +	(ix86_arch_specified): Ditto.
> +	(OPTION_MASK_ISA_AES_SET): New macro for moving switches into
> +	ix86_isa_flags.
> +	(OPTION_MASK_ISA_PCLMUL_SET): Ditto.
> +	(OPTION_MASK_ISA_ABM_SET): Ditto.
> +	(OPTION_MASK_ISA_POPCNT_SET): Ditto.
> +	(OPTION_MASK_ISA_CX16_SET): Ditto.
> +	(OPTION_MASK_ISA_SAHF_SET): Ditto.
> +	(OPTION_MASK_ISA_AES_UNSET): Ditto.
> +	(OPTION_MASK_ISA_PCLMUL_UNSET): Ditto.
> +	(OPTION_MASK_ISA_ABM_UNSET): Ditto.
> +	(OPTION_MASK_ISA_POPCNT_UNSET): Ditto.
> +	(OPTION_MASK_ISA_CX16_UNSET): Ditto.
> +	(OPTION_MASK_ISA_SAHF_UNSET): Ditto.
> +	(struct ptt): Move to static file scope from override_options.
> +	(processor_target_table): Ditto.
> +	(cpu_names): Ditto.
> +	(ix86_handle_option): Add support for options that are now isa
> +	options.
> +	(override_options): Add support for declaring functions that
> +	support different target options than were specified on the
> +	command line.  Move struct ptt, processor_target_table, cpu_names,
> +	ix86_tune_defaulted, ix86_arch_specified to static file scope.
> +	Add bool argument.  Fix up error messages so the appropriate error
> +	is given for either command line or attribute.
> +	(ix86_previous_fndecl): New static to remember previous function
> +	declaration to see if we need to change target options.
> +	(ix86_builtins_isa): New array to record the ISA of each builtin
> +	function.
> +	(def_builtin): Always create the builtin function, even if the
> +	current ISA doesn't support it.
> +	(ix86_init_mmx_sse_builtins): Remove TARGET_AES and TARGET_PCLMUL
> +	tests for those builtins.
> +	(ix86_init_builtins): Remove TARGET_MMX test for calling
> +	ix86_init_mmx_sse_builtins.
> +	(ix86_expand_builtin): If the current ISA doesn't support a given
> +	builtin, signal an error.
> +	(TARGET_VALID_OPTION_ATTRIBUTE_P): Set target hook.
> +	(TARGET_SET_CURRENT_FUNCTION): Ditto.
> +	(TARGET_OPTION_SAVE): Ditto.
> +	(TARGET_OPTION_RESTORE): Ditto.
> +	(TARGET_OPTION_PRINT): Ditto.
> +	(TARGET_CAN_INLINE_P): Ditto.
>  
>  2008-07-22  Rafael Avila de Espindola  <espindola@google.com>
>  
> --- /usr/src/SpecTests/sandbox-britten-memory/x86_64/mem-result/ChangeLog.cp	2008-07-25 23:59:55.000000000 +0000
> +++ /usr/src/SpecTests/sandbox-britten-memory/gcc/gcc/cp/ChangeLog	2008-07-26 18:54:43.000000000 +0000
> @@ -1,3 +1,78 @@
> +2008-07-25  Jan Hubicka  <jh@suse.cz>
> +
> +	* typeck.c (inline_conversion): Remove.
> +	(cp_build_function_call): Do not use inline_conversion.
> +	* decl.c (duplicate_decls): Do not insist on inline being declared
> +	early.
> +	(start_cleanup_fn): Do not assume that INLINE flags prevent function
> +	from being output.  We now remove static functions always.
> +	(finish_function): Do return warning on all static functions.
> +	* call.c (build_over_call): Do not use inline_conversion.
> +	* cp-tree.h (possibly_inlined_p): Declare.
> +	(inline_conversion): Remove.
> +	* pt.c (instantiate_decl): Use possibly_inlined_p predicate.
> +	* decl2.c (cp_write_global_declarations): Likewise.
> +	(mark_used): Likewise.
> +	(possibly_inlined_p): New functions.
> +
> +2008-07-25  Jason Merrill  <jason@redhat.com>
> +
> +	* class.c (type_has_user_provided_default_constructor): Handle
> +	templates.
> +
> +2008-07-23  Jan Hubicka  <jh@suse.cz>
> +
> +	* decl.c (duplicate_decls): Update comment and unit-at-a-time.
> +	(grogfndecl): Drop flag_inline_trees code.
> +	* pt.c (instantiate_decl): Drop flag_iline_trees code.
> +	* lex.c (cxx_init): Do not set unit-at-a-time.
> +
> +2008-07-23  Jason Merrill  <jason@redhat.com>
> +
> +	* mangle.c (write_unqualified_name): Avoid infinite recursion when
> +	trying to mangle a decl with no name.
> +
> +	Implement defaulted/deleted functions as per N2346
> +	* cp-tree.h (struct lang_decl_flags): Add defaulted_p bitfield.
> +	(DECL_DELETED_FN): New macro.
> +	(DECL_DEFAULTED_FN): New macro.
> +	* class.c (user_provided_p): New fn.
> +	(defaultable_fn_p): New fn.
> +	(type_has_user_provided_constructor): New fn.
> +	(type_has_user_provided_default_constructor): New fn.
> +	(check_methods): A defaulted fn is still trivial.
> +	(check_bases_and_members): Likewise.
> +	* decl.c (grok_special_member_properties): Likewise.
> +	(duplicate_decls): Complain about redeclaring a function as deleted.
> +	(start_decl): initialized==2 means deleted.
> +	(cp_finish_decl): Handle deleted/defaulted semantics.
> +	* decl2.c (grokfield): Likewise.
> +	(mark_used): Check DECL_DEFAULTED_FN instead of DECL_ARTIFICIAL.
> +	Complain about using a deleted fn.
> +	* init.c (build_value_init_1): Use type_has_user_provided_constructor.
> +	(perform_member_init): Check for a user-provided default constructor
> +	even if TYPE_NEEDS_CONSTRUCTING.
> +	(build_new_1): Likewise.
> +	* call.c (build_over_call): Don't call mark_used twice.
> +	* method.c (implicitly_declare_fn): Set DECL_DEFAULTED_FN.
> +	* search.c (check_final_overrider): Check for deleted mismatch.
> +	* parser.c (cp_parser_init_declarator): Tell start_decl about =delete.
> +	(cp_parser_pure_specifier): Handle =default and =delete.
> +
> +	* error.c (maybe_warn_cpp0x): Suggest -std=gnu++0x as well.
> +
> +2008-07-23  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
> +
> +	PR 35058
> +	* typeck.c: All calls to pedwarn changed.
> +	* decl.c: All calls to pedwarn changed.
> +	* call.c: All calls to pedwarn changed.
> +	* error.c: All calls to pedwarn changed.
> +	* typeck2.c: All calls to pedwarn changed.
> +	* pt.c: All calls to pedwarn changed.
> +	* name-lookup.c: All calls to pedwarn changed.
> +	* parser.c: All calls to pedwarn changed.
> +
>  2008-07-21  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
>  
>  	* call.c: Fix comment typos.
> 
> 
> The results can be reproduced by building a compiler with
> 
> --enable-gather-detailed-mem-stats targetting x86-64
> 
> and compiling preprocessed combine.c or testcase from PR8632 with:
> 
> -fmem-report --param=ggc-min-heapsize=1024 --param=ggc-min-expand=1 -Ox -Q
> 
> The memory consumption summary appears in the dump after detailed listing
> of the places they are allocated in.  Peak memory consumption is actually
> computed by looking for maximal value in {GC XXXX -> YYYY} report.
> 
> Your testing script.



More information about the Gcc-regression mailing list