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: 8153k -> 8151k
    Peak memory use before GGC: 1102k -> 1100k
    Peak memory use after GGC: 1000k -> 998k
    Maximum of released memory in single GGC run: 129k
    Garbage: 237k -> 237k
    Leak: 957k -> 956k
    Overhead: 80k -> 80k
    GGC runs: 2
Testing has produced no results
Testing has produced no results

comparing empty function compilation at -O0 -g level:
    Overall memory needed: 8169k -> 8167k
    Peak memory use before GGC: 1129k -> 1128k
    Peak memory use after GGC: 1034k -> 1033k
    Maximum of released memory in single GGC run: 128k -> 127k
    Garbage: 240k -> 239k
    Leak: 990k -> 989k
    Overhead: 85k -> 85k
    GGC runs: 4
Testing has produced no results
Testing has produced no results

comparing empty function compilation at -O1 level:
    Overall memory needed: 8205k -> 8203k
    Peak memory use before GGC: 1102k -> 1100k
    Peak memory use after GGC: 1000k -> 998k
    Maximum of released memory in single GGC run: 131k
    Garbage: 240k -> 239k
    Leak: 958k -> 956k
    Overhead: 81k -> 81k
    GGC runs: 2
    Pre-IPA-Garbage: 227k -> 227k
    Pre-IPA-Leak: 960k -> 958k
    Pre-IPA-Overhead: 79k -> 79k
    Post-IPA-Garbage: 227k -> 227k
    Post-IPA-Leak: 960k -> 958k
    Post-IPA-Overhead: 79k -> 79k

comparing empty function compilation at -O2 level:
    Overall memory needed: 8225k -> 8223k
    Peak memory use before GGC: 1102k -> 1101k
    Peak memory use after GGC: 1000k -> 999k
    Maximum of released memory in single GGC run: 135k -> 134k
    Garbage: 243k -> 242k
    Leak: 959k -> 957k
    Overhead: 82k -> 82k
    GGC runs: 2
    Pre-IPA-Garbage: 227k -> 227k
    Pre-IPA-Leak: 960k -> 959k
    Pre-IPA-Overhead: 79k -> 79k
    Post-IPA-Garbage: 227k -> 227k
    Post-IPA-Leak: 960k -> 959k
    Post-IPA-Overhead: 79k -> 79k

comparing empty function compilation at -O3 level:
    Overall memory needed: 8225k -> 8223k
    Peak memory use before GGC: 1102k -> 1101k
    Peak memory use after GGC: 1000k -> 999k
    Maximum of released memory in single GGC run: 135k -> 134k
    Garbage: 243k -> 242k
    Leak: 959k -> 957k
    Overhead: 82k -> 82k
    GGC runs: 2
    Pre-IPA-Garbage: 227k -> 227k
    Pre-IPA-Leak: 960k -> 959k
    Pre-IPA-Overhead: 79k -> 79k
    Post-IPA-Garbage: 227k -> 227k
    Post-IPA-Leak: 960k -> 959k
    Post-IPA-Overhead: 79k -> 79k

comparing combine.c compilation at -O0 level:
    Overall memory needed: 22621k -> 22611k
    Peak memory use before GGC: 7784k -> 7767k
    Peak memory use after GGC: 7160k -> 7146k
    Maximum of released memory in single GGC run: 1545k
    Garbage: 37789k -> 37781k
    Leak: 5490k -> 5477k
    Overhead: 4617k -> 4618k
    GGC runs: 372 -> 371
Testing has produced no results
Testing has produced no results

comparing combine.c compilation at -O0 -g level:
    Overall memory needed: 24709k -> 24691k
    Peak memory use before GGC: 9719k -> 9704k
    Peak memory use after GGC: 9057k -> 9042k
    Maximum of released memory in single GGC run: 1832k -> 1831k
    Garbage: 38138k -> 38110k
    Leak: 8685k -> 8671k
    Overhead: 5413k -> 5414k
    GGC runs: 340
Testing has produced no results
Testing has produced no results

comparing combine.c compilation at -O1 level:
  Peak amount of GGC memory still allocated after garbage collecting increased from 16077k to 16094k, overall 0.11%
    Overall memory needed: 32853k -> 32835k
    Peak memory use before GGC: 16260k -> 16257k
    Peak memory use after GGC: 16077k -> 16094k
    Maximum of released memory in single GGC run: 1375k
    Garbage: 51571k -> 51450k
    Leak: 5656k -> 5646k
    Overhead: 5805k -> 5808k
    GGC runs: 439 -> 440
    Pre-IPA-Garbage: 13914k -> 13895k
    Pre-IPA-Leak: 17098k -> 17088k
    Pre-IPA-Overhead: 2128k -> 2132k
    Post-IPA-Garbage: 13914k -> 13895k
    Post-IPA-Leak: 17098k -> 17088k
    Post-IPA-Overhead: 2128k -> 2132k

comparing combine.c compilation at -O2 level:
  Amount of produced GGC garbage increased from 71457k to 71647k, overall 0.26%
    Overall memory needed: 34661k -> 34607k
    Peak memory use before GGC: 16358k
    Peak memory use after GGC: 16195k -> 16187k
    Maximum of released memory in single GGC run: 1305k -> 1304k
    Garbage: 71457k -> 71647k
    Leak: 5986k -> 5983k
    Overhead: 8155k -> 8157k
    GGC runs: 512 -> 509
    Pre-IPA-Garbage: 14067k -> 14047k
    Pre-IPA-Leak: 17161k -> 17152k
    Pre-IPA-Overhead: 2143k -> 2146k
    Post-IPA-Garbage: 14067k -> 14047k
    Post-IPA-Leak: 17161k -> 17152k
    Post-IPA-Overhead: 2143k -> 2146k

comparing combine.c compilation at -O3 level:
  Overall memory allocated via mmap and sbrk increased from 37377k to 38775k, overall 3.74%
  Amount of produced GGC garbage increased from 88480k to 91529k, overall 3.45%
    Overall memory needed: 37377k -> 38775k
    Peak memory use before GGC: 16494k -> 16439k
    Peak memory use after GGC: 16200k -> 16203k
    Maximum of released memory in single GGC run: 2006k -> 2440k
    Garbage: 88480k -> 91529k
    Leak: 6046k -> 6036k
    Overhead: 10094k -> 10694k
    GGC runs: 547 -> 544
    Pre-IPA-Garbage: 14069k -> 14049k
    Pre-IPA-Leak: 17173k -> 17164k
    Pre-IPA-Overhead: 2144k -> 2147k
    Post-IPA-Garbage: 14069k -> 14049k
    Post-IPA-Leak: 17173k -> 17164k
    Post-IPA-Overhead: 2144k -> 2147k

comparing insn-attrtab.c compilation at -O0 level:
    Overall memory needed: 137433k -> 137427k
    Peak memory use before GGC: 56962k -> 56955k
    Peak memory use after GGC: 31388k -> 31381k
    Maximum of released memory in single GGC run: 33223k
    Garbage: 128459k -> 128387k
    Leak: 8359k -> 8353k
    Overhead: 14291k -> 14292k
    GGC runs: 292
Testing has produced no results
Testing has produced no results

comparing insn-attrtab.c compilation at -O0 -g level:
  Amount of produced GGC garbage increased from 128708k to 128896k, overall 0.15%
    Overall memory needed: 138725k -> 138711k
    Peak memory use before GGC: 58164k -> 58157k
    Peak memory use after GGC: 32589k -> 32582k
    Maximum of released memory in single GGC run: 33224k
    Garbage: 128708k -> 128896k
    Leak: 10197k -> 9930k
    Overhead: 14731k -> 14732k
    GGC runs: 289 -> 288
Testing has produced no results
Testing has produced no results

comparing insn-attrtab.c compilation at -O1 level:
    Overall memory needed: 142861k -> 142867k
    Peak memory use before GGC: 56191k -> 56180k
    Peak memory use after GGC: 49970k -> 49959k
    Maximum of released memory in single GGC run: 23960k -> 23959k
    Garbage: 205137k -> 205085k
    Leak: 9263k -> 9259k
    Overhead: 24740k -> 24743k
    GGC runs: 315
    Pre-IPA-Garbage: 50366k -> 50363k
    Pre-IPA-Leak: 49663k -> 49649k
    Pre-IPA-Overhead: 7553k -> 7555k
    Post-IPA-Garbage: 50366k -> 50363k
    Post-IPA-Leak: 49663k -> 49649k
    Post-IPA-Overhead: 7553k -> 7555k

comparing insn-attrtab.c compilation at -O2 level:
    Overall memory needed: 184361k -> 184115k
    Peak memory use before GGC: 56813k -> 56787k
    Peak memory use after GGC: 51539k -> 51558k
    Maximum of released memory in single GGC run: 22860k -> 22852k
    Garbage: 246870k -> 246590k
    Leak: 10342k -> 10336k
    Overhead: 30659k -> 30638k
    GGC runs: 347 -> 345
    Pre-IPA-Garbage: 50438k -> 50434k
    Pre-IPA-Leak: 49666k -> 49653k
    Pre-IPA-Overhead: 7560k -> 7562k
    Post-IPA-Garbage: 50438k -> 50434k
    Post-IPA-Leak: 49666k -> 49653k
    Post-IPA-Overhead: 7560k -> 7562k

