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!


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 238k to 238k, overall 0.14%
    Overall memory needed: 8181k
    Peak memory use before GGC: 1104k -> 1105k
    Peak memory use after GGC: 1001k
    Maximum of released memory in single GGC run: 129k
    Garbage: 238k -> 238k
    Leak: 958k -> 959k
    Overhead: 80k -> 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 240k to 241k, overall 0.14%
    Overall memory needed: 8197k
    Peak memory use before GGC: 1132k
    Peak memory use after GGC: 1035k -> 1036k
    Maximum of released memory in single GGC run: 128k
    Garbage: 240k -> 241k
    Leak: 991k -> 992k
    Overhead: 85k -> 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 240k to 240k, overall 0.14%
    Overall memory needed: 8253k
    Peak memory use before GGC: 1104k -> 1105k
    Peak memory use after GGC: 1001k
    Maximum of released memory in single GGC run: 130k -> 131k
    Garbage: 240k -> 240k
    Leak: 959k -> 959k
    Overhead: 81k -> 81k
    GGC runs: 2
  Amount of produced pre-ipa-GGC garbage increased from 228k to 228k, overall 0.15%
    Pre-IPA-Garbage: 228k -> 228k
    Pre-IPA-Leak: 961k -> 962k
    Pre-IPA-Overhead: 79k -> 79k
  Amount of produced post-ipa-GGC garbage increased from 228k to 228k, overall 0.15%
    Post-IPA-Garbage: 228k -> 228k
    Post-IPA-Leak: 961k -> 962k
    Post-IPA-Overhead: 79k -> 79k

comparing empty function compilation at -O2 level:
  Amount of produced GGC garbage increased from 244k to 244k, overall 0.14%
    Overall memory needed: 8273k
    Peak memory use before GGC: 1105k
    Peak memory use after GGC: 1001k -> 1002k
    Maximum of released memory in single GGC run: 135k -> 134k
    Garbage: 244k -> 244k
    Leak: 960k -> 960k
    Overhead: 82k -> 82k
    GGC runs: 2
  Amount of produced pre-ipa-GGC garbage increased from 228k to 228k, overall 0.15%
    Pre-IPA-Garbage: 228k -> 228k
    Pre-IPA-Leak: 962k -> 962k
    Pre-IPA-Overhead: 79k -> 79k
  Amount of produced post-ipa-GGC garbage increased from 228k to 228k, overall 0.15%
    Post-IPA-Garbage: 228k -> 228k
    Post-IPA-Leak: 962k -> 962k
    Post-IPA-Overhead: 79k -> 79k

comparing empty function compilation at -O3 level:
  Amount of produced GGC garbage increased from 244k to 244k, overall 0.14%
    Overall memory needed: 8273k
    Peak memory use before GGC: 1105k
    Peak memory use after GGC: 1001k -> 1002k
    Maximum of released memory in single GGC run: 135k -> 134k
    Garbage: 244k -> 244k
    Leak: 960k -> 960k
    Overhead: 82k -> 82k
    GGC runs: 2
  Amount of produced pre-ipa-GGC garbage increased from 228k to 228k, overall 0.15%
    Pre-IPA-Garbage: 228k -> 228k
    Pre-IPA-Leak: 962k -> 962k
    Pre-IPA-Overhead: 79k -> 79k
  Amount of produced post-ipa-GGC garbage increased from 228k to 228k, overall 0.15%
    Post-IPA-Garbage: 228k -> 228k
    Post-IPA-Leak: 962k -> 962k
    Post-IPA-Overhead: 79k -> 79k

comparing combine.c compilation at -O0 level:
    Overall memory needed: 22633k -> 22629k
    Peak memory use before GGC: 7774k
    Peak memory use after GGC: 7150k
    Maximum of released memory in single GGC run: 1545k
    Garbage: 37789k -> 37775k
    Leak: 5479k -> 5479k
    Overhead: 4616k -> 4616k
    GGC runs: 371
Testing has produced no results
Testing has produced no results

comparing combine.c compilation at -O0 -g level:
  Peak amount of GGC memory allocated before garbage collecting increased from 9689k to 9708k, overall 0.20%
    Overall memory needed: 24713k -> 24717k
    Peak memory use before GGC: 9689k -> 9708k
    Peak memory use after GGC: 9046k -> 9047k
    Maximum of released memory in single GGC run: 1831k -> 1832k
    Garbage: 38140k -> 38144k
    Leak: 8673k -> 8674k
    Overhead: 5412k -> 5412k
    GGC runs: 341
Testing has produced no results
Testing has produced no results

