A recent patch increased GCC's memory consumption in some cases!

gcctest@suse.de gcctest@suse.de
Wed Oct 25 21:59:00 GMT 2006


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 combine.c compilation at -O0 level:
  Overall memory allocated via mmap and sbrk increased from 24797k to 27995k, overall 12.90%
  Peak amount of GGC memory allocated before garbage collecting increased from 8929k to 8995k, overall 0.74%
  Peak amount of GGC memory still allocated after garbage collectin increased from 8558k to 8623k, overall 0.76%
  Amount of produced GGC garbage increased from 34878k to 34914k, overall 0.10%
  Amount of memory still referenced at the end of compilation increased from 6073k to 6148k, overall 1.25%
    Overall memory needed: 24797k -> 27995k
    Peak memory use before GGC: 8929k -> 8995k
    Peak memory use after GGC: 8558k -> 8623k
    Maximum of released memory in single GGC run: 2576k
    Garbage: 34878k -> 34914k
    Leak: 6073k -> 6148k
    Overhead: 4715k -> 4741k
    GGC runs: 294 -> 288

comparing combine.c compilation at -O1 level:
  Overall memory allocated via mmap and sbrk increased from 36237k to 39431k, overall 8.81%
  Peak amount of GGC memory allocated before garbage collecting increased from 16999k to 17071k, overall 0.42%
  Peak amount of GGC memory still allocated after garbage collectin increased from 16830k to 16897k, overall 0.40%
  Amount of memory still referenced at the end of compilation increased from 6151k to 6205k, overall 0.88%
    Overall memory needed: 36237k -> 39431k
    Peak memory use before GGC: 16999k -> 17071k
    Peak memory use after GGC: 16830k -> 16897k
    Maximum of released memory in single GGC run: 2342k -> 2263k
    Garbage: 55748k -> 55201k
    Leak: 6151k -> 6205k
    Overhead: 6045k -> 6028k
    GGC runs: 369 -> 364

comparing combine.c compilation at -O2 level:
  Overall memory allocated via mmap and sbrk increased from 26496k to 29562k, overall 11.57%
  Peak amount of GGC memory allocated before garbage collecting increased from 16999k to 17066k, overall 0.39%
  Peak amount of GGC memory still allocated after garbage collectin increased from 16830k to 16897k, overall 0.40%
  Amount of memory still referenced at the end of compilation increased from 6252k to 6313k, overall 0.98%
    Overall memory needed: 26496k -> 29562k
    Peak memory use before GGC: 16999k -> 17066k
    Peak memory use after GGC: 16830k -> 16897k
    Maximum of released memory in single GGC run: 2884k -> 2914k
    Garbage: 76521k -> 75631k
    Leak: 6252k -> 6313k
    Overhead: 8785k -> 8823k
    GGC runs: 443 -> 433

comparing combine.c compilation at -O3 level:
  Overall memory allocated via mmap and sbrk increased from 25596k to 28666k, overall 11.99%
  Peak amount of GGC memory allocated before garbage collecting increased from 17988k to 18072k, overall 0.47%
  Peak amount of GGC memory still allocated after garbage collectin increased from 17536k to 17628k, overall 0.52%
  Amount of memory still referenced at the end of compilation increased from 6317k to 6379k, overall 0.97%
    Overall memory needed: 25596k -> 28666k
    Peak memory use before GGC: 17988k -> 18072k
    Peak memory use after GGC: 17536k -> 17628k
    Maximum of released memory in single GGC run: 4130k -> 4036k
    Garbage: 107354k -> 106091k
    Leak: 6317k -> 6379k
    Overhead: 12408k -> 12439k
    GGC runs: 490 -> 481

comparing insn-attrtab.c compilation at -O0 level:
  Overall memory allocated via mmap and sbrk increased from 83700k to 86762k, overall 3.66%
  Peak amount of GGC memory still allocated after garbage collectin increased from 43913k to 43978k, overall 0.15%
  Amount of memory still referenced at the end of compilation increased from 9117k to 9208k, overall 1.01%
    Overall memory needed: 83700k -> 86762k
    Peak memory use before GGC: 68247k -> 68313k
    Peak memory use after GGC: 43913k -> 43978k
    Maximum of released memory in single GGC run: 35708k
    Garbage: 125964k -> 125948k
    Leak: 9117k -> 9208k
    Overhead: 16830k -> 16847k
    GGC runs: 231 -> 229

