This is the mail archive of the gcc-regression@gcc.gnu.org mailing list for the GCC project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

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


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:
  Amount of produced GGC garbage increased from 235k to 237k, overall 1.18%
    Overall memory needed: 8153k
    Peak memory use before GGC: 1102k
    Peak memory use after GGC: 1002k -> 1000k
    Maximum of released memory in single GGC run: 129k
    Garbage: 235k -> 237k
    Leak: 960k -> 957k
    Overhead: 80k
    GGC runs: 2
Testing has produced no results
Testing has produced no results

comparing empty function compilation at -O0 -g level:
  Amount of produced GGC garbage increased from 237k to 240k, overall 1.17%
    Overall memory needed: 8169k
    Peak memory use before GGC: 1129k
    Peak memory use after GGC: 1034k
    Maximum of released memory in single GGC run: 126k -> 128k
    Garbage: 237k -> 240k
    Leak: 993k -> 990k
    Overhead: 85k
    GGC runs: 4
Testing has produced no results
Testing has produced no results

comparing empty function compilation at -O1 level:
  Amount of produced GGC garbage increased from 237k to 240k, overall 1.17%
    Overall memory needed: 8205k
    Peak memory use before GGC: 1102k
    Peak memory use after GGC: 1002k -> 1000k
    Maximum of released memory in single GGC run: 131k
    Garbage: 237k -> 240k
    Leak: 960k -> 958k
    Overhead: 81k
    GGC runs: 2
  Amount of produced pre-ipa-GGC garbage increased from 224k to 227k, overall 1.23%
    Pre-IPA-Garbage: 224k -> 227k
    Pre-IPA-Leak: 963k -> 960k
    Pre-IPA-Overhead: 79k
  Amount of produced post-ipa-GGC garbage increased from 224k to 227k, overall 1.23%
    Post-IPA-Garbage: 224k -> 227k
    Post-IPA-Leak: 963k -> 960k
    Post-IPA-Overhead: 79k

comparing empty function compilation at -O2 level:
  Amount of produced GGC garbage increased from 240k to 243k, overall 1.15%
    Overall memory needed: 8225k
    Peak memory use before GGC: 1102k
    Peak memory use after GGC: 1002k -> 1000k
    Maximum of released memory in single GGC run: 135k
    Garbage: 240k -> 243k
    Leak: 961k -> 959k
    Overhead: 82k
    GGC runs: 2
  Amount of produced pre-ipa-GGC garbage increased from 224k to 227k, overall 1.23%
    Pre-IPA-Garbage: 224k -> 227k
    Pre-IPA-Leak: 963k -> 960k
    Pre-IPA-Overhead: 79k
  Amount of produced post-ipa-GGC garbage increased from 224k to 227k, overall 1.23%
    Post-IPA-Garbage: 224k -> 227k
    Post-IPA-Leak: 963k -> 960k
    Post-IPA-Overhead: 79k

comparing empty function compilation at -O3 level:
  Amount of produced GGC garbage increased from 240k to 243k, overall 1.15%
    Overall memory needed: 8225k
    Peak memory use before GGC: 1102k
    Peak memory use after GGC: 1002k -> 1000k
    Maximum of released memory in single GGC run: 135k
    Garbage: 240k -> 243k
    Leak: 961k -> 959k
    Overhead: 82k
    GGC runs: 2
  Amount of produced pre-ipa-GGC garbage increased from 224k to 227k, overall 1.23%
    Pre-IPA-Garbage: 224k -> 227k
    Pre-IPA-Leak: 963k -> 960k
    Pre-IPA-Overhead: 79k
  Amount of produced post-ipa-GGC garbage increased from 224k to 227k, overall 1.23%
    Post-IPA-Garbage: 224k -> 227k
    Post-IPA-Leak: 963k -> 960k
    Post-IPA-Overhead: 79k

comparing combine.c compilation at -O0 level:
    Overall memory needed: 22617k -> 22621k
    Peak memory use before GGC: 7784k
    Peak memory use after GGC: 7160k
    Maximum of released memory in single GGC run: 1545k
    Garbage: 37775k -> 37789k
    Leak: 5493k -> 5490k
    Overhead: 4617k -> 4617k
    GGC runs: 372
Testing has produced no results
Testing has produced no results

comparing combine.c compilation at -O0 -g level:
    Overall memory needed: 24709k
    Peak memory use before GGC: 9719k
    Peak memory use after GGC: 9057k
    Maximum of released memory in single GGC run: 1830k -> 1832k
    Garbage: 38140k -> 38138k
    Leak: 8688k -> 8685k
    Overhead: 5413k -> 5413k
    GGC runs: 340
Testing has produced no results
Testing has produced no results