comparing combine.c compilation at -O1 level:
    Overall memory needed: 32769k
    Peak memory use before GGC: 16182k
    Peak memory use after GGC: 16018k
    Maximum of released memory in single GGC run: 1376k -> 1375k
    Garbage: 51456k -> 51456k
    Leak: 5647k -> 5648k
    Overhead: 5730k -> 5730k
    GGC runs: 439
    Pre-IPA-Garbage: 13899k -> 13900k
    Pre-IPA-Leak: 16974k -> 16974k
    Pre-IPA-Overhead: 2086k
    Post-IPA-Garbage: 13899k -> 13900k
    Post-IPA-Leak: 16974k -> 16974k
    Post-IPA-Overhead: 2086k

comparing combine.c compilation at -O2 level:
    Overall memory needed: 34545k
    Peak memory use before GGC: 16272k
    Peak memory use after GGC: 16110k
    Maximum of released memory in single GGC run: 1303k -> 1304k
    Garbage: 71656k -> 71657k
    Leak: 5979k -> 5971k
    Overhead: 8072k -> 8072k
    GGC runs: 509
    Pre-IPA-Garbage: 14051k -> 14052k
    Pre-IPA-Leak: 17038k -> 17038k
    Pre-IPA-Overhead: 2099k
    Post-IPA-Garbage: 14051k -> 14052k
    Post-IPA-Leak: 17038k -> 17038k
    Post-IPA-Overhead: 2099k

comparing combine.c compilation at -O3 level:
    Overall memory needed: 38705k -> 38701k
    Peak memory use before GGC: 16365k
    Peak memory use after GGC: 16126k
    Maximum of released memory in single GGC run: 2440k
    Garbage: 91551k -> 91537k
    Leak: 6035k -> 6035k
    Overhead: 10610k -> 10609k
    GGC runs: 544
    Pre-IPA-Garbage: 14053k -> 14054k
    Pre-IPA-Leak: 17049k -> 17049k
    Pre-IPA-Overhead: 2101k
    Post-IPA-Garbage: 14053k -> 14054k
    Post-IPA-Leak: 17049k -> 17049k
    Post-IPA-Overhead: 2101k

comparing insn-attrtab.c compilation at -O0 level:
    Overall memory needed: 137445k -> 137449k
    Peak memory use before GGC: 56958k -> 56959k
    Peak memory use after GGC: 31384k -> 31385k
    Maximum of released memory in single GGC run: 33223k
    Garbage: 128389k -> 128387k
    Leak: 8355k -> 8355k
    Overhead: 14291k -> 14291k
    GGC runs: 291
Testing has produced no results
Testing has produced no results

comparing insn-attrtab.c compilation at -O0 -g level:
    Overall memory needed: 138733k
    Peak memory use before GGC: 58160k -> 58161k
    Peak memory use after GGC: 32585k -> 32586k
    Maximum of released memory in single GGC run: 33224k
    Garbage: 128896k -> 128896k
    Leak: 9933k -> 9933k
    Overhead: 14731k -> 14731k
    GGC runs: 289 -> 288
Testing has produced no results
Testing has produced no results

comparing insn-attrtab.c compilation at -O1 level:
    Overall memory needed: 142361k -> 142357k
    Peak memory use before GGC: 56075k -> 56076k
    Peak memory use after GGC: 49743k
    Maximum of released memory in single GGC run: 23959k -> 23960k
    Garbage: 204997k -> 204998k
    Leak: 9260k -> 9261k
    Overhead: 24455k -> 24455k
    GGC runs: 315
    Pre-IPA-Garbage: 50365k -> 50366k
    Pre-IPA-Leak: 49268k -> 49269k
    Pre-IPA-Overhead: 7416k -> 7416k
    Post-IPA-Garbage: 50365k -> 50366k
    Post-IPA-Leak: 49268k -> 49269k
    Post-IPA-Overhead: 7416k -> 7416k

comparing insn-attrtab.c compilation at -O2 level:
    Overall memory needed: 184389k -> 184385k
    Peak memory use before GGC: 56658k
    Peak memory use after GGC: 51343k -> 51344k
    Maximum of released memory in single GGC run: 22853k -> 22852k
    Garbage: 246596k -> 246596k
    Leak: 10337k -> 10337k
    Overhead: 30363k -> 30363k
    GGC runs: 345
    Pre-IPA-Garbage: 50437k -> 50437k
    Pre-IPA-Leak: 49272k -> 49273k
    Pre-IPA-Overhead: 7423k -> 7423k
    Post-IPA-Garbage: 50437k -> 50437k
    Post-IPA-Leak: 49272k -> 49273k
    Post-IPA-Overhead: 7423k -> 7423k

