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: 8151k -> 8152k
    Peak memory use before GGC: 1157k
    Peak memory use after GGC: 1057k
    Maximum of released memory in single GGC run: 130k
    Garbage: 242k
    Leak: 1018k
    Overhead: 91k
    GGC runs: 3
    Pre-IPA-Garbage: 232k
    Pre-IPA-Leak: 1018k
    Pre-IPA-Overhead: 90k
    Post-IPA-Garbage: 232k
    Post-IPA-Leak: 1018k
    Post-IPA-Overhead: 90k

comparing empty function compilation at -O0 -g level:
    Overall memory needed: 8167k -> 8168k
    Peak memory use before GGC: 1184k
    Peak memory use after GGC: 1085k
    Maximum of released memory in single GGC run: 131k
    Garbage: 244k
    Leak: 1051k
    Overhead: 96k
    GGC runs: 3
    Pre-IPA-Garbage: 232k
    Pre-IPA-Leak: 1018k
    Pre-IPA-Overhead: 90k
    Post-IPA-Garbage: 232k
    Post-IPA-Leak: 1018k
    Post-IPA-Overhead: 90k

comparing empty function compilation at -O1 level:
  Amount of produced GGC garbage increased from 245k to 246k, overall 0.14%
    Overall memory needed: 8227k -> 8228k
    Peak memory use before GGC: 1157k
    Peak memory use after GGC: 1057k
    Maximum of released memory in single GGC run: 130k
    Garbage: 245k -> 246k
    Leak: 1018k
    Overhead: 92k -> 92k
    GGC runs: 3
    Pre-IPA-Garbage: 232k
    Pre-IPA-Leak: 1020k -> 1020k
    Pre-IPA-Overhead: 90k
    Post-IPA-Garbage: 232k
    Post-IPA-Leak: 1020k -> 1020k
    Post-IPA-Overhead: 90k

comparing empty function compilation at -O2 level:
  Amount of produced GGC garbage increased from 251k to 251k, overall 0.25%
    Overall memory needed: 8239k -> 8240k
    Peak memory use before GGC: 1157k
    Peak memory use after GGC: 1058k
    Maximum of released memory in single GGC run: 130k
    Garbage: 251k -> 251k
    Leak: 1019k
    Overhead: 93k -> 93k
    GGC runs: 3
    Pre-IPA-Garbage: 232k
    Pre-IPA-Leak: 1021k -> 1021k
    Pre-IPA-Overhead: 90k
    Post-IPA-Garbage: 232k
    Post-IPA-Leak: 1021k -> 1021k
    Post-IPA-Overhead: 90k

comparing empty function compilation at -O3 level:
  Amount of produced GGC garbage increased from 251k to 251k, overall 0.25%
    Overall memory needed: 8247k -> 8240k
    Peak memory use before GGC: 1157k
    Peak memory use after GGC: 1058k
    Maximum of released memory in single GGC run: 130k
    Garbage: 251k -> 251k
    Leak: 1019k
    Overhead: 93k -> 93k
    GGC runs: 3
    Pre-IPA-Garbage: 232k
    Pre-IPA-Leak: 1021k -> 1021k
    Pre-IPA-Overhead: 90k
    Post-IPA-Garbage: 232k
    Post-IPA-Leak: 1021k -> 1021k
    Post-IPA-Overhead: 90k

comparing combine.c compilation at -O0 level:
    Overall memory needed: 29379k -> 29380k
    Peak memory use before GGC: 15009k
    Peak memory use after GGC: 14747k
    Maximum of released memory in single GGC run: 1787k
    Garbage: 38094k
    Leak: 5183k
    Overhead: 4666k
    GGC runs: 356
    Pre-IPA-Garbage: 12904k
    Pre-IPA-Leak: 15358k
    Pre-IPA-Overhead: 2000k
    Post-IPA-Garbage: 12904k
    Post-IPA-Leak: 15358k
    Post-IPA-Overhead: 2000k

