OSDN Git Service

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