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:
    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.


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