This is the mail archive of the gcc-regression@gcc.gnu.org mailing list for the GCC project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

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:
    Overall memory needed: 7411k -> 7389k
    Peak memory use before GGC: 2263k
    Peak memory use after GGC: 1952k
    Maximum of released memory in single GGC run: 311k
    Garbage: 447k -> 446k
    Leak: 2285k
    Overhead: 456k -> 456k
    GGC runs: 3

comparing empty function compilation at -O0 -g level:
    Overall memory needed: 7427k -> 7405k
    Peak memory use before GGC: 2290k
    Peak memory use after GGC: 1979k
    Maximum of released memory in single GGC run: 311k
    Garbage: 449k -> 449k
    Leak: 2318k
    Overhead: 461k -> 461k
    GGC runs: 3

comparing empty function compilation at -O1 level:
    Overall memory needed: 7519k -> 7517k
    Peak memory use before GGC: 2263k
    Peak memory use after GGC: 1952k
    Maximum of released memory in single GGC run: 311k
    Garbage: 452k -> 452k
    Leak: 2288k
    Overhead: 457k -> 457k
    GGC runs: 4

comparing empty function compilation at -O2 level:
    Overall memory needed: 7527k -> 7525k
    Peak memory use before GGC: 2263k
    Peak memory use after GGC: 1952k
    Maximum of released memory in single GGC run: 311k
    Garbage: 455k -> 455k
    Leak: 2288k
    Overhead: 457k -> 457k
    GGC runs: 4

comparing empty function compilation at -O3 level:
    Overall memory needed: 7527k -> 7525k
    Peak memory use before GGC: 2263k
    Peak memory use after GGC: 1952k
    Maximum of released memory in single GGC run: 311k
    Garbage: 455k -> 455k
    Leak: 2288k
    Overhead: 457k -> 457k
    GGC runs: 4

comparing combine.c compilation at -O0 level:
  Ovarall memory allocated via mmap and sbrk decreased from 22619k to 17729k, overall -27.58%
  Peak amount of GGC memory still allocated after garbage collecting increased from 8827k to 8852k, overall 0.28%
  Amount of produced GGC garbage decreased from 38253k to 37096k, overall -3.12%
    Overall memory needed: 22619k -> 17729k
    Peak memory use before GGC: 9341k -> 9264k
    Peak memory use after GGC: 8827k -> 8852k
    Maximum of released memory in single GGC run: 2655k -> 2577k
    Garbage: 38253k -> 37096k
    Leak: 6580k -> 6580k
    Overhead: 5375k -> 5053k
    GGC runs: 288 -> 282

comparing combine.c compilation at -O0 -g level:
  Ovarall memory allocated via mmap and sbrk decreased from 24587k to 19889k, overall -23.62%
    Overall memory needed: 24587k -> 19889k
    Peak memory use before GGC: 11182k -> 10880k
    Peak memory use after GGC: 10579k -> 10512k
    Maximum of released memory in single GGC run: 2661k -> 2351k
    Garbage: 38846k -> 37693k
    Leak: 9473k -> 9465k
    Overhead: 6081k -> 5759k
    GGC runs: 272 -> 270

comparing combine.c compilation at -O1 level:
  Ovarall memory allocated via mmap and sbrk decreased from 41227k to 35565k, overall -15.92%
  Peak amount of GGC memory allocated before garbage collecting increased from 19323k to 19348k, overall 0.13%
  Peak amount of GGC memory still allocated after garbage collecting increased from 19127k to 19155k, overall 0.15%
  Amount of produced GGC garbage decreased from 57395k to 51579k, overall -11.28%
    Overall memory needed: 41227k -> 35565k
    Peak memory use before GGC: 19323k -> 19348k
    Peak memory use after GGC: 19127k -> 19155k
    Maximum of released memory in single GGC run: 2077k -> 2272k
    Garbage: 57395k -> 51579k
    Leak: 6609k -> 6615k
    Overhead: 6549k -> 6004k
    GGC runs: 352 -> 348

comparing combine.c compilation at -O2 level:
  Ovarall memory allocated via mmap and sbrk decreased from 41711k to 39973k, overall -4.35%
  Peak amount of GGC memory allocated before garbage collecting increased from 19373k to 19415k, overall 0.22%
  Peak amount of GGC memory still allocated after garbage collecting increased from 19179k to 19213k, overall 0.18%
    Overall memory needed: 41711k -> 39973k
    Peak memory use before GGC: 19373k -> 19415k
    Peak memory use after GGC: 19179k -> 19213k
    Maximum of released memory in single GGC run: 2159k -> 2200k
    Garbage: 69382k -> 67734k
    Leak: 6732k -> 6729k
    Overhead: 8392k -> 8043k
    GGC runs: 404 -> 400

comparing combine.c compilation at -O3 level:
  Peak amount of GGC memory allocated before garbage collecting increased from 19484k to 19714k, overall 1.18%
  Peak amount of GGC memory still allocated after garbage collecting increased from 19266k to 19380k, overall 0.59%
  Amount of produced GGC garbage increased from 90796k to 92837k, overall 2.25%
    Overall memory needed: 45207k -> 44257k
    Peak memory use before GGC: 19484k -> 19714k
    Peak memory use after GGC: 19266k -> 19380k
    Maximum of released memory in single GGC run: 3635k -> 3714k
    Garbage: 90796k -> 92837k
    Leak: 6843k -> 6836k
    Overhead: 11442k -> 11382k
    GGC runs: 426

comparing insn-attrtab.c compilation at -O0 level:
  Ovarall memory allocated via mmap and sbrk decreased from 152491k to 102845k, overall -48.27%
  Peak amount of GGC memory still allocated after garbage collecting increased from 44191k to 44730k, overall 1.22%
  Amount of produced GGC garbage decreased from 136444k to 130923k, overall -4.22%
    Overall memory needed: 152491k -> 102845k
    Peak memory use before GGC: 70324k -> 68627k
    Peak memory use after GGC: 44191k -> 44730k
    Maximum of released memory in single GGC run: 38126k -> 36429k
    Garbage: 136444k -> 130923k
    Leak: 9583k
    Overhead: 17978k -> 16927k
    GGC runs: 223 -> 212

comparing insn-attrtab.c compilation at -O0 -g level:
  Ovarall memory allocated via mmap and sbrk decreased from 153875k to 104357k, overall -47.45%
  Peak amount of GGC memory still allocated after garbage collecting increased from 45459k to 45998k, overall 1.19%
  Amount of produced GGC garbage decreased from 137667k to 132399k, overall -3.98%
    Overall memory needed: 153875k -> 104357k
    Peak memory use before GGC: 71486k -> 69788k
    Peak memory use after GGC: 45459k -> 45998k
    Maximum of released memory in single GGC run: 38127k -> 36429k
    Garbage: 137667k -> 132399k
    Leak: 11291k -> 11067k
    Overhead: 18375k -> 17324k
    GGC runs: 223 -> 210

comparing insn-attrtab.c compilation at -O1 level:
  Ovarall memory allocated via mmap and sbrk decreased from 190607k to 124805k, overall -52.72%
  Peak amount of GGC memory allocated before garbage collecting run decreased from 85948k to 73426k, overall -17.05%
  Peak amount of GGC memory still allocated after garbage collecting decreased from 80070k to 69350k, overall -15.46%
  Amount of produced GGC garbage decreased from 268762k to 227633k, overall -18.07%
    Overall memory needed: 190607k -> 124805k
    Peak memory use before GGC: 85948k -> 73426k
    Peak memory use after GGC: 80070k -> 69350k
    Maximum of released memory in single GGC run: 32250k -> 32798k
    Garbage: 268762k -> 227633k
    Leak: 9403k -> 9405k
    Overhead: 28313k -> 27090k
    GGC runs: 228 -> 226

comparing insn-attrtab.c compilation at -O2 level:
  Ovarall memory allocated via mmap and sbrk decreased from 233267k to 195493k, overall -19.32%
  Peak amount of GGC memory allocated before garbage collecting run decreased from 87235k to 74717k, overall -16.75%
  Peak amount of GGC memory still allocated after garbage collecting decreased from 80140k to 69433k, overall -15.42%
  Amount of produced GGC garbage decreased from 302019k to 263315k, overall -14.70%
    Overall memory needed: 233267k -> 195493k
    Peak memory use before GGC: 87235k -> 74717k
    Peak memory use after GGC: 80140k -> 69433k
    Maximum of released memory in single GGC run: 30040k -> 29993k
    Garbage: 302019k -> 263315k
    Leak: 9401k -> 9402k
    Overhead: 33722k -> 32727k
    GGC runs: 248 -> 245

