OSDN Git Service

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