comparing insn-attrtab.c compilation at -O1 level:
  Ovarall memory allocated via mmap and sbrk decreased from 118444k to 113814k, overall -4.07%
  Peak amount of GGC memory allocated before garbage collecting run decreased from 94551k to 89637k, overall -5.48%
  Peak amount of GGC memory still allocated after garbage collecting decreased from 90403k to 83012k, overall -8.90%
  Amount of produced GGC garbage decreased from 289427k to 272769k, overall -6.11%
  Amount of memory still referenced at the end of compilation increased from 8977k to 9051k, overall 0.83%
    Overall memory needed: 118444k -> 113814k
    Peak memory use before GGC: 94551k -> 89637k
    Peak memory use after GGC: 90403k -> 83012k
    Maximum of released memory in single GGC run: 31807k -> 31805k
    Garbage: 289427k -> 272769k
    Leak: 8977k -> 9051k
    Overhead: 29408k -> 29309k
    GGC runs: 240 -> 231

comparing insn-attrtab.c compilation at -O2 level:
  Peak amount of GGC memory allocated before garbage collecting run decreased from 95237k to 91914k, overall -3.62%
  Peak amount of GGC memory still allocated after garbage collecting decreased from 90625k to 84018k, overall -7.86%
  Amount of produced GGC garbage decreased from 328157k to 315751k, overall -3.93%
  Amount of memory still referenced at the end of compilation increased from 8982k to 9051k, overall 0.77%
    Overall memory needed: 114404k -> 112046k
    Peak memory use before GGC: 95237k -> 91914k
    Peak memory use after GGC: 90625k -> 84018k
    Maximum of released memory in single GGC run: 30386k -> 30368k
    Garbage: 328157k -> 315751k
    Leak: 8982k -> 9051k
    Overhead: 36436k -> 36637k
    GGC runs: 269 -> 257

comparing insn-attrtab.c compilation at -O3 level:
  Peak amount of GGC memory allocated before garbage collecting run decreased from 95263k to 91940k, overall -3.61%
  Peak amount of GGC memory still allocated after garbage collecting decreased from 90651k to 84044k, overall -7.86%
  Amount of produced GGC garbage decreased from 328738k to 316348k, overall -3.92%
  Amount of memory still referenced at the end of compilation increased from 8984k to 9055k, overall 0.79%
    Overall memory needed: 114436k -> 112090k
    Peak memory use before GGC: 95263k -> 91940k
    Peak memory use after GGC: 90651k -> 84044k
    Maximum of released memory in single GGC run: 30582k -> 30557k
    Garbage: 328738k -> 316348k
    Leak: 8984k -> 9055k
    Overhead: 36612k -> 36825k
    GGC runs: 271 -> 260

comparing Gerald's testcase PR8361 compilation at -O0 level:
  Overall memory allocated via mmap and sbrk increased from 116568k to 119602k, overall 2.60%
  Amount of produced GGC garbage increased from 200877k to 201237k, overall 0.18%
  Amount of memory still referenced at the end of compilation increased from 47326k to 47385k, overall 0.13%
    Overall memory needed: 116568k -> 119602k
    Peak memory use before GGC: 92731k -> 92767k
    Peak memory use after GGC: 91812k -> 91845k
    Maximum of released memory in single GGC run: 19778k -> 19781k
    Garbage: 200877k -> 201237k
    Leak: 47326k -> 47385k
    Overhead: 20503k -> 20702k
    GGC runs: 399

comparing Gerald's testcase PR8361 compilation at -O1 level:
  Overall memory allocated via mmap and sbrk increased from 115728k to 118730k, overall 2.59%
    Overall memory needed: 115728k -> 118730k
    Peak memory use before GGC: 97572k -> 97606k
    Peak memory use after GGC: 95362k -> 95397k
    Maximum of released memory in single GGC run: 18425k
    Garbage: 436946k -> 436478k
    Leak: 49793k -> 49718k
    Overhead: 32048k -> 32018k
    GGC runs: 546 -> 544

comparing Gerald's testcase PR8361 compilation at -O2 level:
  Overall memory allocated via mmap and sbrk increased from 115708k to 118726k, overall 2.61%
    Overall memory needed: 115708k -> 118726k
    Peak memory use before GGC: 97573k -> 97607k
    Peak memory use after GGC: 95363k -> 95397k
    Maximum of released memory in single GGC run: 18424k -> 18425k
    Garbage: 505402k -> 503504k
    Leak: 50510k -> 50435k
    Overhead: 40543k -> 40529k
    GGC runs: 616 -> 609

comparing Gerald's testcase PR8361 compilation at -O3 level:
  Overall memory allocated via mmap and sbrk increased from 115648k to 118614k, overall 2.56%
    Overall memory needed: 115648k -> 118614k
    Peak memory use before GGC: 97616k -> 97649k
    Peak memory use after GGC: 96649k -> 96682k
    Maximum of released memory in single GGC run: 18845k -> 18846k
    Garbage: 523573k -> 521894k
    Leak: 50058k -> 50011k
    Overhead: 41001k -> 40926k
    GGC runs: 624 -> 617

