OSDN Git Service

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