This is the mail archive of the
gcc-regression@gcc.gnu.org
mailing list for the GCC project.
A recent patch increased GCC's memory consumption in some cases!
- From: gcctest at suse dot de
- To: jh at suse dot cz, gcc-regression at gcc dot gnu dot org
- Date: Thu, 18 Jan 2007 22:49:23 +0000
- Subject: A recent patch increased GCC's memory consumption in some cases!
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:
Ovarall memory allocated via mmap and sbrk decreased from 18349k to 7381k, overall -148.60%
Overall memory needed: 18349k -> 7381k
Peak memory use before GGC: 2264k
Peak memory use after GGC: 1955k
Maximum of released memory in single GGC run: 309k
Garbage: 444k
Leak: 2288k
Overhead: 455k
GGC runs: 3
comparing empty function compilation at -O0 -g level:
Ovarall memory allocated via mmap and sbrk decreased from 18365k to 7397k, overall -148.28%
Overall memory needed: 18365k -> 7397k
Peak memory use before GGC: 2291k
Peak memory use after GGC: 1982k
Maximum of released memory in single GGC run: 309k
Garbage: 447k
Leak: 2320k
Overhead: 460k
GGC runs: 3
comparing empty function compilation at -O1 level:
Ovarall memory allocated via mmap and sbrk decreased from 18461k to 7493k, overall -146.38%
Overall memory needed: 18461k -> 7493k
Peak memory use before GGC: 2264k
Peak memory use after GGC: 1955k
Maximum of released memory in single GGC run: 309k
Garbage: 450k -> 450k
Leak: 2291k -> 2291k
Overhead: 456k
GGC runs: 4
comparing empty function compilation at -O2 level:
Ovarall memory allocated via mmap and sbrk decreased from 18473k to 7505k, overall -146.14%
Overall memory needed: 18473k -> 7505k
Peak memory use before GGC: 2265k
Peak memory use after GGC: 1955k
Maximum of released memory in single GGC run: 310k
Garbage: 453k -> 453k
Leak: 2291k -> 2291k
Overhead: 456k
GGC runs: 4
comparing empty function compilation at -O3 level:
Ovarall memory allocated via mmap and sbrk decreased from 18473k to 7505k, overall -146.14%
Overall memory needed: 18473k -> 7505k
Peak memory use before GGC: 2265k
Peak memory use after GGC: 1955k
Maximum of released memory in single GGC run: 310k
Garbage: 453k -> 453k
Leak: 2291k -> 2291k
Overhead: 456k
GGC runs: 4
comparing combine.c compilation at -O0 level:
Ovarall memory allocated via mmap and sbrk decreased from 28633k to 17665k, overall -62.09%
Overall memory needed: 28633k -> 17665k
Peak memory use before GGC: 9334k
Peak memory use after GGC: 8886k
Maximum of released memory in single GGC run: 2628k
Garbage: 37266k
Leak: 6554k
Overhead: 4828k
GGC runs: 276
comparing combine.c compilation at -O0 -g level:
Ovarall memory allocated via mmap and sbrk decreased from 30685k to 19717k, overall -55.63%
Overall memory needed: 30685k -> 19717k
Peak memory use before GGC: 10917k
Peak memory use after GGC: 10546k
Maximum of released memory in single GGC run: 2388k
Garbage: 37874k
Leak: 9414k
Overhead: 5530k
GGC runs: 272
comparing combine.c compilation at -O1 level:
Overall memory allocated via mmap and sbrk increased from 33390k to 34309k, overall 2.75%
Overall memory needed: 33390k -> 34309k
Peak memory use before GGC: 19919k -> 19923k
Peak memory use after GGC: 19721k -> 19725k
Maximum of released memory in single GGC run: 2262k
Garbage: 55507k -> 55479k
Leak: 6564k -> 6566k
Overhead: 9970k -> 9967k
GGC runs: 351
comparing combine.c compilation at -O2 level:
Overall memory allocated via mmap and sbrk increased from 33394k to 38181k, overall 14.33%
Overall memory needed: 33394k -> 38181k
Peak memory use before GGC: 19933k
Peak memory use after GGC: 19735k
Maximum of released memory in single GGC run: 2204k -> 2203k
Garbage: 71255k -> 71204k
Leak: 6686k -> 6686k
Overhead: 11872k -> 11868k
GGC runs: 409 -> 408
comparing combine.c compilation at -O3 level:
Overall memory allocated via mmap and sbrk increased from 32450k to 48845k, overall 50.52%
Overall memory needed: 32450k -> 48845k
Peak memory use before GGC: 21065k -> 21063k
Peak memory use after GGC: 20197k
Maximum of released memory in single GGC run: 3167k
Garbage: 105390k -> 105315k
Leak: 6768k -> 6768k
Overhead: 16504k -> 16499k
GGC runs: 459
comparing insn-attrtab.c compilation at -O0 level:
Overall memory allocated via mmap and sbrk increased from 89610k to 105513k, overall 17.75%
Overall memory needed: 89610k -> 105513k
Peak memory use before GGC: 71144k
Peak memory use after GGC: 45190k
Maximum of released memory in single GGC run: 37768k
Garbage: 131559k
Leak: 9580k
Overhead: 16626k
GGC runs: 208
comparing insn-attrtab.c compilation at -O0 -g level:
Overall memory allocated via mmap and sbrk increased from 90786k to 106913k, overall 17.76%
Overall memory needed: 90786k -> 106913k
Peak memory use before GGC: 72305k
Peak memory use after GGC: 46458k
Maximum of released memory in single GGC run: 37769k
Garbage: 132721k
Leak: 11269k
Overhead: 17020k
GGC runs: 207
comparing insn-attrtab.c compilation at -O1 level:
Overall memory allocated via mmap and sbrk increased from 98490k to 124917k, overall 26.83%
Overall memory needed: 98490k -> 124917k
Peak memory use before GGC: 72996k -> 72957k
Peak memory use after GGC: 69150k
Maximum of released memory in single GGC run: 31661k
Garbage: 230037k -> 229890k
Leak: 9397k -> 9397k
Overhead: 29471k -> 29470k
GGC runs: 224
comparing insn-attrtab.c compilation at -O2 level:
Overall memory allocated via mmap and sbrk increased from 110406k to 190921k, overall 72.93%
Overall memory needed: 110406k -> 190921k
Peak memory use before GGC: 79821k -> 79783k
Peak memory use after GGC: 74012k
Maximum of released memory in single GGC run: 30532k
Garbage: 281304k -> 281020k
Leak: 9394k -> 9394k
Overhead: 35777k -> 35776k
GGC runs: 246
comparing insn-attrtab.c compilation at -O3 level:
Overall memory allocated via mmap and sbrk increased from 110406k to 190917k, overall 72.92%
Overall memory needed: 110406k -> 190917k
Peak memory use before GGC: 79834k -> 79795k
Peak memory use after GGC: 74024k
Maximum of released memory in single GGC run: 30597k
Garbage: 282004k -> 281720k
Leak: 9396k -> 9396k
Overhead: 35987k -> 35986k
GGC runs: 246
comparing Gerald's testcase PR8361 compilation at -O0 level:
Overall memory allocated via mmap and sbrk increased from 119706k to 152085k, overall 27.05%
Overall memory needed: 119706k -> 152085k
Peak memory use before GGC: 92946k
Peak memory use after GGC: 92023k
Maximum of released memory in single GGC run: 18804k
Garbage: 208266k
Leak: 49015k
Overhead: 21200k
GGC runs: 408
comparing Gerald's testcase PR8361 compilation at -O0 -g level:
Overall memory allocated via mmap and sbrk increased from 132150k to 169673k, overall 28.39%
Overall memory needed: 132150k -> 169673k
Peak memory use before GGC: 105297k
Peak memory use after GGC: 104254k
Maximum of released memory in single GGC run: 18718k
Garbage: 214834k
Leak: 72440k
Overhead: 27103k
GGC runs: 382
comparing Gerald's testcase PR8361 compilation at -O1 level:
Overall memory allocated via mmap and sbrk increased from 123354k to 137472k, overall 11.45%
Overall memory needed: 123354k -> 137472k
Peak memory use before GGC: 98455k -> 98401k
Peak memory use after GGC: 97460k -> 97402k
Maximum of released memory in single GGC run: 17915k
Garbage: 402864k -> 402809k
Leak: 49997k -> 49996k
Overhead: 54392k -> 54394k
GGC runs: 549
comparing Gerald's testcase PR8361 compilation at -O2 level:
Overall memory allocated via mmap and sbrk increased from 123362k to 139900k, overall 13.41%
Overall memory needed: 123362k -> 139900k
Peak memory use before GGC: 98507k -> 98444k
Peak memory use after GGC: 97525k -> 97468k
Maximum of released memory in single GGC run: 17915k
Garbage: 461503k -> 461452k
Leak: 50820k -> 50821k
Overhead: 47445k -> 47451k
GGC runs: 599 -> 600
comparing Gerald's testcase PR8361 compilation at -O3 level:
Overall memory allocated via mmap and sbrk increased from 125390k to 142212k, overall 13.42%
Overall memory needed: 125390k -> 142212k
Peak memory use before GGC: 100260k -> 100200k
Peak memory use after GGC: 99209k -> 99152k
Maximum of released memory in single GGC run: 18261k
Garbage: 489579k -> 489290k
Leak: 51430k -> 51430k
Overhead: 49389k -> 49372k
GGC runs: 616
comparing PR rtl-optimization/28071 testcase compilation at -O0 level:
Overall memory allocated via mmap and sbrk increased from 138314k to 246452k, overall 78.18%
Overall memory needed: 138314k -> 246452k
Peak memory use before GGC: 82630k
Peak memory use after GGC: 59510k
Maximum of released memory in single GGC run: 45582k
Garbage: 148155k
Leak: 8080k
Overhead: 25066k
GGC runs: 80
comparing PR rtl-optimization/28071 testcase compilation at -O0 -g level:
Overall memory allocated via mmap and sbrk increased from 138698k to 247348k, overall 78.34%
Overall memory needed: 138698k -> 247348k
Peak memory use before GGC: 83276k
Peak memory use after GGC: 60155k
Maximum of released memory in single GGC run: 45231k
Garbage: 148325k
Leak: 9335k
Overhead: 25561k
GGC runs: 88
comparing PR rtl-optimization/28071 testcase compilation at -O1 level:
Overall memory allocated via mmap and sbrk increased from 249142k to 305313k, overall 22.55%
Overall memory needed: 249142k -> 305313k
Peak memory use before GGC: 197776k
Peak memory use after GGC: 178775k -> 178776k
Maximum of released memory in single GGC run: 134229k
Garbage: 274126k -> 274126k
Leak: 27473k -> 27473k
Overhead: 33142k
GGC runs: 74
comparing PR rtl-optimization/28071 testcase compilation at -O2 level:
Overall memory allocated via mmap and sbrk increased from 192018k to 301577k, overall 57.06%
Overall memory needed: 192018k -> 301577k
Peak memory use before GGC: 302461k
Peak memory use after GGC: 178766k
Maximum of released memory in single GGC run: 241049k
Garbage: 586684k -> 586684k
Leak: 27902k -> 27902k
Overhead: 95313k
GGC runs: 83
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 586858k to 1415993k, overall 141.28%
Overall memory needed: 586858k -> 1415993k
Peak memory use before GGC: 283571k
Peak memory use after GGC: 276589k
Maximum of released memory in single GGC run: 138367k
Garbage: 451307k -> 451306k
Leak: 48594k -> 48594k
Overhead: 56724k
GGC runs: 72 -> 73
Head of the ChangeLog is:
--- /usr/src/SpecTests/sandbox-britten-memory/x86_64/mem-result/ChangeLog 2007-01-18 04:56:20.000000000 +0000
+++ /usr/src/SpecTests/sandbox-britten-memory/gcc/gcc/ChangeLog 2007-01-18 20:43:53.000000000 +0000
@@ -1,3 +1,352 @@
+2007-01-18 Kazu Hirata <kazu@codesourcery.com>
+ Richard Sandiford <richard@codesourcery.com>
+
+ * doc/tm.texi (TARGET_FUNCTION_VALUE): Expand documentation of
+ parallels.
+ * calls.c (expand_call): If the return value is a PARALLEL,
+ extract its first member.
+ * config/m68k/linux.h (FUNCTION_EXTRA_EPILOGUE): Remove.
+ * config/m68k/m68k.c (m68k_output_function_epilogue): Don't
+ use FUNCTION_EXTRA_EPILOGUE.
+ (m68k_function_value): Return a PARALLEL if the return value
+ is of a pointer type.
+ * config/m68k/netbsd-elf.h (current_function_returns_pointer)
+ (FUNCTION_EXTRA_EPILOGUE): Remove.
+ * config/m68k/m68k.md (D0_REG): New constant.
+
+2007-01-18 Kazu Hirata <kazu@codesourcery.com>
+
+ * config/m68k/m68k.c (m68k_output_function_epilogue): Don't
+ output a NOP for empty epilogues.
+
+2007-01-18 Richard Sandiford <richard@codesourcery.com>
+
+ * config/m68k/m68k.c (m68k_use_return_insn): Update comments
+ before function. Extend register save check to include all
+ registers, not just integer ones.
+
+2007-01-18 Kazu Hirata <kazu@codesourcery.com>
+
+ * config/m68k/m68k-protos.h (use_return_insn): Rename to...
+ (m68k_use_return_insn): ...this.
+ * config/m68k/m68k.h (USE_RETURN_INSN): Delete.
+ * config/m68k/m68k.c (use_return_insn): Rename to...
+ (m68k_use_return_insn): ...this.
+ * config/m68k/m68k.md (return): Use m68k_use_return_insn instead
+ of USE_RETURN_INSN.
+
+2007-01-18 Nathan Sidwell <nathan@codesourcery.com>
+
+ * config/m68k/fpgnulib.c (__truncdfsf2): Implement round to
+ nearest even, fix denormal rounding overflow.
+
+2007-01-18 Richard Sandiford <richard@codesourcery.com>
+
+ * config/m68k/m68k.md (movsf_cf_hard): Use fsmove instead of
+ f%$smove and f%$move.
+ (movdf_cf_hard): Use fdmove for cases 0 and 3 and fmove for case 1.
+ (extendsfdf2_cf): Use fdmove instead of f%&move.
+ (truncdfsf2_cf): Use fsmove instead of f%$smove.
+ (add<mode>3_cf, sub<mode>3_cf): Use <FP:prec> instead of <FP:round>.
+
+2007-01-18 Richard Sandiford <richard@codesourcery.com>
+
+ * config/m68k/m68k.md (movdf_cf_hard): Use output_move_double for
+ GPR<-GPR moves.
+
+2007-01-18 Richard Sandiford <richard@codesourcery.com>
+
+ * real.h (real_format): Add a canonical_nan_lsbs_set field.
+ (coldfire_single_format): Declare.
+ (coldfire_double_format): Likewise.
+ * real.c (encode_ieee_single): Use canonical_nan_lsbs_set instead
+ of qnan_msb_set to determine the lower bits of a canonical
+ NaN significand.
+ (encode_ieee_double): Likewise.
+ (encode_ieee_quad): Likewise.
+ (ieee_single_format): Initialize canonical_nan_lsbs_set.
+ (mips_single_format): Likewise.
+ (ieee_double_format): Likewise.
+ (mips_double_format): Likewise.
+ (ieee_extended_motorola_format): Likewise.
+ (ieee_extended_intel_96_format): Likewise.
+ (ieee_extended_intel_128_format): Likewise.
+ (ieee_extended_intel_96_round_53_format): Likewise.
+ (ibm_extended_format): Likewise.
+ (mips_extended_format): Likewise.
+ (ieee_quad_format): Likewise.
+ (mips_quad_format): Likewise.
+ (vax_f_format): Likewise.
+ (vax_d_format): Likewise.
+ (vax_g_format): Likewise.
+ (i370_single_format): Likewise.
+ (i370_double_format): Likewise.
+ (decimal_single_format): Likewise.
+ (decimal_double_format): Likewise.
+ (decimal_quad_format): Likewise.
+ (c4x_single_format): Likewise.
+ (c4x_extended_format): Likewise.
+ (real_internal_format): Likewise.
+ (coldfire_single_format): New real_format.
+ (coldfire_double_format): Likewise.
+ * config/pdp11/pdp11.c (pdp11_f_format): Initialize
+ canonical_nan_lsbs_set.
+ (pdp11_d_format): Likewise.
+ * config/m68k/m68k.c (override_options): Override REAL_FORMAT_MODE
+ if TARGET_COLDFIRE_CPU.
+
+2007-01-18 Richard Sandiford <richard@codesourcery.com>
+
+ * config/m68k/m68k-protos.h (m68k_output_pic_call): Delete.
+ (output_call, m68k_legitimize_call_address): Declare.
+ * config/m68k/m68k.h (EXTRA_CONSTRAINT): Remove unnecessary
+ parenthesees. Add support for a 'W' constraint.
+ (LEGITIMATE_PIC_OPERAND_P): Remove SYMBOL_REF_FLAG handling.
+ (PRINT_OPERAND_PUNCT_VALID_P): Remove comment about 'o'.
+ (m68k_symbolic_call, m68k_symbolic_jump): Declare.
+ * config/m68k/m68k.c (m68k_symbolic_call, m68k_symbolic_jump): New
+ variables.
+ (override_options): Initialize them. Do not set flag_no_function_cse
+ for TARGET_ID_SHARED_LIBRARY.
+ (m68k_output_pic_call): Delete.
+ (m68k_legitimize_call_address): New function.
+ (print_operand): Remove the %o prefix. Handle the %p prefix.
+ (output_call): New function.
+ (m68k_output_mi_thunk): Use m68k_symbolic_jump. Always load the
+ target address from the GOT if symbolic jumps are not allowed.
+ * config/m68k/m68k.md (call, general_operand): Do not set
+ SYMBOL_REF_FLAG. Use m68k_legitimize_call_address instead.
+ Merge separate flag_pic and !flag_pic define_insns into...
+ (*call, *call_value): ...these new patterns. Match the address
+ rather than the containing MEM and require it to be a call_operand.
+ Use output_call to generate the asm template.
+ * config/m68k/predicates.md (const_call_operand): New predicate.
+ (call_operand): Likewise.
+
+2007-01-18 Nathan Sidwell <nathan@codesourcery.com>
+
+ * config/m68k/m68k.h (REGISTER_MOVE_COST): Simplify definition.
+ (STACK_GROWS_DOWNWARD): Define to 1.
+ (FUNCTION_VALUE, LIBCALL_VALUE, FUNCTION_VALUE_REGNO_P): Equivocate
+ comments, emphasizing that these values are only defaults.
+ * config/m68k/linux.h (LINK_SPEC): Fix formatting in #undef.
+ * config/m68k/m68k.c (const_method): Remove trailing whitespace.
+
+2007-01-18 Richard Sandiford <richard@codesourcery.com>
+
+ * config/m68k/m68k.md (cmpsi): Remove outdated flag_pic handling.
+
+2007-01-18 Kazu Hirata <kazu@codesourcery.com>
+ Richard Sandiford <richard@codesourcery.com>
+
+ * config/m68k/m68k.h (DATA_REGNO_P, ADDRESS_REGNO_P, INT_REGNO_P)
+ (FP_REGNO_P): New macros.
+ (REGNO_OK_FOR_INDEX_P, REGNO_OK_FOR_BASE_P, REGNO_OK_FOR_DATA_P)
+ (REGNO_OK_FOR_FP_P, REG_OK_FOR_INDEX_P, REG_OK_FOR_BASE_P): Use them.
+ (EH_RETURN_STACKADJ_RTX): Use A0_REG.
+ * config/m68k/m68k.c (m68k_regno_mode_ok): Use the new REGNO macros.
+
+2007-01-18 Nathan Sidwell <nathan@codesourcery.com>
+
+ * config.gcc (m68k-*-aout*, m68k-*-coff*, m68020-*-elf*, m68k-*-elf*)
+ (m68k-*-uclinuxoldabi, m68k-*-uclinux*, m68k-*-rtems*): Add t-floatlib
+ to $tmake_file.
+ * config/m68k/t-floatlib: New file, extracting common code from...
+ * config/m68k/t-m68kbare, config/m68k/t-m68kelf,
+ * config/m68k/t-uclinux: Here.
+ * config/m68k/fpgnulib.c: Do not compile extendeed precision
+ routines on ColdFire targets.
+
+2007-01-18 Nathan Sidwell <nathan@codesourcery.com>
+
+ * config.gcc (m68k-*-aout*, m68k-*-coff*, m68020-*-elf*, m68k-*-elf*)
+ (m68010-*-netbsdelf*, m68k*-*-netbsdelf*, m68k*-*-openbsd*)
+ (m68k-*-uclinuxoldabi, m68k-*-uclinux*, m68k-*-linux*)
+ (m68k-*-rtems*): Use tm_file rather than m68k/m68k.h and
+ explicitly set MOTOROLA to 1.
+ * config/m68k/m68k.h (MOTOROLA): Simplify definition accordingly.
+
+2007-01-18 Richard Sandiford <richard@codesourcery.com>
+ Nathan Sidwell <nathan@codesourcery.com>
+
+ * config/m68k/m68k.h (PCC_STATIC_STRUCT_RETURN): Delete.
+ (ASM_OUTPUT_REG_PUSH, ASM_OUTPUT_REG_POP): Add MOTOROLA cases.
+ * config/m68k/coff.h (REGISTER_PREFIX_MD): Delete.
+ * config/m68k/m68020-elf.h (LIB_SPEC): Delete.
+ * config/m68k/m68k-none.h (CC1_SPEC, CPP_SUBTARGET_SPEC): Delete.
+ * config/m68k/m68kelf.h (IMMEDIATE_PREFIX, REGISTER_PREFIX_MD)
+ (ASM_OUTPUT_REG_PUSH, ASM_OUTPUT_REG_POP): Delete.
+ (NO_DOLLAR_IN_LABEL, PCC_STATIC_STRUCT_RETURN): Don't undefine.
+ (BSS_ASM_OP, ASM_OUTPUT_SKIP, ASM_OUTPUT_ASCII): Delete.
+ * config/m68k/m68kemb.h (PCC_STATIC_STRUCT_RETURN): Don't undefine.
+ * config/m68k/linux.h (SIZE_TYPE, PTRDIFF_TYPE, WCHAR_TYPE)
+ (WCHAR_TYPE_SIZE, TARGET_OBJFMT_CPP_BUILTINS): Delete.
+ (TARGET_OS_CPP_BUILTINS): Don't define mc68000 and mc68020 here.
+ (DBX_REGISTER_NUMBER): Delete.
+ * config/m68k/netbsd-elf.h (IMMEDIATE_PREFIX): Delete.
+ (PCC_STATIC_STRUCT_RETURN): Don't undefine.
+ * config/m68k/openbsd.h (PCC_STATIC_STRUCT_RETURN): Define.
+
+2007-01-18 Richard Sandiford <richard@codesourcery.com>
+
+ * config.gcc (m68k-*-uclinux*): Add flat.h to $tm_file.
+ * config/flat.h: New file.
+ * crtstuff.c (USE_PT_GNU_EH_FRAME): Don't define if
+ OBJECT_FORMAT_FLAT.
+ * config/m68k/m68k.h (ASM_PREFERRED_EH_DATA_FORMAT): Do not use
+ indirect references for -msep-data or -mid-shared-library.
+ Do not use PC-relative code addresses either.
+ * config/m68k/m68k.c (override_options): Restrict -fPIC error
+ to -mpcrel.
+ * config/m68k/uclinux.h (STARTFILE_SPEC): Define. Use Scrt1.o
+ for shared libraries and crt1.o for executables. Use crti.o and
+ crtbegin.o.
+ (ENDFILE_SPEC): Use crtend.o and crtn.o.
+ (LIB_SPEC): Suppress -Rlibc.gdb if -static-libc is given.
+ Do not add -elf2flt or -shared-lib-id options here.
+ (LINK_SPEC): Define. Pass -elf2flt if no -elf2flt option is given.
+ Pass -shared-lib-id if -mid-shared-library, taking the library
+ identifier from -mshared-library-id if given, otherwise
+ defaulting to 0.
+ (EH_FRAME_IN_DATA_SECTION): Do not undefine.
+ (INIT_SECTION_ASM_OP, FINI_SECTION_ASM_OP): Likewise.
+ (TARGET_OS_CPP_BUILTINS): Define __GXX_MERGED_TYPEINFO_NAMES=0
+ and __GXX_TYPEINFO_EQUALITY_INLINE=0 if -mid-shared-library.
+ (DRIVER_SELF_SPECS): Map unadorned PIC options to -msep-data.
+ * config/m68k/t-uclinux (EXTRA_MULTILIB_PARTS): Add crtbegin.o
+ and crtend.o.
+ * config/m68k/lb1sf68.asm (PICCALL): Use an lea and pc-relative
+ jump sequence for ISA A and ISA A+.
+ (PICJUMP): Likewise.
+
+2007-01-18 Richard Sandiford <richard@codesourcery.com>
+
+ * config.gcc (m68k-*-uclinux*): Base the port on the common
+ and m68k GNU/Linux files rather than on the generic ELF ones.
+ * config/m68k/uclinux.h (TARGET_VERSION): Override.
+ (TARGET_OS_CPP_BUILTINS): Use LINUX_TARGET_OS_CPP_BUILTINS.
+
+2007-01-18 Julian Brown <julian@codesourcery.com>
+ Richard Sandiford <richard@codesourcery.com>
+
+ * config/m68k/m68k.h (LONG_DOUBLE_TYPE_SIZE): Make 64-bit on ColdFire.
+ (LIBGCC2_LONG_DOUBLE_TYPE_SIZE): Likewise.
+ * config/m68k/netbsd-elf.h (LIBGCC2_LONG_DOUBLE_TYPE_SIZE): Undefine
+ before redefining.
+ * config/m68k/uclinux-oldabi.h (LONG_DOUBLE_TYPE_SIZE): Redefine to
+ 80 unconditionally.
+ (LIBGCC2_LONG_DOUBLE_TYPE_SIZE): Likewise.
+
+2007-01-18 Richard Sandiford <richard@codesourcery.com>
+
+ * doc/install.texi: Document m68k-uclinuxoldabi.
+ * config.gcc (m68k-*-uclinuxoldabi): New configuration.
+ * config/m68k/uclinux-oldabi.h: New file, copied from
+ config/m68k/uclinux.h.
+
+2007-01-18 Kaz Kojima <kkojima@rr.iij4u.or.jp>
+
+ * config/m32r/m32r-protos.h (m32r_expand_epilogue): Declare it.
+ * config/m32r/m32r.c (m32r_setup_incoming_varargs): Use gen_frame_mem.
+ (m32r_compute_frame_size): Use unsigned for regno.
+ (m32r_reload_lr): Use gen_frame_mem.
+ (pop): New.
+ (m32r_output_function_epilogue): Don't output the function epilogue
+ textually here.
+ (m32r_expand_epilogue): New.
+ (direct_return): Return false if the function has the interrupt
+ attribute.
+ (m32r_hard_regno_rename_ok): Remove code for the textual epilogue.
+ * config/m32r/m32r.md (epilogue): New expander.
+ (return_lr, return_rte): New insns.
+ (return): Make it expander.
+ (return_normal): New expander.
+
+2007-01-18 Josh Conner <jconner@apple.com>
+
+ PR target/30485
+ * config/rs6000/rs6000.c (rs6000_emit_vector_compare): Add
+ support for UNLE, UNLT, UNGE, and UNGT.
+
+2007-01-18 Jan Hubicka <jh@suse.cz>
+
+ * tree-vrp.c (finalize_jump_threads): Do not call cleanup_cfg by hand.
+ * tree-tailcall (add_virtual_phis): Likewise.
+ (optimize_tail_call): Return TODOs.
+ (execute_tail_calls): Return TODOs.
+ * tree-ssa-ccp (execute_fold_all_builtins): Do cleanup_cfg via TODO.
+ * tree-cfgcleanup.c (cleanup_tree_cfg_loop): Return if something
+ changed.
+ * tree-ssa-forwprop.c (tree_ssa_forward_propagate_single_use_value):
+ Cleanup cfg using TODO.
+ * tree-flow.h (cleanup_tree_cfg_loop): Update prototype.
+ * passes.c (execute_function_todo): When cleanup did something, remove
+ unused locals.
+ * tree-cfg.c (pass_build_cfg): Add cleanup_cfg TODO.
+ (make_edges): Don't cleanup_cfg.
+
+2007-01-18 Uros Bizjak <ubizjak@gmail.com>
+
+ * reg-stack.c (subst_stack_regs_pat) [UNSPEC_SINCOS_COS,
+ UNSPEC_XTRACT_FRACT]: Use generic code for instructions that
+ operate on the top of stack.
+ [UNSPEC_SINCOS_SIN, UNSPEC_XTRACT_EXP, UNSPEC_TAN]: Rewrite
+ register handling of instructions that output to the second
+ stack slot.
+ [UNSPEC_TAN_ONE, UNSPEC_TAN_TAN]: Remove.
+ (move_for_stack_reg): Special-case check for dead destination
+ stack slot for constant load of 1.0 inside UNSPEC_TAN.
+
+ * config/i386/i386.md (UNSPEC_TAN): New constant.
+ (UNSPEC_TAN_ONE, UNSPEC_TAN_TAN): Remove.
+ (fptanxf4_i387, fptan_extend<mode>xf4_i387): New patterns
+ to correctly model move of constant 1.0 to top stack slot.
+ (*tandf3_1, *tansf3_1, *tanxf3_1): Remove insn patterns.
+ (unnamed peephole2 pattern): Remove corresponding peephole2
+ pattern that optimizes tan insn and loading of constant 1.0.
+ (tanxf2): Use fptanxf4_i387.
+ (tan<mode>2): Rename from tansf2 and tandf2 and macroize insn
+ patterns using X87MODEF12 mode macro. Use fptan_extend<mode>xf4_i387
+ and truncate result to requested mode. Use SSE_FLOAT_MODE_P to
+ disable patterns for SSE math.
+ (sincos<mode>3): Use truncxf<mode>2_i387_noop for truncation.
+ (fyl2x_extend<mode>xf3_i387): Use X87MODEF12 for operand 1.
+
+2007-01-18 Dirk Mueller <dmueller@suse.de>
+ Richard Guenther <rguenther@suse.de>
+
+ PR diagnostic/8268
+ * doc/invoke.texi (Warray-bounds): Document -Warray-bounds.
+ * common.opt (Warray-bounds): Add new warning option.
+ * c-opts.c (c_common_handle_option): Define -Warray-bounds
+ if -Wall is given.
+ * Makefile.in: make tree-vrp.o depend on toplev.h
+ * tree-vrp.c (vrp_finalize): Call check_array_refs if -Warray-bounds
+ is enabled.
+ (check_array_refs, check_array_bounds, check_array_ref): New.
+
+2007-01-18 Jan Hubicka <jh@suse.cz>
+
+ * tree-ssa-ccp.c (ccp_finalize): Return if something changed.
+ (execute_ssa_ccp): Return flags conditionally.
+ * tree-ssa-propagate.c (substitue_and_fold): Return if something was
+ changed.
+ * tree-ssa-propagate.h (substitute_and_fold): Update prototype.
+
+2007-01-18 Steven Bosscher <steven@gcc.gnu.org>
+
+ * cfgcleanup.c (cleanup_cfg): Detect cfglayout mode and set
+ the CLEANUP_CFGLAYOUT flag when in cfglayout mode.
+
+ * Makefile.c (GTFILES): Add cfglayout.h.
+ * gengtype.c (open_base_files): Likewise.
+ * cfglayout.c (cfg_layout_function_footer,
+ cfg_layout_function_header) Reindent to make gengtype happy.
+ * cfglayout.h (cfg_layout_function_footer,
+ cfg_layout_function_header): Add GTY(()) marker.
+
+ * ifcvt.c (noce_try_sign_mask): Make sure INSN_B is non-null.
+
2007-01-18 Ben Elliston <bje@au.ibm.com>
* genautomata.c (write_automata): Include xstrerror output in the
@@ -221,7 +570,7 @@
* config/i386/i386.md (fyl2xxf3_i387): Rename from fyl2x_xf3.
(fyl2x_extend<mode>xf3_i387): New insn pattern.
(log<mode>2): Rename from logsf2 and logdf2 and macroize insn
- insn patterns using X87MODEF12 mode macro. Extend operand 1
+ patterns using X87MODEF12 mode macro. Extend operand 1
to XFmode. Use SSE_FLOAT_MODE_P to disable patterns for SSE math.
(log10<mode>2): Ditto.
(log2<mode>2): Ditto.
@@ -232,7 +581,6 @@
(*fxtractxf3_i387): Rename from *fxtractxf3.
(fxtract_extend<mode>xf3_i387): New insn pattern.
(ilogbsi2): Use match_dup 3, not match_operand:XF 3.
-
* config/i386/i386.c (ix86_emit_i387_log1p): Use gen_fyl2xp1xf3_i387()
and gen_fyl2xxf3_i387().
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.