comparing insn-attrtab.c compilation at -O3 level:
  Ovarall memory allocated via mmap and sbrk decreased from 233279k to 204813k, overall -13.90%
  Amount of produced GGC garbage decreased from 302705k to 292401k, overall -3.52%
    Overall memory needed: 233279k -> 204813k
    Peak memory use before GGC: 87249k -> 84750k
    Peak memory use after GGC: 80154k -> 78009k
    Maximum of released memory in single GGC run: 30101k -> 30928k
    Garbage: 302705k -> 292401k
    Leak: 9405k -> 9406k
    Overhead: 33928k -> 33464k
    GGC runs: 254 -> 246

comparing Gerald's testcase PR8361 compilation at -O0 level:
  Ovarall memory allocated via mmap and sbrk decreased from 152463k to 147072k, overall -3.67%
    Overall memory needed: 152463k -> 147072k
    Peak memory use before GGC: 90246k -> 90233k
    Peak memory use after GGC: 89353k -> 89339k
    Maximum of released memory in single GGC run: 17774k
    Garbage: 211766k -> 207965k
    Leak: 49217k -> 49198k
    Overhead: 25066k -> 23912k
    GGC runs: 414 -> 410

comparing Gerald's testcase PR8361 compilation at -O0 -g level:
  Ovarall memory allocated via mmap and sbrk decreased from 174855k to 164844k, overall -6.07%
    Overall memory needed: 174855k -> 164844k
    Peak memory use before GGC: 102853k -> 102839k
    Peak memory use after GGC: 101834k -> 101821k
    Maximum of released memory in single GGC run: 18129k -> 18128k
    Garbage: 218296k -> 214474k
    Leak: 72532k -> 72513k
    Overhead: 30963k -> 29808k
    GGC runs: 387 -> 384

comparing Gerald's testcase PR8361 compilation at -O1 level:
    Overall memory needed: 150860k -> 151333k
    Peak memory use before GGC: 101901k -> 101915k
    Peak memory use after GGC: 100884k -> 100904k
    Maximum of released memory in single GGC run: 17236k -> 17235k
    Garbage: 347532k -> 338448k
    Leak: 50296k -> 50295k
    Overhead: 31198k -> 29925k
    GGC runs: 531 -> 525

comparing Gerald's testcase PR8361 compilation at -O2 level:
  Overall memory allocated via mmap and sbrk increased from 152348k to 156833k, overall 2.94%
  Amount of produced GGC garbage increased from 378707k to 382771k, overall 1.07%
    Overall memory needed: 152348k -> 156833k
    Peak memory use before GGC: 102512k -> 102519k
    Peak memory use after GGC: 101495k -> 101504k
    Maximum of released memory in single GGC run: 17233k -> 17232k
    Garbage: 378707k -> 382771k
    Leak: 51032k -> 51011k
    Overhead: 35522k -> 35198k
    GGC runs: 569 -> 572

comparing Gerald's testcase PR8361 compilation at -O3 level:
  Overall memory allocated via mmap and sbrk increased from 154504k to 159757k, overall 3.40%
  Amount of produced GGC garbage increased from 397705k to 412771k, overall 3.79%
    Overall memory needed: 154504k -> 159757k
    Peak memory use before GGC: 104309k -> 104341k
    Peak memory use after GGC: 103276k -> 103298k
    Maximum of released memory in single GGC run: 17610k -> 17648k
    Garbage: 397705k -> 412771k
    Leak: 51318k -> 51296k
    Overhead: 37069k -> 37521k
    GGC runs: 574 -> 587

comparing PR rtl-optimization/28071 testcase compilation at -O0 level:
  Ovarall memory allocated via mmap and sbrk decreased from 344835k to 244781k, overall -40.87%
  Peak amount of GGC memory allocated before garbage collecting increased from 80256k to 80963k, overall 0.88%
  Peak amount of GGC memory still allocated after garbage collecting increased from 57995k to 58702k, overall 1.22%
  Amount of produced GGC garbage decreased from 146874k to 142205k, overall -3.28%
  Amount of memory still referenced at the end of compilation increased from 7421k to 7613k, overall 2.59%
    Overall memory needed: 344835k -> 244781k
    Peak memory use before GGC: 80256k -> 80963k
    Peak memory use after GGC: 57995k -> 58702k
    Maximum of released memory in single GGC run: 46504k -> 44134k
    Garbage: 146874k -> 142205k
    Leak: 7421k -> 7613k
    Overhead: 26766k -> 24559k
    GGC runs: 79

comparing PR rtl-optimization/28071 testcase compilation at -O0 -g level:
  Ovarall memory allocated via mmap and sbrk decreased from 345731k to 245593k, overall -40.77%
  Peak amount of GGC memory allocated before garbage collecting increased from 80902k to 81609k, overall 0.87%
  Peak amount of GGC memory still allocated after garbage collecting increased from 58641k to 59348k, overall 1.21%
  Amount of produced GGC garbage decreased from 147084k to 142415k, overall -3.28%
  Amount of memory still referenced at the end of compilation increased from 9188k to 9381k, overall 2.09%
    Overall memory needed: 345731k -> 245593k
    Peak memory use before GGC: 80902k -> 81609k
    Peak memory use after GGC: 58641k -> 59348k
    Maximum of released memory in single GGC run: 46569k -> 44123k
    Garbage: 147084k -> 142415k
    Leak: 9188k -> 9381k
    Overhead: 27261k -> 25054k
    GGC runs: 88 -> 89

comparing PR rtl-optimization/28071 testcase compilation at -O1 level:
  Ovarall memory allocated via mmap and sbrk decreased from 304723k to 253625k, overall -20.15%
  Peak amount of GGC memory allocated before garbage collecting increased from 84146k to 84262k, overall 0.14%
  Amount of produced GGC garbage decreased from 231868k to 221602k, overall -4.63%
    Overall memory needed: 304723k -> 253625k
    Peak memory use before GGC: 84146k -> 84262k
    Peak memory use after GGC: 74847k
    Maximum of released memory in single GGC run: 34777k -> 36149k
    Garbage: 231868k -> 221602k
    Leak: 20856k -> 20856k
    Overhead: 33286k -> 30442k
    GGC runs: 81

comparing PR rtl-optimization/28071 testcase compilation at -O2 level:
  Ovarall memory allocated via mmap and sbrk decreased from 559635k to 281329k, overall -98.93%
  Amount of produced GGC garbage decreased from 239652k to 228395k, overall -4.93%
    Overall memory needed: 559635k -> 281329k
    Peak memory use before GGC: 79833k
    Peak memory use after GGC: 74847k
    Maximum of released memory in single GGC run: 33316k -> 33439k
    Garbage: 239652k -> 228395k
    Leak: 20946k -> 20946k
    Overhead: 35497k -> 32477k
    GGC runs: 92 -> 91

comparing PR rtl-optimization/28071 testcase compilation at -O3 -fno-tree-pre -fno-tree-fre level:
  Ovarall memory allocated via mmap and sbrk decreased from 1380355k to 1269205k, overall -8.76%
    Overall memory needed: 1380355k -> 1269205k
    Peak memory use before GGC: 201851k
    Peak memory use after GGC: 190309k
    Maximum of released memory in single GGC run: 80854k -> 80679k
    Garbage: 378499k -> 370229k
    Leak: 46312k -> 46312k
    Overhead: 51554k -> 48625k
    GGC runs: 72 -> 70

Head of the ChangeLog is:

--- /usr/src/SpecTests/sandbox-britten-memory/x86_64/mem-result/ChangeLog	2007-04-16 16:04:20.000000000 +0000
+++ /usr/src/SpecTests/sandbox-britten-memory/gcc/gcc/ChangeLog	2007-04-17 14:45:51.000000000 +0000
@@ -1,3 +1,832 @@
+2007-04-17  Dorit Nuzman  <dorit@il.ibm.com>
+
+	* tree-vectorizer.h (stmt_vec_info_type): Add enum value
+	induc_vec_info_type.
+	(vectorizable_induction): New function declaration.
+	* tree-vect-transform.c (get_initial_def_for_induction): No need to
+	check if already vectorized.  Find first place in BB where new stmts
+	can be inserted.  Takes only one argument.
+	(vectorizable_induction): New function.
+	(vect_transform_stmt): Add case for induc_vec_info_type to call
+	vectorizable_induction.
+	(vect_transform_loop): Consider phis for vectorization.
+	* tree-vect-analyze.c (vect_determine_vectorization_factor): Simplify
+	condition.
+	(analyze_operations): Call vectorizable_induction when analyzing phis.  
+	Fix comment.
+	(vect_mark_stmts_to_be_vectorized): Remove redundant checks.
+	(vect_mark_relevant): Include phis in relevance analysis.
+	(vect_mark_stmts_to_be_vectorize): Likewise.
+	* tree-vect-patterns.c (widened_name_p): Remove obsolete asserts.
+
+2007-04-16  Lawrence Crowl  <crowl@google.com>
+
+	* doc/invoke.texi (Debugging Options): Add documentation for the
+	-femit-struct-debug options -femit-struct-debug-baseonly,
+	-femit-struct-debug-reduced, and
+	-femit-struct-debug-detailed[=...].
+
+	* c-opts.c (c_common_handle_option): Add
+	OPT_femit_struct_debug_baseonly, OPT_femit_struct_debug_reduced,
+	and OPT_femit_struct_debug_detailed_.
+	* c.opt: Add specifications for
+	-femit-struct-debug-baseonly, -femit-struct-debug-reduced,
+	and -femit-struct-debug-detailed[=...].
+	* opts.c (set_struct_debug_option): Parse the
+	-femit-struct-debug-... options.
+	* opts.c (matches_main_base, main_input_basename,
+	main_input_baselength, base_of_path, matches_main_base): Add
+	variables and functions to compare header base name to compilation
+	unit base name.
+	* opts.c (should_emit_struct_debug): Add to determine to emit a
+	structure based on the option.
+	(dump_struct_debug) Also disabled function to debug this
+	function.
+	* opts.c (handle_options): Save the base name of the
+	compilation unit.
+
+	* langhooks-def.h (LANG_HOOKS_GENERIC_TYPE_P): Define.
+        (LANG_HOOKS_FOR_TYPES_INITIALIZER): Add.
+	This hook indicates if a type is generic.  Set it by default
+	to "never generic".
+	* langhooks.h (struct lang_hooks_for_types): Add a new hook
+	to determine if a struct type is generic or not.
+	* cp/cp-tree.h (class_tmpl_impl_spec_p): Declare a C++ hook.
+	* cp/tree.c (class_tmpl_impl_spec_p): Implement the C++ hook.
+	* cp/cp-lang.c (LANG_HOOKS_GENERIC_TYPE_P): Override null C hook
+	with live C++ hook.
+
+	* flags.h (enum debug_info_usage): Add an enumeration to describe
+	a program's use of a structure type.
+	* dwarf2out.c (gen_struct_or_union_type_die): Add a new parameter
+	to indicate the program's usage of the type.  Filter structs based
+	on the -femit-struct-debug-... specification.
+	(gen_type_die): Split into two routines, gen_type_die and
+	gen_type_die_with_usage.  gen_type_die is now a wrapper
+	that assumes direct usage.
+	(gen_type_die_with_usage): Replace calls to gen_type_die
+	with gen_type_die_with_usage adding the program usage of
+	the referenced type.
+	(dwarf2out_imported_module_or_decl): Suppress struct debug
+	information using should_emit_struct_debug when appropriate.
+
+2007-04-16  Ian Lance Taylor  <iant@google.com>
+
+	PR tree-optimization/31522
+	* tree-vrp.c (vr_phi_edge_counts): New static variable.
+	(vrp_initialize): Allocate vr_phi_edge_counts.
+	(vrp_visit_phi_node): Don't push to infinity if we saw a new
+	executable edge.  Drop test for all constants.
+	(vrp_finalize): Free vrp_phi_edge_counts.
+
+	* doc/cpp.texi (Common Predefined Macros): Clarify description of
+	__GNUC_GNU_INLINE__ and __GNUC_STDC_INLINE__.
+
+	* tree-ssa-propagate.c (cfg_blocks_add): Insert blocks with fewer
+	predecessors at head rather than tail.
+
+2007-04-16  Matthias Klose  <doko@debian.org>
+
+	* gcc/config/alpha/linux.h (CPP_SPEC): Define.
+	* gcc/config/arm/linux-gas.h (SUBTARGET_CPP_SPEC): Extend.
+
+2007-04-16  Aldy Hernandez  <aldyh@redhat.com>
+
+        * function.h: Remove sequence_stack extern declaration.
+
+2007-04-16  Kazu Hirata  <kazu@codesourcery.com>
+
+	* config/m68k/m68k.h (LONG_DOUBLE_TYPE_SIZE): Change to 64 on
+	TARGET_FIDOA.
+	(LIBGCC2_LONG_DOUBLE_TYPE_SIZE): Change to 64 if __mfido__ is
+	defined.
+
+2007-04-16  Anatoly Sokolov <aesok@post.ru>
+
+	* config/avr/avr.c (avr_arch_types): Rearranging  array.
+	(enum avr_arch): Add.
+	(avr_mcu_types): Use avr_arch enumeration constants instead of 
+	numbers.
+	* config/avr/avr.h (LINK_SPEC): Simplify.
+
+2007-04-16  Kazu Hirata  <kazu@codesourcery.com>
+
+	* config/m68k/m68k.c (m68k_libcall_value,
+	m68k_function_value): Use macros for register names more.
+
+	* config/m68k/m68k.h (FRAME_POINTER_REGNUM): Use A6_REG
+	instead.
+	(M68K_REGNAME): Use A6_REG.
+	* config/m68k/m68k.md (FP_REG): Rename to A6_REG.
+
+2007-04-16  Maxim Kuvyrkov  <mkuvyrkov@ispras.ru>
+
+	PR middle-end/28071
+	* sched-int.h (struct deps): Split field 'pending_lists_length' into
+	'pending_read_list_length' and 'pending_write_list_length'.  Update
+	comment.
+	* sched-deps.c (add_insn_mem_dependence): Change signature.  Update
+	to handle two length counters instead of one.  Update all uses.
+	(flush_pending_lists, sched_analyze_1, init_deps): Update to handle
+	two length counters instead of one.
+	* sched-rgn.c (propagate_deps): Update to handle two length counters
+	instead of one.
+
+2007-04-16  H.J. Lu  <hongjiu.lu@intel.com>
+
+	PR target/31582
+	* config/i386/i386.c (ix86_expand_vec_set_builtin): Make a
+	copy of source, pass it to ix86_expand_vector_set and return
+	it as target.
+
+2007-04-16  David Ung  <davidu@mips.com>
+	    Joseph Myers  <joseph@codesourcery.com>
+
+	* config/mips/mips.h (PROCESSOR_74KC, PROCESSOR_74KF,
+	PROCESSOR_74KX, TUNE_74K, GENERATE_MADD_MSUB): Define.
+	* config/mips/mips.c (mips_cpu_info_table, mips_rtx_cost_data):
+	Add 74K processor information.
+	* config/mips/mips.md: Include 74k.md.
+	(cpu): Add 74kc,74kf,74kx.
+	(ISA_HAS_MADD_MSUB): Change to GENERATE_MADD_MSUB throughout.
+	* config/mips/74k.md: New.
+	* doc/invoke.texi (MIPS Options): Document 74K support.
+
+2007-04-16  Dorit Nuzman  <dorit@il.ibm.com>
+
+	* tree-vect-analyze.c (vect_analyze_operations): Reorganize calls to
+	vectorizable_* functions.
+	* tree-vect-transform.c (vectorizable_call): Add check for
+	STMT_VINFO_RELEVANT_P, STMT_VINFO_DEF_TYPE and STMT_VINFO_LIVE_P.
+	(vectorizable_store): likewise.
+	(vectorizable_conversion): Add check for STMT_VINFO_DEF_TYPE.
+	Add comments.
+	(vectorizable_operation, vectorizable_type_demotion): Likewise.
+	(vectorizable_type_promotion, vectorizable_load): Likewise.
+	(vectorizable_live_operation, vectorizable_condition): Likewise.
+	(vectorizable_assignment): Add check for STMT_VINFO_DEF_TYPE and
+	STMT_VINFO_LIVE_P.
+	(vect_transform_stmt): Reorganize calls to vectorizable_* functions.
+
+2007-04-15  Kazu Hirata  <kazu@codesourcery.com>
+
+	* config/m68k/linux.h (FUNCTION_VALUE_REGNO_P): Use macros for
+	register numbers more.
+	* config/m68k/m68k.h (STACK_POINTER_REGNUM,
+	FRAME_POINTER_REGNUM, STATIC_CHAIN_REGNUM,
+	M68K_STRUCT_VALUE_REGNUM, FUNCTION_VALUE, LIBCALL_VALUE,
+	FUNCTION_VALUE_REGNO_P): Likewise.
+	* config/m68k/m68kelf.h (M68K_STRUCT_VALUE_REGNUM,
+	STATIC_CHAIN_REGNUM): Likewise.
+	* config/m68k/m68kemb.h (FUNCTION_VALUE_REGNO_P): Likewise.
+	* config/m68k/netbsd-elf.h (M68K_STRUCT_VALUE_REGNUM,
+	STATIC_CHAIN_REGNUM, FUNCTION_VALUE_REGNO_P): Likewise.
+	* config/m68k/m68k.md (FP_REG): New.
+
+2007-04-15  Kazu Hirata  <kazu@codesourcery.com>
+
+	* config/m68k/m68k.h (PREFERRED_STACK_BOUNDARY): Prefer 32-bit
+	alignment on fido.
+
+2007-04-15  Kazu Hirata  <kazu@codesourcery.com>
+
+	* config/i386/i386.c, config/s390/s390.c, config/s390/s390.md,
+	tree-ssa-loop-niter.c, tree-ssa-structalias.c, tree-vrp.c: Fix
+	comment typos.
+
+2007-04-11  Zdenek Dvorak  <dvorakz@suse.cz>
+
+	* tree-ssa-loop-prefetch.c (loop_prefetch_arrays): Ignore
+	cold loops.
+
+2007-04-14  Andrew Pinski  <andrew_pinski@playstation.sony.com>
+
+	PR c/31520
+        * c-decl.c (finish_decl): Grab the type of the decl after the call
+	to store_init_value.
+
+2007-04-14  Steven Bosscher  <steven@gcc.gnu.org>
+
+	* common.opt (fforward-propagate): Fix "Optimization" annotation.
+
+2007-04-14  Jakub Jelinek  <jakub@redhat.com>
+
+	PR c++/25874
+	* omp-low.c (expand_omp_parallel): If child_cfun->cfg, free dominators,
+	post dominators and cleanup cfg before returning.
+
+2007-04-14  Bernd Schmidt  <bernd.schmidt@analog.com>
+
+	* config/bfin/bfin.h (MODES_TIEABLE_P): Allow more modes to be tied.
+	* config/bfin/bfin.md (movsi_insn): Delete two unused alternatives.
+
+2007-04-14  Kazu Hirata  <kazu@codesourcery.com>
+
+	* config.gcc: Recognize fido.
+	* config/m68k/m68k-devices.def (fidoa): New.
+	* config/m68k/m68k.h (TARGET_CPU_CPP_BUILTINS): Define
+	__mfido__.
+	(FL_FIDOA, TARGET_FIDOA): New.
+	* config/m68k/m68k.opt (mfidoa): New.
+
+2007-04-13  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
+
+	PR middle-end/31322
+	* dwarf2out.c (output_call_frame_info): Call assemble_external_libcall
+	when a personality function is used.
+
+2007-04-13  Bob Wilson  <bob.wilson@acm.org>
+
+	* config/xtensa/xtensa.c (xtensa_expand_builtin): Use CALL_EXPR_FN.
+
+2007-04-13  Mike Stump  <mrs@apple.com>
+
+	* config/darwin-c.c (handle_c_option): Handle -fapple-kext here so
+	we can...
+	* config/darwin.opt (fapple-kext): Make C++ only.
+	* config/darwin.c (darwin_override_options): Remove code to ensure
+	-fapple-kext is given for C++ only.
+
+2007-04-13  Richard Sandiford  <richard@codesourcery.com>
+
+	* config/mips/vxworks.h (SUBTARGET_OVERRIDE_OPTIONS): Define.
+	* config/mips/mips.c (override_options): Call
+	SUBTARGET_OVERRIDE_OPTIONS, if defined.
+
+2007-04-13  H.J. Lu  <hongjiu.lu@intel.com>
+
+	* config/i386/i386.opt (msvr3-shlib): Removed.
+
+	* doc/invoke.texi: Remove -msvr3-shlib.
+
+2007-04-13  H.J. Lu  <hongjiu.lu@intel.com>
+
+	* config/i386/i386.opt (mpopcnt): Replace "popcount" instruction
+	with "popcnt" instruction.
+
+2007-04-13  Richard Guenther  <rguenther@suse.de>
+
+	PR tree-optimization/21258
+	* tree-vrp.c (compare_case_labels): New helper.
+	(find_switch_asserts): New function.
+	(find_assert_locations): Call it for SWITCH_EXPRs.
+
+2007-04-13  Uros Bizjak  <ubizjak@gmail.com>
+
+	* config/i386/i386.h (X87_FLOAT_MODE_P): Check for TARGET_80387.
+	* config/i386/i386.md (*cmpfp0): Remove check for TARGET_80387, this
+	check is now implied in X87_FLOAT_MODE_P.
+	(*cmpfp_u, *cmpfp_<mode>, *cmpfp_i_i387): Ditto.
+	(*cmpfp_iu_387, fix_trunc<mode>_fisttp_i386_1): Ditto.
+	(fix_trunc<mode>_i386_fisttp): Ditto.
+	(fix_trunc<mode>_i387_fisttp_with_temp): Ditto.
+	(*fix_trunc<mode>_i387_1, fix_truncdi_i387): Ditto.
+	(fix_truncdi_i387_with_temp, fix_trunc<mode>_i387): Ditto.
+	(fix_trunc<mode>_i387_with_temp, *fp_jcc_1_387): Ditto.
+	(*fp_jcc_2_387, *fp_jcc_5_387, *fp_jcc_6_387): Ditto.
+	(*fp_jcc_7_387, *fp_jcc_8<mode>_387): Ditto.
+	(unnamed_splitters): Ditto.
+	* config/i386/i386.c (function_value_32): Generate FIRST_FLOAT_REG
+	for X87_FLOAT_MODE_P mode.  Override FIRST_FLOAT_REG with
+	FIRST_SSE_REG for local functions when SSE math is enabled or
+	for functions with sseregparm attribute.
+	(standard_80387_constant_p): Return -1 if mode is not
+	X87_FLOAT_MODE_P.
+	(ix86_cc_mode): Assert that scalar mode is not DECIMAL_FLOAT_MODE_P.
+	(ix86_expand_compare): Ditto.
+	(ix86_expand_carry_flag_compare): Ditto.
+	(ix86_expand_int_movcc): Check for SCALAR_FLOAT_MODE_P instead
+	of FLOAT_MODE_P for cmp_mode and assert that cmp_mode is not
+	DECIMAL_FLOAT_MODE_P.
+	(ix86_preferred_output_reload_class): Use X87_FLOAT_MODE_P instead
+	of SCALAR_FLOAT_MODE_P.
+	(ix86_rtx_costs) [PLUS] Remove FLOAT_MODE_P and fall through to ...
+	[MINUS]: ... here.  Add SSE_FLOAT_MODE_P and X87_FLOAT_MODE_P
+	checks before FLOAT_MODE_P.
+	[MULT]: Add SSE_FLOAT_MODE_P and X87_FLOAT_MODE_P checks
+	before FLOAT_MODE_P.
+	[DIV]: Ditto.
+	[NEG]: Ditto.
+	[ABS]: Ditto.
+	[SQRT]: Ditto.
+	[FLOAT_EXTEND]: Use SSE_FLOAT_MODE_P.
+
+2007-04-12  Paolo Bonzini  <bonzini@gnu.org>
+            Charles Wilson  <libtool@cwilson.fastmail.fm>
+
+	* Makefile.in (stamp-as, stamp-collect-ld, stamp-nm): Remove.
+	(libgcc.mvars): Don't depend on them.
+	* configure.ac (as, collect-ld, nm): Create from exec-tool.in.
+	* exec-tool.in: New.
+
+2007-04-12  Brooks Moses  <brooks.moses@codesourcery.com>
+
+	* doc/invoke.text (--help): Document --help=common.
+
+2007-04-12  Thomas Neumann  <tneumann@users.sourceforge.net>
+
+	* stub-objc.c (objc_build_keyword_decl): Avoid C++ keywords.
+
+2007-04-12  Richard Sandiford  <richard@codesourcery.com>
+
+	* Makefile.in (insn-emit.o): Depend on $(INTEGRATE_H).
+	* genemit.c (main): Emit #include "integrate.h".
+	* config/mips/mips-protos.h (SYMBOL_HALF): New mips_symbol_type.
+	(LOADGP_RTP): New mips_loadgp_style.
+	* config/mips/mips.h: Include config/vxworks-dummy.h.
+	(TARGET_RTP_PIC): New macro.
+	(TARGET_USE_GOT): Return true for TARGET_RTP_PIC.
+	(TARGET_USE_PIC_FN_ADDR_REG): Return true for TARGET_VXWORKS_RTP.
+	(ASM_OUTPUT_ADDR_DIFF_ELT): Emit function-relative case tables
+	for TARGET_RTP_PIC.
+	* config/mips/vxworks.h (SUBTARGET_ASM_SPEC): Define.  Pass down
+	-mvxworks-pic when using -mrtp and a PIC option.
+	* config/mips/mips.c (mips_classify_symbol): Return SYMBOL_GOT_DISP
+	for RTP PIC.
+	(mips_symbolic_constant_p, mips_symbolic_address_p)
+	(mips_symbol_insns): Handle SYMBOL_HALF.
+	(override_options): Warn about -G and -mrtp being used together.
+	Initialize mips_lo_relocs[SYMBOL_HALF].
+	(mips_current_loadgp_style): Return LOADGP_RTP for RTP PIC.
+	(mips_emit_loadgp): Handle LOADGP_RTP.
+	(mips_in_small_data_p): Return false for TARGET_VXWORKS_RTP.
+	* config/mips/mips.md (loadgp_rtp): New insn and splitter.
+	(tablejump): Handle function-relative case table entries if
+	TARGET_RTP_PIC.
+	* config/mips/predicates.md (symbol_ref_operand): New predicate.
+
+2007-04-12  Richard Sandiford  <richard@codesourcery.com>
+
+	* config/mips/mips.md (load_call<mode>): Allow any general register.
+	destination.
+	(sibcall_value_internal, sibcall_value_multiple_internal)
+	(call_value_internal, call_value_split, call_value_multiple_internal)
+	(call_value_multiple_split): Remove constraints from operand 0.
+
+2007-04-12  Richard Sandiford  <richard@codesourcery.com>
+
+	* config/mips/mips-protos.h: In comments, refer to loadgp_absolute
+	rather than loadgp_noshared.
+	* config/mips/mips.c (mips_emit_loadgp): Use gen_loadgp_absolute
+	instead of gen_loadgp_noshared.  Use gen_loadgp_newabi instead of
+	gen_loadgp.
+	* config/mips/mips.md (loadgp): Rename to...
+	(loadgp_newabi): ...this.
+	(loadgp_noshared): Rename to...
+	(loadgp_absolute): ...this.
+
+2007-04-12  Richard Sandiford  <richard@codesourcery.com>
+
+	* config/mips/mips.c (mips_ok_for_lazy_binding_p): Always return
+	false for locally-binding symbols.
+	(mips_dangerous_for_la25_p): Check mips_global_symbol_p.
+
+2007-04-12  Richard Sandiford  <richard@codesourcery.com>
+
+	* config/mips/mips-protos.h (SYMBOL_GOT_LOCAL): Rename to...
+	(SYMBOL_GOT_PAGE_OFST): ...this.
+	(SYMBOL_GOT_GLOBAL): Rename to...
+	(SYMBOL_GOT_DISP): ...this.
+	(SYMBOL_GOTOFF_GLOBAL): Rename to...
+	(SYMBOL_GOTOFF_DISP): ...this.  Update comments accordingly.
+	* config/mips/mips.c (mips_global_symbol_p): New function.
+	(mips_symbol_binds_local_p): Likewise.
+	(mips_classify_symbol): Rename SYMBOL_GOT_GLOBAL to SYMBOL_GOT_DISP
+	and SYMBOL_GOT_LOCAL to SYMBOL_GOT_PAGE_OFST.  Use mips_global_symbol_p
+	and mips_symbol_binds_local_p.
+	(mips_symbolic_constant_p, mips_symbolic_address_p, mips_symbol_insns)
+	(override_options): Rename SYMBOL_GOT_GLOBAL to SYMBOL_GOT_DISP,
+	SYMBOL_GOT_LOCAL to SYMBOL_GOT_PAGE_OFST and SYMBOL_GOTOFF_GLOBAL to
+	SYMBOL_GOTOFF_DISP.
+	(mips_ok_for_lazy_binding_p): New function.
+	(mips_load_call_address, mips_expand_call): Use it.
+	(mips_dangerous_for_la25_p): Likewise.
+	* config/mips/mips.md (*xgot_hi<mode>, *xgot_lo<mode>)
+	(*got_disp<mode>): Use got_disp_operand instead of
+	global_got_operand.  Use SYMBOL_GOTOFF_DISP instead of
+	SYMBOL_GOTOFF_GLOBAL.
+	(*got_page<mode>): Use got_page_ofst_operand instead of
+	local_got_operand.
+	* config/mips/predicates.md (const_call_insn_operand): Use
+	SYMBOL_GOT_DISP instead of SYMBOL_GOT_GLOBAL.
+	(global_got_operand): Rename to...
+	(got_disp_operand): ...this and use SYMBOL_GOT_DISP instead of
+	SYMBOL_GOT_GLOBAL.
+	(local_got_operand): Rename to...
+	(got_page_ofst_operand): ...this and use SYMBOL_GOT_PAGE_OFST instead
+	of SYMBOL_GOT_LOCAL.
+
+2007-04-12  Richard Sandiford  <richard@codesourcery.com>
+
+	* config/mips/mips.h (TARGET_SPLIT_CALLS): Check
+	TARGET_CALL_CLOBBERED_GP.
+	(TARGET_SIBCALLS): Check TARGET_USE_GOT instead of TARGET_ABICALLS.
+	(TARGET_USE_GOT, TARGET_CALL_CLOBBERED_GP): New macros.
+	(TARGET_CALL_SAVED_GP, TARGET_USE_PIC_FN_ADDR_REG): Likewise.
+	(STARTING_FRAME_OFFSET): Check TARGET_CALL_CLOBBERED_GP instead
+	of TARGET_ABICALLS && !TARGET_NEWABI.
+	(MIPS_CALL): Check TARGET_USE_GOT instead of TARGET_ABICALLS.
+	* config/mips/mips.c (mips_load_call_address): Check
+	TARGET_CALL_SAVED_GP instead of TARGET_NEWABI.
+	(mips_global_pointer): Check TARGET_USE_GOT instead of TARGET_ABICALLS.
+	Check TARGET_CALL_SAVED_GP instead of TARGET_NEWABI.
+	(mips_save_reg_p): Check TARGET_CALL_SAVED_GP instead of
+	TARGET_ABICALLS && TARGET_NEWABI.
+	(mips_current_loadgp_style): Check TARGET_USE_GOT instead of
+	TARGET_ABICALLS.
+	(mips_expand_prologue): Check TARGET_OLDABI instead of !TARGET_NEWABI.
+	(mips_expand_epilogue): Check TARGET_CALL_SAVED_GP instead of
+	TARGET_ABICALLS && TARGET_NEWABI.
+	(mips_output_mi_thunk): Check TARGET_USE_GOT instead of
+	TARGET_ABICALLS.  Check TARGET_CALL_SAVED_GP instead of
+	TARGET_NEWABI.  Use TARGET_USE_PIC_FN_ADDR_REG to decide
+	whether indirect calls must use $25.
+	(mips_extra_live_on_entry): Check TARGET_GOT instead of
+	TARGET_ABICALLS.
+	* config/mips/mips.md (jal_macro): Check flag_pic and
+	TARGET_CALL_CLOBBERED_GP instead of TARGET_ABICALLS and TARGET_NEWABI.
+	(builtin_setjmp_setup, builtin_longjmp): Check TARGET_USE_GOT
+	instead of TARGET_ABICALLS.
+	(exception_receiver): Check TARGET_CALL_CLOBBERED_GP instead of
+	TARGET_ABICALLS && TARGET_OLDABI.
+	(load_call<mode>): Check TARGET_USE_GOT instead of TARGET_ABICALLS.
+	(sibcall): In the comment above the define_insn, mention
+	TARGET_USE_PIC_FN_ADDR_REG instead of TARGET_ABICALLS.
+	* config/mips/constraints.md (c): Check TARGET_USE_PIC_FN_ADDR_REG
+	instead of TARGET_ABICALLS.
+
+2007-04-12  Bernd Schmidt  <bernd.schmidt@analog.com>
+
+	* doc/md.texi (Blackfin family constraints): Document PA and PB.
+	* config/bfin/bfin.h (CONST_OK_FOR_P): Handle PA and PB.
+	(MACFLAGS_MATCH_P): New macro.
+	* config/bfin/bfin.c (print_operand): Handle MACFLAG_IS_M.
+	(bfin_secondary_reload): Treat EVEN_AREGS and ODD_AREGS like AREGS.
+	* config/bfin/bfin.md (MACFLAG_IS_M): New constant.  Renumber some of
+	the other MACFLAG constants.
+	(sum_of_accumulators, lshrpdi3, ashrpdi3): New patterns.
+	(flag_machi): Tighten constraints.  Renumber some of the operands.
+	(flag_machi_acconly): Tighten constraints.  Correct operand numbers in
+	output template.
+	(flag_machi_parts_acconly): New pattern.
+	(flag_macinithi): Tighten constraints.  Allow any accumulator to be
+	used.
+	(flag_macinit1hi): Tighten constraints.
+	(flag_mul_macv2hi_parts_acconly): New pattern.
+
+	* config/bfin/lib1funcs.asm (___umulsi3_highpart, __smulsi3_highpart):
+	Use a more efficient implementation.
+	* config/bfin/bfin.md (umulsi3_highpart, smulsi3_highpart): Emit
+	inline sequences when not optimizing for size.
+
+	* config/bfin/bfin.md (movhi_low2high, movhi_high2high, movhi_low2low,
+	movhi_high2low): Delete, merge functionality into...
+	(packv2hi): ... this pattern.
+
+	2007-02-11  Jie Zhang  <jie.zhang@analog.com>
+	* config/bfin/bfin.opt (msim): New option.
+	(mcpu=): New option.
+	* config/bfin/bfin-protos.h (enum bfin_cpu): New.
+	(bfin_cpu_t): Typedef of enum bfin_cpu.
+	(bfin_cpu_type): New declaration.
+	* config/bfin/elf.h (STARTFILE_SPEC): Add support for
+	-msim and -mcpu= options.
+	(LIB_SPEC): Likewise.
+	* config/bfin/bfin.c (bfin_cpu_type): Define.
+	(bfin_handle_option): Handle -mcpu= option.
+	* config/bfin/bfin.h (DEFAULT_CPU_TYPE): Define as BFIN_CPU_BF532.
+	(TARGET_CPU_CPP_BUILTINS): Define __ADSPBF531__, __ADSPBF532__,
+	__ADSPBF533__ or __ADSPBF537__ according to the cpu type.
+
+2007-04-12  Richard Sandiford  <richard@codesourcery.com>
+
+	* config.gcc (*-*-vxworks*): Don't add to tm_files in this stanza.
+	(arm-wrs-vxworks, mips-wrs-vxworks, powerpc-wrs-vxworks)
+	(powerpc-wrs-vxworksae): Use ${tm_file}.
+	(i[4567]86-wrs-vxworks, i[4567]86-wrs-vxworksae): Add svr4.h
+	after elfos.h.  Remove i386/sysv4.h and add i386/vx-common.h.
+	* config/i386/vx-common.h: New file.
+
+2007-04-12  Richard Sandiford  <richard@codesourcery.com>
+
+	* config/vxworks.h (VXWORKS_STARTFILE_SPEC): Use -l:crt0.o instead
+	of crt0.o%s.
+
+2007-04-12  Andreas Krebbel  <krebbel1@de.ibm.com>
+
+	* config/s390/s390.md ("trunctddd2"): Use TDmode for the target of
+	ldxtr.
+
+2007-04-12  Douglas Gregor  <doug.gregor@gmail.com>
+
+	PR c++/31078
+	PR c++/31103
+	* c-common.c (c_build_qualified_type): Set canonical type
+	appropriately.  
+
+2007-04-12  Richard Guenther  <rguenther@suse.de>
+
+	* tree-pretty-print.c (dump_generic_node): Print ARRAY_REF
+	lower bound and element size if lower bound is not zero
+	or either of the ARRAY_REF operands is set.
+
+2007-04-12  Richard Guenther  <rguenther@suse.de>
+
+	PR tree-optimization/24689
+	PR tree-optimization/31307
+	* fold-const.c (operand_equal_p): Compare INTEGER_CST array
+	indices by value.
+	* gimplify.c (canonicalize_addr_expr): To be consistent with
+	gimplify_compound_lval only set operands two and three of
+	ARRAY_REFs if they are not gimple_min_invariant.  This makes
+	it never at this place.
+	* tree-ssa-ccp.c (maybe_fold_offset_to_array_ref): Likewise.
+
+2007-04-11  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
+
+	* pa.c (pa_som_asm_init_sections): Ensure that cfun->machine is not
+	null before emitting a .nsubspa directive.
+
+2007-04-11  Diego Novillo  <dnovillo@redhat.com>
+
+	* tree-ssa-alias.c (dump_mem_ref_stats): Do not call
+	need_to_partition_p if there are no memory statements in the
+	function.
+
+2007-04-11  Zdenek Dvorak  <dvorakz@suse.cz>
+
+	* tree-data-ref.c (chrec_steps_divide_constant_p): Removed.
+	(gcd_of_steps_may_divide_p): New function.
+	(analyze_miv_subscript): Use gcd_of_steps_may_divide_p.
+
+2007-04-11  Bernd Schmidt  <bernd.schmidt@analog.com>
+
+	* reload.c (find_reloads_toplev, find_reloads_address,
+	find_reloads_address_1, find_reloads_subreg_address): Use rtx_equal_p,
+	not a pointer equality test, to decide if we need to call
+	push_reg_equiv_alt_mem.
+
+2007-04-11  Sebastian Pop  <sebastian.pop@inria.fr>
+
+	* tree-data-ref.c (affine_function_zero_p, constant_access_functions,
+	insert_innermost_unit_dist_vector, add_distance_for_zero_overlaps): New.
+	(build_classic_dist_vector): Call add_distance_for_zero_overlaps.
+
+2007-04-11  Zdenek Dvorak  <dvorakz@suse.cz>
+
+	* tree-data-ref.c (add_multivariate_self_dist): Force the distance
+	vector to be positive.
+
+2007-04-11  Diego Novillo  <dnovillo@redhat.com>
+
+	PR 30735
+	PR 31090
+	* doc/invoke.texi: Document --params max-aliased-vops and
+	avg-aliased-vops.
+	* tree-ssa-operands.h (get_mpt_for, dump_memory_partitions,
+	debug_memory_partitions): Move to tree-flow.h
+	* params.h (AVG_ALIASED_VOPS): Define.
+	* tree-ssa-alias.c (struct mp_info_def): Remove.  Update all
+	users.
+	(mp_info_t): Likewise.
+	(get_mem_sym_stats_for): New.
+	(set_memory_partition): Move from tree-flow-inline.h.
+	(mark_non_addressable): Only clear the set of symbols for the
+	partition if it exists.
+	(dump_memory_partitions): Move from tree-ssa-operands.c
+	(debug_memory_partitions): Likewise.
+	(need_to_partition_p): New.
+	(dump_mem_ref_stats): New.
+	(debug_mem_ref_stats): New.
+	(dump_mem_sym_stats): New.
+	(debug_mem_sym_stats): New.
+	(update_mem_sym_stats_from_stmt): New.
+	(compare_mp_info_entries): New.
+	(mp_info_cmp): Call it.
+	(sort_mp_info): Change argument to a list of mem_sym_stats_t
+	objects.
+	(get_mpt_for): Move from tree-ssa-operands.c.
+	(find_partition_for): New.
+	(create_partition_for): Remove.
+	(estimate_vop_reduction): New.
+	(update_reference_counts): New.
+	(build_mp_info): New.
+	(compute_memory_partitions): Refactor.
+	Document new heuristic.
+	Call build_mp_info, update_reference_counts,
+	find_partition_for and estimate_vop_reduction.
+	(compute_may_aliases): Populate virtual operands before
+	calling debugging dumps.
+	(delete_mem_sym_stats): New.
+	(delete_mem_ref_stats): New.
+	(init_mem_ref_stats): New.
+	(init_alias_info): Call it.
+	(maybe_create_global_var): Remove alias_info argument.
+	Get number of call sites and number of pure/const call sites
+	from gimple_mem_ref_stats().
+	(dump_alias_info): Call dump_memory_partitions first.
+	(dump_points_to_info_for): Show how many times a pointer has
+	been dereferenced.
+	* opts.c (decode_options): For -O2 set --param
+	max-aliased-vops to 500.
+	For -O3 set --param max-aliased-vops to 1000 and --param
+	avg-aliased-vops to 3.
+	* fortran/options.c (gfc_init_options): Remove assignment to
+	MAX_ALIASED_VOPS.
+	* tree-flow-inline.h (gimple_mem_ref_stats): New.
+	* tree-dfa.c (dump_variable): Dump memory reference
+	statistics.
+	Dump NO_ALIAS* settings.
+	(referenced_var_lookup): Tidy.
+	(mem_sym_stats): New.
+	* tree-ssa-copy.c (may_propagate_copy): Return true if DEST
+	and ORIG are different SSA names for a memory partition.
+	* tree-ssa.c (delete_tree_ssa): Call delete_mem_ref_stats.
+	* tree-flow.h (struct mem_sym_stats_d): Define.
+	(mem_sym_stats_t): Define.
+	(struct mem_ref_stats_d): Define.
+	(struct gimple_df): Add field mem_ref_stats.
+	(enum noalias_state): Define.
+	(struct var_ann_d): Add bitfield noalias_state.
+	(mem_sym_stats, delete_mem_ref_stats, dump_mem_ref_stats,
+	debug_mem_ref_stats, debug_memory_partitions,
+	debug_mem_sym_stats): Declare.
+	* tree-ssa-structalias.c (update_alias_info): Update call
+	sites, pure/const call sites and asm sites in structure
+	returned by gimple_mem_ref_stats.
+	Remove local variable IS_POTENTIAL_DEREF.
+	Increase NUM_DEREFS if the memory expression is a potential
+	dereference.
+	Call update_mem_sym_stats_from_stmt.
+	If the memory references memory, call
+	update_mem_sym_stats_from_stmt for all the direct memory
+	symbol references found.
+	(intra_create_variable_infos): Set noalias_state field for
+	pointer arguments according to the value of
+	flag_argument_noalias.
+	* tree-ssa-structalias.h (struct alias_info): Remove fields
+	num_calls_found and num_pure_const_calls_found.
+	(update_mem_sym_stats_from_stmt): Declare.
+	* params.def (PARAM_MAX_ALIASED_VOPS): Change description.
+	Set default value to 100.
+	(PARAM_AVG_ALIASED_VOPS): Define.
+
+2007-04-11  Richard Guenther  <rguenther@suse.de>
+
+	PR middle-end/31530
+	* simplify-rtx.c (simplify_binary_operation_1): Do not simplify
+	a * -b + c as c - a * b if we honor sign dependent rounding.
+
+2007-04-11  Bernd Schmidt  <bernd.schmidt@analog.com>
+
+	* config/bfin/bfin-protos.h (bfin_expand_movmem): Renamed from
+	bfin_expand_strmov.
+	* config/bfin/bfin.c (bfin_expand_prologue, bfin_delegitimize_address,
+	bfin_function_ok_for_sibcall, split_load_immediate): Remove unused
+	variables.
+	(initialize_trampoline): Don't use old-style function definition.
+	(bfin_secondary_reload): Mark IN_P argument as unused.
+
+2007-04-10  Sebastian Pop  <sebastian.pop@inria.fr>
+
+	PR tree-optimization/31343
+	* tree-chrec.h (chrec_zerop): Moved before build_polynomial_chrec.
+	(build_polynomial_chrec): Return a scalar when the evolution is zero.
+	* testsuite/gcc.dg/vect/pr31343.c: New.
+
+2007-04-10  Eric Christopher  <echristo@apple.com>
+
+	* config/i386/i386.h (X87_FLOAT_MODE_P): New.
+	* config/i386/i386.md (*cmpfp0): Use.
+	(*cmpfp_u, *cmpfp_<mode>, *cmpfp_i_i387): Ditto.
+	(*cmpfp_iu_387, fix_trunc<mode>_fisttp_i386_1): Ditto.
+	(fix_trunc<mode>_i386_fisttp): Ditto.
+	(fix_trunc<mode>_i387_fisttp_with_temp): Ditto.
+	(*fix_trunc<mode>_i387_1, fix_truncdi_i387): Ditto.
+	(fix_truncdi_i387_with_temp, fix_trunc<mode>_i387): Ditto.
+	(fix_trunc<mode>_i387_with_temp, *fp_jcc_1_387): Ditto.
+	(*fp_jcc_2_387, *fp_jcc_5_387, *fp_jcc_6_387): Ditto.
+	(*fp_jcc_7_387, *fp_jcc_8<mode>_387): Ditto.
+	(unnamed_splitters): Ditto.
+	* config/i386/i386.c (output_fix_trunc): Assert that
+	we're not being passed a TFmode operand.
+
+2007-04-10  Zdenek Dvorak  <dvorakz@suse.cz>
+
+	PR tree-optimization/31526
+	* tree-inline.c (copy_cfg_body): Use last_basic_block instead of
+	n_basic_blocks to find newly added blocks.
+
+2007-04-10  Uros Bizjak  <ubizjak@gmail.com>
+
+	* config/i386/i386.md (fix_trunc<mode>di_sse): Remove "x" from "xm"
+	alternative.
+	(fix_trunc<mode>si_sse): Ditto.
+	(*floatsisf2_mixed, *floatsisf2_sse): Ditto.
+	(*floatsidf2_mixed, *floatsidf2_sse): Ditto.
+	(*floatdisf2_mixed, *floatdisf2_sse): Ditto.
+	(*floatdidf2_mixed, *floatdidf2_sse): Ditto.
+	(floathi<mode>2): Rename from floathisf2 and floathidf2. Macroize
+	expander using SSEMODEF mode macro.
+	(floatsi<mode>2): Rename from floatsisf2 and floashidf2. Macroize
+	expander using SSEMODEF mode macro.
+	(*floathi<mode>2_i387): Rename from *floathisf2_i387 and
+	*floathidf2_i387. Macroize insn using X87MODEF12 mode macro.
+	(*floatsi<mode>2_i387): Rename from *floatsisf2_i387 and
+	*floatsidf2_i387. Macroize insn using X87MODEF12 mode macro.
+	(*floatdi<mode>2_i387): Rename from *floatdisf2_i387 and
+	*floatdidf2_i387. Macroize insn using X87MODEF12 mode macro.
+	(float<mode>xf2): Rename from floathixf2, floatsixf2 and floatdixf2.
+	Macroize insn using X87MODEF mode macro.
+
+2007-04-09  H.J. Lu  <hongjiu.lu@intel.com>
+
+	* config/i386/sse.md (sse2_pinsrw): Removed.
+	(sse2_pextrw): Renamed to ...
+	(*sse2_pextrw): This.
+
+2007-04-09  Jan Hubicka  <jh@suse.cz>
+
+	PR target/27869
+	* config/i386/sse.md
+	(sse_vmaddv4sf3, sse_vmmulv4sf3): Remove '%' modifier.
+	(sse_vmsmaxv4sf3_finite, sse_vmsminv4sf3_finite): Remove.
+	(sse2_vmaddv2df3, sse2_vmmulv2df3): Remove '%' modifier.
+	(sse2_vmsmaxv2df3_finite, sse2_vmsminv2df3_finite): Remove.
+
+2007-04-09  Jan Hubicka  <jh@suse.cz>
+
+	* tree-ssa-ccp (maybe_fold_offset_to_component_ref): Recurse into
+	multiple fields of union.
+
+2007-04-09  Zdenek Dvorak  <dvorakz@suse.cz>
+
+	* cfgloopmanip.c (create_preheader): Do not use loop_preheader_edge.
+	(create_preheaders): Check that loops are available.
+	(fix_loop_structure): Clean up, improve comments.
+	* tree-ssa-loop-manip.c (rewrite_into_loop_closed_ssa):
+	Check that loops are available.  Set LOOP_CLOSED_SSA to the loops
+	state flags.
+	* tree-scalar-evolution.c (scev_finalize): Clear scalar_evolution_info.
+	* predict.c (tree_estimate_probability): Do not call
+	calculate_dominance_info.  Call create_preheaders.
+	* tree-cfgcleanup.c (cleanup_tree_cfg_loop): Only call
+	rewrite_into_loop_closed_ssa if LOOP_CLOSED_SSA is set in loops state
+	flags.
+	* cfgloop.c (loop_preheader_edge): Assert that loops have preheaders.
+	* cfgloop.h (LOOP_CLOSED_SSA): New constant.
+	* tree-cfg.c (tree_split_edge): Make an assert more precise.
+	* tree-ssa-threadedge.c (thread_across_edge): Comment the function
+	arguments.
+
+2007-04-08  Jan Hubicka  <jh@suse.cz>
+
+	* tree.h (maybe_fold_offset_to_component_ref): Declare.
+	* tree-ssa-ccp.c (maybe_fold_offset_to_component_ref): Export.
+	* fold-const.c (fold_unary): Use it.
+
+2007-04-08  Andrew Pinski  <andrew_pinski@playstation.sony.com>
+
+	* varasm.c (assemble_variable): Remove call to
+	lang_hooks.decls.prepare_assemble_variable.
+	* langhooks-def.h (LANG_HOOKS_PREPARE_ASSEMBLE_VARIABLE): Kill.
+	(LANG_HOOKS_DECLS): Remove LANG_HOOKS_PREPARE_ASSEMBLE_VARIABLE.
+	* langhooks.h (lang_hooks_for_decls): Remove
+	prepare_assemble_variable.
+
+2007-04-08  Mike Stump  <mrs@apple.com>
+
+	* config/i386/i386.c: Use inc/dec on Core2.
+
+2007-04-08  Steven Bosscher  <steven@gcc.gnu.org>
+
+	* langhooks.c (lhd_tree_inlining_add_pending_fn_decls,
+	lhd_tree_inlining_anon_aggr_type_p, lhd_tree_inlining_start_inlining,
+	lhd_tree_inlining_end_inlining): Remove.
+	* langhooks.h (struct lang_hooks_for_tree_inlining): Remove then
+	add_pending_fn_decls, anon_aggr_type_p, start_inlining, and
+	end_inlining hooks.
+	* langhooks-def.h (lhd_tree_inlining_add_pending_fn_decls,
+	lhd_tree_inlining_anon_aggr_type_p, lhd_tree_inlining_start_inlining,
+	lhd_tree_inlining_end_inlining): Remove prototypes.
+	(LANG_HOOKS_TREE_INLINING_ADD_PENDING_FN_DECLS,
+	LANG_HOOKS_TREE_INLINING_ANON_AGGR_TYPE_P,
+	LANG_HOOKS_TREE_INLINING_START_INLINING,
+	LANG_HOOKS_TREE_INLINING_END_INLINING): Remove.
+
+	* c-objc-common.h (LANG_HOOKS_TREE_INLINING_ANON_AGGR_TYPE_P): Do
+	not set it.
+
+2007-04-08  Anatoly Sokolov <aesok@post.ru>
+
+	PR target/29932
+	* config/avr/predicates.md (io_address_operand): Delete predicate.
+	(low_io_address_operand): Don't use 'mode' argument.
+	(higth_io_address_operand): Rename ...
+	(high_io_address_operand): ... to this. Don't use 'mode' argument.
+	* config/avr/avr.md (*sbix_branch_tmp, *sbix_branch_tmp_bit7): Adjust
+	for above change.
+
 2007-04-07  Daniel Berlin  <dberlin@dberlin.org>
 
 	Revert change removing staticp.