comparing combine.c compilation at -O0 -g level:
    Overall memory needed: 31591k -> 31592k
    Peak memory use before GGC: 16869k
    Peak memory use after GGC: 16638k
    Maximum of released memory in single GGC run: 1813k
    Garbage: 38466k
    Leak: 8465k
    Overhead: 5485k
    GGC runs: 337
    Pre-IPA-Garbage: 13004k
    Pre-IPA-Leak: 17633k
    Pre-IPA-Overhead: 2492k
    Post-IPA-Garbage: 13004k
    Post-IPA-Leak: 17633k
    Post-IPA-Overhead: 2492k

comparing combine.c compilation at -O1 level:
  Amount of memory still referenced at the end of compilation increased from 5173k to 5181k, overall 0.16%
    Overall memory needed: 32723k -> 32728k
    Peak memory use before GGC: 16336k -> 16339k
    Peak memory use after GGC: 16171k -> 16174k
    Maximum of released memory in single GGC run: 1405k
    Garbage: 51472k -> 51488k
    Leak: 5173k -> 5181k
    Overhead: 5734k -> 5735k
    GGC runs: 434
    Pre-IPA-Garbage: 13939k
    Pre-IPA-Leak: 17187k -> 17190k
    Pre-IPA-Overhead: 2148k
    Post-IPA-Garbage: 13939k
    Post-IPA-Leak: 17187k -> 17190k
    Post-IPA-Overhead: 2148k

comparing combine.c compilation at -O2 level:
    Overall memory needed: 35007k -> 35008k
    Peak memory use before GGC: 16429k -> 16432k
    Peak memory use after GGC: 16263k -> 16266k
    Maximum of released memory in single GGC run: 1334k
    Garbage: 71690k -> 71728k
    Leak: 5204k
    Overhead: 8131k -> 8133k
    GGC runs: 509
    Pre-IPA-Garbage: 14088k -> 14088k
    Pre-IPA-Leak: 17249k -> 17252k
    Pre-IPA-Overhead: 2160k
    Post-IPA-Garbage: 14088k -> 14088k
    Post-IPA-Leak: 17249k -> 17252k
    Post-IPA-Overhead: 2160k

comparing combine.c compilation at -O3 level:
    Overall memory needed: 38807k -> 38808k
    Peak memory use before GGC: 16448k -> 16452k
    Peak memory use after GGC: 16276k -> 16279k
    Maximum of released memory in single GGC run: 2369k
    Garbage: 91196k -> 91180k
    Leak: 5236k
    Overhead: 10453k -> 10453k
    GGC runs: 539
    Pre-IPA-Garbage: 14088k -> 14089k
    Pre-IPA-Leak: 17261k -> 17263k
    Pre-IPA-Overhead: 2162k
    Post-IPA-Garbage: 14088k -> 14089k
    Post-IPA-Leak: 17261k -> 17263k
    Post-IPA-Overhead: 2162k

comparing insn-attrtab.c compilation at -O0 level:
    Overall memory needed: 150759k -> 150760k
    Peak memory use before GGC: 62360k
    Peak memory use after GGC: 52695k
    Maximum of released memory in single GGC run: 25737k
    Garbage: 130343k
    Leak: 7081k
    Overhead: 14386k
    GGC runs: 274
    Pre-IPA-Garbage: 43125k
    Pre-IPA-Leak: 49951k
    Pre-IPA-Overhead: 7271k
    Post-IPA-Garbage: 43125k
    Post-IPA-Leak: 49951k
    Post-IPA-Overhead: 7271k

comparing insn-attrtab.c compilation at -O0 -g level:
    Overall memory needed: 152087k -> 152088k
    Peak memory use before GGC: 63635k
    Peak memory use after GGC: 53967k
    Maximum of released memory in single GGC run: 25737k
    Garbage: 130761k
    Leak: 8733k
    Overhead: 14841k
    GGC runs: 265
    Pre-IPA-Garbage: 43182k
    Pre-IPA-Leak: 51493k
    Pre-IPA-Overhead: 7607k
    Post-IPA-Garbage: 43182k
    Post-IPA-Leak: 51493k
    Post-IPA-Overhead: 7607k