comparing combine.c compilation at -O1 level:
    Overall memory needed: 32857k -> 32849k
    Peak memory use before GGC: 16260k
    Peak memory use after GGC: 16077k
    Maximum of released memory in single GGC run: 1375k
    Garbage: 51568k -> 51571k
    Leak: 5658k -> 5656k
    Overhead: 5805k -> 5805k
    GGC runs: 439
    Pre-IPA-Garbage: 13911k -> 13914k
    Pre-IPA-Leak: 17101k -> 17098k
    Pre-IPA-Overhead: 2128k
    Post-IPA-Garbage: 13911k -> 13914k
    Post-IPA-Leak: 17101k -> 17098k
    Post-IPA-Overhead: 2128k

comparing combine.c compilation at -O2 level:
    Overall memory needed: 34661k
    Peak memory use before GGC: 16358k
    Peak memory use after GGC: 16195k
    Maximum of released memory in single GGC run: 1305k
    Garbage: 71447k -> 71457k
    Leak: 5997k -> 5986k
    Overhead: 8155k
    GGC runs: 512
    Pre-IPA-Garbage: 14064k -> 14067k
    Pre-IPA-Leak: 17164k -> 17161k
    Pre-IPA-Overhead: 2143k
    Post-IPA-Garbage: 14064k -> 14067k
    Post-IPA-Leak: 17164k -> 17161k
    Post-IPA-Overhead: 2143k

comparing combine.c compilation at -O3 level:
    Overall memory needed: 37377k
    Peak memory use before GGC: 16494k
    Peak memory use after GGC: 16200k
    Maximum of released memory in single GGC run: 2006k
    Garbage: 88475k -> 88480k
    Leak: 6052k -> 6046k
    Overhead: 10093k -> 10094k
    GGC runs: 547
    Pre-IPA-Garbage: 14066k -> 14069k
    Pre-IPA-Leak: 17176k -> 17173k
    Pre-IPA-Overhead: 2144k
    Post-IPA-Garbage: 14066k -> 14069k
    Post-IPA-Leak: 17176k -> 17173k
    Post-IPA-Overhead: 2144k

comparing insn-attrtab.c compilation at -O0 level:
    Overall memory needed: 137437k -> 137433k
    Peak memory use before GGC: 56962k
    Peak memory use after GGC: 31388k
    Maximum of released memory in single GGC run: 32967k -> 33223k
    Garbage: 128459k -> 128459k
    Leak: 8362k -> 8359k
    Overhead: 14291k -> 14291k
    GGC runs: 292
Testing has produced no results
Testing has produced no results

comparing insn-attrtab.c compilation at -O0 -g level:
    Overall memory needed: 138717k -> 138725k
    Peak memory use before GGC: 58164k
    Peak memory use after GGC: 32589k
    Maximum of released memory in single GGC run: 32968k -> 33224k
    Garbage: 128705k -> 128708k
    Leak: 10200k -> 10197k
    Overhead: 14731k
    GGC runs: 289
Testing has produced no results
Testing has produced no results

comparing insn-attrtab.c compilation at -O1 level:
    Overall memory needed: 142897k -> 142869k
    Peak memory use before GGC: 56191k
    Peak memory use after GGC: 49970k
    Maximum of released memory in single GGC run: 23960k
    Garbage: 205132k -> 205137k
    Leak: 9266k -> 9263k
    Overhead: 24740k -> 24740k
    GGC runs: 315
    Pre-IPA-Garbage: 50364k -> 50366k
    Pre-IPA-Leak: 49666k -> 49663k
    Pre-IPA-Overhead: 7553k
    Post-IPA-Garbage: 50364k -> 50366k
    Post-IPA-Leak: 49666k -> 49663k
    Post-IPA-Overhead: 7553k

comparing insn-attrtab.c compilation at -O2 level:
    Overall memory needed: 184373k -> 184377k
    Peak memory use before GGC: 56811k -> 56813k
    Peak memory use after GGC: 51537k -> 51539k
    Maximum of released memory in single GGC run: 22860k
    Garbage: 246864k -> 246859k
    Leak: 10345k -> 10342k
    Overhead: 30657k -> 30657k
    GGC runs: 347
    Pre-IPA-Garbage: 50436k -> 50438k
    Pre-IPA-Leak: 49669k -> 49666k
    Pre-IPA-Overhead: 7560k
    Post-IPA-Garbage: 50436k -> 50438k
    Post-IPA-Leak: 49669k -> 49666k
    Post-IPA-Overhead: 7560k

