OSDN Git Service

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