comparing insn-attrtab.c compilation at -O3 level:
    Overall memory needed: 190873k -> 190677k
    Peak memory use before GGC: 68990k
    Peak memory use after GGC: 64797k
    Maximum of released memory in single GGC run: 24862k
    Garbage: 273788k -> 273789k
    Leak: 10372k -> 10373k
    Overhead: 32269k -> 32269k
    GGC runs: 345
    Pre-IPA-Garbage: 50437k -> 50437k
    Pre-IPA-Leak: 49272k -> 49273k
    Pre-IPA-Overhead: 7423k -> 7423k
    Post-IPA-Garbage: 50437k -> 50437k
    Post-IPA-Leak: 49272k -> 49273k
    Post-IPA-Overhead: 7423k -> 7423k

comparing Gerald's testcase PR8361 compilation at -O0 level:
    Overall memory needed: 144021k -> 144100k
    Peak memory use before GGC: 80333k
    Peak memory use after GGC: 79537k -> 79538k
    Maximum of released memory in single GGC run: 14817k -> 14816k
    Garbage: 197259k -> 197265k
    Leak: 47150k -> 47151k
    Overhead: 24078k -> 24079k
    GGC runs: 418
    Pre-IPA-Garbage: 107899k -> 107899k
    Pre-IPA-Leak: 69071k -> 69071k
    Pre-IPA-Overhead: 12017k -> 12017k
    Post-IPA-Garbage: 107899k -> 107899k
    Post-IPA-Leak: 69071k -> 69071k
    Post-IPA-Overhead: 12017k -> 12017k

comparing Gerald's testcase PR8361 compilation at -O0 -g level:
    Overall memory needed: 166193k -> 166192k
    Peak memory use before GGC: 92916k -> 92917k
    Peak memory use after GGC: 91996k
    Maximum of released memory in single GGC run: 15518k
    Garbage: 202906k -> 202908k
    Leak: 71539k -> 71539k
    Overhead: 30438k -> 30437k
    GGC runs: 389
    Pre-IPA-Garbage: 108542k -> 108542k
    Pre-IPA-Leak: 83804k -> 83804k
    Pre-IPA-Overhead: 15320k -> 15320k
    Post-IPA-Garbage: 108542k -> 108542k
    Post-IPA-Leak: 83804k -> 83804k
    Post-IPA-Overhead: 15320k -> 15320k

comparing Gerald's testcase PR8361 compilation at -O1 level:
    Overall memory needed: 118985k -> 118977k
    Peak memory use before GGC: 79481k
    Peak memory use after GGC: 78687k -> 78688k
    Maximum of released memory in single GGC run: 14455k
    Garbage: 287446k -> 287462k
    Leak: 46302k -> 46302k
    Overhead: 28530k -> 28531k
    GGC runs: 519 -> 520
    Pre-IPA-Garbage: 151112k -> 151112k
    Pre-IPA-Leak: 83059k -> 83060k
    Pre-IPA-Overhead: 16674k -> 16674k
    Post-IPA-Garbage: 151112k -> 151112k
    Post-IPA-Leak: 83059k -> 83060k
    Post-IPA-Overhead: 16674k -> 16674k

comparing Gerald's testcase PR8361 compilation at -O2 level:
    Overall memory needed: 121241k -> 121185k
    Peak memory use before GGC: 79507k
    Peak memory use after GGC: 78720k
    Maximum of released memory in single GGC run: 14458k -> 14457k
    Garbage: 356223k -> 356222k
    Leak: 47708k -> 47707k
    Overhead: 35682k -> 35684k
    GGC runs: 597 -> 596
    Pre-IPA-Garbage: 152713k -> 152715k
    Pre-IPA-Leak: 82936k -> 82937k
    Pre-IPA-Overhead: 16810k -> 16810k
    Post-IPA-Garbage: 152713k -> 152715k
    Post-IPA-Leak: 82936k -> 82937k
    Post-IPA-Overhead: 16810k -> 16810k

comparing Gerald's testcase PR8361 compilation at -O3 level:
    Overall memory needed: 124249k -> 124253k
    Peak memory use before GGC: 80999k -> 81000k
    Peak memory use after GGC: 80197k -> 80198k
    Maximum of released memory in single GGC run: 14780k
    Garbage: 383485k -> 383315k
    Leak: 48106k -> 48114k
    Overhead: 38004k -> 37980k
    GGC runs: 621
    Pre-IPA-Garbage: 155338k -> 155340k
    Pre-IPA-Leak: 83220k -> 83221k
    Pre-IPA-Overhead: 17052k -> 17052k
    Post-IPA-Garbage: 155338k -> 155340k
    Post-IPA-Leak: 83220k -> 83221k
    Post-IPA-Overhead: 17052k -> 17052k

comparing PR rtl-optimization/28071 testcase compilation at -O0 level:
    Overall memory needed: 380362k -> 380349k
    Peak memory use before GGC: 100958k
    Peak memory use after GGC: 56611k -> 56612k
    Maximum of released memory in single GGC run: 50583k -> 50582k
    Garbage: 178453k -> 178453k
    Leak: 6103k -> 6104k
    Overhead: 30541k -> 30541k
    GGC runs: 107 -> 106
