A recent patch increased GCC's memory consumption!

gcctest@suse.de gcctest@suse.de
Wed Apr 4 08:45:00 GMT 2007


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: 7387k -> 7407k
    Peak memory use before GGC: 2260k
    Peak memory use after GGC: 1949k
    Maximum of released memory in single GGC run: 311k
    Garbage: 446k -> 446k
    Leak: 2283k -> 2283k
    Overhead: 456k -> 456k
    GGC runs: 3

comparing empty function compilation at -O0 -g level:
    Overall memory needed: 7403k -> 7423k
    Peak memory use before GGC: 2287k -> 2288k
    Peak memory use after GGC: 1977k
    Maximum of released memory in single GGC run: 310k -> 311k
    Garbage: 449k -> 449k
    Leak: 2315k -> 2316k
    Overhead: 461k -> 461k
    GGC runs: 3

comparing empty function compilation at -O1 level:
    Overall memory needed: 7515k -> 7511k
    Peak memory use before GGC: 2260k
    Peak memory use after GGC: 1949k
    Maximum of released memory in single GGC run: 311k
    Garbage: 452k -> 452k
    Leak: 2285k -> 2286k
    Overhead: 457k -> 457k
    GGC runs: 4

comparing empty function compilation at -O2 level:
    Overall memory needed: 7523k -> 7579k
    Peak memory use before GGC: 2260k -> 2261k
    Peak memory use after GGC: 1949k -> 1950k
    Maximum of released memory in single GGC run: 311k
    Garbage: 455k -> 455k
    Leak: 2285k -> 2286k
    Overhead: 457k -> 457k
    GGC runs: 4

comparing empty function compilation at -O3 level:
    Overall memory needed: 7523k -> 7579k
    Peak memory use before GGC: 2260k -> 2261k
    Peak memory use after GGC: 1949k -> 1950k
    Maximum of released memory in single GGC run: 311k
    Garbage: 455k -> 455k
    Leak: 2285k -> 2286k
    Overhead: 457k -> 457k
    GGC runs: 4

comparing combine.c compilation at -O0 level:
  Overall memory allocated via mmap and sbrk increased from 17727k to 22607k, overall 27.53%
  Peak amount of GGC memory allocated before garbage collecting increased from 9261k to 9338k, overall 0.83%
  Amount of produced GGC garbage increased from 37102k to 38291k, overall 3.20%
    Overall memory needed: 17727k -> 22607k
    Peak memory use before GGC: 9261k -> 9338k
    Peak memory use after GGC: 8848k -> 8825k
    Maximum of released memory in single GGC run: 2578k -> 2654k
    Garbage: 37102k -> 38291k
    Leak: 6577k -> 6578k
    Overhead: 5053k -> 5375k
    GGC runs: 282 -> 288

comparing combine.c compilation at -O0 -g level:
  Overall memory allocated via mmap and sbrk increased from 19867k to 24587k, overall 23.76%
  Peak amount of GGC memory allocated before garbage collecting increased from 10877k to 11179k, overall 2.78%
  Peak amount of GGC memory still allocated after garbage collecting increased from 10509k to 10577k, overall 0.65%
  Amount of produced GGC garbage increased from 37697k to 38874k, overall 3.12%
    Overall memory needed: 19867k -> 24587k
    Peak memory use before GGC: 10877k -> 11179k
    Peak memory use after GGC: 10509k -> 10577k
    Maximum of released memory in single GGC run: 2352k -> 2661k
    Garbage: 37697k -> 38874k
    Leak: 9462k -> 9459k
    Overhead: 5759k -> 6081k
    GGC runs: 270 -> 271

comparing combine.c compilation at -O1 level:
  Overall memory allocated via mmap and sbrk increased from 35247k to 42495k, overall 20.56%
  Amount of produced GGC garbage increased from 56013k to 57658k, overall 2.94%
    Overall memory needed: 35247k -> 42495k
    Peak memory use before GGC: 19316k -> 19332k
    Peak memory use after GGC: 19124k -> 19125k
    Maximum of released memory in single GGC run: 2180k -> 2092k
    Garbage: 56013k -> 57658k
    Leak: 6607k -> 6607k
    Overhead: 6252k -> 6518k
    GGC runs: 354 -> 353

comparing combine.c compilation at -O2 level:
  Overall memory allocated via mmap and sbrk increased from 38323k to 42003k, overall 9.60%
  Amount of produced GGC garbage increased from 68171k to 69131k, overall 1.41%
    Overall memory needed: 38323k -> 42003k
    Peak memory use before GGC: 19378k -> 19371k
    Peak memory use after GGC: 19176k -> 19177k
    Maximum of released memory in single GGC run: 2150k -> 2123k
    Garbage: 68171k -> 69131k
    Leak: 6730k -> 6726k
    Overhead: 8083k -> 8271k
    GGC runs: 402 -> 408

comparing combine.c compilation at -O3 level:
  Overall memory allocated via mmap and sbrk increased from 42675k to 44403k, overall 4.05%
  Peak amount of GGC memory allocated before garbage collecting increased from 19480k to 19528k, overall 0.25%
    Overall memory needed: 42675k -> 44403k
    Peak memory use before GGC: 19480k -> 19528k
    Peak memory use after GGC: 19263k -> 19259k
    Maximum of released memory in single GGC run: 3636k -> 3035k
    Garbage: 89302k -> 89137k
    Leak: 6840k -> 6842k
    Overhead: 11074k -> 11098k
    GGC runs: 425 -> 430

comparing insn-attrtab.c compilation at -O0 level:
  Overall memory allocated via mmap and sbrk increased from 102979k to 152611k, overall 48.20%
  Peak amount of GGC memory allocated before garbage collecting increased from 68624k to 70322k, overall 2.47%
  Amount of produced GGC garbage increased from 130920k to 136751k, overall 4.45%
    Overall memory needed: 102979k -> 152611k
    Peak memory use before GGC: 68624k -> 70322k
    Peak memory use after GGC: 44727k -> 44189k
    Maximum of released memory in single GGC run: 36429k -> 38127k
    Garbage: 130920k -> 136751k
    Leak: 9580k -> 9581k
    Overhead: 16926k -> 17978k
    GGC runs: 212 -> 223

comparing insn-attrtab.c compilation at -O0 -g level:
  Overall memory allocated via mmap and sbrk increased from 104343k to 153871k, overall 47.47%
  Peak amount of GGC memory allocated before garbage collecting increased from 69786k to 71483k, overall 2.43%
  Amount of produced GGC garbage increased from 132142k to 137974k, overall 4.41%
    Overall memory needed: 104343k -> 153871k
    Peak memory use before GGC: 69786k -> 71483k
    Peak memory use after GGC: 45996k -> 45456k
    Maximum of released memory in single GGC run: 36430k -> 38127k
    Garbage: 132142k -> 137974k
    Leak: 11289k -> 11289k
    Overhead: 17324k -> 18375k
    GGC runs: 209 -> 223

comparing insn-attrtab.c compilation at -O1 level:
  Overall memory allocated via mmap and sbrk increased from 147211k to 208111k, overall 41.37%
  Amount of produced GGC garbage increased from 264594k to 270335k, overall 2.17%
    Overall memory needed: 147211k -> 208111k
    Peak memory use before GGC: 85949k -> 85946k
    Peak memory use after GGC: 80072k -> 80068k
    Maximum of released memory in single GGC run: 32838k -> 32274k
    Garbage: 264594k -> 270335k
    Leak: 9400k -> 9401k
    Overhead: 27652k -> 28644k
    GGC runs: 226 -> 232

comparing insn-attrtab.c compilation at -O2 level:
  Overall memory allocated via mmap and sbrk increased from 200079k to 234999k, overall 17.45%
  Amount of produced GGC garbage increased from 300007k to 304277k, overall 1.42%
    Overall memory needed: 200079k -> 234999k
    Peak memory use before GGC: 87233k
    Peak memory use after GGC: 80138k
    Maximum of released memory in single GGC run: 30044k -> 30047k
    Garbage: 300007k -> 304277k
    Leak: 9398k -> 9399k
    Overhead: 33248k -> 34094k
    GGC runs: 243 -> 252

comparing insn-attrtab.c compilation at -O3 level:
  Overall memory allocated via mmap and sbrk increased from 200079k to 235043k, overall 17.48%
  Amount of produced GGC garbage increased from 300672k to 304937k, overall 1.42%
    Overall memory needed: 200079k -> 235043k
    Peak memory use before GGC: 87246k -> 87247k
    Peak memory use after GGC: 80151k -> 80152k
    Maximum of released memory in single GGC run: 30105k -> 30108k
    Garbage: 300672k -> 304937k
    Leak: 9403k -> 9404k
    Overhead: 33451k -> 34295k
    GGC runs: 244 -> 255