comparing insn-attrtab.c compilation at -O3 level:
  Peak amount of GGC memory allocated before garbage collecting increased from 66353k to 69205k, overall 4.30%
  Peak amount of GGC memory still allocated after garbage collecting increased from 62275k to 65013k, overall 4.40%
  Amount of produced GGC garbage increased from 270584k to 273802k, overall 1.19%
    Overall memory needed: 189781k -> 191519k
    Peak memory use before GGC: 66353k -> 69205k
    Peak memory use after GGC: 62275k -> 65013k
    Maximum of released memory in single GGC run: 23357k -> 24861k
    Garbage: 270584k -> 273802k
    Leak: 10380k -> 10371k
    Overhead: 32449k -> 32553k
    GGC runs: 347 -> 344
    Pre-IPA-Garbage: 50438k -> 50434k
    Pre-IPA-Leak: 49666k -> 49653k
    Pre-IPA-Overhead: 7560k -> 7562k
    Post-IPA-Garbage: 50438k -> 50434k
    Post-IPA-Leak: 49666k -> 49653k
    Post-IPA-Overhead: 7560k -> 7562k

comparing Gerald's testcase PR8361 compilation at -O0 level:
    Overall memory needed: 145960k -> 143924k
    Peak memory use before GGC: 82002k -> 80187k
    Peak memory use after GGC: 81189k -> 79393k
    Maximum of released memory in single GGC run: 15827k -> 14748k
    Garbage: 198510k -> 197186k
    Leak: 47514k -> 47135k
    Overhead: 24202k -> 24133k
    GGC runs: 416 -> 418
    Pre-IPA-Garbage: 108678k -> 107864k
    Pre-IPA-Leak: 69758k -> 69015k
    Pre-IPA-Overhead: 12147k -> 12071k
    Post-IPA-Garbage: 108678k -> 107864k
    Post-IPA-Leak: 69758k -> 69015k
    Post-IPA-Overhead: 12147k -> 12071k

comparing Gerald's testcase PR8361 compilation at -O0 -g level:
    Overall memory needed: 167488k -> 165972k
    Peak memory use before GGC: 94376k -> 92748k
    Peak memory use after GGC: 93434k -> 91829k
    Maximum of released memory in single GGC run: 16319k -> 15427k
    Garbage: 204153k -> 202830k
    Leak: 71902k -> 71524k
    Overhead: 30560k -> 30492k
    GGC runs: 387 -> 389
    Pre-IPA-Garbage: 109321k -> 108507k
    Pre-IPA-Leak: 84491k -> 83748k
    Pre-IPA-Overhead: 15451k -> 15375k
    Post-IPA-Garbage: 109321k -> 108507k
    Post-IPA-Leak: 84491k -> 83748k
    Post-IPA-Overhead: 15451k -> 15375k

comparing Gerald's testcase PR8361 compilation at -O1 level:
    Overall memory needed: 121440k -> 121718k
    Peak memory use before GGC: 83342k -> 83293k
    Peak memory use after GGC: 82508k -> 82467k
    Maximum of released memory in single GGC run: 15131k -> 14389k
    Garbage: 286817k -> 285594k
    Leak: 46800k -> 46225k
    Overhead: 29514k -> 29592k
    GGC runs: 512 -> 513
  Amount of produced pre-ipa-GGC garbage increased from 153386k to 154524k, overall 0.74%
    Pre-IPA-Garbage: 153386k -> 154524k
    Pre-IPA-Leak: 87191k -> 87120k
    Pre-IPA-Overhead: 17779k -> 18038k
  Amount of produced post-ipa-GGC garbage increased from 153386k to 154524k, overall 0.74%
    Post-IPA-Garbage: 153386k -> 154524k
    Post-IPA-Leak: 87191k -> 87120k
    Post-IPA-Overhead: 17779k -> 18038k

comparing Gerald's testcase PR8361 compilation at -O2 level:
  Amount of produced GGC garbage increased from 353697k to 354840k, overall 0.32%
    Overall memory needed: 123856k -> 124310k
    Peak memory use before GGC: 83524k -> 83485k
    Peak memory use after GGC: 82684k -> 82615k
    Maximum of released memory in single GGC run: 15121k -> 14390k
    Garbage: 353697k -> 354840k
    Leak: 47912k -> 47338k
    Overhead: 36740k -> 36887k
    GGC runs: 587 -> 596
  Amount of produced pre-ipa-GGC garbage increased from 155933k to 157062k, overall 0.72%
    Pre-IPA-Garbage: 155933k -> 157062k
    Pre-IPA-Leak: 87336k -> 87263k
    Pre-IPA-Overhead: 18058k -> 18320k
  Amount of produced post-ipa-GGC garbage increased from 155933k to 157062k, overall 0.72%
    Post-IPA-Garbage: 155933k -> 157062k
    Post-IPA-Leak: 87336k -> 87263k
    Post-IPA-Overhead: 18058k -> 18320k

comparing Gerald's testcase PR8361 compilation at -O3 level:
  Amount of produced GGC garbage increased from 377028k to 380760k, overall 0.99%
    Overall memory needed: 126836k -> 127246k
    Peak memory use before GGC: 84821k -> 84755k
    Peak memory use after GGC: 83945k -> 83888k
    Maximum of released memory in single GGC run: 15462k -> 14713k
    Garbage: 377028k -> 380760k
    Leak: 48486k -> 47909k
    Overhead: 38877k -> 39195k
    GGC runs: 611 -> 613
  Amount of produced pre-ipa-GGC garbage increased from 158631k to 159741k, overall 0.70%
    Pre-IPA-Garbage: 158631k -> 159741k
    Pre-IPA-Leak: 87618k -> 87546k
    Pre-IPA-Overhead: 18310k -> 18574k
  Amount of produced post-ipa-GGC garbage increased from 158631k to 159741k, overall 0.70%
    Post-IPA-Garbage: 158631k -> 159741k
    Post-IPA-Leak: 87618k -> 87546k
    Post-IPA-Overhead: 18310k -> 18574k

comparing PR rtl-optimization/28071 testcase compilation at -O0 level:
    Overall memory needed: 380347k -> 380335k
    Peak memory use before GGC: 100958k -> 100955k
    Peak memory use after GGC: 56611k -> 56609k
    Maximum of released memory in single GGC run: 50583k -> 50582k
    Garbage: 178454k -> 178499k
    Leak: 6103k -> 6101k
    Overhead: 30540k -> 30540k
    GGC runs: 107
Testing has produced no results
Testing has produced no results

comparing PR rtl-optimization/28071 testcase compilation at -O0 -g level:
    Overall memory needed: 381183k -> 381191k
    Peak memory use before GGC: 101651k -> 101648k
    Peak memory use after GGC: 57304k -> 57302k
    Maximum of released memory in single GGC run: 50583k -> 50582k
    Garbage: 178569k -> 178566k
    Leak: 8132k -> 8130k
    Overhead: 31123k -> 31123k
    GGC runs: 111
Testing has produced no results
Testing has produced no results

comparing PR rtl-optimization/28071 testcase compilation at -O1 level:
  Ovarall memory allocated via mmap and sbrk decreased from 428169k to 391895k, overall -9.26%
  Amount of produced GGC garbage increased from 232923k to 238052k, overall 2.20%
  Amount of memory still referenced at the end of compilation decreased from 15009k to 13675k, overall -9.76%
    Overall memory needed: 428169k -> 391895k
    Peak memory use before GGC: 78564k -> 76377k
    Peak memory use after GGC: 70439k -> 70367k
    Maximum of released memory in single GGC run: 37596k -> 35019k
    Garbage: 232923k -> 238052k
    Leak: 15009k -> 13675k
    Overhead: 33114k -> 32176k
    GGC runs: 106 -> 105
  Amount of produced pre-ipa-GGC garbage decreased from 52924k to 47311k, overall -11.86%
  Amount of memory referenced pre-ipa increased from 49237k to 67574k, overall 37.24%
    Pre-IPA-Garbage: 52924k -> 47311k
    Pre-IPA-Leak: 49237k -> 67574k
    Pre-IPA-Overhead: 7122k -> 7555k
  Amount of produced post-ipa-GGC garbage decreased from 52924k to 47311k, overall -11.86%
  Amount of memory referenced post-ipa increased from 49237k to 67574k, overall 37.24%
    Post-IPA-Garbage: 52924k -> 47311k
    Post-IPA-Leak: 49237k -> 67574k
    Post-IPA-Overhead: 7122k -> 7555k

comparing PR rtl-optimization/28071 testcase compilation at -O2 level:
  Ovarall memory allocated via mmap and sbrk decreased from 354053k to 309759k, overall -14.30%
  Peak amount of GGC memory allocated before garbage collecting increased from 75425k to 76377k, overall 1.26%
  Amount of produced GGC garbage increased from 247432k to 252491k, overall 2.04%
  Amount of memory still referenced at the end of compilation decreased from 15183k to 13848k, overall -9.64%
    Overall memory needed: 354053k -> 309759k
    Peak memory use before GGC: 75425k -> 76377k
    Peak memory use after GGC: 70439k -> 70367k
    Maximum of released memory in single GGC run: 31602k -> 31603k
    Garbage: 247432k -> 252491k
    Leak: 15183k -> 13848k
    Overhead: 36249k -> 35290k
    GGC runs: 117 -> 118
  Amount of produced pre-ipa-GGC garbage increased from 91836k to 99937k, overall 8.82%
    Pre-IPA-Garbage: 91836k -> 99937k
    Pre-IPA-Leak: 77295k -> 77332k
    Pre-IPA-Overhead: 11795k -> 12227k
  Amount of produced post-ipa-GGC garbage increased from 91836k to 99937k, overall 8.82%
    Post-IPA-Garbage: 91836k -> 99937k
    Post-IPA-Leak: 77295k -> 77332k
    Post-IPA-Overhead: 11795k -> 12227k

