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!


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:
  Peak amount of GGC memory allocated before garbage collecting increased from 3386k to 3393k, overall 0.21%
  Peak amount of GGC memory still allocated after garbage collecting increased from 3033k to 3040k, overall 0.23%
  Amount of memory still referenced at the end of compilation increased from 3786k to 3794k, overall 0.22%
    Overall memory needed: 8332k -> 8333k
    Peak memory use before GGC: 3386k -> 3393k
    Peak memory use after GGC: 3033k -> 3040k
    Maximum of released memory in single GGC run: 353k
    Garbage: 525k
    Leak: 3786k -> 3794k
    Overhead: 913k -> 914k
    GGC runs: 3

comparing empty function compilation at -O0 -g level:
  Peak amount of GGC memory allocated before garbage collecting increased from 3413k to 3420k, overall 0.21%
  Peak amount of GGC memory still allocated after garbage collecting increased from 3061k to 3068k, overall 0.23%
  Amount of memory still referenced at the end of compilation increased from 3819k to 3827k, overall 0.21%
    Overall memory needed: 8348k -> 8349k
    Peak memory use before GGC: 3413k -> 3420k
    Peak memory use after GGC: 3061k -> 3068k
    Maximum of released memory in single GGC run: 352k
    Garbage: 527k
    Leak: 3819k -> 3827k
    Overhead: 917k -> 918k
    GGC runs: 3

comparing empty function compilation at -O1 level:
  Peak amount of GGC memory allocated before garbage collecting increased from 3386k to 3393k, overall 0.21%
  Peak amount of GGC memory still allocated after garbage collecting increased from 3033k to 3040k, overall 0.23%
  Amount of memory still referenced at the end of compilation increased from 3789k to 3797k, overall 0.22%
    Overall memory needed: 8388k -> 8389k
    Peak memory use before GGC: 3386k -> 3393k
    Peak memory use after GGC: 3033k -> 3040k
    Maximum of released memory in single GGC run: 353k
    Garbage: 530k
    Leak: 3789k -> 3797k
    Overhead: 913k -> 914k
    GGC runs: 3

comparing empty function compilation at -O2 level:
  Peak amount of GGC memory allocated before garbage collecting increased from 3386k to 3393k, overall 0.21%
  Peak amount of GGC memory still allocated after garbage collecting increased from 3034k to 3041k, overall 0.23%
  Amount of memory still referenced at the end of compilation increased from 3790k to 3798k, overall 0.22%
    Overall memory needed: 8404k -> 8405k
    Peak memory use before GGC: 3386k -> 3393k
    Peak memory use after GGC: 3034k -> 3041k
    Maximum of released memory in single GGC run: 352k
    Garbage: 533k
    Leak: 3790k -> 3798k
    Overhead: 914k -> 915k
    GGC runs: 3

comparing empty function compilation at -O3 level:
  Peak amount of GGC memory allocated before garbage collecting increased from 3386k to 3393k, overall 0.21%
  Peak amount of GGC memory still allocated after garbage collecting increased from 3034k to 3041k, overall 0.23%
  Amount of memory still referenced at the end of compilation increased from 3790k to 3798k, overall 0.22%
    Overall memory needed: 8404k -> 8405k
    Peak memory use before GGC: 3386k -> 3393k
    Peak memory use after GGC: 3034k -> 3041k
    Maximum of released memory in single GGC run: 352k
    Garbage: 533k
    Leak: 3790k -> 3798k
    Overhead: 914k -> 915k
    GGC runs: 3

comparing combine.c compilation at -O0 level:
    Overall memory needed: 23760k -> 23769k
    Peak memory use before GGC: 10325k -> 10330k
    Peak memory use after GGC: 9556k -> 9564k
    Maximum of released memory in single GGC run: 1905k
    Garbage: 39063k -> 39056k
    Leak: 8844k -> 8852k
    Overhead: 5685k -> 5686k
    GGC runs: 254

comparing combine.c compilation at -O0 -g level:
    Overall memory needed: 25640k -> 25645k
    Peak memory use before GGC: 11988k -> 11996k
    Peak memory use after GGC: 11348k -> 11356k
    Maximum of released memory in single GGC run: 1516k -> 1515k
    Garbage: 39412k -> 39404k
    Leak: 11737k -> 11746k
    Overhead: 6391k -> 6392k
    GGC runs: 250