comparing PR rtl-optimization/28071 testcase compilation at -O0 level:
  Overall memory allocated via mmap and sbrk increased from 133788k to 137230k, overall 2.57%
  Peak amount of GGC memory still allocated after garbage collectin increased from 58503k to 58569k, overall 0.11%
  Amount of memory still referenced at the end of compilation increased from 7138k to 7230k, overall 1.29%
    Overall memory needed: 133788k -> 137230k
    Peak memory use before GGC: 81623k -> 81689k
    Peak memory use after GGC: 58503k -> 58569k
    Maximum of released memory in single GGC run: 45494k -> 45493k
    Garbage: 143586k -> 143528k
    Leak: 7138k -> 7230k
    Overhead: 25104k -> 25109k
    GGC runs: 87 -> 86

comparing PR rtl-optimization/28071 testcase compilation at -O1 level:
  Amount of memory still referenced at the end of compilation increased from 47214k to 47295k, overall 0.17%
    Overall memory needed: 420900k -> 426118k
    Peak memory use before GGC: 203238k -> 203262k
    Peak memory use after GGC: 199035k -> 199038k
    Maximum of released memory in single GGC run: 100858k -> 100820k
    Garbage: 265252k -> 265068k
    Leak: 47214k -> 47295k
    Overhead: 30028k -> 30042k
    GGC runs: 106 -> 105

comparing PR rtl-optimization/28071 testcase compilation at -O2 level:
  Amount of memory still referenced at the end of compilation increased from 47798k to 47879k, overall 0.17%
    Overall memory needed: 347040k -> 350238k
    Peak memory use before GGC: 203993k -> 204017k
    Peak memory use after GGC: 199791k -> 199793k
    Maximum of released memory in single GGC run: 107135k -> 107098k
    Garbage: 354765k -> 354578k
    Leak: 47798k -> 47879k
    Overhead: 47629k -> 47643k
    GGC runs: 113 -> 112

comparing PR rtl-optimization/28071 testcase compilation at -O3 -fno-tree-pre -fno-tree-fre level:
  Amount of memory still referenced at the end of compilation increased from 65130k to 65211k, overall 0.12%
    Overall memory needed: 533168k -> 536130k
    Peak memory use before GGC: 314706k -> 314709k
    Peak memory use after GGC: 293028k -> 293052k
    Maximum of released memory in single GGC run: 163494k -> 163452k
    Garbage: 487556k -> 487537k
    Leak: 65130k -> 65211k
    Overhead: 58865k -> 58900k
    GGC runs: 100 -> 99

Head of the ChangeLog is:

--- /usr/src/SpecTests/sandbox-britten-memory/x86_64/mem-result/ChangeLog	2006-10-21 08:52:15.000000000 +0000
+++ /usr/src/SpecTests/sandbox-britten-memory/gcc/gcc/ChangeLog	2006-10-25 17:08:58.000000000 +0000
@@ -1,3 +1,479 @@
+2006-10-25  Bob Wilson  <bob.wilson@acm.org>
+
+	* config/xtensa/lib2funcs.S: Use C-style comments.
+
+2006-10-24  Nathan Froyd  <froydnj@codesourcery.com>
+
+        * dwarf2out.c (gen_compile_unit_die): Use IS_ABSOLUTE_PATH.
+        (file_table_relative_p): Likewise.
+        (dwarf2out_finish): Likewise.
+        (file_name_acquire): Use DIR_SEPARATOR and DIR_SEPARATOR_2.
+
+2006-10-25  Daniel Berlin  <dberlin@dberlin.org>
+
+	* tree-ssa-structalias.c (intra_create_variable_infos):
+	  Don't recreate nonlocal_all if it already exists.
+
+2006-10-25  Richard Guenther  <rguenther@suse.de>
+
+	PR target/28803
+	* optabs.h (enum optab_index): Remove OTI_lrint.
+	(enum convert_optab_index): Add COI_lrint.
+	(lrint_optab): Adjust.
+	(expand_sfix_optab): Declare.
+	* optabs.c (expand_sfix_optab): New function.
+	(init_optabs): Init lrint_optab as conversion optab.
+	* genopinit.c (lrint_optab): Change to a conversion optab.
+	* builtins.c (expand_builtin_int_roundingfn_2): Adjust to
+	expansion via conversion optab.
+	* config/i386/i386.md (*fistdi2_1): Remove
+	flag_unsafe_math_optimizations guard.
+	(fistdi2, fistdi2_with_temp, *fist<mode>2_1, fist<mode>2,
+	fist<mode>2_with_temp): Likewise.
+	(lrint<mode>2): Split into...
+	(lrintxf<mode>2): ... x87 part
+	(lrint<mode>di2, lrint<mode>si2): ... and SSE parts.
+	* config/i386/sse.md (sse_cvtss2si_2, sse_cvtss2_siq_2,
+	sse2_cvtsd2si_2, sse2_cvtsd2siq_2): New insns for
+	UNSPEC_FIX_NOTRUNC matching non-vector float modes.
+	* doc/md.texi (lrintMN2): Document.
+
+2006-10-25  Uros Bizjak  <uros@kss-loka.si>
+
+	PR target/28909
+	* config/i386/sync.md ("sync_add<mode>", "sync_sub<mode>"):
+	Use inc and dec instructions for TARGET_USE_INCDEC.
+	("*sync_compare_and_swap<mode>"): Fix -masm=intel template.
+	("sync_double_compare_and_swap<mode>"): Likewise.
+	("*sync_double_compare_and_swapdi_pic"): Likewise.
+	("*sync_compare_and_swap_cc<mode>"): Likewise.
+	("sync_double_compare_and_swap_cc<mode>"): Likewise.
+	("*sync_double_compare_and_swap_ccdi_pic"): Likewise.
+	("sync_old_add<mode>"): Likewise.
+	("sync_lock_test_and_set<mode>"): Likewise.
+	("sync_lock_test_and_set<mode>"): Likewise.
+	("sync_add<mode>"): Likewise.
+	("sync_sub<mode>"): Likewise.
+	("sync_ior<mode>"): Likewise.
+	("sync_and<mode>"): Likewise.
+	("sync_xor<mode>"): Likewise.
+
+2006-10-25  Uros Bizjak  <uros@kss-loka.si>
+
+	* optabs.h (enum optab_index): Rename OTI_drem to OTI_remainder.
+	(remainder_optab): Define corresponding macro.
+	(drem_optab): Remove.
+	* optabs.c (init_optabs): Initialize remainder_optab.  Remove
+	drem_optab initialization.
+	* genopinit.c (optabs): Implement remainder_optab using
+	remainder?f3 patterns.  Remove drem_optab.
+	* builtins.c (expand_builtin_mathfn_2): Handle
+	BUILT_IN_REMAINDER{,F,L} using remainder_optab.
+	(expand_builtin): Expand BUILT_IN_REMAINDER{,F,L} using
+	expand_builtin_mathfn_2.
+
+	(expand_builtin) [BUILT_IN_FMOD, BUILT_IN_DREM]: Do not
+	depend on flag_unsafe_math_optimizations.
+
+	* config/i386/i386.md ("remaindersf3", "remainderdf3")
+	("remainderxf3"): Renamed from "drem{s,d,x}f3" expanders.
+	Do not depend on flag_unsafe_math_optimizations.  Use
+	truncxf?f expander instead of truncxf?f_i387_noop.
+
+	("fpremxf4", "fprem1xf4"): Do not depend on
+	flag_unsafe_math_optimizations.
+	("fmodsf3", "fmoddf3", "fmodxf3"): Do not depend on
+	flag_unsafe_math_optimizations.  Use truncxf?f expander
+	instead of truncxf?f_i387_noop.
+
+	* doc/md.texi (fmod, remainder): Document standard named pattern.
+
+2006-10-24  Richard Sandiford  <richard@codesourcery.com>
+	    David Daney  <ddaney@avtrex.com>
+
+	PR middle-end/29519
+	* rtlanal.c (nonzero_address_p):  Remove check for values wrapping.
+
+2006-10-25  Ben Elliston  <bje@au.ibm.com>
+
+	* doc/extend.texi (Variable Attributes): Typo fix.
+
+2006-10-24  Uros Bizjak  <uros@kss-loka.si>
+
+	* config/i386/i386.h (FIRST_PSEUDO_REGISTER): Define to 54.
+	(FIXED_REGISTERS, CALL_USED_REGISTERS): Add fpcr register.
+	(REG_ALLOC_ORDER): Add one element to allocate fpcr register.
+	(FRAME_POINTER_REGNUM): Update register number to 21.
+	(REG_CLASS_CONTENTS): Update contents for added fpcr register.
+	(HI_REGISTER_NAMES): Add "fpcr" for fpcr register.
+
+	* config/i386/i386.c (regclass_map): Add fpcr entry.
+	(dbx_register_map, dbx64_register_map, svr4_dbx_register_map):
+	Add fpcr entry.
+	(print_reg): Assert REGNO (x) != FPCR_REG.
+
+	* config/i386/i386.md (FPCR_REG, R11_REG): New constants.
+	(DIRFLAG_REG): Renumber.
+	(x86_fnstcw_1, x86_fldcw_1): Use FPCR_REG instead of FPSR_REG.
+	(*sibcall_1_rex64_v, *sibcall_value_1_rex64_v): Use R11_REG.
+	(sse_prologue_save, *sse_prologue_save_insn): Renumber
+	hardcoded SSE register numbers.
+
+	* config/i386/mmx.md (mmx_emms, mmx_femms): Renumber
+	hardcoded MMX register numbers.
+
+2006-10-24  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
+
+	PR middle-end/29335
+	* builtins.c (fold_builtin_sin, fold_builtin_atan): Remove.
+	(do_mpfr_arg1): Add `min', `max' and `inclusive' arguments.
+	Update all callers.
+	(BUILT_IN_SIN, BUILT_IN_ATAN): Handle in main switch.
+	(BUILT_IN_ASIN, BUILT_IN_ACOS, BUILT_IN_ATAN, BUILT_IN_ASINH,
+	BUILT_IN_ACOSH, BUILT_IN_ATANH, BUILT_IN_SINH, BUILT_IN_COSH,
+	BUILT_IN_TANH): Calculate compile-time arguments using MPFR.
+
+2006-10-24  Richard Guenther  <rguenther@suse.de>
+
+	PR middle-end/28796
+	* builtins.c (fold_builtin_classify): Use HONOR_INFINITIES
+	and HONOR_NANS instead of MODE_HAS_INFINITIES and MODE_HAS_NANS
+	for deciding optimizations in consistency with fold-const.c
+	(fold_builtin_unordered_cmp): Likewise.
+
+2006-10-24  Richard Guenther  <rguenther@suse.de>
+
+	* builtins.c (fold_builtin_floor): Fold floor (x) where
+	x is nonnegative to trunc (x).
+	(fold_builtin_int_roundingfn): Fold lfloor (x) where x is
+	nonnegative to FIX_TRUNC_EXPR.
+
+2006-10-24  Richard Guenther  <rguenther@suse.de>
+
+	PR tree-optimization/29567
+	* tree-vrp.c (register_edge_assert_for_1): Fix wrong logic
+	for TRUTH_NOT_EXPR.  Clarify comments.
+
+2006-10-24  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
+
+	PR middle-end/29335
+	* builtins.c (fold_builtin_exponent): Evaluate constant arguments
+	at compile-time using MPFR.  Change parameter VALUE to FUNC,
+	update all callers.
+	(do_mpfr_arg1): Rename `exact' to `inexact'.  Carefully check
+	for overflow and underflow at all times and avoid folding in
+	those cases.
+
+2006-10-24  Ben Elliston  <bje@au.ibm.com>
+
+	* reload1.c: Formatting fixes.
+
+2006-10-23  Zdenek Dvorak <dvorakz@suse.cz>
+
+	PR tree-optimization/14784
+	* tree-flow.h (struct var_ann_d): Add is_heapvar bit.
+	* tree-ssa-structalias.c (get_constraint_for,
+	intra_create_variable_infos): Set is_heapvar.
+	* tree-ssa-operands.c (access_can_touch_variable): Do not handle
+	non-heapvar pointer variables specially.
+
+2006-10-23  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
+
+	PR middle-end/29335
+	* builtins.c (fold_builtin_sin, fold_builtin_cos,
+	fold_builtin_tan): Fold all constant arguments.  Take a "type"
+	argument as necessary.
+	(do_mpfr_arg1): New.
+	* real.c, real.h (real_from_mpfr, mpfr_from_real): New.
+
+2006-10-23  Bob Wilson  <bob.wilson@acm.org>
+
+	* config/xtensa/lib1funcs.asm: Use C-style comments.
+
+2006-10-23 Rafael Avila de Espindola  <rafael.espindola@gmail.com>
+
+	* tree.c (local_define_builtin): Replace calls to
+	lang_hooks.builtin_function with add_builtin_function.
+	* c-objc-common.h (LANG_HOOKS_BUILTIN_FUNCTION): Define as
+	c_builtin_function.
+	* c-tree.h (builtin_function): Rename to c_builtin_function. Change
+	the signature.
+	* c-decl.c (builtin_function): Rename to c_builtin_function. Move
+	common code to add_builtin_function.
+	* langhooks.c (add_builtin_function): New function.
+	(lhd_builtin_function): New function.
+	* langhooks.h (struct lang_hooks): Change the signature of
+	builtin_function.
+	(add_builtin_function): New function.
+	* tree-ssa-loop-prefetch.c (tree_ssa_prefetch_arrays): Replace
+	calls to lang_hooks.builtin_function with add_builtin_function.
+	* c-common.c (decl_builtin_1): Replace calls to
+	lang_hooks.builtin_function with add_builtin_function.
+	* config/alpha/alpha.c (alpha_init_builtins): Replace calls to
+	lang_hooks.builtin_function with add_builtin_function.
+	* config/frv/frv.c (def_builtin): Replace calls to
+	lang_hooks.builtin_function with add_builtin_function.
+	* config/s390/s390.c (s390_init_builtins): Replace calls to
+	lang_hooks.builtin_function with add_builtin_function.
+	* config/sparc/sparc.c (def_builtin): Replace calls to
+	lang_hooks.builtin_function with add_builtin_function.
+	* config/i386/i386.c (def_builtin): Replace calls to
+	lang_hooks.builtin_function with add_builtin_function.
+	* config/sh/sh.c (sh_media_init_builtins): Replace calls to
+	lang_hooks.builtin_function with add_builtin_function.
+	* config/c4x/c4x.c (c4x_init_builtins): Replace calls to
+	lang_hooks.builtin_function with add_builtin_function.
+	* config/stormy16/stormy16.c (xstormy16_init_builtins):
+	Replace calls to lang_hooks.builtin_function with
+	add_builtin_function.
+	* config/iq2000/iq2000.c (def_builtin):
+	Replace calls to lang_hooks.builtin_function with
+	add_builtin_function.
+	* config/ia64/ia64.c (def_builtin): Replace calls to
+	lang_hooks.builtin_function with add_builtin_function.
+	* config/rs6000/rs6000.c (def_builtin): Replace calls to
+	lang_hooks.builtin_function with add_builtin_function.
+	(altivec_init_builtins): Replace calls to
+	lang_hooks.builtin_function with add_builtin_function.
+	* config/arm/arm.c (def_mbuiltin): Replace calls to
+	lang_hooks.builtin_function with add_builtin_function.
+	(arm_init_tls_builtins): Replace calls to
+	lang_hooks.builtin_function with add_builtin_function.
+	* config/mips/mips.c (mips_init_builtins): Replace calls to
+	lang_hooks.builtin_function with add_builtin_function.
+	* config/bfin/bfin.c (def_builtin): Replace calls to
+	lang_hooks.builtin_function with add_builtin_function.
+	* langhooks-def.h (lhd_builtin_function): New function.
+	(LANG_HOOKS_BUILTIN_FUNCTION): Define as lhd_builtin_function.
+
+2006-10-23  Jakub Jelinek  <jakub@redhat.com>
+
+	* builtins.c (expand_builtin, maybe_emit_chk_warning): Handle
+	BUILT_IN_STRNCAT_CHK.
+
+2006-10-23  Jan Hubicka  <jh@suse.cz>
+
+	* builtins.c (expand_builtin_memmove): Remove ORIG_EXP argument;
+	don't do conversion from memmove to memcpy here.
+	(expand_builtin_bcopy, expand_builtin): Update call of
+	expand_builtin_memmove.
+	(fold_builtin_memory_op): Do folding of memmove to memcpy here.
+
+2006-10-23  Paul Brook  <paul@codesourcery.com>
+
+	* stor-layout.c (start_record_layout): maximum_field_alignment
+	overrides STRUCTURE_SIZE_BOUNDARY.
+
+2006-10-23  Ulrich Weigand  <uweigand@de.ibm.com>
+
+	* config/s390/predicates.md ("bras_sym_operand"): Do not accept
+	nonlocal function symbols if flag_pic.
+
+2006-10-23  Richard Guenther  <rguenther@suse.de>
+
+	PR middle-end/27132
+	PR middle-end/23295
+	* builtins.c (fold_binary): Remove checks for flag_wrapv
+	and flag_trapv where negate_expr_p covers these cases.
+
+2006-10-23  Richard Guenther  <rguenther@suse.de>
+
+	PR middle-end/29548
+	* fold-const.c (fold_plusminus_mult_expr): Check exact power
+	of two on the absolute value.
+	(fold_binary): Fold x * -C to -x * C if x is easily negatable
+	and negating -C does not overflow.
+
+2006-10-23  Richard Guenther  <rguenther@suse.de>
+
+	PR middle-end/21032
+	* convert.c (convert_to_real): Fold (float)-x to -(float)x
+	only if not flag_rounding_math.
+
+2006-10-22  Richard Sandiford  <richard@codesourcery.com>
+	    Kaz Kojima  <kkojima@gcc.gnu.org>
+
+	PR target/28232
+	* config/sh/sh.c (expand_block_move): Use a BLKmode rather than
+	SImode memory reference for the source of a movua.
+	* config/sh/sh.md (UNSPEC_MOVUA): New macro.
+	(movua): Use an unspec instead of sign_extract.  Expect the source
+	to have mode BLKmode.
+	(extv, insv): Use a BLKmode rather than SImode memory reference
+	for the source of a movua.
+
+2006-10-22  Jeff Law  <law@redhat.com>
+	Richard Guenther  <rguenther@suse.de>
+
+	PR tree-optimization/15911
+	* tree-vrp.c (extract_code_and_val_from_cond): New function.
+	(register_edge_assert_for_1): Likewise.
+	(register_edge_assert_for): Handle &&/&/||/| in conditionals.
+	(find_conditional_asserts): Adjust for new function signature.
+	(find_assert_locations): Likewise.
+
+2006-10-22  H.J. Lu  <hongjiu.lu@intel.com>
+
+	* config/i386/tmmintrin.h: Remove the duplicated content.
+
+2006-10-22  H.J. Lu  <hongjiu.lu@intel.com>
+
+	* config.gcc (i[34567]86-*-*): Add tmmintrin.h to extra_headers.
+	(x86_64-*-*): Likewise.
+
+	* config/i386/i386.c (pta_flags): Add PTA_SSSE3.
+	(override_options): Check SSSE3.
+	(ix86_builtins): Add IX86_BUILTIN_PHADDW, IX86_BUILTIN_PHADDD,
+	IX86_BUILTIN_PHADDSW, IX86_BUILTIN_PHSUBW, IX86_BUILTIN_PHSUBD,
+	IX86_BUILTIN_PHSUBSW, IX86_BUILTIN_PMADDUBSW,
+	IX86_BUILTIN_PMULHRSW, IX86_BUILTIN_PSHUFB,
+	IX86_BUILTIN_PSIGNB, IX86_BUILTIN_PSIGNW, IX86_BUILTIN_PSIGND,
+	IX86_BUILTIN_PALIGNR, IX86_BUILTIN_PABSB, IX86_BUILTIN_PABSW,
+	IX86_BUILTIN_PABSD, IX86_BUILTIN_PHADDW128,
+	IX86_BUILTIN_PHADDD128, IX86_BUILTIN_PHADDSW128,
+	IX86_BUILTIN_PHSUBW128, IX86_BUILTIN_PHSUBD128,
+	IX86_BUILTIN_PHSUBSW128, IX86_BUILTIN_PMADDUBSW128,
+	IX86_BUILTIN_PMULHRSW128, IX86_BUILTIN_PSHUFB128,
+	IX86_BUILTIN_PSIGNB128, IX86_BUILTIN_PSIGNW128,
+	IX86_BUILTIN_PSIGND128, IX86_BUILTIN_PALIGNR128,
+	IX86_BUILTIN_PABSB128, IX86_BUILTIN_PABSW128 and
+	IX86_BUILTIN_PABSD128.
+	(bdesc_2arg): Add SSSE3.
+	(bdesc_1arg): Likewise.
+	(ix86_init_mmx_sse_builtins): Support SSSE3.
+	(ix86_expand_builtin): Likewise.
+	* config/i386/i386.h (TARGET_CPU_CPP_BUILTINS): Likewise.
+
+	* config/i386/i386.md (UNSPEC_PSHUFB): New.
+	(UNSPEC_PSIGN): Likewise.
+	(UNSPEC_PALIGNR): Likewise.
+	Include mmx.md before sse.md.
+
+	* config/i386/i386.opt: Add -mssse3.
+
+	* config/i386/sse.md (ssse3_phaddwv8hi3): New pattern for SSSE3.
+	(ssse3_phaddwv4hi3): Likewise.
+	(ssse3_phadddv4si3): Likewise.
+	(ssse3_phadddv2si3): Likewise.
+	(ssse3_phaddswv8hi3): Likewise.
+	(ssse3_phaddswv4hi3): Likewise.
+	(ssse3_phsubwv8hi3): Likewise.
+	(ssse3_phsubwv4hi3): Likewise.
+	(ssse3_phsubdv4si3): Likewise.
+	(ssse3_phsubdv2si3): Likewise.
+	(ssse3_phsubswv8hi3): Likewise.
+	(ssse3_phsubswv4hi3): Likewise.
+	(ssse3_pmaddubswv8hi3): Likewise.
+	(ssse3_pmaddubswv4hi3): Likewise.
+	(ssse3_pmulhrswv8hi3): Likewise.
+	(ssse3_pmulhrswv4hi3): Likewise.
+	(ssse3_pshufbv16qi3): Likewise.
+	(ssse3_pshufbv8qi3): Likewise.
+	(ssse3_psign<mode>3): Likewise.
+	(ssse3_psign<mode>3): Likewise.
+	(ssse3_palignrti): Likewise.
+	(ssse3_palignrdi): Likewise.
+	(abs<mode>2): Likewise.
+	(abs<mode>2): Likewise.
+
+	* config/i386/tmmintrin.h: New file.
+
+	* doc/extend.texi: Document SSSE3 built-in functions.
+
+	* doc/invoke.texi: Document -mssse3/-mno-ssse3 switches.
+
+2006-10-22  Ira Rosen  <irar@il.ibm.com>
+
+        * tree-vect-transform.c (vectorizable_load): Use the type of the
+        return value of the mask_for_load builtin to create realign_load
+        stmt.
+
+2006-10-22  Richard Sandiford  <richard@codesourcery.com>
+
+	* config/mips/mips.c (mips_split_const): Don't accept bare PLUS
+	expressions.
+
+2006-10-21  H.J. Lu  <hongjiu.lu@intel.com>
+
+	* config/i386/i386.md (UNSPEC_LDQQU): Renamed to ...
+	(UNSPEC_LDDQU): This.
+	* config/i386/sse.md (sse3_lddqu): Updated.
+
+2006-10-21  Richard Guenther  <rguenther@suse.de>
+
+	* builtins.c (expand_builtin_int_roundingfn_2): New function.
+	(expand_builtin): Use it to expand lrint instead of
+	expand_builtin_mathfn.
+
+2006-10-21  Uros Bizjak  <uros@kss-loka.si>
+
+	PR middle-end/28252
+	* builtins.c (fold_builtin): Fold pow(x,1.0/3.0) as cbrt(x) if
+	flag_unsafe_math_optimizations is set.
+
+2006-10-21  Uros Bizjak  <uros@kss-loka.si>
+
+	PR target/19398
+	* config/i386/i386.md (fix_trunc?f?i_sse): Add peephole2
+	patterns to use memory input operand in x87->mem->XMM
+	reload sequences.  Skip transformation for TARGET_K8.
+
+2006-10-21  Uros Bizjak  <uros@kss-loka.si>
+
+	* config/i386/i386.md (extendsfdf2, extendsfxf2, extenddfxf2): Do not
+	force operand1 to register if both operands are memory operands.
+	(*extendsfdf2_mixed, *extendsfdf2_sse, *extendsfdf2_i387)
+	(*extendsfxf2_i387, *extenddfxf2_i387): Do not disable pattern
+	if both operands are memory operands.
+	(truncdfsf2): Do not force operand1 to register if both operands
+	are memory operands.
+
+2006-10-21  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
+
+	* Makefile.in (LIBS): Add $(GMPLIBS).
+	* doc/install.texi: Update GMP and MPFR requirements.
+	* doc/sourcebuild.texi (need_gmp): Delete.
+
+2006-10-21  Richard Guenther  <rguenther@suse.de>
+
+	PR tree-optimization/3511
+	* tree-ssa-pre.c (phi_translate): Fold CALL_EXPRs that
+	got new invariant arguments during PHI translation.
+
+2006-10-21  Richard Guenther  <rguenther@suse.de>
+
+	PR middle-end/26898
+	* fold-const.c (fold_comparison): Fold signed comparisons
+	of the form X +- C1 CMP Y +- C2.
+
+2006-10-21  Richard Guenther  <rguenther@suse.de>
+
+	PR target/19116
+	* config/i386/i386.c (override_options): Do not set MASK_IEEE_FP
+	if flag_unsafe_math_optimizations is specified.  We have
+	flag_finite_math_only for that.
+	* config/i386/i386.md (sqrtxf2): Do not require TARGET_IEEE_FP
+	or flag_unsafe_math_optimizations.
+
+2006-10-21  Richard Guenther  <rguenther@suse.de>
+
+	* builtins.c (fold_builtin_classify): Fix typo.
+
+2006-10-21  Richard Guenther  <rguenther@suse.de>
+
+	PR middle-end/28796
+	* simplify-rtx.c (simplify_const_relational_operation):
+	Do not constant-fold ORDERED and UNORDERED for
+	flag_unsafe_math_optimizations but only we do not need to
+	honor NaNs for the given mode.
+
+2006-10-21  Richard Guenther  <rguenther@suse.de>
+
+	PR target/29512
+	* config/i386/i386.c (classify_argument): Remove redundant
+	walking of the BINFOs.
+	(contains_128bit_aligned_vector_p): Likewise.
+
 2006-10-20  Mark Mitchell  <mark@codesourcery.com>
 
 	* BASE-VER: Set to 4.3.0.
