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, gcc-regression at gcc dot gnu dot org
- Date: Sat, 28 Jun 2008 17:44:36 +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: 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.