comparing combine.c compilation at -O1 level:
    Overall memory needed: 36308k -> 36317k
    Peak memory use before GGC: 18978k -> 18985k
    Peak memory use after GGC: 18787k -> 18794k
    Maximum of released memory in single GGC run: 1370k
    Garbage: 53264k -> 53258k
    Leak: 8899k -> 8907k
    Overhead: 6747k -> 6747k
    GGC runs: 326

comparing combine.c compilation at -O2 level:
  Amount of memory still referenced at the end of compilation increased from 9020k to 9036k, overall 0.18%
    Overall memory needed: 38548k -> 38561k
    Peak memory use before GGC: 19032k -> 19039k
    Peak memory use after GGC: 18843k -> 18850k
    Maximum of released memory in single GGC run: 1404k
    Garbage: 71793k -> 71803k
    Leak: 9020k -> 9036k
    Overhead: 8880k -> 8881k
    GGC runs: 388 -> 387

comparing combine.c compilation at -O3 level:
  Amount of memory still referenced at the end of compilation increased from 9133k to 9146k, overall 0.13%
    Overall memory needed: 41364k -> 41373k
    Peak memory use before GGC: 19276k -> 19283k
    Peak memory use after GGC: 18967k -> 18975k
    Maximum of released memory in single GGC run: 2103k -> 2104k
    Garbage: 93374k -> 93375k
    Leak: 9133k -> 9146k
    Overhead: 11542k -> 11543k
    GGC runs: 417

comparing insn-attrtab.c compilation at -O0 level:
  Amount of memory still referenced at the end of compilation increased from 11334k to 11358k, overall 0.21%
    Overall memory needed: 140352k -> 140365k
    Peak memory use before GGC: 60814k -> 60821k
    Peak memory use after GGC: 34064k -> 34071k
    Maximum of released memory in single GGC run: 34384k
    Garbage: 132285k -> 132274k
    Leak: 11334k -> 11358k
    Overhead: 14975k -> 14976k
    GGC runs: 198 -> 197

comparing insn-attrtab.c compilation at -O0 -g level:
    Overall memory needed: 141592k -> 141605k
    Peak memory use before GGC: 61976k -> 61983k
    Peak memory use after GGC: 35225k -> 35232k
    Maximum of released memory in single GGC run: 34385k
    Garbage: 132506k -> 132509k
    Leak: 13043k -> 13051k
    Overhead: 15372k -> 15373k
    GGC runs: 201 -> 199

comparing insn-attrtab.c compilation at -O1 level:
    Overall memory needed: 151600k -> 151601k
    Peak memory use before GGC: 59311k -> 59319k
    Peak memory use after GGC: 55086k -> 55094k
    Maximum of released memory in single GGC run: 23586k
    Garbage: 217482k -> 217482k
    Leak: 11462k -> 11470k
    Overhead: 25167k -> 25168k
    GGC runs: 229 -> 228

comparing insn-attrtab.c compilation at -O2 level:
    Overall memory needed: 190816k -> 190993k
    Peak memory use before GGC: 59194k -> 59202k
    Peak memory use after GGC: 55147k -> 55155k
    Maximum of released memory in single GGC run: 21338k
    Garbage: 252774k -> 252772k
    Leak: 11457k -> 11465k
    Overhead: 30577k -> 30578k
    GGC runs: 254 -> 253

comparing insn-attrtab.c compilation at -O3 level:
    Overall memory needed: 196528k -> 196513k
    Peak memory use before GGC: 71750k -> 71757k
    Peak memory use after GGC: 65981k -> 65988k
    Maximum of released memory in single GGC run: 22952k -> 22951k
    Garbage: 282144k -> 282143k
    Leak: 11465k -> 11473k
    Overhead: 32375k -> 32376k
    GGC runs: 257 -> 256

comparing Gerald's testcase PR8361 compilation at -O0 level:
    Overall memory needed: 156568k -> 156628k
    Peak memory use before GGC: 91659k -> 91667k
    Peak memory use after GGC: 90740k -> 90747k
    Maximum of released memory in single GGC run: 18002k
    Garbage: 210854k -> 210851k
    Leak: 55672k -> 55680k
    Overhead: 26877k -> 26877k
    GGC runs: 397 -> 395

