A recent patch increased GCC's memory consumption in some cases!
Jan Hubicka
jh@suse.cz
Wed Sep 5 09:13: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:
Hi,
the savings come from optabs patch and are pretty nice indeed. The
regression in PR28071 comes from fact that we now inline at -O2, I will
modify the tester to pass -fno-inline-small-functions to that testcase
so both variants remains tested.
Honza
>
>
> comparing empty function compilation at -O0 level:
> Ovarall memory allocated via mmap and sbrk decreased from 8333k to 6952k, overall -19.86%
> Peak amount of GGC memory allocated before garbage collecting run decreased from 3397k to 1149k, overall -195.65%
> Peak amount of GGC memory still allocated after garbage collecting decreased from 3045k to 1054k, overall -188.90%
> Amount of produced GGC garbage decreased from 525k to 239k, overall -119.16%
> Amount of memory still referenced at the end of compilation decreased from 3800k to 1067k, overall -255.86%
> Overall memory needed: 8333k -> 6952k
> Peak memory use before GGC: 3397k -> 1149k
> Peak memory use after GGC: 3045k -> 1054k
> Maximum of released memory in single GGC run: 352k -> 121k
> Garbage: 525k -> 239k
> Leak: 3800k -> 1067k
> Overhead: 915k -> 145k
> GGC runs: 3 -> 4
>
> comparing empty function compilation at -O0 -g level:
> Ovarall memory allocated via mmap and sbrk decreased from 8349k to 6972k, overall -19.75%
> Peak amount of GGC memory allocated before garbage collecting run decreased from 3424k to 1176k, overall -191.16%
> Peak amount of GGC memory still allocated after garbage collecting decreased from 3072k to 1081k, overall -184.18%
> Amount of produced GGC garbage decreased from 527k to 242k, overall -117.97%
> Amount of memory still referenced at the end of compilation decreased from 3832k to 1100k, overall -248.32%
> Overall memory needed: 8349k -> 6972k
> Peak memory use before GGC: 3424k -> 1176k
> Peak memory use after GGC: 3072k -> 1081k
> Maximum of released memory in single GGC run: 352k -> 124k
> Garbage: 527k -> 242k
> Leak: 3832k -> 1100k
> Overhead: 919k -> 150k
> GGC runs: 3 -> 4
>
> comparing empty function compilation at -O1 level:
> Ovarall memory allocated via mmap and sbrk decreased from 8385k to 7008k, overall -19.65%
> Peak amount of GGC memory allocated before garbage collecting run decreased from 3397k to 1149k, overall -195.65%
> Peak amount of GGC memory still allocated after garbage collecting decreased from 3045k to 1046k, overall -191.11%
> Amount of produced GGC garbage decreased from 527k to 241k, overall -118.11%
> Amount of memory still referenced at the end of compilation decreased from 3800k to 1068k, overall -255.72%
> Overall memory needed: 8385k -> 7008k
> Peak memory use before GGC: 3397k -> 1149k
> Peak memory use after GGC: 3045k -> 1046k
> Maximum of released memory in single GGC run: 352k -> 116k
> Garbage: 527k -> 241k
> Leak: 3800k -> 1068k
> Overhead: 915k -> 145k
> GGC runs: 3
>
> comparing empty function compilation at -O2 level:
> Ovarall memory allocated via mmap and sbrk decreased from 8393k to 7012k, overall -19.69%
> Peak amount of GGC memory allocated before garbage collecting run decreased from 3397k to 1149k, overall -195.65%
> Peak amount of GGC memory still allocated after garbage collecting decreased from 3045k to 1046k, overall -191.11%
> Amount of produced GGC garbage decreased from 531k to 245k, overall -116.33%
> Amount of memory still referenced at the end of compilation decreased from 3801k to 1069k, overall -255.47%
> Overall memory needed: 8393k -> 7012k
> Peak memory use before GGC: 3397k -> 1149k
> Peak memory use after GGC: 3045k -> 1046k
> Maximum of released memory in single GGC run: 352k -> 116k
> Garbage: 531k -> 245k
> Leak: 3801k -> 1069k
> Overhead: 916k -> 146k
> GGC runs: 3
>
> comparing empty function compilation at -O3 level:
> Ovarall memory allocated via mmap and sbrk decreased from 8393k to 7012k, overall -19.69%
> Peak amount of GGC memory allocated before garbage collecting run decreased from 3397k to 1149k, overall -195.65%
> Peak amount of GGC memory still allocated after garbage collecting decreased from 3045k to 1046k, overall -191.11%
> Amount of produced GGC garbage decreased from 531k to 245k, overall -116.33%
> Amount of memory still referenced at the end of compilation decreased from 3801k to 1069k, overall -255.47%
> Overall memory needed: 8393k -> 7012k
> Peak memory use before GGC: 3397k -> 1149k
> Peak memory use after GGC: 3045k -> 1046k
> Maximum of released memory in single GGC run: 352k -> 116k
> Garbage: 531k -> 245k
> Leak: 3801k -> 1069k
> Overhead: 916k -> 146k
> GGC runs: 3
>
> comparing combine.c compilation at -O0 level:
> Ovarall memory allocated via mmap and sbrk decreased from 23757k to 21936k, overall -8.30%
> Peak amount of GGC memory allocated before garbage collecting run decreased from 10322k to 8228k, overall -25.45%
> Peak amount of GGC memory still allocated after garbage collecting decreased from 9566k to 7568k, overall -26.40%
> Amount of memory still referenced at the end of compilation decreased from 8856k to 6124k, overall -44.61%
> Overall memory needed: 23757k -> 21936k
> Peak memory use before GGC: 10322k -> 8228k
> Peak memory use after GGC: 9566k -> 7568k
> Maximum of released memory in single GGC run: 1903k -> 1581k
> Garbage: 39082k -> 38811k
> Leak: 8856k -> 6124k
> Overhead: 5782k -> 5013k
> GGC runs: 254 -> 372
>
> comparing combine.c compilation at -O0 -g level:
> Ovarall memory allocated via mmap and sbrk decreased from 25621k to 23952k, overall -6.97%
> Peak amount of GGC memory allocated before garbage collecting run decreased from 11966k to 10058k, overall -18.97%
> Peak amount of GGC memory still allocated after garbage collecting decreased from 11331k to 9332k, overall -21.42%
> Amount of memory still referenced at the end of compilation decreased from 11682k to 8951k, overall -30.52%
> Overall memory needed: 25621k -> 23952k
> Peak memory use before GGC: 11966k -> 10058k
> Peak memory use after GGC: 11331k -> 9332k
> Maximum of released memory in single GGC run: 1516k -> 1875k
> Garbage: 39436k -> 39156k
> Leak: 11682k -> 8951k
> Overhead: 6454k -> 5685k
> GGC runs: 249 -> 342
>
> comparing combine.c compilation at -O1 level:
> Ovarall memory allocated via mmap and sbrk decreased from 35753k to 33028k, overall -8.25%
> Peak amount of GGC memory allocated before garbage collecting run decreased from 18982k to 16974k, overall -11.83%
> Peak amount of GGC memory still allocated after garbage collecting decreased from 18792k to 16775k, overall -12.02%
> Amount of memory still referenced at the end of compilation decreased from 8995k to 6263k, overall -43.62%
> Overall memory needed: 35753k -> 33028k
> Peak memory use before GGC: 18982k -> 16974k
> Peak memory use after GGC: 18792k -> 16775k
> Maximum of released memory in single GGC run: 1378k -> 1379k
> Garbage: 52637k -> 52377k
> Leak: 8995k -> 6263k
> Overhead: 6749k -> 5979k
> GGC runs: 321 -> 443
>
> comparing combine.c compilation at -O2 level:
> Ovarall memory allocated via mmap and sbrk decreased from 37765k to 35276k, overall -7.06%
> Peak amount of GGC memory allocated before garbage collecting run decreased from 19037k to 17082k, overall -11.44%
> Peak amount of GGC memory still allocated after garbage collecting decreased from 18847k to 16911k, overall -11.45%
> Amount of produced GGC garbage increased from 71156k to 71293k, overall 0.19%
> Amount of memory still referenced at the end of compilation decreased from 9326k to 6589k, overall -41.54%
> Overall memory needed: 37765k -> 35276k
> Peak memory use before GGC: 19037k -> 17082k
> Peak memory use after GGC: 18847k -> 16911k
> Maximum of released memory in single GGC run: 1389k -> 1334k
> Garbage: 71156k -> 71293k
> Leak: 9326k -> 6589k
> Overhead: 8885k -> 8239k
> GGC runs: 382 -> 512
>
> comparing combine.c compilation at -O3 level:
> Peak amount of GGC memory allocated before garbage collecting run decreased from 19311k to 17316k, overall -11.52%
> Peak amount of GGC memory still allocated after garbage collecting decreased from 18963k to 16965k, overall -11.78%
> Amount of memory still referenced at the end of compilation decreased from 9448k to 6708k, overall -40.85%
> Overall memory needed: 40497k -> 39852k
> Peak memory use before GGC: 19311k -> 17316k
> Peak memory use after GGC: 18963k -> 16965k
> Maximum of released memory in single GGC run: 2262k -> 2132k
> Garbage: 92846k -> 92594k
> Leak: 9448k -> 6708k
> Overhead: 11515k -> 10669k
> GGC runs: 413 -> 542
>
> comparing insn-attrtab.c compilation at -O0 level:
> Peak amount of GGC memory allocated before garbage collecting run decreased from 60580k to 58582k, overall -3.41%
> Peak amount of GGC memory still allocated after garbage collecting decreased from 34074k to 32075k, overall -6.23%
> Amount of memory still referenced at the end of compilation decreased from 11585k to 8613k, overall -34.51%
> Overall memory needed: 140105k -> 138388k
> Peak memory use before GGC: 60580k -> 58582k
> Peak memory use after GGC: 34074k -> 32075k
> Maximum of released memory in single GGC run: 34143k -> 34144k
> Garbage: 132018k -> 131996k
> Leak: 11585k -> 8613k
> Overhead: 15587k -> 14817k
> GGC runs: 197 -> 300
>
> comparing insn-attrtab.c compilation at -O0 -g level:
> Peak amount of GGC memory allocated before garbage collecting run decreased from 61730k to 59731k, overall -3.35%
> Peak amount of GGC memory still allocated after garbage collecting decreased from 35223k to 33224k, overall -6.02%
> Amount of memory still referenced at the end of compilation decreased from 13261k to 10529k, overall -25.95%
> Overall memory needed: 141361k -> 139636k
> Peak memory use before GGC: 61730k -> 59731k
> Peak memory use after GGC: 35223k -> 33224k
> Maximum of released memory in single GGC run: 34144k
> Garbage: 132243k -> 131964k
> Leak: 13261k -> 10529k
> Overhead: 15967k -> 15198k
> GGC runs: 200 -> 291
>
> comparing insn-attrtab.c compilation at -O1 level:
> Peak amount of GGC memory allocated before garbage collecting run decreased from 59097k to 57094k, overall -3.51%
> Peak amount of GGC memory still allocated after garbage collecting decreased from 52850k to 50856k, overall -3.92%
> Amount of memory still referenced at the end of compilation decreased from 12480k to 9748k, overall -28.02%
> Overall memory needed: 150261k -> 149544k
> Peak memory use before GGC: 59097k -> 57094k
> Peak memory use after GGC: 52850k -> 50856k
> Maximum of released memory in single GGC run: 24232k
> Garbage: 212957k -> 212699k
> Leak: 12480k -> 9748k
> Overhead: 25595k -> 24826k
> GGC runs: 223 -> 324
>
> comparing insn-attrtab.c compilation at -O2 level:
> Peak amount of GGC memory allocated before garbage collecting run decreased from 59723k to 57737k, overall -3.44%
> Peak amount of GGC memory still allocated after garbage collecting decreased from 54429k to 52445k, overall -3.78%
> Amount of memory still referenced at the end of compilation decreased from 13562k to 10836k, overall -25.16%
> Overall memory needed: 188945k -> 187280k
> Peak memory use before GGC: 59723k -> 57737k
> Peak memory use after GGC: 54429k -> 52445k
> Maximum of released memory in single GGC run: 22887k -> 22942k
> Garbage: 254069k -> 254228k
> Leak: 13562k -> 10836k
> Overhead: 31319k -> 30585k
> GGC runs: 250 -> 355
>
> comparing insn-attrtab.c compilation at -O3 level:
> Peak amount of GGC memory still allocated after garbage collecting decreased from 65141k to 63142k, overall -3.17%
> Amount of memory still referenced at the end of compilation decreased from 13573k to 10841k, overall -25.20%
> Overall memory needed: 195937k -> 194308k
> Peak memory use before GGC: 71708k -> 69709k
> Peak memory use after GGC: 65141k -> 63142k
> Maximum of released memory in single GGC run: 23330k -> 23328k
> Garbage: 281233k -> 280992k
> Leak: 13573k -> 10841k
> Overhead: 33117k -> 32353k
> GGC runs: 253 -> 355
>
> comparing Gerald's testcase PR8361 compilation at -O0 level:
> Amount of memory still referenced at the end of compilation decreased from 55630k to 52902k, overall -5.16%
> Overall memory needed: 157015k -> 155087k
> Peak memory use before GGC: 91688k -> 89624k
> Peak memory use after GGC: 90780k -> 88736k
> Maximum of released memory in single GGC run: 18122k -> 18056k
> Garbage: 210576k -> 210310k
> Leak: 55630k -> 52902k
> Overhead: 27201k -> 26438k
> GGC runs: 393 -> 419
>
> comparing Gerald's testcase PR8361 compilation at -O0 -g level:
> Amount of memory still referenced at the end of compilation decreased from 78499k to 75770k, overall -3.60%
> Overall memory needed: 177743k -> 175351k
> Peak memory use before GGC: 104297k -> 101933k
> Peak memory use after GGC: 103253k -> 100924k
> Maximum of released memory in single GGC run: 18632k -> 18267k
> Garbage: 216439k -> 216157k
> Leak: 78499k -> 75770k
> Overhead: 32882k -> 32117k
> GGC runs: 373 -> 386
>
> comparing Gerald's testcase PR8361 compilation at -O1 level:
> Amount of memory still referenced at the end of compilation decreased from 55526k to 52790k, overall -5.18%
> Overall memory needed: 133417k -> 131573k
> Peak memory use before GGC: 93458k -> 91652k
> Peak memory use after GGC: 92527k -> 90741k
> Maximum of released memory in single GGC run: 17307k -> 17316k
> Garbage: 317319k -> 317102k
> Leak: 55526k -> 52790k
> Overhead: 32854k -> 32089k
> GGC runs: 498 -> 523
>
> comparing Gerald's testcase PR8361 compilation at -O2 level:
> Amount of produced GGC garbage increased from 373682k to 382812k, overall 2.44%
> Amount of memory still referenced at the end of compilation decreased from 56724k to 54024k, overall -5.00%
> Overall memory needed: 141569k -> 138713k
> Peak memory use before GGC: 94176k -> 91932k
> Peak memory use after GGC: 93233k -> 90988k
> Maximum of released memory in single GGC run: 17304k -> 17317k
> Garbage: 373682k -> 382812k
> Leak: 56724k -> 54024k
> Overhead: 39139k -> 38974k
> GGC runs: 560 -> 591
>
> comparing Gerald's testcase PR8361 compilation at -O3 level:
> Amount of memory still referenced at the end of compilation decreased from 57113k to 54388k, overall -5.01%
> Overall memory needed: 144957k -> 143141k
> Peak memory use before GGC: 94981k -> 92850k
> Peak memory use after GGC: 93916k -> 91877k
> Maximum of released memory in single GGC run: 17716k -> 17669k
> Garbage: 413461k -> 413424k
> Leak: 57113k -> 54388k
> Overhead: 42409k -> 41686k
> GGC runs: 583 -> 611
>
> comparing PR rtl-optimization/28071 testcase compilation at -O0 level:
> Peak amount of GGC memory still allocated after garbage collecting decreased from 59131k to 57133k, overall -3.50%
> Amount of memory still referenced at the end of compilation decreased from 9011k to 6279k, overall -43.51%
> Overall memory needed: 381013k -> 379278k
> Peak memory use before GGC: 103478k -> 101479k
> Peak memory use after GGC: 59131k -> 57133k
> Maximum of released memory in single GGC run: 50583k -> 50582k
> Garbage: 179673k -> 179391k
> Leak: 9011k -> 6279k
> Overhead: 31654k -> 30884k
> GGC runs: 65 -> 107
>
> comparing PR rtl-optimization/28071 testcase compilation at -O0 -g level:
> Peak amount of GGC memory still allocated after garbage collecting decreased from 59765k to 57766k, overall -3.46%
> Amount of memory still referenced at the end of compilation decreased from 10719k to 7987k, overall -34.20%
> Overall memory needed: 381837k -> 380098k
> Peak memory use before GGC: 104111k -> 102113k
> Peak memory use after GGC: 59765k -> 57766k
> Maximum of released memory in single GGC run: 50582k -> 50583k
> Garbage: 179778k -> 179544k
> Leak: 10719k -> 7987k
> Overhead: 32119k -> 31350k
> GGC runs: 72 -> 112
>
> comparing PR rtl-optimization/28071 testcase compilation at -O1 level:
> Amount of memory still referenced at the end of compilation decreased from 18350k to 15618k, overall -17.49%
> Overall memory needed: 290081k -> 295172k
> Peak memory use before GGC: 82785k -> 80789k
> Peak memory use after GGC: 75173k -> 73174k
> Maximum of released memory in single GGC run: 40017k -> 40020k
> Garbage: 236069k -> 235792k
> Leak: 18350k -> 15618k
> Overhead: 32718k -> 31949k
> GGC runs: 69 -> 105
>
> comparing PR rtl-optimization/28071 testcase compilation at -O2 level:
> Overall memory allocated via mmap and sbrk increased from 277853k to 1017628k, overall 266.25%
> Peak amount of GGC memory allocated before garbage collecting increased from 80159k to 166802k, overall 108.09%
> Peak amount of GGC memory still allocated after garbage collecting increased from 75173k to 156366k, overall 108.01%
> Amount of produced GGC garbage increased from 246133k to 368454k, overall 49.70%
> Amount of memory still referenced at the end of compilation increased from 18439k to 25861k, overall 40.25%
> Overall memory needed: 277853k -> 1017628k
> Peak memory use before GGC: 80159k -> 166802k
> Peak memory use after GGC: 75173k -> 156366k
> Maximum of released memory in single GGC run: 33750k -> 81038k
> Garbage: 246133k -> 368454k
> Leak: 18439k -> 25861k
> Overhead: 34943k -> 46376k
> GGC runs: 82 -> 106
>
> 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 decreased from 28581k to 25849k, overall -10.57%
> Overall memory needed: 1019105k -> 1017464k
> Peak memory use before GGC: 168801k -> 166802k
> Peak memory use after GGC: 158365k -> 156366k
> Maximum of released memory in single GGC run: 83495k -> 83493k
> Garbage: 357941k -> 357657k
> Leak: 28581k -> 25849k
> Overhead: 47049k -> 46279k
> GGC runs: 65 -> 100
>
> Head of the ChangeLog is:
>
> --- /usr/src/SpecTests/sandbox-britten-memory/x86_64/mem-result/ChangeLog 2007-09-04 11:53:31.000000000 +0000
> +++ /usr/src/SpecTests/sandbox-britten-memory/gcc/gcc/ChangeLog 2007-09-05 03:58:47.000000000 +0000
> @@ -1,3 +1,181 @@
> +2007-09-04 Andrew Pinski <andrew_pinski@playstation.sony.com>
> +
> + * config.gcc (powerpc*-*-*): Install
> + spu2vmx.h, vec_types.h, and si2vmx.h headers.
> + * config/rs6000/spu2vmx.h: New header.
> + * config/rs6000/si2vmx.h: New header.
> + * config/rs6000/vec_types.h: New header.
> +
> +2007-09-05 Ben Elliston <bje@au.ibm.com>
> +
> + * varasm.c (initializer_constant_valid_p): Fix comment typo.
> +
> +2007-09-05 Ben Elliston <bje@au.ibm.com>
> +
> + * config/rs6000/ppu_intrinsics.h (__ldarx): Use `Z' constraint,
> + not `m' for *ptrp.
> + (__stdcx): Make asm volatile.
> + (__stwcx, __stdcx): Return only 0 or 1.
> +
> +2007-09-05 Jan Hubicka <jh@suse.cz>
> +
> + Revert:
> +
> + 2007-09-04 Jan Hubicka <jh@suse.cz>
> + * tree-tailcall.c (eliminate_tail_call): Expect unrenamed return value.
> +
> + 2007-09-04 Richard Guenther <rguenther@suse.de>
> + * tree-ssa-operands.c (add_virtual_operand): Only mark
> + stores as has_volatile_ops if alias information is not available.
> +
> +2007-09-05 Jakub Jelinek <jakub@redhat.com>
> +
> + * config/rs6000/tramp.asm: Include config.h.
> + Check __PIC__ or __pic__ macro instead of SHARED.
> +
> + PR rtl-optimization/32300
> + * see.c (see_copy_insn): New function.
> + (see_def_extension_not_merged, see_merge_one_use_extension,
> + see_merge_one_def_extension): Use it. Avoid changing
> + PREV_INSN/NEXT_INSN chains directly, insted emit insns
> + into sequences. Call df_insn_delete on temporary insns
> + that won't be emitted into the insn stream.
> + (rest_of_handle_see): Turn off DF_DEFER_INSN_RESCAN
> + and run df_process_deferred_rescans () before run_fast_dce.
> +
> + PR tree-optimization/33017
> + * tree-data-ref.c (split_constant_offset) <case SSA_NAME>: Don't
> + recurse for pure or const function calls.
> +
> +2007-09-04 Laurynas Biveinis <laurynas.biveinis@gmail.com>
> +
> + * c-format.c: Include alloc-pool.h.
> + (check_format_info_main): New argument fwt_alloc. Use allocation
> + pool instead of GC. Remove GC deallocation code.
> + (check_format_arg): Create allocation pool, pass it to
> + check_format_info_main and free it afterwards.
> + * Makefile.in (c-format.o): Add alloc-pool.h dependency.
> +
> +2007-09-05 Ben Elliston <bje@au.ibm.com>
> +
> + * config/rs6000/ppu_intrinsics.h (__protected_stream_count):
> + Rename count macro arugment for clarity.
> + (__protected_unlimited_stream_set): Pass UG=1 to __dcbt_TH1000.
> + (__protected_stream_set): Likewise, pass 0.
> +
> +2007-09-04 Jan Hubicka <jh@suse.cz>
> +
> + * tree-tailcall.c (eliminate_tail_call): Expect unrenamed return value.
> +
> +2007-09-04 Jan Hubicka <jh@suse.cz>
> +
> + * invoke.texi (-finline-small-functions): Document.
> + * ipa-inline.c (cgraph_default_inline_p): Do not use DECL_INLINE
> + when deciding what is inlinable.
> + (cgraph_decide_recursive_inlining): Handle flag_inline_functions.
> + (cgraph_decide_inlining_of_small_function): Handle new flags.
> + (cgraph_decide_inlining_incrementally): Likewise.
> + * opts.c (decode_options): Enable flag_inline_small_functions at -O2
> + * common.opt (finline-small-functions): New.
> + * Makefile.in (build/gengtype.o-warn): Work around PR29478
> +
> +2007-09-04 Richard Guenther <rguenther@suse.de>
> +
> + * tree-ssa-operands.c (add_virtual_operand): Only mark
> + stores as has_volatile_ops if alias information is not available.
> +
> +2007-09-04 Andrew Haley <aph@redhat.com>
> +
> + * config/arm/libgcc-bpabi.ver: Add _Unwind_Backtrace as GCC_4.3.0.
> +
> +2007-09-04 Andrew Haley <aph@redhat.com>
> +
> + * config/arm/libunwind.S (UNWIND_WRAPPER _Unwind_Backtrace): New.
> + * config/arm/unwind-arm.h (__gnu_Unwind_Backtrace): New.
> + * config/arm/unwind-arm.c (__gnu_Unwind_Backtrace): New.
> +
> +2007-09-04 Emmanuel Thome <Emmanuel.Thome@inria.fr>
> +
> + PR c++/14178
> + * common.opt: Mention ABI version 2 in comment.
> +
> +2007-09-04 Jan Hubicka <jh@suse.cz>
> +
> + * optabs.c (debug_optab_libfunc): Update; make available to gdb.
> + (libfunc_entry): New structure.
> + (libfunc_hash): New hashtable.
> + (hash_libfunc): New function.
> + (eq_libfunc): New function.
> + (convert_optab_libfunc): New function.
> + (optab_libfunc): New function.
> + (expand_binop, sign_expand_binop, expand_twoval_binop_libfunc,
> + expand_unop, prepare_cmp_insn, prepare_float_insn, gen_add2_insn,
> + expand_float, expand_fix, new_optab, new_convert_optab):
> + Update for new libfunc API.
> + (init_libfunc, init_integral_libfuncs,
> + init_floating_libfuncs, init_interclass_conv_libfuncs
> + init_intraclass_conv_libfuncs): Remove; reorganize all logic to:
> + (gen_libfunc, gen_int_libfunc, gen_fp_libfunc, gen_int_fp_libfunc,
> + gen_intv_fp_libfunc, gen_interclass_conv_libfunc,
> + gen_int_to_fp_conv_libfunc, gen_ufloat_conv_libfunc,
> + gen_int_to_fp_nondecimal_conv_libfunc, gen_fp_to_int_conv_libfunc,
> + gen_intraclass_conv_libfunc, gen_trunc_conv_libfunc,
> + gen_extend_conv_libfunc): New.
> + (init_one_libfunc): Revamp for hashtables.
> + (set_conv_libfunc): Likewise.
> + (init_optabs): Initialize hashtable; use lazy initialization where
> + possible.
> + * optabs.h (optab_handlers): Move out of GGC.
> + (optab, convert_optab): Move out of GGC; add lazy gen info.
> + (code_to_optab, convert_optab_table, optab_table): Move out of GGC.
> + (optab_libfunc, convert_optab_libfunc): New.
> + * builtins.c (expand_builtin_powi): Update for new API.
> + * expr.c (convert_move): Likewise.
> + * expmed.c (expand_divmod): Likewise.
> +
> +2007-09-04 Daniel Jacobowitz <dan@codesourcery.com>
> +
> + * config/rs6000/rs6000.c (rs6000_stack_info): Allocate space for the
> + GOT pointer only if there is a constant pool. Use the allocated space
> + for SPE also.
> +
> +2007-09-04 Daniel Jacobowitz <dan@codesourcery.com>
> +
> + * config/rs6000/linux-unwind.h (ppc_fallback_frame_state): Correct
> + typo for AltiVec.
> +
> +2007-09-04 Revital Eres <eres@il.ibm.com>
> + Richard Guenther <rguenther@suse.de>
> + R. Clint Whaley <whaley@cs.utsa.edu>
> +
> + * doc/invoke.texi (-fassociative-math, -freciprocal-math):
> + Document new flags.
> + * tree-tailcall.c (process_assignment): Use -fassociative-math
> + when reodering operands of floating-point type.
> + * fold-const.c (fold_comparison, fold_binary): Use
> + -fassociative-math and -freciprocal-math instead of
> + -funsafe-math-optimization flag.
> + * toplev.h (set_unsafe_math_optimizations_flags): Declare function.
> + * tree-ssa-math-opts.c (gate_cse_reciprocals): Use
> + -freciprocal-math instead of -funsafe-math-optimizations.
> + * opts.c (set_fast_math_flags): Set -freciprocal-math and
> + -fassociative-math when -ffast-math is set.
> + (set_unsafe_math_optimizations_flags): New Function
> + to set -freciprocal-math and -fassociative-math when
> + -funsafe-math-optimizations is set.
> + (common_handle_option): Call it.
> + * tree-vectorizer.c (vect_is_simple_reduction): Use
> + -fassociative-math when doing reduction on floats.
> + * loop-unroll.c (analyze_insn_to_expand_var): Use
> + -fassociative-math when expanding an accumulator of type float.
> + * simplify-rtx.c (simplify_binary_operation_1): Use
> + -fassociative-math and -freciprocal-math when reordeing operands
> + of floating-point type.
> + * combine.c (combine_simplify_rtx): Likewise.
> + * tree-ssa-reassoc.c (break_up_subtract_bb, reassociate_bb):
> + Likewise.
> + * common.opt (-fassociative-math, -freciprocal-math): New flags.
> +
> 2007-09-04 Paolo Carlini <pcarlini@suse.de>
>
> PR c++/18608
> --- /usr/src/SpecTests/sandbox-britten-memory/x86_64/mem-result/ChangeLog.cp 2007-09-04 11:53:30.000000000 +0000
> +++ /usr/src/SpecTests/sandbox-britten-memory/gcc/gcc/cp/ChangeLog 2007-09-05 03:58:44.000000000 +0000
> @@ -1,3 +1,26 @@
> +2007-09-04 Jason Merrill <jason@redhat.com>
> +
> + PR c++/31419
> + * call.c (reference_binding): Don't look for user-defined conversions
> + to the same type.
> +
> + PR c++/31411
> + * except.c (initialize_handler_parm): Put a CLEANUP_POINT_EXPR inside
> + the MUST_NOT_THROW_EXPR.
> +
> +2007-09-04 Richard Sandiford <richard@codesourcery.com>
> +
> + * decl.c (cp_finish_decl): Call determine_visibility before
> + make_rtl_for_nonlocal_decl.
> +
> +2007-09-04 Jason Merrill <jason@redhat.com>
> +
> + PR c++/14032
> + * pt.c (most_specialized_class): Substitute outer template
> + arguments into the arguments of a member template partial
> + specialization.
> + (strip_innermost_template_args): New fn.
> +
> 2007-09-03 Daniel Jacobowitz <dan@codesourcery.com>
>
> * Make-lang.in (g++spec.o): Remove SHLIB_MULTILIB.
>
>
> 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