Testing has produced no results
Testing has produced no results

comparing PR rtl-optimization/28071 testcase compilation at -O0 -g level:
    Overall memory needed: 381202k -> 381193k
    Peak memory use before GGC: 101651k
    Peak memory use after GGC: 57304k -> 57305k
    Maximum of released memory in single GGC run: 50583k -> 50582k
    Garbage: 178568k -> 178616k
    Leak: 8132k -> 8133k
    Overhead: 31124k -> 31125k
    GGC runs: 111
Testing has produced no results
Testing has produced no results

comparing PR rtl-optimization/28071 testcase compilation at -O1 level:
    Overall memory needed: 398541k -> 398589k
    Peak memory use before GGC: 75052k
    Peak memory use after GGC: 68956k
    Maximum of released memory in single GGC run: 34951k -> 34950k
    Garbage: 237663k -> 237663k
    Leak: 13678k -> 13678k
    Overhead: 30716k
    GGC runs: 106
    Pre-IPA-Garbage: 47276k -> 47276k
    Pre-IPA-Leak: 65129k -> 65130k
    Pre-IPA-Overhead: 6423k -> 6423k
    Post-IPA-Garbage: 47276k -> 47276k
    Post-IPA-Leak: 65129k -> 65130k
    Post-IPA-Overhead: 6423k -> 6423k

comparing PR rtl-optimization/28071 testcase compilation at -O2 level:
    Overall memory needed: 303445k -> 303269k
    Peak memory use before GGC: 74966k -> 74967k
    Peak memory use after GGC: 68956k -> 68957k
    Maximum of released memory in single GGC run: 31581k -> 31580k
    Garbage: 252153k -> 252152k
    Leak: 13851k -> 13852k
    Overhead: 33834k -> 33834k
    GGC runs: 118
    Pre-IPA-Garbage: 99280k -> 99281k
    Pre-IPA-Leak: 82247k -> 82247k
    Pre-IPA-Overhead: 10465k -> 10465k
    Post-IPA-Garbage: 99280k -> 99281k
    Post-IPA-Leak: 82247k -> 82247k
    Post-IPA-Overhead: 10465k -> 10465k

comparing PR rtl-optimization/28071 testcase compilation at -O3 -fno-tree-pre -fno-tree-fre level:
    Overall memory needed: 1079381k -> 1079589k
    Peak memory use before GGC: 141304k
    Peak memory use after GGC: 131199k
    Maximum of released memory in single GGC run: 55803k -> 55802k
    Garbage: 343000k -> 343000k
    Leak: 22001k -> 22001k
    Overhead: 37524k -> 37524k
    GGC runs: 102
    Pre-IPA-Garbage: 99280k -> 99281k
    Pre-IPA-Leak: 82247k -> 82247k
    Pre-IPA-Overhead: 10465k -> 10465k
    Post-IPA-Garbage: 99280k -> 99281k
    Post-IPA-Leak: 82247k -> 82247k
    Post-IPA-Overhead: 10465k -> 10465k

Head of the ChangeLog is:

--- /usr/src/SpecTests/sandbox-britten-memory/x86_64/mem-result/ChangeLog	2008-05-18 19:12:19.000000000 +0000
+++ /usr/src/SpecTests/sandbox-britten-memory/gcc/gcc/ChangeLog	2008-05-18 23:34:48.000000000 +0000
@@ -1,3 +1,25 @@
+2008-05-18  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
+
+	PR middle-end/35509
+
+	* builtins.c (mathfn_built_in_1): Renamed from mathfn_built_in.
+	Add `implicit' parameter.  Handle BUILT_IN_SIGNBIT.
+	(mathfn_built_in): Rewrite in terms of mathfn_built_in_1.
+	(fold_builtin_classify): Handle BUILT_IN_ISINF_SIGN.
+	(fold_builtin_1): Likewise.
+	* builtins.def (BUILT_IN_ISINF_SIGN): New.
+	c-common.c (check_builtin_function_arguments): Handle
+	BUILT_IN_ISINF_SIGN.
+	* doc/extend.texi: Document __builtin_isinf_sign.
+	* fold-const.c (operand_equal_p): Handle COND_EXPR.
+
+
+2008-05-18  Eric Botcazou  <ebotcazou@adacore.com>
+
+	* tree-ssa-dom.c (tree_ssa_dominator_optimize): If some blocks need
+	EH cleanup at the end of the pass, search for those that have been
+	turned into forwarder blocks and do the cleanup on their successor.
+
 2008-05-18  Richard Guenther  <rguenther@suse.de>
 
 	* tree-cfg.c (verify_gimple_expr): Allow conversions from


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]