comparing insn-attrtab.c compilation at -O1 level:
    Overall memory needed: 141019k -> 141036k
    Peak memory use before GGC: 54738k
    Peak memory use after GGC: 49015k -> 49016k
    Maximum of released memory in single GGC run: 23290k
    Garbage: 206717k -> 206726k
    Leak: 6471k
    Overhead: 24556k -> 24556k
    GGC runs: 314
    Pre-IPA-Garbage: 50399k -> 50399k
    Pre-IPA-Leak: 49463k -> 49465k
    Pre-IPA-Overhead: 7465k
    Post-IPA-Garbage: 50399k -> 50399k
    Post-IPA-Leak: 49463k -> 49465k
    Post-IPA-Overhead: 7465k

comparing insn-attrtab.c compilation at -O2 level:
    Overall memory needed: 182867k -> 183424k
    Peak memory use before GGC: 55422k -> 55423k
    Peak memory use after GGC: 50032k -> 50033k
    Maximum of released memory in single GGC run: 22129k -> 22130k
    Garbage: 246000k -> 246025k
    Leak: 6481k
    Overhead: 30233k -> 30234k
    GGC runs: 349
    Pre-IPA-Garbage: 50468k -> 50468k
    Pre-IPA-Leak: 49468k -> 49469k
    Pre-IPA-Overhead: 7472k
    Post-IPA-Garbage: 50468k -> 50468k
    Post-IPA-Leak: 49468k -> 49469k
    Post-IPA-Overhead: 7472k

comparing insn-attrtab.c compilation at -O3 level:
    Overall memory needed: 191123k -> 191080k
    Peak memory use before GGC: 66915k -> 66916k
    Peak memory use after GGC: 63476k
    Maximum of released memory in single GGC run: 24138k -> 24139k
    Garbage: 273175k -> 273198k
    Leak: 6489k
    Overhead: 32133k -> 32134k
    GGC runs: 352
    Pre-IPA-Garbage: 50468k -> 50468k
    Pre-IPA-Leak: 49468k -> 49469k
    Pre-IPA-Overhead: 7472k
    Post-IPA-Garbage: 50468k -> 50468k
    Post-IPA-Leak: 49468k -> 49469k
    Post-IPA-Overhead: 7472k

comparing Gerald's testcase PR8361 compilation at -O0 level:
    Overall memory needed: 142368k -> 142376k
    Peak memory use before GGC: 79965k
    Peak memory use after GGC: 79173k
    Maximum of released memory in single GGC run: 14878k
    Garbage: 197620k
    Leak: 47702k
    Overhead: 24320k
    GGC runs: 425
    Pre-IPA-Garbage: 107296k
    Pre-IPA-Leak: 68691k
    Pre-IPA-Overhead: 12065k
    Post-IPA-Garbage: 107296k
    Post-IPA-Leak: 68691k
    Post-IPA-Overhead: 12065k

comparing Gerald's testcase PR8361 compilation at -O0 -g level:
    Overall memory needed: 166028k -> 166024k
    Peak memory use before GGC: 94251k
    Peak memory use after GGC: 93318k
    Maximum of released memory in single GGC run: 15682k
    Garbage: 203264k
    Leak: 74297k
    Overhead: 31011k
    GGC runs: 390
    Pre-IPA-Garbage: 107939k
    Pre-IPA-Leak: 85258k
    Pre-IPA-Overhead: 15603k
    Post-IPA-Garbage: 107939k
    Post-IPA-Leak: 85258k
    Post-IPA-Overhead: 15603k

comparing Gerald's testcase PR8361 compilation at -O1 level:
    Overall memory needed: 117984k -> 118006k
    Peak memory use before GGC: 79057k
    Peak memory use after GGC: 78215k
    Maximum of released memory in single GGC run: 14459k -> 14458k
    Garbage: 285849k -> 286122k
    Leak: 44458k -> 44473k
    Overhead: 28454k -> 28460k
    GGC runs: 516
    Pre-IPA-Garbage: 149322k -> 149422k
    Pre-IPA-Leak: 82310k -> 82335k
    Pre-IPA-Overhead: 16663k
    Post-IPA-Garbage: 149322k -> 149422k
    Post-IPA-Leak: 82310k -> 82335k
    Post-IPA-Overhead: 16663k