comparing Gerald's testcase PR8361 compilation at -O0 level:
  Overall memory allocated via mmap and sbrk increased from 147088k to 152676k, overall 3.80%
  Amount of produced GGC garbage increased from 207956k to 212040k, overall 1.96%
    Overall memory needed: 147088k -> 152676k
    Peak memory use before GGC: 90242k -> 90241k
    Peak memory use after GGC: 89348k -> 89347k
    Maximum of released memory in single GGC run: 17774k
    Garbage: 207956k -> 212040k
    Leak: 49207k -> 49212k
    Overhead: 23912k -> 25068k
    GGC runs: 409 -> 416

comparing Gerald's testcase PR8361 compilation at -O0 -g level:
  Overall memory allocated via mmap and sbrk increased from 164844k to 174360k, overall 5.77%
  Amount of produced GGC garbage increased from 214479k to 218570k, overall 1.91%
    Overall memory needed: 164844k -> 174360k
    Peak memory use before GGC: 102849k -> 102847k
    Peak memory use after GGC: 101830k -> 101829k
    Maximum of released memory in single GGC run: 18129k -> 18128k
    Garbage: 214479k -> 218570k
    Leak: 72522k -> 72526k
    Overhead: 29809k -> 30964k
    GGC runs: 383 -> 389

comparing Gerald's testcase PR8361 compilation at -O1 level:
  Overall memory allocated via mmap and sbrk increased from 141831k to 151289k, overall 6.67%
  Amount of produced GGC garbage increased from 344557k to 346848k, overall 0.66%
    Overall memory needed: 141831k -> 151289k
    Peak memory use before GGC: 101813k -> 101826k
    Peak memory use after GGC: 100802k -> 100807k
    Maximum of released memory in single GGC run: 17236k
    Garbage: 344557k -> 346848k
    Leak: 49941k -> 49932k
    Overhead: 30449k -> 31040k
    GGC runs: 527 -> 532

comparing Gerald's testcase PR8361 compilation at -O2 level:
  Overall memory allocated via mmap and sbrk increased from 143903k to 152269k, overall 5.81%
    Overall memory needed: 143903k -> 152269k
    Peak memory use before GGC: 102423k -> 102425k
    Peak memory use after GGC: 101407k -> 101409k
    Maximum of released memory in single GGC run: 17233k
    Garbage: 375513k -> 375762k
    Leak: 51029k -> 50979k
    Overhead: 34733k -> 35068k
    GGC runs: 564 -> 567

comparing Gerald's testcase PR8361 compilation at -O3 level:
Testing has produced no results

comparing PR rtl-optimization/28071 testcase compilation at -O0 level:
  Overall memory allocated via mmap and sbrk increased from 244779k to 344674k, overall 40.81%
  Amount of produced GGC garbage increased from 142208k to 149013k, overall 4.78%
    Overall memory needed: 244779k -> 344674k
    Peak memory use before GGC: 80960k -> 80253k
    Peak memory use after GGC: 58699k -> 57992k
    Maximum of released memory in single GGC run: 44133k -> 46503k
    Garbage: 142208k -> 149013k
    Leak: 7610k -> 7418k
    Overhead: 24559k -> 27022k
    GGC runs: 79

comparing PR rtl-optimization/28071 testcase compilation at -O0 -g level:
  Overall memory allocated via mmap and sbrk increased from 245599k to 345578k, overall 40.71%
  Amount of produced GGC garbage increased from 142367k to 149240k, overall 4.83%
    Overall memory needed: 245599k -> 345578k
    Peak memory use before GGC: 81606k -> 80899k
    Peak memory use after GGC: 59345k -> 58638k
    Maximum of released memory in single GGC run: 44122k -> 46568k
    Garbage: 142367k -> 149240k
    Leak: 9378k -> 9186k
    Overhead: 25054k -> 27517k
    GGC runs: 89 -> 88

comparing PR rtl-optimization/28071 testcase compilation at -O1 level:
  Overall memory allocated via mmap and sbrk increased from 244223k to 312007k, overall 27.75%
  Peak amount of GGC memory allocated before garbage collecting increased from 84278k to 85020k, overall 0.88%
  Amount of produced GGC garbage increased from 221619k to 225118k, overall 1.58%
    Overall memory needed: 244223k -> 312007k
    Peak memory use before GGC: 84278k -> 85020k
    Peak memory use after GGC: 74844k -> 74845k
    Maximum of released memory in single GGC run: 36149k -> 35652k
    Garbage: 221619k -> 225118k
    Leak: 20853k -> 20854k
    Overhead: 30443k -> 32048k
    GGC runs: 81 -> 78

comparing PR rtl-optimization/28071 testcase compilation at -O2 level:
  Overall memory allocated via mmap and sbrk increased from 497691k to 563319k, overall 13.19%
  Amount of produced GGC garbage increased from 228654k to 235003k, overall 2.78%
    Overall memory needed: 497691k -> 563319k
    Peak memory use before GGC: 79831k
    Peak memory use after GGC: 74845k
    Maximum of released memory in single GGC run: 33438k -> 33317k
    Garbage: 228654k -> 235003k
    Leak: 20944k -> 20944k
    Overhead: 32525k -> 34675k
    GGC runs: 91 -> 88

comparing PR rtl-optimization/28071 testcase compilation at -O3 -fno-tree-pre -fno-tree-fre level:
  Overall memory allocated via mmap and sbrk increased from 1270279k to 1696951k, overall 33.59%
  Amount of produced GGC garbage increased from 370053k to 373939k, overall 1.05%
    Overall memory needed: 1270279k -> 1696951k
    Peak memory use before GGC: 201747k
    Peak memory use after GGC: 190209k
    Maximum of released memory in single GGC run: 80678k -> 80993k
    Garbage: 370053k -> 373939k
    Leak: 46309k -> 46310k
    Overhead: 48621k -> 49994k
    GGC runs: 70 -> 74

Head of the ChangeLog is:

--- /usr/src/SpecTests/sandbox-britten-memory/x86_64/mem-result/ChangeLog	2007-04-03 12:33:53.000000000 +0000
+++ /usr/src/SpecTests/sandbox-britten-memory/gcc/gcc/ChangeLog	2007-04-03 23:08:32.000000000 +0000
@@ -1,1367 +1,3 @@
-2007-04-03  Richard Sandiford  <richard@codesourcery.com>
-
-	* config.gcc (mips-wrs-vxworks): Add vx-common.h to tm_file.
-	Set the default --with-arch setting to mips2.
-	* config/mips/t-vxworks (MULTILIB_OPTIONS, MULTILIB_MATCHES)
-	(MULTILIB_EXCEPTIONS): Redefine with new multilibs.
-	(MULTILIB_OSDIRNAMES): Delete.
-	(MULTILIB_DIRNAMES): Define.
-	* config/mips/vxworks.h (LINK_SPEC): Add VXWORKS_LINK_SPEC.
-	(LIB_SPEC, STARTFILE_SPEC, ENDFILE_SPEC): Define.
-	(TARGET_OS_CPP_BUILTINS): Incorporate old SUBTARGET_CPP_SPEC
-	definitions, except for _WRS_R3K_EXC_SUPPORT.  Call
-	VXWORKS_OS_CPP_BUILTINS.
-	(SUBTARGET_CPP_SPEC): Redefine to VXWORKS_ADDITIONAL_CPP_SPEC.
-	(MIPS_DEBUGGING_INFO): Undefine.
-	(FUNCTION_PROFILER): Define to VXWORKS_FUNCTION_PROFILER.
-
-2007-04-03  Jakub Jelinek  <jakub@redhat.com>
-
-	PR middle-end/30704
-	* fold-const.c (native_encode_real): Encode real.c provided longs
-	as a series of 32-bit native integers.
-	(native_interpret_real): Interpret buffer as a series of 32-bit
-	native integers.
-
-2007-04-03  Richard Guenther  <rguenther@suse.de>
-
-	* genpreds.c (write_insn_constraint_len): Write function
-	optimized for CONSTRAINT_LEN implementation.
-	(write_tm_preds_h): Output insn_constraint_len inline and
-	use it for CONSTRAINT_LEN.
-	(write_insn_preds_c): Don't output insn_constraint_len.
-	* doc/md.texi (define_register_constraint): Document multi-letter
-	constraints shall have the same length if they start with the same
-	letter.
-
-2007-04-03  Uros Bizjak  <ubizjak@gmail.com>
-
-	PR target/31175
-	* config/i386/i386.md (isinf<mode>2): Expand only when
-	TARGET_C99_FUNCTIONS is set.
-
-2007-04-03  Uros Bizjak  <ubizjak@gmail.com>
-
-	* config.gcc (i[34567]86-*-linux*): Add i386/t-crtpc to tm-file.
-	(x86_64-*-linux*): Ditto.
-	* config/i386/i386.opt (mpc): New option.
-	* config/i386/i386.c (overrride_options): Handle
-	ix87_precision_string.
-	* config/i386/crtprec.c: New file.
-	* config/i386/t-crtpc: Ditto.
-	* config/i386/linux.h (ENDFILE_SPEC): Add handling of -mpc32, -mpc64
-	and -mpc80 options.
-	* config/i386/linux64.h (ENDFILE_SPEC): Ditto.
-	* config/i386/t-linux64 (EXTRA_MULTILIB_PARTS): Add
-	crtprec32.o, crtprec64.o and crtprec80.o.
-
-	* doc/invoke.texi (Machine Dependent Options): Add -mpc32, -mpc64
-	and -mpc80 options.
-	(i386 and x86-64 Options): Document -mpc32, -mpc64 and -mpc80 options.
-
-2007-04-02  Eric Christopher  <echristo@apple.com>
-
-	* doc/invoke.texi (i386 and x86-64 Options): Document -m64
-	limitations on darwin.
-
-2007-04-02  Anatoly Sokolov <aesok@post.ru>
-
-	PR target/31137
-	* config/avr/avr.c (avr_rtx_costs): Add missing 'break' statements.
-
-2007-04-02  Dave Korn  <dave.korn@artimi.com>
-
-	* doc/tm.texi (FUNCTION_MODE): Update and extend documentation.
-
-2007-04-02  Dave Korn  <dave.korn@artimi.com>
-
-	* libgcc2.h (exception_descriptor): Don't forward-declare.
-	(__get_eh_table_language, __get_eh_table_version): Delete
-	prototypes of long-dead functions.
-
-2007-04-01  Daniel Berlin  <dberlin@dberlin.org>
-
-	* ebitmap.h: New file
-	* ebitmap.c: New file
-	* Makefile.in (ebitmap.o): New target.
-
-2007-04-01  Jan Hubicka  <jh@suse.cz>
-
-	* emit-rtl.c (emit_insn_before_setloc): Do not ICE when asked to emit
-	before very first instruction.
-
-2007-04-01  Jan Hubicka  <jh@suse.cz>
-
-	* ggc-page.c (ggc_print_statistics): Fix formatting string to avoid
-	waring on 64bit hosts.
-	* bitmap.h: Fix typo in bitmap_head_def.
-
-2007-04-01  Steven Bosscher  <steven@gcc.gnu.org>
-
-	PR rtl-optimization/31391
-	* cfgcleanup.c (try_optimize_cfg): If a removed label is turned
-	into a DELETED_LABEL note, and the label is in an empty basic
-	block, update BB_END as well as BB_HEAD.
-
-2007-04-01  Richard Henderson  <rth@redhat.com>
-
-	PR tree-optimization/31169
-	* tree-vrp.c (extract_range_from_binary_expr) <RSHIFT_EXPR>: Drop
-	to varying if the range is outside [0,  prec-1].
-
-2007-04-01  Richard Sandiford  <richard@codesourcery.com>
-
-	PR target/31388
-	* config/mips/mips.md (load_const_gp): New insn.
-	* config/mips/mips.c (mips_split_symbol): Avoid using or creating
-	the MIPS16 GP pseudo register if no_new_pseudos.
-	(mips16_gp_pseudo_reg): Use gen_load_const_gp.
-
-2007-03-31  Andrew Pinski  <andrew_pinski@playstation.sony.com>
-
-	PR target/31364
-	* config/rs6000/rs6000.md (call): Convert to LR hard reg for
-	secureplt.
-	(call_value): Likewise.
-
-2007-03-31  Wolfgang Bangerth  <bangerth@dealii.org>
-	    Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
-
-	PR 14737
-	* doc/invoke.texi: (optimization options): Reword description
-	of -ffast-math. Document its primary purpose.
-
-2007-03-31  Richard Guenther  <rguenther@suse.de>
-
-	* omp-low.c (splay-tree.h): Include.
-	(lookup_decl): Replace splay-tree usage by pointer-map.
-	(maybe_lookup_decl): Likewise.
-	(new_omp_context): Likewise.
-	(delete_omp_context): Likewise.
-	* gimplify.c (splay-tree.h): Include.
-	* tree-inline.c (insert_decl_map): Replace splay-tree usage by
-	pointer-map.
-	(remap_ssa_name): Likewise.
-	(remap_decl): Likewise.
-	(remap_type_1): Likewise.
-	(remap_type): Likewise.
-	(copy_body_r): Likewise.
-	(expand_call_inline): Likewise.
-	(clone_body): Likewise.
-	(copy_tree_r): Likewise.
-	(remap_save_expr): Likewise.
-	(unsave_r): Likewise.
-	(unsave_expr_now): Likewise.
-	(tree_function_versioning): Likewise.
-	(build_duplicate_type): Likewise.
-	* tree-inline.h (pointer-set.h): Include instead of splay-tree.h.
-	(struct copy_body_data): Replace splay-tree by pointer-map.
-	* Makefile.in (TREE_INLINE_H): Depend on pointer-map.h,
-	not $(SPLAY_TREE_H).
-	(gimplify.o): Depend on $(SPLAY_TREE_H).
-	(omp-low.p): Likewise.
-
-2007-03-31  Anatoly Sokolov <aesok@post.ru>
-
-	* config/avr/predicates.md (even_register_operand,
-	odd_register_operand): New predicates.
-	* config/avr/avr.md (movw peephole2): New.
-	(movw_r peephole2): New.
-
-2007-03-30  Rafael Avila de Espindola  <espindola@google.com>
-
-	* tree.h (get_signed_or_unsigned_type): New.
-	* fold-const.c (operand_equal_for_comparison_p): Use
-	get_signed_or_unsigned_type instead of
-	lang_hooks.types.signed_or_unsigned_type.
-	* expr.c (store_expr): Ditto.
-	* langhooks.c (get_signed_or_unsigned_type): New.
-	(lhd_signed_or_unsigned_type): New.
-	* langhooks.h (lhd_signed_or_unsigned_type): New.
-	* langhooks-def.h (LANG_HOOKS_SIGNED_OR_UNSIGNED_TYPE): Define.
-
-2007-03-30  Richard Henderson  <rth@redhat.com>
-
-	* tree-ssa-loop-ivopts.c: Include target.h.
-	(produce_memory_decl_rtl): Pass the rtx through encode_section_info.
-	(get_address_cost): Force SYMBOL_FLAG_LOCAL set.
-	(force_expr_to_var_cost): Use produce_memory_decl_rtl.
-	* Makefile.in (tree-ssa-loop-ivopts.o): Depend on TARGET_H.
-
-2007-03-30  Richard Henderson  <rth@redhat.com>
-	    Kai Tietz  <kai.tietz@onevision.com>
-
-	* config/i386/cygming.h (DWARF2_DEBUGGING_INFO): Enable by
-	default for 64-bit.
-	(PREFERRED_DEBUGGING_TYPE): Prefer dwarf2 for 64-bit.
-	(TARGET_64BIT_MS_ABI): New.
-	(DBX_REGISTER_NUMBER): Handle 64-bit.
-	(SIZE_TYPE, PTRDIFF_TYPE): Use long long for 64-bit.
-	(LONG_TYPE_SIZE): Force to 32.
-	(REG_PARM_STACK_SPACE): New.
-	(OUTGOING_REG_PARM_STACK_SPACE): New.
-	(REGPARM_MAX, SSE_REGPARM_MAX): New.
-	(HANDLE_PRAGMA_PUSH_POP_MACRO): New.
-	(STACK_BOUNDARY): Use 128 for 64-bit.
-	* config/i386/cygwin.asm: Use push/ret to preserve call stack.
-	Add 64-bit implementation.
-	* config/i386/gthr-win32.c (__gthr_win32_key_create): Mark dtor
-	argument unused.
-	* config/i386/i386.c (x86_64_ms_abi_int_parameter_registers): New.
-	(override_options): Set ix86_cmodel for TARGET_64BIT_MS_ABI.
-	Warn for -mregparm, -mrtd in 64-bit mode; force ix86_regparm
-	for 64-bit; use TARGET_SUBTARGET64_DEFAULT.
-	(ix86_handle_cconv_attribute): Don't warn when ignoring if
-	TARGET_64BIT_MS_ABI.
-	(ix86_function_arg_regno_p): Handle TARGET_64BIT_MS_ABI.
-	(ix86_pass_by_reference): Likewise.
-	(ix86_function_value_regno_p): Likewise.
-	(ix86_build_builtin_va_list): Likewise.
-	(ix86_va_start, ix86_gimplify_va_arg): Likewise.
-	(function_arg_advance_ms_64): New.
-	(function_arg_advance): Call it.
-	(function_arg_ms_64): New.
-	(function_arg): Call it.
-	(function_value_ms_64): New.
-	(ix86_function_value_1): Call it.
-	(return_in_memory_ms_64): New.
-	(ix86_return_in_memory): Call it.
-	(setup_incoming_varargs_ms_64): New.
-	(ix86_setup_incoming_varargs): Call it.
-	(ix86_expand_prologue): Handle 64-bit stack probing.
-	(legitimize_pic_address): Handle TARGET_64BIT_MS_ABI.
-	(output_pic_addr_const): Likewise.
-	(x86_this_parameter): Likewise.
-	(x86_output_mi_thunk): Likewise.
-	(x86_function_profiler): Likewise.
-	(TARGET_STRICT_ARGUMENT_NAMING): New.
-	* config/i386/i386.h (TARGET_SUBTARGET64_DEFAULT): New.
-	(TARGET_64BIT_MS_ABI): New.
-	(CONDITIONAL_REGISTER_USAGE): Handle TARGET_64BIT_MS_ABI.
-	* config/i386/i386.md (allocate_stack_worker): Remove.
-	(allocate_stack_worker_32): Rename from allocate_stack_worker_1;
-	describe the clobber of eax without a match_scratch.
-	(allocate_stack_worker_postreload): Remove.
-	(allocate_stack_worker_64): Rename from allocate_stack_worker_rex64;
-	describe the clobbers of rax, r10, r11 properly; use __chkstk symbol.
-	(allocate_stack_worker_rex64_postreload): Remove.
-	(allocate_stack): Handle 64-bit.
-	* config/i386/i386elf (TARGET_SUBTARGET_DEFAULT): Remove.
-	* config/i386/mingw32.h (TARGET_VERSION): Set correctly for 64-bit.
-	(EXTRA_OS_CPP_BUILTINS): Handle 64-bit.
-	(STANDARD_INCLUDE_DIR): Handle TARGET_64BIT_DEFAULT.
-	(STANDARD_STARTFILE_PREFIX_1): Likewise.
-	* config/i386/unix.h (TARGET_SUBTARGET64_DEFAULT): New.
-	* config.build (x86_64-*-mingw*): New host.
-	* config.host (x86_64-*-mingw*): New host.
-	* config.gcc (x86_64-*-mingw*): New target.
-	* gthr-win32.h (__gthread_key_create): Mark dtor unused.
-
-2007-03-30  Richard Henderson  <rth@redhat.com>
-	    Kai Tietz  <kai.tietz@onevision.com>
-
-	* c-pragma.c (struct def_pragma_macro_value): New.
-	(struct def_pragma_macro): New.
-	(pushed_macro_table): New.
-	(dpm_hash, dpm_eq): New.
-	(handle_pragma_push_macro, handle_pragma_pop_macro): New.
-	(init_pragma): Install them.
-	* doc/tm.texi (HANDLE_PRAGMA_PUSH_POP_MACRO): New.
-
-2007-03-30  Anatoly Sokolov <aesok@post.ru>
-
-	* config/avr/avr.c (avr_override_options): Clear
-	'flag_delete_null_pointer_checks'.
-
-2007-03-30  Paolo Carlini  <pcarlini@suse.de>
-
-	PR c++/26099
-	* c-common.h (enum rid): Add RID_HAS_NOTHROW_ASSIGN,
-	RID_HAS_NOTHROW_CONSTRUCTOR, RID_HAS_NOTHROW_COPY,
-	RID_HAS_TRIVIAL_ASSIGN, RID_HAS_TRIVIAL_CONSTRUCTOR,
-	RID_HAS_TRIVIAL_COPY, RID_HAS_TRIVIAL_DESTRUCTOR,
-	RID_HAS_VIRTUAL_DESTRUCTOR, RID_IS_ABSTRACT, RID_IS_BASE_OF,
-	RID_IS_CONVERTIBLE_TO, RID_IS_CLASS, RID_IS_EMPTY, RID_IS_ENUM,
-	RID_IS_POD, RID_IS_POLYMORPHIC, RID_IS_UNION, as
-	C++ extensions.
-	* doc/extend.texi (Extensions to the C++ Language): Add Type Traits.
-
-2007-03-30  Steven Bosscher  <steven@gcc.gnu.org>
-
-	* regmove.c: Move all of pass_stack_adjustments from here...
-	* combine-stack-adj.c: ...to this new file.
-	* Makefile.in: Add rules for combine-stack-adj.o.
-
-2007-03-30  Zdenek Dvorak  <dvorakz@suse.cz>
-
-	PR tree-optimization/31383
-	* tree-data-ref.c (affine_function_equal_p): Do not require the vectors
-	to have the same length.
-
-2007-03-30  Jan Hubicka  <jh@suse.cz>
-
-	PR middle-end/PR30700
-	* dwarf2out.c (reference_to_unused): Ask cgraph for functions
-	availablility; add more sanity checking; ask varpool only about
-	VAR_DECL.
-
-2007-03-29  Richard Henderson  <rth@redhat.com>
-
-	* unwind-generic.h (_sleb128_t, _uleb128_t): Don't use HAVE_LONG_LONG
-	to decide, but __SIZEOF_LONG_LONG__.
-
-2007-03-29  Richard Henderson  <rth@redhat.com>
-
-	* emutls.c (struct __emutls_array): New.
-	(emutls_destroy): Use it instead of casting element 0 from void*.
-	(__emutls_get_address): Likewise.
-
-2007-03-29  Richard Henderson  <rth@redhat.com>
-
-	* varasm.c (initializer_constant_valid_p): Don't deny
-	DECL_DLLIMPORT_P on functions.
-
-	* config/i386/cygming.h: Remove function declarations.
-	(SUBTARGET_ENCODE_SECTION_INFO): Don't undef first.
-	(ASM_OUTPUT_LABELREF): Remove.
-	(COMMON_ASM_OP): Remove.
-	(ASM_OUTPUT_COMMON): Remove.
-	(ASM_OUTPUT_ALIGNED_DECL_COMMON): New.
-	(ASM_DECLARE_OBJECT_NAME): Use i386_pe_maybe_record_exported_symbol.
-	(ASM_DECLARE_FUNCTION_NAME): Likewise.
-	* config/i386/i386-interix.h (SUBTARGET_ENCODE_SECTION_INFO):
-	Rename from TARGET_ENCODE_SECTION_INFO.
-	* config/i386/netware.h: Likewise.
-	* config/i386/i386-protos.h: Update.
-	* config/i386/i386.c (ix86_function_ok_for_sibcall): Turn ifdef
-	of TARGET_DLLIMPORT_DECL_ATTRIBUTES into straight if.
-	(legitimate_constant_p): Reject dllimports.
-	(dllimport_map, get_dllimport_decl): New.
-	(legitimize_dllimport_symbol): New.
-	(legitimize_address, ix86_expand_move): Use it.
-	(TARGET_BINDS_LOCAL_P): Redefine for TARGET_DLLIMPORT_DECL_ATTRIBUTES.
-	* config/i386/i386.h (DLL_IMPORT_EXPORT_PREFIX): Remove.
-	(SYMBOL_FLAG_DLLIMPORT, SYMBOL_REF_DLLIMPORT_P): New.
-	(SYMBOL_FLAG_DLLEXPORT, SYMBOL_REF_DLLEXPORT_P): New.
-	* config/i386/predicates.md (constant_call_address_operand): Only
-	accept symbols; reject dllimport_p symbols.
-	* config/i386/uwin.h (ASM_DECLARE_FUNCTION_NAME): Use
-	i386_pe_maybe_record_exported_symbol.
-	* config/i386/winnt.c (DLL_IMPORT_PREFIX, DLL_EXPORT_PREFIX): Remove.
-	(i386_pe_determine_dllexport_p): Rename from i386_pe_dllexport_p.
-	(i386_pe_determine_dllimport_p): Rename from i386_pe_dllimport_p;
-	trust the setting of DECL_DLLIMPORT_P.
-	(i386_pe_dllexport_name_p, i386_pe_dllimport_name_p): Remove.
-	(i386_pe_mark_dllexport, i386_pe_mark_dllimport): Remove.
-	(gen_stdcall_or_fastcall_suffix): Return NULL if no change required;
-	tidy the argument scanning loop.
-	(i386_pe_encode_section_info): Set SYMBOL_FLAG_DLLIMPORT and
-	SYMBOL_FLAG_DLLEXPORT in SYMBOL_REF_FLAGS.
-	(i386_pe_strip_name_encoding): Remove.
-	(i386_pe_binds_local_p): New.
-	(i386_pe_strip_name_encoding_full): Use default_strip_name_encoding.
-	(i386_pe_output_labelref): Remove.
-	(i386_pe_asm_output_aligned_decl_common): New.
-	(i386_pe_maybe_record_exported_symbol): Rename from
-	i386_pe_record_exported_symbol; check for dllexported symbols.
-
-2007-03-29  Zack Weinberg  <zack@mrtock.ucsd.edu>
-
-	* gengtype.c (oprintf): Mostly revert changes from 2007-03-26;
-	add comment explaining why vsnprintf cannot be used.
-
-2007-03-29  Douglas Gregor  <doug.gregor@gmail.com>
-
-	PR tree-optimization/30666
-	* tree.c (build_complex_type): When creating type names for DWARF2
-	debug info, create TYPE_DECLs for TYPE_NAME instead of
-	IDENTIFIER_NODEs.
-	(build_common_tree_nodes_2): Use build_complex_type when building
-	predefined complex types, to preserve canonical types.
-
-2007-03-29  Steven Bosscher  <steven@gcc.gnu.org>
-
-	* ifcvt.c (struct noce_if_info): Add then_else_reversed field.
-	(noce_get_alt_condition): Look at it to determine whether to
-	reverse the condition or not.
-	(noce_get_condition): Substitute the truth for lies.
-	(noce_find_if_block): Set the then_else_reversed field.
-
-2007-03-29  Lars Poeschel <larsi@wh2.tu-dresden.de>
-
-	* config/fr30/fr30.md (movdi): Do not accept immediates as the
-	destination of this insn.
-	* config/fr30/fr30.c (fr30_move_double): Use emit_move_insn rather
-	than calling gen_rtx_SET directly.  Use r0 to hold the value of
-	'address + 4' rather than a stack based temporary which can be
-	mis-optimized away.
-
-2007-03-29  Andreas Krebbel  <krebbel1@de.ibm.com>
-
-	* config/s390/s390.c (s390_secondary_input_reload_class,
-	s390_secondary_output_reload_class): Functions removed.
-	(s390_secondary_reload): New function.
-	(TARGET_SECONDARY_RELOAD): Target macro defined.
-	* config/s390/s390.h (SECONDARY_INPUT_RELOAD_CLASS,
-	SECONDARY_OUTPUT_RELOAD_CLASS): Macro definitions removed.
-	* config/s390/s390.md ("reload_outti", "reload_outdi",
-	"reload_indi", "reload_insi", "reload_out<mode>", "reload_in<mode>",
-	"reload_out<mode>"): Expanders removed.
-	("reload<mode>_plus", "reload<mode>_nonoffmem_in",
-	"reload<mode>_nonoffmem_out"): Expanders added.
-
-2007-03-29  Andreas Krebbel  <krebbel1@de.ibm.com>
-
-	* regmove.c (optimize_reg_copy_1): Don't perform DEST->SRC repair action if
-	SRC->DEST replacement failed anyway.
-
-2007-03-28  Mike Stump  <mrs@apple.com>
-
-	* config/darwin9.h (ASM_OUTPUT_ALIGNED_COMMON): Add.
-	* config/darwin.h (MAX_OFILE_ALIGNMENT): Fix.
-	* config/rs6000/darwin.h (ASM_OUTPUT_ALIGNED_COMMON): Removed #undef.
-
-2007-03-28  Dwarakanath Rajagopal  <dwarak.rajagopal@amd.com>
-
-	* config.gcc: Accept barcelona as a variant of amdfam10.
-	* config/i386/i386.c (override_options): Likewise.
-	* doc/invoke.texi: Likewise.
-
-2007-03-28  Eric Botcazou  <ebotcazou@adacore.com>
-
-	* tree-dfa.c (get_ref_base_and_extent): Do not expect positive
-	offsets for BIT_FIELD_REF and COMPONENT_REF.
-
-2007-03-28  Richard Guenther  <rguenther@suse.de>
-
-	* tree.c (is_global_var): Move ...
-	* tree-flow-inline.h (is_global_var): ... here.
-	* tree.h (is_global_var): Remove declaration.
-
-2007-03-28  Uros Bizjak  <ubizjak@gmail.com>
-
-	* config/i386/i386.h (X86_TUNE_PROMOTE_HIMODE_IMUL): New tuning
-	option.
-	(TARGET_TUNE_PROMOTE_HIMODE_IMUL): New define. Use new tuning option.
-	* config/i386/i386.c (ix86_tune_features): Initialize new
-	tuning option.
-	* config/i386/predicates.md (promotable_binary_operator): Use
-	TARGET_TUNE_PROMOTE_HIMODE_IMUL.
-
-2007-03-28  Grigory Zagorodnev <grigory_zagorodnev@linux.intel.com>
-
-	PR target/31380
-	* config/i386/sse.md (uminv16qi3): Use UMIN instead of UMAX.
-
-2007-03-28  Lars Poeschel <larsi@wh2.tu-dresden.de>
-
-	* config/fr30/fr30.md (movsi_internal): Change destination
-	constraint from m to V and add m to the end.
-
-2007-03-28  Christian Bruel  <christian.bruel@st.com>
-
-	* config/sh/sh.md (movsi_i): Fix type attribute.
-
-2007-03-28  Christian Bruel  <christian.bruel@st.com>
-
-	* config/sh/sh.md (movsi_ie): Fix memory constraints attribute length.
-	(movsf_ie): Likewise.
-
-2007-03-28  Christian Bruel  <christian.bruel@st.com>
-
-	* config.gcc: Add sh4-300 to multilib.
-	* config/sh/t-mlib-sh4-300: New file.
-
-2007-03-28  Andreas Krebbel  <krebbel1@de.ibm.com>
-
-	* config/s390/s390.md ("fix_trunc<mode>di2"): New expander.
-	("fix_trunc<DFP:mode>di2_dfp"): New insn definition renamed from
-	fix_trunc<mode>di2.
-	("fixuns_truncdddi2", "fixuns_trunctddi2"): Use
-	fix_trunc<DFP:mode>di2_dfp instead of fix_trunc<mode>di2.
-	("fix_truncdfsi2", "fix_truncsfsi2", "fixuns_truncdddi2",
-	"fixuns_trunctddi2"): Whitespace fix.
-
-2007-03-28  Kaz Kojima  <kkojima@gcc.gnu.org>
-
-	* config/sh/sh.h (CALL_COOKIE_RET_TRAMP_SHIFT): Move after
-	the definition of struct sh_args.
-	(CALL_COOKIE_RET_TRAMP, CALL_COOKIE_STACKSEQ_SHIFT,
-	CALL_COOKIE_INT_REG_GET): Likewise.
-
-2007-03-28  Steven Bosscher  <steven@gcc.gnu.org>
-
-	* ifcvt.c (cond_exec_find_if_block): Return FALSE if no
-	transformations are applied successfully.
-
-2007-03-27  Douglas Gregor  <doug.gregor@gmail.com>
-
-	* tree.c (tree_contains_struct): Permit 512 tree codes.
-	* tree.h (tree_contains_struct): Ditto.
-	(MAX_TREE_CODES): Ditto.
-	(struct tree_base): Make CODE 16 bits, instead of 8 bits. Add
-	SPARE member to store remaining padding bits.
-
-2007-03-27  Anatoly Sokolov <aesok@post.ru>
-
-	* config/avr/avr.c (avr_mcu_types): Move at90usb82 device to 'avr4'
-	architecture.
-
-2007-03-27  Janis Johnson  <janis187@us.ibm.com>
-
-	* configure.ac: Fix assembler test for powerpc*-linux decimal float.
-	* configure: Regenerate.
-
-	* configure: Regenerate using the correct version of autoconf.
-
-2007-03-27  Anatoly Sokolov  <aesok@post.ru>
-
-	* config/avr/avr.c (avr_hard_regno_mode_ok): Disallow QImode in stack
-	pointer regs.
-	* config/avr/avr.h (REGISTER_NAMES): Rename "__SPL__" and "__SPH__"
-	regs to "__SP_L__" and "__SP_H__".
-
-2007-03-27  Richard Guenther  <rguenther@suse.de>
-
-	* tree-dfa.c (get_ref_base_and_extent): Replace bit_offset and
-	computations with it with a HOST_WIDE_INT variable.
-
-2007-03-26  Mike Stump  <mrs@apple.com>
-
-	* config/rs6000/darwin.h (DARWIN_MINVERSION_SPEC): Add
-	objective-c-header, objective-c++-header and objc++-cpp-output
-	support.
-	* config/i386/darwin.h (DARWIN_MINVERSION_SPEC): Likewise.
-
-2007-03-26  Richard Henderson  <rth@redhat.com>
-
-	PR target/31361
-	* config/i386/i386.c (IX86_BUILTIN_PSLLDQ128, IX86_BUILTIN_PSLLW128,
-	IX86_BUILTIN_PSLLD128, IX86_BUILTIN_PSLLQ128, IX86_BUILTIN_PSRAW128,
-	IX86_BUILTIN_PSRAD128, IX86_BUILTIN_PSRLW128, IX86_BUILTIN_PSRLD128,
-	IX86_BUILTIN_PSRLQ128): New.
-	(ix86_init_mmx_sse_builtins): Add them.
-	(ix86_expand_builtin): Expand them.
-	* config/i386/sse.md (ashr<mode>3, lshr<mode>3, ashl<mode>3): Make
-	operand 2 be TImode.
-	* config/i386/emmintrin.h (_mm_slli_epi64, _mm_srai_epi16,
-	_mm_srai_epi32, _mm_srli_epi16, _mm_srli_epi32,
-	_mm_srli_epi64): Mark __B const.
-	(_mm_srli_si128, _mm_srli_si128): Fix disabled inline versions.
-	(_mm_sll_epi16, _mm_sll_epi32, _mm_sll_epi64, _mm_sra_epi16,
-	_mm_sra_epi32, _mm_srl_epi16, _mm_srl_epi32, _mm_srl_epi64): Use
-	new two-vector shift builtins.
-
-2007-03-26  Ian Lance Taylor  <iant@google.com>
-
-	PR tree-optimization/31345
-	* tree-vrp.c (extract_range_from_binary_expr): Turn ranges like
-	[+INF, +INF(OVF)] into VARYING.
-
-2007-03-26  Zack Weinberg  <zackw@panix.com>
-
-	* gengtype-parse.c: New file.
-	* gengtype-yacc.y: Delete.
-	* gengtype-lex.l: Don't include gengtype-yacc.h.
-	Define YY_DECL and yyterminate appropriately for recursive
-	descent parser.  yylval is now a string out-parameter to yylex.
-	(HWS, EOID): New shorthand.
-	(IWORD): Add a couple more types.
-	(yylex): Add a setup stanza.  Remove the complex rules for
-	detecting GTY'ed types and typedefs; replace with simple
-	keyword detectors.  Adjust everything for the changed
-	definition of yylval.  Ignore all pp-directives, not just #define.
-	(yyerror): Delete.
-	(parse_file): Rename yybegin; do not call yyparse.
-	(yyend): New.
-	* gengtype.c (xasprintf): Export again.
-	(this_file): New.  Use everywhere __FILE__ was being used.
-	(get_lang_bitmap): Special case types defined in gengtype.c.
-	(do_typedef, new_structure): Suppress definition of certain types.
-	(new_structure): Improve diagnostics of duplicate definitions.
-	Make sure location_s is associated with input.h.
-	(nreverse_pairs, define_location_structures): New functions.
-	(main): Improve tagging of kludge types.  Remove old kludges
-	for input.h types; use define_location_structures.
-	* gengtype.h: Update prototypes.  Define token codes here.
-	* Makefile.in: Remove all references to gengtype-yacc.
-	Add rules for gengtype-parse.o.  Adjust rules for gengtype-lex.o
-	and gengtype.
-	* bitmap.h (struct bitmap_head_def): Coalesce definitions,
-	add GTY((skip)) to the field that's only conditionally there.
-	* doc/install.texi: Document that Bison is no longer required
-	unless building treelang.
-
-	* gengtype.c: Don't include gtyp-gen.h.
-	(srcdir): Declare here.
-	(base_files, lang_dir_names): Allocate dynamically.
-	(gt_files, num_gt_files, num_lang_dirs): New globals.
-	(measure_input_list, read_input_line, read_input_list)
-	(set_lang_bitmap): New functions.
-	(get_base_file_bitmap): Rename get_lang_bitmap and drastically
-	simplify, relying on read_input_list to set up the bitmaps.
-	(main): Arguments are no longer unused.  Check for correct number
-	of command line arguments, set srcdir and srcdir_len, then call
-	read_input_list, before doing anything else.  No need to worry
-	about duplicates in main loop.
-	* configure.ac: Simplify the calculation of all_gtfiles.
-	Put language tags in there.  Don't set or substitute
-	all_gtfiles_files_langs or all_gtfiles_files_frags.
-	* Makefile.in: Revamp the way gengtype is invoked, now that it
-	takes a file on its command line with a much simpler format.
-	Remove or replace with gtyp-input.list all references to gtyp-gen.h.
-	(GTFILES): Remove duplicates and C source files.
-	* c-config-lang.in, cp/config-lang.in, objc/config-lang.in
-	* objcp/config-lang.in: Add c-pragma.h to gtfiles.
-	* configure: Regenerate.
-
-	* gengtype.h: Remove all type definitions to gengtype.c; leave
-	only definitions of options_p, type_p, and pair_p as opaque
-	pointers.  Update prototypes.
-	* gengtype.c: Many type definitions moved here from gengtype.h.
-	Consolidate type definitions at the top of the file.
-	(xvasprintf): Delete.
-	(xasprintf): Make static.
-	(create_nested_pointer_option): Add 'next' parameter.
-	(create_field_all, create_field_at): New functions.
-	(create_field): Now a thin wrapper around create_field_all.
-	(create_optional_field): Rename create_optional_field_ and add
-	line argument.  Original name is now a macro which supplies
-	__LINE__.
-	(oprintf): Use vsnprintf directly.
-	(close_output_files): Use fatal rather than perror/exit.
-	(note_def_vec, note_def_vec_alloc): Use create_field_at.
-	(main): Set progname.  Don't use exit.
-	* gengtype-yacc.y (struct_fields): Use create_field_at.
-	(option, optionseqopt): Delete.
-	(optionseq): Consolidate productions from option here so we
-	can use the first argument to create_option.
-
-	* gengtype-lex.l: Distinguish unions from structures in the
-	token type.  Don't call find_structure; return the tag as a string.
-	* gengtype-yacc.y: Add new token types ENT_TYPEDEF_UNION and ENT_UNION.
-	Type of these, ENT_TYPEDEF_STRUCT, and ENT_STRUCT is string.
-	Reorganize typedef_struct production accordingly.
-	Use create_nested_ptr_option.
-	* gengtype.c (create_nested_ptr_option): New function.
-	* gengtype.h: Declare it.
-
-	* gengtype.h (struct type): Replace 'sc' with boolean, scalar_is_char.
-	(string_type): Don't declare.
-	(do_scalar_typedef): Declare.
-	(create_scalar_type): Update prototype.
-	* gengtype.c (string_type): Make static.
-	(scalar_nonchar, scalar_char): New.
-	(do_scalar_typedef): Export.  Always use scalar_nonchar for the type.
-	(resolve_typedef): Use scalar_nonchar for error recovery.
-	(create_scalar_type): Remove name_len field.  Return scalar_char
-	or scalar_nonchar as appropriate.
-	(adjust_field_type): Look at scalar_is_char boolean to decide whether
-	to use string_type.
-	(throughout): Use scalar_nonchar instead of calling create_scalar_type,
-	whenever possible.
-	(main): Initialize scalar_char and scalar_nonchar before calling
-	gen_rtx_next.
-	* gengtype-lex.l: Adjust for removal of second argument to
-	create_scalar_type.  Use yylval.s instead of yylval.t when
-	returning SCALAR.
-	* gengtype-yacc.y: Type of SCALAR is string.  Call
-	create_scalar_type from type:SCALAR rule.  Adjust for removal of
-	second argument to create_scalar_type.
-
-	* vec.h: Remove all #if IN_GENGTYPE blocks.
-	Add comment saying that changes may require adjustments to gengtype.
-	* gengtype.c: Don't include coretypes.h or tm.h.
-	Add comment to inclusion of errors.h.
-	(note_def_vec, note_def_vec_alloc): New functions.
-	* gengtype.h: Declare new functions.
-	* gengtype-lex.l: Don't include coretypes.h.
-	(YY_INPUT, macro_input, push_macro_expansion, mangle_macro_name):
-	Delete.
-	(update_lineno): Remove unnecessary prototype.
-	(DEF_VEC_* rules): Simplify using note_def_vec / note_def_vec_alloc.
-	(VEC rule): Just return VEC_TOKEN.
-	* gengtype-yacc.y (VEC_TOKEN): New token type.
-	(type): Add a production for VEC(a,b).
-	* Makefile.in: Update dependencies.
-
-	* gengtype-lex.l: Remove rules for parsing pointer-to-function
-	typedefs that use the old PARAMS macro.
-
-	* gengtype-lex.l: Remove all rules and states relating to yacc
-	input files.
-	* gengtype-yacc.y: Similarly.
-	* gengtype.c (note_yacc_type): Delete function.
-	* gengtype.h: Update prototypes.
-
-2007-03-26  Joseph Myers  <joseph@codesourcery.com>
-
-	* tree-pretty-print.c (dump_generic_node): Report precision of
-	unnamed integer types.
-
-2007-03-26  Steven Bosscher  <steven@gcc.gnu.org>
-
-	* ifcvt.c (noce_try_store_flag_constants): Don't check
-	no_new_pseudos here.
-	(noce_try_store_flag_constants): Don't check no_new_pseudos.
-	(noce_try_addcc, noce_try_store_flag_mask, noce_try_cmove_arith,
-	noce_try_cmove_arith, noce_try_minmax, noce_try_abs,
-	noce_try_sign_mask): Likewise.
-	(if_convert): Check no_new_pseudos here.
-
-	(cond_exec_process_if_block, noce_process_if_block, find_if_block):
-	Remove prototypes.
-	(struct noce_if_info): Add then_bb, else_bb, join_bb members.
-	(noce_get_condition): Handle new then_else_reversed argument.
-	(noce_init_if_info): Remove, fold into noce_find_if_block.
-	(noce_process_if_block): Take a struct noce_if_info as the
-	argument.  Don't set up one based on ce_if_info.  Update pointer
-	references accordingly.
-	(cond_move_process_if_block): Likewise.
-	(process_if_block): Removed.
-	(find_if_block): Removed.  Move functionality two new functions,
-	noce_find_if_block and cond_exec_find_if_block.
-	(noce_find_if_block): New function.  Be aware of IF-THEN-JOIN
-	blocks and the symmetric IF-ELSE-JOIN case.
-	(cond_exec_find_if_block): Also new function mostly based on old
-	find_if_block and process_if_block.
-	(find_if_header): Replace find_if_block call with separately
-	guarded calls to noce_find_if_block and cond_exec_find_if_block.
-	(find_cond_trap): Update noce_get_condition call.
-	(dead_or_predicable): Likewise.
-
-2007-03-26  Jakub Jelinek  <jakub@redhat.com>
-
-	* config/i386/i386.c (IX86_BUILTIN_CMPNEPD, IX86_BUILTIN_CMPNESD):
-	Remove.
-	(IX86_BUILTIN_PSLLW128, IX86_BUILTIN_PSLLD128, IX86_BUILTIN_PSLLQ128,
-	IX86_BUILTIN_PSRAW128, IX86_BUILTIN_PSRAD128, IX86_BUILTIN_PSRLW128,
-	IX86_BUILTIN_PSRLD128, IX86_BUILTIN_PSRLQ128): Remove.
-	(ix86_init_mmx_sse_builtins): Remove v8hi_ftype_v8hi_v2di and
-	v4si_ftype_v4si_v2di.  Remove __builtin_ia32_psllw128,
-	__builtin_ia32_pslld128, __builtin_ia32_psllq128,
-	__builtin_ia32_psrlw128, __builtin_ia32_psrld128,
-	__builtin_ia32_psrlq128, __builtin_ia32_psraw128 and
-	__builtin_ia32_psrad128 builtins.
-
-2007-03-26  Uros Bizjak  <ubizjak@gmail.com>
-
-	* reg-stack.c (replace_reg): Use IN_RANGE macro in gcc_assert().
-	* config/i386/constraints.md
-	(define_constraint "I"): Use IN_RANGE macro.
-	(define_constraint "J"): Ditto.
-	(define_constraint "K"): Ditto.
-	(define_constraint "M"): Ditto.
-	(define_constraint "N"): Ditto.
-	(define_constraint "O"): Ditto.
-	* config/i386/predicates.md
-	(define_predicate "register_no_elim_operand"): Use IN_RANGE macro.
-	(define_predicate "const_0_to_3_operand"): Ditto.
-	(define_predicate "const_0_to_7_operand"): Ditto.
-	(define_predicate "const_0_to_15_operand"): Ditto.
-	(define_predicate "const_0_to_63_operand"): Ditto.
-	(define_predicate "const_0_to_255_operand"): Ditto.
-	(define_predicate "const_1_to_31_operand"): Ditto.
-	(define_predicate "const_2_to_3_operand"): Ditto.
-	(define_predicate "const_4_to_7_operand"): Ditto.
-
-2007-03-25  David Edelsohn  <edelsohn@gnu.org>
-
-	* config/rs6000/rs6000.c (rs6000_emit_prologue): Always clobber LR
-	in SImode for save_world.
-	* config/rs6000/altivec.md (save_world, restore_world): Convert to
-	LR hard reg.
-
-2007-03-25  Dorit Nuzman  <dorit@il.ibm.com>
-
-	PR tree-optimization/30784
-	* fold-const.c (fold_ternary): Handle CONSTRUCTOR in case
-	BIT_FIELD_REF.
-
-2007-03-25  Revital Eres  <eres@il.ibm.com>
-
-	* tree-if-conv.c (if_convertible_gimple_modify_stmt_p):
-	  Fold movement_possibility function into it.
-
-2007-03-25  David Edelsohn  <edelsohn@gnu.org>
-
-	* config/rs6000/darwin.md (load_macho_picbase): Ignore operand 0.
-	(load_macho_picbase_{si,di}): Convert to LR hard reg.
-	(call_indirect_nonlocal_darwin64): Same.
-	(call_nonlocal_darwin64): Same.
-	(call_value_indirect_nonlocal_darwin64): Same.
-	(call_value_nonlocal_darwin64): Same.
-	(sibcall_nonlocal_darwin64): Same.
-	(sibcall_value_nonlocal_darwin64): Same.
-	(sibcall_symbolic_64): Same.
-	(sibcall_value_symbolic_64): Same.
-	* config/rs6000/rs6000.c (rs6000_legitimize_tls_address): Remove
-	LR pseudo.
-	(rs6000_emit_load_toc_table): Same.
-	* config/rs6000/altivec.md (restore_world): Convert to LR hard reg.
-	* config/rs6000/rs6000.md (mulh_call): Convert to LR hard reg.
-	(mull_call): Same.
-	(divss_call): Same.
-	(divus_call): Same.
-	(quoss_call): Same.
-	(quous_call): Same.
-	(load_toc_v4_pic_si): Same
-	(load_toc_v4_PIC_1): Same.
-	(load_toc_v4_PIC_1b): Same.
-	(call_indirect_aix{32,64}): Same.
-	(call_value_indirect_aix{32,64}): Same.
-	(call): Same.
-	(call_value): Same.
-	(call_local{32,64}): Same.
-	(call_value_local{32,64}): Same.
-	(call_indirect_nonlocal_aix{32,64}): Same.
-	(call_nonlocal_aix{32,64}): Same.
-	(call_value_indirect_nonlocal_aix{32,64}): Same.
-	(call_value_nonlocal_aix{32,64}): Same.
-	(call_indirect_nonlocal_sysv<mode>): Same.
-	(call_nonlocal_sysv<mode>): Same.
-	(call_value_indirect_nonlocal_sysv<mode>): Same.
-	(call_value_nonlocal_sysv<mode>): Same.
-	(sibcall): Same.
-	(sibcall_local{32,64}): Same.
-	(sibcall_value_local{32,64}): Same.
-	(sibcall_nonlocal_aix{32,64}): Same.
-	(sibcall_value_nonlocal_aix{32,64}): Same.
-	(sibcall_nonlocal_sysv<mode>): Same.
-	(sibcall_value): Same.
-	(sibcall_value_nonlocal_sysv<mode>): Same.
-
-2007-03-24  Paul Brook  <paul@codesourcery.com>
-
-	* config/arm/lib1funcs.asm (div0): Use ARM_FUNC_START and do_push.
-	* config/arm/linux-eabi.h: Remove legacy syscall hack.
-
-2007-03-24  Richard Henderson  <rth@redhat.com>
-
-	* config/ia64/constraints.md: New file.
-	* config/ia64/predicates.md: Replace CONST_OK_FOR_? with
-	satisfies_constraint_?.
-	* config/ia64/ia64.c (ia64_move_ok, ia64_legitimate_constant_p,
-	ia64_reload_gp, spill_restore_mem, ia64_expand_prologue,
-	ia64_expand_epilogue, ia64_split_return_addr_rtx, ia64_rtx_costs,
-	ia64_output_mi_thunk): Likewise.
-	(ia64_const_ok_for_letter_p): Remove.
-	(ia64_const_double_ok_for_letter_p): Remove.
-	(ia64_extra_constraint): Remove.
-	* config/ia64/ia64.h (REG_CLASS_FROM_LETTER): Remove.
-	(CONST_OK_FOR_I, CONST_OK_FOR_J, CONST_OK_FOR_K, CONST_OK_FOR_L,
-	CONST_OK_FOR_M, CONST_OK_FOR_N, CONST_OK_FOR_O, CONST_OK_FOR_P,
-	CONST_OK_FOR_LETTER_P, CONST_DOUBLE_OK_FOR_G,
-	CONST_DOUBLE_OK_FOR_LETTER_P, EXTRA_CONSTRAINT,
-	EXTRA_MEMORY_CONSTRAINT): Remove.
-	* config/ia64/ia64.md: Include constriants.md.  Replace
-	CONST_OK_FOR_? with satisfies_constraint_?.
-
-2007-03-23  Michael Meissner  <michael.meissner@amd.com>
-	    H.J. Lu  <hongjiu.lu@intel.com>
-
-	* config/dfp-bit.h (DPD_BID_NAME): New macro to give either the
-	DPD or BID name.
-	(name macros): Use DPD_BID_NAME to convert names properly.
-
-	* optabs.c (DECIMAL_PREFIX): Prefix string to use for the current
-	decimal floating point format.
-	(init_floating_libfuncs): Change decimal functions so that they
-	have a "bid_" prefix if the decimal system uses the BID format,
-	and "dpd_" prefix if the decimal system uses the DPD format.
-	(init_interclass_conv_libfuncs): Ditto.
-	(init_intraclass_conv_libfuncs): Ditto.
-
-	* config.in (ENABLE_DECIMAL_BID_FORMAT): New macro to say we are
-	using the BID format.
-
-	* configure.ac (ENABLE_DECIMAL_BID_FORMAT): Set to 1/0 to say
-	whether we are using the BID decimal format.
-	* configure: Regenerate.
-
-	* c-cppbuiltin.c (c_cpp_builtins): Define __STDC_WANT_DEC_FP__ if
-	the compiler has decimal floating point enabled.  Define
-	__DECIMAL_BID_FORMAT__ if BID decimal floating point is used
-	instead of DPD.
-
-	* config.in (ENABLE_DECIMAL_BID_FORMAT): New macro to say we are
-	using the BID format.
-
-	* configure.ac (ENABLE_DECIMAL_BID_FORMAT): Set to 1/0 to say
-	whether we are using the BID decimal format.
-	* configure: Regenerate.
-
-	* c-cppbuiltin.c (c_cpp_builtins): Define __STDC_WANT_DEC_FP__ if
-	the compiler has decimal floating point enabled.  Define
-	__DECIMAL_BID_FORMAT__ if BID decimal floating point is used
-	instead of DPD.
-
-	* doc/install.texi (--enable-decimal-float): Document BID and DPD
-	options, and that it is enabled for i386/x86_64 systems.
-
-	* Makefile.in (enable_decimal_float): New.
-	(DECNUMFMT): New.
-	(DECNUMINC): Add  -I$(DECNUMFMT).
-	(DECNUM_H): Mov decimal32.h, decimal64.h and decimal128.h
-	to $(DECNUMFMT) from $(DECNUM).
-
-	* configure.ac: Support * --enable-decimal-float={no,yes,bid,dpd}.
-	Substitute enable_decimal_float.
-	* configure: Regenerated.
-
-	PR other/30529
-	* config/dfp-bit.c (__dec_byte_swap): Use uint32_t instead of
-	unsigned long.
-
-	* configure.ac: Enable decimal float for x86_64-*-linux*.
-	* configure: Regenerated.
-
-	PR other/30530
-	* dfp.c (decimal_real_arithmetic): Use decimal128FlipSign and
-	decimal128ClearSign to flip and clear the sign bit in decimal128.
-	(decimal_real_maxval): Set decimal128SetSign to set the sign
-	bit in decimal128.
-
-2007-03-23  Ian Lance Taylor  <iant@google.com>
-
-	* fold-const.c (fold_binary): Correct warning for X - c >= X.
-
-2007-03-23  Ian Lance Taylor  <iant@google.com>
-
-	* tree-dump.c (dump_files): Correct comment.
-
-2007-03-23  Ian Lance Taylor  <iant@google.com>
-
-	* tree-vrp.c (operand_less_p): Ignore fold overflow warnings.
-
-2007-03-23  Steven Bosscher  <steven@gcc.gnu.org>
-
-	* tracer.c (tracer): Don't take FLAGS argument.  Assert we are
-	in cfglayout mode.  Don't go into and out of cfglayout mode.
-	Link the blocks in the order of the constructed traces.
-	(rest_of_handle_tracer): Adjust call to tracer.
-	* loop-init.c (rtl_loop_init): Assert we are in cfglayout mode.
-	Don't go into cfglayout mode.
-	(rtl_loop_done): Don't go out of cfglayout mode.
-	* cfglayout.c (relink_block_chain): New function, split out from...
-	(fixup_reorder_chain): ...here.  Remove redundant checking.
-	(cfg_layout_finalize): Don't clear the header, footer, and aux
-	fields here, move the code to do so to relink_block_chain.  Likewise
-	for free_original_copy_tables.
-	* rtl.h (tracer): Update prototype.
-	* bb-reorder.c (reorder_basic_blocks): Don't take FLAGS argument.
-	Assert we are in cfglayout mode.  Don't go into and out of cfglayout
-	mode.  Use relink_block_chain to serialize the CFG according to the
-	new basic block order.  Move targetm.cannot_modify_jumps_p check from
-	here...
-	(gate_handle_reorder_blocks): ...to here.
-	(duplicate_computed_gotos): Move targetm.cannot_modify_jumps_p check
-	from here...
-	(gate_duplicate_computed_gotos): ...to here.
-	(rest_of_handle_reorder_blocks): Don't see if anything has changed,
-	something always changes when going into and out of cfglayout mode.
-	Perform an expensive cfg cleanup while going into cfglayout mode.
-	Always update liveness information on HAVE_conditional_execution
-	targets.  Reserialize the basic blocks and go out of cfglayout mode.
-	* reg-stack.c: Include cfglayout.h.
-	(rest_of_handle_stack_regs): Go into and out of cfglayout mode around
-	the call to reorder_basic_blocks.
-	* basic-block.h (reorder_basic_blocks): Update prototype.
-	(relink_block_chain): New prototype.
-	* passes.c (pass_outof_cfg_layout_mode): Move after cse2.
-
-2007-03-23  Joseph Myers  <joseph@codesourcery.com>
-
-	* config/mips/mips.md (type, hazard, *movdi_32bit,
-	*movdi_gp32_fp64, *movdi_64bit, *movsi_internal, movcc,
-	*movhi_internal, *movqi_internal, *movsf_hardfloat,
-	*movdf_hardfloat_64bit, *movdf_hardfloat_32bit, *movdf_softfloat,
-	movv2sf_hardfloat_64bit, load_df_low, load_df_high, store_df_high,
-	mthc1, mfhc1): Change xfer instruction type to mfc and mtc, as
-	applicable.
-	(movcc): Change first xfer to multi.
-	* config/mips/24k.md, config/mips/4100.md, config/mips/4300.md,
-	config/mips/5000.md, config/mips/5400.md, config/mips/5500.md,
-	config/mips/5k.md, config/mips/7000.md, config/mips/9000.md,
-	config/mips/generic.md: Change reservations using "xfer" to use
-	"mfc,mtc".
-	* config/mips/sb1.md (ir_sb1_mtxfer): Use "mtc" instead of
-	using match_operand.
-	(ir_sb1_mfxfer): Use "mfc" instead of using match_operand.
-	* config/mips/sr71k.md (ir_sr70_xfer_from): Use "mfc" instead of
-	examining mode.
-	(ir_sr70_xfer_to): Use "mtc" instead of examining mode.
-
-2007-03-22  Richard Henderson  <rth@redhat.com>
-
-	* config/i386/i386.c: Remove unnecessary function declarations.


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