comparing insn-attrtab.c compilation at -O3 level:
    Overall memory needed: 189781k
    Peak memory use before GGC: 66353k
    Peak memory use after GGC: 62275k
    Maximum of released memory in single GGC run: 23357k
    Garbage: 270570k -> 270573k
    Leak: 10383k -> 10380k
    Overhead: 32446k -> 32446k
    GGC runs: 347
    Pre-IPA-Garbage: 50436k -> 50438k
    Pre-IPA-Leak: 49669k -> 49666k
    Pre-IPA-Overhead: 7560k
    Post-IPA-Garbage: 50436k -> 50438k
    Post-IPA-Leak: 49669k -> 49666k
    Post-IPA-Overhead: 7560k

comparing Gerald's testcase PR8361 compilation at -O0 level:
    Overall memory needed: 145933k -> 145937k
    Peak memory use before GGC: 82004k -> 82002k
    Peak memory use after GGC: 81191k -> 81189k
    Maximum of released memory in single GGC run: 15827k
    Garbage: 198501k -> 198510k
    Leak: 47519k -> 47514k
    Overhead: 24202k -> 24202k
    GGC runs: 416
    Pre-IPA-Garbage: 108675k -> 108678k
    Pre-IPA-Leak: 69761k -> 69758k
    Pre-IPA-Overhead: 12147k
    Post-IPA-Garbage: 108675k -> 108678k
    Post-IPA-Leak: 69761k -> 69758k
    Post-IPA-Overhead: 12147k

comparing Gerald's testcase PR8361 compilation at -O0 -g level:
    Overall memory needed: 167225k -> 167489k
    Peak memory use before GGC: 94378k -> 94376k
    Peak memory use after GGC: 93436k -> 93434k
    Maximum of released memory in single GGC run: 16319k
    Garbage: 204145k -> 204153k
    Leak: 71908k -> 71902k
    Overhead: 30560k -> 30560k
    GGC runs: 387
    Pre-IPA-Garbage: 109318k -> 109321k
    Pre-IPA-Leak: 84494k -> 84491k
    Pre-IPA-Overhead: 15451k
    Post-IPA-Garbage: 109318k -> 109321k
    Post-IPA-Leak: 84494k -> 84491k
    Post-IPA-Overhead: 15451k

comparing Gerald's testcase PR8361 compilation at -O1 level:
    Overall memory needed: 121429k -> 121449k
    Peak memory use before GGC: 83342k -> 83341k
    Peak memory use after GGC: 82509k -> 82508k
    Maximum of released memory in single GGC run: 15131k
    Garbage: 286850k -> 286855k
    Leak: 46806k -> 46801k
    Overhead: 29514k -> 29514k
    GGC runs: 514
    Pre-IPA-Garbage: 153388k -> 153391k
    Pre-IPA-Leak: 87193k -> 87191k
    Pre-IPA-Overhead: 17779k
    Post-IPA-Garbage: 153388k -> 153391k
    Post-IPA-Leak: 87193k -> 87191k
    Post-IPA-Overhead: 17779k

comparing Gerald's testcase PR8361 compilation at -O2 level:
    Overall memory needed: 123853k
    Peak memory use before GGC: 83526k -> 83524k
    Peak memory use after GGC: 82686k -> 82684k
    Maximum of released memory in single GGC run: 15121k
    Garbage: 353713k -> 353692k
    Leak: 47917k -> 47912k
    Overhead: 36739k -> 36739k
    GGC runs: 588 -> 587
    Pre-IPA-Garbage: 155930k -> 155933k
    Pre-IPA-Leak: 87339k -> 87336k
    Pre-IPA-Overhead: 18058k
    Post-IPA-Garbage: 155930k -> 155933k
    Post-IPA-Leak: 87339k -> 87336k
    Post-IPA-Overhead: 18058k

comparing Gerald's testcase PR8361 compilation at -O3 level:
    Overall memory needed: 126773k -> 126837k
    Peak memory use before GGC: 84823k -> 84821k
    Peak memory use after GGC: 83947k -> 83945k
    Maximum of released memory in single GGC run: 15462k
    Garbage: 377019k -> 377023k
    Leak: 48475k -> 48486k
    Overhead: 38876k -> 38876k
    GGC runs: 611
    Pre-IPA-Garbage: 158629k -> 158631k
    Pre-IPA-Leak: 87621k -> 87618k
    Pre-IPA-Overhead: 18310k
    Post-IPA-Garbage: 158629k -> 158631k
    Post-IPA-Leak: 87621k -> 87618k
    Post-IPA-Overhead: 18310k

comparing PR rtl-optimization/28071 testcase compilation at -O0 level:
  Amount of produced GGC garbage increased from 175622k to 178454k, overall 1.61%
  Amount of memory still referenced at the end of compilation decreased from 8935k to 6103k, overall -46.40%
    Overall memory needed: 380355k -> 380347k
    Peak memory use before GGC: 100958k
    Peak memory use after GGC: 56611k
    Maximum of released memory in single GGC run: 50583k
    Garbage: 175622k -> 178454k
    Leak: 8935k -> 6103k
    Overhead: 30540k
    GGC runs: 107