@@ -5,7 +834,7 @@
 2007-04-07  Anatoly Sokolov <aesok@post.ru>
 
 	PR target/30289
-	* config/avr/avr.md (*clrmemqi, *clrmemhi): Mark operand 4 as 
+	* config/avr/avr.md (*clrmemqi, *clrmemhi): Mark operand 4 as
 	earlyclobber.
 
 2007-04-07  Bruce Korb  <bkorb@gnu.org>
@@ -83,7 +912,7 @@
 	* langhooks.h (lang_hooks): Remove safe_from_p.
 	(lhd_safe_from_p): Remove prototype.
 	* langhooks.c (lhd_safe_from_p): Remove.
-	
+
 2007-04-06  Jan Hubicka  <jh@suse.cz>
 
 	* cgraphunit.c (decide_is_function_needed): Do not keep always_inline
@@ -189,7 +1018,7 @@
 2007-04-05  Anatoly Sokolov <aesok@post.ru>
 
 	PR target/25448
-	* config/avr/avr.c (avr_handle_fndecl_attribute): Use the 
+	* config/avr/avr.c (avr_handle_fndecl_attribute): Use the
 	DECL_ASSEMBLER_NAME, not the DECL_NAME.
 
 2007-04-05  H.J. Lu  <hongjiu.lu@intel.com>