comparing Gerald's testcase PR8361 compilation at -O2 level:
    Overall memory needed: 120900k -> 120946k
    Peak memory use before GGC: 79351k -> 79349k
    Peak memory use after GGC: 78562k
    Maximum of released memory in single GGC run: 14426k
    Garbage: 352090k -> 352214k
    Leak: 44608k -> 44600k
    Overhead: 35439k -> 35421k
    GGC runs: 596
    Pre-IPA-Garbage: 150919k -> 151022k
    Pre-IPA-Leak: 82176k -> 82198k
    Pre-IPA-Overhead: 16795k
    Post-IPA-Garbage: 150919k -> 151022k
    Post-IPA-Leak: 82176k -> 82198k
    Post-IPA-Overhead: 16795k

comparing Gerald's testcase PR8361 compilation at -O3 level:
    Overall memory needed: 123484k -> 123478k
    Peak memory use before GGC: 80343k -> 80344k
    Peak memory use after GGC: 79539k
    Maximum of released memory in single GGC run: 14783k
    Garbage: 378728k -> 379095k
    Leak: 44981k -> 44981k
    Overhead: 37649k -> 37685k
    GGC runs: 612
    Pre-IPA-Garbage: 153548k -> 153653k
    Pre-IPA-Leak: 82441k -> 82464k
    Pre-IPA-Overhead: 17038k -> 17038k
    Post-IPA-Garbage: 153548k -> 153653k
    Post-IPA-Leak: 82441k -> 82464k
    Post-IPA-Overhead: 17038k -> 17038k

comparing PR rtl-optimization/28071 testcase compilation at -O0 level:
    Overall memory needed: 380306k -> 380308k
    Peak memory use before GGC: 100912k
    Peak memory use after GGC: 56565k
    Maximum of released memory in single GGC run: 50582k
    Garbage: 178579k
    Leak: 6281k
    Overhead: 30603k
    GGC runs: 94
    Pre-IPA-Garbage: 12151k
    Pre-IPA-Leak: 16544k
    Pre-IPA-Overhead: 1718k
    Post-IPA-Garbage: 12151k
    Post-IPA-Leak: 16544k
    Post-IPA-Overhead: 1718k

comparing PR rtl-optimization/28071 testcase compilation at -O0 -g level:
    Overall memory needed: 381530k -> 381528k
    Peak memory use before GGC: 101611k
    Peak memory use after GGC: 57264k
    Maximum of released memory in single GGC run: 50583k
    Garbage: 178697k
    Leak: 8326k
    Overhead: 31188k
    GGC runs: 103
    Pre-IPA-Garbage: 12159k
    Pre-IPA-Leak: 16793k
    Pre-IPA-Overhead: 1772k
    Post-IPA-Garbage: 12159k
    Post-IPA-Leak: 16793k
    Post-IPA-Overhead: 1772k

comparing PR rtl-optimization/28071 testcase compilation at -O1 level:
    Overall memory needed: 390947k -> 390828k
    Peak memory use before GGC: 75658k
    Peak memory use after GGC: 67602k
    Maximum of released memory in single GGC run: 35732k -> 35733k
    Garbage: 244882k -> 244892k
    Leak: 7901k
    Overhead: 31118k -> 31119k
    GGC runs: 105
    Pre-IPA-Garbage: 49697k
    Pre-IPA-Leak: 63722k -> 63723k
    Pre-IPA-Overhead: 6705k
    Post-IPA-Garbage: 49697k
    Post-IPA-Leak: 63722k -> 63723k
    Post-IPA-Overhead: 6705k