Testing has produced no results
Testing has produced no results

comparing PR rtl-optimization/28071 testcase compilation at -O0 -g level:
  Amount of produced GGC garbage increased from 175737k to 178569k, overall 1.61%
  Amount of memory still referenced at the end of compilation decreased from 10964k to 8132k, overall -34.82%
    Overall memory needed: 381187k
    Peak memory use before GGC: 101651k
    Peak memory use after GGC: 57304k
    Maximum of released memory in single GGC run: 50583k
    Garbage: 175737k -> 178569k
    Leak: 10964k -> 8132k
    Overhead: 31123k
    GGC runs: 111
Testing has produced no results
Testing has produced no results

comparing PR rtl-optimization/28071 testcase compilation at -O1 level:
  Amount of produced GGC garbage increased from 231507k to 232923k, overall 0.61%
  Amount of memory still referenced at the end of compilation decreased from 16425k to 15009k, overall -9.43%
    Overall memory needed: 427881k -> 428321k
    Peak memory use before GGC: 78564k
    Peak memory use after GGC: 70441k -> 70439k
    Maximum of released memory in single GGC run: 37596k
    Garbage: 231507k -> 232923k
    Leak: 16425k -> 15009k
    Overhead: 33114k
    GGC runs: 106
    Pre-IPA-Garbage: 52922k -> 52924k
    Pre-IPA-Leak: 49240k -> 49237k
    Pre-IPA-Overhead: 7122k
    Post-IPA-Garbage: 52922k -> 52924k
    Post-IPA-Leak: 49240k -> 49237k
    Post-IPA-Overhead: 7122k

comparing PR rtl-optimization/28071 testcase compilation at -O2 level:
  Amount of produced GGC garbage increased from 246016k to 247432k, overall 0.58%
  Amount of memory still referenced at the end of compilation decreased from 16599k to 15183k, overall -9.33%
    Overall memory needed: 354293k -> 353657k
    Peak memory use before GGC: 75427k -> 75425k
    Peak memory use after GGC: 70441k -> 70439k
    Maximum of released memory in single GGC run: 31528k -> 31602k
    Garbage: 246016k -> 247432k
    Leak: 16599k -> 15183k
    Overhead: 36249k
    GGC runs: 117
    Pre-IPA-Garbage: 91833k -> 91836k
    Pre-IPA-Leak: 77297k -> 77295k
    Pre-IPA-Overhead: 11795k
    Post-IPA-Garbage: 91833k -> 91836k
    Post-IPA-Leak: 77297k -> 77295k
    Post-IPA-Overhead: 11795k

comparing PR rtl-optimization/28071 testcase compilation at -O3 -fno-tree-pre -fno-tree-fre level:
  Amount of produced GGC garbage increased from 368801k to 370216k, overall 0.38%
  Amount of memory still referenced at the end of compilation decreased from 25798k to 24382k, overall -5.81%
    Overall memory needed: 1197433k -> 1198569k
    Peak memory use before GGC: 136589k -> 136587k
    Peak memory use after GGC: 127946k -> 127944k
    Maximum of released memory in single GGC run: 59982k -> 59980k
    Garbage: 368801k -> 370216k
    Leak: 25798k -> 24382k
    Overhead: 49862k
    GGC runs: 104
    Pre-IPA-Garbage: 91833k -> 91836k
    Pre-IPA-Leak: 77297k -> 77295k
    Pre-IPA-Overhead: 11795k
    Post-IPA-Garbage: 91833k -> 91836k
    Post-IPA-Leak: 77297k -> 77295k
    Post-IPA-Overhead: 11795k

Head of the ChangeLog is:

--- /usr/src/SpecTests/sandbox-britten-memory/x86_64/mem-result/ChangeLog	2008-04-08 15:13:49.000000000 +0000
+++ /usr/src/SpecTests/sandbox-britten-memory/gcc/gcc/ChangeLog	2008-04-08 19:04:40.000000000 +0000
@@ -1,3 +1,14 @@
+2008-04-08  Rafael Espindola  <espindola@google.com>
+
+	* fold-canst.c (tree_call_nonnegative_warnv_p): New.
+	(tree_invalid_nonnegative_warnv_p): Use tree_call_nonnegative_warnv_p.
+	* tree.h (tree_call_nonnegative_warnv_p): New.
+
+2008-04-08  Jan Hubicka  <jh@suse.cz>
+
+	* function.c (free_after_compilation): Clear out regno_reg_rtx
+	pointer.
+
 2008-04-08  Peter Bergner  <bergner@vnet.ibm.com>
 
 	Revert


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.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]