--- /usr/src/SpecTests/sandbox-britten-memory/x86_64/mem-result/ChangeLog.cp	2007-04-16 16:03:43.000000000 +0000
+++ /usr/src/SpecTests/sandbox-britten-memory/gcc/gcc/cp/ChangeLog	2007-04-17 01:31:17.000000000 +0000
@@ -1,3 +1,47 @@
+2007-04-16  Seongbae Park <seongbae.park@gmail.com>
+
+	PR c++/29365
+
+	* cp/decl2.c (constrain_class_visibility):
+	Do not warn about the use of anonymous namespace in the main input file.
+
+2007-04-15  Mark Mitchell  <mark@codesourcery.com>
+
+	* cp-tree.h (current_template_parms): Fix typo in comment.
+
+2007-04-15  Kazu Hirata  <kazu@codesourcery.com>
+
+	* cp-tree.h, error.c: Fix comment typos.
+
+2007-04-13  Jason Merrill  <jason@redhat.com>
+
+	PR c++/31074
+	* call.c (reference_binding): Add c_cast_p parm.  If true,
+	add quals to TO as needed to make it reference-compatible.
+
+2007-04-11  Jan Hubicka  <jh@suse.cz>
+
+	* cp/class.c (convert_to_base_statically): Fold produced tree; verify
+	that we are not processing template_decl.
+
+2007-04-09  Mark Mitchell  <mark@codesourcery.com>
+
+	PR c++/31449
+	* class.c (build_base_path): Ensure that the converted pointer has
+	the same cv-qualification as the input.
+
+2007-04-09  Paolo Carlini  <pcarlini@suse.de>
+
+	* tree.c (cp_tree_equal): Deal with TRAIT_EXPR.
+
+2007-04-08  Steven Bosscher  <steven@gcc.gnu.org>
+
+	* cp-objcp-common.h (LANG_HOOKS_TREE_INLINING_ADD_PENDING_FN_DECLS):
+	Do not set it.
+	(LANG_HOOKS_TREE_INLINING_ANON_AGGR_TYPE_P): Do not set it.
+	* tree.c (cp_add_pending_fn_decls): Remove.
+	* cp-tree.h (cp_add_pending_fn_decls): Remove prototype.
+
 2007-04-07  Daniel Berlin  <dberlin@dberlin.org>
 
 	Revert change removing staticp.
@@ -13,8 +57,6 @@
 	* class.c (check_for_override): Don't remove dllmport attribute
 	of virtual methods.
 
-
-
 2007-04-03  Jakub Jelinek  <jakub@redhat.com>
 
 	PR c++/30847


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.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]