comparing PR rtl-optimization/28071 testcase compilation at -O2 level:
    Overall memory needed: 303195k -> 303196k
    Peak memory use before GGC: 75658k -> 75659k
    Peak memory use after GGC: 67602k -> 67603k
    Maximum of released memory in single GGC run: 32489k
    Garbage: 259020k -> 259035k
    Leak: 8064k
    Overhead: 34163k -> 34164k
    GGC runs: 116
    Pre-IPA-Garbage: 107693k
    Pre-IPA-Leak: 75545k -> 75546k
    Pre-IPA-Overhead: 10956k
    Post-IPA-Garbage: 107693k
    Post-IPA-Leak: 75545k -> 75546k
    Post-IPA-Overhead: 10956k

comparing PR rtl-optimization/28071 testcase compilation at -O3 -fno-tree-pre -fno-tree-fre level:
    Overall memory needed: 1070511k -> 1070552k
    Peak memory use before GGC: 142484k
    Peak memory use after GGC: 129139k -> 129140k
    Maximum of released memory in single GGC run: 59672k -> 59679k
    Garbage: 356520k -> 356529k
    Leak: 11044k
    Overhead: 38243k -> 38244k
    GGC runs: 101
    Pre-IPA-Garbage: 107693k
    Pre-IPA-Leak: 75545k -> 75546k
    Pre-IPA-Overhead: 10956k
    Post-IPA-Garbage: 107693k
    Post-IPA-Leak: 75545k -> 75546k
    Post-IPA-Overhead: 10956k

Head of the ChangeLog is:

--- /usr/src/SpecTests/sandbox-britten-memory/x86_64/mem-result/ChangeLog	2008-06-28 09:30:12.000000000 +0000
+++ /usr/src/SpecTests/sandbox-britten-memory/gcc/gcc/ChangeLog	2008-06-28 13:53:38.000000000 +0000
@@ -1,3 +1,45 @@
+2008-06-28  Richard Guenther  <rguenther@suse.de>
+
+	* tree-ssa-structalias.c (callused_id, var_callused,
+	callused_tree): Add.
+	(handle_pure_call): New function.
+	(find_func_aliases): Call it.
+	(find_what_p_points_to): Handle the call-used set.
+	(clobber_what_escaped): Likewise.
+	(compute_call_used_vars): New function.
+	(init_base_vars): Init the call-used variable.
+	(do_sd_constraint): Do not propagate the solution from CALLUSED
+	but use CALLUSED as a placeholder.
+	(solve_graph): Likewise.
+	* tree-flow-inline.h (gimple_call_used_vars): New function.
+	* tree-flow.h (struct gimple_df): Add call_used_vars bitmap.
+	(compute_call_used_vars): Declare.
+	* tree-ssa-alias.c (set_initial_properties): Call
+	compute_call_used_vars.
+	(reset_alias_info): Clear call-used variables.
+	(add_call_clobber_ops): Assert we are not called for const/pure
+	functions.  Remove handling of them.
+	(add_call_read_ops): Handle pure functions by adding the
+	call-used set of variables as VUSEs.
+	* tree-ssa.c (init_tree_ssa): Allocate call-used bitmap.
+	(delete_tree_ssa): Free it.
+	* tree-dfa.c (remove_referenced_var): Clear the var from the
+	call-used bitmap.
+
+2008-06-28  Kai Tietz  <kai.tietz@onevision.com>
+
+	* tree.c (build_varargs_function_type_list): New.
+	(build_function_type_list_1): New.
+	(build_function_type_list): Use build_function_type_list_1.
+	* tree.h (build_varargs_function_type_list): New.
+
+2008-06-28  Ulrich Weigand  <Ulrich.Weigand@de.ibm.com>
+
+	PR target/34856
+	* config/spu/spu.c (spu_builtin_splats): Do not generate
+	invalid CONST_VECTOR expressions.
+	(spu_expand_vector_init): Likewise.
+
 2008-06-28  Richard Sandiford  <rdsandiford@googlemail.com>
 
 	* optabs.c (libfunc_decls): New variable.


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]