OSDN Git Service

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