OSDN Git Service

5b43e8a0fdd9f713f9d353683a35607bf5d57aaa
[pf3gnuchains/gcc-fork.git] / gcc / ChangeLog
1 2009-09-11  Loren J. Rittle  <ljrittle@acm.org>
2
3         * config.gcc (*-*-freebsd*): Enable default_use_cxa_atexit
4         to match the system compiler's configuration at inflection point.
5         Add comment to remark a remaining difference with system compiler.
6
7 2009-09-11  Bernd Schmidt  <bernd.schmidt@analog.com>
8
9         From Jie Zhang <jie.zhang@analog.com>:
10         * config/bfin/bfin.c (bfin_expand_call): Handle L2 functions.
11         (bfin_handle_l2_attribute): New.
12         (bfin_attribute_table): Add l2 attribute.
13
14 2009-09-11  Michael Matz  <matz@suse.de>
15
16         PR middle-end/41275
17         * tree-inline.c (remap_decls): Don't put DECL_EXTERNAL decls
18         on the local_decls list.
19
20 2009-09-11  Alexandre Oliva  <aoliva@redhat.com>
21
22         PR debug/41276
23         PR debug/41307
24         * cselib.c (cselib_expand_value_rtx_cb): Document callback
25         interface.
26         (cselib_expand_value_rtx_1): Use callback for SUBREGs.  Adjust
27         for VALUEs, to implement the documented interface.
28         * var-tracking.c (vt_expand_loc_callback): Handle SUBREGs.
29         Adjust for VALUEs and anything else, to implement the
30         documented interface.
31
32 2009-09-10  Nathan Froyd  <froydnj@codesourcery.com>
33
34         * config/rs6000/rs6000.h (DATA_ALIGNMENT): Check that we are dealing
35         with actual SPE/paired vector modes before using 64-bit alignment.
36         Check that TYPE is a REAL_TYPE for TARGET_E500_DOUBLE.
37
38 2009-09-10  DJ Delorie  <dj@redhat.com>
39
40         * config/mep/mep.md (eh_epilogue): Defer until after epilogue is
41         emitted.
42
43         * config/mep/mep.h (LEGITIMATE_CONSTANT_P): New.
44         * config/mep/mep.c (mep_legitimate_constant_p): New.
45         * config/mep/mep-protos.h: Prototype it.
46
47 2009-09-10  Richard Henderson  <rth@redhat.com>
48
49         * print-rtl.c (print_rtx): Fix JUMP_LABEL index.
50
51 2009-09-10  Jason Merrill  <jason@redhat.com>
52
53         * tree.c (chain_index): New fn.
54         * tree.h: Declare it.
55
56 2009-09-10  Rainer Orth  <ro@CeBiTec.Uni-Bielefeld.DE>
57
58         * config/sol2-c.c (cmn_err_length_specs): Initialize
59         scalar_identity_flag.
60
61 2009-09-10  Richard Henderson  <rth@redhat.com>
62
63         * tree.h (struct tree_decl_common): Move align member earlier;
64         move label_decl_uid member ...
65         (struct tree_label_decl): ... here.
66         (LABEL_DECL_UID): Update to match.
67
68         * tree-cfg.c (dump_function_to_file): Dump eh tree with TDF_EH,
69         not TDF_DETAILS.
70
71         * tree-cfg.c (gimple_redirect_edge_and_branch): Do
72         gimple_try_redirect_by_replacing_jump test after no-op and EH tests.
73
74         * tree-cfg.c (split_edge_bb_loc): Don't disallow placement at
75         dest_prev if the edge is complex.
76
77         * tree-cfg.c (is_ctrl_stmt): Use a switch.
78
79         * tree-cfg.c (gimple_can_merge_blocks_p): Move label and
80         loop latch tests earlier.
81
82         * gimple-iterator.c (gimple_find_edge_insert_loc): Insert
83         before GIMPLE_RETURN, not after its predecessor; insert
84         before GIMPLE_RESX.
85
86         * gimple-iterator.c (gimple_find_edge_insert_loc): Use
87         gimple_seq_empty_p to test for no PHI nodes.
88         * tree-cfg.c (split_critical_edges): Likewise.
89
90         * c-common.h (c_dialect_cxx, c_dialect_objc): Boolify.
91
92 2009-09-10  Hariharan Sandanagobalane  <hariharan@picochip.com>
93
94         * final.c (shorten_branches) : Ignore DEBUG_INSN_P instructions
95         introduced by the VTA branch merge.
96
97 2009-09-10  Uros Bizjak  <ubizjak@gmail.com>
98
99         * ira-conflicts.c: Use fputs or putc instead of fprintf
100         where appropriate.
101         * cfg.c: Ditto.
102         * toplev.c: Ditto.
103         * tree-switch-conversion.c: Ditto.
104
105 2009-09-10  Hariharan Sandanagobalane  <hariharan@picochip.com>
106
107         * config/picochip/picochip.c : Ignore DEBUG_INSN_P instructions
108         introduced by the VTA branch merge.
109
110 2009-09-10  Uros Bizjak  <ubizjak@gmail.com>
111
112         Revert:
113         2009-09-09  Uros Bizjak  <ubizjak@gmail.com>
114
115         PR rtl-optimization/39779
116         * expr.c (convert_modes): Return when mode == oldmode after
117         CONST_INTs are processed.
118
119 2009-09-10  Nick Clifton  <nickc@redhat.com>
120
121         * config/mep/mep.c (mep_encode_section_info): Copy weakness
122         attribute and referring decl when creating renamed symbol.
123
124 2009-09-10  Richard Guenther  <rguenther@suse.de>
125
126         PR middle-end/41257
127         * cgraphunit.c (cgraph_emit_thunks): Emit thunks only for
128         reachable nodes.
129         (cgraph_finalize_compilation_unit): Compute reachability
130         before emitting thunks.  Properly process aliases before
131         possibly removing unreachable nodes.
132
133 2009-09-10  Richard Guenther  <rguenther@suse.de>
134
135         PR middle-end/41254
136         * tree.c (struct free_lang_data_d): Add worklist member.
137         (find_decls_types_r): Push onto the worklist instead of recursing.
138         Handle TREE_BINFOs properly.
139         (find_decls_types): New function wrapped around find_decls_types_r
140         to process the worklist.
141         (find_decls_types_in_eh_region): Use it.
142         (find_decls_types_in_node): Likewise.
143         (find_decls_types_in_var): Likewise.
144         (free_lang_data_in_cgraph): Likewise.  Free the worklist.
145         * tree.h (RECORD_OR_UNION_TYPE_P): New.
146         (AGGREGATE_TYPE_P): Adjust.
147
148 2009-09-09  Jason Merrill  <jason@redhat.com>
149
150         * configure.ac: Check glibc version even if we have an in-tree
151         assembler.
152
153 2009-09-09  Anthony Green  <green@moxielogic.com>
154
155         * config/moxie/moxie.md (*movsi, *movhi, *movqi): Use xor to load
156         the constant 0 when appropriate.
157         * config/moxie/constraints.md: Add constraint O.
158
159         * config/moxie/moxie.c (moxie_setup_incoming_varargs): Adjust
160         to pass up to 6 32-bit argument values in registers.
161         (moxie_function_arg): Ditto.
162         (moxie_arg_partial_bytes): Ditto.
163         * config/moxie/moxie.h (FUNCTION_ARG_ADVANCE): Ditto.
164         (REG_PARM_STACK_SPACE): Ditto.
165         (FUNCTION_ARG_REGNO_P): Ditto.
166
167         * config/moxie/moxie.c (moxie_expand_prologue): Use dec
168         instruction to allocate stack space.
169
170 2009-09-09  Segher Boessenkool  <segher@kernel.crashing.org>
171
172         * config/rs6000/rs6000.md (bswapdi2_64bit): Fix
173         unnecessarily stringent constraints.  Fix address
174         calculation in the splitters.
175
176 2009-09-09  Uros Bizjak  <ubizjak@gmail.com>
177
178         PR rtl-optimization/39779
179         * expr.c (convert_modes): Return when mode == oldmode after
180         CONST_INTs are processed.
181
182 2009-09-09  Kai Tietz  <kai.tietz@onevision.com>
183
184         PR/41315
185         * config/i386.c (ix86_can_use_return_insn_p): Check for padding0, too.
186         (ix86_expand_prologue): Take frame.padding0 into logic of
187         to_allocate checks.
188         (ix86_expand_epilogue): Likewise.
189
190 2009-09-09  Jakub Jelinek  <jakub@redhat.com>
191
192         * config/t-slibgcc-elf-ver (SHLIB_MAKE_SOLINK, SHLIB_INSTALL_SOLINK):
193         New variables.
194         (SHLIB_LINK, SHLIB_INSTALL): Use them.
195         * config/t-slibgcc-libgcc: New file.
196         * config.gcc (powerpc*-*-linux*, powerpc*-*-gnu*): Use it.
197
198 2009-09-09  Martin Jambor  <mjambor@suse.cz>
199
200         PR tree-optimization/41089
201         * tree-sra.c (find_var_candidates): Do not consider va_lists in
202         early SRA.
203
204 2009-09-09  Richard Henderson  <rth@redhat.com>
205
206         * gimple.h (CASE_GIMPLE_OMP): New.
207         (is_gimple_omp): Use it.
208         * tree-cfg.c (is_ctrl_altering_stmt): Likewise.
209         (verify_gimple_debug): Likewise.
210
211 2009-09-09  Richard Guenther  <rguenther@suse.de>
212
213         PR tree-optimization/41101
214         * tree-ssa-pre.c (maximal_set): Remove.
215         (compute_antic_aux): Treat the maximal set as implicitly all ones.
216         Defer all blocks we didn't visit at least one successor.
217         (add_to_exp_gen): Do not add to the maximal set.
218         (make_values_for_phi): Likewise.
219         (compute_avail): Likewise.
220         (init_pre): Do not allocate the maximal set.
221         (execute_pre): Do not dump it.
222
223 2009-09-09  Martin Jambor  <mjambor@suse.cz>
224
225         * tree-cfg.c (verify_gimple_phi): Check that gimple_phi_result is
226         an SSA_NAME rather than a is_gimple_variable.
227
228 2009-09-09  Richard Guenther  <rguenther@suse.de>
229
230         PR middle-end/41317
231         * tree-ssa-ccp.c (maybe_fold_offset_to_component_ref): Remove
232         code dealing with plain pointer bases.
233         (maybe_fold_offset_to_reference): Likewise.
234         (maybe_fold_stmt_addition): Adjust.
235
236 2009-09-09  Richard Guenther  <rguenther@suse.de>
237
238         * tree.c (free_lang_data_in_type): Do not free the type variant
239         chains.
240         (free_lang_data): Merge char_type_node with its properly signed
241         variant.
242         (pass_ipa_free): Collect after freeing language specific data.
243
244 2009-09-09  Michael Matz  <matz@suse.de>
245
246         PR middle-end/41268
247         * cfgexpand.c (expand_gimple_stmt_1): Use an int for storing
248         SUBREG_PROMOTED_UNSIGNED_P, instead of a bool.
249         * rtl.h (struct rtx, SUBREG_PROMOTED_UNSIGNED_P): Update comments
250         to reflect reality.
251
252 2009-09-08  DJ Delorie  <dj@redhat.com>
253
254         * config/mep/mep.c (conversions[]): Add "ml" pattern.
255
256 2009-09-04  Jason Merrill  <jason@redhat.com>
257
258         * tree.c (tree_find_value): Remove.
259         * tree.h: Remove prototype.
260         * varasm.c (assemble_external): Use value_member instead.
261
262 2009-09-08  Alexandre Oliva  <aoliva@redhat.com>
263
264         * toplev.c (process_options): Choose default debugging type when
265         gtoggle enables debug info and type is unset.
266
267 2009-09-08  Alexandre Oliva  <aoliva@redhat.com>
268
269         PR debug/41276
270         PR debug/41307
271         * cselib.c (cselib_expand_value_rtx_1): Don't return copy of
272         invalid subreg.
273
274 2009-09-08  Alexandre Oliva  <aoliva@redhat.com>
275
276         * configure: Rebuilt with modified libtool.m4.
277
278 2009-09-08  Alexandre Oliva  <aoliva@redhat.com>
279
280         PR debug/41229
281         PR debug/41291
282         PR debug/41300
283         * tree-ssa.c (execute_update_addresses_taken): Update debug insns.
284
285 2009-09-08  Alexandre Oliva  <aoliva@redhat.com>
286
287         * tree-ssa-loop-ivopts.c (get_phi_with_result): Remove.
288         (remove_statement): Likewise.
289         (rewrite_use_nonlinear_expr): Adjust.
290         (remove_unused_ivs): Collect SSA NAMEs to remove and call...
291         * tree-ssa.c (release_defs_bitset): ... this.  New.
292         * tree-flow.h (release_defs_bitset): Declare.
293
294 2009-09-08  Alexandre Oliva  <aoliva@redhat.com>
295
296         PR debug/41232
297         * tree-ssa-phiopt.c (minmax_replacement): Skip debug stmts
298         in the middle block.
299
300 2009-09-08  Kai Tietz  <kai.tietz@onevision.com>
301
302         * tree-ssa-reassoc.c (find_operand_rank): Cast pointer
303         via intptr_t to long type.
304         (insert_operand_rank): Cast long type via intptr_t to
305         pointer type.
306         * genattrtab.c (RTL_HASH): Use intptr_t to cast from
307         pointer to scalar.
308         * c-pretty-print.c (pp_c_tree_decl_identifier): Cast
309         from pointer to unsigned via uintptr_t.
310
311         * configure.ac (GCC_STDINT_TYPES): Initialize intptr_t,
312         uintptr_t, HAVE_INTTYPES_H, HAVE_STDINT_H, HAVE_UINTPTR_T,
313         and HAVE_INTPTR_T.
314         * configure: Regenerated.
315         * config.in: Regenerated
316         * system.h (stdint.h): Add include.
317         (inttypes.h): Likewise.
318         * Makefile.in (aclocal): Add config/stdint.m4.
319         * aclocal.m4: Regenerated.
320
321 2009-09-08  Bernd Schmidt  <bernd.schmidt@analog.com>
322
323         * config/bfin/bfin.c (np_check_regno, np_after_branch): New static
324         variables.
325         (note_np_check_stores): New function.
326         (harmless_null_pointer_p): New function.
327         (trapping_loads_p): New args NP_REG and AFTER_NP_BRANCH.  Callers
328         changed.  Take into account whether we're in the shadow of a condjump
329         that tested NP_REG for NULL.
330         Lose all code that tested for SEQUENCEs.
331         (workaround_speculation): Avoid inserting NOPs for loads that are
332         either always executed or a NULL pointer.
333
334 2009-09-08  Jan Hubicka  <jh@suse.cz>
335
336         * doc/invoke.texi (early-inlining-insns): Reduce from 12 to 8.
337         * params.def (early-inlining-insns): Likewise.
338
339 2009-09-08  Jakub Jelinek  <jakub@redhat.com>
340
341         PR rtl-optimization/41239
342         * sched-int.h (struct deps): Add last_function_call_may_noreturn field.
343         * sched-rgn.c (deps_join): Join also last_function_call_may_noreturn
344         lists.
345         * sched-deps.c (sched_analyze_insn): Prevent moving trapping insns
346         across calls, as the calls might not always return normally.
347         (call_may_noreturn_p): New function.
348         (deps_analyze_insn): Update last_function_call_may_noreturn list.
349         (init_deps): Initialize it.
350         (remove_from_deps): Also remove calls from
351         last_function_call_may_noreturn list.
352
353 2009-09-07  Richard Henderson  <rth@redhat.com>
354
355         * tree-ssa-sccvn.c (vn_reference_lookup_3): Don't assume there are
356         more VR->OPERANDS than LHS operands.  Free LHS before returning.
357
358 2009-09-07  Bernd Schmidt  <bernd.schmidt@analog.com>
359
360         * config/bfin/bfin.md (UNSPEC_VOLATILE_STALL): New constant.
361         (attr "addrtype"): New member "spreg".
362         Use it if mem_spfp_address_operand is true for the address.
363         (attr "type"): New entry "stall".
364         (cpu_unit "load"): New.
365         (insn_reservations "load32", "loadp", "loadi"): Add reservation of
366         "load".
367         (insn_reservation "loadsp"): New.
368         (insn_reservation "load_stall1"): New.
369         (insn_reservation "load_stall3"): New.
370         (stall): New insn.
371         * config/bfin/predicates.md (const1_operand, const3_operand): New.
372         (mem_p_address_operand): Exclude stack and frame pointer based
373         addresses.
374         (mem_spfp_address_operand): New; match them here.
375         * config/bfin/bfin.c (add_sched_insns_for_speculation): New function.
376         (bfin_reorg): Call it if scheduling insns.
377         (bfin_gen_bundles): Remove dummy insns created by
378         add_sched_insns_for_speculation.
379
380         From Jie Zhang <jie.zhang@analog.com>:
381         * config/bfin/bfin-protos.h (enum bfin_cpu_type, bfin_cpu_type,
382         bfin_si_revision, bfin_workarounds): Move these ...
383         * config/bfin/bfin.h: ... here.
384
385         From Mike Frysinger  <michael.frysinger@analog.com>
386         * config/bfin/bfin-protos.h (bfin_cpu_type): Add BFIN_CPU_BF542M,
387         BFIN_CPU_BF544M, BFIN_CPU_BF547M, BFIN_CPU_BF548M, and BFIN_CPU_BF549M.
388         * config/bfin/bfin.c (bfin_cpus[]): Add 0.3 for bf542m, bf544m,
389         bf547m, bf548m, and bf549m.
390         * config/bfin/bfin.h (TARGET_CPU_CPP_BUILTINS): Define __ADSPBF542M__
391         for BFIN_CPU_BF542M, __ADSPBF544M__ for BFIN_CPU_BF544M,
392         __ADSPBF547M__ for BFIN_CPU_BF547M, __ADSPBF548M__ for
393         BFIN_CPU_BF548M, and __ADSPBF549M__ for BFIN_CPU_BF549M.
394         * config/bfin/t-bfin-elf (MULTILIB_MATCHES): Select bf532-none for
395         bf542m-none, bf544m-none, bf547m-none, bf548m-none, and bf549m-none.
396         * config/bfin/t-bfin-linux (MULTILIB_MATCHES): Likewise.
397         * config/bfin/t-bfin-uclinux (MULTILIB_MATCHES): Likewise.
398         * doc/invoke.texi (Blackfin Options): Document that -mcpu now accepts
399         bf542m, bf544m, bf547m, bf548m, and bf549m.
400
401         From Jie Zhang <jie.zhang@analog.com>:
402         * config/bfin/predicates.md (p_register_operand): New predicate.
403         (dp_register_operand): New predicate.
404         * config/bfin/bfin-protos.h (WA_05000074): Define.
405         (ENABLE_WA_05000074): Define.
406         * config/bfin/bfin.c (bfin_cpus[]): Add WA_05000074 for all cpus.
407         (bfin_gen_bundles): Put dsp32shiftimm instruction in slot[0].
408         * config/bfin/bfin.md (define_attr type): Add dsp32shiftimm.
409         (define_attr addrtype): Allow load/store register to be P register.
410         (define_attr storereg): New.
411         (define_cpu_unit anomaly_05000074): New.
412         (define_insn_reservation dsp32shiftimm): New.
413         (define_insn_reservation dsp32shiftimm_anomaly_05000074): New.
414         (define_insn_reservation loadp): Cannot use slot2.
415         (define_insn_reservation loadsp): Cannot use slot2.
416         (define_insn_reservation storep): Cannot use slot2. Does not
417         apply when working around 05000074.
418         (define_insn_reservation storep_anomaly_05000074): New.
419         (define_insn_reservation storei): Does not apply when working
420         around 05000074.
421         (define_insn_reservation storei_anomaly_05000074): New.
422         (define_attr length): Add dsp32shiftimm case.
423         (define_insn movsi_insn32, movsi_insv, ashlsi3_insn, ashrsi3,
424         ror_one, rol_one, lshrsi3, lshrpdi3, ashrpdi3, movhiv2hi_low,
425         movhiv2hi_high, composev2hi, packv2hi, movv2hi_hi,
426         ssashiftv2hi3, ssashifthi3, ssashiftsi3, lshiftv2hi3, lshifthi3):
427         Set type as dsp32shiftimm for dsp32shiftimm alternatives.
428
429 2009-09-07  Martin Jambor  <mjambor@suse.cz>
430
431         PR middle-end/41282
432         * tree-sra.c (create_artificial_child_access): Return NULL if
433         build_ref_for_offset fails.
434         (propagate_subacesses_accross_link): Allow build_ref_for_offset
435         and create_artificial_child_access to fail.
436
437 2009-09-06  Dmitry Gorbachev  <d.g.gorbachev@gmail.com>
438
439         PR c++/41214
440         * unwind-dw2.c (uw_init_context_1): Mark noinline.
441         * config/ia64/unwind-ia64.c (uw_init_context_1): Likewise.
442         * config/xtensa/unwind-dw2-xtensa.c (uw_init_context_1): Likewise.
443
444 2009-09-07  Bernd Schmidt  <bernd.schmidt@analog.com>
445
446         * config/bfin/bfin.c (bfin_optimize_loop): When creating a new basic
447         block, ensure it has an exit edge.  Emit a barrier after a jump.
448
449 2009-09-07  Nick Clifton  <nickc@redhat.com>
450
451         * gcc.c (this_is_linker_script): New variable.  Like
452         this_is_library_file but for the %T constructor.
453         (end_going_arg): If this_is_linker_script is set then locate the
454         script and insert a --script switch before it
455         (do_spec_2): Initialise this_is_linker_script.
456         (do_spec_1): Likewise.  Handle %T construct.
457         (eval_spec_function): Preserve this_is_linker_script.
458         * doc/invoke.texi: Document %T construct in spec files.
459         * config/m32c/m32c.h (LIB_SPEC): Use it.
460
461 2009-09-07  Andreas Krebbel  <Andreas.Krebbel@de.ibm.com>
462
463         * rtl.h (PREFETCH_SCHEDULE_BARRIER_P): New macro.
464         * sched-deps.c (sched_analyze_2): Make prefetches a hard barrier
465         when volatile flag is set.
466         * doc/rtl.texi (PREFETCH_SCHEDULE_BARRIER_P): Add documentation pieces.
467
468 2009-09-06  Eric Botcazou  <ebotcazou@adacore.com>
469
470         PR bootstrap/41241
471         * combine-stack-adj.c (try_apply_stack_adjustment): Handle stores.
472         (combine_stack_adjustments_for_block): Allow insns between stack
473         adjustments and stores with corresponding pre-(dec|inc)rement or
474         pre-modify operation.
475
476 2009-09-06  Jakub Jelinek  <jakub@redhat.com>
477
478         PR bootstrap/41241
479         * combine-stack-adj.c (struct csa_memlist): Rename to...
480         (struct csa_reflist): ... this.  Rename mem field to ref.
481         (free_csa_memlist): Rename to...
482         (free_csa_reflist): ... this.
483         (record_one_stack_memref): Rename to...
484         (record_one_stack_ref): ... this.  Handle also REG_P.
485         (try_apply_stack_adjustment): Handle also REG_P.
486         (struct record_stack_memrefs_data): Rename to...
487         (struct record_stack_refs_data): ... this.  Rename memlist field to
488         reflist.
489         (record_stack_memrefs): Rename to...
490         (record_stack_refs): ... this.  For DEBUG_INSNs keep traversing
491         subexpressions instead of failing when a MEM contains SP references.
492         For SP itself in DEBUG_INSNs queue it also onto reflist chain.
493         (combine_stack_adjustments_for_block): Adjust for mem to ref renaming.
494
495 2009-09-06  Richard Guenther  <rguenther@suse.de>
496
497         PR middle-end/41144
498         * tree.c (build_array_type): Do not record types marked
499         with structural equality in the canonical type hashtable.
500
501 2009-09-06  Richard Guenther  <rguenther@suse.de>
502
503         PR middle-end/41261
504         * tree-ssa-alias.c (refs_may_alias_p_1): Bail out for function decls.
505
506 2009-09-05  Richard Guenther  <rguenther@suse.de>
507
508         PR middle-end/41181
509         * tree-ssa-ccp.c (maybe_fold_stmt_addition): Use the correct type.
510
511 2009-09-05  Richard Guenther  <rguenther@suse.de>
512
513         PR debug/41273
514         * tree-ssa-operands.c (get_tmr_operands): Pass through opf_no_vops.
515
516 2009-09-05  Richard Guenther  <rguenther@suse.de>
517
518         PR middle-end/41271
519         * tree-ssa.c (useless_type_conversion_p): Drop qualifiers
520         before comparing function argument types.
521
522 2009-09-05  Francois-Xavier Coudert  <fxcoudert@gcc.gnu.org>
523
524         PR target/41024
525         * config/i386/mingw-w64.h (ASM_SPEC): Pass -v instead of -V to
526         the assembler.
527
528 2009-09-04  Uros Bizjak  <ubizjak@gmail.com>
529
530         Revert:
531         2009-08-18  Uros Bizjak  <ubizjak@gmail.com>
532
533         * config/alpha/alpha.c (alpha_output_mi_thunk_osf): Allocate insn
534         locators before emit_insn is called.
535
536 2009-09-04  Vladimir Makarov  <vmakarov@redhat.com>
537
538         PR bootstrap/41241
539         * ira.c (update_equiv_reg): Revert my previous patch for the PR.
540         * reginfo.c (resize_reg_info): Call allocate_reg_info if necessary.
541         (reginfo_init): Don't call allocate_reg_info.
542
543 2009-09-04  Uros Bizjak  <ubizjak@gmail.com>
544
545         PR target/41262
546         * config/alpha/alpha.c (alpha_does_function_need_gp): Use
547         NONDEBUG_INSN_P instead of INSN_P.
548
549 2009-09-04  Alexandre Oliva  <aoliva@redhat.com>
550
551         PR debug/41225
552         * tree-vect-stmts.c (vect_stmt_relevant_p): Skip debug uses.
553
554 2009-09-04  Alexandre Oliva  <aoliva@redhat.com>
555
556         PR target/41252
557         * config/arm/vfp.md (*cmpdf_split_vfp): Fix src mode in the second
558         pattern of the split.
559
560 2009-09-04  Alexandre Oliva  <aoliva@redhat.com>
561
562         * toplev.c (process_options): Move setter of flag_var_tracking
563         before other tests that depend on it.  Move down setter of
564         flag_rename_registers.  Don't enable var-tracking-assignments
565         by default if selective scheduling is enabled.  Warn if both
566         are enabled.
567
568 2009-09-04  Alexandre Oliva  <aoliva@redhat.com>
569
570         * var-tracking.c (dv_is_decl_p): Adjust NULL behavior to match
571         comment.  Use switch statement to catch overlaps between rtx
572         and tree codes.  Accept FUNCTION_DECLs in addition to those in...
573         (IS_DECL_CODE): ... here. Remove.
574         (check_value_is_not_decl): Remove.
575         (dv_from_decl, dv_from_value): Check after conversion.
576
577 2009-09-04  Richard Guenther  <rguenther@suse.de>
578
579         PR middle-end/41257
580         * (cgraph_finalize_compilation_unit): Move finalizing aliases
581         after emitting tunks.  Move emitting thunks and ctors from ...
582         (cgraph_optimize): ... here.  Remove redundant
583         cgraph_analyze_functions.
584         * varasm.c (find_decl_and_mark_needed): Remove no longer
585         necessary check.
586         (finish_aliases_1): Adjust check for thunk aliases.
587
588 2009-09-04  Daniel Gutson  <dgutson@codesourcery.com>
589
590         * config/arm/arm.md (ctzsi2): Added braces
591         to avoid warning that broke booststrap.
592
593 2009-09-04  Martin Jambor  <mjambor@suse.cz>
594
595         PR tree-optimization/41112
596         * tree-sra.c (build_ref_for_offset_1): Signal that we cannot
597         handle variable-bounded arrays.
598         (expr_with_var_bounded_array_refs_p): New function.
599         (analyze_access_subtree): Call expr_with_var_bounded_array_refs_p.
600
601 2009-09-04  Wolfgang Gellerich  <gellerich@de.ibm.com>
602
603         * config/s390/2097.md: Removed two incorrect bypasses.
604         (z10_fsimpdf): Fixed latency.
605         (z10_fhex): New insn_reservation.
606         (z10_floaddf): Fixed latency.
607         (z10_floadsf): Fixed latency.
608         (z10_ftrunctf): Fixed latency.
609         (z10_ftruncdf): Fixed latency.
610         * config/s390/s390.c (z10_cost): Fixed values.
611         (s390_adjust_priority): Added z10 path.
612         * config/s390/s390.md (type): Added fhex.
613         (*mov<mode>_64dfp): Updated type attribute.
614         (*mov<mode>_64): Updated type attribute.
615         (*mov<mode>_31): Updated type attribute.
616         (*mov<mode>"): Likewise.
617         * config/s390/2084.md (x_fsimpdf): Updated condition.
618
619 2009-09-04  Andreas Krebbel  <krebbel1@de.ibm.com>
620
621         * config/s390/s390.md ("*fmadd<mode>", "*fmsub<mode>"): Enable mem
622         RTXs in the predicate for operand 1.
623
624 2009-09-03  Daniel Gutson  <dgutson@codesourcery.com>
625
626         * config/arm/arm.md (UNSPEC_RBIT): New constant.
627         (rbitsi2): New insn.
628         (ctzsi2): New expand.
629         * config/arm/arm.h (CTZ_DEFINED_VALUE_AT_ZERO): New macro.
630
631 2009-09-03  Martin Jambor  <mjambor@suse.cz>
632
633         * tree-sra.c (duplicate_expr_for_different_base): Removed.
634         (create_artificial_child_access): Use build_ref_for_offset instead
635         of duplicate_expr_for_different_base.
636         (propagate_subacesses_accross_link): Likewise.
637
638 2009-09-03  Richard Sandiford  <rdsandiford@googlemail.com>
639
640         * config/mips/mips.c (USEFUL_INSN_P): Use NONDEBUG_INSN_P instead
641         of INSN_P.
642         (mips16e_collect_argument_saves): Skip debug instructions.
643         (mips_74k_agen_init): Use CALL_P || JUMP_P instead of !NONJUMP_INSN_P.
644         (mips16_lay_out_constants): Use USEFUL_INSN_P instead of INSN_P.
645         (r10k_insert_cache_barriers): Likewise.
646         (mips_reorg_process_insns): Likewise.
647
648 2009-09-03  Vladimir Makarov  <vmakarov@redhat.com>
649
650         PR bootstrap/41241
651         * ira.c (update_equiv_reg): Remove check on class likely spill.
652
653 2009-09-03  Jakub Jelinek  <jakub@redhat.com>
654
655         PR debug/41236
656         * dwarf2out.c (loc_descriptor): Don't use SUBREG_REG macro on
657         SIGN_EXTEND or ZERO_EXTEND.  Don't assume there is a REG inside of
658         it or SUBREG.
659
660         PR debug/41238
661         * function.c (assign_parm_find_stack_rtl): Don't set mem attributes on
662         the stack slot if it is passed by invisible reference.
663         * var-tracking.c (vt_add_function_parameters): Handle arguments passed
664         by invisible reference.
665
666 2009-09-03  Bernd Schmidt  <bernd.schmidt@analog.com>
667
668         * config/bfin/linux.h (TARGET_SUPPORTS_SYNC_CALLS): Define to 1.
669         * config/bfin/uclinux.h (TARGET_SUPPORTS_SYNC_CALLS): Define to 1.
670         * config/bfin/bfin.h (TARGET_SUPPORTS_SYNC_CALLS): Provide default of
671         0.
672         * config/bfin/sync.md: New file.
673         * config/bfin/bfin.md: Include it.
674         (UNSPEC_ATOMIC): New.
675         (UNSPEC_ONES): Provide a unique number.
676
677         From Jie Zhang <jie.zhang@analog.com>:
678         * config/bfin/bfin.c (ret_regs): New.
679         (must_save_fp_p): Don't return true because of frame_pointer_needed.
680         (must_save_rets_p): New.
681         (n_regs_saved_by_prologue): Use must_save_rets_p instead of
682         current_function_is_leaf.
683         (do_link): Likewise.
684         (do_unlink): Likewise.
685         (expand_interrupt_handler_prologue): Use ret_regs array.
686         (expand_interrupt_handler_epilogue): Use ret_regs array and
687         pass return register to gen_return_internal.
688         (bfin_expand_epilogue): Pass return register to
689         gen_return_internal.
690         (bfin_expand_call): Explicitly clobber RETS.
691         * config/bfin/bfin.h (FUNCTION_RETURN_REGISTERS): Define.
692         * config/bfin/bfin.md (call_symbol_fdpic, call_value_symbol_fdpic,
693         call_insn_fdpic, call_value_insn_fdpic, call_symbol,
694         call_value_symbol, call_insn, call_value_insn): Explicitly clobber
695         RETS.
696         (return_internal): Take a reg rtx rather than the register number.
697
698 2009-09-03  H.J. Lu  <hongjiu.lu@intel.com>
699
700         * tree-parloops.c (parallelize_loops): Cast to HOST_WIDE_INT
701         when comparing against estimated_loop_iterations_int return.
702
703 2009-09-03  Richard Guenther  <rguenther@suse.de>
704
705         * dwarf2out.c (dwarf2out_do_cfi_asm): Remove check of
706         eh_personality_libfunc.
707
708 2009-09-03  Razya Ladelsky  <razya@il.ibm.com>
709
710         * tree-parloops.c (separate_decls_in_region): Add space.
711
712 2009-09-03  Razya Ladelsky  <razya@il.ibm.com>
713
714         * tree-parloops.c (separate_decls_in_region): Change the condition
715         checking if there are reductions in the loop.
716
717 2009-09-03  Razya Ladelsky  <razya@il.ibm.com>
718
719         PR tree-optimization/38275
720         * tree-parloops.c (parallelize_loops): Replace profitability condition
721         for expected number of iterations.
722
723 2009-09-03  Alexandre Oliva  <aoliva@redhat.com>
724
725         * doc/invoke.texi (BUILD_CONFIG): Document --with-build-config.
726         (bootstrap-debug): Explain conditions in which it becomes default.
727         (bootstrap-debug-big): Rather than duplicate bootstrap-debug,
728         make it add to it.
729
730 2009-09-03  Namhyung Kim  <namhyung@gmail.com>
731
732         * doc/invoke.texi (Optimize Options): Move
733         -finline-small-functions to the -O2 list.
734
735 2009-09-03  Alexandre Oliva  <aoliva@redhat.com>
736
737         * toplev.c (process_options): Enable var-tracking-assignments
738         by default if var-tracking is enabled.
739
740 2009-09-02  David Daney  <ddaney@caviumnetworks.com>
741
742         * cfgbuild.c (find_bb_boundaries): Split blocks containing a
743         barrier.
744         * emit-rtl.c (prev_nonnote_insn_bb): New function.
745         * rtl.h (prev_nonnote_insn_bb): Declare it.
746
747 2009-09-03  Diego Novillo  <dnovillo@google.com>
748
749         * cgraph.c (cgraph_node_for_decl): New.
750         * cgraph.h (cgraph_node_for_decl): Declare.
751         * tree.c (host_integerp): Return 0 if T is NULL.
752
753 2009-09-03  Diego Novillo  <dnovillo@google.com>
754
755         * tree.h (struct alias_pair): Move from varasm.c.
756         (alias_pairs): Likewise.
757         (TYPE_MAXVAL): Define.
758         (TYPE_MINVAL): Define.
759         (iterative_hash_host_wide_int): Declare.
760         (remove_unreachable_alias_pairs): Declare.
761         * tree-pass.h (pass_ipa_free_lang_data): Declare.
762         * diagnostic.c (default_diagnostic_starter): Make extern.
763         (default_diagnostic_finalizer): Make extern.
764         * diagnostic.h (default_diagnostic_starter): Declare.
765         (default_diagnostic_finalizer): Declare.
766         (default_tree_printer): Declare.
767         * toplev.c (default_tree_printer): Make extern.
768
769 2009-09-03  Richard Guenther  <rguenther@suse.de>
770             Diego Novillo  <dnovillo@google.com>
771
772         * cgraph.c (cgraph_add_new_function): Remove gimplification.
773         * cgraphunit.c (cgraph_expand_function): Do not emit
774         associated thunks from here.
775         (cgraph_emit_thunks): New.
776         (cgraph_optimize): Call it.
777         Return if any IPA pass finds an error.
778         * varasm.c (finish_aliases_1): Ignore errorneous aliases used
779         by thunks.
780
781 2009-09-03  Simon Baldwin  <simonb@google.com>
782             Rafael Espindola  <espindola@google.com>
783             Richard Guenther  <rguenther@suse.de>
784             Doug Kwan  <dougkwan@google.com>
785             Diego Novillo  <dnovillo@google.com>
786
787         * tree.c: Include tree-pass.h, langhooks-def.h,
788         diagnostic.h, cgraph.h, timevar.h, except.h and debug.h.
789         (free_lang_data_in_type): New.
790         (need_assembler_name_p): New.
791         (free_lang_data_in_block): New.
792         (free_lang_data_in_decl): New.
793         (struct free_lang_data_d): New.
794         (add_tree_to_fld_list): New.
795         (find_decls_types_r): New.
796         (get_eh_types_for_runtime): New.
797         (find_decls_types_in_eh_region): New.
798         (find_decls_types_in_node): New.
799         (find_decls_types_in_var): New.
800         (free_lang_data_in_cgraph): New.
801         (free_lang_data): New.
802         (gate_free_lang_data): New.
803         (pass_ipa_free_lang_data): New.
804
805 2009-09-03  Diego Novillo  <dnovillo@google.com>
806
807         * timevar.def (TV_IPA_FREE_LANG_DATA): Define.
808         * langhooks.h (struct lang_hooks): Add field free_lang_data.
809         (lang_hooks): Remove const qualifier.
810         * ipa.c (cgraph_remove_unreachable_nodes): Call
811         remove_unreachable_alias_pairs.
812         * except.c (add_type_for_runtime): Check if TYPE has
813         already been converted.
814         (lookup_type_for_runtime): Likewise.
815         (check_handled): Handle converted types.
816         * varasm.c (remove_unreachable_alias_pairs): New.
817         * gimple.c: Include demangle.h.
818         (gimple_decl_printable_name): New.
819         (gimple_fold_obj_type_ref): New.
820         * gimple.h (gimple_decl_printable_name): Declare.
821         (gimple_fold_obj_type_ref): Declare.
822         * passes.c (init_optimization_passes): Add pass
823         pass_ipa_free_lang_data.
824         * langhooks-def.h (LANG_HOOKS_FREE_LANG_DATA): Define.
825         (LANG_HOOKS_INITIALIZER): Add LANG_HOOKS_FREE_LANG_DATA.
826
827 2009-09-03  Diego Novillo  <dnovillo@google.com>
828
829         * c-lang.c (lang_hooks): Remove const qualifier.
830
831 2009-09-02  Loren James Rittle  <ljrittle@acm.org>
832
833         * doc/install.texi (*-*-freebsd*): Update target information.
834
835 2009-09-02  Anatoly Sokolov  <aesok@post.ru>
836
837         * hard-reg-set.h (call_fixed_regs): Remove.
838         * reginfo.c (call_fixed_regs): Remove.
839         (init_reg_sets_1): Remove initialization of call_fixed_regs.
840         (globalize_reg): Don't use call_fixed_regs.
841         * caller-save.c (init_caller_save): Use call_fixed_reg_set instead of
842         call_fixed_regs.
843
844 2009-09-01  Michael Matz  <matz@suse.de>
845
846         * expr.h (emit_storent_insn, expand_expr_real_1,
847         expand_expr_real_2): Declare.
848         * expr.c (emit_storent_insn, expand_expr_real_1,
849         expand_expr_real_2): Export.
850         (store_expr): Setting and evaluating dont_return_target is useless.
851         (expand_expr_real_1, <case GOTO_EXPR, RETURN_EXPR, SWITCH_EXPR,
852         LABEL_EXPR and ASM_EXPR>): Move to gcc_unreachable.
853         * except.c (expand_resx_expr): Rename to ...
854         (expand_resx_stmt): ... this.  Rewrite to take gimple statement.
855         * except.h (expand_resx_stmt): Declare.
856         * stmt.c: Add include gimple.h
857         (expand_asm_expr): Rename to ...
858         (expand_asm_stmt): ... this. Rewrite to take gimple statement.
859         (expand_case): Rewrite to take gimple statement.
860         * tree.h (expand_asm_stmt): Declare.
861         (expand_case): Change prototype.
862         * Makefile.in (stmt.o): Depend on gimple.h.
863         * builtins.c (expand_builtin_synchronize): Build gimple asm
864         statement, not an ASM_EXPR.
865         * cfgexpand.c (gimple_cond_pred_to_tree, set_expr_location_r,
866         gimple_to_tree, release_stmt_tree): Remove.
867         (expand_gimple_cond): Don't call gimple_cond_pred_to_tree or
868         ggc_free, but hold comparison code and operands separately.
869         Call jumpif_1 and jumpifnot_1 instead of jumpif and jumpifnot.
870         (expand_call_stmt, expand_gimple_stmt_1,
871         expand_gimple_stmt): New helpers.
872         (expand_gimple_tailcall): Don't call gimple_to_tree, expand_expr_stmt,
873         release_stmt_tree.  Call expand_gimple_stmt instead.
874         (expand_gimple_basic_block): Ditto.
875
876         * calls.c (emit_call_1): Don't look at EH regions here, make
877         fntree parameter useless.
878         (expand_call): New local rettype for TREE_TYPE(exp), use it
879         throughout.  Remove local p, use addr instead.
880         Don't look at EH regions here.
881
882 2009-09-02  Vladimir Makarov  <vmakarov@redhat.com>
883
884         * doc/invoke.texi (-fsched-pressure): Document it.
885         (-fsched-reg-pressure-heuristic): Remove it.
886
887         * reload.c (ira.h): Include.
888         (find_reloads): Add choosing reload on number of small spilled
889         classes.
890
891         * haifa-sched.c (ira.h): Include.
892         (sched_pressure_p, sched_regno_cover_class, curr_reg_pressure,
893         saved_reg_pressure, curr_reg_live, saved_reg_live,
894         region_ref_regs): New variables.
895         (sched_init_region_reg_pressure_info, mark_regno_birth_or_death,
896         initiate_reg_pressure_info, setup_ref_regs,
897         initiate_bb_reg_pressure_info, save_reg_pressure,
898         restore_reg_pressure, dying_use_p, print_curr_reg_pressure): New
899         functions.
900         (setup_insn_reg_pressure_info): New function.
901         (rank_for_schedule): Add pressure checking and insn issue time.
902         Remove comparison of insn reg weights.
903         (ready_sort): Set insn reg pressure info.
904         (update_register_pressure, setup_insn_max_reg_pressure,
905         update_reg_and_insn_max_reg_pressure,
906         sched_setup_bb_reg_pressure_info): New functions.
907         (schedule_insn): Add code for printing and updating reg pressure info.
908         (find_set_reg_weight, find_insn_reg_weight): Remove.
909         (ok_for_early_queue_removal): Do nothing if pressure_only_p.
910         (debug_ready_list): Print reg pressure info.
911         (schedule_block): Ditto.  Check insn issue time.
912         (sched_init): Set up sched_pressure_p.  Allocate and set up some
913         reg pressure related info.
914         (sched_finish): Free some reg pressure related info.
915         (fix_tick_ready): Make insn always ready if pressure_p.
916         (init_h_i_d): Don't call find_insn_reg_weight.
917         (haifa_finish_h_i_d): Free insn reg pressure info.
918
919         * ira-int.h (ira_hard_regno_cover_class, ira_reg_class_nregs,
920         ira_memory_move_cost, ira_class_hard_regs,
921         ira_class_hard_regs_num, ira_no_alloc_regs,
922         ira_available_class_regs, ira_reg_class_cover_size,
923         ira_reg_class_cover, ira_class_translate): Move to ira.h.
924
925         * ira-lives.c (single_reg_class): Check mode to find how many
926         registers are necessary for operand.
927         (ira_implicitly_set_insn_hard_regs): New.
928
929         * common.opt (fsched-pressure): New options.
930         (fsched-reg-pressure-heuristic): Remove.
931
932         * ira.c (setup_eliminable_regset): Rename to
933         ira_setup_eliminable_regset.  Make it external.
934         (expand_reg_info): Pass cover class to setup_reg_classes.
935         (ira): Call resize_reg_info instead of allocate_reg_info.
936
937         * sched-deps.c: Include ira.h.
938         (implicit_reg_pending_clobbers, implicit_reg_pending_uses): New.
939         (create_insn_reg_use, create_insn_reg_set, setup_insn_reg_uses,
940         reg_pressure_info, insn_use_p, mark_insn_pseudo_birth,
941         mark_insn_hard_regno_birth, mark_insn_reg_birth,
942         mark_pseudo_death, mark_hard_regno_death, mark_reg_death,
943         mark_insn_reg_store, mark_insn_reg_clobber,
944         setup_insn_reg_pressure_info): New.
945         (sched_analyze_1): Update implicit_reg_pending_uses.
946         (sched_analyze_insn): Find implicit sets, uses, clobbers of regs.
947         Use them to create dependencies.  Set insn reg uses and pressure
948         info.  Process reg_pending_uses in one place.
949         (free_deps): Free implicit sets.
950         (remove_from_deps): Remove implicit sets if necessary.  Check
951         implicit sets when clearing reg_last_in_use.
952         (init_deps_global): Clear implicit_reg_pending_clobbers and
953         implicit_reg_pending_uses.
954
955         * ira.h (ira_hard_regno_cover_class, ira_reg_class_nregs,
956         ira_memory_move_cost, ira_class_hard_regs,
957         ira_class_hard_regs_num, ira_no_alloc_regs,
958         ira_available_class_regs, ira_reg_class_cover_size,
959         ira_reg_class_cover, ira_class_translate): Move from ira-int.h.
960         (ira_setup_eliminable_regset, ira_set_pseudo_classes,
961         ira_implicitly_set_insn_hard_regs): New prototypes.
962
963         * ira-costs.c (pseudo_classes_defined_p, allocno_p,
964         cost_elements_num): New variables.
965         (allocno_costs, total_costs): Rename to costs and
966         total_allocno_costs.
967         (COSTS_OF_ALLOCNO): Rename to COSTS.
968         (allocno_pref): Rename to pref.
969         (allocno_pref_buffer): Rename to pref_buffer.
970         (common_classes): Rename to regno_cover_class.
971         (COST_INDEX): New.
972         (record_reg_classes): Set allocno attributes only if allocno_p.
973         (record_address_regs): Ditto.  Use COST_INDEX instead of ALLOCNO_NUM.
974         (scan_one_insn): Use COST_INDEX and COSTS instead of ALLOCNO_NUM
975         and COSTS_OF_ALLOCNO.
976         (print_costs): Rename to print_allocno_costs.
977         (print_pseudo_costs): New.
978         (process_bb_node_for_costs): Split into 2 functions with new
979         function process_bb_for_costs.  Pass BB to process_bb_for_costs.
980         (find_allocno_class_costs): Rename to find_costs_and_classes.  Add
981         new parameter dump_file.  Use cost_elements_num instead of
982         ira_allocnos_num.  Make one iteration if preferred classes were
983         already calculated for scheduler.  Make 2 versions of code
984         depending on allocno_p.
985         (setup_allocno_cover_class_and_costs): Check allocno_p.  Use
986         regno_cover_class and COSTS instead of common_classes and
987         COSTS_OF_ALLOCNO.
988         (init_costs, finish_costs): New.
989         (ira_costs): Set up allocno_p and cost_elements_num.  Call
990         init_costs and finish_costs.
991         (ira_set_pseudo_classes): New.
992
993         * rtl.h (allocate_reg_info): Remove.
994         (resize_reg_info): Change return type.
995         (reg_cover_class): New.
996         (setup_reg_classes): Add new parameter.
997
998         * sched-int.h (struct deps_reg): New member implicit_sets.
999         (sched_pressure_p, sched_regno_cover_class): New external definitions.
1000         (INCREASE_BITS): New macro.
1001         (struct reg_pressure_data, struct reg_use_data): New.
1002         (struct _haifa_insn_data): Remove reg_weight.  Add members
1003         reg_pressure, reg_use_list, reg_set_list, and
1004         reg_pressure_excess_cost_change.
1005         (struct deps): New member implicit_sets.
1006         (pressure_p): New variable.
1007         (COVER_CLASS_BITS, INCREASE_BITS): New macros.
1008         (struct reg_pressure_data, struct reg_use_data): New.
1009         (INSN_REG_WEIGHT): Remove.
1010         (INSN_REG_PRESSURE, INSN_MAX_REG_PRESSURE, INSN_REG_USE_LIST,
1011         INSN_REG_SET_LIST, INSN_REG_PRESSURE_EXCESS_COST_CHANGE): New macros.
1012         (sched_init_region_reg_pressure_info,
1013         sched_setup_bb_reg_pressure_info): New prototypes.
1014
1015         * reginfo.c (struct reg_pref): New member coverclass.
1016         (reg_cover_class): New function.
1017         (reginfo_init, pass_reginfo_init): Move after free_reg_info.
1018         (reg_info_size): New variable.
1019         (allocate_reg_info): Make static.  Setup reg_info_size.
1020         (resize_reg_info): Use reg_info_size.  Return flag of resizing.
1021         (setup_reg_classes): Add a new parameter.  Setup cover class too.
1022
1023         * Makefile.in (reload.o, haifa-sched.o, sched-deps.o): Add ira.h to
1024         the dependencies.
1025
1026         * sched-rgn.c (deps_join): Set up implicit_sets.
1027         (schedule_region): Set up region and basic blocks pressure
1028         relative info.
1029
1030         * passes.c (init_optimization_passes): Move
1031         pass_subregs_of_mode_init before pass_sched.
1032
1033 2009-09-02  Martin Jambor  <mjambor@suse.cz>
1034
1035         * tree-sra.c (struct access): New field grp_hint.
1036         (dump_access): Dump grp_hint.
1037         (sort_and_splice_var_accesses): Set grp_hint if a group is read
1038         multiple times.
1039         (analyze_access_subtree): Only scalarize accesses with grp_hint set or
1040         those which have been specifically read and somehow written to.
1041         (propagate_subacesses_accross_link): Set grp_hint of right child and
1042         also possibly of the left child.
1043
1044 2009-09-02  Jakub Jelinek  <jakub@redhat.com>
1045
1046         * tree-object-size.c (addr_object_size): Always use object_size_type
1047         0 or 2 when determining the pointer pointed object size.
1048
1049 2009-09-02  Richard Guenther  <rguenther@suse.de>
1050
1051         Revert
1052         2009-08-31  Richard Guenther  <rguenther@suse.de>
1053
1054         * builtins.c (fold_builtin_memory_op): Use the alias oracle
1055         to query if the memory regions for memmove overlap.
1056         * tree-ssa-alias.c (ptr_deref_may_alias_decl_p): Relax the
1057         asserts on pointers, instead deal with odd trees.
1058         (ptr_derefs_may_alias_p): Likewise.
1059         (refs_may_alias_p_1): Constructor bases also never alias.
1060
1061 2009-08-01  Christian Bruel  <christian.bruel@st.com>
1062
1063         Revert:
1064         2009-07-31  Christian Bruel  <christian.bruel@st.com>
1065         * gcc/config.gcc (sh*-*-elf): test with_libgloss.
1066
1067 2009-09-01  Alexandre Oliva  <aoliva@redhat.com>
1068
1069         * doc/invoke.texi (-fvar-tracking-assignments): New.
1070         (-fvar-tracking-assignments-toggle): New.
1071         (-fdump-final-insns=file): Mark filename as optional.
1072         (--param min-nondebug-insn-uid): New.
1073         (-gdwarf-@{version}): Mention version 4.
1074         * opts.c (common_handle_option): Accept it.
1075         * tree-vrp.c (find_assert_locations_1): Skip debug stmts.
1076         * regrename.c (regrename_optimize): Drop last.  Don't count debug
1077         insns as uses.  Don't reject change because of debug insn.
1078         (do_replace): Reject DEBUG_INSN as chain starter.  Take base_regno
1079         from the chain starter, and check for inexact matches in DEBUG_INSNS.
1080         (scan_rtx_reg): Accept inexact matches in DEBUG_INSNs.
1081         (build_def_use): Simplify and fix the marking of DEBUG_INSNs.
1082         * sched-ebb.c (schedule_ebbs): Skip boundary debug insns.
1083         * fwprop.c (forward_propagate_and_simplify): ...into debug insns.
1084         * doc/gimple.texi (is_gimple_debug): New.
1085         (gimple_debug_bind_p): New.
1086         (is_gimple_call, gimple_assign_cast_p): End sentence with period.
1087         * doc/install.texi (bootstrap-debug): More details.
1088         (bootstrap-debug-big, bootstrap-debug-lean): Document.
1089         (bootstrap-debug-lib): More details.
1090         (bootstrap-debug-ckovw): Update.
1091         (bootstrap-time): New.
1092         * tree-into-ssa.c (mark_def_sites): Skip debug stmts.
1093         (insert_phi_nodes_for): Insert debug stmts.
1094         (rewrite_stmt): Take iterator.  Insert debug stmts.
1095         (rewrite_enter_block): Adjust.
1096         (maybe_replace_use_in_debug_stmt): New.
1097         (rewrite_update_stmt): Use it.
1098         (mark_use_interesting): Return early for debug stmts.
1099         * tree-ssa-loop-im.c (rewrite_bittest): Propagate DEFs into debug
1100         stmts before replacing stmt.
1101         (move_computations_stmt): Likewise.
1102         * ira-conflicts.c (add_copies): Skip debug insns.
1103         * regstat.c (regstat_init_n_sets_and_refs): Discount debug insns.
1104         (regstat_bb_compute_ri): Skip debug insns.
1105         * tree-ssa-threadupdate.c (redirection_block_p): Skip debug stmts.
1106         * tree-ssa-loop-manip.c (find_uses_to_rename_stmt,
1107         check_loop_closed_ssa_stmt): Skip debug stmts.
1108         * tree-tailcall.c (find_tail_calls): Likewise.
1109         * tree-ssa-loop-ch.c (should_duplicate_loop_header_p): Likewise.
1110         * tree.h (MAY_HAVE_DEBUG_STMTS): New.
1111         (build_var_debug_value_stat): Declare.
1112         (build_var_debug_value): Define.
1113         (target_for_debug_bind): Declare.
1114         * reload.c (find_equiv_reg): Skip debug insns.
1115         * rtlanal.c (reg_used_between_p): Skip debug insns.
1116         (side_effects_p): Likewise.
1117         (canonicalize_condition): Likewise.
1118         * ddg.c (create_ddg_dep_from_intra_loop_link): Check that non-debug
1119         insns never depend on debug insns.
1120         (create_ddg_dep_no_link): Likewise.
1121         (add_cross_iteration_register_deps): Use ANTI_DEP for debug insns.
1122         Don't add inter-loop dependencies for debug insns.
1123         (build_intra_loop_deps): Likewise.
1124         (create_ddg): Count debug insns.
1125         * ddg.h (struct ddg::num_debug): New.
1126         (num_backargs): Pair up with previous int field.
1127         * diagnostic.c (diagnostic_report_diagnostic): Skip notes on
1128         -fcompare-debug-second.
1129         * final.c (get_attr_length_1): Skip debug insns.
1130         (rest_of_clean-state): Don't dump CFA_RESTORE_STATE.
1131         * gcc.c (invoke_as): Call compare-debug-dump-opt.
1132         (driver_self_specs): Map -fdump-final-insns to
1133         -fdump-final-insns=..
1134         (get_local_tick): New.
1135         (compare_debug_dump_opt_spec_function): Test for . argument and
1136         compute output name.  Compute temp output spec without flag name.
1137         Compute -frandom-seed.
1138         (OPT): Undef after use.
1139         * cfgloopanal.c (num_loop_insns): Skip debug insns.
1140         (average_num_loop_insns): Likewise.
1141         * params.h (MIN_NONDEBUG_INSN_UID): New.
1142         * gimple.def (GIMPLE_DEBUG): New.
1143         * ipa-reference.c (scan_stmt_for_static_refs): Skip debug stmts.
1144         * auto-inc-dec.c (merge_in_block): Skip debug insns.
1145         (merge_in_block): Fix whitespace.
1146         * toplev.c (flag_var_tracking): Update comment.
1147         (flag_var_tracking_assignments): New.
1148         (flag_var_tracking_assignments_toggle): New.
1149         (process_options): Don't open final insns dump file if we're not
1150         going to write to it.  Compute defaults for var_tracking.
1151         * df-scan.c (df_insn_rescan_debug_internal): New.
1152         (df_uses_record): Handle debug insns.
1153         * haifa-sched.c (ready): Initialize n_debug.
1154         (contributes_to_priority): Skip debug insns.
1155         (dep_list_size): New.
1156         (priority): Use it.
1157         (rank_for_schedule): Likewise.  Schedule debug insns as soon as
1158         they're ready.  Disregard previous debug insns to make decisions.
1159         (queue_insn): Never queue debug insns.
1160         (ready_add, ready_remove_first, ready_remove): Count debug insns.
1161         (schedule_insn): Don't reject debug insns because of issue rate.
1162         (get_ebb_head_tail, no_real_insns_p): Skip boundary debug insns.
1163         (queue_to_ready): Skip and discount debug insns.
1164         (choose_ready): Let debug insns through.
1165         (schedule_block): Check boundary debug insns.  Discount debug
1166         insns, schedule them early.  Adjust whitespace.
1167         (set_priorities): Check for boundary debug insns.
1168         (add_jump_dependencies): Use dep_list_size.
1169         (prev_non_location_insn): New.
1170         (check_cfg): Use it.
1171         * tree-ssa-loop-ivopts.c (find-interesting_users): Skip debug
1172         stmts.
1173         (remove_unused_ivs): Reset debug stmts.
1174         * modulo-sched.c (const_iteration_count): Skip debug insns.
1175         (res_MII): Discount debug insns.
1176         (loop_single_full_bb_p): Skip debug insns.
1177         (sms_schedule): Likewise.
1178         (sms_schedule_by_order): Likewise.
1179         (ps_has_conflicts): Likewise.
1180         * caller-save.c (refmarker_fn): New.
1181         (save_call_clobbered_regs): Replace regs with saved mem in
1182         debug insns.
1183         (mark_referenced_regs): Take pointer, mark and arg.  Adjust.
1184         Call refmarker_fn mark for hardregnos.
1185         (mark_reg_as_referenced): New.
1186         (replace_reg_with_saved_mem): New.
1187         * ipa-pure-const.c (check_stmt): Skip debug stmts.
1188         * cse.c (cse_insn): Canonicalize debug insns.  Skip them when
1189         searching back.
1190         (cse_extended_basic_block): Skip debug insns.
1191         (count_reg_usage): Likewise.
1192         (is_dead_reg): New, split out of...
1193         (set_live_p): ... here.
1194         (insn_live_p): Use it for debug insns.
1195         * tree-stdarg.c (check_all_va_list_escapes): Skip debug stmts.
1196         (execute_optimize_stdarg): Likewise.
1197         * tree-ssa-dom.c (propagate_rhs_into_lhs): Likewise.
1198         * tree-ssa-propagate.c (substitute_and_fold): Don't regard
1199         changes in debug stmts as changes.
1200         * sel-sched.c (moving_insn_creates_bookkeeping_block_p): New.
1201         (moveup_expr): Don't move across debug insns.  Don't move
1202         debug insn if it would create a bookkeeping block.
1203         (moveup_expr_cached): Don't use cache for debug insns that
1204         are heads of blocks.
1205         (compute_av_set_inside_bb): Skip debug insns.
1206         (sel_rank_for_schedule): Schedule debug insns first.  Remove
1207         dead code.
1208         (block_valid_for_bookkeeping_p); Support lax searches.
1209         (create_block_for_bookkeeping): Adjust block numbers when
1210         encountering debug-only blocks.
1211         (find_place_for_bookkeeping): Deal with debug-only blocks.
1212         (generate_bookkeeping_insn): Accept no place to insert.
1213         (remove_temp_moveop_nops): New argument full_tidying.
1214         (prepare_place_to_insert): Deal with debug insns.
1215         (advance_state_on_fence): Debug insns don't start cycles.
1216         (update_boundaries): Take fence as argument.  Deal with
1217         debug insns.
1218         (schedule_expr_on_boundary): No full_tidying on debug insns.
1219         (fill_insns): Deal with debug insns.
1220         (track_scheduled_insns_and_blocks): Don't count debug insns.
1221         (need_nop_to_preserve_insn_bb): New, split out of...
1222         (remove_insn_from_stream): ... this.
1223         (fur_orig_expr_not_found): Skip debug insns.
1224         * rtl.def (VALUE): Move up.
1225         (DEBUG_INSN): New.
1226         * tree-ssa-sink.c (all_immediate_uses_same_place): Skip debug stmts.
1227         (nearest_common_dominator_of_uses): Take debug_stmts argument.
1228         Set it if debug stmts are found.
1229         (statement_sink_location): Skip debug stmts.  Propagate
1230         moving defs into debug stmts.
1231         * ifcvt.c (first_active_insn): Skip debug insns.
1232         (last_active_insns): Likewise.
1233         (cond_exec_process_insns): Likewise.
1234         (noce_process_if_block): Likewise.
1235         (check_cond_move_block): Likewise.
1236         (cond_move_convert_if_block): Likewise.
1237         (block_jumps_and_fallthru_p): Likewise.
1238         (dead_or_predicable): Likewise.
1239         * dwarf2out.c (debug_str_hash_forced): New.
1240         (find_AT_string): Add comment.
1241         (gen_label_for_indirect_string): New.
1242         (get_debug_string_label): New.
1243         (AT_string_form): Use it.
1244         (mem_loc_descriptor): Handle non-TLS symbols.  Handle MINUS , DIV,
1245         MOD, AND, IOR, XOR, NOT, ABS, NEG, and CONST_STRING.  Accept but
1246         discard COMPARE, IF_THEN_ELSE, ROTATE, ROTATERT, TRUNCATE and
1247         several operations that cannot be represented with DWARF opcodes.
1248         (loc_descriptor): Ignore SIGN_EXTEND and ZERO_EXTEND.  Require
1249         dwarf_version 4 for DW_OP_implicit_value and DW_OP_stack_value.
1250         (dwarf2out_var_location): Take during-call mark into account.
1251         (output_indirect_string): Update comment.  Output if there are
1252         label and references.
1253         (prune_indirect_string): New.
1254         (prune_unused_types): Call it if debug_str_hash_forced.
1255         More in dwarf2out.c, from Jakub Jelinek <jakub@redhat.com>:
1256         (dw_long_long_const): Remove.
1257         (struct dw_val_struct): Change val_long_long type to rtx.
1258         (print_die, attr_checksum, same_dw_val_p, loc_descriptor): Adjust for
1259         val_long_long change to CONST_DOUBLE rtx from a long hi/lo pair.
1260         (output_die): Likewise.  Use HOST_BITS_PER_WIDE_INT size of each
1261         component instead of HOST_BITS_PER_LONG.
1262         (output_loc_operands): Likewise.  For const8* assert
1263         HOST_BITS_PER_WIDE_INT rather than HOST_BITS_PER_LONG is >= 64.
1264         (output_loc_operands_raw): For const8* assert HOST_BITS_PER_WIDE_INT
1265         rather than HOST_BITS_PER_LONG is >= 64.
1266         (add_AT_long_long): Remove val_hi and val_lo arguments, add
1267         val_const_double.
1268         (size_of_die): Use HOST_BITS_PER_WIDE_INT size multiplier instead of
1269         HOST_BITS_PER_LONG for dw_val_class_long_long.
1270         (add_const_value_attribute): Adjust add_AT_long_long caller.  Don't
1271         handle TLS SYMBOL_REFs.  If CONST wraps a constant, tail recurse.
1272         (dwarf_stack_op_name): Handle DW_OP_implicit_value and
1273         DW_OP_stack_value.
1274         (size_of_loc_descr, output_loc_operands, output_loc_operands_raw):
1275         Handle DW_OP_implicit_value.
1276         (extract_int): Move prototype earlier.
1277         (mem_loc_descriptor): For SUBREG punt if inner
1278         mode size is wider than DWARF2_ADDR_SIZE.  Handle SIGN_EXTEND
1279         and ZERO_EXTEND by DW_OP_shl and DW_OP_shr{a,}.  Handle
1280         EQ, NE, GT, GE, LT, LE, GTU, GEU, LTU, LEU, SMIN, SMAX, UMIN,
1281         UMAX, SIGN_EXTRACT, ZERO_EXTRACT.
1282         (loc_descriptor): Compare mode size with DWARF2_ADDR_SIZE
1283         instead of Pmode size.
1284         (loc_descriptor): Add MODE argument.  Handle CONST_INT, CONST_DOUBLE,
1285         CONST_VECTOR, CONST, LABEL_REF and SYMBOL_REF if mode != VOIDmode,
1286         attempt to handle other expressions.  Don't handle TLS SYMBOL_REFs.
1287         (concat_loc_descriptor, concatn_loc_descriptor,
1288         loc_descriptor_from_tree_1): Adjust loc_descriptor callers.
1289         (add_location_or_const_value_attribute): Likewise.  For single
1290         location loc_lists attempt to use add_const_value_attribute
1291         for constant decls.  Add DW_AT_const_value even if
1292         NOTE_VAR_LOCATION is VAR_LOCATION with CONSTANT_P or CONST_STRING
1293         in its expression.
1294         * cfgbuild.c (inside_basic_block_p): Handle debug insns.
1295         (control_flow_insn_p): Likewise.
1296         * tree-parloops.c (eliminate_local_variables_stmt): Handle debug stmt.
1297         (separate_decls_in_region_debug_bind): New.
1298         (separate_decls_in_region): Process debug bind stmts afterwards.
1299         * recog.c (verify_changes): Handle debug insns.
1300         (extract_insn): Likewise.
1301         (peephole2_optimize): Skip debug insns.
1302         * dse.c (scan_insn): Skip debug insns.
1303         * sel-sched-ir.c (return_nop_to_pool): Take full_tidying argument.
1304         Pass it on.
1305         (setup_id_for_insn): Handle debug insns.
1306         (maybe_tidy_empty_bb): Adjust whitespace.
1307         (tidy_control_flow): Skip debug insns.
1308         (sel_remove_insn): Adjust for debug insns.
1309         (sel_estimate_number_of_insns): Skip debug insns.
1310         (create_insn_rtx_from_pattern): Handle debug insns.
1311         (create_copy_of_insn_rtx): Likewise.
1312         * sel-sched-.h (sel_bb_end): Declare.
1313         (sel_bb_empty_or_nop_p): New.
1314         (get_all_loop_exits): Use it.
1315         (_eligible_successor_edge_p): Likewise.
1316         (return_nop_to_pool): Adjust.
1317         * tree-eh.c (tre_empty_eh_handler_p): Skip debug stmts.
1318         * ira-lives.c (process_bb_node_lives): Skip debug insns.
1319         * gimple-pretty-print.c (dump_gimple_debug): New.
1320         (dump_gimple_stmt): Use it.
1321         (dump_bb_header): Skip gimple debug stmts.
1322         * regmove.c (optimize_reg_copy_1): Discount debug insns.
1323         (fixup_match_2): Likewise.
1324         (regmove_backward_pass): Likewise.  Simplify combined
1325         replacement.  Handle debug insns.
1326         * function.c (instantiate_virtual_regs): Handle debug insns.
1327         * function.h (struct emit_status): Add x_cur_debug_insn_uid.
1328         * print-rtl.h: Include cselib.h.
1329         (print_rtx): Print VALUEs.  Split out and recurse for VAR_LOCATIONs.
1330         * df.h (df_inns_rescan_debug_internal): Declare.
1331         * gcse.c (alloc_hash_table): Estimate n_insns.
1332         (cprop_insn): Don't regard debug insns as changes.
1333         (bypass_conditional_jumps): Skip debug insns.
1334         (one_pre_gcse_pass): Adjust.
1335         (one_code_hoisting_pass): Likewise.
1336         (compute_ld_motion_mems): Skip debug insns.
1337         (one_cprop_pass): Adjust.
1338         * tree-if-conv.c (tree_if_convert_stmt): Reset debug stmts.
1339         (if_convertible_stmt_p): Handle debug stmts.
1340         * init-regs.c (initialize_uninitialized_regs): Skip debug insns.
1341         * tree-vect-loop.c (vect_is_simple_reduction): Skip debug stmts.
1342         * ira-build.c (create_bb_allocnos): Skip debug insns.
1343         * tree-flow-inline.h (has_zero_uses): Discount debug stmts.
1344         (has_single_use): Likewise.
1345         (single_imm_use): Likewise.
1346         (num_imm_uses): Likewise.
1347         * tree-ssa-phiopt.c (empty_block_p): Skip debug stmts.
1348         * tree-ssa-coalesce.c (build_ssa_conflict_graph): Skip debug stmts.
1349         (create_outofssa_var_map): Likewise.
1350         * lower-subreg.c (adjust_decomposed_uses): New.
1351         (resolve_debug): New.
1352         (decompose_multiword_subregs): Use it.
1353         * tree-dfa.c (find_referenced_vars): Skip debug stmts.
1354         * emit-rtl.c: Include params.h.
1355         (cur_debug_insn_uid): Define.
1356         (set_new_first_and_last_insn): Set cur_debug_insn_uid too.
1357         (copy_rtx_if_shared_1): Handle debug insns.
1358         (reset_used_flags): Likewise.
1359         (set_used_flags): LIkewise.
1360         (get_max_insn_count): New.
1361         (next_nondebug_insn): New.
1362         (prev_nondebug_insn): New.
1363         (make_debug_insn_raw): New.
1364         (emit_insn_before_noloc): Handle debug insns.
1365         (emit_jump_insn_before_noloc): Likewise.
1366         (emit_call_insn_before_noloc): Likewise.
1367         (emit_debug_insn_before_noloc): New.
1368         (emit_insn_after_noloc): Handle debug insns.
1369         (emit_jump_insn_after_noloc): Likewise.
1370         (emit_call_insn_after_noloc): Likewise.
1371         (emit_debug_insn_after_noloc): Likewise.
1372         (emit_insn_after): Take loc from earlier non-debug insn.
1373         (emit_jump_insn_after): Likewise.
1374         (emit_call_insn_after): Likewise.
1375         (emit_debug_insn_after_setloc): New.
1376         (emit_debug_insn_after): New.
1377         (emit_insn_before): Take loc from later non-debug insn.
1378         (emit_jump_insn_before): Likewise.
1379         (emit_call_insn_before): Likewise.
1380         (emit_debug_insn_before_setloc): New.
1381         (emit_debug_insn_before): New.
1382         (emit_insn): Handle debug insns.
1383         (emit_debug_insn): New.
1384         (emit_jump_insn): Handle debug insns.
1385         (emit_call_insn): Likewise.
1386         (emit): Likewise.
1387         (init_emit): Take min-nondebug-insn-uid into account.
1388         Initialize cur_debug_insn_uid.
1389         (emit_copy_of_insn_after): Handle debug insns.
1390         * cfgexpand.c (gimple_assign_rhs_to_tree): Do not overwrite
1391         location of single rhs in place.
1392         (maybe_dump_rtl_for_gimple_stmt): Dump lineno.
1393         (floor_sdiv_adjust): New.
1394         (cell_sdiv_adjust): New.
1395         (cell_udiv_adjust): New.
1396         (round_sdiv_adjust): New.
1397         (round_udiv_adjust): New.
1398         (wrap_constant): Moved from cselib.
1399         (unwrap_constant): New.
1400         (expand_debug_expr): New.
1401         (expand_debug_locations): New.
1402         (expand_gimple_basic_block): Drop hiding redeclaration.  Expand
1403         debug bind stmts.
1404         (gimple_expand_cfg): Expand debug locations.
1405         * cselib.c: Include tree-pass.h.
1406         (struct expand_value_data): New.
1407         (cselib_record_sets_hook): New.
1408         (PRESERVED_VALUE_P, LONG_TERM_PRESERVED_VALUE_P): New.
1409         (cselib_clear_table): Move, and implemnet in terms of...
1410         (cselib_reset_table_with_next_value): ... this.
1411         (cselib_get_next_unknown_value): New.
1412         (discard_useless_locs): Don't discard preserved values.
1413         (cselib_preserve_value): New.
1414         (cselib_preserved_value_p): New.
1415         (cselib_preserve_definitely): New.
1416         (cselib_clear_preserve): New.
1417         (cselib_preserve_only_values): New.
1418         (new_cselib_val): Take rtx argument.  Dump it in details.
1419         (cselib_lookup_mem): Adjust.
1420         (expand_loc): Take regs_active in struct.  Adjust.  Silence
1421         dumps unless details are requested.
1422         (cselib_expand_value_rtx_cb): New.
1423         (cselib_expand_value_rtx): Rename and reimplment in terms of...
1424         (cselib_expand_value_rtx_1): ... this.  Adjust.  Silence dumps
1425         without details.  Copy more subregs.  Try to resolve values
1426         using a callback.  Wrap constants.
1427         (cselib_subst_to_values): Adjust.
1428         (cselib_log_lookup): New.
1429         (cselib_lookup): Call it.
1430         (cselib_invalidate_regno): Don't count preserved values as useless.
1431         (cselib_invalidate_mem): Likewise.
1432         (cselib_record_set): Likewise.
1433         (struct set): Renamed to cselib_set, moved to cselib.h.
1434         (cselib_record_sets): Adjust.  Call hook.
1435         (cselib_process_insn): Reset table when it would be cleared.
1436         (dump_cselib_val): New.
1437         (dump_cselib_table): New.
1438         * tree-cfgcleanup.c (tree_forwarded_block_p): Skip debug stmts.
1439         (remove_forwarder_block): Support moving debug stmts.
1440         * cselib.h (cselib_record_sets_hook): Declare.
1441         (cselib_expand_callback): New type.
1442         (cselib_expand_value_rtx_cb): Declare.
1443         (cselib_reset_table_with_next_value): Declare.
1444         (cselib_get_next_unknown_value): Declare.
1445         (cselib_preserve_value): Declare.
1446         (cselib_preserved_value_p): Declare.
1447         (cselib_preserve_only_values): Declare.
1448         (dump_cselib_table): Declare.
1449         * cfgcleanup.c (flow_find_cross_jump): Skip debug insns.
1450         (try_crossjump_to_edge): Likewise.
1451         (delete_unreachable_blocks): Remove dominant GIMPLE blocks after
1452         dominated blocks when debug stmts are present.
1453         * simplify-rtx.c (delegitimize_mem_from_attrs): New.
1454         * tree-ssa-live.c (remove_unused_locals): Skip debug stmts.
1455         (set_var_live_on_entry): Likewise.
1456         * loop-invariant.c (find_invariants_bb): Skip debug insns.
1457         * cfglayout.c (curr_location, last_location): Make static.
1458         (set_curr_insn_source_location): Don't avoid bouncing.
1459         (get_curr_insn_source_location): New.
1460         (get_curr_insn_block): New.
1461         (duplicate_insn_chain): Handle debug insns.
1462         * tree-ssa-forwprop.c (forward_propagate_addr_expr): Propagate
1463         into debug stmts.
1464         * common.opt (fcompare-debug): Move to sort order.
1465         (fdump-unnumbered-links): Likewise.
1466         (fvar-tracking-assignments): New.
1467         (fvar-tracking-assignments-toggle): New.
1468         * tree-ssa-dce.c (mark_stmt_necessary): Don't mark blocks
1469         because of debug stmts.
1470         (mark_stmt_if_obviously_necessary): Mark debug stmts.
1471         (eliminate_unnecessary_stmts): Walk dominated blocks before
1472         dominators.
1473         * tree-ssa-ter.c (find_replaceable_in_bb): Skip debug stmts.
1474         * ira.c (memref_used_between_p): Skip debug insns.
1475         (update_equiv_regs): Likewise.
1476         * sched-deps.c (sd_lists_size): Accept empty list.
1477         (sd_init_insn): Mark debug insns.
1478         (sd_finish_insn): Unmark them.
1479         (sd_add_dep): Reject non-debug deps on debug insns.
1480         (fixup_sched_groups): Give debug insns group treatment.
1481         Skip debug insns.
1482         (sched_analyze_reg): Don't mark debug insns for sched before call.
1483         (sched_analyze_2): Handle debug insns.
1484         (sched_analyze_insn): Compute next non-debug insn.  Handle debug
1485         insns.
1486         (deps_analyze_insn): Handle debug insns.
1487         (deps_start_bb): Skip debug insns.
1488         (init_deps): Initialize last_debug_insn.
1489         * tree-ssa.c (target_for_debug_bind): New.
1490         (find_released_ssa_name): New.
1491         (propagate_var_def_into_debug_stmts): New.
1492         (propagate_defs_into_debug_stmts): New.
1493         (verify_ssa): Skip debug bind stmts without values.
1494         (warn_uninialized_vars): Skip debug stmts.
1495         * target-def.h (TARGET_DELEGITIMIZE_ADDRESS): Set default.
1496         * rtl.c (rtx_equal_p_cb): Handle VALUEs.
1497         (rtx_equal_p): Likewise.
1498         * ira-costs.c (scan_one_insn): Skip debug insns.
1499         (process_bb_node_for_hard_reg_moves): Likewise.
1500         * rtl.h (DEBUG_INSN_P): New.
1501         (NONDEBUG_INSN_P): New.
1502         (MAY_HAVE_DEBUG_INSNS): New.
1503         (INSN_P): Accept debug insns.
1504         (RTX_FRAME_RELATED_P): Likewise.
1505         (INSN_DELETED_P): Likewise
1506         (PAT_VAR_LOCATION_DECL): New.
1507         (PAT_VAR_LOCATION_LOC): New.
1508         (PAT_VAR_OCATION_STATUS): New.
1509         (NOTE_VAR_LOCATION_DECL): Reimplement.
1510         (NOTE_VAR_LOCATION_LOC): Likewise.
1511         (NOTE_VAR_LOCATION_STATUS): Likewise.
1512         (INSN_VAR_LOCATION): New.
1513         (INSN_VAR_LOCATION_DECL): New.
1514         (INSN_VAR_LOCATION_LOC): New.
1515         (INSN_VAR_LOCATION_STATUS): New.
1516         (gen_rtx_UNKNOWN_VAR_LOC): New.
1517         (VAR_LOC_UNKNOWN_P): New.
1518         (NOTE_DURING_CALL_P): New.
1519         (SCHED_GROUP_P): Accept debug insns.
1520         (emit_debug_insn_before): Declare.
1521         (emit_debug_insn_before_noloc): Declare.
1522         (emit_debug_insn_beore_setloc): Declare.
1523         (emit_debug_insn_after): Declare.
1524         (emit_debug_insn_after_noloc): Declare.
1525         (emit_debug_insn_after_setloc): Declare.
1526         (emit_debug_insn): Declare.
1527         (make_debug_insn_raw): Declare.
1528         (prev_nondebug_insn): Declare.
1529         (next_nondebug_insn): Declare.
1530         (delegitimize_mem_from_attrs): Declare.
1531         (get_max_insn_count): Declare.
1532         (wrap_constant): Declare.
1533         (unwrap_constant): Declare.
1534         (get_curr_insn_source_location): Declare.
1535         (get_curr_insn_block): Declare.
1536         * tree-inline.c (insert_debug_decl_map): New.
1537         (processing_debug_stmt): New.
1538         (remap_decl): Don't create new mappings in debug stmts.
1539         (remap_gimple_op_r): Don't add references in debug stmts.
1540         (copy_tree_body_r): Likewise.
1541         (remap_gimple_stmt): Handle debug bind stmts.
1542         (copy_bb): Skip debug stmts.
1543         (copy_edges_for_bb): Likewise.
1544         (copy_debug_stmt): New.
1545         (copy_debug_stmts): New.
1546         (copy_body): Copy debug stmts at the end.
1547         (insert_init_debug_bind): New.
1548         (insert_init_stmt): Take id.  Skip and emit debug stmts.
1549         (setup_one_parameter): Remap variable earlier, register debug mapping.
1550         (estimate_num_insns): Skip debug stmts.
1551         (expand_call_inline): Preserve debug_map.
1552         (optimize_inline_calls): Check for no debug_stmts left-overs.
1553         (unsave_expr_now): Preserve debug_map.
1554         (copy_gimple_seq_and_replace_locals): Likewise.
1555         (tree_function_versioning): Check for no debug_stmts left-overs.
1556         Init and destroy debug_map as needed.  Split edges unconditionally.
1557         (build_duplicate_type): Init and destroy debug_map as needed.
1558         * tree-inline.h: Include gimple.h instead of pointer-set.h.
1559         (struct copy_body_data): Add debug_stmts and debug_map.
1560         * sched-int.h (struct ready_list): Add n_debug.
1561         (struct deps): Add last_debug_insn.
1562         (DEBUG_INSN_SCHED_P): New.
1563         (BOUNDARY_DEBUG_INSN_P): New.
1564         (SCHEDULE_DEBUG_INSN_P): New.
1565         (sd_iterator_cond): Accept empty list.
1566         * combine.c (create_log_links): Skip debug insns.
1567         (combine_instructions): Likewise.
1568         (cleanup_auto_inc_dec): New.  From Jakub Jelinek: Make sure the
1569         return value is always unshared.
1570         (struct rtx_subst_pair): New.
1571         (auto_adjust_pair): New.
1572         (propagate_for_debug_subst): New.
1573         (propagate_for_debug): New.
1574         (try_combine): Skip debug insns.  Propagate removed defs into
1575         debug insns.
1576         (next_nonnote_nondebug_insn): New.
1577         (distribute_notes): Use it.  Skip debug insns.
1578         (distribute_links): Skip debug insns.
1579         * tree-outof-ssa.c (set_location_for_edge): Likewise.
1580         * resource.c (mark_target_live_regs): Likewise.
1581         * var-tracking.c: Include cselib.h and target.h.
1582         (enum micro_operation_type): Add MO_VAL_USE, MO_VAL_LOC, and
1583         MO_VAL_SET.
1584         (micro_operation_type_name): New.
1585         (enum emit_note_where): Add EMIT_NOTE_AFTER_CALL_INSN.
1586         (struct micro_operation_def): Update comments.
1587         (decl_or_value): New type.  Use instead of decls.
1588         (struct emit_note_data_def): Add vars.
1589         (struct attrs_def): Use decl_or_value.
1590         (struct variable_tracking_info_def): Add permp, flooded.
1591         (struct location_chain_def): Update comment.
1592         (struct variable_part_def): Use decl_or_value.
1593         (struct variable_def): Make var_part a variable length array.
1594         (valvar_pool): New.
1595         (scratch_regs): New.
1596         (cselib_hook_called): New.
1597         (dv_is_decl_p): New.
1598         (dv_is_value_p): New.
1599         (dv_as_decl): New.
1600         (dv_as_value): New.
1601         (dv_as_opaque): New.
1602         (dv_onepart_p): New.
1603         (dv_pool): New.
1604         (IS_DECL_CODE): New.
1605         (check_value_is_not_decl): New.
1606         (dv_from_decl): New.
1607         (dv_from_value): New.
1608         (dv_htab_hash): New.
1609         (variable_htab_hash): Use it.
1610         (variable_htab_eq): Support values.
1611         (variable_htab_free): Free from the right pool.
1612         (attrs_list_member, attrs_list_insert): Use decl_or_value.
1613         (attrs_list_union): Adjust.
1614         (attrs_list_mpdv_union): New.
1615         (tie_break_pointers): New.
1616         (canon_value_cmp): New.
1617         (unshare_variable): Return possibly-modified slot.
1618         (vars_copy_1): Adjust.
1619         (var_reg_decl_set): Adjust.  Split out of...
1620         (var_reg_set): ... this.
1621         (get_init_value): Adjust.
1622         (var_reg_delete_and_set): Adjust.
1623         (var_reg_delete): Adjust.
1624         (var_regno_delete): Adjust.
1625         (var_mem_decl_set): Split out of...
1626         (var_mem_set): ... this.
1627         (var_mem_delete_and_set): Adjust.
1628         (var_mem_delete): Adjust.
1629         (val_store): New.
1630         (val_reset): New.
1631         (val_resolve): New.
1632         (variable_union): Adjust.  Speed up merge of 1-part vars.
1633         (variable_canonicalize): Use unshared slot.
1634         (VALUED_RECURSED_INTO): New.
1635         (find_loc_in_1pdv): New.
1636         (struct dfset_merge): New.
1637         (insert_into_intersection): New.
1638         (intersect_loc_chains): New.
1639         (loc_cmp): New.
1640         (canonicalize_loc_order_check): New.
1641         (canonicalize_values_mark): New.
1642         (canonicalize_values_star): New.
1643         (variable_merge_over_cur): New.
1644         (variable_merge_over_src): New.
1645         (dataflow_set_merge): New.
1646         (dataflow_set_equiv_regs): New.
1647         (remove_duplicate_values): New.
1648         (struct dfset_post_merge): New.
1649         (variable_post_merge_new_vals): New.
1650         (variable_post_merge_perm_vals): New.
1651         (dataflow_post_merge_adjust): New.
1652         (find_mem_expr_in_1pdv): New.
1653         (dataflow_set_preserve_mem_locs): New.
1654         (dataflow_set_remove_mem_locs): New.
1655         (dataflow_set_clear_at_call): New.
1656         (onepart_variable_different_p): New.
1657         (variable_different_p): Use it.
1658         (dataflow_set_different_1): Adjust.  Make detailed dump more verbose.
1659         (track_expr_p): Add need_rtl parameter.  Don't generate rtl
1660         if not needed.
1661         (track_loc_p): Pass it true.
1662         (struct count_use_info): New.
1663         (find_use_val): New.
1664         (replace_expr_with_values): New.
1665         (log_op_type): New.
1666         (use_type): New, partially split out of...
1667         (count_uses): ... this.  Count new micro-ops.
1668         (count_uses_1): Adjust.
1669         (count_stores): Adjust.
1670         (count_with_sets): New.
1671         (VAL_NEEDS_RESOLUTION): New.
1672         (VAL_HOLDS_TRACK_EXPR): New.
1673         (VAL_EXPR_IS_COPIED): New.
1674         (VAL_EXPR_IS_CLOBBERED): New.
1675         (add_uses): Adjust.  Generate new micro-ops.
1676         (add_uses_1): Adjust.
1677         (add_stores): Generate new micro-ops.
1678         (add_with_sets): New.
1679         (find_src_status): Adjust.
1680         (find_src_set_src): Adjust.
1681         (compute_bb_dataflow): Use dataflow_set_clear_at_call.
1682         Handle new micro-ops.  Canonicalize value equivalances.
1683         (vt_find_locations): Compute total size of hash tables for
1684         dumping.  Perform merge for var-tracking-assignments.  Don't
1685         disregard single-block loops.
1686         (dump_attrs_list): Handle decl_or_value.
1687         (dump_variable): Take variable.  Deal with decl_or_value.
1688         (dump_variable_slot): New.
1689         (dump_vars): Use it.
1690         (dump_dataflow_sets): Adjust.
1691         (set_slot_part): New, extended to support one-part variables
1692         after splitting out of...
1693         (set_variable_part): ... this.
1694         (clobber_slot_part): New, split out of...
1695         (clobber_variable_part): ... this.
1696         (delete_slot_part): New, split out of...
1697         (delete_variable_part): .... this.
1698         (check_wrap_constant): New.
1699         (vt_expand_loc_callback): New.
1700         (vt_expand_loc): New.
1701         (emit_note_insn_var_location): Adjust.  Handle values.  Handle
1702         EMIT_NOTE_AFTER_CALL_INSN.
1703         (emit_notes_for_differences_1): Adjust.  Handle values.
1704         (emit_notes_for_differences_2): Likewise.
1705         (emit_notes_for_differences): Adjust.
1706         (emit_notes_in_bb): Take pointer to set.  Emit AFTER_CALL_INSN notes.
1707         Adjust.  Handle new micro-ops.
1708         (vt_add_function_parameters): Adjust.  Create and bind values.
1709         (vt_initialize): Adjust.  Initialize scratch_regs and
1710         valvar_pool, flooded and perm..  Initialize and use cselib.  Log
1711         operations.  Move some code to count_with_sets and add_with_sets.
1712         (delete_debug_insns): New.
1713         (vt_debug_insns_local): New.
1714         (vt_finalize): Release permp, valvar_pool, scratch_regs.  Finish
1715         cselib.
1716         (var_tracking_main): If var-tracking-assignments is enabled
1717         but var-tracking isn't, delete debug insns and leave.  Likewise
1718         if we exceed limits or fail the stack adjustments tests, and
1719         after all var-tracking processing.
1720         More in var-tracking, from Jakub Jelinek <jakub@redhat.com>:
1721         (dataflow_set): Add traversed_vars.
1722         (value_chain, const_value_chain): New typedefs.
1723         (value_chain_pool, value_chains): New variables.
1724         (value_chain_htab_hash, value_chain_htab_eq, add_value_chain,
1725         add_value_chains, add_cselib_value_chains, remove_value_chain,
1726         remove_value_chains, remove_cselib_value_chains): New functions.
1727         (shared_hash_find_slot_unshare_1, shared_hash_find_slot_1,
1728         shared_hash_find_slot_noinsert_1, shared_hash_find_1): New
1729         static inlines.
1730         (shared_hash_find_slot_unshare, shared_hash_find_slot,
1731         shared_hash_find_slot_noinsert, shared_hash_find): Update.
1732         (dst_can_be_shared): New variable.
1733         (unshare_variable): Unshare set->vars if shared, use shared_hash_*.
1734         Clear dst_can_be_shared.  If set->traversed_vars is non-NULL and
1735         different from set->vars, look up slot again instead of using the
1736         passed in slot.
1737         (dataflow_set_init): Initialize traversed_vars.
1738         (variable_union): Use shared_hash_*.  Use initially NO_INSERT
1739         lookup if set->vars is shared.  Don't keep slot cleared before
1740         calling unshare_variable.  Unshare set->vars if needed.  Adjust
1741         unshare_variable callers.  Clear dst_can_be_shared if needed.
1742         Even ->refcount == 1 vars must be unshared if set->vars is shared
1743         and var needs to be modified.
1744         (dataflow_set_union): Set traversed_vars during canonicalization.
1745         (VALUE_CHANGED, DECL_CHANGED): Define.
1746         (set_dv_changed, dv_changed_p): New static inlines.
1747         (track_expr_p): Clear DECL_CHANGED.
1748         (dump_dataflow_sets): Set it.
1749         (variable_was_changed): Call set_dv_changed.
1750         (emit_note_insn_var_location): Likewise.
1751         (changed_variables_stack): New variable.
1752         (check_changed_vars_1, check_changed_vars_2): New functions.
1753         (emit_notes_for_changes): Do nothing if changed_variables is
1754         empty.  Traverse changed_variables with check_changed_vars_1,
1755         call check_changed_vars_2 on each changed_variables_stack entry.
1756         (emit_notes_in_bb): Add SET argument.  Just clear it at the
1757         beginning, use it instead of local &set, don't destroy it at the end.
1758         (vt_emit_notes): Call dataflow_set_clear early on all
1759         VTI(bb)->out sets, never use them, instead use emit_notes_in_bb
1760         computed set, dataflow_set_clear also VTI(bb)->in when we are
1761         done with the basic block.  Initialize changed_variables_stack,
1762         free it afterwards.  If ENABLE_CHECKING verify that after noting
1763         differences to an empty set value_chains hash table is empty.
1764         (vt_initialize): Initialize value_chains and value_chain_pool.
1765         (vt_finalize): Delete value_chains htab, free value_chain_pool.
1766         (variable_tracking_main): Call dump_dataflow_sets before calling
1767         vt_emit_notes, not after it.
1768         * tree-flow.h (propagate_defs_into_debug_stmts): Declare.
1769         (propagate_var_def_into_debug_stmts): Declare.
1770         * df-problems.c (df_lr_bb_local_compute): Skip debug insns.
1771         (df_set_note): Reject debug insns.
1772         (df_whole_mw_reg_dead_p): Take added_notes_p argument.  Don't
1773         add notes to debug insns.
1774         (df_note_bb_compute): Adjust.  Likewise.
1775         (df_simulate_uses): Skip debug insns.
1776         (df_simulate_initialize_backwards): Likewise.
1777         * reg-stack.c (subst_stack_regs_in_debug_insn): New.
1778         (subst_stack_regs_pat): Reject debug insns.
1779         (convert_regs_1): Handle debug insns.
1780         * Makefile.in (TREE_INLINE_H): Take pointer-set.h from GIMPLE_H.
1781         (print-rtl.o): Depend on cselib.h.
1782         (cselib.o): Depend on TREE_PASS_H.
1783         (var-tracking.o): Depend on cselib.h and TARGET_H.
1784         * sched-rgn.c (rgn_estimate_number_of_insns): Discount debug insns.
1785         (init_ready_list): Skip boundary debug insns.
1786         (add_branch_dependences): Skip debug insns.
1787         (free_block_dependencies): Check for blocks with only debug insns.
1788         (compute_priorities): Likewise.
1789         * gimple.c (gss_for_code): Handle GIMPLE_DEBUG.
1790         (gimple_build_with_ops_stat): Take subcode as unsigned.  Adjust
1791         all callers.
1792         (gimple_build_debug_bind_stat): New.
1793         (empty_body_p): Skip debug stmts.
1794         (gimple_has_side_effects): Likewise.
1795         (gimple_rhs_has_side_effects): Likewise.
1796         * gimple.h (enum gimple_debug_subcode, GIMPLE_DEBUG_BIND): New.
1797         (gimple_build_debug_bind_stat): Declare.
1798         (gimple_build_debug_bind): Define.
1799         (is_gimple_debug): New.
1800         (gimple_debug_bind_p): New.
1801         (gimple_debug_bind_get_var): New.
1802         (gimple_debug_bind_get_value): New.
1803         (gimple_debug_bind_get_value_ptr): New.
1804         (gimple_debug_bind_set_var): New.
1805         (gimple_debug_bind_set_value): New.
1806         (GIMPLE_DEBUG_BIND_NOVALUE): New internal temporary macro.
1807         (gimple_debug_bind_reset_value): New.
1808         (gimple_debug_bind_has_value_p): New.
1809         (gsi_next_nondebug): New.
1810         (gsi_prev_nondebug): New.
1811         (gsi_start_nondebug_bb): New.
1812         (gsi_last_nondebug_bb): New.
1813         * sched-vis.c (print_pattern): Handle VAR_LOCATION.
1814         (print_insn): Handle DEBUG_INSN.
1815         * tree-cfg.c (remove_bb): Walk stmts backwards.  Let loc
1816         of first insn prevail.
1817         (first_stmt): Skip debug stmts.
1818         (first_non_label_stmt): Likewise.
1819         (last_stmt): Likewise.
1820         (has_zero_uses_1): New.
1821         (single_imm_use_1): New.
1822         (verify_gimple_debug): New.
1823         (verify_types_in_gimple_stmt): Handle debug stmts.
1824         (verify_stmt): Likewise.
1825         (debug_loop_num): Skip debug stmts.
1826         (remove_edge_and_dominated_blocks): Remove dominators last.
1827         * tree-ssa-reasssoc.c (rewrite_expr_tree): Propagate into debug stmts.
1828         (linearize_expr): Likewise.
1829         * config/i386/i386.c (ix86_delegitimize_address): Call
1830         default implementation.
1831         * config/ia64/ia64.c (ia64_safe_itanium_class): Handle debug insns.
1832         (group_barrier_needed): Skip debug insns.
1833         (emit_insn_group_barriers): Likewise.
1834         (emit_all_insn_group_barriers): Likewise.
1835         (ia64_variable_issue): Handle debug insns.
1836         (ia64_dfa_new_cycle): Likewise.
1837         (final_emit_insn_group_barriers): Skip debug insns.
1838         (ia64_dwarf2out_def_steady_cfa): Take frame argument.  Don't
1839         def cfa without frame.
1840         (process_set): Likewise.
1841         (process_for_unwind_directive): Pass frame on.
1842         * config/rs6000/rs6000.c (TARGET_DELEGITIMIZE_ADDRESS): Define.
1843         (rs6000_delegitimize_address): New.
1844         (rs6000_debug_adjust_cost): Handle debug insns.
1845         (is_microcoded_insn): Likewise.
1846         (is_cracked_insn): Likewise.
1847         (is_nonpipeline_insn): Likewise.
1848         (insn_must_be_first_in_group): Likewise.
1849         (insn_must_be_last_in_group): Likewise.
1850         (force_new_group): Likewise.
1851         * cfgrtl.c (rtl_split_block): Emit INSN_DELETED note if block
1852         contains only debug insns.
1853         (rtl_merge_blocks): Skip debug insns.
1854         (purge_dead_edges): Likewise.
1855         (rtl_block_ends_with_call_p): Skip debug insns.
1856         * dce.c (deletable_insn_p): Handle VAR_LOCATION.
1857         (mark_reg_dependencies): Skip debug insns.
1858         * params.def (PARAM_MIN_NONDEBUG_INSN_UID): New.
1859         * tree-ssanames.c (release_ssa_name): Propagate def into debug stmts.
1860         * tree-ssa-threadedge.c
1861         (record_temporary_equivalences_from_stmts): Skip debug stmts.
1862         * regcprop.c (replace_oldest_value_addr): Skip debug insns.
1863         (replace_oldest_value_mem): Use ALL_REGS for debug insns.
1864         (copyprop_hardreg_forward_1): Handle debug insns.
1865         * reload1.c (reload): Skip debug insns.  Replace unassigned
1866         pseudos in debug insns with their equivalences.
1867         (eliminate_regs_in_insn): Skip debug insns.
1868         (emit_input_reload_insns): Skip debug insns at first, adjust
1869         them later.
1870         * tree-ssa-operands.c (add_virtual_operand): Reject debug stmts.
1871         (get_indirect_ref_operands): Pass opf_no_vops on.
1872         (get_expr_operands): Likewise.  Skip debug stmts.
1873         (parse_ssa_operands): Scan debug insns with opf_no_vops.
1874
1875 2009-09-01  Richard Henderson  <rth@redhat.com>
1876
1877         * tree-ssa-ccp.c (ccp_initialize): Make sure to simulate
1878         stmt_ends_pp_p statements at least once.
1879         * tree-vrp.c (vrp_initialize): Likewise.
1880         (vrp_visit_stmt): Be prepared for non-interesting stmts.
1881
1882 2009-09-01  Dodji Seketeli  <dodji@redhat.com>
1883
1884         PR bootstrap/41205
1885         Fix AIX bootstrap after PR debug/30161
1886         * dwarf2out.c (make_ith_pack_parameter_name): Don't used strnlen
1887         that is a GNU extension.
1888         (tmpl_value_parm_die_table): Move the definition of this global
1889         outside #ifdef DWARF2_DEBUGGING_INFO region.
1890
1891 2009-09-01  Richard Guenther  <rguenther@suse.de>
1892
1893         * tree.c (tree_expr_size): New function.
1894         * tree.h (tree_expr_size): Declare.
1895         * rtlanal.c (rtx_addr_can_trap_p_1): Adjust comment.
1896         * builtins.c (fold_builtin_memory_op): Use tree_expr_size.
1897         * langhooks.c (lhd_expr_size): Remove.
1898         * langhooks.h (struct lang_hooks): Remove expr_size.
1899         * explow.c (expr_size): Use tree_expr_size.
1900         (int_expr_size): Likewise.
1901         * langhooks-def.h (lhd_expr_size): Remove.
1902         (LANG_HOOKS_EXPR_SIZE): Likewise.
1903         (LANG_HOOKS_INITIALIZER): Adjust.
1904
1905 2009-09-01  Richard Guenther  <rguenther@suse.de>
1906
1907         * tree-flow.h (mark_addressable): Move declaration ...
1908         * tree.h (mark_addressable): ... here.
1909         * stmt.c (expand_asm_operands): Use mark_addressable, not
1910         lang_hooks.mark_addressable.
1911         * langhooks-def.h (LANG_HOOKS_INITIALIZER): Remove
1912         LANG_HOOKS_MARK_ADDRESSABLE.
1913         * langhooks.h (struct lang_hooks): Remove mark_addressable langhook.
1914         * c-objc-common.h (LANG_HOOKS_MARK_ADDRESSABLE): Remove.
1915
1916 2009-08-31  Chris Demetriou  <cgd@google.com>
1917
1918         * config/i386/i386.c (ix86_vectorize_builtin_conversion): Never
1919         vectorize if not TARGET_SSE2.
1920
1921 2009-08-31  DJ Delorie  <dj@redhat.com>
1922
1923         * config/mep/mep.h (FUNCTION_ARG_REGNO_P): Exclude coprocessor
1924         registers if no coprocessor is enabled.
1925
1926 2009-08-31  Dodji Seketeli  <dodji@redhat.com>
1927
1928         PR debug/30161
1929         * cgraph.h (cgraph_get_node): Declare ...
1930         * cgraph.c (cgraph_get_node): ... new function.
1931         * dwarf2out.c (gen_generic_params_dies,
1932         generic_parameter_die, tree_add_const_value_attribute_for_decl,
1933         make_ith_pack_parameter_name,
1934         append_entry_to_tmpl_value_parm_die_table,
1935         gen_remaining_tmpl_value_param_die_attribute): New functions.
1936         (gen_subprogram_die): Generate debug info for template parameters
1937         if debug info level is higher than DINFO_LEVEL_TERSE.
1938         Use tree_add_const_value_attribute_for_decl instead of
1939         tree_add_const_value_attribute.
1940         (gen_const_die): Use tree_add_const_value_attribute_for_decl
1941         instead of tree_add_const_value_attribute.
1942         (gen_struct_or_union_type_die): Generate debug
1943         info for template parameters if debug info level is higher than
1944         DINFO_LEVEL_TERSE.
1945         (tree_add_const_value_attribute): Handle integral and pointer
1946         constants. Update comment.
1947         (dwarf_tag_name): Support DW_TAG_GNU_template_template_param.
1948         (dwarf_attr_name): Support DW_AT_GNU_template_name.
1949         (reference_to_unused): Fix thinko. Remove redundant predicates from
1950         tests.
1951         (tree_add_const_value_attribute): Make this work for constant
1952         expressions only.
1953         tree_add_const_value_attribute_for_decl is to be used for variable
1954         DECLs now.
1955         (add_location_or_const_value_attribute): Use
1956         tree_add_const_value_attribute_for_decl now.
1957         (dwarf2out_finish): Emit the DW_AT_const_value attribute of
1958         DW_TAG_template_value_param DIEs after function DIEs have been
1959         emitted.
1960         * langhooks.h (lang_hooks_for_types): Add
1961         get_argument_pack_elems.
1962         (lang_hooks_for_decls): Add generic_generic_parameter_decl_p.
1963         (lang_hooks): Added get_innermost_generic_parms,
1964         get_innermost_generic_args.
1965         * langhooks-def.h (LANG_HOOKS_GET_INNERMOST_GENERIC_PARMS,
1966         LANG_HOOKS_GET_INNERMOST_GENERIC_ARGS,
1967         LANG_HOOKS_GET_ARGUMENT_PACK_ELEMS,
1968         LANG_HOOKS_GENERIC_GENERIC_PARAMETER_DECL_P): New language hooks.
1969
1970 2009-08-31  DJ Delorie  <dj@redhat.com>
1971
1972         * config/mep/mep.c (machine_function): Add frame_locked flag.  Set
1973         it once we start generating the prologue or epilogue.
1974         (mep_call_saves_register): If the frame is locked, re-use
1975         cached values.
1976         (mep_assign_save_slots): New, broken out from mep_expand_prologue.
1977         (mep_expand_prologue): Call it.
1978         (mep_expand_epilogue): Likewise.
1979         (mep_start_function): Use the same logic as mep_expand_prologue.
1980         (mep_pass_by_reference): Make logic more readable.
1981         (mep_return_in_memory): Zero-sized objects are passed in memory.
1982         (mep_reorg_noframe): Make sure we have accurate REG_DEAD notes.
1983
1984 2009-08-31  Richard Guenther  <rguenther@suse.de>
1985
1986         * builtins.c (fold_builtin_memory_op): Use the alias oracle
1987         to query if the memory regions for memmove overlap.
1988         * tree-ssa-alias.c (ptr_deref_may_alias_decl_p): Relax the
1989         asserts on pointers, instead deal with odd trees.
1990         (ptr_derefs_may_alias_p): Likewise.
1991         (refs_may_alias_p_1): Constructor bases also never alias.
1992
1993 2009-08-31  Gerald Pfeifer  <gerald@pfeifer.com>
1994
1995         * doc/install.texi (Final install): Adjust reference on where to
1996         order printed manuals.
1997
1998 2009-08-30  Olivier Hainque  <hainque@adacore.com>
1999
2000         * dwarf2out.c (switch_to_frame_table_section): Move
2001         definition prior to first use.
2002
2003 2009-08-30  Richard Guenther  <rguenther@suse.de>
2004
2005         PR tree-optimization/41186
2006         * tree-ssa-alias.c (ptr_deref_may_alias_ref_p): Remove.
2007         (ao_ref_init_from_ptr_and_size): New function.
2008         (ref_maybe_used_by_call_p_1): Be more precise tracking
2009         used ranges for builtin functions.
2010         (ref_maybe_used_by_call_p): Adjust.
2011         (call_may_clobber_ref_p_1): Be more precise tracking clobbered
2012         ranges for builtin functions.
2013         * tree-ssa-alias.h (ao_ref_init_from_ptr_and_size): Declare.
2014
2015 2009-08-30  Alan Modra  <amodra@bigpond.net.au>
2016
2017         PR target/41081
2018         * fwprop.c (get_reg_use_in): Delete.
2019         (free_load_extend): New function.
2020         (forward_propagate_subreg): Use it.
2021
2022 2009-08-29  Kaz Kojima  <kkojima@gcc.gnu.org>
2023
2024         * config.gcc (sh*-*-elf): Add superh stuff only for sh*-superh-elf.
2025
2026 2009-08-29  Kai Tietz<kai.tietz@onevision.com>
2027
2028         PR/41184
2029         * config/i386.c (ix86_expand_epilogue): Correct stack adjustment for
2030         padding.
2031
2032 2009-08-29  Douglas B Rupp  <rupp@gnat.com>
2033
2034         * crtstuff.c (__do_global_dtors_aux): Use atexit if no
2035         fini or fini_array section.
2036
2037 2009-08-28  Sebastian Pop  <sebastian.pop@amd.com>
2038
2039         * graphite-dependences.c (graphite_legal_transform_bb): Call
2040         pbb_remove_duplicate_pdrs.
2041         * graphite-poly.c (can_collapse_pdr): Removed.
2042         (pdr_find_duplicate): Removed.
2043         (can_collapse_pdrs): New.
2044         (pbb_remove_duplicate_pdrs): New.
2045         (new_poly_dr): Do not look for duplicates.
2046         * graphite-poly.h (struct poly_bb): New field pdr_duplicates_removed.
2047         (PBB_PDR_DUPLICATES_REMOVED): New.
2048         (pbb_remove_duplicate_pdrs): Declared.
2049
2050 2009-08-28  Sebastian Pop  <sebastian.pop@amd.com>
2051
2052         * graphite-interchange.c (pbb_interchange_profitable_p): Adjust
2053         the strides by multiplying by PDR_NB_REFS.
2054         * graphite-poly.c (can_collapse_pdr): New.
2055         (pdr_find_duplicate): New.
2056         (new_poly_dr): Call pdr_find_duplicate.  Collapse duplicate PDRs.
2057         Initialize PDR_NB_REFS.
2058         * graphite-poly.h (struct poly_dr): Add field nb_refs.
2059         (PDR_NB_REFS): New.
2060         (new_poly_dr): Number of subscripts is a graphite_dim_t.
2061
2062 2009-08-28  Sebastian Pop  <sebastian.pop@amd.com>
2063
2064         PR middle-end/40965
2065         * graphite-poly.c (apply_poly_transforms): Remove legality test before
2066         any transform.
2067
2068 2009-08-28  Sebastian Pop  <sebastian.pop@amd.com>
2069
2070         * graphite-dependences.c (pddr_original_scattering): Return NULL
2071         for read-read dependence relations.
2072         * graphite-poly.h (enum poly_dr_type): Fix comment.
2073         (pdr_read_p): New.
2074         (pdr_write_p): New.
2075         (pdr_may_write_p): New.
2076
2077 2009-08-28  Sebastian Pop  <sebastian.pop@amd.com>
2078
2079         * graphite-poly.h (enum POLY_DR_TYPE): Renamed poly_dr_type.
2080         (struct poly_dr): Same.
2081         (new_poly_dr): Same.
2082         * graphite-poly.c (new_poly_dr): Same.
2083         * graphite-dependences.c (dot_deps): Disable call to system.
2084
2085 2009-08-28  Cary Coutant  <ccoutant@google.com>
2086
2087         PR debug/41063
2088         * dwarf2out.c (gen_type_die_with_usage): Use proper context for
2089         struct/union/enum types local to a function.
2090
2091 2009-08-28  Konrad Trifunovic  <konrad.trifunovic@gmail.com>
2092             Sebastian Pop  <sebastian.pop@amd.com>
2093
2094         * graphite-blocking.c (pbb_strip_mine_loop_depth): Renamed
2095         pbb_strip_mine_time_depth.  Changed the implementation so that
2096         transformation is expressed as a transformation on
2097         time (scatttering) dimensions.  Also, ensures that the 2d+1
2098         scheduling format is preserved.
2099         (pbb_strip_mine_profitable_p): Profitability is based on the
2100         iteration number of a given time (scattering) dimension,
2101         and not on a original loop depth dimension.
2102         (pbb_strip_mine): Call pbb_number_of_iterations_at_time.
2103         (pbb_do_strip_mine): Call psct_dynamic_dim.
2104         * graphite-poly.c (pbb_number_of_iterations_at_time): New.
2105         * graphite-poly.h (pbb_number_of_iterations_at_time): Declared.
2106         (pbb_nb_dynamic_scattering_transform): New.
2107         (psct_dynamic_dim): New.
2108
2109 2009-08-28  Konrad Trifunovic  <konrad.trifunovic@gmail.com>
2110
2111         * graphite-ppl.c (ppl_max_for_le): Renamed ppl_max_for_le_pointset.
2112         * graphite-ppl.h (ppl_max_for_le): Renamed ppl_max_for_le_pointset.
2113         * graphite-poly.c (pbb_number_of_iterations): Rename ppl_max_for_le.
2114         * graphite-interchange.c (build_linearized_memory_access): Same.
2115         (memory_stride_in_loop): Same.
2116
2117 2009-08-28  Sebastian Pop  <sebastian.pop@amd.com>
2118
2119         * graphite-dependences.c (pddr_original_scattering): New.
2120         (graphite_legal_transform_dr): Call pddr_original_scattering.
2121         (dot_deps_1): New.
2122         (dot_deps): New.
2123         * graphite-dependences.h (dot_deps): Declared.
2124         * graphite-poly.c (new_poly_dr): Initialize PDR_ID.
2125         (print_pdr): Print PDR_ID.
2126         * graphite-poly.h (struct poly_dr): Add field id.
2127         (PDR_ID): New.
2128         (pbb_index): New.
2129         * graphite-scop-detection.c (dot_all_scops_1): Cleanup comment.
2130
2131 2009-08-28  Sebastian Pop  <sebastian.pop@amd.com>
2132
2133         * graphite-dependences.c (graphite_carried_dependence_level_k): Do
2134         not delete the original dependence relation.
2135
2136 2009-08-28  Sebastian Pop  <sebastian.pop@amd.com>
2137
2138         * graphite-dependences.c (new_poly_dr_pair): Renamed new_poly_ddr.
2139         (eq_poly_dr_pair_p): Renamed eq_poly_ddr_p.
2140         (hash_poly_dr_pair_p): Renamed hash_poly_ddr_p.
2141         (free_poly_ddr): New.
2142         (pddr_is_empty): New.
2143         (dependence_polyhedron_1): Now returns a poly_ddr_p.
2144         (dependence_polyhedron): Same.  Remove useless gcc_assert.
2145         Remove fprintfs.
2146         (graphite_legal_transform_dr): Call pddr_is_empty and free_poly_ddr.
2147         (graphite_carried_dependence_level_k): Call pddr_is_empty.
2148         * graphite-dependences.h (enum poly_dependence_kind): New.
2149         (poly_dr_pair): Renamed poly_ddr.  Added a field kind.
2150         (PDRP_SOURCE): Renamed PDDR_SOURCE.
2151         (PDRP_SINK): Renamed PDDR_SINK.
2152         (PDRP_DDP): Renamed PDDR_DDP.
2153         (PDDR_KIND): New.
2154         (free_poly_ddr): Declared.
2155         * graphite-poly.c (new_scop): Use the new hash function names.
2156         * graphite-poly.h (struct scop): Renamed field original_pdr_pairs
2157         into original_pddrs.
2158         (SCOP_ORIGINAL_PDR_PAIRS): Renamed SCOP_ORIGINAL_PDDRS.
2159
2160 2009-08-28  Sebastian Pop  <sebastian.pop@amd.com>
2161
2162         * cfgloopmanip.c (create_empty_loop_on_edge): Generate upper
2163         bounds with LT_EXPR to make niter analysis more precise on code
2164         generated by Graphite.
2165
2166 2009-08-28  Sebastian Pop  <sebastian.pop@amd.com>
2167
2168         * graphite-dependences.c (graphite_legal_transform_dr): Fix formatting.
2169         (graphite_legal_transform_bb): Same.
2170         (poly_drs_may_alias_p): Same.
2171
2172 2009-08-28  Richard Guenther  <rguenther@suse.de>
2173
2174         * tree.def: Remove note about obsolete TYPE_NONCOPIED_PARTS.
2175
2176 2009-08-28  Jan Beulich  <jbeulich@novell.com>
2177
2178         * config/i386/netware.c: Include langhooks.h.
2179         (i386_nlm_encode_section_info): Simplify.
2180         (netware_override_options): Delete.
2181         * config/i386/netware.h (netware_override_options): Delete
2182         declaration.
2183         (OVERRIDE_OPTIONS): Delete definition.
2184         (SUBTARGET_OVERRIDE_OPTIONS): Define.
2185         (ASM_COMMENT_START): Define.
2186         * config/i386/nwld.h (SUBSUBTARGET_OVERRIDE_OPTIONS): Define.
2187
2188 2009-08-28  Jan Beulich  <jbeulich@novell.com>
2189
2190         * configure.ac: For in-tree ld, do a plain version check to
2191         determine whether comdat groups are supported.
2192         * configure: Regenerate.
2193
2194 2009-08-28  Olivier Hainque  <hainque@adacore.com>
2195
2196         * collect2.c (DO_COLLECT_EXPORT_LIST): New internal macro,
2197         always defined.  Reflect definition or absence of such for
2198         COLLECT_EXPORT_LIST.  Readability helper.
2199         (scanfilter): New enum, to help control what symbols
2200         are to be considered or ignored by scan_prog_file.
2201         (enum pass): Rename as "scanpass", moved together with scanfilter
2202         prior to scan_prog_file's prototype.
2203         (scan_prog_file): Accept and honor scanpass and scanfilter arguments.
2204         Group prototype with the scanpass/scanfilter definitions, factorize
2205         head comments for the several implementations at the prototype.
2206         (main): Reorganize the first pass link control to let AIX
2207         drag only the needed frame tables in executables.  Prevent
2208         frame tables collection during the scan aimed at static ctors.
2209         Pre-link and scan for frame tables later to compensate.
2210         * doc/tm.texi (ASM_OUTPUT_DWARF_TABLE_REF): New macro.
2211         A C statement to issue assembly directives that create a reference
2212         to the given DWARF table identifier label from the current function
2213         section.
2214         * dwarf2out.c (switch_to_eh_frame_section): Add a BACK argument
2215         to differentiate first time section entry.  Only emit a .data
2216         tables start identifier label the first time around.
2217         (switch_to_frame_table_section): New function.  Helper for
2218         output_call_frame_info to switch possibly BACK into the eh_frame
2219         or the debug_frame section depending on FOR_EH.
2220         (output_call_frame_info): Use helper to first enter the proper
2221         frame section.
2222         (output_fde): Use ASM_OUTPUT_DWARF_TABLE_REF when defined to
2223         emit a link to the frame table start label from each function
2224         section.
2225         * config/rs6000/rs6000.c (rs6000_aix_asm_output_dwarf_table_ref):
2226         New function.  Implementation of ASM_OUTPUT_DWARF_TABLE_REF.
2227         * config/rs6000/rs6000-protos.h: Declare it.
2228         * config/rs6000/aix.h (ASM_OUTPUT_DWARF_TABLE_REF): Define.
2229
2230 2009-08-27  Kaz Kojima  <kkojima@gcc.gnu.org>
2231
2232         * config/sh/sh.c (split_branches): Check the result of
2233         next_active_insn.
2234
2235 2009-08-27  Steve Ellcey  <sje@cup.hp.com>
2236
2237         * config/ia64/hpux.h (LIB_SPEC): Add -lrt for when
2238         using -pthread -fopenmp
2239
2240 2009-08-27  Gerald Pfeifer  <gerald@pfeifer.com>
2241
2242         * doc/service.texi (service directory): Update URL.
2243
2244 2009-08-27  Uros Bizjak  <ubizjak@gmail.com>
2245
2246         PR rtl-optimization/40861
2247         * simplify-rtx.c (simplify_subreg): Do not call simplify_gen_subreg to
2248         extract word from a multi-word subreg for negative byte positions.
2249
2250 2009-08-27  Tristan Gingold  <gingold@adacore.com>
2251             Douglas B Rupp  <rupp@gnat.com>
2252
2253         * config/ia64/ia64.c (ia64_attribute_table): Add "common_object" entry.
2254         (SECTION_VMS_OVERLAY): Define.
2255         (ia64_vms_common_object_attribute): Added.  Handle the "common_object"
2256         attribute.
2257         (ia64_vms_elf_asm_named_section): Added.  Generate .section pseudo-op
2258         for common_object.
2259         (ia64_vms_output_aligned_decl_common): Added.  Generate pseudo-op for
2260         common_object declarations.
2261         (ia64_section_type_flags): Set section flag for common_object.
2262         * config/ia64/ia64-protos.h
2263         (ia64_vms_output_aligned_decl_common): Declare.
2264         (ia64_vms_elf_asm_named_section): Declare.
2265
2266 2009-08-27  Michael Matz  <matz@suse.de>
2267
2268         * expr.c (expand_expr_real_2): New function taking exploded
2269         unary or binary expression, split out from ...
2270         (expand_expr_real_1): ... here.  Move over all unary/binary
2271         switch parts to above function, in particular these codes:
2272         PAREN_EXPR, NOP_EXPR, CONVERT_EXPR, POINTER_PLUS_EXPR, PLUS_EXPR,
2273         MINUS_EXPR, MULT_EXPR, TRUNC_DIV_EXPR, FLOOR_DIV_EXPR, CEIL_DIV_EXPR,
2274         ROUND_DIV_EXPR, EXACT_DIV_EXPR, RDIV_EXPR, TRUNC_MOD_EXPR,
2275         FLOOR_MOD_EXPR, CEIL_MOD_EXPR, ROUND_MOD_EXPR, FIXED_CONVERT_EXPR,
2276         FIX_TRUNC_EXPR, FLOAT_EXPR, NEGATE_EXPR, ABS_EXPR, MAX_EXPR, MIN_EXPR,
2277         BIT_NOT_EXPR, TRUTH_AND_EXPR, BIT_AND_EXPR, TRUTH_OR_EXPR,
2278         BIT_IOR_EXPR, TRUTH_XOR_EXPR, BIT_XOR_EXPR, LROTATE_EXPR, RROTATE_EXPR,
2279         LSHIFT_EXPR, RSHIFT_EXPR, LT_EXPR, LE_EXPR, GT_EXPR, GE_EXPR, EQ_EXPR,
2280         NE_EXPR, UNORDERED_EXPR, ORDERED_EXPR, UNLT_EXPR, UNLE_EXPR, UNGT_EXPR,
2281         UNGE_EXPR, UNEQ_EXPR, LTGT_EXPR, TRUTH_NOT_EXPR, COMPLEX_EXPR,
2282         WIDEN_SUM_EXPR, REDUC_MAX_EXPR, REDUC_MIN_EXPR, REDUC_PLUS_EXPR,
2283         VEC_EXTRACT_EVEN_EXPR, VEC_EXTRACT_ODD_EXPR, VEC_INTERLEAVE_HIGH_EXPR,
2284         VEC_INTERLEAVE_LOW_EXPR, VEC_LSHIFT_EXPR, VEC_RSHIFT_EXPR,
2285         VEC_UNPACK_HI_EXPR, VEC_UNPACK_LO_EXPR, VEC_UNPACK_FLOAT_HI_EXPR,
2286         VEC_UNPACK_FLOAT_LO_EXPR, VEC_WIDEN_MULT_HI_EXPR,
2287         VEC_WIDEN_MULT_LO_EXPR, VEC_PACK_TRUNC_EXPR, VEC_PACK_SAT_EXPR,
2288         VEC_PACK_FIX_TRUNC_EXPR.
2289         (<case PAREN_EXPR>): Call set_mem_attributes() with type, not the
2290         full expression.
2291
2292 2009-08-27  Richard Guenther  <rguenther@suse.de>
2293
2294         * gengtype.c (main): Handle uint64_t.
2295         * ipa-utils.c (get_base_var): Indent properly.
2296         * tree-ssa-live.c (debug_scope_block): New function.
2297         * tree-flow.h (debug_scope_block): Declare.
2298         * tree-ssa-copy.c (replace_exp_1): Add vertical space.
2299         * basic-block.h (enum profile_status): Rename to
2300         enum profile_status_d.
2301         (x_profile_status): Adjust type.
2302
2303 2009-08-27  Dodji Seketeli  <dodji@redhat.com>
2304
2305         PR debug/41170
2306         * dwarf2out.c (get_context_die): Declare this static function.
2307         (gen_type_die_with_usage): Make sure a DIE is a generated for
2308         the context of a typedef.
2309
2310 2009-08-26  Anatoly Sokolov  <aesok@post.ru>
2311
2312         * doc/invoke.texi (AVR Options): Remove documentation of -minit-stack
2313         switch.
2314
2315 2009-08-26  Richard Sandiford  <rdsandiford@googlemail.com>
2316
2317         * config/mips/mips-protos.h (mips_output_sync): Declare.
2318         (mips_sync_loop_insns): Likewise.
2319         (mips_output_sync_loop): Replace first two parameters with an rtx.
2320         * config/mips/mips.c (mips_multi_member): New structure.
2321         (mips_multi_members): New variable.
2322         (mips_multi_start): New function.
2323         (mips_multi_add): Likewise.
2324         (mips_multi_add_insn): Likewise.
2325         (mips_multi_add_label): Likewise.
2326         (mips_multi_last_index): Likewise.
2327         (mips_multi_copy_insn): Likewise.
2328         (mips_multi_set_operand): Likewise.
2329         (mips_multi_write): Likewise.
2330         (mips_print_operand_punctuation): Remove '%|' and '%-'.
2331         (mips_init_print_operand_punct): Update accordingly.
2332         (mips_start_ll_sc_sync_block): New function.
2333         (mips_end_ll_sc_sync_block): Likewise.
2334         (mips_output_sync): Likewise.
2335         (mips_sync_insn1_template): Likewise.
2336         (mips_sync_insn2_template): Likewise.
2337         (mips_get_sync_operand): Likewise.
2338         (mips_process_sync_loop): Likewise.
2339         (mips_output_sync_loop): Use mips_process_sync_loop.
2340         (mips_sync_loop_insns): New function.
2341         * config/mips/mips.h (MIPS_COMPARE_AND_SWAP): Delete.
2342         (MIPS_COMPARE_AND_SWAP_12): Likewise.
2343         (MIPS_COMPARE_AND_SWAP_12_ZERO_OP): Likewise.
2344         (MIPS_COMPARE_AND_SWAP_12_NONZERO_OP): Likewise.
2345         (MIPS_SYNC_OP, MIPS_SYNC_OP_12): Likewise.
2346         (MIPS_SYNC_OP_12_AND, MIPS_SYNC_OP_12_XOR): Likewise.
2347         (MIPS_SYNC_OLD_OP_12): Likewise.
2348         (MIPS_SYNC_OLD_OP_12_AND, MIPS_SYNC_OLD_OP_12_XOR): Likewise.
2349         (MIPS_SYNC_NEW_OP_12): Likewise.
2350         (MIPS_SYNC_NEW_OP_12_AND, MIPS_SYNC_NEW_OP_12_XOR): Likewise.
2351         (MIPS_SYNC_OLD_OP, MIPS_SYNC_NEW_OP): Likewise.
2352         (MIPS_SYNC_NAND, MIPS_SYNC_OLD_NAND, MIPS_SYNC_NEW_NAND): Likewise.
2353         (MIPS_SYNC_EXCHANGE, MIPS_SYNC_EXCHANGE_12): Likewise.
2354         (MIPS_SYNC_EXCHANGE_12_ZERO_OP): Likewise.
2355         (MIPS_SYNC_EXCHANGE_12_NONZER_OP): Likewise.
2356         * config/mips/mips.md (sync_mem): New attribute.
2357         (sync_oldval, sync_newval, sync_inclusive_mask): Likewise.
2358         (sync_exclusive_mask, sync_required_oldval): Likewise.
2359         (sync_insn1_op2, sync_insn1, sync_insn2): Likewise.
2360         (sync_release_barrier): Likewise.
2361         (length): Handle sync loops.
2362         (sync): Use mips_output_sync.
2363         * config/mips/sync.md (*memory_barrier): Use mips_output_sync.
2364         (sync_compare_and_swap<mode>): Set the new sync_* attributes
2365         and use mips_output_sync_loop.
2366         (compare_and_swap_12, sync_add<mode>, sync_<optab>_12): Likewise.
2367         (sync_old_<optab>_12, sync_new_<optab>_12, sync_nand_12): Likewise.
2368         (sync_old_nand_12, sync_new_nand_12, sync_sub<mode>): Likewise.
2369         (sync_old_add<mode>, sync_old_sub<mode>): Likewise.
2370         (sync_new_add<mode>, sync_new_sub<mode>): Likewise.
2371         (sync_<optab><mode>, sync_old_<optab><mode>): Likewise.
2372         (sync_new_<optab><mode>, sync_nand<mode>): Likewise.
2373         (sync_old_nand<mode>, sync_new_nand<mode>): Likewise.
2374         (sync_lock_test_and_set<mode>, test_and_set_12): Likewise.
2375
2376 2009-08-26  Richard Guenther  <rguenther@suse.de>
2377
2378         PR middle-end/41163
2379         * gimplify.c (gimplify_addr_expr): Canonicalize ADDR_EXPRs if
2380         the types to not match.
2381         * tree-cfg.c (verify_gimple_assign_single): Adjust ADDR_EXPR
2382         verification.
2383         * tree-ssa.c (useless_type_conversion_p): Conversions to
2384         pointers to unprototyped functions are useless.
2385
2386 2009-08-26  Richard Guenther  <rguenther@suse.de>
2387
2388         * tree-ssa-structalias.c (create_variable_info_for): Remove strange
2389         whole-program condition, prepare to be called for non-globals.
2390         (intra_create_variable_infos): For restrict qualified DECL_BY_REFERENCE
2391         params build a representative with known type and track its fields.
2392
2393 2009-08-26  Uros Bizjak  <ubizjak@gmail.com>
2394
2395         * config/alpha/sync.md: Update comment about unpredictable LL/SC lock
2396         clearing by a taken branch.
2397         (sync_<fetchop_name><mode>): Split when epilogue_completed is set,
2398         effectively after bbro pass.
2399         (sync_nand<mode>): Ditto.
2400         (sync_old_<fetchop_name><mode>): Ditto.
2401         (sync_old_nand<mode>): Ditto.
2402         (sync_new_<fetchop_name><mode>): Dito.
2403         (sync_new_nand<mode>): Ditto.
2404         (sync_compare_and_swap<mode>_1): Ditto.
2405         (*sync_compare_and_swap<mode>): Ditto.
2406         (sync_lock_test_and_set<mode>_1): Ditto.
2407         ("sync_lock_test_and_set<mode>): Ditto.
2408
2409 2009-08-25  Douglas B Rupp  <rupp@gnat.com>
2410
2411         * hwint.h (HOST_LONG_FORMAT): New macro
2412         * bitmap.c, c-decl.c, mips-tfile.c, print-rtl.c, print-tree.c:
2413         Use HOST_PTR_PRINTF.
2414         * system.h (HOST_PTR_PRINTF): Resurrect old macro
2415         * doc/hostconfig.texi (HOST_LONG_FORMAT): Document.
2416         (HOST_PTR_PRINTF): Document.
2417
2418 2009-08-25 Jan Hubicka  <jh@suse.cz>
2419
2420         * config/i386/bmmintrin.h: Replace by #error.
2421
2422         Revert:
2423         Michael Meissner  <michael.meissner@amd.com>
2424         Dwarakanath Rajagopal  <dwarak.rajagopal@amd.com>
2425         Tony Linthicum  <tony.linthicum@amd.com>
2426
2427         * config/i386/i386.h (TARGET_SSE5): New macro for SSE5.
2428         (TARGET_ROUND): New macro for the round/ptest instructions which
2429         are shared between SSE4.1 and SSE5.
2430         (OPTION_MASK_ISA_ROUND): Ditto.
2431         (OPTION_ISA_ROUND): Ditto.
2432         (TARGET_FUSED_MADD): New macro for -mfused-madd swtich.
2433         (TARGET_CPU_CPP_BUILTINS): Add SSE5 support.
2434
2435         * config/i386/i386.opt (-msse5): New switch for SSE5 support.
2436         (-mfused-madd): New switch to give users control over whether the
2437         compiler optimizes to use the multiply/add SSE5 instructions.
2438
2439         * config/i386/i386.c (enum pta_flags): Add PTA_SSE5.
2440         (ix86_handle_option): Turn off 3dnow if -msse5.
2441         (override_options): Add SSE5 support.
2442         (print_operand): %Y prints comparison codes for SSE5 com/pcom
2443         instructions.
2444         (ix86_expand_sse_movcc): Add SSE5 support.
2445         (ix86_expand_sse5_unpack): New function to use pperm to unpack a
2446         vector type to the next largest size.
2447         (ix86_expand_sse5_pack): New function to use pperm to pack a
2448         vector type to the next smallest size.
2449         (IX86_BUILTIN_FMADDSS): New for SSE5 intrinsic.
2450         (IX86_BUILTIN_FMADDSD): Ditto.
2451         (IX86_BUILTIN_FMADDPS): Ditto.
2452         (IX86_BUILTIN_FMADDPD): Ditto.
2453         (IX86_BUILTIN_FMSUBSS): Ditto.
2454         (IX86_BUILTIN_FMSUBSD): Ditto.
2455         (IX86_BUILTIN_FMSUBPS): Ditto.
2456         (IX86_BUILTIN_FMSUBPD): Ditto.
2457         (IX86_BUILTIN_FNMADDSS): Ditto.
2458         (IX86_BUILTIN_FNMADDSD): Ditto.
2459         (IX86_BUILTIN_FNMADDPS): Ditto.
2460         (IX86_BUILTIN_FNMADDPD): Ditto.
2461         (IX86_BUILTIN_FNMSUBSS): Ditto.
2462         (IX86_BUILTIN_FNMSUBSD): Ditto.
2463         (IX86_BUILTIN_FNMSUBPS): Ditto.
2464         (IX86_BUILTIN_FNMSUBPD): Ditto.
2465         (IX86_BUILTIN_PCMOV_V2DI): Ditto.
2466         (IX86_BUILTIN_PCMOV_V4SI): Ditto.
2467         (IX86_BUILTIN_PCMOV_V8HI): Ditto.
2468         (IX86_BUILTIN_PCMOV_V16QI): Ditto.
2469         (IX86_BUILTIN_PCMOV_V4SF): Ditto.
2470         (IX86_BUILTIN_PCMOV_V2DF): Ditto.
2471         (IX86_BUILTIN_PPERM): Ditto.
2472         (IX86_BUILTIN_PERMPS): Ditto.
2473         (IX86_BUILTIN_PERMPD): Ditto.
2474         (IX86_BUILTIN_PMACSSWW): Ditto.
2475         (IX86_BUILTIN_PMACSWW): Ditto.
2476         (IX86_BUILTIN_PMACSSWD): Ditto.
2477         (IX86_BUILTIN_PMACSWD): Ditto.
2478         (IX86_BUILTIN_PMACSSDD): Ditto.
2479         (IX86_BUILTIN_PMACSDD): Ditto.
2480         (IX86_BUILTIN_PMACSSDQL): Ditto.
2481         (IX86_BUILTIN_PMACSSDQH): Ditto.
2482         (IX86_BUILTIN_PMACSDQL): Ditto.
2483         (IX86_BUILTIN_PMACSDQH): Ditto.
2484         (IX86_BUILTIN_PMADCSSWD): Ditto.
2485         (IX86_BUILTIN_PMADCSWD): Ditto.
2486         (IX86_BUILTIN_PHADDBW): Ditto.
2487         (IX86_BUILTIN_PHADDBD): Ditto.
2488         (IX86_BUILTIN_PHADDBQ): Ditto.
2489         (IX86_BUILTIN_PHADDWD): Ditto.
2490         (IX86_BUILTIN_PHADDWQ): Ditto.
2491         (IX86_BUILTIN_PHADDDQ): Ditto.
2492         (IX86_BUILTIN_PHADDUBW): Ditto.
2493         (IX86_BUILTIN_PHADDUBD): Ditto.
2494         (IX86_BUILTIN_PHADDUBQ): Ditto.
2495         (IX86_BUILTIN_PHADDUWD): Ditto.
2496         (IX86_BUILTIN_PHADDUWQ): Ditto.
2497         (IX86_BUILTIN_PHADDUDQ): Ditto.
2498         (IX86_BUILTIN_PHSUBBW): Ditto.
2499         (IX86_BUILTIN_PHSUBWD): Ditto.
2500         (IX86_BUILTIN_PHSUBDQ): Ditto.
2501         (IX86_BUILTIN_PROTB): Ditto.
2502         (IX86_BUILTIN_PROTW): Ditto.
2503         (IX86_BUILTIN_PROTD): Ditto.
2504         (IX86_BUILTIN_PROTQ): Ditto.
2505         (IX86_BUILTIN_PROTB_IMM): Ditto.
2506         (IX86_BUILTIN_PROTW_IMM): Ditto.
2507         (IX86_BUILTIN_PROTD_IMM): Ditto.
2508         (IX86_BUILTIN_PROTQ_IMM): Ditto.
2509         (IX86_BUILTIN_PSHLB): Ditto.
2510         (IX86_BUILTIN_PSHLW): Ditto.
2511         (IX86_BUILTIN_PSHLD): Ditto.
2512         (IX86_BUILTIN_PSHLQ): Ditto.
2513         (IX86_BUILTIN_PSHAB): Ditto.
2514         (IX86_BUILTIN_PSHAW): Ditto.
2515         (IX86_BUILTIN_PSHAD): Ditto.
2516         (IX86_BUILTIN_PSHAQ): Ditto.
2517         (IX86_BUILTIN_FRCZSS): Ditto.
2518         (IX86_BUILTIN_FRCZSD): Ditto.
2519         (IX86_BUILTIN_FRCZPS): Ditto.
2520         (IX86_BUILTIN_FRCZPD): Ditto.
2521         (IX86_BUILTIN_CVTPH2PS): Ditto.
2522         (IX86_BUILTIN_CVTPS2PH): Ditto.
2523         (IX86_BUILTIN_COMEQSS): Ditto.
2524         (IX86_BUILTIN_COMNESS): Ditto.
2525         (IX86_BUILTIN_COMLTSS): Ditto.
2526         (IX86_BUILTIN_COMLESS): Ditto.
2527         (IX86_BUILTIN_COMGTSS): Ditto.
2528         (IX86_BUILTIN_COMGESS): Ditto.
2529         (IX86_BUILTIN_COMUEQSS): Ditto.
2530         (IX86_BUILTIN_COMUNESS): Ditto.
2531         (IX86_BUILTIN_COMULTSS): Ditto.
2532         (IX86_BUILTIN_COMULESS): Ditto.
2533         (IX86_BUILTIN_COMUGTSS): Ditto.
2534         (IX86_BUILTIN_COMUGESS): Ditto.
2535         (IX86_BUILTIN_COMORDSS): Ditto.
2536         (IX86_BUILTIN_COMUNORDSS): Ditto.
2537         (IX86_BUILTIN_COMFALSESS): Ditto.
2538         (IX86_BUILTIN_COMTRUESS): Ditto.
2539         (IX86_BUILTIN_COMEQSD): Ditto.
2540         (IX86_BUILTIN_COMNESD): Ditto.
2541         (IX86_BUILTIN_COMLTSD): Ditto.
2542         (IX86_BUILTIN_COMLESD): Ditto.
2543         (IX86_BUILTIN_COMGTSD): Ditto.
2544         (IX86_BUILTIN_COMGESD): Ditto.
2545         (IX86_BUILTIN_COMUEQSD): Ditto.
2546         (IX86_BUILTIN_COMUNESD): Ditto.
2547         (IX86_BUILTIN_COMULTSD): Ditto.
2548         (IX86_BUILTIN_COMULESD): Ditto.
2549         (IX86_BUILTIN_COMUGTSD): Ditto.
2550         (IX86_BUILTIN_COMUGESD): Ditto.
2551         (IX86_BUILTIN_COMORDSD): Ditto.
2552         (IX86_BUILTIN_COMUNORDSD): Ditto.
2553         (IX86_BUILTIN_COMFALSESD): Ditto.
2554         (IX86_BUILTIN_COMTRUESD): Ditto.
2555         (IX86_BUILTIN_COMEQPS): Ditto.
2556         (IX86_BUILTIN_COMNEPS): Ditto.
2557         (IX86_BUILTIN_COMLTPS): Ditto.
2558         (IX86_BUILTIN_COMLEPS): Ditto.
2559         (IX86_BUILTIN_COMGTPS): Ditto.
2560         (IX86_BUILTIN_COMGEPS): Ditto.
2561         (IX86_BUILTIN_COMUEQPS): Ditto.
2562         (IX86_BUILTIN_COMUNEPS): Ditto.
2563         (IX86_BUILTIN_COMULTPS): Ditto.
2564         (IX86_BUILTIN_COMULEPS): Ditto.
2565         (IX86_BUILTIN_COMUGTPS): Ditto.
2566         (IX86_BUILTIN_COMUGEPS): Ditto.
2567         (IX86_BUILTIN_COMORDPS): Ditto.
2568         (IX86_BUILTIN_COMUNORDPS): Ditto.
2569         (IX86_BUILTIN_COMFALSEPS): Ditto.
2570         (IX86_BUILTIN_COMTRUEPS): Ditto.
2571         (IX86_BUILTIN_COMEQPD): Ditto.
2572         (IX86_BUILTIN_COMNEPD): Ditto.
2573         (IX86_BUILTIN_COMLTPD): Ditto.
2574         (IX86_BUILTIN_COMLEPD): Ditto.
2575         (IX86_BUILTIN_COMGTPD): Ditto.
2576         (IX86_BUILTIN_COMGEPD): Ditto.
2577         (IX86_BUILTIN_COMUEQPD): Ditto.
2578         (IX86_BUILTIN_COMUNEPD): Ditto.
2579         (IX86_BUILTIN_COMULTPD): Ditto.
2580         (IX86_BUILTIN_COMULEPD): Ditto.
2581         (IX86_BUILTIN_COMUGTPD): Ditto.
2582         (IX86_BUILTIN_COMUGEPD): Ditto.
2583         (IX86_BUILTIN_COMORDPD): Ditto.
2584         (IX86_BUILTIN_COMUNORDPD): Ditto.
2585         (IX86_BUILTIN_COMFALSEPD): Ditto.
2586         (IX86_BUILTIN_COMTRUEPD): Ditto.
2587         (IX86_BUILTIN_PCOMEQUB): Ditto.
2588         (IX86_BUILTIN_PCOMNEUB): Ditto.
2589         (IX86_BUILTIN_PCOMLTUB): Ditto.
2590         (IX86_BUILTIN_PCOMLEUB): Ditto.
2591         (IX86_BUILTIN_PCOMGTUB): Ditto.
2592         (IX86_BUILTIN_PCOMGEUB): Ditto.
2593         (IX86_BUILTIN_PCOMFALSEUB): Ditto.
2594         (IX86_BUILTIN_PCOMTRUEUB): Ditto.
2595         (IX86_BUILTIN_PCOMEQUW): Ditto.
2596         (IX86_BUILTIN_PCOMNEUW): Ditto.
2597         (IX86_BUILTIN_PCOMLTUW): Ditto.
2598         (IX86_BUILTIN_PCOMLEUW): Ditto.
2599         (IX86_BUILTIN_PCOMGTUW): Ditto.
2600         (IX86_BUILTIN_PCOMGEUW): Ditto.
2601         (IX86_BUILTIN_PCOMFALSEUW): Ditto.
2602         (IX86_BUILTIN_PCOMTRUEUW): Ditto.
2603         (IX86_BUILTIN_PCOMEQUD): Ditto.
2604         (IX86_BUILTIN_PCOMNEUD): Ditto.
2605         (IX86_BUILTIN_PCOMLTUD): Ditto.
2606         (IX86_BUILTIN_PCOMLEUD): Ditto.
2607         (IX86_BUILTIN_PCOMGTUD): Ditto.
2608         (IX86_BUILTIN_PCOMGEUD): Ditto.
2609         (IX86_BUILTIN_PCOMFALSEUD): Ditto.
2610         (IX86_BUILTIN_PCOMTRUEUD): Ditto.
2611         (IX86_BUILTIN_PCOMEQUQ): Ditto.
2612         (IX86_BUILTIN_PCOMNEUQ): Ditto.
2613         (IX86_BUILTIN_PCOMLTUQ): Ditto.
2614         (IX86_BUILTIN_PCOMLEUQ): Ditto.
2615         (IX86_BUILTIN_PCOMGTUQ): Ditto.
2616         (IX86_BUILTIN_PCOMGEUQ): Ditto.
2617         (IX86_BUILTIN_PCOMFALSEUQ): Ditto.
2618         (IX86_BUILTIN_PCOMTRUEUQ): Ditto.
2619         (IX86_BUILTIN_PCOMEQB): Ditto.
2620         (IX86_BUILTIN_PCOMNEB): Ditto.
2621         (IX86_BUILTIN_PCOMLTB): Ditto.
2622         (IX86_BUILTIN_PCOMLEB): Ditto.
2623         (IX86_BUILTIN_PCOMGTB): Ditto.
2624         (IX86_BUILTIN_PCOMGEB): Ditto.
2625         (IX86_BUILTIN_PCOMFALSEB): Ditto.
2626         (IX86_BUILTIN_PCOMTRUEB): Ditto.
2627         (IX86_BUILTIN_PCOMEQW): Ditto.
2628         (IX86_BUILTIN_PCOMNEW): Ditto.
2629         (IX86_BUILTIN_PCOMLTW): Ditto.
2630         (IX86_BUILTIN_PCOMLEW): Ditto.
2631         (IX86_BUILTIN_PCOMGTW): Ditto.
2632         (IX86_BUILTIN_PCOMGEW): Ditto.
2633         (IX86_BUILTIN_PCOMFALSEW): Ditto.
2634         (IX86_BUILTIN_PCOMTRUEW): Ditto.
2635         (IX86_BUILTIN_PCOMEQD): Ditto.
2636         (IX86_BUILTIN_PCOMNED): Ditto.
2637         (IX86_BUILTIN_PCOMLTD): Ditto.
2638         (IX86_BUILTIN_PCOMLED): Ditto.
2639         (IX86_BUILTIN_PCOMGTD): Ditto.
2640         (IX86_BUILTIN_PCOMGED): Ditto.
2641         (IX86_BUILTIN_PCOMFALSED): Ditto.
2642         (IX86_BUILTIN_PCOMTRUED): Ditto.
2643         (IX86_BUILTIN_PCOMEQQ): Ditto.
2644         (IX86_BUILTIN_PCOMNEQ): Ditto.
2645         (IX86_BUILTIN_PCOMLTQ): Ditto.
2646         (IX86_BUILTIN_PCOMLEQ): Ditto.
2647         (IX86_BUILTIN_PCOMGTQ): Ditto.
2648         (IX86_BUILTIN_PCOMGEQ): Ditto.
2649         (IX86_BUILTIN_PCOMFALSEQ): Ditto.
2650         (IX86_BUILTIN_PCOMTRUEQ): Ditto.
2651         (enum multi_arg_type): New enum for describing the various SSE5
2652         intrinsic argument types.
2653         (bdesc_multi_arg): New table for SSE5 intrinsics.
2654         (ix86_init_mmx_sse_builtins): Add SSE5 intrinsic support.
2655         (ix86_expand_multi_arg_builtin): New function for creating SSE5
2656         intrinsics.
2657         (ix86_expand_builtin): Add SSE5 intrinsic support.
2658         (ix86_sse5_valid_op_p): New function to validate SSE5 3 and 4
2659         operand instructions.
2660         (ix86_expand_sse5_multiple_memory): New function to split the
2661         second memory reference from SSE5 instructions.
2662         (type_has_variadic_args_p): Delete in favor of stdarg_p.
2663         (ix86_return_pops_args): Use stdarg_p to determine if the function
2664         has variable arguments.
2665         (ix86_setup_incoming_varargs): Ditto.
2666         (x86_this_parameter): Ditto.
2667
2668         * config/i386/i386-protos.h (ix86_expand_sse5_unpack): Add
2669         declaration.
2670         (ix86_expand_sse5_pack): Ditto.
2671         (ix86_sse5_valid_op_p): Ditto.
2672         (ix86_expand_sse5_multiple_memory): Ditto.
2673
2674         * config/i386/i386.md (UNSPEC_SSE5_INTRINSIC): Add new UNSPEC
2675         constant for SSE5 support.
2676         (UNSPEC_SSE5_UNSIGNED_CMP): Ditto.
2677         (UNSPEC_SSE5_TRUEFALSE): Ditto.
2678         (UNSPEC_SSE5_PERMUTE): Ditto.
2679         (UNSPEC_SSE5_ASHIFT): Ditto.
2680         (UNSPEC_SSE5_LSHIFT): Ditto.
2681         (UNSPEC_FRCZ): Ditto.
2682         (UNSPEC_CVTPH2PS): Ditto.
2683         (UNSPEC_CVTPS2PH): Ditto.
2684         (PCOM_FALSE): Add new constant for true/false SSE5 comparisons.
2685         (PCOM_TRUE): Ditto.
2686         (COM_FALSE_S): Ditto.
2687         (COM_FALSE_P): Ditto.
2688         (COM_TRUE_S): Ditto.
2689         (COM_TRUE_P): Ditto.
2690         (type attribute): Add ssemuladd, sseiadd1, ssecvt1, sse4arg types.
2691         (unit attribute): Add support for ssemuladd, ssecvt1, sseiadd1 sse4arg
2692         types.
2693         (memory attribute): Ditto.
2694         (sse4_1_round<mode>2): Use TARGET_ROUND instead of TARGET_SSE4_1.
2695         Use SSE4_1_ROUND_* constants instead of hard coded numbers.
2696         (rint<mode>2): Use TARGET_ROUND instead of TARGET_SSE4_1.
2697         (floor<mode>2): Ditto.
2698         (ceil<mode>2): Ditto.
2699         (btrunc<mode>2): Ditto.
2700         (nearbyintdf2): Ditto.
2701         (nearbyintsf2): Ditto.
2702         (sse_setccsf): Disable if SSE5.
2703         (sse_setccdf): Ditto.
2704         (sse5_setcc<mode>): New support for SSE5 conditional move.
2705         (sse5_pcmov_<mode>): Ditto.
2706
2707         * config/i386/sse.md (SSEMODE1248): New mode iterator for SSE5.
2708         (SSEMODEF4): Ditto.
2709         (SSEMODEF2P): Ditto.
2710         (ssemodesuffixf4): New mode attribute for SSE5.
2711         (ssemodesuffixf2s): Ditto.
2712         (ssemodesuffixf2c): Ditto.
2713         (sserotatemax): Ditto.
2714         (ssescalarmode): Ditto.
2715         (sse_maskcmpv4sf3): Disable if SSE5.
2716         (sse_maskcmpv2df3): Ditto.
2717         (sse_vmmaskcmpv4sf3): Ditto.
2718         (sse5_fmadd<mode>4): Add SSE5 floating point multiply/add instructions.
2719         (sse5_vmfmadd<mode>4): Ditto.
2720         (sse5_fmsub<mode>4): Ditto.
2721         (sse5_vmfmsub<mode>4): Ditto.
2722         (sse5_fnmadd<mode>4): Ditto.
2723         (sse5_vmfnmadd<mode>4): Ditto.
2724         (sse5_fnmsub<mode>4): Ditto.
2725         (sse5_vmfnmsub<mode>4): Ditto.
2726         (sse5i_fmadd<mode>4): Ditto.
2727         (sse5i_fmsub<mode>4): Ditto.
2728         (sse5i_fnmadd<mode>4): Ditto.
2729         (sse5i_fnmsub<mode>4): Ditto.
2730         (sse5i_vmfmadd<mode>4): Ditto.
2731         (sse5i_vmfmsub<mode>4): Ditto.
2732         (sse5i_vmfnmadd<mode>4): Ditto.
2733         (sse5i_vmfnmsub<mode>4): Ditto.
2734         (mulv16qi3): Add SSE5 support.
2735         (mulv4si3): Ditto.
2736         (sse5_mulv4si3): New insn for 32-bit multiply support on SSE5.
2737         (sse2_mulv4si3): Disable if SSE5.
2738         (sse4_1_roundpd): Use TARGET_ROUND instead of TARGET_SSE4_1.
2739         (sse4_1_roundps): Ditto.
2740         (sse4_1_roundsd): Ditto.
2741         (sse4_1_roundss): Ditto.
2742         (sse_maskcmpv4sf3): Disable if SSE5 so the SSE5 instruction will
2743         be generated.
2744         (sse_maskcmpsf3): Ditto.
2745         (sse_vmmaskcmpv4sf3): Ditto.
2746         (sse2_maskcmpv2df3): Ditto.
2747         (sse2_maskcmpdf3): Ditto.
2748         (sse2_vmmaskcmpv2df3): Ditto.
2749         (sse2_eq<mode>3): Ditto.
2750         (sse2_gt<mode>3): Ditto.
2751         (sse5_pcmov_<mode>): Add SSE5 support.
2752         (vec_unpacku_hi_v16qi): Ditto.
2753         (vec_unpacks_hi_v16qi): Ditto.
2754         (vec_unpacku_lo_v16qi): Ditto.
2755         (vec_unpacks_lo_v16qi): Ditto.
2756         (vec_unpacku_hi_v8hi): Ditto.
2757         (vec_unpacks_hi_v8hi): Ditto.
2758         (vec_unpacku_lo_v8hi): Ditto.
2759         (vec_unpacks_lo_v8hi): Ditto.
2760         (vec_unpacku_hi_v4si): Ditto.
2761         (vec_unpacks_hi_v4si): Ditto.
2762         (vec_unpacku_lo_v4si): Ditto.
2763         (vec_unpacks_lo_v4si): Ditto.
2764         (sse5_pmacsww): New SSE5 intrinsic insn.
2765         (sse5_pmacssww): Ditto.
2766         (sse5_pmacsdd): Ditto.
2767         (sse5_pmacssdd): Ditto.
2768         (sse5_pmacssdql): Ditto.
2769         (sse5_pmacssdqh): Ditto.
2770         (sse5_pmacsdqh): Ditto.
2771         (sse5_pmacsswd): Ditto.
2772         (sse5_pmacswd): Ditto.
2773         (sse5_pmadcsswd): Ditto.
2774         (sse5_pmadcswd): Ditto.
2775         (sse5_pcmov_<move>): Conditional move support on SSE5.
2776         (sse5_phaddbw): New SSE5 intrinsic insn.
2777         (sse5_phaddbd): Ditto.
2778         (sse5_phaddbq): Ditto.
2779         (sse5_phaddwd): Ditto.
2780         (sse5_phaddwq): Ditto.
2781         (sse5_phadddq): Ditto.
2782         (sse5_phaddubw): Ditto.
2783         (sse5_phaddubd): Ditto.
2784         (sse5_phaddubq): Ditto.
2785         (sse5_phadduwd): Ditto.
2786         (sse5_phadduwq): Ditto.
2787         (sse5_phaddudq): Ditto.
2788         (sse5_phsubbw): Ditto.
2789         (sse5_phsubwd): Ditto.
2790         (sse5_phsubdq): Ditto.
2791         (sse5_pperm): Ditto.
2792         (sse5_pperm_sign_v16qi_v8hi): New insns for pack/unpack with SSE5.
2793         (sse5_pperm_zero_v16qi_v8hi): Ditto.
2794         (sse5_pperm_sign_v8hi_v4si): Ditto.
2795         (sse5_pperm_zero_v8hi_v4si): Ditto.
2796         (sse5_pperm_sign_v4si_v2di): Ditto.
2797         (sse5_pperm_sign_v4si_v2di): Ditto.
2798         (sse5_pperm_pack_v2di_v4si): Ditto.
2799         (sse5_pperm_pack_v4si_v8hi): Ditto.
2800         (sse5_pperm_pack_v8hi_v16qi): Ditto.
2801         (sse5_perm<mode>): New SSE5 intrinsic insn.
2802         (rotl<mode>3): Ditto.
2803         (sse5_rotl<mode>3): Ditto.
2804         (sse5_ashl<mode>3): Ditto.
2805         (sse5_lshl<mode>3): Ditto.
2806         (sse5_frcz<mode>2): Ditto.
2807         (sse5s_frcz<mode>2): Ditto.
2808         (sse5_cvtph2ps): Ditto.
2809         (sse5_cvtps2ph): Ditto.
2810         (sse5_vmmaskcmp<mode>3): Ditto.
2811         (sse5_com_tf<mode>3): Ditto.
2812         (sse5_maskcmp<mode>3): Ditto.
2813         (sse5_maskcmp_uns<mode>3): Ditto.
2814         (sse5_maskcmp_uns2<mode>3): Ditto.
2815         (sse5_pcom_tf<mode>3): Ditto.
2816
2817         * config/i386/predicates.md (sse5_comparison_float_operator):
2818         New predicate to match the comparison operators supported by
2819         the SSE5 com instruction.
2820         (ix86_comparison_int_operator): New predicate to match just the
2821         signed int comparisons.
2822         (ix86_comparison_uns_operator): New predicate to match just the
2823         unsigned int comparisons.
2824
2825         * doc/invoke.texi (-msse5): Add documentation.
2826         (-mfused-madd): Ditto.
2827
2828         * doc/extend.texi (x86 intrinsics): Document new SSE5 intrinsics.
2829
2830         * config.gcc (i[34567]86-*-*): Include bmmintrin.h and
2831         mmintrin-common.h.
2832         (x86_64-*-*): Ditto.
2833
2834         * config/i386/cpuid.h (bit_SSE5): Define SSE5 bit.
2835
2836         * config/i386/bmmintrin.h: New file, provide common x86 compiler
2837         intrinisics for SSE5.
2838
2839         * config/i386/smmintrin.h: Move instructions shared with SSE5 to
2840         mmintrin-common.h.
2841
2842         * config/i386/mmintrin-common.h: New file, to contain common
2843         instructions between SSE4.1 and SSE5.
2844
2845         * config/i386/netware.c (gen_stdcall_or_fastcall_decoration): Use
2846         FOREACH_FUNCTION_ARGS to iterate over the argument list.
2847         (gen_regparm_prefix): Ditto.
2848
2849         * config/i386/winnt.c (gen_stdcall_or_fastcall_suffix): Use
2850         FOREACH_FUNCTION_ARGS to iterate over the argument list.  Use
2851         prototype_p to determine if a function is prototyped.
2852
2853 2009-08-25 Ville Voutilainen <ville.voutilainen@gmail.com>
2854
2855         * c-common.c (c_common_reswords) add the alignof keyword,
2856         with same RID as __alignof and __alignof__
2857
2858 2009-08-25  Anatoly Sokolov  <aesok@post.ru>
2859
2860         * hooks.h (hook_bool_const_int_const_int_true): Declare.
2861         * hooks.c (hook_bool_const_int_const_int_true): New function.
2862         * target.h (struct gcc_target): Add can_eliminate field.
2863         * target-def.h (TARGET_CAN_ELIMINATE): Define.
2864         (TARGET_INITIALIZER): Use TARGET_CAN_ELIMINATE.
2865         * ira.c (setup_eliminable_regset): Use can_eliminate target hook.
2866         * reload1.c (update_eliminables, init_elim_table): (Ditto.).
2867         (elim_table): Revise comment.
2868         * system.h (CAN_ELIMINATE): Poison.
2869         * defaults.h (CAN_ELIMINATE): Remove.
2870         * doc/tm.texi (CAN_ELIMINATE): Revise documentation.
2871
2872         * config/alpha/vms.h (CAN_ELIMINATE): Remove macro.
2873         * config/alpha/alpha.c (TARGET_CAN_ELIMINATE) [TARGET_ABI_OPEN_VMS]:
2874         Define macro.
2875         (alpha_vms_can_eliminate): Declare as static, change return type to
2876         bool.
2877         * config/alpha/alpha-protos.h (alpha_vms_can_eliminate): Remove.
2878
2879         * config/arm/arm.h (CAN_ELIMINATE): Remove macro.
2880         * config/arm/arm.c (TARGET_CAN_ELIMINATE): Define macro.
2881         (arm_can_eliminate): New function.
2882
2883         * config/avr/avr.h (CAN_ELIMINATE): Remove macro.
2884         * config/avr/avr.c (TARGET_CAN_ELIMINATE): Define macro.
2885         (avr_can_eliminate): Declare as static.
2886         * config/avr/avr-protos.h (avr_can_eliminate): Remove.
2887
2888         * config/bfin/bfin.h (CAN_ELIMINATE): Remove macro.
2889         * config/bfin/bfin.c (TARGET_CAN_ELIMINATE): Define macro.
2890         (bfin_can_eliminate): New function.
2891
2892         * config/crx/crx.h (CAN_ELIMINATE): Remove macro.
2893         * config/crx/crx.c (TARGET_CAN_ELIMINATE): Define macro.
2894         (crx_can_eliminate): New function.
2895
2896         * config/fr30/fr30.h (CAN_ELIMINATE): Remove macro.
2897         * config/fr30/fr30.c (TARGET_CAN_ELIMINATE): Define macro.
2898         (fr30_can_eliminate): New function.
2899
2900         * config/frv/frv.h (CAN_ELIMINATE): Remove macro.
2901         * config/frv/frv.c (TARGET_CAN_ELIMINATE): Define macro.
2902         (frv_can_eliminate): New function.
2903
2904         * config/h8300/h8300.h (CAN_ELIMINATE): Remove macro.
2905         * config/h8300/h8300.c (TARGET_CAN_ELIMINATE): Define macro.
2906         (h8300_can_eliminate): New function.
2907
2908         * config/i386/i386.h (CAN_ELIMINATE): Remove macro.
2909         * config/i386/i386.c (TARGET_CAN_ELIMINATE): Define macro.
2910         (i386_can_eliminate): Declare as static, change return type to bool.
2911         * config/i386/i386-protos.h (i386_can_eliminate): Remove.
2912
2913         * config/ia64/ia64.h (CAN_ELIMINATE): Remove macro.
2914         * config/ia64/ia64.c (TARGET_CAN_ELIMINATE): Define macro.
2915         (ia64_can_eliminate): New function.
2916
2917         * config/iq2000/iq2000.h (CAN_ELIMINATE): Remove macro.
2918         * config/iq2000/iq2000.c (TARGET_CAN_ELIMINATE): Define macro.
2919         (iq2000_can_eliminate): New function.
2920
2921         * config/m32r/m32r.h (CAN_ELIMINATE): Remove macro.
2922         * config/m32r/m32r.c (TARGET_CAN_ELIMINATE): Define macro.
2923         (m32r_can_eliminate): New function.
2924
2925         * config/m68hc11/m68hc11.h (CAN_ELIMINATE): Remove macro.
2926         * config/m68hc11/m68hc11.c (TARGET_CAN_ELIMINATE): Define macro.
2927         (m68hc11_can_eliminate): New function.
2928
2929         * config/m68k/m68k.h (CAN_ELIMINATE): Remove macro.
2930         * config/m68k/m68k.c (TARGET_CAN_ELIMINATE): Define macro.
2931         (m68k_can_eliminate): New function.
2932
2933         * config/mep/mep.h (CAN_ELIMINATE): Remove macro.
2934         * config/mep/mep.c (TARGET_CAN_ELIMINATE): Define macro.
2935         (mep_can_eliminate): New function.
2936
2937         * config/mips/mips.h (CAN_ELIMINATE): Remove macro.
2938         * config/mips/mips.c (TARGET_CAN_ELIMINATE): Define macro.
2939         (mips_can_eliminate): New function.
2940
2941         * config/rs6000/rs6000.h (CAN_ELIMINATE): Remove macro.
2942         * config/rs6000/rs6000.c (TARGET_CAN_ELIMINATE): Define macro.
2943         (rs6000_can_eliminate): New function.
2944
2945         * config/s390/s390.h (CAN_ELIMINATE): Remove macro.
2946         * config/s390/s390.c (TARGET_CAN_ELIMINATE): Define macro.
2947         (s390_can_eliminate): Declare as static.
2948         * config/s390/s390-protos.h (sparc_can_eliminate): Remove.
2949
2950         * config/score/score.h (CAN_ELIMINATE): Remove macro.
2951         * config/score/score.c (TARGET_CAN_ELIMINATE): Define macro.
2952         (score_can_eliminate): New function.
2953
2954         * config/sparc/sparc.h (CAN_ELIMINATE): Remove macro.
2955         * config/sparc/sparc.c (TARGET_CAN_ELIMINATE): Define macro.
2956         (sparc_can_eliminate): Declare as static.
2957         * config/sparc/sparc-protos.h (sparc_can_eliminate): Remove.
2958
2959         * config/stormy16/stormy16.h (CAN_ELIMINATE): Remove macro.
2960         * config/stormy16/stormy16.c (TARGET_CAN_ELIMINATE): Define macro.
2961         (xstormy16_can_eliminate): New function.
2962
2963         * config/v850/v850.h (CAN_ELIMINATE): Remove macro.
2964         * config/v850/v850.c (TARGET_CAN_ELIMINATE): Define macro.
2965         (v850_can_eliminate): New function.
2966
2967 2009-08-25  Uros Bizjak  <ubizjak@gmail.com>
2968
2969         * config/alpha/alpha.md (*cmpdf_ieee_ext[123]): Remove.
2970         (*cmpdf_internal): Enable for all ALPHA_FPTM levels.
2971         (*movdfcc_ext[1234]): Disable for IEEE mode.
2972
2973 2009-08-25  Eric Botcazou  <ebotcazou@adacore.com>
2974
2975         * gimplify.c (prepare_gimple_addressable): New static function.
2976         (gimplify_modify_expr_to_memcpy): Invoke it on the RHS before marking
2977         it addressable.
2978         (gimplify_addr_expr): Invoke it similarly on the operand instead of
2979         manually fiddling with it.
2980
2981 2009-08-25  Michael Matz  <matz@suse.de>
2982
2983         * expr.h (jumpifnot_1, jumpif_1, do_jump_1): Declare.
2984         * dojump.c (do_jump_by_parts_greater): Take two operands instead of
2985         full expression.
2986         (do_jump_by_parts_equality, do_compare_and_jump): Ditto.
2987         (jumpifnot_1, jumpif_1): New wrappers for do_jump_1.
2988         (do_jump): Split out code for simple binary comparisons into ...
2989         (do_jump_1): ... this, taking the individual operands and code.
2990         Change callers to helper function above accordingly.
2991         * expr.c (expand_expr_real_1): Use jumpifnot_1 for simple binary
2992         comparisons.
2993
2994 2009-08-25  Michael Matz  <matz@suse.de>
2995
2996         * expr.h (struct separate_ops, sepops): New type for passing
2997         around an exploded simple expression.
2998         * optabs.c (expand_widen_pattern_expr, expand_vec_shift_expr):
2999         Use this structure instead of expression tree.
3000         (get_vcond_icode, expand_vec_cond_expr_p): Don't take whole
3001         expression, only its type.
3002         (expand_vec_cond_expr): Take type and individual operands instead
3003         of full expression.
3004         * optabs.h (expand_widen_pattern_expr, expand_vec_cond_expr,
3005         expand_vec_shift_expr): Change prototype accordingly.
3006         * tree-vect-stmts.c (vectorizable_condition): Change call of
3007         expand_vec_cond_expr_p to pass only type.
3008         * expr.c (do_store_flags): Change prototype and implementation
3009         to take an exploded expression.
3010         (expand_expr_real_1): New local ops initialized with details
3011         of the full expression.  Use it instead of full
3012         expression in calls to do_store_flags, expand_vec_cond_expr,
3013         expand_widen_pattern_expr and expand_vec_shift_expr.
3014
3015 2009-08-25  Michael Matz  <matz@suse.de>
3016
3017         * expr.c (expand_expr_real_1): New local treeop0, treeop1,
3018         treeop2 initialized with first three operands of the full expression.
3019         Substitute all TREE_OPERAND (exp, [012]) calls with them.
3020
3021 2009-08-25  Kai Tietz  <kai.tietz@onevision.com>
3022
3023         * gcc/gthr-win32.h (__UNUSED_PARAM): Define, if not already present.
3024         (__gthread_objc_condition_allocate): Mark arguments as unused.
3025         (__gthread_objc_condition_deallocate): Likewise.
3026         (__gthread_objc_condition_wait): Likewise.
3027         (__gthread_objc_condition_broadcast): Likewise.
3028         (__gthread_objc_condition_signal): Likewise.
3029         (__gthread_objc_thread_detach): Cast via INT_PTR to pointer.
3030         (__gthread_objc_thread_id): Likewise.
3031
3032 2009-08-25  Janus Weil  <janus@gcc.gnu.org>
3033
3034         PR middle-end/41149
3035         * tree-pretty-print.c (print_call_name): Print the correct call name
3036         for procedure pointer components.
3037
3038 2009-08-24  Steve Ellcey  <sje@cup.hp.com>
3039
3040         * config/ia64/ia64.c (ia64_promote_function_mode): Call
3041         default_promote_function_mode when not VMS.
3042
3043 2009-08-24  Olivier Hainque  <hainque@adacore.com>
3044
3045         * convert.c (convert_to_integer): Don't assume an input pointer is
3046         POINTER_SIZE wide.  Fetch from the type instead.
3047
3048 2009-08-24  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
3049
3050         * configure.ac (AC_PREREQ): Bump to 2.64.
3051
3052 2009-08-24  Rafael Avila de Espindola  <espindola@google.com>
3053
3054         * gcc.c (standard_exec_prefix_1,standard_exec_prefix_2): Remove.
3055         (process_command): Don't search standard_exec_prefix_1 and
3056         standard_exec_prefix_2.
3057
3058 2009-08-24  Ramana Radhakrishnan  <ramana.radhakrishnan@arm.com>
3059
3060         * config/arm/arm.c (output_return_instruction): Handle for
3061         unified syntax.
3062
3063 2009-08-24  Ramana Radhakrishnan  <ramana.radhakrishnan@arm.com>
3064
3065         * config/arm/arm.c (arm_select_cc_mode): Handle subreg.
3066
3067 2009-08-24  Ramana Radhakrishnan  <ramana.radhakrishnan@arm.com>
3068
3069         * config/arm/vfp.md (*arm_movdi_vfp): Mark as predicable.
3070         (*arm_movdf_vfp): Likewise.
3071
3072 2009-08-24  Ramana Radhakrishnan  <ramana.radhakrishnan@arm.com>
3073
3074         * config/arm/neon.md (vashl<mode>3): Rename from ashl<mode>3.
3075         (vashr<mode>3): Rename from ashr<mode>3.
3076         (vlshr<mode>3): Rename from lshr<mode>3.
3077
3078 2009-08-24  Kai Tietz  <kai.tietz@onevision.com>
3079
3080         PR/40786
3081         * c-format.c (format_wanted_type): Add new member scalar_identity_flag.
3082         (check_format_info_main): Use scalar_identify_flag.
3083         (check_format_types): Check for scalar size identity if
3084         scalar_identify_flag is set.
3085         (printf_length_specs): Extend by new field.
3086         (asm_fprintf_length_specs): Likewise.
3087         (gcc_diag_length_specs): Likewise.
3088         (scanf_length_specs): Likewise.
3089         (strfmon_length_specs): Likewise.
3090         (gcc_gfc_length_specs): Likewise.
3091         * config/i386/msformat-c.c (ms_printf_length_specs): Likewise.
3092         (ms_printf_flag_specs): Likewise.
3093         * c-format.h (format_length_info): Add new member scalar_identity_flag.
3094
3095 2009-08-23  Uros Bizjak  <ubizjak@gmail.com>
3096
3097         PR target/40718
3098         * config/i386/i386.c (*call_pop_1): Disable for sibling calls.
3099         (*call_value_pop_1): Ditto.
3100         (*sibcall_pop_1): New insn pattern.
3101         (*sibcall_value_pop_1): Ditto.
3102
3103 2009-08-23  Alan Modra  <amodra@bigpond.net.au>
3104
3105         PR target/41081
3106         * config/rs6000/rs6000.md (rotlsi3_64, ashlsi3_64, lshrsi3_64,
3107         ashrsi3_64): New.
3108
3109 2009-08-23  Alan Modra  <amodra@bigpond.net.au>
3110
3111         PR target/41081
3112         * fwprop.c (try_fwprop_subst): Allow multiple sets.
3113         (get_reg_use_in): New function.
3114         (forward_propagate_subreg): Propagate through subreg of zero_extend
3115         or sign_extend.
3116
3117 2009-08-22  Kaz Kojima  <kkojima@gcc.gnu.org>
3118
3119         * config/sh/t-sh (TARGET_LIBGCC2_CFLAGS): Define.
3120         * config/sh/t-netbsd (TARGET_LIBGCC2_CFLAGS): Add -mieee.
3121
3122 2009-08-22  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
3123
3124         * configure.ac: Remove --with-datarootdir, --with-docdir,
3125         --with-htmldir switches.  No need to call AC_SUBST for
3126         datarootdir, docdir, htmldir any more.
3127         * configure: Regenerate.
3128         * doc/install.texi (Configuration): Document --datarootdir,
3129         --docdir, --htmldir, --pdfdir; update documentation for
3130         --infodir, --mandir.
3131         (Prerequisites): Bump Autoconf version to 2.64, Automake to 1.11,
3132         M4 to 1.4.6.
3133
3134         * aclocal.m4: Regenerate.
3135         * config.in: Regenerate.
3136         * configure: Regenerate.
3137
3138 2009-08-21  Douglas B Rupp  <rupp@gnat.com>
3139             Olivier Hainque  <hainque@adacore.com>
3140
3141         * config/ia64/ia64.c: Include libfuncs.h.
3142         (TARGET_PROMOTE_FUNCITON_MODE): Define target macro.
3143         (ia64_expand_call): Use reg 25 on VMS.
3144         (ia64_initialize_trampoline): Fix for VMS ABI.
3145         (ia64_function_arg_offset): Always returns 0 when TARGET_ABI_OPEN_VMS.
3146         (ia64_function_arg): Initialize reg 25 on VMS.
3147         Fix OpenVMS ABI issues for varargs.
3148         For OpenVMS, emit the Argument Information register set in the
3149         incoming/sibcall case as well.
3150         (ia64_arg_type): New function.
3151         (ia64_function_arg_advance): Keep track of cum->words.
3152         Fix OpenVMS ABI issues for varargs.
3153         (ia64_function_value): On VMS, promote mode of non-aggregate types.
3154         (ia64_override_options): Set flag_no_common on VMS.
3155         (ia64_init_builtins): Disable FWRITE builtin.
3156         (ia64_asm_output_external): Call DO_CRTL_NAMES.
3157         (ia64_vms_init_libfuncs): Add decc$ routines.
3158         (ia64_vms_valid_pointer_mode): New function.
3159         (ia64_struct_value_rtx): Allways NULL_RTX on VMS.
3160         (ia64_promote_function_mode): New function
3161         * config/ia64/ia64.h (TARGET_ABI_OPEN_VMS): Define as 0 for default.
3162         (LONG_DOUBLE_TYPE_SIZE): Force to 64 on VMS.
3163         (LIBCGC2_LONG_DOUBLE_TYPE_SIZE): Likewise.
3164         (INIT_CUMULATIVE_ARGS): Add atypes for VMS.
3165         (INIT_CUMULATIVE_INCOMING_ARGS): Likewise.
3166         (ASM_OUTPUT_DEF): Use ISDIGIT instead of isdigit.
3167         Suppress trailing '#' if VALUE is numeric.
3168         * config/ia64/vms.h (PROMOTE_FUNCTION_MODE): Remove, code moved to
3169         ia64_promote_function_mode.
3170         (TARGET_VALID_POINTER_MODE): Define.
3171
3172 2009-08-21  Michael Meissner  <meissner@linux.vnet.ibm.com>
3173
3174         PR target/40671
3175         * config/rs6000/rs6000.c (rs6000_override_options): Use
3176         TARGET_64BIT instead of TARGET_POWERPC64 to set the size of pointers.
3177
3178         PR target/41145
3179         * config/rs6000/rs6000.c (rs6000_handle_altivec_attribute): Fix
3180         reporting of vector + decimal/boolean/complex error.
3181
3182 2009-08-21  Jakub Jelinek  <jakub@redhat.com>
3183
3184         * config/rs6000/rs6000.c (rs6000_init_builtins): Fix type of
3185         __vector double TYPE_DECL.
3186
3187 2009-08-21  Richard Earnshaw  <rearnsha@arm.com>
3188
3189         * arm.h (MACHMODE): New define.  Include insn-modes.h if available.
3190         (CUMULATIVE_ARGS): Use MACHMODE for declaration of aapcs_vfp_mode.
3191         * arm.c (aapcs_vfp_is_call_or_return_candidate): Change base_mode
3192         to pointer to enum machine_mode.  Update all callers as needed.
3193
3194 2009-08-21 Uros Bizjak <ubizjak@gmail.com>
3195
3196         * config/alpha/alpha.md (exception_receiver): Emit alternative
3197         GP load sequence if flag_reorder_blocks_and_partition is set.
3198         (*exception_receiver_2): Also enable when
3199         flag_reorder_blocks_and_partition is set.
3200
3201 2009-08-20  Matt Rice  <ratmice@gmail.com>
3202             Diego Novillo  <dnovillo@google.com>
3203
3204         * Makefile.in (PLUGIN_HEADERS): Include incpath.h and
3205         tree-ssa-sccvn.h.
3206
3207 2009-08-20  Richard Guenther  <rguenther@suse.de>
3208
3209         * c-objc-common.h (LANG_HOOKS_DUP_LANG_SPECIFIC_DECL): Do not define.
3210         * c-tree.h (c_dup_lang_specific_decl): Remove.
3211         (struct lang_decl, struct lang_type): Move definitions ...
3212         * c-lang.h: ... here.  New file.
3213         * c-decl.c: Include c-lang.h.
3214         (c_dup_lang_specific_decl): Remove.
3215         * c-typeck.c: Include c-lang.h.
3216         * Makefile.in (c-decl.o): Add c-lang.h dependency.
3217         (c-typeck.o): Likewise.
3218         * c-config-lang.in (gtfiles): Add c-lang.h.
3219         * gengtype.c (get_output_file_with_visibility): Handle c-lang.h
3220         like c-tree.h.
3221
3222 2009-08-20  Uros Bizjak  <ubizjak@gmail.com>
3223
3224         * config/alpha/alpha.c (alpha_end_function): Do not clear
3225         crtl->emit structure and free insn locators if cfun->is_thunk is true,
3226         this is now handled in generic code.
3227
3228 2009-08-20  Andreas Krebbel  <krebbel1@de.ibm.com>
3229
3230         * config/s390/s390.c (Z10_PREDICT_DISTANCE): New macro.
3231         (s390_z10_fix_long_loop_prediction): New function.
3232         (s390_z10_optimize_cmp): INSN walk moved to callee - s390_reorg.
3233         (s390_reorg): Walk over the INSNs and invoke
3234         s390_z10_fix_long_loop_prediction and s390_z10_optimize_cmp.
3235
3236 2009-08-20  Andreas Krebbel  <krebbel1@de.ibm.com>
3237
3238         * config/s390/s390.md ("*brx_stage1_<GPR:mode>", "*brxg_64bit",
3239         "*brx_64bit", "*brx_31bit"): New patterns.
3240         * config/s390/s390.c ('E'): New output modifier.
3241
3242 2009-08-20  Ramana Radhakrishnan  <ramana.radhakrishnan@arm.com>
3243             Richard Earnshaw  <richard.earnshaw@arm.com>
3244
3245         * config/arm/arm.c (arm_emit_movpair): Handle CONST_INT.
3246         * config/arm/arm.md (*arm_movtas_ze): New pattern for movt.
3247
3248 2009-08-19  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
3249
3250         * pa.md (reload_inhi, reload_outhi, reload_inqi, reload_outqi): New
3251         patterns.
3252         * pa.c (emit_move_sequence): Check if address of operand1 is valid
3253         for mode mode of operand0 when doing secondary reload for SAR.
3254
3255 2009-08-19  Jakub Jelinek  <jakub@redhat.com>
3256
3257         PR middle-end/41123
3258         * expr.c (expand_expr_real_1) <normal_inner_ref>: Handle all kinds
3259         of CONCAT, not just bitpos 0 bitsize size of the whole CONCAT.
3260
3261 2009-08-19  Jason Merrill  <jason@redhat.com>
3262
3263         * doc/invoke.texi (C++ Dialect Options): Note change of minimum
3264         supported template depth in C++0x.
3265
3266 2009-08-19  Jakub Jelinek  <jakub@redhat.com>
3267
3268         * config/rs6000/rs6000.c (rs6000_output_mi_thunk): Don't call
3269         free_after_compilation.
3270         * config/score/score7.c (score7_output_mi_thunk): Likewise.
3271         * config/score/score3.c (score3_output_mi_thunk): Likewise.
3272         * config/ia64/ia64.c (ia64_output_mi_thunk): Likewise.
3273         * config/mips/mips.c (mips_output_mi_thunk): Likewise.
3274         * config/sh/sh.c (sh_output_mi_thunk): Likewise.
3275         * config/m68k/m68k.c (m68k_output_mi_thunk): Likewise.
3276         * config/sparc/sparc.c (sparc_output_mi_thunk): Likewise.
3277
3278 2009-08-19  Ian Lance Taylor  <iant@google.com>
3279
3280         * doc/md.texi (Insn Canonicalizations): Correct canonicalization
3281         of (plus (mult (neg B) C) A).
3282
3283 2009-08-18  Michael Matz  <matz@suse.de>
3284
3285         * omp-low.c (optimize_omp_library_calls): Use types_compatible_p
3286         instead of comparing TYPE_MAIN_VARIANT for equality.
3287         * tree-vect-patterns.c (vect_recog_dot_prod_pattern,
3288         vect_recog_widen_mult_pattern, vect_recog_widen_sum_pattern): Ditto.
3289         * tree-vect-loop.c (vect_is_simple_reduction): Ditto.
3290         * gimplify.c (goa_lhs_expr_p): Ditto and use
3291         STRIP_USELESS_TYPE_CONVERSION.
3292
3293 2009-08-18  Michael Matz  <matz@suse.de>
3294
3295         * tree-ssa-structalias.c (create_variable_info_for): Also mark
3296         first field in a struct.
3297         (intra_create_variable_infos): Don't deal with flag_argument_noalias.
3298
3299 2009-08-18  Uros Bizjak  <ubizjak@gmail.com>
3300
3301         * config/alpha/alpha.c (alpha_output_mi_thunk_osf): Allocate insn
3302         locators before emit_insn is called.  Remove assert that
3303         cfun->is_thunk.
3304         (alpha_end_function): Clear crtl->emit structure and free insn
3305         locators if cfun->is_thunk is true.
3306
3307 2009-08-18  Jason Merrill  <jason@redhat.com>
3308
3309         * config/elfos.h (ASM_DECLARE_OBJECT_NAME): Use gnu_unique_object
3310         type if available.
3311         * configure.ac: Test for it.
3312         * configure, config.in: Regenerate.
3313         * doc/install.texi: Document --enable-gnu-unique-object.
3314
3315 2009-08-18  Richard Guenther  <rguenther@suse.de>
3316
3317         PR middle-end/41094
3318         * builtins.c (fold_builtin_pow): Fold pow(pow(x,y),z) to
3319         pow(x,y*z) only if x is nonnegative.
3320
3321 2009-08-18  Jakub Jelinek  <jakub@redhat.com>
3322
3323         * bb-reorder.c (fix_up_fall_thru_edges): Only call invert_jump
3324         on jumps.
3325
3326         PR target/40971
3327         * config/rs6000/rs6000.c (rs6000_legitimize_address): For
3328         [DT][FDI]mode ensure the offset isn't 4/8/12 bytes below 0x8000.
3329
3330 2009-08-17  DJ Delorie  <dj@redhat.com>
3331
3332         * config/m32c/m32c.md (UNS_FSETB, UNS_FREIT): New.
3333         * config/m32c/prologue.md (epilogue_freit): New.
3334         (fset_b): New.
3335         * config/m32c/m32c.c (m32c_function_needs_enter): Add prototype.
3336         (bank_switch_p): Likewise.
3337         (fast_interrupt_p): Likewise.
3338         (interrupt_p): Likewise.
3339         (m32c_conditional_register_usage): Round memregs size up.
3340         (need_to_save): We only need to save $a0 when we use ENTER.
3341         (interrupt_p): Check for fast_interrupt too.
3342         (bank_switch_p): New.
3343         (fast_interrupt_p): New.
3344         (m32c_attribute_table): Add bank_switch and fast_interrupt.
3345         (m32c_emit_prolog): Support bank switching and fast interrupts.
3346         * doc/extend.texi (Function Attributes): Add bank_switch and
3347         fast_interrupt.
3348
3349 2009-08-17  Douglas B Rupp  <rupp@gnat.com>
3350
3351         * config/alpha/alpha.c (vms_valid_pointer_mode): New function.
3352         * config/alpha/vms.h (TARGET_VALID_POINTER_MODE): Define.
3353
3354 2009-08-16  Douglas B Rupp  <rupp@gnat.com>
3355
3356         * doc/invoke.texi (Target options): Add new option list for IA-64/VMS.
3357         (menu): Add IA-64/VMS Options.
3358         (IA-64/VMS Options): Likewise.
3359
3360 2009-08-16  Richard Sandiford  <rdsandiford@googlemail.com>
3361
3362         PR target/38599
3363         * config/mips/mips.md (*lwxs): Use :P for pointer values.
3364
3365 2009-08-16  Richard Sandiford  <rdsandiford@googlemail.com>
3366
3367         * config/mips/mips-protos.h (mips_push_asm_switch): New function.
3368         (mips_pop_asm_switch): Likewise.
3369         * config/mips/mips.c (set_noreorder, set_nomacro, set_noat): Replace
3370         with...
3371         (mips_noreorder, mips_nomacro, mips_noat): ...these new variables.
3372         (mips_push_asm_switch_1, mips_pop_asm_switch_1): New functions.
3373         (mips_push_asm_switch, mips_pop_asm_switch): Likewise.
3374         (mips_print_operand_punctuation): Use them.  Check mips_noreorder
3375         instead of set_noreorder.
3376         (mips_output_function_prologue): Use the new functions.
3377         (mips_output_function_epilogue): Likewise.
3378         (mips_need_noat_wrapper_p): New function, split out from...
3379         (mips_final_prescan_insn, mips_final_postscan_insn): ...here.
3380         Use mips_push_asm_switch and mips_pop_asm_switch.
3381         * config/mips/mips.h (FUNCTION_PROFILER): Use mips_push_asm_switch
3382         and mips_pop_asm_switch.
3383         (ASM_OUTPUT_REG_POP): Likewise.
3384         (DBR_OUTPUT_SEQEND): Remove boilerplate comment.
3385         Use mips_pop_asm_switch.
3386         (mips_asm_switch): New structure.
3387         (set_noreorder, set_nomacro): Replace with...
3388         (mips_noreorder, mips_nomacro, mips_noat): ...these new variables.
3389         * config/mips/mips.md (fix_truncdfsi2_macro): Use mips_nomacro
3390         instead of set_nomacro.
3391         (fix_truncsfsi2_macro): Likewise.
3392         (cprestore): Likewise.
3393         (hazard): Use mips_noreorder instead of set_noreorder.
3394         * config/mips/sdemtk.h (FUNCTION_PROFILER): As for mips.h.
3395
3396 2009-08-16  Uros Bizjak  <ubizjak@gmail.com>
3397
3398         * config/alpha/alpha.c (alpha_end_function): Handle NULL_RTX returned
3399         from prev_active_insn.
3400
3401 2009-08-16  Anatoly Sokolov  <aesok@post.ru>
3402
3403         * config/avr/avr.h (AVR_HAVE_8BIT_SP): New macros.
3404         * config/avr/avr.c (avr_override_options): Initialize
3405         avr_current_arch variable.
3406         (avr_cpu_cpp_builtins): Define __AVR_HAVE_8BIT_SP__ or
3407         __AVR_HAVE_16BIT_SP__ according to the device type.
3408         (expand_prologue, output_movhi): Use AVR_HAVE_8BIT_SP instead of
3409         TARGET_TINY_STACK.
3410         (expand_epilogue): Use correct QI mode frame pointer for tiny stack.
3411         Use AVR_HAVE_8BIT_SP instead of TARGET_TINY_STACK.
3412
3413 2009-08-16  Dodji Seketeli  <dodji@redhat.com>
3414
3415         PR debug/37801
3416         * gcc/dwarf2out.c (gen_inlined_subroutine_die): Concentrate on
3417         generating inlined subroutine die only. We shouldn't be
3418         called for anything else.
3419         (gen_block_die): Don't generate inline subroutine debug info for
3420         abstract blocks.
3421
3422 2009-08-15  Sebastian Pop  <sebastian.pop@amd.com>
3423
3424         * graphite-poly.c (print_pbb): Print PBB index.
3425
3426 2009-08-15  Sebastian Pop  <sebastian.pop@amd.com>
3427
3428         PR middle-end/40981
3429         * graphite-interchange.c (ppl_max_for_le): Moved...
3430         * graphite-poly.c (pbb_number_of_iterations): Call ppl_max_for_le.
3431         * graphite-ppl.c (ppl_max_for_le): ... here.  Correct the use of
3432         ppl_Pointset_Powerset_C_Polyhedron_maximize.
3433         * graphite-ppl.h (ppl_max_for_le): Declared.
3434
3435 2009-08-14  Olatunji Ruwase <tjruwase@google.com>
3436
3437         * doc/extend.texi (Symbol-Renaming Pragmas): redefine_extname is
3438         supported on all platforms.
3439         * target.h (struct gcc_target): Remove handle_pragma_redefine_extname.
3440         * c-cppbuiltin.c: Remove use of targetm.handle_pragma_redefine_extname.
3441         * c-pragma.c: Likewise.
3442         * target-def.h (TARGET_INITIALIZER): Remove
3443         TARGET_HANDLE_PRAGMA_REDEFINE_EXTNAME.
3444         * config/sol2.h: Remove use of TARGET_HANDLE_PRAGMA_REDEFINE_EXTNAME.
3445
3446 2009-08-14  Douglas B Rupp  <rupp@gnat.com>
3447
3448         * config/ia64/fde-vms.c: New file.
3449         * config/ia64/fde-glibc.c (_Unwind_FindTableEntry): Add dummy arg.
3450         * config/ia64/unwind-ia64.c (UNW_ accessors): Move to unwind-ia64.h
3451         (MD_UNW_COMPATIBLE_PERSONALITY_P): Provide default.
3452         (uw_frame_state_for): Only register a personality routine if it is
3453         known to be compatible with our expectations.
3454         (_Unwind_FindEnclosingFunction, uw_frame_state_for):
3455         Declare unw_table_entry stack variable and
3456         mod all calls to _Unwind_FindTableEntry to add arg.
3457         * config/ia64/unwind-ia64.h (UNW_ accessors): Move here.
3458         (_Unwind_FindTableEntry): Add arg to prototype.
3459
3460 2009-08-14  Eric Botcazou  <ebotcazou@adacore.com>
3461
3462         * config/ia64/unwind-ia64.c (struct _Unwind_Context): Add new
3463         field 'signal_pfs_loc'.
3464         (uw_frame_state_for): Remove duplicate code dealing with leaf
3465         procedures without unwind info.
3466         If in the frame after unwinding through a signal handler, restore
3467         the AR.PFS register instead of the CFM if AR.PFS has not been saved.
3468         * config/ia64/linux-unwind.h (ia64_fallback_frame_state): Do not set
3469         'pfs_loc' to the AR.PFS location in the signal context; instead
3470         set 'signal_pfs_loc'.
3471         Manually generate the unwind info for the AR.PFS register.
3472         (ABI_MARKER_OLD_LINUX_SIGTRAMP, ABI_MARKER_OLD_LINUX_INTERRUPT,
3473         ABI_MARKER_LINUX_SIGTRAMP, ABI_MARKER_LINUX_INTERRUPT): Define.
3474         (ia64_handle_unwabi): Test 'fs->unwabi' against them.
3475         Do not set 'pfs_loc' to the AR.PFS location in the signal context;
3476         instead set 'signal_pfs_loc'.
3477         Remove code preventing the AR.PFS register from being restored
3478         from the signal context.
3479
3480 2009-08-14  Douglas B Rupp  <rupp@gnat.com>
3481             Tristan Gingold  <gingold@adacore.com>
3482
3483         * config.gcc (ia64-hp-*vms*): Insert ia64/t-ia64 in tmake_file.
3484         * config/ia64/t-vms: New file.
3485         * config/ia64/vms64.h: New file.
3486         * config/ia64/vms.h: New file.
3487         * config/ia64/vms-crtinit.asm: New file.
3488         * config/ia64/vms_symvec_libgcc_s.opt: New file.
3489         * config/ia64/vms-unwind.h: New file.
3490
3491 2009-08-14  Uros Bizjak  <ubizjak@gmail.com>
3492
3493         * config/alpha/alpha.c (alpha_emit_conditional_move): Handle
3494         TFmode compares.
3495
3496 2009-08-14  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
3497
3498         PR middle-end/30789
3499         * builtins.c (do_mpc_arg2): Make extern, define for any MPC version.
3500         Move declaration...
3501         * real.h (do_mpc_arg2): ... here.
3502         * fold-const.c (const_binop): Use MPC for complex MULT_EXPR
3503         and RDIV_EXPR.
3504
3505 2009-08-14  Rafael Avila de Espindola  <espindola@google.com>
3506
3507         * final.c (add_debug_prefix_map): Don't use GC memory for
3508         old_prefix and new_prefix.
3509
3510 2009-08-14  Richard Guenther  <rguenther@suse.de>
3511
3512         * ipa-prop.c (compute_complex_pass_through): If we cannot
3513         compute a non-varying offset for IPA_JF_ANCESTOR punt.
3514
3515 2009-08-14  Ulrich Weigand  <Ulrich.Weigand@de.ibm.com>
3516
3517         * c-lex.c (c_lex_with_flags): Increase size of local variable
3518         to avoid memory clobber.
3519
3520 2009-08-14  Paolo Bonzini  <bonzini@gnu.org>
3521
3522         PR target/40934
3523         * config/i386/i386.c (ix86_fp_comparison_strategy):
3524         Only enable/disable sahf at function granularity.
3525
3526 2009-08-14  Hans-Peter Nilsson  <hp@axis.com>
3527
3528         PR rtl-optimization/41064
3529         * reload1.c (reload_as_needed): Don't call extract_insn
3530         for known invalid replacements after calling
3531         validate_replace_rtx_group and verify_changes.
3532
3533 2009-08-14  Uros Bizjak  <ubizjak@gmail.com>
3534
3535         PR target/41019
3536         * config/i386/sse.md (SSEMODE124C8): New mode iterator.
3537         (vcond<SSEMODEF2P:mode>): Assert that operation is supported by
3538         ix86_expand_fp_vcond.
3539         (vcond<SSEMODE124C8:mode>): Use SSEMODE124C8 instead of SSEMODE124.
3540         Assert that operation is supported by ix86_expand_int_vcond.
3541         (vcondu<SSEMODE124C8:mode>): Ditto.
3542
3543 2009-08-13  DJ Delorie  <dj@redhat.com>
3544
3545         * config/i386/djgpp-stdint.h: New.
3546         * config.gcc (djgpp): Use it.
3547
3548 2009-08-13  Kaz Kojima  <kkojima@gcc.gnu.org>
3549
3550         * config/sh/sh.c (sh_override_options): When flag_exceptions or
3551         flag_unwind_tables is on, turn flag_reorder_blocks_and_partition off.
3552
3553 2009-08-13  Ghassan Shobaki  <ghassan.shobaki@amd.com>
3554
3555         * tree-ssa-loop-prefetch.c
3556         (prune_ref_by_group_reuse): Enhance probabilistic analysis
3557         for long-stride pruning.
3558         (compute_miss_rate): New function to compute the probability
3559         that two memory references access different cache lines.
3560
3561 2009-08-13  Dave Korn  <dave.korn.cygwin@gmail.com>
3562
3563         * gcc/config/i386/cygwin.h (LINK_SPEC): Add --enable-auto-image-base.
3564
3565 2009-08-13  Richard Guenther  <rguenther@suse.de>
3566
3567         PR middle-end/41047
3568         * tree-ssa-ccp.c (ccp_fold): When folding pointer additions
3569         use the constant pointer type.
3570         * gimplify.c (canonicalize_addr_expr): Canonicalize independent
3571         of CV qualifiers on the target pointer type.
3572         * tree-ssa.c (useless_type_conversion_p): Move incomplete pointer
3573         conversion check before restrict check.
3574
3575 2009-08-12  Kaz Kojima  <kkojima@gcc.gnu.org>
3576
3577         PR target/41029
3578         * config/sh/sh.md (reload_outdf__RnFRm+4): Fix thinko.
3579
3580 2009-08-12  Kaz Kojima  <kkojima@gcc.gnu.org>
3581
3582         * config/sh/sh.c (sh_promote_function_mode): Add ATTRIBUTE_UNUSED.
3583
3584 2009-08-12  Richard Guenther  <rguenther@suse.de>
3585
3586         PR tree-optimization/41011
3587         * ipa-cp.c (ipcp_lattice_from_jfunc): Deal with failing fold
3588         and reference constructing.
3589
3590 2009-08-12  Xinliang David Li  <davidxl@google.com>
3591
3592         PR tree-optimization/41012
3593         * tree-flow.h : New external interface.
3594         * gimple-low.c (check_call_arg): Change to public function.
3595         Remove argument mismatch check in lowering.
3596         * tree-inline.h (tree_can_inline_p): Interface change.
3597         * tree-inline.c (tree_can_inline_p): Fold argument mismatch check
3598         into this function.
3599         * ipa-inline.c (cgraph_decide_inlining_of_small_functions):
3600         Call change to tree_can_inline_p function.
3601         (cgraph_decide_inlining_incrementally): Ditto.
3602
3603 2009-08-12  Richard Sandiford  <rdsandiford@googlemail.com>
3604
3605         PR tree-optimization/41031
3606         * tree-outof-ssa.c (insert_value_copy_on_edge): Use promote_decl_mode
3607         on the partition variable rather than promote_mode on the source
3608         type.  Assert that the partition variable's type has the same
3609         mode as the source value's.
3610
3611 2009-08-12  Paolo Bonzini  <bonzini@gnu.org>
3612
3613         * doc/tm.texi (TARGET_PROMOTE_FUNCTION_MODE): Add documentation
3614         for for_return == 2.
3615         * function.c (assign_parm_setup_reg): Use for_return == 2, improve
3616         comments.
3617         * calls.c (expand_call): Fix typo.
3618         * explow.c (promote_decl_mode): Use for_return == 2 for RESULT_DECL
3619         and PARM_DECL.
3620         * stmt.c (expand_value_return): Use promote_function_mode to copy out
3621         of pseudo.
3622         * targhooks.c (default_promote_function_mode): Handle for_return == 2.
3623         * config/cris/cris.c (cris_promote_function_mode): Likewise.
3624         * config/mmix/mmix.c (mmix_promote_function_mode): Likewise.
3625         * config/pa/pa.c (pa_promote_function_mode): Likewise.
3626
3627 2009-08-12  Andrew Haley  <aph@redhat.com>
3628
3629         * config/arm/arm.c (arm_init_libfuncs): Add __sync_synchronize.
3630
3631 2009-08-12  Sebastian Pop  <sebastian.pop@amd.com>
3632
3633         PR bootstrap/40103
3634         * graphite.c: Remove pragma GCC diagnostic warning "-Wc++-compat".
3635
3636 2009-08-12  Richard Guenther  <rguenther@suse.de>
3637
3638         * alias.c (get_alias_set): Honor TYPE_STRUCTURAL_EQUALITY_P.
3639         * gimplify.c (gimplify_modify_expr): Do not use
3640         lang_hooks.types_compatible_p.
3641         * tree-ssa.c (useless_type_conversion_p): For aggregates
3642         just return false if the canonical types differ.
3643
3644 2009-08-12  Sebastian Pop  <sebastian.pop@amd.com>
3645
3646         PR middle-end/40980
3647         * sese.c (convert_for_phi_arg): New.
3648         (add_guard_exit_phis): Use convert_for_phi_arg.
3649
3650 2009-08-12  Sebastian Pop  <sebastian.pop@amd.com>
3651
3652         * graphite-sese-to-poly.c (pdr_add_data_dimensions): Dont add
3653         unknown subscript upper bounds.
3654
3655 2009-08-12  Sebastian Pop  <sebastian.pop@amd.com>
3656             Pranav Garg  <pranav.garg2107@gmail.com>
3657
3658         * graphite-interchange.c (gather_access_strides): Removed.
3659         (ppl_max_for_le): New.
3660         (build_linearized_memory_access): New.
3661         (memory_stride_in_loop): New.
3662         (pbb_interchange_profitable_p): Reimplemented.
3663         * graphite-ppl.h (ppl_new_id_map): New.
3664         (ppl_interchange): New.
3665
3666 2009-08-12  Sebastian Pop  <sebastian.pop@amd.com>
3667
3668         * graphite-interchange.c (compute_subscript): Removed.
3669         (compute_array_size_cstr): Removed.
3670         (compute_array_size_poly): Removed.
3671         (compute_array_size): Removed.
3672         (gather_access_strides_poly): Removed.
3673         (gather_access_strides): Empty.
3674
3675 2009-08-12  Sebastian Pop  <sebastian.pop@amd.com>
3676
3677         * graphite-dependences.c (dependence_polyhedron_1): Replace
3678         pdr_nb_subscripts with PDR_NB_SUBSCRIPTS.
3679         (graphite_legal_transform_dr): Same.
3680         (graphite_carried_dependence_level_k): Same.
3681         * graphite-poly.c (new_poly_dr): Add a parameter nb_subscripts.
3682         Initialize PDR_NB_SUBSCRIPTS.
3683         (print_pdr_access_layout): Replace pdr_nb_subscripts with
3684         PDR_NB_SUBSCRIPTS.
3685         * graphite-poly.h (struct poly_dr): Add nb_subscripts field.
3686         (PDR_NB_SUBSCRIPTS): New.
3687         (pdr_nb_subscripts): Removed.
3688         (pdr_dim): Simplified.
3689         * graphite-sese-to-poly.c (build_poly_dr): Replace pdr_nb_subscripts
3690         with PDR_NB_SUBSCRIPTS.
3691
3692 2009-08-12  Sebastian Pop  <sebastian.pop@amd.com>
3693
3694         * graphite-interchange.c (compute_array_size): Remove use of
3695         PDR_DATA_CONTAINER.
3696         * graphite-poly.c (new_poly_dr): Remove argument data_container.
3697         Do not initialize PDR_DATA_CONTAINER.
3698         (print_pdr): Do not print PDR_DATA_CONTAINER.
3699         * graphite-poly.h (struct poly_dr): Remove data_container field.
3700         (PDR_DATA_CONTAINER): Removed.
3701         * graphite-sese-to-poly.c (pdr_add_data_dimensions): Remove use of
3702         PDR_DATA_CONTAINER.
3703         (build_poly_dr): Same.
3704
3705 2009-08-12  Konrad Trifunovic  <konrad.trifunovic@gmail.com>
3706             Sebastian Pop  <sebastian.pop@amd.com>
3707
3708         * graphite-dependences.c (graphite_legal_transform_dr): Work on a
3709         copy of the dependence polyhedron.  Free the temporary objects.
3710         (graphite_carried_dependence_level_k): Free unused objects before
3711         returning.
3712
3713         * testsuite/gcc.dg/graphite/interchange-1.c: XFAILed.
3714         * testsuite/gcc.dg/graphite/interchange-2.c: XFAILed.
3715         * testsuite/gcc.dg/graphite/interchange-3.c: XFAILed.
3716         * testsuite/gcc.dg/graphite/interchange-4.c: XFAILed.
3717         * testsuite/gcc.dg/graphite/interchange-7.c: XFAILed.
3718
3719 2009-08-12  Sebastian Pop  <sebastian.pop@amd.com>
3720
3721         * graphite-blocking.c (scop_do_strip_mine): Call store_scattering.
3722         Early return without analyzing the data dependences if no
3723         transform has been done.  Call restore_scattering if the transform
3724         is not legal.
3725         (graphite-interchange.c): Same.
3726         * graphite-poly.c (print_scattering_function): Test for
3727         PBB_TRANSFORMED.
3728         (graphite_read_transforms): Initialize PBB_TRANSFORMED.
3729         (apply_poly_transforms): Do not gcc_assert that
3730         the transform is legal.
3731         (new_poly_bb): Initialize PBB_TRANSFORMED, PBB_SAVED and PBB_ORIGINAL.
3732         Do not initialize PBB_NB_SCATTERING_TRANSFORM, PBB_NB_LOCAL_VARIABLES,
3733         PBB_TRANSFORMED_SCATTERING, and PBB_ORIGINAL_SCATTERING.
3734         (free_poly_dr): Free PBB_TRANSFORMED, PBB_SAVED, and PBB_ORIGINAL.
3735         * graphite-poly.h (struct poly_scattering): New.
3736         (struct poly_bb): Add original, transformed, and saved fields.
3737         Remove transformed_scattering, original_scattering,
3738         nb_local_variables and nb_scattering_transform fields.
3739         (PBB_ORIGINAL, PBB_TRANSFORMED, PBB_SAVED): New.
3740         (poly_scattering_new): New.
3741         (poly_scattering_free): New.
3742         (poly_scattering_copy): New.
3743         (store_scattering_pbb): New.
3744         (store_scattering): New.
3745         (restore_scattering_pbb): New.
3746         (restore_scattering): New.
3747         * graphite-sese-to-poly.c (build_pbb_scattering_polyhedrons):
3748         Initialize PBB_TRANSFORMED and PBB_ORIGINAL.
3749
3750 2009-08-12  Sebastian Pop  <sebastian.pop@amd.com>
3751
3752         * graphite-poly.c (print_pbb): Add parentheses in the pretty print.
3753         (print_scop): Same.
3754
3755 2009-08-12  Sebastian Pop  <sebastian.pop@amd.com>
3756
3757         * Makefile.in (graphite.o): Depends on PREDICT_H.
3758         * graphite.c: Include predict.h.
3759         (graphite_finalize): Call tree_estimate_probability.
3760         * predict.c (predict_loops): Do not call scev_initialize and
3761         scev_finalize.
3762         (tree_estimate_probability_bb): New.
3763         (tree_estimate_probability): Do not initialize loops: move that
3764         code to the driver.  Call tree_estimate_probability_bb.
3765         (tree_estimate_probability_driver): New.
3766         (pass_profile): Use tree_estimate_probability_driver.
3767         * predict.h (tree_estimate_probability): Declared.
3768
3769 2009-08-12  Sebastian Pop  <sebastian.pop@amd.com>
3770
3771         * graphite-clast-to-gimple.c (gloog): Add time to TV_GRAPHITE_CODE_GEN.
3772         * graphite-dependences.c (graphite_legal_transform): Add time to
3773         TV_GRAPHITE_DATA_DEPS.
3774         (dependency_between_pbbs_p): Same.
3775         * timevar.def (TV_GRAPHITE_DATA_DEPS, TV_GRAPHITE_CODE_GEN): New.
3776
3777 2009-08-12  Andrey Belevantsev  <abel@ispras.ru>
3778
3779         PR rtl-optimization/41033
3780         * alias.c (nonoverlapping_component_refs_p): Punt when strict
3781         aliasing is disabled.
3782
3783 2009-08-11  Adam Nemet  <anemet@caviumnetworks.com>
3784
3785         * config/mips/predicates.md (qi_mask_operand, hi_mask_operand,
3786         si_mask_operand, and_load_operand, low_bitmask_operand,
3787         and_reg_operand, and_operand): New predicates.
3788         * config/mips/constraints.md (Yb, Yh, Yw, Yz): New constraints.
3789         * config/mips/mips.c (and_operands_ok): New function.
3790         * config/mips/mips-protos.h (and_operands_ok): Declare it.
3791         * config/mips/mips.md (move_type): Add ext_ins and logical.
3792         (type): Handle them.
3793         (and<mode>3): Use and_reg_operand as the second operand's predicate.
3794         (*and<mode>3): Add alternatives for lbu, lhu, lwu, <d>ext and
3795         shift_shift.  Remove commutative constraint modifier.
3796         (*and<mode>3_mips16): Add alternatives for lbu, lhu, lwu and
3797         shift_shift.
3798         (*clear_upper32_dext): Remove define_insn_and_split.
3799         (*clear_upper32): Turn this define_insn_and_split ...
3800         (splitter for ANDing register with 0xffff_ffff): .. into this.
3801
3802 2009-08-11  Adam Nemet  <anemet@caviumnetworks.com>
3803
3804         * combine.c (try_widen_shift_mode): Factor out code to check if an
3805         integer constant is a low-order bitmask from here ...
3806         * rtlanal.c (low_bitmask_len): ... to here.
3807         * rtl.h (low_bitmask_len): Declare.
3808
3809 2009-08-11  Uros Bizjak  <ubizjak@gmail.com>
3810
3811         PR target/8603
3812         * config/alpha/alpha.md (addsi3): Remove expander.
3813         (addsi3): Rename from *addsi3_internal insn pattern.
3814         (subsi3): Remove expander.
3815         (subsi3): Rename from *subsi3_internal insn pattern.
3816
3817 2009-08-11  Douglas B Rupp  <rupp@gnat.com>
3818
3819         * config/alpha/alpha.c (alpha_init_builtins): Nullify FWRITE and
3820         FWRITE_UNLOCKED.
3821
3822 2009-08-11  Vasiliy Fofanov  <fofanov@adacore.com>
3823             Eric Botcazou  <botcazou@adacore.com>
3824             Douglas B Rupp  <rupp@gnat.com>
3825
3826         * config/alpha/alpha.c (alpha_return_in_memory): On VMS, ensure
3827         that records that fit in 64 bits are returned by immediate value,
3828         as required by OpenVMS Calling Standard.
3829         (function_value): Adjust for above modification.
3830         (alpha_va_start) <TARGET_ABI_OPEN_VMS>: Use
3831         virtual_incoming_args_rtx as base object, not next_arg.
3832         * config/alpha/vms.h: (DEFAULT_PCC_STRUCT_RETURN): Define as 0.
3833
3834 2009-08-11  Ulrich Weigand  <Ulrich.Weigand@de.ibm.com>
3835
3836         * reload.c (find_reloads_subreg_address): Check the original
3837         req_equiv_mem address to detect the case where an address is
3838         not valid in the outer mode.
3839
3840 2009-08-11  Richard Guenther  <rguenther@suse.de>
3841
3842         PR bootstrap/40788
3843         * builtins.c (gimplify_va_arg_expr): Do not call SET_EXPR_LOCATION.
3844
3845 2009-08-10  Douglas B Rupp  <rupp@gnat.com>
3846
3847         * config/alpha/vms.h (OPTIMIZATION_OPTIONS): Remove
3848         (OVERRIDE_OPTIONS): Incorporate removed OPTIMIZATION_OPTIONS.
3849
3850 2009-08-10  Olivier Hainque  <hainqueu@adacore.com>
3851             Douglas B Rupp  <rupp@gnat.com>
3852
3853         * config/alpha/alpha.c (alpha_sa_size): Force procedure type to
3854         PT_STACK when frame_pointer_needed on OpenVMS.
3855         (alpha_pv_save_size, alpha_using_fp): Remove.
3856         (alpha_vms_can_eliminate): New function. Support for CAN_ELIMINATE
3857         with proper processing for PT_NULL.
3858         (alpha_vms_initial_elimination_offset): New function. Support for
3859         INITIAL_ELIMINATION_OFFSET with proper processing for PT_NULL.
3860         (alpha_sa_size): Force procedure type to PT_STACK when
3861         frame_pointer_needed on OpenVMS.
3862         * config/alpha/alpha-protos.h (alpha_pv_save_size): Remove prototype.
3863         (alpha_using_fp): Likewise.
3864         (alpha_vms_can_eliminate): Add prototype.
3865         (alpha_vms_initial_elimination_offset): Likewise.
3866         * config/alpha/vms.h (CAN_ELIMINATE, INITIAL_ELIMINATION_OFFSET):
3867         Call alpha_vms_can_eliminate and alpha_vms_initial_elimination_offset.
3868
3869 2009-08-10  Eric Botcazou  <botcazou@adacore.com>
3870             Douglas B Rupp  <rupp@gnat.com>
3871
3872         * config/alpha/alpha.c (common_object_handler): New function.
3873         (vms_attribute_table): Declare a single attribute "common_object".
3874         (vms_output_aligned_decl_common): New global function.
3875         (SECTION_VMS_OVERLAY): Delete.
3876         (SECTION_VMS_GLOBAL): Likewise.
3877         (SECTION_VMS_INITIALIZE): Likewise.
3878         (vms_asm_named_section): Remove support for above flags.
3879         (vms_section_type_flags): Delete.
3880         (TARGET_SECTION_TYPE_FLAGS): Likewise.
3881         * config/alpha/alpha-protos.h (vms_output_aligned_decl_common): New.
3882         * config/alpha/vms.h (ASM_OUTPUT_ALIGNED_COMMON): Delete.
3883         (ASM_OUTPUT_ALIGNED_DECL_COMMON): New macro.
3884
3885 2009-08-10  SUGIOKA Toshinobu  <sugioka@itonet.co.jp>
3886
3887         PR target/41015
3888         * longlong.h [__sh__] (udiv_qrnnd): Add T register to clobber list.
3889         (sub_ddmmss): Likewise.
3890
3891 2009-08-10  Andreas Tobler  <a.tobler@schweiz.org>
3892
3893         PR bootstrap/41018
3894         * config/rs6000/freebsd.h: Define SVR4_ASM_SPEC. Adjust copyright
3895         year.
3896
3897 2009-08-10  Ulrich Weigand  <Ulrich.Weigand@de.ibm.com>
3898
3899         PR target/37053
3900         * reload1.c (reload_as_needed): Use cancel_changes to completely
3901         undo a failed replacement attempt.
3902
3903 2009-08-10  Richard Guenther  <rguenther@suse.de>
3904
3905         PR middle-end/41006
3906         * tree-ssa.c (useless_type_conversion_p_1): Fold into ...
3907         (useless_type_conversion_p): ... here.  Require pointer targets
3908         to be compatible.
3909
3910 2009-08-10  Dodji Seketeli  <dodji@redhat.com>
3911
3912         PR c++/40866
3913         * tree-inline.c (copy_statement_list): The resulting copy shouldn't
3914         loose the original type of the statement list.
3915
3916 2009-08-09  Douglas B Rupp  <rupp@gnat.com>
3917
3918         * config/alpha/alpha.c: Include libfuncs.h
3919         (avms_asm_output_extern): New function.
3920         (alpha_init_libfuncs): Init some decc libfuncs.
3921         * config/alpha/alpha-protos.h (avms_asm_output_external): Declare.
3922         * config/alpha/vms.h (ASM_OUTPUT_EXTERNAL): Define.
3923         (DO_CRTL_NAMES): Define.
3924         (LIB_SPEC): Remove.
3925         * config/alpha/vms64.h: (POINTERS_EXTEND_UNSIGNED): Remove undef.
3926         (LONG_TYPE_SIZE): Define.
3927         (TARGET_OS_CPP_BUILTINS): Define with __LONG_POINTERS=1
3928         (SUBTARGET_SWITCHES): Define malloc64 switch.
3929         (TARGET_DEFAULT): Default MASK_MALLOC64 set.
3930         (MASK_RETURN_ADDR): Define.
3931         doc/invoke.texi (mmalloc64): Document switch.
3932
3933 2009-08-09  Olivier Hainque  <hainque@adacore.com>
3934             Douglas B Rupp  <rupp@gnat.com>
3935
3936         * config/alpha/alpha.c (struct machine_function): New flag for VMS,
3937         uses_condition_handler.
3938         (alpha_expand_builtin_establish_vms_condition_handler): New expander.
3939         (alpha_expand_builtin_revert_vms_condition_handler): New expander.
3940         (enum alpha_builtin): New ALPHA_BUILTIN_REVERT_VMS_CONDITION_HANDLER
3941         and ALPHA_BUILTIN_ESTABLISH_VMS_CONDITION_HANDLER values.
3942         (code_for_builtin): New insn codes for the new alpha_builtins.
3943         (alpha_init_builtins): Register the new functions as BUILT_IN_MD.
3944         (alpha_sa_size): Account for uses_condition_handler.
3945         (alpha_expand_prologue): Likewise.
3946         (alpha_start_function): Likewise.
3947         (alpha_expand_epilogue): Likewise.
3948         * config/alpha/alpha-protos.h: Prototype the new alpha.c builtin
3949         establish/revert expanders.
3950         * config/alpha/alpha.h (DWARF_FRAME_REGNUM): Define.
3951         * config/alpha/alpha.md (builtin_establish_vms_condition_handler):
3952         New expander, resorting to the alpha.c associated function.
3953         (builtin_revert_vms_condition_handler): Likewise.
3954         * config/alpha/vms-gcc_shell_handler.c: New file. Implements
3955         __gcc_shell_handler, the static VMS condition handler used as
3956         an indirection wrapper to the current dynamically established
3957         handler.
3958         * config/alpha/vms-unwind.h: Complete rewrite.