This is the mail archive of the
gcc-regression@gcc.gnu.org
mailing list for the GCC project.
A recent patch increased GCC's memory consumption!
- From: gcctest at suse dot de
- To: jh at suse dot cz, hubicka at ucw dot cz, gcc-regression at gcc dot gnu dot org
- Date: Wed, 20 May 2009 14:11:15 +0000
- Subject: 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:
Overall memory needed: 8801k
Peak memory use before GGC: 1488k
Peak memory use after GGC: 1437k
Maximum of released memory in single GGC run: 85k
Garbage: 218k
Leak: 1537k
Overhead: 187k
GGC runs: 4
Pre-IPA-Garbage: 210k
Pre-IPA-Leak: 1539k
Pre-IPA-Overhead: 186k
Post-IPA-Garbage: 210k
Post-IPA-Leak: 1539k
Post-IPA-Overhead: 186k
comparing empty function compilation at -O0 -g level:
Overall memory needed: 8825k
Peak memory use before GGC: 1516k
Peak memory use after GGC: 1464k
Maximum of released memory in single GGC run: 87k
Garbage: 219k
Leak: 1570k
Overhead: 192k
GGC runs: 4
Pre-IPA-Garbage: 210k
Pre-IPA-Leak: 1539k
Pre-IPA-Overhead: 186k
Post-IPA-Garbage: 210k
Post-IPA-Leak: 1539k
Post-IPA-Overhead: 186k
comparing empty function compilation at -O1 level:
Overall memory needed: 8909k -> 8929k
Peak memory use before GGC: 1488k
Peak memory use after GGC: 1437k
Maximum of released memory in single GGC run: 87k
Garbage: 220k
Leak: 1537k
Overhead: 188k
GGC runs: 4
Pre-IPA-Garbage: 210k
Pre-IPA-Leak: 1540k
Pre-IPA-Overhead: 186k
Post-IPA-Garbage: 210k
Post-IPA-Leak: 1540k
Post-IPA-Overhead: 186k
comparing empty function compilation at -O2 level:
Overall memory needed: 8929k
Peak memory use before GGC: 1488k
Peak memory use after GGC: 1437k
Maximum of released memory in single GGC run: 92k
Garbage: 226k
Leak: 1537k
Overhead: 189k
GGC runs: 4
Pre-IPA-Garbage: 210k
Pre-IPA-Leak: 1540k
Pre-IPA-Overhead: 186k
Post-IPA-Garbage: 210k
Post-IPA-Leak: 1540k
Post-IPA-Overhead: 186k
comparing empty function compilation at -O3 level:
Overall memory needed: 8933k
Peak memory use before GGC: 1488k
Peak memory use after GGC: 1437k
Maximum of released memory in single GGC run: 92k
Garbage: 226k
Leak: 1537k
Overhead: 189k
GGC runs: 4
Pre-IPA-Garbage: 210k
Pre-IPA-Leak: 1540k
Pre-IPA-Overhead: 186k
Post-IPA-Garbage: 210k
Post-IPA-Leak: 1540k
Post-IPA-Overhead: 186k
comparing combine.c compilation at -O0 level:
Overall memory needed: 31445k
Peak memory use before GGC: 17469k
Peak memory use after GGC: 17020k
Maximum of released memory in single GGC run: 1910k
Garbage: 37903k
Leak: 7155k
Overhead: 5492k -> 5492k
GGC runs: 331
Pre-IPA-Garbage: 12539k
Pre-IPA-Leak: 18401k
Pre-IPA-Overhead: 2507k
Post-IPA-Garbage: 12539k
Post-IPA-Leak: 18401k
Post-IPA-Overhead: 2507k
comparing combine.c compilation at -O0 -g level:
Overall memory needed: 33401k
Peak memory use before GGC: 19377k
Peak memory use after GGC: 18859k
Maximum of released memory in single GGC run: 1920k
Garbage: 38118k
Leak: 10441k
Overhead: 6305k
GGC runs: 315
Pre-IPA-Garbage: 12558k
Pre-IPA-Leak: 20650k
Pre-IPA-Overhead: 2989k
Post-IPA-Garbage: 12558k
Post-IPA-Leak: 20650k
Post-IPA-Overhead: 2989k
comparing combine.c compilation at -O1 level:
Overall memory needed: 31897k -> 31781k
Peak memory use before GGC: 16476k
Peak memory use after GGC: 16310k
Maximum of released memory in single GGC run: 1378k
Garbage: 45344k -> 45344k
Leak: 7156k
Overhead: 6390k -> 6390k
GGC runs: 387
Pre-IPA-Garbage: 12959k
Pre-IPA-Leak: 17620k
Pre-IPA-Overhead: 2503k
Post-IPA-Garbage: 12959k
Post-IPA-Leak: 17620k
Post-IPA-Overhead: 2503k
comparing combine.c compilation at -O2 level:
Overall memory needed: 32909k -> 32817k
Peak memory use before GGC: 16540k
Peak memory use after GGC: 16375k
Maximum of released memory in single GGC run: 1488k
Garbage: 56233k
Leak: 7188k
Overhead: 8012k -> 8013k
GGC runs: 441
Pre-IPA-Garbage: 13011k
Pre-IPA-Leak: 17643k
Pre-IPA-Overhead: 2509k
Post-IPA-Garbage: 13011k
Post-IPA-Leak: 17643k
Post-IPA-Overhead: 2509k
comparing combine.c compilation at -O3 level:
Overall memory needed: 33269k -> 33345k
Peak memory use before GGC: 16507k
Peak memory use after GGC: 16341k
Maximum of released memory in single GGC run: 1671k
Garbage: 65046k -> 65047k
Leak: 7211k
Overhead: 9285k -> 9285k
GGC runs: 471
Pre-IPA-Garbage: 13011k
Pre-IPA-Leak: 17643k
Pre-IPA-Overhead: 2509k
Post-IPA-Garbage: 13011k
Post-IPA-Leak: 17643k
Post-IPA-Overhead: 2509k
comparing insn-attrtab.c compilation at -O0 level:
Overall memory needed: 152505k -> 152473k
Peak memory use before GGC: 65254k
Peak memory use after GGC: 52818k
Maximum of released memory in single GGC run: 26250k
Garbage: 128573k
Leak: 9587k
Overhead: 16691k
GGC runs: 259
Pre-IPA-Garbage: 40782k
Pre-IPA-Leak: 51014k
Pre-IPA-Overhead: 7761k
Post-IPA-Garbage: 40782k
Post-IPA-Leak: 51014k
Post-IPA-Overhead: 7761k
comparing insn-attrtab.c compilation at -O0 -g level:
Overall memory needed: 153817k
Peak memory use before GGC: 66520k
Peak memory use after GGC: 54081k
Maximum of released memory in single GGC run: 26251k
Garbage: 128911k
Leak: 11219k
Overhead: 17144k
GGC runs: 253
Pre-IPA-Garbage: 40791k
Pre-IPA-Leak: 52539k
Pre-IPA-Overhead: 8091k
Post-IPA-Garbage: 40791k
Post-IPA-Leak: 52539k
Post-IPA-Overhead: 8091k
comparing insn-attrtab.c compilation at -O1 level:
Overall memory needed: 154557k -> 154685k
Peak memory use before GGC: 54960k
Peak memory use after GGC: 44890k
Maximum of released memory in single GGC run: 17233k
Garbage: 180932k
Leak: 9178k
Overhead: 23406k
GGC runs: 298
Pre-IPA-Garbage: 45067k
Pre-IPA-Leak: 45085k
Pre-IPA-Overhead: 7586k
Post-IPA-Garbage: 45067k
Post-IPA-Leak: 45085k
Post-IPA-Overhead: 7586k
comparing insn-attrtab.c compilation at -O2 level:
Overall memory needed: 202221k -> 202001k
Peak memory use before GGC: 54409k
Peak memory use after GGC: 44641k
Maximum of released memory in single GGC run: 18696k
Garbage: 211482k
Leak: 9192k
Overhead: 29278k
GGC runs: 331
Pre-IPA-Garbage: 45129k
Pre-IPA-Leak: 45092k
Pre-IPA-Overhead: 7591k
Post-IPA-Garbage: 45129k
Post-IPA-Leak: 45092k
Post-IPA-Overhead: 7591k
comparing insn-attrtab.c compilation at -O3 level:
Overall memory needed: 202237k -> 202013k
Peak memory use before GGC: 54409k
Peak memory use after GGC: 44641k
Maximum of released memory in single GGC run: 18695k
Garbage: 212704k
Leak: 9199k
Overhead: 29669k -> 29669k
GGC runs: 339
Pre-IPA-Garbage: 45129k
Pre-IPA-Leak: 45092k
Pre-IPA-Overhead: 7591k
Post-IPA-Garbage: 45129k
Post-IPA-Leak: 45092k
Post-IPA-Overhead: 7591k
comparing Gerald's testcase PR8361 compilation at -O0 level:
Overall memory needed: 146261k -> 146337k
Peak memory use before GGC: 81679k
Peak memory use after GGC: 80870k
Maximum of released memory in single GGC run: 13632k
Garbage: 197869k
Leak: 55413k
Overhead: 28228k
GGC runs: 446
Pre-IPA-Garbage: 110139k
Pre-IPA-Leak: 84472k
Pre-IPA-Overhead: 14999k
Post-IPA-Garbage: 110139k
Post-IPA-Leak: 84472k
Post-IPA-Overhead: 14999k
comparing Gerald's testcase PR8361 compilation at -O0 -g level:
Overall memory needed: 164045k -> 163949k
Peak memory use before GGC: 95820k
Peak memory use after GGC: 94870k
Maximum of released memory in single GGC run: 13895k
Garbage: 203198k
Leak: 82504k
Overhead: 34791k
GGC runs: 418
Pre-IPA-Garbage: 110724k
Pre-IPA-Leak: 100993k
Pre-IPA-Overhead: 18504k
Post-IPA-Garbage: 110724k
Post-IPA-Leak: 100993k
Post-IPA-Overhead: 18504k
comparing Gerald's testcase PR8361 compilation at -O1 level:
Amount of produced GGC garbage increased from 258273k to 259169k, overall 0.35%
Overall memory needed: 107197k -> 107225k
Peak memory use before GGC: 81696k
Peak memory use after GGC: 80883k
Maximum of released memory in single GGC run: 13475k
Garbage: 258273k -> 259169k
Leak: 52212k
Overhead: 29617k -> 29637k
GGC runs: 515 -> 516
Pre-IPA-Garbage: 149430k -> 149533k
Pre-IPA-Leak: 85868k
Pre-IPA-Overhead: 17968k -> 17969k
Post-IPA-Garbage: 149430k -> 149533k
Post-IPA-Leak: 85868k
Post-IPA-Overhead: 17968k -> 17969k
comparing Gerald's testcase PR8361 compilation at -O2 level:
Amount of produced GGC garbage increased from 296583k to 298208k, overall 0.55%
Overall memory needed: 106693k -> 106837k
Peak memory use before GGC: 81622k -> 81627k
Peak memory use after GGC: 80162k
Maximum of released memory in single GGC run: 13479k
Garbage: 296583k -> 298208k
Leak: 52286k
Overhead: 34672k -> 34715k
GGC runs: 561 -> 563
Amount of produced pre-ipa-GGC garbage increased from 152492k to 152702k, overall 0.14%
Pre-IPA-Garbage: 152492k -> 152702k
Pre-IPA-Leak: 84974k
Pre-IPA-Overhead: 18177k -> 18182k
Amount of produced post-ipa-GGC garbage increased from 152492k to 152702k, overall 0.14%
Post-IPA-Garbage: 152492k -> 152702k
Post-IPA-Leak: 84974k
Post-IPA-Overhead: 18177k -> 18182k
comparing Gerald's testcase PR8361 compilation at -O3 level:
Amount of produced GGC garbage increased from 313955k to 315533k, overall 0.50%
Overall memory needed: 107317k -> 107341k
Peak memory use before GGC: 82083k -> 82087k
Peak memory use after GGC: 80167k
Maximum of released memory in single GGC run: 13479k
Garbage: 313955k -> 315533k
Leak: 52289k -> 52296k
Overhead: 37003k -> 37031k
GGC runs: 581 -> 584
Amount of produced pre-ipa-GGC garbage increased from 152492k to 152702k, overall 0.14%
Pre-IPA-Garbage: 152492k -> 152702k
Pre-IPA-Leak: 84978k
Pre-IPA-Overhead: 18178k -> 18182k
Amount of produced post-ipa-GGC garbage increased from 152492k to 152702k, overall 0.14%
Post-IPA-Garbage: 152492k -> 152702k
Post-IPA-Leak: 84978k
Post-IPA-Overhead: 18178k -> 18182k
comparing PR rtl-optimization/28071 testcase compilation at -O0 level:
Overall memory needed: 358777k -> 358785k
Peak memory use before GGC: 78173k
Peak memory use after GGC: 49107k
Maximum of released memory in single GGC run: 37057k
Garbage: 140058k
Leak: 7711k
Overhead: 25004k
GGC runs: 86
Pre-IPA-Garbage: 12038k
Pre-IPA-Leak: 18626k
Pre-IPA-Overhead: 2447k
Post-IPA-Garbage: 12038k
Post-IPA-Leak: 18626k
Post-IPA-Overhead: 2447k
comparing PR rtl-optimization/28071 testcase compilation at -O0 -g level:
Overall memory needed: 359473k -> 359449k
Peak memory use before GGC: 78856k
Peak memory use after GGC: 49791k
Maximum of released memory in single GGC run: 37041k
Garbage: 140124k
Leak: 9707k
Overhead: 25573k
GGC runs: 94
Pre-IPA-Garbage: 12040k
Pre-IPA-Leak: 18873k
Pre-IPA-Overhead: 2500k
Post-IPA-Garbage: 12040k
Post-IPA-Leak: 18873k
Post-IPA-Overhead: 2500k
comparing PR rtl-optimization/28071 testcase compilation at -O1 level:
Overall memory needed: 208637k -> 208757k
Peak memory use before GGC: 74131k
Peak memory use after GGC: 69415k
Maximum of released memory in single GGC run: 35390k
Garbage: 215892k
Leak: 9258k
Overhead: 32795k
GGC runs: 95
Pre-IPA-Garbage: 39202k
Pre-IPA-Leak: 63682k
Pre-IPA-Overhead: 6995k
Post-IPA-Garbage: 39202k
Post-IPA-Leak: 63682k
Post-IPA-Overhead: 6995k
comparing PR rtl-optimization/28071 testcase compilation at -O2 level:
Overall memory needed: 533249k -> 532229k
Peak memory use before GGC: 74132k
Peak memory use after GGC: 69415k
Maximum of released memory in single GGC run: 37541k
Garbage: 255641k
Leak: 9008k
Overhead: 38354k
GGC runs: 106
Pre-IPA-Garbage: 89544k
Pre-IPA-Leak: 80238k
Pre-IPA-Overhead: 11099k
Post-IPA-Garbage: 89544k
Post-IPA-Leak: 80238k
Post-IPA-Overhead: 11099k
comparing PR rtl-optimization/28071 testcase compilation at -O3 -fno-tree-pre -fno-tree-fre level:
Overall memory needed: 1234853k -> 1234885k
Peak memory use before GGC: 134702k
Peak memory use after GGC: 126430k
Maximum of released memory in single GGC run: 54316k
Garbage: 340034k
Leak: 10282k
Overhead: 43411k
GGC runs: 106
Pre-IPA-Garbage: 89544k
Pre-IPA-Leak: 80238k
Pre-IPA-Overhead: 11099k
Post-IPA-Garbage: 89544k
Post-IPA-Leak: 80238k
Post-IPA-Overhead: 11099k
Head of the ChangeLog is:
--- /usr/src/SpecTests/sandbox-haydn-memory/x86_64/mem-result/ChangeLog 2009-05-20 00:34:04.000000000 +0000
+++ /usr/src/SpecTests/sandbox-haydn-memory/gcc/gcc/ChangeLog 2009-05-20 12:03:57.000000000 +0000
@@ -1,3 +1,56 @@
+2009-05-20 Martin Jambor <mjambor@suse.cz>
+
+ * tree-flow.h (insert_edge_copies_seq): Undeclare.
+ (sra_insert_before): Likewise.
+ (sra_insert_after): Likewise.
+ (sra_init_cache): Likewise.
+ (sra_type_can_be_decomposed_p): Likewise.
+ * tree-mudflap.c (insert_edge_copies_seq): Copied here from tree-sra.c
+ * tree-sra.c (sra_type_can_be_decomposed_p): Made static.
+ (sra_insert_before): Likewise.
+ (sra_insert_after): Likewise.
+ (sra_init_cache): Likewise.
+ (insert_edge_copies_seq): Made static and moved upwards.
+
+ * tree-complex.c (extract_component): Added VIEW_CONVERT_EXPR switch
+ case.
+
+ * tree-flow-inline.h (contains_view_convert_expr_p): New function.
+
+ * ipa-prop.c (get_ssa_def_if_simple_copy): New function.
+ (determine_cst_member_ptr): Call get_ssa_def_if_simple_copy to skip
+ simple copies.
+
+2009-05-20 Richard Guenther <rguenther@suse.de>
+
+ * expr.c (expand_expr_real_1): Avoid calling do_store_flag
+ with mismatched comparison modes.
+
+2009-05-20 Ramana Radhakrishnan <ramana.radhakrishnan@arm.com>
+
+ * config/arm/arm.md (*arm_iorsi3): Refactored for only ARM.
+ (peephole ior (reg, int) -> mov, ior): Refactored for only ARM.
+ * config/arm/thumb2.md (*thumb_andsi_not_shiftsi_si): Allow bic
+ with shifts for Thumb2.
+ (orsi_notsi): New for orn.
+ (*thumb_orsi_notshiftsi_si): Allow orn with shifts.
+ (*thumb2_iorsi3): Rewrite support for iorsi for Thumb2.
+ * config/arm/arm.c (const_ok_for_op): Split case for IOR for
+ Thumb2.
+ (arm_gen_constant): Set can_invert for IOR and Thumb2, Add
+ comments. Don't invert remainder for IOR.
+
+2009-05-19 Zdenek Dvorak <ook@ucw.cz>
+
+ PR tree-optimization/40087
+ * tree-ssa-loop-niter.c (number_of_iterations_ne_max,
+ number_of_iterations_ne): Rename never_infinite argument.
+ (number_of_iterations_lt_to_ne, number_of_iterations_lt,
+ number_of_iterations_le): Handle pointer-type ivs when
+ exit_must_be_taken is false.
+ (number_of_iterations_cond): Do not always assume that
+ exit_must_be_taken if the control variable is a pointer.
+
2009-05-19 Andrew Pinski <andrew_pinski@playstation.sony.com>
* c-typeck.c (build_binary_op): Allow % on integal vectors.
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.