comparing PR rtl-optimization/28071 testcase compilation at -O3 -fno-tree-pre -fno-tree-fre level:
  Peak amount of GGC memory allocated before garbage collecting increased from 136587k to 138639k, overall 1.50%
  Amount of produced GGC garbage increased from 370216k to 374919k, overall 1.27%
    Overall memory needed: 1198497k -> 1199683k
    Peak memory use before GGC: 136587k -> 138639k
    Peak memory use after GGC: 127944k -> 127949k
    Maximum of released memory in single GGC run: 59980k -> 59910k
    Garbage: 370216k -> 374919k
    Leak: 24382k -> 24122k
    Overhead: 49862k -> 49943k
    GGC runs: 104
  Amount of produced pre-ipa-GGC garbage increased from 91836k to 99937k, overall 8.82%
    Pre-IPA-Garbage: 91836k -> 99937k
    Pre-IPA-Leak: 77295k -> 77332k
    Pre-IPA-Overhead: 11795k -> 12227k
  Amount of produced post-ipa-GGC garbage increased from 91836k to 99937k, overall 8.82%
    Post-IPA-Garbage: 91836k -> 99937k
    Post-IPA-Leak: 77295k -> 77332k
    Post-IPA-Overhead: 11795k -> 12227k

Head of the ChangeLog is:

--- /usr/src/SpecTests/sandbox-britten-memory/x86_64/mem-result/ChangeLog	2008-04-13 16:56:33.000000000 +0000
+++ /usr/src/SpecTests/sandbox-britten-memory/gcc/gcc/ChangeLog	2008-04-28 11:06:54.000000000 +0000
@@ -1,3 +1,1157 @@
+2008-04-28  Jakub Jelinek  <jakub@redhat.com>
+
+	PR debug/36060
+	* dwarf2out.c (struct die_struct): Mark as chain_circular through
+	die_sub field.
+	* gengtype.c (walk_type, write_func_for_structure): Handle
+	chain_circular.
+	* doc/gty.texi: Document chain_circular.
+
+2008-04-28  Richard Guenther  <rguenther@suse.de>
+
+	PR tree-optimization/36066
+	* tree-vrp.c (execute_vrp): Cleanup the CFG only after finalizing
+	SCEV and loop.
+
+2008-04-28  Uros Bizjak  <ubizjak@gmail.com>
+
+	PR target/36064
+	* config/i386/i386.md (floatdi<X87MODEF:mode>2_i387_with_xmm splitters):
+	Use match_scratch instead of match_operand for operands 3 and 4.
+
+2008-04-27  Richard Guenther  <rguenther@suse.de>
+
+	PR tree-optimization/18754
+	PR tree-optimization/34223
+	* tree-pass.h (pass_complete_unrolli): Declare.
+	* tree-ssa-loop-ivcanon.c (try_unroll_loop_completely): Print
+	loop size before and after unconditionally of UL_NO_GROWTH in effect.
+	Rewrite loop into loop closed SSA form if it is not already.
+	(tree_unroll_loops_completely): Re-structure to iterate over
+	innermost loops with intermediate CFG cleanups.
+	Unroll outermost loops only if requested or the code does not grow
+	doing so.
+	* tree-ssa-loop.c (gate_tree_vectorize): Don't shortcut if no
+	loops are available.
+	(tree_vectorize): Instead do so here.
+	(tree_complete_unroll): Also unroll outermost loops.
+	(tree_complete_unroll_inner): New function.
+	(gate_tree_complete_unroll_inner): Likewise.
+	(pass_complete_unrolli): New pass.
+	* tree-ssa-loop-manip.c (find_uses_to_rename_use): Only record
+	uses outside of the loop.
+	(tree_duplicate_loop_to_header_edge): Only verify loop-closed SSA
+	form if it is available.  
+	* tree-flow.h (tree_unroll_loops_completely): Add extra parameter.
+	* passes.c (init_optimization_passes): Schedule complete inner
+	loop unrolling pass before the first CCP pass after final inlining.
+
+2008-04-27  Nathan Sidwell  <nathan@codesourcery.com>
+
+	* targhooks.h (default_emutls_var_fields,
+	default_emutls_var_init): Declare.
+	* tree.h (DECL_THREAD_LOCAL): Compare against TLS_MODEL_REAL.
+	* target.h (struct gcc_target): Add struct emutls member.
+	* target-def.h (TARGET_EMUTLS_GET_ADDRESS,
+	TARGET_EMUTLS_REGISTER_COMMON, TARGET_EMUTLS_VAR_SECTION,
+	TARGET_EMUTLS_TMPL_SECTION, TARGET_EMUTLS_VAR_PREFIX,
+	TARGET_EMUTLS_TMPL_PREFIX, TARGET_EMUTLS_VAR_FIELDS,
+	TARGET_EMUTLS_VAR_INIT, TARGET_EMUTLS_DEBUG_FORM_TLS_ADDRESS,
+	TARGET_EMUTLS_VAR_ALIGN_FIXED, TARGET_EMUTLS): New.
+	(TARGET_INITIALIZER): Add TARGET_EMUTLS.
+	* builtins.def (BUILT_IN_EMUTLS_GET_ADDRESS,
+	BUILT_IN_EMUTLS_REGISTER_COMMON): Get name from targetm structure.
+	* dwarf2out.c (loc_descriptor_from_tree_1): Check if emutls can
+	emit debug information.
+	* coretypes.h (tls_model): Add TLS_MODEL_EMULATED, TLS_MODEL_REAL.
+	* varasm.c: Include targhooks.h.
+	(emutls_object_section, emutls_tmpl_section): New.
+	(EMUTLS_VAR_PREFIX, EMUTLS_TMPL_PREFIX): Remove.
+	(EMUTLS_SEPARATOR): New.
+	(prefix_name): New.
+	(get_emutls_object_name): New.
+	(default_emutls_var_fields): New, broken out of ...
+	(get_emutls_object_type): ... here.  Adjust to use target hooks.
+	(get_emutls_init_templ_addr): Adjust to use target hooks.
+	(emutls_decl): Adjust to use target hooks.
+	(emutls_finish): Likewise.
+	(default_emutls_var_init): New, broken out of ...
+	(assemble_variable): ... here.  Adjust to use target hooks.
+	* output.h (enum section_category): Add SECCAT_EMUTLS_VAR,
+	SECCAT_EMUTLS_TMPL.
+	* c-common.c (handle_section_attribute): Prevent overriding
+	sections for emulated tls with special sections.
+	* config/i386/i386.c (x86_64_elf_select_section): Add
+	SECCAT_EMUTLS_VAR and SECCAT_EMUTLS_TMPL.
+	(x86_64_elf_unique_section): Likewise.
+	* config/vxworks.c: Include tree.h.
+	(vxworks_emutls_var_fields, vxworks_emutls_var_init): New.
+	(vxworks_override_options): Set TLS scheme.
+	* doc/tm.texi (Emulated TLS): New node.
+
+2008-04-26  Simon Baldwin <simonb@google.com>
+
+	PR c/35652
+	* builtins.c (c_strlen): Suppressed multiple warnings that can occur
+	with propagated string constants.
+
+2008-04-26  Uros Bizjak  <ubizjak@gmail.com>
+
+	* config/i386/i386.md (fix_trunc<mode>_i387_fisttp_with_temp): Use 'X'
+	constraint for operand 2 when operand 0 is memory operand.
+	(fix_truncdi_i387_with_temp): : Use 'X' constraint for operand 4 when
+	operand 0 is memory operand.
+	(fix_trunc<mode>_i387_with_temp): Ditto.
+	(*floatsi<mode>2_vector_mixed_with_temp): Use 'X' constraint for
+	operand 2 when operand 1 is memory operand.
+	(*float<SSEMODEI24:mode><MODEF:mode>2_mixed_with_temp): Ditto.
+	(*floatsi<mode>2_vector_sse_with_temp): Ditto.
+	(*float<SSEMODEI24:mode><MODEF:mode>2_sse_with_temp): Ditto.
+	(*float<SSEMODEI24:mode><X87MODEF:mode>2_i387_with_temp): Ditto.
+	(floatdi<X87MODEF:mode>2_i387_with_xmm): Use 'X' constraint for
+	operands 2,3 and 4 when operand 1 is memory operand.
+	(fistdi2_with_temp): Use 'X' constraint for operand 2 when operand 0
+	is memory operand.
+	(fistdi2_floor_with_temp): Ditto.
+	(fist<mode>2_floor_with_temp): Ditto.
+	(fistdi2_ceil_with_temp): Ditto.
+	(fist<mode>2_ceil_with_temp): Ditto.
+	(*truncdfsf_fast_mixed): Merge alternatives 0 and 1.
+
+2008-04-26  David Daney  <ddaney@avtrex.com>
+
+	* config/mips/mips.md (UNSPEC_COMPARE_AND_SWAP_12): New
+	unspec_volitile.
+	(UNSPEC_SYNC_OLD_OP, UNSPEC_SYNC_NEW_OP, UNSPEC_SYNC_EXCHANGE,
+	UNSPEC_MEMORY_BARRIER, UNSPEC_SET_GOT_VERSION,
+	UNSPEC_UPDATE_GOT_VERSION): Renumber.
+	(sync_compare_and_swap<mode>): New expand for QI and HI modes.
+	(compare_and_swap_12): New insn.
+	* config/mips/mips-protos.h (mips_expand_compare_and_swap_12): Declare.
+	* config/mips/mips.c (mips_force_binary): New function.
+	(mips_emit_int_order_test, mips_expand_synci_loop): Use it.
+	(mips_expand_compare_and_swap_12): New function.
+	* config/mips/mips.h (MIPS_COMPARE_AND_SWAP_12): New macro.
+
+2008-04-25  Jan Hubicka  <jh@suse.cz>
+
+	PR testsuite/35843
+	* cfgexpand.c (pass_expand): Turn into RTL pass.
+	* passes.c (execute_one_pass): Do pass typechecking after execution.
+	* tree-pass.h (pass_expand): Turn into RTL pass.
+
+	* function.h (struct rtl_data): Move here fields
+	accesses_prior_frames, calls_eh_return, saves_all_registers,
+	has_nonlocal_goto, has_asm_statement, is_thunk,
+	all_throwers_are_sibcalls, limit_stack, profile, uses_const_pool,
+	uses_pic_offset_table, uses_eh_lsda, tail_call_emit,
+	arg_pointer_save_area_init from struct function; turn into bool.
+	(struct function): Move
+	calls_eh_return, saves_all_registers, has_nonlocal_goto,
+	has_asm_statement, is_thunk, all_throwers_are_sibcalls, limit_stack,
+	profile, uses_const_pool, uses_pic_offset_table, uses_eh_lsda,
+	tail_call_emit, arg_pointer_save_area_init
+	into struct rtl_data.  Remove recursive_call_emit and gimplified flags.
+	(current_function_returns_struct, current_function_returns_pcc_struct,
+	current_function_calls_setjmp, current_function_calls_alloca,
+	current_function_accesses_prior_frames,
+	current_function_calls_eh_return, current_function_is_thunk,
+	current_function_stdarg, current_function_profile,
+	current_function_limit_stack, current_function_uses_pic_offset_table,
+	current_function_uses_const_pool, current_function_has_nonlocal_label,
+	current_function_saves_all_registers,
+	current_function_has_nonlocal_goto,
+	current_function_has_asm_statement): Remove accesor macros.
+	* ra-conflict.c (global_conflicts): Update.
+	* tree-tailcall.c (suitable_for_tail_opt_p): Update.
+	(suitable_for_tail_call_opt_p): Update.
+	* builtins.c (expand_builtin_return_addr): Update.
+	(expand_builtin_setjmp_setup): Update.
+	(expand_builtin_nonlocal_goto): Update.
+	* final.c (final_start_function): Update.
+	(profile_function): Update.
+	(leaf_function_p): Update.
+	(only_leaf_regs_used): Update.
+	* df-scan.c (df_get_exit_block_use_set): Update.
+	* dojump.c (clear_pending_stack_adjust): Update.
+	* tree-stdarg.c (gate_optimize_stdarg): Update.
+	* gimple-low.c (lower_function_body): Update.
+	* global.c (compute_regsets): Update.
+	(global_alloc): Update.
+	* dwarf2out.c (dwarf2out_begin_prologue): Update.
+	* expr.c (expand_assignment): Update.
+	* dse.c (dse_step0): Update.
+	(dse_step1): Update.
+	* c-decl.c (store_parm_decls): Update.
+	* local-alloc.c (combine_regs): Update.
+	(find_free_reg): Update.
+	* function.c (assign_parms_augmented_arg_list): Update.
+	(assign_parm_find_data_types): Update.
+	(assign_parms): Update.
+	(allocate_struct_function): Update.
+	(expand_function_start): Update.
+	(expand_function_end): Update.
+	(get_arg_pointer_save_area): Update.
+	(thread_prologue_and_epilogue_insns): Update.
+	(rest_of_match_asm_constraints): Update.
+	* stor-layout.c (variable_size): Update.
+	* gcse.c (gcse_main): Update.
+	(bypass_jumps): Update.
+	* gimplify.c (gimplify_function_tree): Update.
+	* calls.c (emit_call_1): Update.
+	(expand_call): Update.
+	* bt-load.c (compute_defs_uses_and_gen): Update.
+	* except.c (sjlj_assign_call_site_values): Update.
+	(sjlj_emit_function_enter): Update.
+	(can_throw_external): Update.
+	(set_nothrow_function_flags): Update.
+	(expand_builtin_unwind_init): Update.
+	(expand_eh_return): Update.
+	(convert_to_eh_region_ranges): Update.
+	(output_function_exception_table): Update.
+	* emit-rtl.c (gen_tmp_stack_mem): Update.
+	* cfgexpand.c (expand_used_vars): Update.
+	(tree_expand_cfg): Update.
+	* cfgcleanup.c (rest_of_handle_jump): Update.
+	* explow.c (allocate_dynamic_stack_space): Update.
+	* varasm.c (assemble_start_function): Update.
+	(force_const_mem): Update.
+	(mark_constant_pool): Update.
+	* tree-optimize.c (tree_rest_of_compilation): Update.
+	* stack-ptr-mod.c (notice_stack_pointer_modification): Update.
+	* tree-cfg.c (notice_special_calls): Update.
+	(is_ctrl_altering_stmt): Update.
+	(tree_can_make_abnormal_goto): Update.
+	(tree_purge_dead_abnormal_call_edges): Update.
+	* config/alpha/predicates.md: Update.
+	* config/alpha/alpha.c (alpha_sa_mask): Update.
+	(alpha_sa_size): Update.
+	(alpha_does_function_need_gp): Update.
+	(alpha_expand_prologue): Update.
+	(alpha_start_function): Update.
+	(alpha_output_function_end_prologue): Update.
+	(alpha_expand_epilogue): Update.
+	* config/frv/frv.c (frv_stack_info): Update.
+	(frv_expand_epilogue): Update.
+	* config/s390/s390.c (s390_regs_ever_clobbered): Update.
+	(s390_register_info): Update.
+	(s390_frame_info): Update.
+	(s390_init_frame_layout): Update.
+	(s390_can_eliminate): Update.
+	(save_gprs): Update.
+	* config/spu/spu.c (spu_split_immediate): Update.
+	(need_to_save_reg): Update.
+	(spu_expand_prologue): Update.
+	(spu_expand_epilogue): Update.
+	* config/sparc/sparc.md: Update.
+	* config/sparc/sparc.c (eligible_for_return_delay): Update.
+	(sparc_tls_got): Update.
+	(legitimize_pic_address): Update.
+	(sparc_emit_call_insn): Update.
+	(sparc_expand_prologue): Update.
+	(output_return): Update.
+	(print_operand): Update.
+	(sparc_function_ok_for_sibcall): Update.
+	* config/sparc/sparc.h (EXIT_IGNORE_STACK): Update.
+	* config/m32r/m32r.md: Update.
+	* config/m32r/m32r.c (MUST_SAVE_RETURN_ADDR): Update.
+	(m32r_compute_frame_size): Update.
+	(m32r_expand_prologue): Update.
+	(m32r_expand_epilogue): Update.
+	(m32r_legitimize_pic_address): Update.
+	* config/m32r/m32r.h (FRAME_POINTER_REQUIRED): Update.
+	* config/i386/linux.h (SUBTARGET_FRAME_POINTER_REQUIRED): Update.
+	* config/i386/i386.c (ix86_frame_pointer_required): Update.
+	(gen_push): Update.
+	(ix86_save_reg): Update.
+	(ix86_compute_frame_layout): Update.
+	(ix86_expand_prologue): Update.
+	(ix86_expand_epilogue): Update.
+	* config/sh/sh.c (output_stack_adjust): Update.
+	(calc_live_regs): Update.
+	(sh5_schedule_saves): Update.
+	(sh_expand_prologue): Update.
+	(sh_expand_epilogue): Update.
+	(sh_setup_incoming_varargs): Update.
+	(sh_allocate_initial_value): Update.
+	(sh_get_pr_initial_val): Update.
+	* config/sh/sh.h (SHMEDIA_REGS_STACK_ADJUST): Update.
+	* config/sh/sh.md (label:): Update.
+	* config/avr/avr.c (out_movhi_mr_r): Update.
+	* config/crx/crx.h (enum): Update.
+	* config/xtensa/xtensa.h (along): Update.
+	* config/stormy16/stormy16.c Update.
+	(xstormy16_compute_stack_layout): Update.
+	* config/fr30/fr30.c (MUST_SAVE_RETURN_POINTER): Update.
+	(fr30_expand_prologue): Update.
+	* config/cris/cris.c (cris_conditional_register_usage): Update.
+	(cris_reg_saved_in_regsave_area): Update.
+	(cris_initial_frame_pointer_offset): Update.
+	(cris_simple_epilogue): Update.
+	(cris_expand_prologue): Update.
+	(cris_expand_epilogue): Update.
+	(cris_expand_pic_call_address): Update.
+	(cris_asm_output_symbol_ref): Update.
+	(cris_asm_output_label_ref): Update.
+	* config/cris/cris.md Update.
+	* config/iq2000/iq2000.c (compute_frame_size): Update.
+	(iq2000_expand_epilogue): Update.
+	* config/mt/mt.h (save_direction): Update.
+	* config/mn10300/mn10300.c (mn10300_function_value): Update.
+	* config/ia64/ia64.c (ia64_compute_frame_size): Update.
+	(ia64_secondary_reload_class): Update.
+	* config/m68k/m68k.c (m68k_save_reg): Update.
+	(m68k_expand_prologue): Update.
+	(m68k_expand_epilogue): Update.
+	(legitimize_pic_address): Update.
+	* config/rs6000/rs6000.c (rs6000_got_register): Update.
+	(first_reg_to_save): Update.
+	(first_altivec_reg_to_save): Update.
+	(compute_vrsave_mask): Update.
+	(compute_save_world_info): Update.
+	(rs6000_stack_info): Update.
+	(spe_func_has_64bit_regs_p): Update.
+	(rs6000_ra_ever_killed): Update.
+	(rs6000_emit_eh_reg_restore): Update.
+	(rs6000_emit_allocate_stack): Update.
+	(rs6000_emit_prologue): Update.
+	(rs6000_emit_epilogue): Update.
+	(rs6000_output_function_epilogue): Update.
+	(output_profile_hook): Update.
+	(rs6000_elf_declare_function_name): Update.
+	* config/rs6000/rs6000.h (rs6000_args): Update.
+	* config/rs6000/rs6000.md: Update.
+	* config/mcore/mcore.c (mcore_expand_prolog): Update.
+	* config/arc/arc.c (arc_output_function_epilogue): Update.
+	* config/arc/arc.h (FRAME_POINTER_REQUIRED): Update.
+	* config/darwin.c (machopic_function_base_name): Update.
+	* config/score/score3.c (score3_compute_frame_size): Update.
+	(rpush): Update.
+	(rpop): Update.
+	(score3_epilogue): Update.
+	* config/score/score7.c (score7_compute_frame_size): Update.
+	(score7_prologue): Update.
+	(score7_epilogue): Update.
+	* config/score/score.h (FRAME_POINTER_REQUIRED): Update.
+	* config/arm/linux-elf.h (SUBTARGET_FRAME_POINTER_REQUIRED): Update.
+	* config/arm/arm.c (use_return_insn): Update.
+	(require_pic_register): Update.
+	(arm_load_pic_register): Update.
+	(arm_compute_save_reg0_reg12_mask): Update.
+	(arm_compute_save_reg_mask): Update.
+	(thumb1_compute_save_reg_mask): Update.
+	(output_return_instruction): Update.
+	(arm_output_function_prologue): Update.
+	(arm_output_epilogue): Update.
+	(arm_get_frame_offsets): Update.
+	(arm_expand_prologue): Update.
+	(thumb_pushpop): Update.
+	(thumb_exit): Update.
+	(thumb1_expand_prologue): Update.
+	(thumb1_expand_epilogue): Update.
+	(arm_unwind_emit): Update.
+	(arm_output_fn_unwind): Update.
+	* config/arm/arm.h (FRAME_POINTER_REQUIRED): Update.
+	* config/arm/arm.md: Update.
+	* config/pa/pa.md: Update.
+	* config/pa/pa.c (legitimize_pic_address): Update.
+	(compute_frame_size): Update.
+	(hppa_expand_prologue): Update.
+	(hppa_expand_epilogue): Update.
+	(borx_reg_operand): Update.
+	* config/pa/pa.h (FRAME_POINTER_REQUIRED): Update.
+	(HARD_REGNO_RENAME_OK): Update.
+	* config/mips/mips.c (mips_global_pointer): Update.
+	(mips_save_reg_p): Update.
+	(mips_compute_frame_info): Update.
+	(mips_frame_pointer_required): Update.
+	(mips_expand_prologue): Update.
+	(mips_expand_epilogue): Update.
+	(mips_can_use_return_insn): Update.
+	(mips_reorg_process_insns): Update.
+	* config/v850/v850.c (compute_register_save_size): Update.
+	* config/mmix/mmix.h (FRAME_POINTER_REQUIRED): Update.
+	* config/mmix/mmix.c (along): Update.
+	(mmix_expand_epilogue): Update.
+	* config/bfin/bfin.c (legitimize_pic_address): Update.
+	(must_save_p): Update.
+	(stack_frame_needed_p): Update.
+	(add_to_reg): Update.
+	(bfin_expand_prologue): Update.
+	* stmt.c (expand_asm_operands): Update.
+	* reload1.c (reload): Update.
+	(init_elim_table): Update.
+
+2008-04-25  Bob Wilson  <bob.wilson@acm.org>
+	
+	* optabs.c (expand_float): Fix REG_EQUAL for UNSIGNED_FLOAT libcall.
+	
+2008-04-25  H.J. Lu  <hongjiu.lu@intel.com>
+
+	* config/i386/sse.md (mov<mode>): Replace SSEMODEI with
+	SSEMODE.
+	(*mov<mode>_internal): Likewise.  Support V4SF and V2DF.
+	(mov<mode>): Removed.
+	(*movv4sf_internal): Likewise.
+	(*movv2df_internal): Likewise.
+
+2008-04-25  Pompapathi V Gadad <Pompapathi.V.Gadad@nsc.com>
+
+	* config.gcc (crx-*-elf): Remove deprecation.
+
+2008-04-25  Danny Smith  <dannysmith@users.sourceforge.net>
+
+	* config/i386/cygming-crtend.c (register_frame_ctor): Register
+	__gcc_deregister_frame with atexit.
+	(deregister_frame_dtor): Remove.
+
+2008-04-24  Nathan Froyd  <froydnj@codesourcery.com>
+	    Nathan Sidwell  <nathan@codesourcery.com>
+
+	* config/rs6000/rs6000.opt (mspe): Remove Var property.
+	(misel): Likewise.
+	* config/rs6000/rs6000.h (rs6000_spe): Declare.
+	(rs6000_isel): Likewise.
+	* config/rs6000/rs6000.c (rs6000_spe): New variable.
+	(rs6000_isel): New variable.
+	(rs6000_handle_option): Handle OPT_mspe and OPT_misel.
+
+2008-04-24  Jakub Jelinek  <jakub@redhat.com>
+
+	PR c++/35758
+	* c-common.c (handle_vector_size_attribute): Call
+	lang_hooks.types.reconstruct_complex_type instead of
+	reconstruct_complex_type.
+	* config/rs6000/rs6000.c (rs6000_handle_altivec_attribute): Likewise.
+	* config/spu/spu.c (spu_handle_vector_attribute): Likewise.
+	* langhooks.h (struct lang_hooks_for_types): Add
+	reconstruct_complex_type hook.
+	* langhooks-def.h (LANG_HOOKS_RECONSTRUCT_COMPLEX_TYPE): Define.
+	(LANG_HOOKS_FOR_TYPES_INITIALIZER): Add it.
+
+2008-04-24  Richard Guenther  <rguenther@suse.de>
+
+	* c-common.h (check_builtin_function_arguments): Declare.
+	* c-common.c (validate_nargs): New function.
+	(check_builtin_function_arguments): Likewise.
+	* c-typeck.c (build_function_call): Call
+	check_builtin_function_arguments.
+	* builtins.c (fold_builtin_classify): Remove error reporting code.
+	(fold_builtin_unordered_cmp): Likewise.
+	(fold_builtin_1): Likewise.
+	(fold_builtin_n): Likewise.
+
+2008-04-24  Jakub Jelinek  <jakub@redhat.com>
+
+	PR tree-optimization/36008
+	* fold-const.c (try_move_mult_to_index): If s == NULL, divide
+	the original op1, rather than delta by step.
+
+2008-04-22  Antoniu Pop  <antoniu.pop@gmail.com>
+	    Sebastian Pop  <sebastian.pop@amd.com>
+
+	* tree-parloops.c (take_address_of, eliminate_local_variables_1,
+	eliminate_local_variables_stmt, eliminate_local_variables,
+	separate_decls_in_loop_name, separate_decls_in_loop_stmt,
+	separate_decls_in_loop, gen_parallel_loop): Make them work on a region
+	of code delimited by two edges in the CFG.
+	(separate_decls_in_loop_name): Renamed separate_decls_in_region_name.
+	(separate_decls_in_loop_stmt): Renamed separate_decls_in_region_stmt.
+	(separate_decls_in_loop): Renamed separate_decls_in_region.  Isolate 
+	the case of parallelisation of reductions.
+	(expr_invariant_in_region_p): New.
+
+	* tree-flow.h (gather_blocks_in_sese_region): Declared.
+	* tree-cfg.c (gather_blocks_in_sese_region): Extern.
+
+2008-04-24  Ira Rosen  <irar@il.ibm.com>
+	    Richard Guenther  <rguenther@suse.de>
+
+	PR tree-optimization/36034
+	* tree-vect-analyze.c (vect_analyze_group_access): SLP is
+	incapable of dealing with loads with gaps.
+
+2008-04-24  Rafael Espindola  <espindola@google.com>
+
+	* tree-flow.h (vrp_evaluate_conditional): Change signature.
+	* tree-ssa-propagate.c (fold_predicate_in): Update call to
+	vrp_evaluate_conditional.
+	* tree-vrp.c (vrp_evaluate_conditional_warnv): Remove.
+	(vrp_evaluate_conditional): Split the cond argument.
+	(vrp_visit_cond_stmt): Use vrp_evaluate_conditional_warnv_with_ops.
+	(simplify_stmt_for_jump_threading): Update call to
+	vrp_evaluate_conditional.
+
+2008-04-24  Ira Rosen  <irar@il.ibm.com>
+
+	PR tree-optimization/35982
+	* tree-vect-analyze.c (vect_check_interleaving): Check that the
+	interleaved data-refs are of the same type.
+
+2008-04-24  Danny Smith  <dannysmith@users.net>
+
+	* c-format.c (check_format_info_main): Use strncmp rather than a
+	magic prefix to handle multichar length specs.
+	* config/i386/msformat-c.c (format_length_info ms_printf_length_specs):
+	Don't prefix "I64" and "I32" with '\0'.
+
+2008-04-24  Jakub Jelinek  <jakub@redhat.com>
+
+	PR target/36015
+	* config/i386/i386.c (init_cumulative_args): Don't pass anything
+	in registers for -m32 only if stdarg_p (fntype).
+
+2008-04-24  Uros Bizjak  <ubizjak@gmail.com>
+
+	PR rtl-optimization/36006
+	* expmed.c (store_fixed_bit_field): Copy op0 rtx before moving
+	temp to op0 in order to avoid invalid rtx sharing.
+
+2008-04-23  Paolo Bonzini  <bonzini@gnu.org>
+
+	* tree-cfg.c (verify_expr): Check with is_gimple_address.  Don't
+	check TREE_INVARIANT.
+	* tree-gimple.c (is_gimple_address): New.
+	(is_gimple_invariant_address): Simplify using decl_address_invariant_p.
+	* tree-gimple.h (is_gimple_address): New.
+	* tree.h (decl_address_invariant_p): New.
+	* tree.c (make_node_stat): Don't set TREE_INVARIANT.
+	(build_string): Likewise.
+	(decl_address_invariant_p): New, from is_gimple_invariant_address.
+	(tree_invariant_p_1): Likewise.
+	(save_expr): Use it.
+	(tree_invariant_p): New.
+	(skip_simple_arithmetic): Use it.
+	(stabilize_reference_1): Use it.
+	(recompute_tree_invariant_for_addr_expr): Don't update TREE_INVARIANT,
+	simplify.
+	(build1_stat): Drop code to compute TREE_INVARIANT.
+	(build2_stat): Drop code to compute TREE_INVARIANT.
+	(build3_stat): Drop code to compute TREE_INVARIANT.
+	(build4_stat): Drop code to compute TREE_INVARIANT.
+	(build5_stat): Drop code to compute TREE_INVARIANT.
+	(build7_stat): Drop code to compute TREE_INVARIANT.
+	(merge_dllimport_decl_attributes): Don't mention TREE_INVARIANT.
+	* tree.h (struct tree_base): Remove invariant_flag.
+	(TREE_INVARIANT): Remove.
+	* builtins.c (build_string_literal): Don't set TREE_INVARIANT.
+	(fold_builtin_expect): Check TREE_CONSTANT.
+	* tree-ssa-ccp.c (fold_stmt_r): Adjust comment.
+	* c-tree.h (c_expr_to_decl): Drop third parameter.
+	* c-typeck.c (build_external_ref): Don't set TREE_INVARIANT.
+	(build_c_cast): Don't set TREE_INVARIANT.
+	(pop_init_level): Don't set TREE_INVARIANT.
+	(c_objc_common_truthvalue_conversion): Don't set TREE_INVARIANT.
+	* gimplify.c (gimplify_init_ctor_preeval): Add assertion, test
+	TREE_CONSTANT.
+	(gimplify_init_constructor): Don't set TREE_INVARIANT.
+	(gimplify_addr_expr): Adjust comment.
+	* tree-mudflap.c (mf_build_string):
+	* print-tree.c (print_node): Don't print TREE_INVARIANT.
+	* tree-nested.c (convert_nonlocal_reference): Adjust comment.
+	* c-common.c (fix_string_type): Don't set TREE_INVARIANT.
+	* langhooks-def.h (lhd_expr_to_decl): Drop third parameter.
+	* langhooks.c (lhd_expr_to_decl): Drop third parameter.
+	* langhooks.h (struct lang_hooks): Drop third parameter from
+	expr_to_decl.
+
+2008-04-23  Richard Guenther  <rguenther@suse.de>
+
+	PR tree-optimization/27799
+	PR tree-optimization/32921
+	PR tree-optimization/32624
+	* tree-ssa-structalias.c (merge_smts_into): Only merge the
+	SMTs aliases and the tag itself into the solution.
+	* tree-ssa-alias.c (compute_flow_sensitive_aliasing): Do not
+	merge the points-to solution back into the SMT aliases.
+	(may_alias_p): Use alias_set_subset_of instead of
+	aliases_conflict_p.  A pointer which points to
+	memory with alias set zero may access any variable.
+
+2008-04-23  Richard Guenther  <rguenther@suse.de>
+
+	* alias.c (alias_set_subset_of): Correctly handle asking
+	if zero is a subset of an alias set with zero child.
+	* tree-ssa-alias.c (have_common_aliases_p): Simplify logic.
+	(compute_flow_insensitive_aliasing): Correctly walk all
+	pointers.  Do not unnecessarily union sets.
+
+2008-04-23  Richard Guenther  <rguenther@suse.de>
+
+	PR middle-end/36021
+	* c-common.c (handle_alloc_size_attribute): Use type_num_arguments.
+
+2008-04-22  Tomas Bily  <tbily@suse.cz>
+
+	* tree-cfg.c (verify_expr): Check for NON_LVALUE_EXPR as
+	unreachable case.
+	* tree-vrp.c (extract_range_from_unary_expr): Removed unused
+	NON_LVALUE_EXPR.
+	* tree-ssa-threadedge.c (simplify_control_stmt_condition): Likewise.
+	* tree-ssa-structalias.c (get_constraint_for): Likewise.
+	* tree-inline.c (estimate_num_insns_1): Likewise.
+	* varasm.c (const_hash_1, compare_constant, copy_constant)
+	(compute_reloc_for_constant, output_addressed_constants): Likewise.
+	* emit-rtl.c (component_ref_for_mem_expr)
+	(set_mem_attributes_minus_bitpos): Likewise.
+	* expr.c (highest_pow2_factor, expand_expr_real_1, )
+	(is_aligning_offset): Likewise.
+	* dwarf2out.c (loc_descriptor_from_tree_1, add_bound_info): Likewise.
+	* tree-ssa-loop-ivopts.c (may_be_nonaddressable_p): Likewise.
+	* dojump.c (do_jump): Likewise.
+	* builtins.c (get_pointer_alignment, get_memory_rtx)
+	(integer_valued_real_p, fold_builtin_next_arg): Likewise.
+	* tree-scalar-evolution.c (instantiate_parameters_1): Likewise.
+
+2008-04-23  Jakub Jelinek  <jakub@redhat.com>
+
+	PR rtl-optimization/36017
+	* builtins.c (expand_errno_check): Clear CALL_EXPR_TAILCALL before
+	expanding the library call.
+
+2008-04-22  Ian Lance Taylor  <iant@google.com>
+
+	* fold-const.c (pointer_may_wrap_p): Call int_size_in_bytes rather
+	than size_in_bytes.
+
+2008-04-22  Pat Haugen  <pthaugen@us.ibm.com>
+
+	* config/rs6000/rs6000.c (rs6000_register_move_cost): Increase cost
+	of LR/CTR moves for Power6.
+
+2008-04-22  Kenneth Zadeck <zadeck@naturalbridge.com>
+
+	PR middle-end/36003
+	* passes.c (init_optimization_passes): Remove
+	pass_fast_rtl_byte_dce.
+	
+2008-04-22  Uros Bizjak  <ubizjak@gmail.com>
+
+	PR target/29096
+	* config/i386/xmmintrin.h (_mm_cvtpi16_ps): Rearrange calls to
+	builtin functions to generate faster code.
+	(_mm_cvtpu16_ps): Ditto.
+	(_mm_cvtpi32x2_ps): Ditto.
+
+2008-04-22  Nick Clifton  <nickc@redhat.com>
+
+	* common.opt (ftree-loop-distribution): Add Optimization
+	attribute.
+
+	* config/frv/frv.c (frv_stack_info): Use crtl instead of cfun.
+	(frv_expand_builtin_va_start): Likewise.
+
+	* config/arm/arm.c (thumb_find_work_register): Fix location of
+	argument register count.
+
+2008-04-22  Maxim Kuvyrkov  <maxim@codesourcery.com>
+
+	Support scheduling for ColdFire V1 and V3 microarchitecture.
+	Improve scheduling of multiplication instructions.
+
+	* config/m68k/m68k.md (cpu): Add cfv1 and cfv3.  Rename cf_v2 to cfv1.
+	(mac): New instruction attribute.
+	* config/m68k/m68k.c (override_options): Handle cfv1, cfv3 and mac.
+	(m68k_sched_mac): New variable.
+	(m68k_sched_attr_type2, m68k_sched_md_init_global): Update.
+	Handle cfv1 and cfv3.
+	(max_insn_size): New static variable.
+	(struct _sched_ib): New type.
+	(sched_ib): New static variable.
+	(sched_ib_size, sched_ib_filled, sched_ib_insn): Convert variables
+	to fields of 'struct _sched_ib sched_ib'.  Update all uses.
+	(m68k_sched_variable_issue): Add modeling of cfv3 instruction buffer.
+	Update.
+	(m68k_sched_md_init_global, m68k_sched_md_finish_global,
+	m68k_sched_md_init, m68k_sched_md_finish): Handle cfv1 and cfv3.  Init
+	new variables.  Update.
+	(m68k_sched_dfa_pre_advance_cycle, m68k_sched_dfa_post_advance_cycle):
+	Add modeling of cfv3 instruction buffer.  Update.
+	* config/m68k/m68k-protos.h (m68k_sched_mac): Declare.
+	* config/m68k/m68k.h (TUNE_CFV3): New macro.
+	* config/m68k/cf.md: Change substrings 'cf_v2' to 'cfv12' or 'cfv123'.
+	(cf_* reservations): Rename to cfv12 or cfv123 to indicate cores
+	a particular reservation applies to.
+	(type2): Reorganize attribute values.  Rename alu to alu_reg,
+	alu_l to alu, move_l to omove.  Join move to alu.  Split mul
+	to mul_l and mul_w.
+	(cf_ib_*): Simplify description of instruction buffer.
+	(cf_ib_w0, cf_ib_w4, cf_ib_w5, cf_ib_w6): Remove.
+	(cf_mem): Split into cf_mem1 and cf_mem2.
+	(cf_v2_move_??): Rename to cfv12_alu_??.
+	(cf_v2_move_l_??): Rename to cfv12_omove_??.
+	(cf_v2_mul_??): Remove reservations.
+	(cfv12_mul_l_??, cfv12_mul_w_??, cfv12_mac_w_??, cfv12_mac_l_??,
+	cfv12_emac_??, cfv12_emac_w_i0): New reservations.
+	(cfv12_rts, cfv12_call, cfv12_bcc, cfv12_bra, cfv12_jmp): Move to
+	appropriate place.
+	(cfv3_alu_10, cfv3_omove_10, cfv3_alu_i0, cfv3_omove_i0, cfv3_alu_01,
+	cfv3_alu_0i, cfv3_alu_11, cfv3_omove_11, cfv3_alu_i1, cfv3_omove_i1,
+	cfv3_alu_1i, cfv3_omove_1i, cfv3_pea_11, cfv3_pea_i1, cfv3_mul_w_10,
+	cfv3_mul_l_10, cfv3_mul_w_i0, cfv3_mac_w_10, cfv3_mac_l_10,
+	cfv3_mac_w_i0, cfv3_emac_10, cfv3_emac_w_i0, cfv3_rts, cfv3_call,
+	cfv3_bcc, cfv3_bra, cfv3_jmp): New reservations.
+	(cfv3_*_1, cfv3_*_2, cfv3_*_3): New instruction reservations that are
+	expansions of the above reservations for instructions of sizes
+	1, 2 and 3 words.
+
+2008-04-22  Maxim Kuvyrkov  <maxim@codesourcery.com>
+
+	* rtl-factoring.c (collect_patterns_seqs): Handle CC0 targets.
+
+2008-04-21  Adam Nemet  <anemet@caviumnetworks.com>
+
+	* coverage.c: Include tree-pass.h.
+	(coverage_counter_alloc): Print da_file_name to the dump file.
+
+2008-04-21  Kenneth Zadeck <zadeck@naturalbridge.com>
+
+	* sbitmap.c (sbitmap_range_empty_p): New function.
+	* sbitmap.h (sbitmap_range_empty_p): New function.
+	* bitmap.h: Now includes obstack.h.
+
+2008-04-21  Richard Sandiford  <rsandifo@nildram.co.uk>
+	    Kenneth Zadeck <zadeck@naturalbridge.com>
+
+	* dbgcnt.def (ra_byte_scan): Added.
+	* dbgcnt.c (dbg_cnt): Added code to print message to dump_file
+	when the last hit happens for a counter.  
+	* timevar.def (TV_DF_BYTE_LR): New variable.
+	* tree-pass.h (pass_fast_rtl_byte_dce): New pass.
+	* passes.c (pass_fast_rtl_byte_dce): New pass.
+	* fwprop.c (update_df): Added mode to call df_ref_create.
+	Renamed DF_REF_WIDTH and DF_REF_OFFSET to DF_REF_EXTRACT_WIDTH and
+	DF_REF_EXTRACT_OFFSET.
+	* df.h (DF_BYTE_LR, DF_BYTE_LR_BB_INFO, DF_BYTE_LR_IN, 
+	DF_BYTE_LR_OUT, df_byte_lr): New macro.
+	(df_mm): New enum.
+	(df_ref_extract): Added mode field.
+	(DF_REF_WIDTH, DF_REF_OFFSET) Renamed to DF_REF_EXTRACT_WIDTH and
+	DF_REF_EXTRACT_OFFSET.
+	(DF_REF_EXTRACT_MODE): New macro.
+	(df_byte_lr_bb_info): New structure.
+	(df_print_byte_regset, df_compute_accessed_bytes, 
+	df_byte_lr_add_problem, df_byte_lr_get_regno_start,
+	df_byte_lr_get_regno_len, df_byte_lr_simulate_defs,
+	df_byte_lr_simulate_uses,
+	df_byte_lr_simulate_artificial_refs_at_top,
+	df_byte_lr_simulate_artificial_refs_at_end,
+	df_compute_accessed_bytes): New function.
+	(df_ref_create): Add parameter.
+	(df_byte_lr_get_bb_info): New inline function.
+	* df-scan.c (df_ref_record, df_uses_record,
+	df_ref_create_structure): Added mode parameter.
+	(df_ref_create, df_notes_rescan, df_ref_record, df_def_record_1, 
+	df_defs_record, df_uses_record, df_get_conditional_uses,
+	df_get_call_refs, df_insn_refs_collect, df_bb_refs_collect, 
+	df_entry_block_defs_collect, df_exit_block_uses_collect):
+	Added mode parameter to calls to df_ref_record, df_uses_record,
+	df_ref_create_structure.
+	(df_ref_equal_p, df_ref_compare): Added test for modes.
+	(df_ref_create_structure): Added code to set mode.  Renamed
+	DF_REF_WIDTH and DF_REF_OFFSET to DF_REF_EXTRACT_WIDTH and
+	DF_REF_EXTRACT_OFFSET.
+	* df-core.c (df_print_byte_regset): New function.
+	* df-byte-scan.c: New file.
+	* df-problems.c (df_rd_transfer_function): Removed unnecessary
+	calls to BITMAP_FREE.  
+	(df_byte_lr_problem_data, df_problem problem_BYTE_LR): New structure.
+	(df_byte_lr_get_regno_start, df_byte_lr_get_regno_len,
+	df_byte_lr_set_bb_info, df_byte_lr_free_bb_info, 
+	df_byte_lr_check_regs, df_byte_lr_expand_bitmap, 
+	df_byte_lr_alloc, df_byte_lr_reset, df_byte_lr_bb_local_compute,
+	df_byte_lr_local_compute, df_byte_lr_init,
+	df_byte_lr_confluence_0, df_byte_lr_confluence_n, 
+	df_byte_lr_transfer_function, df_byte_lr_free, 
+	df_byte_lr_top_dump, df_byte_lr_bottom_dump,
+	df_byte_lr_add_problem, df_byte_lr_simulate_defs, 
+	df_byte_lr_simulate_uses,
+	df_byte_lr_simulate_artificial_refs_at_top,
+	df_byte_lr_simulate_artificial_refs_at_end): New function.
+	* dce.c (byte_dce_process_block): New function.
+	(dce_process_block): au is now passed in rather than computed
+	locally.  Changed loops that look at artificial defs to not look
+	for conditional or partial ones, because there never are any.  
+	(fast_dce): Now is able to drive byte_dce_process_block or 
+	dce_process_block depending on the kind of dce being done.
+	(rest_of_handle_fast_dce): Add parameter to fast_dce.
+	(rest_of_handle_fast_byte_dce): New function.
+	(rtl_opt_pass pass_fast_rtl_byte_dce): New pass.
+	* Makefile.in (df-byte-scan.o, debugcnt.o): Added dependencies.
+
+2008-04-21  Daniel Franke  <franke.daniel@gmail.com>
+
+	PR fortran/35019
+	* gcc.h: Added fortran options that take arguments to
+	DEFAULT_SWITCH_TAKES_ARG and DEFAULT_WORD_SWITCH_TAKES_ARG
+	macros.
+
+2008-04-20  Eric Botcazou  <ebotcazou@adacore.com>
+
+	* tree-sra.c (sra_walk_expr) <VIEW_CONVERT_EXPR>: Disable
+	scalarization if on the LHS and not a full access.
+
+2008-04-20  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
+
+	* Makefile.in (s-gtyp-input): Remove tmp-gi.list before writing it.
+
+2008-04-18  Rafael Espindola  <espindola@google.com>
+
+	* tree-vrp.c (find_case_label_index): Fix the binary search.
+	(find_case_label_range): New.
+	(vrp_visit_switch_stmt): Use find_case_label_range.
+	(simplify_switch_using_ranges): Use find_case_label_range.
+
+2008-04-18  Eric Botcazou  <ebotcazou@adacore.com>
+
+	* gimplify.c (gimplify_modify_expr_rhs) <COND_EXPR>: Gimplify the LHS
+	using the is_gimple_lvalue predicate instead of is_gimple_min_lval.
+
+2008-04-18  Tom Tromey  <tromey@redhat.com>
+
+	PR libcpp/15500:
+	* doc/cpp.texi (Implementation-defined behavior): Mention
+	-finput-charset.
+
+2008-04-18  Ian Lance Taylor  <iant@google.com>
+
+	* fold-const.c (pointer_may_wrap_p): New static function.
+	(fold_comparison): Add another test for pointer overflow.  Use
+	pointer_may_wrap_p to disable some false positives.
+
+2008-04-18  Kris Van Hees <kris.van.hees@oracle.com>
+	  
+	* c-common.c (CHAR16_TYPE, CHAR32_TYPE): New macros.
+	(fname_as_string): Match updated cpp_interpret_string prototype.
+	(fix_string_type): Support char16_t* and char32_t*.
+	(c_common_nodes_and_builtins): Add char16_t and char32_t (and
+	derivative) nodes.  Register as builtin if C++0x.
+	(c_parse_error): Support CPP_CHAR{16,32}.
+	* c-common.h (RID_CHAR16, RID_CHAR32): New elements. 
+	(enum c_tree_index) <CTI_CHAR16_TYPE, CTI_SIGNED_CHAR16_TYPE,
+	CTI_UNSIGNED_CHAR16_TYPE, CTI_CHAR32_TYPE, CTI_SIGNED_CHAR32_TYPE,
+	CTI_UNSIGNED_CHAR32_TYPE, CTI_CHAR16_ARRAY_TYPE,
+	CTI_CHAR32_ARRAY_TYPE>: New elements.
+	(char16_type_node, signed_char16_type_node, unsigned_char16_type_node,
+	char32_type_node, signed_char32_type_node, char16_array_type_node,
+	char32_array_type_node): New defines.
+	* c-lex.c (cb_ident): Match updated cpp_interpret_string prototype.
+	(c_lex_with_flags): Support CPP_CHAR{16,32} and CPP_STRING{16,32}.
+	(lex_string): Support CPP_STRING{16,32}, match updated
+	cpp_interpret_string and cpp_interpret_string_notranslate prototypes.
+	(lex_charconst): Support CPP_CHAR{16,32}.
+	* c-parser.c (c_parser_postfix_expression): Support CPP_CHAR{16,32}
+	and CPP_STRING{16,32}.
+
+2008-04-18  Paolo Bonzini  <bonzini@gnu.org>
+
+	PR bootstrap/35457
+	* aclocal.m4: Regenerate.
+	* configure: Regenerate.
+
+2008-04-18  Jan Hubicka  <jh@suse.cz>
+
+	* except.c (dw2_size_of_call_site_table,
+	sjlj_size_of_call_site_table): Use vector API for call_site_record.
+
+	* cgraphbuild.c (build_cgraph_edges): Update.
+	* tree-pass.h: Update comment.
+	* final.c (leaf_function_p): Update.
+	(leaf_renumber_regs): Update.
+	(rest_of_clean_state): Update.
+	* omp-low.c (expand_omp_parallel): Update.
+	* ipa-reference.c (analyze_function): Update.
+	* reorg.c (find_end_label): Update.
+	(optimize_skip): Update.
+	(fill_simple_delay_slots): Update.
+	(fill_simple_delay_slots): Update.
+	(make_return_insns): Update.
+	(dbr_schedule): Update.
+	* gimple-low.c (record_vars_into): Update.
+	* cfgbuild.c (make_edges): Update.
+	* function.c (assign_stack_local): Update.
+	(assign_parm_adjust_stack_rtl): Update.
+	(locate_and_pad_parm): Update.
+	(allocate_struct_function): Do not initialize stack_alignment_needed
+	and preferred_stack_boundary here.
+	(stack_protect_prologue): Update.
+	(stack_protect_epilogue): Update.
+	(expand_function_start): Initialize stack_alignment_needed,
+	preferred_stack_boundary and max_jumptable_ents.
+	(expand_function_end): Update.
+	(free_after_compilation): Do not NULLify epilogue_delay_list.
+	* function.h (struct rtl_data): Add stack_protect_guard,
+	stack_alignment_needed,
+	preferred_stack_boundary, epilogue_delay_list.
+	(struct function): Remove value_histograms, stack_alignment_needed,
+	preferred_stack_boundary, epilogue_delay_list, max_jumptable_ents,
+	last_label_uid,
+	unexpanded_var_list, stack_protect_guard.
+	(current_function_epilogue_delay_list): Remove.
+	* ipa-type-escape.c (analyze_function): Update.
+	* gimplify.c (pop_gimplify_context): Update comment.
+	* calls.c (expand_call): Update.
+	(emit_library_call_value_1): Update.
+	* except.c (set_nothrow_function_flags): Update.
+	* cfgexpand.c (get_decl_align_unit): Update.
+	(create_stack_guard): Update.
+	(estimated_stack_frame_size): Update.
+	(expand_used_vars): Update.
+	(tree_expand_cfg): Free histogram earliers, init expansion variables.
+	* explow.c (allocate_dynamic_stack_space): Update.
+	* tree-ssa-live.c (remove_unused_locals): Update.
+	* varasm.c (mark_constant_pool): Update.
+	* tree-inline.c (remap_decls): Update.
+	(initialize_cfun): Update.
+	(declare_return_variable): Update.
+	(inline_forbidden_p): Update.
+	(expand_call_inline): Update.
+	(declare_inline_vars): Update.
+	(tree_function_versioning): Update.
+	* tree-flow.h (value_histograms): New.
+	(VALUE_HISTOGRAMS): New macro.
+	* basic-block.h (control_flow_graph): Add max_jumptable_ents,
+	last_label_uid.
+	* tree-cfg.c (set_bb_for_stmt): Update.
+	(replace_by_duplicate_decl): Update.
+	(move_block_to_fn): Update.
+	(new_label_mapper): Update.
+	(dump_function_to_file): Update.
+	* ipa-struct-reorg.c (build_data_structure): Update.
+	* cfgrtl.c (print_rtl_with_bb): Update.
+	* reload1.c (reload): Update.
+	(reload): Update.
+	* config/i386/i386.c (setup_incoming_varargs_64,
+	ix86_compute_frame_layout): Update.
+	* config/arc/arc.c (arc_output_function_epilogue): Update.
+
+2008-04-18  Marius Strobl <marius@FreeBSD.org>
+
+	* gthr-posix.h (__gthread_active_p): Use the Solaris implementation
+	for FreeBSD as well.
+	* gthr-posix95.h: Likewise.
+
+2008-04-17  Richard Sandiford  <rsandifo@nildram.co.uk>
+
+	PR rtl-optimization/35838
+	* dse.c (find_shift_sequence): Use subreg_lowpart_offset to work
+	out the byte offset of the first subreg.
+
+2008-04-17  Uros Bizjak  <ubizjak@gmail.com>
+
+	* config/i386/i386.md (addti3 splitter): Pass arrays of 3 operands
+	to split_ti instead of three separate calls with single member arrays.
+	(subti3 splitter): Ditto.
+	(adddi3 splitter): Ditto with split_di.
+	(subdi3 splitter): Ditto.
+	(negti2 splitter): Pass arrays of 2 operands to split_ti instead of
+	two separate calls with single member arrays.  Swap match_dup
+	operands 1 and 2 to better fit into the array.
+	(negdi2 splitter): Ditto with split_di.
+	(movdfcc splitter):  Pass arrays of 2 operands to split_di instead of
+	two separate calls with single member arrays.  Swap match_dup operands
+	6 and 7 to better fit into the array.
+
+2008-04-17  H.J. Lu  <hongjiu.lu@intel.com>
+
+	* config/i386/i386.c (sse_builtin_type): New.
+	(bdesc_sse_args): Likewise.
+	(bdesc_sse_3arg): Removed.
+	(bdesc_2arg): Remove IX86_BUILTIN_AESKEYGENASSIST128.
+	(bdesc_1arg): Remove IX86_BUILTIN_ROUNDPD and
+	IX86_BUILTIN_ROUNDPS.
+	(ix86_init_mmx_sse_builtins): Handle bdesc_sse_args.  Remove
+	bdesc_sse_3arg.  Remove IX86_BUILTIN_ROUNDPD and
+	IX86_BUILTIN_ROUNDPS.
+	(ix86_expand_sse_4_operands_builtin): Removed.
+	(ix86_expand_sse_operands_builtin): New.
+	(ix86_expand_unop_builtin): Remove CODE_FOR_sse4_1_roundpd
+	and CODE_FOR_sse4_1_roundps.
+	(ix86_expand_builtin): Remove IX86_BUILTIN_AESKEYGENASSIST128.
+	Handle bdesc_sse_args.  Remove bdesc_sse_3arg.
+
+2008-04-17  Alan Modra  <amodra@bigpond.net.au>
+
+	PR target/35907
+	* config/rs6000/rs6000.c (rs6000_emit_epilogue): Restore vr and vrsave
+	regs before frame pop when needed.  If use_backchain_to_restore_sp
+	then load backchain into a temp reg to restore vr and vrsave.  Add
+	code to restore vr after frame pop if possible.
+
+2008-04-17  Richard Guenther  <rguenther@suse.de>
+
+	* tree-vn.c (expressions_equal_p): Do not check type
+	equality or compatibility before calling operand_equal_p.
+	* fold-const.c (operand_equal_p): Check equivalence of
+	integer constants before bailing out due to signedness or
+	precision differences.
+	* tree-ssa-sccvn.c (copy_reference_ops_from_ref): Ignore
+	spurious differences in type qualification.  Ignore types
+	for COMPONENT_REFs at all.
+
+2008-04-17  Christian Bruel  <christian.bruel@st.com>
+
+	* config/sh/sh.c (expand_cbranchdi4): Use original operands for
+	msw_skip comparison.
+	
+2008-04-16  Jakub Jelinek  <jakub@redhat.com>


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]