comparing Gerald's testcase PR8361 compilation at -O0 -g level:
    Overall memory needed: 177312k -> 177680k
    Peak memory use before GGC: 104549k -> 104556k
    Peak memory use after GGC: 103513k -> 103520k
    Maximum of released memory in single GGC run: 18639k -> 18638k
    Garbage: 216705k -> 216710k
    Leak: 79101k -> 79109k
    Overhead: 32845k -> 32846k
    GGC runs: 373

comparing Gerald's testcase PR8361 compilation at -O1 level:
    Overall memory needed: 139139k -> 139146k
    Peak memory use before GGC: 93652k -> 93659k
    Peak memory use after GGC: 92725k -> 92731k
    Maximum of released memory in single GGC run: 17407k
    Garbage: 319589k -> 319598k
    Leak: 55592k -> 55592k
    Overhead: 32823k -> 32823k
    GGC runs: 502

comparing Gerald's testcase PR8361 compilation at -O2 level:
    Overall memory needed: 148603k -> 148630k
    Peak memory use before GGC: 94136k -> 94143k
    Peak memory use after GGC: 93204k -> 93210k
    Maximum of released memory in single GGC run: 17407k -> 17406k
    Garbage: 376015k -> 375987k
    Leak: 56348k -> 56356k
    Overhead: 39009k -> 39011k
    GGC runs: 563 -> 560

comparing Gerald's testcase PR8361 compilation at -O3 level:
    Overall memory needed: 152211k -> 152226k
    Peak memory use before GGC: 95170k -> 95177k
    Peak memory use after GGC: 94095k -> 94102k
    Maximum of released memory in single GGC run: 17828k
    Garbage: 417609k -> 417575k
    Leak: 56666k -> 56674k
    Overhead: 42530k -> 42531k
    GGC runs: 589 -> 588

comparing PR rtl-optimization/28071 testcase compilation at -O0 level:
    Overall memory needed: 381001k -> 381010k
    Peak memory use before GGC: 103467k -> 103474k
    Peak memory use after GGC: 59120k -> 59127k
    Maximum of released memory in single GGC run: 50583k
    Garbage: 179674k
    Leak: 8998k -> 9006k
    Overhead: 31652k -> 31653k
    GGC runs: 65

comparing PR rtl-optimization/28071 testcase compilation at -O0 -g level:
    Overall memory needed: 381813k -> 381826k
    Peak memory use before GGC: 104113k -> 104120k
    Peak memory use after GGC: 59766k -> 59774k
    Maximum of released memory in single GGC run: 50583k -> 50582k
    Garbage: 179778k
    Leak: 10766k -> 10775k
    Overhead: 32147k -> 32148k
    GGC runs: 72

comparing PR rtl-optimization/28071 testcase compilation at -O1 level:
    Overall memory needed: 294508k -> 294513k
    Peak memory use before GGC: 82809k -> 82816k
    Peak memory use after GGC: 75162k -> 75169k
    Maximum of released memory in single GGC run: 40023k
    Garbage: 236132k
    Leak: 18368k -> 18376k
    Overhead: 32733k -> 32734k
    GGC runs: 72

comparing PR rtl-optimization/28071 testcase compilation at -O2 level:
    Overall memory needed: 299908k -> 299825k
    Peak memory use before GGC: 80149k -> 80156k
    Peak memory use after GGC: 75163k -> 75170k
    Maximum of released memory in single GGC run: 33756k -> 33751k
    Garbage: 246185k -> 246181k
    Leak: 18450k -> 18458k
    Overhead: 34956k -> 34956k
    GGC runs: 85

comparing PR rtl-optimization/28071 testcase compilation at -O3 -fno-tree-pre -fno-tree-fre level:
    Overall memory needed: 1013244k -> 1012933k
    Peak memory use before GGC: 168790k -> 168797k
    Peak memory use after GGC: 158354k -> 158361k
    Maximum of released memory in single GGC run: 83549k
    Garbage: 356541k -> 356541k
    Leak: 28532k -> 28540k
    Overhead: 46917k -> 46918k
    GGC runs: 69

Head of the ChangeLog is:

--- /usr/src/SpecTests/sandbox-britten-memory/x86_64/mem-result/ChangeLog	2007-08-08 18:26:23.000000000 +0000
+++ /usr/src/SpecTests/sandbox-britten-memory/gcc/gcc/ChangeLog	2007-08-09 10:26:50.000000000 +0000
@@ -1,3 +1,232 @@
+2007-08-08  Chao-ying Fu  <fu@mips.com>
+
+	* tree.def (FIXED_POINT_TYPE): New type.
+	(FIXED_CST): New constant.
+	(FIXED_CONVERT_EXPR): New expr.
+	* doc/c-tree.texi (Types): Document FIXED_POINT_TYPE.
+	(Expressions): Document FIXED_CST and FIXED_CONVERT_EXPR.
+	* tree.h (struct tree_base): Add saturating_flag.
+	Remove one bit of spare for saturating_flag.
+	(NUMERICAL_TYPE_CHECK): Support FIXED_POINT_TYPE.
+	(NON_SAT_FIXED_POINT_TYPE_P, SAT_FIXED_POINT_TYPE_P,
+	FIXED_POINT_TYPE_P): Define.
+	(TYPE_SATURATING): Define.
+	(TREE_FIXED_CST_PTR, TREE_FIXED_CST): Define.
+	(struct tree_fixed_cst): New.
+	(TYPE_IBIT, TYPE_FBIT): Define.
+	(tree_node): Add fixed_cst.
+	(enum tree_index): Add new enumeration values of
+	TI_SAT_SFRACT_TYPE, TI_SAT_FRACT_TYPE, TI_SAT_LFRACT_TYPE,
+	TI_SAT_LLFRACT_TYPE, TI_SAT_USFRACT_TYPE, TI_SAT_UFRACT_TYPE,
+	TI_SAT_ULFRACT_TYPE, TI_SAT_ULLFRACT_TYPE, TI_SFRACT_TYPE,
+	TI_FRACT_TYPE, TI_LFRACT_TYPE, TI_LLFRACT_TYPE, TI_USFRACT_TYPE,
+	TI_UFRACT_TYPE, TI_ULFRACT_TYPE, TI_ULLFRACT_TYPE,
+	TI_SAT_SACCUM_TYPE, TI_SAT_ACCUM_TYPE, TI_SAT_LACCUM_TYPE,
+	TI_SAT_LLACCUM_TYPE, TI_SAT_USACCUM_TYPE, TI_SAT_UACCUM_TYPE,
+	TI_SAT_ULACCUM_TYPE, TI_SAT_ULLACCUM_TYPE, TI_SACCUM_TYPE,
+	TI_ACCUM_TYPE, TI_LACCUM_TYPE, TI_LLACCUM_TYPE, TI_USACCUM_TYPE,
+	TI_UACCUM_TYPE, TI_ULACCUM_TYPE, TI_ULLACCUM_TYPE,
+	TI_QQ_TYPE, TI_HQ_TYPE,_TYPE, TI_SQ_TYPE, TI_DQ_TYPE, TI_TQ_TYPE,
+	TI_UQQ_TYPE, TI_UHQ_TYPE, TI_USQ_TYPE, TI_UDQ_TYPE, TI_UTQ_TYPE,
+	TI_SAT_QQ_TYPE, TI_SAT_HQ_TYPE, TI_SAT_SQ_TYPE, TI_SAT_DQ_TYPE,
+	TI_SAT_TQ_TYPE, TI_SAT_UQQ_TYPE, TI_SAT_UHQ_TYPE, TI_SAT_USQ_TYPE,
+	TI_SAT_UDQ_TYPE, TI_SAT_UTQ_TYPE, TI_HA_TYPE, TI_SA_TYPE, TI_DA_TYPE,
+	TI_TA_TYPE, TI_UHA_TYPE, TI_USA_TYPE, TI_UDA_TYPE, TI_UTA_TYPE,
+	TI_SAT_HA_TYPE, TI_SAT_SA_TYPE, TI_SAT_DA_TYPE, TI_SAT_TA_TYPE,
+	TI_SAT_UHA_TYPE, TI_SAT_USA_TYPE, TI_SAT_UDA_TYPE, TI_SAT_UTA_TYPE.
+	(sat_short_fract_type_node, sat_fract_type_node,
+	sat_long_fract_type_node, sat_long_long_fract_type_node,
+	sat_unsigned_short_fract_type_node, sat_unsigned_fract_type_node,
+	sat_unsigned_long_fract_type_node,
+	sat_unsigned_long_long_fract_type_node, short_fract_type_node,
+	fract_type_node, long_fract_type_node, long_long_fract_type_node,
+	unsigned_short_fract_type_node, unsigned_fract_type_node,
+	unsigned_long_fract_type_node, unsigned_long_long_fract_type_node,
+	sat_short_accum_type_node, sat_accum_type_node,
+	sat_long_accum_type_node, sat_long_long_accum_type_node,
+	sat_unsigned_short_accum_type_node, sat_unsigned_accum_type_node,
+	sat_unsigned_long_accum_type_node,
+	sat_unsigned_long_long_accum_type_node, short_accum_type_node,
+	accum_type_node, long_accum_type_node, long_long_accum_type_node,
+	unsigned_short_accum_type_node, unsigned_accum_type_node,
+	unsigned_long_accum_type_node, unsigned_long_long_accum_type_node,
+	qq_type_node, hq_type_node, sq_type_node, dq_type_node, tq_type_node,
+	uqq_type_node, uhq_type_node, usq_type_node, udq_type_node,
+	utq_type_node, sat_qq_type_node, sat_hq_type_node, sat_sq_type_node,
+	sat_dq_type_node, sat_tq_type_node, sat_uqq_type_node,
+	sat_uhq_type_node, sat_usq_type_node, sat_udq_type_node,
+	sat_utq_type_node, ha_type_node, sa_type_node, da_type_node,
+	ta_type_node, uha_type_node, usa_type_node, uda_type_node,
+	uta_type_node, sat_ha_type_node, sat_sa_type_node, sat_da_type_node,
+	sat_ta_type_node, sat_uha_type_node, sat_usa_type_node,
+	sat_uda_type_node, sat_uta_type_node): New macro.
+	(make_fract_type, make_accum_type): Declare.
+	(make_signed_fract_type, make_unsigned_fract_type,
+	make_sat_signed_fract_type, make_sat_unsigned_fract_type,
+	make_signed_accum_type, make_unsigned_accum_type,
+	make_sat_signed_accum_type, make_sat_unsigned_accum_type,
+	make_or_reuse_signed_fract_type, make_or_reuse_unsigned_fract_type,
+	make_or_reuse_sat_signed_fract_type,
+	make_or_reuse_sat_unsigned_fract_type, make_or_reuse_signed_accum_type,
+	make_or_reuse_unsigned_accum_type, make_or_reuse_sat_signed_accum_type,
+	make_or_reuse_sat_unsigned_accum_type): New macro.
+	(fixed_zerop): Declare.
+	* defaults.h (SHORT_FRACT_TYPE_SIZE, FRACT_TYPE_SIZE,
+	LONG_FRACT_TYPE_SIZE, LONG_LONG_FRACT_TYPE_SIZE,
+	SHORT_ACCUM_TYPE_SIZE, ACCUM_TYPE_SIZE, LONG_ACCUM_TYPE_SIZE,
+	LONG_LONG_ACCUM_TYPE_SIZE): Define.
+	* treestruct.def: Add TS_FIXED_CST.
+	* Makefile.in (c-pretty-print.o): Add dependence on fixed-value.h.
+	(tree.o): Likewise.
+	(tree-dump.o): Likewise.
+	(print-tree.o): Likewise.
+	(tree-pretty-print.o): Likewise.
+	(fold-const.o): Likewise.
+	* tree-complex.c (some_nonzerop): Handle FIXED_CST.
+	* tree-gimple.c (is_gimple_formal_tmp_rhs): Handle FIXED_CST.
+	(is_gimple_min_invariant): Handle FIXED_CST.
+	* stor-layout.c (int_mode_for_mode): Handle MODE_FRACT, MODE_UFRACT,
+	MODE_ACCUM, MODE_UACCUM, MODE_VECTOR_FRACT, MODE_VECTOR_UFRACT,
+	MODE_VECTOR_ACCUM, MODE_VECTOR_UACCUM.
+	(layout_type): Handle FIXED_POINT_TYPE.
+	(make_fract_type, make_accum_type): New functions.
+	* tree-browser.c (browse_tree): Handle FIXED_POINT_TYPE.
+	* tree-dump.c (fixed-value.h): New include.
+	(dump_fixed): New function.
+	(dequeue_and_dump): Handle FIXED_POINT_TYPE and FIXED_CST.
+	* tree-inline.c (remap_type_1): Handle FIXED_POINT_TYPE.
+	(estimate_num_insns_1): Handle FIXED_CST and FIXED_CONVERT_EXPR.
+	* tree-pretty-print.c (fixed-value.h): New include.
+	(dump_generic_node): Handle FIXED_POINT_TYPE, FIXED_CST, and
+	FIXED_CONVERT_EXPR.
+	* tree-scalar-evolution.c (get_scalar_evolution): Handle FIXED_CST.
+	* tree-ssa-loop-im.c (for_each_index): Handle FIXED_CST.
+	* tree-ssa-pre.c (poolify_tree): Handle FIXED_CST.
+	* tree-ssa-reassoc.c (break_up_subtract_bb): We can do reassociation
+	for non-saturating fixed-point types.
+	(reassociate_bb): Likewise.
+	* emit-rtl.c (fixed-value.h): New include.
+	(fconst0, fconst1): New array.
+	(init_emit_once): Initialize fconst0 and fconst1 for fixed-point modes.
+	* tree-vect-generic.c expand_vector_operation): Support
+	MODE_VECTOR_FRACT, MODE_VECTOR_UFRACT, MODE_VECTOR_ACCUM, and
+	MODE_VECTOR_UACCUM.
+	(type_for_widest_vector_mode): Add one parameter for the 
+	saturating flag.
+	Check scalar FRACT, UFRACT, ACCUM, and UACCUM mode to select their
+	vector mode.
+	Pass the satp parameter to type_for_mode for fixed-point types.
+	(expand_vector_operations_1): Pass the saturating flag to
+	type_for_widest_vector_mode.
+	Support MODE_VECTOR_FRACT, MODE_VECTOR_UFRACT, MODE_VECTOR_ACCUM,
+	and MODE_VECTOR_UACCUM.
+	* tree-vect-transform.c (vect_is_simple_cond): Support FIXED_CST.
+	(vectorizable_condition): Likewise.
+	* tree.c (fixed-value.h): New include.
+	(tree_code_size): Support FIXED_CST.
+	(build_fixed): New function.
+	(build_one_cst): Support FIXED_POINT_TYPE for accum types.
+	(fixed_zerop): New function.
+	(tree_node_structure): Support FIXED_CST.
+	(type_contains_placeholder_1): Support FIXED_POINT_TYPE.
+	(build_type_attribute_qual_variant): Handle FIXED_POINT_TYPE.
+	(type_hash_eq): Handle FIXED_POINT_TYPE.
+	(simple_cst_equal): Support FIXED_CST.
+	(iterative_hash_expr): Handle FIXED_CST.
+	(get_unwidened): Make sure type is not FIXED_POINT_TYPE.
+	(get_narrower): Likewise.
+	(variably_modified_type_p): Handle FIXED_POINT_TYPE.
+	(make_or_reuse_fract_type, make_or_reuse_accum_type): New functions.
+	(build_common_tree_nodes_2): Use MAKE_FIXED_TYPE_NODE_FAMILY and
+	MAKE_FIXED_MODE_NODE macros to initialize fixed-point type
+	nodes.
+	(build_vector_type_for_mode): Handle MODE_VECTOR_FRACT,
+	MODE_VECTOR_UFRACT, MODE_VECTOR_ACCUM, MODE_VECTOR_UACCUM.
+	(initializer_zerop): Support FIXED_CST.
+	(walk_tree): Handle FIXED_CST and FIXED_POINT_TYPE.
+	* dwarf2out.c (base_type_die): Use DW_ATE_signed_fixed or
+	DW_ATE_unsigned_fixed to describe FIXED_POINT_TYPE.
+	(is_base_type): Handle FIXED_POINT_TYPE.
+	(add_type_attribute): Handle FIXED_POINT_TYPE.
+	(gen_type_die_with_usage): Handle FIXED_POINT_TYPE.
+	* print-tree.c (fixed-value.h): New include.
+	(print_node_brief): Support FIXED_CST.
+	(print_node): Support FIXED_POINT_TYPE and FIXED_CST.
+	* c-pretty-print.c (fixed-value.h): New include.
+	(pp_c_type_specifier): Handle FIXED_POINT_TYPE.  Need to pass
+	TYPE_SATURATING to c_common_type_for_mode for fixed-point modes.
+	(pp_c_direct_abstract_declarator): Handle FIXED_POINT_TYPE.
+	Support fixed-point types for inner items in VECTOR_TYPE.
+	(pp_c_direct_declarator): Likewise.
+	(pp_c_declarator): Likewise.
+	(pp_c_fixed_constant): New function.
+	(pp_c_constant): Handle FIXED_CST.
+	(pp_c_primary_expression): Likewise.
+	(pp_c_expression): Likewise.
+	* fold-const.c (fixed-value.h): New include.
+	(negate_expr_p): Return true for FIXED_CST.
+	(fold_negate_expr): Support FIXED_CST.
+	(split_tree): Support FIXED_CST.
+	(const_binop): Support FIXED_CST.
+	(fold_convert_const_int_from_fixed): New function to convert from
+	fixed to int.
+	(fold_convert_const_real_from_fixed): New function to convert from
+	fixed to real.
+	(fold_convert_const_fixed_from_fixed): New function to convert from
+	fixed to another fixed.
+	(fold_convert_const_fixed_from_int): New function to convert from
+	int to fixed.
+	(fold_convert_const_fixed_from_real): New function to convert from
+	real to fixed.
+	(fold_convert_const): Support conversions from fixed to int, from
+	fixed to real, from fixed to fixed, from int to fixed, and from real
+	to fixed.
+	(fold_convert): Support FIXED_CST and FIXED_POINT_TYPE.
+	(operand_equal_p): Support FIXED_CST.
+	(make_range): For fixed-point modes, we need to pass the
+	saturating flag as the 2nd parameter.
+	(tree_swap_operands_p): Handle FIXED_CST.
+	(fold_plusminus_mult_expr): For fract modes, we cannot generate
+	constant 1.
+	(fold_unary): Support FIXED_CONVERT_EXPR.
+	(fold_binary): Handle FIXED_CST.
+	Make sure the type is not saturating, before associating operations.
+	Ex: A + B + C, A * B * C, (A1 * C1) +/- (A2 * C2).
+	(tree_expr_nonnegative_warnv_p): Handle FIXED_CST.
+	(fold_negate_const): Support FIXED_CST.
+	(fold_relational_const): Support FIXED_CST.
+	* gimplify.c (omp_firstprivatize_type_sizes): Handle FIXED_POINT_TYPE.
+	(gimplify_expr): Handle FIXED_CST.
+	(gimplify_type_sizes): Handle FIXED_POINT_TYPE.
+	* ipa-prop.c (ipa_callsite_compute_param): Support FIXED_CST.
+	* ipa-type-escape.c (type_to_consider): Handle FIXED_POINT_TYPE.
+	* doc/tm.texi (Type Layout): Document SHORT_FRACT_TYPE_SIZE,
+	FRACT_TYPE_SIZE, LONG_FRACT_TYPE_SIZE, LONG_LONG_FRACT_TYPE_SIZE,
+	SHORT_ACCUM_TYPE_SIZE, ACCUM_TYPE_SIZE, LONG_ACCUM_TYPE_SIZE,
+	LONG_LONG_ACCUM_TYPE_SIZE.
+	* dbxout.c (dbxout_type): Handle FIXED_POINT_TYPE.
+	* c-aux-info.c (gen_type): Handle FIXED_POINT_TYPE.
+	* tree-sra.c (is_sra_scalar_type): Support FIXED_POINT_TYPE.
+	* expmed.c (extract_bit_field): Support MODE_FRACT, MODE_UFRACT,
+	MODE_ACCUM, and MODE_UACCUM.
+	* tree-vectorizer.c (vect_is_simple_reduction): Check for saturating
+	fixed-point types to disable reduction.
+	* explow.c (promote_mode): Support FIXED_POINT_TYPE.
+
+2007-08-08  David Edelsohn  <edelsohn@gnu.org>
+
+	* config/rs6000/x-rs6000: New file.
+	* config/rs6000/darwin.h (CC1_SPEC): Add cc1_cpu.
+	* config/rs6000/rs6000.h (EXTRA_SPECS): Add cc1_cpu.
+	(EXTRA_SPEC_FUNCTIONS): Define.
+	(HAVE_LOCAL_CPU_DETECT): Define.
+	(CC1_CPU_SPEC): Define.
+	* config/rs6000/driver-rs6000.c: New file.
+	* config/rs6000/aix.h (CC1_SPEC): Define.
+	* config/rs6000/sysv4.h (CC1_SPEC): Add cc1_cpu.
+	* config.host: Add x-rs6000 to host_xmake_file if host and target
+	are rs6000 or powerpc.
+
 2007-08-08  Paolo Bonzini <paolo.bonzini@lu.unisi.ch>
 
 	* config/i386/t-crtstuff (CRTSTUFF_T_CFLAGS): Use +=.


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]