--- /usr/src/SpecTests/sandbox-britten-memory/x86_64/mem-result/ChangeLog.cp	2006-10-20 21:25:01.000000000 +0000
+++ /usr/src/SpecTests/sandbox-britten-memory/gcc/gcc/cp/ChangeLog	2006-10-23 19:53:17.000000000 +0000
@@ -1,3 +1,23 @@
+2006-10-23 Rafael Avila de Espindola  <rafael.espindola@gmail.com>
+
+	* decl.c (builtin_function_1): Move common code to
+	add_builtin_function.
+	(builtin_function): Rename to cxx_builtin_function.
+	Change the signature.
+	* call.c: Include langhooks.h.
+	(build_java_interface_fn_ref):  Replace calls to
+	builtin_function with add_builtin_function.
+	* Make-lang.in (cp/call.o): Depend on langhooks.h.
+	* cp-objcp-common.h (LANG_HOOKS_BUILTIN_FUNCTION): Define as
+	cxx_builtin_function.
+	* cp-tree.h (builtin_function): Rename to cxx_builtin_function.
+	Change the signature.
+
+2006-10-22  Nathan Sidwell  <nathan@codesourcery.com>
+
+	PR c++/20647
+	* rtti.c (tinfo_base_init): The type info string is always global.
+
 2006-10-20  Lee Millward  <lee.millward@codesourcery.com>
             Mark Mitchell <mark@codesourcery.com>
 


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.



More information about the Gcc-regression mailing list