OSDN Git Service

9ed696d931b449dc66685183596e4b7d771f1ebc
[pf3gnuchains/gcc-fork.git] / gcc / ChangeLog
1 2009-09-20  Paolo Bonzini <bonzini@gnu.org>
2
3         PR/39886
4         * combine.c (update_cfg_for_uncondjump): Set EDGE_FALLTHRU
5         just when insn is equal to BB_END (bb).
6
7 2009-09-19  Adam Nemet  <anemet@caviumnetworks.com>
8
9         * config/mips/mips.opt (mrelax-pic-calls): New option.
10         * config/mips/mips.c (mips_strip_unspec_address): Move it up in
11         the file.
12         (mips_unspec_call): Change "unspec_call" expander into this.
13         (mips_strip_unspec_call): New function.
14         (mips_got_load): Call mips_unspec_call instead of
15         gen_unspec_call<mode>.
16         (mips16_build_call_stub): Fix comment for fp_code.  Adjust call to
17         MIPS_CALL.
18         (mips_cfg_in_reorg): New function.
19         (mips16_lay_out_constants): Use it to decide whether to call
20         CFG-aware insn splitting.
21         (r10k_insert_cache_barriers): Move CFG set-up code from here to
22         mips_reorg.  Move DF set-up code from here ...
23         (mips_df_reorg): ... to here.  Call r10k_insert_cache_barriers
24         from here.
25         (mips_reorg): Call mips_df_reorg instead of
26         r10k_insert_cache_barriers.  Move CFG set-up code here from
27         r10k_insert_cache_barriers.
28         (mips_call_expr_from_insn): New function.
29         (mips_pic_call_symbol_from_set): Likewise.
30         (mips_find_pic_call_symbol): Likewise.
31         (mips_annotate_pic_call_expr): Likewise.
32         (mips_get_pic_call_symbol): Likewise.
33         (mips_annotate_pic_calls): Likewise.
34         (mips_override_options): Disable -mrelax-pic-calls unless PIC
35         calls are used.
36         (mips_set_mips16_mode): Disable -mrelax-pic-calls for MIPS16.
37         * config/mips/mips-protos.h (mips_get_pic_call_symbol): Declare it.
38         * config/mips/mips.h (MIPS_CALL): Use it to print the .reloc
39         directive.
40         * config/mips/mips.md (UNSPEC_CALL_ATTR): New unspec.
41         (unspec_call<mode>): Remove it.
42         (sibcall_internal, sibcall_value_internal,
43         sibcall_value_multiple_internal, call_internal, call_split,
44         call_value_internal, call_value_split,
45         call_value_multiple_internal, call_value_multiple_split): Pass
46         SIZE_OPNO to MIPS_CALL.
47         (call_internal_direct, call_direct_split,
48         call_value_internal_direct, call_value_direct_split): Pass -1 as
49         SIZE_OPNO to MIPS_CALL.
50         * configure.ac <mips*-*-*>: Add test for .reloc R_MIPS_JALR.
51         * configure: Regenerate.
52         * doc/invoke.texi (Option Summary): Add -mrelax-pic-calls
53         and -mno-relax-pic-calls.
54         (MIPS Options): Document -mrelax-pic-calls
55         and -mno-relax-pic-calls.
56
57 2009-09-19  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
58
59         PR bootstrap/35619
60         * Makefile.in (stmp-fixinc): Ensure `include-fixed' is created
61         in the directory this rule is called from, rather than the
62         toplevel 'gcc' directory, to fix in-tree build.
63
64 2009-09-19  Chris Demetriou  <cgd@google.com>
65
66         PR preprocessor/28435:
67         * c-opts.c (c_common_handle_option): For -MD and -MMD, indicate
68         to cpplib that the preprocessor output is needed.
69
70 2009-09-19  Jakub Jelinek  <jakub@redhat.com>
71
72         * config/rs6000/rs6000.md (*save_gpregs_<mode>, *save_fpregs_<mode>,
73         *restore_gpregs_<mode>, *return_and_restore_gpregs_<mode>,
74         *return_and_restore_fpregs_<mode>,
75         *return_and_restore_fpregs_aix_<mode>): Remove 'z' operand modifier.
76
77         PR bootstrap/41397
78         * dwarf2out.c (mem_loc_descriptor) <case SUBREG>: Recurse
79         instead of assuming it has always a REG inside of it.
80
81 2009-09-18  Gerald Pfeifer  <gerald@pfeifer.com>
82
83         * config/freebsd.h: Update comment on types.
84         (WINT_TYPE): Define.
85
86 2009-09-18  Jason Merrill  <jason@redhat.com>
87
88         * c.opt: Add -fno-deduce-init-list.
89
90 2009-09-18  Neil Vachharajani  <nvachhar@google.com>
91
92         * value-prof.c (interesting_stringop_to_profile_p): Added output
93         argument to indicate which parameter is the size parameter.
94         * value-prof.c (gimple_stringop_fixed_value): Use
95         INTERESTING_STRINGOP_TO_PROFILE_P to find size argument.
96         * value-prof.c (gimple_stringops_transform): Update call sites to
97         INTERESTING_STRINGOP_TO_PROFILE_P to reflect parameter change.
98         * testsuite/gcc.dg/tree-prof/val-prof-7.c: Added test case.
99
100 2009-09-18  Uros Bizjak  <ubizjak@gmail.com>
101
102         PR target/38288
103         From David Binderman <dcb314@hotmail.com>:
104         * gcc/config/i386/i386.c (ix86_function_regparm): Remove useless
105         local variable f.  Remove stale comments.
106         (ix86_compute_frame_layout): Remove useless local variable total_size.
107         Remove #if 0'd code.
108         (legitimate_address_p): Remove useless local variables
109         reason_rtx and reason.
110         (ix86_split_copysign_const): Remove useless local variable op1.
111         (scale_counter): Remove useless local variable piece_size_mask.
112
113 2009-09-18  Jakub Jelinek  <jakub@redhat.com>
114
115         * stmt.c (expand_asm_operands): Set REG_ATTRS on the temporary from
116         output decl.
117
118 2009-09-17  Michael Haubenwallner  <michael.haubenwallner@salomon.at>
119
120         PR target/40913
121         * config/pa/t-hpux-shlib: Set soname in libgcc_s.sl.
122
123 2009-09-17  Jakub Jelinek  <jakub@redhat.com>
124
125         * c-decl.c (finish_struct): Adjust DECL_SOURCE_LOCATION of
126         TYPE_STUB_DECL.
127
128 2009-09-17  Alexandre Oliva  <aoliva@redhat.com>
129
130         * dwarf2out.c (loc_descriptor): Emit DW_OP_stack_value and
131         DW_OP_implicit_value even without dwarf_version 4.
132
133 2009-09-17  Jan Hubicka  <jh@suse.cz>
134
135         * dwarf2out.c: Include tree-pass.h and gimple.h.
136         (loc_list_plus_const): New function.
137         (loc_descriptor_from_tree_1): Rename to ...
138         (loc_descriptor_from_tree): ... remove original.
139         (loc_list_from_tree): New function.
140         (add_AT_location_description): Accept location list.
141         (tls_mem_loc_descriptor): Update call of loc_descriptor_from_tree.
142         (concatn_mem_loc_descriptor): Remove.
143         (mem_loc_descriptor): Handle CONCAT/CONCATN and VAR_LOCATION by
144         returning NULL.
145         (secname_for_decl): Move up.
146         (hidden_reference_p): New function; break out from ...
147         (loc_by_refernece): ... here; move up.
148         (dw_loc_list): New function.
149         (single_element_loc_list): New function.
150         (single_element_loc_list_p): New function.
151         (add_loc_descr_to_each): New function.
152         (add_loc_list): New function.
153         (loc_descr_from_tree): Make wraper of loc_list_from_tree.
154         (loc_list_from_tree): Reroganized from loc_descr_from_tree;
155         add diagnostics why expansion failed.
156         (add_location_or_const_value_attribute): Support location lists.
157         (add_bound_info): Likewise.
158         (descr_info_loc): Update call of loc_descriptor_from_tree.
159         (gen_variable_die): Work on location lists.
160         * final.c (pass_final): Add dump file.
161         * Makefile.in (dwarf2out.o): Add new dependencies.
162
163 2009-09-17  Janis Johnson  <janis187@us.ibm.com>
164
165         PR c/41049
166         * real.c decimal_from_integer, decimal_integer_string): New.
167         (real_from_integer): Use them as special case for decimal float.
168         * config/dfp-bit.c (_si_to_sd, _usi_to_sd): Use default rounding.
169         (_di_to_sd, _di_to_dd, _di_to_td, _udi_to_sd, _udi_to_dd, _udi_to_td):
170         Do not append zero after the decimal point in string to convert.
171
172 2009-09-17  Alexander Monakov  <amonakov@ispras.ru>
173
174         * graphite-sese-to-poly.c (pdr_add_data_dimensions): Add bounds only
175         for ARRAY_REFs.  Use array_ref_{low,up}_bound to determine bounds.
176
177 2009-09-17  Martin Jambor  <mjambor@suse.cz>
178
179         * common.opt (fipa-sra): New switch.
180         * opts.c (decode_options): Turn flag_ipa_sra on for opt2.
181         * timevar.def (TV_IPA_SRA): New timevar.
182         * params.def (ipa-sra-ptr-growth-factor): New parameter.
183         * doc/invoke.texi: Document -fipa-sra and ipa-sra-ptr-growth-factor.
184         * tree-sra.c: Include cgraph.c.
185         (enum sra_mode): Added SRA_MODE_EARLY_IPA.
186         (struct access): Added fields stmt, grp_maybe_modified, grp_scalar_ptr
187         and grp_not_necessarilly_dereferenced.
188         (func_param_count): New variable.
189         (encountered_apply_args): New variable.
190         (bb_dereferences): New variable.
191         (final_bbs): New variable.
192         (no_accesses_representant): New variable.
193         (no_accesses_p): New function.
194         (dump_access): Dump the new fields.
195         (sra_initialize): Set encountered_apply_args to false.
196         (get_ssa_base_param): New function.
197         (mark_parm_dereference): New function.
198         (create_access): Caring for INIDRECT_REFs and different handling of
199         varialble length accesses in early IPA SRA.  Store the stmt - a new
200         parameter - to the new access.
201         (build_access_from_expr_1): New parameter stmt, passed to
202         create_access.  Handle INDIRECT_REFs.
203         (build_access_from_expr): Pass the current statement to
204         build_access_from_expr_1.
205         (disqualify_ops_if_throwing_stmt): Trigger only in intraprocedural
206         passes.
207         (build_accesses_from_assign): Pass the current statement to
208         build_access_from_expr_1.  Do not create assign links in IPA-SRA.
209         (scan_function): Call handle_ssa_defs on phi nodes.  Set bits in
210         final_bbs when necessary.  Check for calls to __builtin_apply_args.
211         Fixup EH info if anythng was changed.
212         (is_unused_scalar_param): New function.
213         (ptr_parm_has_direct_uses): New function.
214         (find_param_candidates): New function.
215         (mark_maybe_modified): New function.
216         (analyze_modified_params): New function.
217         (propagate_dereference_distances): New function.
218         (dump_dereferences_table): New function.
219         (analyze_caller_dereference_legality): New function.
220         (unmodified_by_ref_scalar_representative): New function.
221         (splice_param_accesses): New function.
222         (decide_one_param_reduction): New function.
223         (enum ipa_splicing_result): New type.
224         (splice_all_param_accesses): New function.
225         (get_param_index): New function.
226         (turn_representatives_into_adjustments): New function.
227         (analyze_all_param_acesses): New function.
228         (get_replaced_param_substitute): New function.
229         (get_adjustment_for_base): New function.
230         (replace_removed_params_ssa_names): New function.
231         (sra_ipa_reset_debug_stmts): New function.
232         (sra_ipa_modify_expr): New function.
233         (sra_ipa_modify_assign): New function.
234         (convert_callers): New function.
235         (modify_function): New function.
236         (ipa_sra_preliminary_function_checks): New function.
237         (ipa_early_sra): New function.
238         (ipa_early_sra_gate): New function.
239         (pass_early_ipa_sra): New variable.
240         * Makefile.in (tree-sra.o): Add cgraph.h to dependencies.
241
242 2009-09-17  Michael Matz  <matz@suse.de>
243
244         PR middle-end/41347
245         * tree.c (build_type_attribute_qual_variant): Export.
246         * tree.h (build_type_attribute_qual_variant): Declare.
247         * tree-inline.c (remap_type_1): Use it to build variants with
248         the original qualifiers and attributes.
249
250 2009-09-17  Andreas Krebbel  <Andreas.Krebbel@de.ibm.com>
251
252         * cfglayout.c (fixup_reorder_chain): Accept conditional jumps
253         without a fallthrough edge.
254
255 2009-09-16  DJ Delorie  <dj@redhat.com>
256
257         * config/m32c/m32c.c (m32c_emit_epilogue): Check for R8C or M16C
258         chip and ignore the "fast_interrupt" attribute if so.
259
260 2009-09-16  Richard Henderson  <rth@redhat.com>
261
262         PR middle-end/41360
263         * cfgbuild.c (find_bb_boundaries): Really re-instate 2009-09-02
264         barrier fix.
265
266 2009-09-16  Richard Henderson  <rth@redhat.com>
267
268         PR target/41246
269         * tree-cfg.c (verify_gimple_call): Validate that gimple_call_chain
270         is set only if DECL_NO_STATIC_CHAIN is unset.
271         * tree-nested.c (iter_nestinfo_start, iter_nestinfo_next): New.
272         (FOR_EACH_NEST_INFO): New.
273         (walk_all_functions): Use it.
274         (finalize_nesting_tree): Likewise.
275         (unnest_nesting_tree): Likewise.
276         (free_nesting_tree): Use iter_nestinfo_start, iter_nestinfo_next.
277         (get_chain_decl, get_chain_field): Reset DECL_NO_STATIC_CHAIN.
278         (convert_gimple_call): Early out if gimple_call_chain already set.
279         (convert_all_function_calls): Iterate until no new functions
280         require a static chain.
281         (finalize_nesting_tree_1): Assert DECL_NO_STATIC_CHAIN is unset
282         when building a trampoline.  Use dump_function_to_file instead
283         of dump_function.
284         (lower_nested_functions): Open dump_file.  Validate that decls
285         that have DECL_NO_STATIC_CHAIN from the front end don't have that
286         bit reset by this pass.
287
288 2009-09-16  Michael Matz  <matz@suse.de>
289
290         PR fortran/41212
291         * tree.h (struct tree_decl_common): Add decl_restricted_flag,
292         shorten decl_common_unused.
293         (DECL_RESTRICTED_P): New accessor.
294         * tree-ssa-alias.c (ptr_deref_may_alias_decl_p): Use it
295         to disambiguate marked decls and restrict pointers.
296
297 2009-09-16  Richard Henderson  <rth@redhat.com>
298
299         PR middle-end/41360
300         * cfgbuild.c (find_bb_boundaries): Re-instate 2009-09-02 barrier fix.
301
302 2009-09-16  Jakub Jelinek  <jakub@redhat.com>
303
304         * integrate.c (set_block_abstract_flags): Call
305         set_decl_abstract_flags also on BLOCK_NONLOCALIZED_VARs.
306
307 2009-09-16  Richard Guenther  <rguenther@suse.de>
308
309         PR middle-end/34011
310         * tree-flow-inline.h (may_be_aliased): Compute readonly variables
311         as non-aliased.
312
313 2009-09-16  DJ Delorie  <dj@redhat.com>
314             Kaz Kojima  <kkojima@gcc.gnu.org>
315
316         * config/sh/sh.c (output_stack_adjust): Add new argument frame_p.
317         (sh_expand_prologue): Update calls to output_stack_adjust.
318         (sh_expand_epilogue): Likewise.
319
320 2009-09-15  Adam Nemet  <anemet@caviumnetworks.com>
321
322         PR bootstrap/41349
323         * reorg.c (redundant_insn): Don't count notes or DEBUG_INSNs when
324         trying to limit the extent of searches in the insn stream.
325
326 2009-09-15  Nathan Froyd  <froydnj@codesourcery.com>
327             Jakub Jelinek  <jakub@redhat.com>
328
329         PR target/41175
330         PR target/40677
331         * config/rs6000/rs6000.c (no_global_regs_above): Fix precedence
332         problem.
333         (SAVRES_NOINLINE_GPRS_SAVES_LR, SAVRES_NOINLINE_FPRS_SAVES_LR,
334         SAVRES_NOINLINE_FPRS_DOESNT_RESTORE_LR): New strategy bits.
335         (rs6000_savres_strategy): Always save FP registers inline if the
336         target doesn't support hardware double-precision.  Set the above
337         bits in return value when needed.
338         (rs6000_savres_routine_sym): Fix computation for cache selector.
339         Mark the generated symbol as a function.  Rename exitp argument to
340         lr.  Move code for determining the name of the symbol...
341         (rs6000_savres_routine_name): ...here.  New function.  Add cases for
342         getting the names right on AIX and 64-bit Linux.
343         (savres_routine_name): New variable.
344         (rs6000_make_savres_rtx): Rename exitp argument to lr.  Don't assert
345         lr isn't set when savep.  Use r12 resp. r1 instead of r11 depending
346         on what the target routine uses as a base register.  If savep && lr
347         describe saving of r0 into memory slot.
348         (rs6000_emit_prologue): Correct use of call_used_regs.  Fix out of
349         line calls for AIX ABI.
350         (rs6000_output_function_prologue): Use rs6000_savres_routine_name to
351         determine FP save/restore functions.
352         (rs6000_emit_stack_reset): Handle savres if sp_offset != 0 and
353         frame_reg_rtx != sp_reg_rtx.  Use gen_add3_insn instead of
354         gen_addsi3.
355         (rs6000_emit_epilogue): Adjust computation of restore_lr.
356         Duplicate restoration of LR and execute the appropriate one
357         depending on whether GPRs are being restored inline.  Set r11 from
358         offsetted frame_reg_rtx instead of sp_reg_rtx; if frame_reg_rtx is
359         r11, adjust sp_offset.  Use gen_add3_insn instead of gen_addsi3.
360         Fix out of line calls for AIX ABI.
361         * config/rs6000/rs6000.md (*return_and_restore_fpregs_aix_<mode>):
362         New insn.
363         * config/rs6000/spe.md (*save_gpregs_spe): Use explicit match for
364         register 11.
365         (*restore_gpregs_spe): Likewise.
366         (*return_and_restore_gpregs_spe): Likewise.
367         * config/rs6000/linux64.h (SAVE_FP_SUFFIX, RESTORE_FP_SUFFIX):
368         Define to empty string unconditionally.
369         * config/rs6000/sysv4.h (SAVE_FP_SUFFIX, RESTORE_FP_SUFFIX):
370         Define to empty string unconditionally.
371         (GP_SAVE_INLINE, FP_SAVE_INLINE): Handle TARGET_64BIT the same as
372         !TARGET_64BIT.
373
374 2009-09-15  Jan Hubicka  <jh@suse.cz>
375
376         * doc/invoke.texi (inline-insns-auto): Drop from 60 to 50.
377         * params.def (inline-insns-auto): Likewise.
378
379 2009-09-15  Martin Jambor  <mjambor@suse.cz>
380
381         * ipa-inline.c (estimate_function_body_sizes): Dump info about
382         individual statements only at TDF_DETAILS dump level.  Format
383         source for 80 characters per line.
384
385 2009-09-15  Christian Bruel  <christian.bruel@st.com>
386
387         * regrename.c (do_replace): Update REG_DEAD notes.
388
389 2009-09-15  Revital Eres  <eres@il.ibm.com>
390
391         * doc/tm.texi (TARGET_SUPPORT_VECTOR_MISALIGNMENT): Document.
392         * targhooks.c (default_builtin_support_vector_misalignment):
393         New builtin function.
394         * targhooks.h (default_builtin_support_vector_misalignment):
395         Declare.
396         * target.h (builtin_support_vector_misalignment):
397         New field in struct gcc_target.
398         * tree-vect-data-refs.c (vect_supportable_dr_alignment): Call
399         new builtin function.
400         * target-def.h (TARGET_SUPPORT_VECTOR_MISALIGNMENT):
401         Define.
402         * config/rs6000/rs6000.c
403         (rs6000_builtin_support_vector_misalignment): New function.
404         (TARGET_SUPPORT_VECTOR_MISALIGNMENT): Define.
405
406 2009-09-15  Jie Zhang  <jie.zhang@analog.com>
407
408         * config/bfin/bfin.c (length_for_loop): Use NONDEBUG_INSN_P
409         instead of INSN_P.
410         (bfin_optimize_loop): Likewise.
411         (bfin_gen_bundles): Likewise.
412         (workaround_speculation): Likewise.
413         (find_load): Return NULL_RTX for debug_insn.
414
415 2009-09-15  Uros Bizjak  <ubizjak@gmail.com>
416
417         * config/alpha/alpha.md (smaxsf3): Disable for IEEE mode.
418         (sminsf3): Ditto.
419
420 2009-09-14  DJ Delorie  <dj@redhat.com>
421
422         * config/mep/mep.h (JUMP_TABLES_IN_TEXT_SECTION): Define.
423         * config/mep/mep.c (mep_emit_cbranch): Don't use BEQZ/BNEI in
424         VLIW mode.
425
426 2009-09-14  Richard Henderson  <rth@redhat.com>
427             Jakub Jelinek  <jakub@redhat.com>
428
429         * builtins.c (expand_builtin_synchronize): Use gimple_build_asm_vec.
430         * cfgbuild.c (make_edges): Handle asm goto.
431         * cfglayout.c (fixup_reorder_chain): Likewise.
432         * cfgrtl.c (patch_jump_insn): Likewise.
433         * gimple-pretty-print.c (dump_gimple_asm): Likewise.
434         * gimple.c (gimple_build_asm_1): Add and use nlabels parameter.
435         (gimple_build_asm_vec): Add and use labels parameter.
436         (gimple_build_asm): Remove.
437         (walk_gimple_asm): Walk labels too.
438         * gimple.def (GIMPLE_ASM): Update docs.
439         * gimple.h: Update decls.
440         (struct gimple_statement_asm): Change nc to use unsigned char;
441         add nl member.
442         (gimple_asm_nlabels): New.
443         (gimple_asm_label_op, gimple_asm_set_label_op): New.
444         * gimplify.c (gimplify_asm_expr): Copy labels from ASM_EXPR
445         into gimple_build_asm_vec.
446         * jump.c (mark_jump_label_asm): New.
447         (mark_jump_label): Use it.
448         (redirect_jump_1): Handle asm goto.
449         (invert_jump_1): Soft fail if X is null.
450         * recog.c (extract_asm_operands): New.
451         (asm_noperands): Use it; handle asm labels.
452         (decode_asm_operands): Use extract_asm_operands.
453         (asm_operand_ok): Properly handle empty string.
454         * reg-stack.c (get_asm_operands_in_out): Rename from
455         get_asm_operand_n_inputs; use extract_asm_operands; return both
456         inputs and outputs by reference; update all callers.
457         * rtl.def (ASM_OPERANDS): Add label vector as operand 6.
458         * rtl.h (ASM_OPERANDS_LABEL_VEC): New.
459         (ASM_OPERANDS_LABEL_LENGTH, ASM_OPERANDS_LABEL): New.
460         (ASM_OPERANDS_SOURCE_LOCATION): Renumber.
461         (extract_asm_operands): Declare.
462         * stmt.c (expand_asm_operands): Add and use labels parameter.
463         (check_unique_operand_names): Likewise.
464         (resolve_asm_operand_names, resolve_operand_name_1): Likewise.
465         (expand_asm_stmt): Handle asm labels.
466         * tree-cfg.c (make_gimple_asm_edges): New.
467         (make_edges): Use it.
468         (cleanup_dead_labels): Handle asm labels.
469         (is_ctrl_altering_stmt): Likewise.
470         (gimple_redirect_edge_and_branch): Likewise.
471         * tree.def (ASM_EXPR): Add 5th operand.
472         * tree.h (ASM_LABELS): New.
473         (resolve_asm_operand_names): Update decl.
474
475         * c-parser.c (c_parser_asm_statement): Parse asm goto.
476         (c_parser_asm_goto_operands): New.
477         * c-tree.h (build_asm_expr): Update decl.
478         * c-typeck.c (build_asm_expr): Add and use labels parameter.
479         * doc/extend.texi: Document asm goto.
480
481 2009-09-14  Richard Henderson  <rth@redhat.com>
482
483         * except.h: Update declarations.
484         (struct pointer_map_t): Forward declare.
485         (ERT_UNKNOWN, ERT_THROW, ERT_CATCH): Remove.
486         (struct eh_landing_pad_d, eh_landing_pad): New.
487         (struct eh_catch_d, eh_catch): New.
488         (struct eh_region_d): Remove next_region_sharing_label, aka,
489         label, tree_label, landing_pad, post_landing_pad, resume,
490         may_contain_throw.  Rename region_number to index.  Remove
491         u.eh_catch, u.eh_throw.  Rename u.eh_try.eh_catch to first_catch.
492         Add u.must_not_throw, landing_pads, exc_ptr_reg, filter_reg.
493         (VEC(eh_landing_pad,gc)): New.
494         (struct eh_status): Remove last_region_number.  Add lp_array,
495         throw_stmt_table, ttype_data, ehspec_data.
496         (ehr_next, FOR_ALL_EH_REGION_AT): New.
497         (FOR_ALL_EH_REGION_FN, FOR_ALL_EH_REGION): New.
498         * except.c (lang_protect_cleanup_actions): Return tree.
499         (struct ehl_map_entry): Remove.
500         (init_eh_for_function): Push zero entries for region and lp_array.
501         (gen_eh_region): Add to region_array immediately.
502         (gen_eh_region_catch): Operate on eh_catch objects.
503         (gen_eh_landing_pad): New.
504         (get_eh_region_may_contain_throw, get_eh_region_tree_label): Remove.
505         (get_eh_region_no_tree_label, set_eh_region_tree_label): Remove.
506         (get_eh_region_from_number, get_eh_region_from_number_fn): New.
507         (get_eh_landing_pad_from_number_fn): New.
508         (get_eh_landing_pad_from_number): New.
509         (get_eh_region_from_lp_number_fn): New.
510         (get_eh_region_from_lp_number): New.
511         (expand_resx_stmt, note_eh_region_may_contain_throw): Remove.
512         (get_exception_pointer, get_exception_filter): Remove.
513         (collect_eh_region_array, can_be_reached_by_runtime): Remove.
514         (current_function_has_exception_handlers): Simplify.
515         (bring_to_root, eh_region_replaceable_by_p): Remove.
516         (replace_region, hash_type_list, hash_eh_region): Remove.
517         (eh_regions_equal_p, merge_peers, remove_unreachable_regions): Remove.
518         (label_to_region_map, num_eh_regions): Remove.
519         (get_next_region_sharing_label, must_not_throw_labels): Remove.
520         (find_exception_handler_labels): Remove.
521         (duplicate_eh_regions_0, find_prev_try): Remove.
522         (struct duplicate_eh_regions_data): New.
523         (duplicate_eh_regions_1): Rewrite.
524         (duplicate_eh_regions): Return a pointer map instead of an
525         integer offset.
526         (copy_eh_region_1, copy_eh_region, push_reachable_handler): Remove.
527         (redirect_eh_edge_to_label): Remove.
528         (eh_region_outermost): Rewrite using eh_region pointers
529         instead of integers.
530         (add_ttypes_entry): Update for ttype_data move to eh_status.
531         (add_ehspec_entry): Rewrite with VEC instead of varray.
532         (assign_filter_values): Likewise.  Export.
533         (build_post_landing_pads, connect_post_landing_pads): Remove.
534         (dw2_build_landing_pads): Rewrite to use lp_array.
535         (struct sjlj_lp_info, sjlj_find_directly_reachable_regions): Remove.
536         (sjlj_assign_call_site_values): Rewrite to use lp_array.
537         (sjlj_emit_dispatch_table, sjlj_build_landing_pads): Likewise.
538         (sjlj_mark_call_sites): Update for landing pad numbers.
539         (finish_eh_generation): Rewrite.
540         (gate_handle_eh): Do nothing for no eh tree.
541         (pass_rtl_eh): Move up near finish_eh_generation.
542         (remove_eh_landing_pad): New.
543         (remove_eh_handler): Export.
544         (remove_eh_region, remove_eh_handler_and_replace): Remove.
545         (for_each_eh_label): Rewrite to use lp_array.
546         (make_reg_eh_region_note): New.
547         (make_reg_eh_region_note_nothrow_nononlocal): New.
548         (insn_could_throw_p): New.
549         (copy_reg_eh_region_note_forward): New.
550         (copy_reg_eh_region_note_backward): New.
551         (check_handled, add_reachable_handler): Remove.
552         (reachable_next_level, foreach_reachable_handler): Remove.
553         (arh_to_landing_pad, arh_to_label, reachable_handlers): Remove.
554         (get_eh_region_and_lp_from_rtx): New.
555         (get_eh_region_from_rtx): New.
556         (can_throw_internal_1, can_throw_external_1): Remove.
557         (can_throw_internal): Use get_eh_region_from_rtx.
558         (can_throw_external): Use get_eh_region_and_lp_from_rtx.
559         (insn_nothrow_p, can_nonlocal_goto): New.
560         (expand_builtin_eh_common, expand_builtin_eh_pointer): New.
561         (expand_builtin_eh_filter, expand_builtin_eh_copy_values): New.
562         (add_action_record): Use VEC not varray.
563         (collect_one_action_chain): Update for eh_region changes.
564         (convert_to_eh_region_ranges): Make static.  Use VEC not varray.
565         Use get_eh_region_and_lp_from_rtx.
566         (gate_convert_to_eh_region_ranges): New.
567         (pass_convert_to_eh_region_ranges): Use it.
568         (push_uleb128, push_sleb128): Use VEC not varray.
569         (output_one_function_exception_table): Likewise.
570         (dump_eh_tree): Update for eh_region changes.
571         (verify_eh_tree): Likewise.
572         (verify_eh_region, default_init_unwind_resume_libfunc): Remove.
573         * tree-eh.c: Include target.h.
574         (add_stmt_to_eh_lp_fn): Rename from add_stmt_to_eh_region_fn.
575         Don't disallow GIMPLE_RESX; adjust argument check.
576         (add_stmt_to_eh_lp): Rename from add_stmt_to_eh_region.
577         (record_stmt_eh_region): Update for landing pad numbers;
578         generate a landing pad if necessary.
579         (remove_stmt_from_eh_lp): Rename from remove_stmt_from_eh_region.
580         (remove_stmt_from_eh_lp_fn): Similarly.
581         (lookup_stmt_eh_lp_fn): Rename from lookup_stmt_eh_region_fn.
582         Update for lp numbers; don't special case missing throw_stmt_table.
583         (lookup_expr_eh_lp): Similarly.
584         (lookup_stmt_eh_lp): Rename from lookup_stmt_eh_region.
585         (eh_seq, eh_region_may_contain_throw): New.
586         (struct leh_state): Add ehp_region.
587         (struct leh_tf_state): Remove eh_label.
588         (emit_post_landing_pad): New.
589         (emit_resx, emit_eh_dispatch): New.
590         (note_eh_region_may_contain_throw): New.
591         (frob_into_branch_around): Take eh_region not eh label;
592         emit eh code into eh_seq.
593         (honor_protect_cleanup_actions): Early exit for no actions.  Don't
594         handle EXC_PTR_EXPR, FILTER_EXPR.  Use gimple_build_eh_must_not_throw,
595         lower_eh_must_not_throw.  Emit code to eh_seq.
596         (lower_try_finally_nofallthru): Emit eh code to eh_seq.
597         (lower_try_finally_onedest): Likewise.
598         (lower_try_finally_copy): Likewise.
599         (lower_try_finally_switch): Likewise.
600         (lower_try_finally): Initialize ehp_region.
601         (lower_catch): Update for eh_catch objects.
602         (lower_eh_filter): Don't handle must_not_throw.
603         (lower_eh_must_not_throw): New.
604         (lower_cleanup): Don't set eh_label.
605         (lower_eh_constructs_2): Resolve eh builtins.
606         Handle GIMPLE_EH_MUST_NOT_THROW.
607         (lower_eh_constructs): Initialize eh_region_may_contain_throw.
608         Add eh_seq to the end of the function body.
609         (make_eh_dispatch_edges): New.
610         (make_eh_edge): Remove.
611         (make_eh_edges): Simplify for landing pads.
612         (redirect_eh_edge_1): New.
613         (redirect_eh_edge): Use it.
614         (redirect_eh_dispatch_edge): New.
615         (stmt_could_throw_p): Use a switch.  Allow RESX.
616         (stmt_can_throw_external): Use lookup_stmt_eh_lp.
617         (stmt_can_throw_internal): Likewise.
618         (maybe_clean_eh_stmt_fn, maybe_clean_eh_stmt): New.
619         (maybe_clean_or_replace_eh_stmt): Update for landing pads.
620         (maybe_duplicate_eh_stmt_fn, maybe_duplicate_eh_stmt): New.
621         (gate_refactor_eh): New.
622         (pass_refactor_eh): Use it.
623         (lower_resx, execute_lower_resx, pass_lower_resx): New.
624         (lower_eh_dispatch, execute_lower_eh_dispatch): New.
625         (gate_lower_ehcontrol, pass_lower_eh_dispatch): New.
626         (remove_unreachable_handlers): Rename from
627         tree_remove_unreachable_handlers; rewrite for landing pads;
628         call remove_eh_handler directly.
629         (remove_unreachable_handlers_no_lp): New.
630         (unsplit_eh, unsplit_all_eh): New.
631         (tree_empty_eh_handler_p, all_phis_safe_to_merge): Remove.
632         (cleanup_empty_eh_merge_phis, cleanup_empty_eh_move_lp): New.
633         (cleanup_empty_eh_unsplit): New.
634         (cleanup_empty_eh): Rewrite.
635         (cleanup_all_empty_eh): New.
636         (execute_cleanup_eh): Rename from cleanup_eh.  Remove unreachable
637         handlers first.  Use unsplit_all_eh, cleanup_all_empty_eh.
638         (gate_cleanup_eh): New.
639         (pass_cleanup_eh): Use it.
640         (verify_eh_edges): Move later in file.  Expect one EH edge.
641         (verify_eh_dispatch_edge): New.
642
643         * Makefile.in (FUNCTION_H): Use vecprim.h, not varray.h.
644         (gtype-desc.o): Add TARGET_H.
645         (tree.o): Use EXCEPT_H, not except.h.
646         (cfgbuild.o): Add EXPR_H.
647         (GTFILES): Add vecprim.h.
648         * builtins.c (expand_builtin): Handle BUILT_IN_EH_POINTER,
649         BUILT_IN_EH_FILTER, BUILT_IN_EH_COPY_VALUES.
650         * builtins.def (BUILT_IN_UNWIND_RESUME, BUILT_IN_EH_POINTER,
651         BUILT_IN_EH_FILTER, BUILT_IN_EH_COPY_VALUES): New.
652         * calls.c (emit_call_1): Use make_reg_eh_region_note.
653         * cfgbuild.c (control_flow_insn_p): Use can_nonlocal_goto; tidy
654         calls to can_throw_internal.
655         (rtl_make_eh_edge): Use get_eh_landing_pad_from_rtx.
656         (make_edges): Don't handle RESX; use can_nonlocal_goto.
657         * cfgexpand.c (expand_gimple_stmt_1): Don't handle RESX.
658         (expand_gimple_stmt): Use make_reg_eh_region_note.
659         (expand_debug_expr): Don't handle EXC_PTR_EXPR and FILTER_EXPR.
660         (gimple_expand_cfg): Don't call convert_from_eh_region_ranges,
661         or find_exception_handler_labels.
662         * cfgrtl.c (rtl_verify_flow_info_1): Don't handle RESX.  Assert
663         there is exacly one EH edge.  Use can_nonlocal_goto and
664         can_throw_internal.
665         * cgraphunit.c (update_call_expr): Use maybe_clean_eh_stmt_fn.
666         (cgraph_materialize_all_clones): Use maybe_clean_or_replace_eh_stmt.
667         * combine.c (can_combine_p, try_combine): Use insn_nothrow_p.
668         * cse.c (count_reg_usage, insn_live_p): Use insn_could_throw_p.
669         * dce.c (deletable_insn_p_1): Don't test may_trap_p.
670         (deletable_insn_p): Use insn_nothrow_p; reorder nonjump insn test.
671         * dse.c (scan_insn): Use insn_could_throw_p.
672         * emit-rtl.c (try_split): Use copy_reg_eh_region_note_backward.
673         * expr.c (expand_expr_real): Use make_reg_eh_region_note.
674         (expand_expr_real_1): Don't handle RESX, EXC_PTR, or FILTER_EXPR.
675         * fold-const.c (tree_expr_nonnegative_warnv_p): Don't handle
676         EXC_PTR_EXPR or FILTER_EXPR.
677         (tree_expr_nonzero_warnv_p): Likewise.
678         * function.h: Include vecprim.h, not varray.h
679         (struct rtl_eh): Remove filter, exc_ptr, built_landing_pad members;
680         move ttype_data and ehspec_data members to struct eh_status; change
681         action_record_data member to a VEC.
682         * gcse.c (hash_scan_set): Use can_throw_internal.
683         * gengtype.c (open_base_files): Add target.h to gtype-desc.c.
684         * gimple-iterator.c (gsi_replace): Use maybe_clean_or_replace_eh_stmt.
685         * gimple-low.c (lower_stmt): Handle GIMPLE_EH_MUST_NOT_THROW.
686         (block_may_fallthru): Don't handle RESX_EXPR.
687         * gimple-pretty-print.c (dump_gimple_label): Dump EH_LANDING_PAD_NR.
688         (dump_gimple_eh_must_not_throw, dump_gimple_eh_dispatch): New.
689         (dump_gimple_stmt): Dump landing pad information with TDF_EH;
690         handle GIMPLE_EH_MUST_NOT_THROW, GIMPLE_EH_DISPATCH.
691         * gimple.c (gss_for_code): Handle GIMPLE_EH_MUST_NOT_THROW,
692         GIMPLE_EH_DISPATCH, GIMPLE_RESX.
693         (gimple_size): Likewise.
694         (gimple_build_eh_dispatch, gimple_build_eh_must_not_throw): New.
695         (gimple_build_resx): Use gimple_build_with_ops.
696         (DEFTREECODE): Don't handle EXC_PTR_EXPR, FILTER_EXPR.
697         (is_gimple_val): Likewise.
698         (is_gimple_stmt): Remove RESX_EXPR.
699         * gimple.def (GIMPLE_EH_MUST_NOT_THROW, GIMPLE_EH_DISPATCH): New.
700         (GIMPLE_RESX): Reorder with other EH constructs.
701         * gimple.h (struct gimple_statement_eh_mnt): New.
702         (struct gimple_statement_eh_ctrl): Rename from gimple_statement_resx.
703         (gimple_eh_filter_must_not_throw): Remove.
704         (gimple_eh_filter_set_must_not_throw): Remove.
705         (gimple_eh_must_not_throw_fndecl): New.
706         (gimple_eh_dispatch_region, gimple_eh_dispatch_set_region): New.
707         (is_gimple_resx): New.
708         * gimplify.c (gimplify_expr): Don't handle EXC_PTR_EXPR, RESX_EXPR.
709         Don't copy EH_FILTER_MUST_NOT_THROW.
710         * gsstruct.def (GSS_EH_MNT, GSS_EHCONTROL): New.
711         * ipa-inline.c (estimate_function_body_sizes): Don't try to
712         handle must_not_throw_labels specially.
713         * ipa-pure-const.c (check_call): Update debug statement for LP.
714         * ipa-type-escape.c (check_operand): Don't handle EXC_PTR or FILTER.
715         * ipa-utils.c (get_base_var): Likewise.
716         * libfunc.h (LTI_unwind_resume, unwind_resume_libfunc): Remove.
717         * lower-subreg.c (move_eh_region_note): Remove.
718         (resolve_simple_move): Use copy_reg_eh_region_note_forward.
719         * omp-low.c (new_omp_context): Update for eh_lp_nr.
720         (create_task_copyfn): Likewise.
721         (maybe_catch_exception): Use gimple_build_eh_filter.
722         * optabs.c (emit_libcall_block): Update test for no-nonlocal-goto
723         REG_EH_REGION.  Use make_reg_eh_region_note_nothrow_nononlocal.
724         * passes.c (init_optimization_passes): Add pass_lower_eh_dispatch
725         and pass_lower_resx.
726         * print-tree.c (print_node): Dump EH_LANDING_PAD_NR.
727         * recog.c (peephole2_optimize): Use copy_reg_eh_region_note_backward,
728         can_throw_internal, can_nonlocal_goto.
729         * reload1.c (fixup_eh_region_note): Use insn_could_throw_p,
730         copy_reg_eh_region_note_forward.
731         (emit_input_reload_insns): Use copy_reg_eh_region_note_forward.
732         (emit_output_reload_insns): Likewise.
733         (copy_eh_notes): Remove.
734         * rtl.def (RESX): Remove.
735         * rtl.h: Update declarations.
736         * sese.c (graphite_copy_stmts_from_block): Use maybe_duplicate_eh_stmt.
737         * tree-cfg.c (make_edges): Handle GIMPLE_EH_DISPATCH.
738         (update_eh_label): Remove.
739         (cleanup_dead_labels_eh): New.
740         (cleanup_deal_labels): Use it instead of update_eh_label.
741         (gimple_merge_blocks): Update landing pad data structure when
742         removing a landing pad label.
743         (remove_useless_stmts_tc): Remove gimple_eh_filter_must_not_throw
744         test; handle GIMPLE_EH_MUST_NOT_THROW.
745         (is_ctrl_altering_stmt): Handle GIMPLE_EH_DISPATCH.
746         (verify_gimple_assign_single): Don't handle EXC_PTR or FILTER_EXPR.
747         (verify_types_in_gimple_stmt): Handle GIMPLE_EH_DISPATCH.
748         (verify_stmt): Likewise.  Verify landing pads.
749         (gimple_redirect_edge_and_branch): Handle GIMPLE_EH_DISPATCH.
750         (gimple_duplicate_bb): Use maybe_duplicate_eh_stmt.
751         (struct move_stmt_d): Add eh_map.
752         (move_stmt_eh_region_nr, move_stmt_eh_region_tree_nr): New.
753         (move_stmt_r): Remap eh region numbers in builtin calls,
754         resx and eh_dispatch.
755         (move_block_to_fn): Remove eh_offset parameter.  Use
756         maybe_duplicate_eh_stmt_fn.
757         (find_outermost_region_in_block): Operate on eh_region pointers
758         instead of region numbers.
759         (move_sese_region_to_fn): Expect eh_map instead of eh_offset from
760         duplicate_eh_regions.
761         * tree-cfgcleanup.c (tree_forwarder_block_p): Move entry block edge
762         test earlier.  Disallow EH landing pads.
763         * tree-cfa.c (create_tree_common_ann): Don't set ann->rn.
764         * tree-flow.h: Update declarations.
765         (struct tree_ann_common_d): Replace rn with lp_nr.
766         * tree-inline.c (copy_tree_body_r): Don't handle RESX_EXPR.
767         (remap_eh_region_nr, remap_eh_region_tree_nr): New.
768         (remap_gimple_stmt): Remap eh region numbers in builtin calls,
769         resx and eh_dispatch.
770         (copy_bb): Use maybe_duplicate_eh_stmt_fn.
771         (copy_edges_for_bb): Use make_eh_dispatch_edges.
772         (copy_cfg_body): Expect eh_map instead of eh_region_offset
773         from duplicate_eh_regions.
774         (estimate_num_insns): Don't handle EXC_PTR_EXPR or FILTER_EXPR;
775         update RESX; handle EH_DISPATCH.
776         (expand_call_inline): Set eh_lp_nr, not eh_region.
777         (maybe_inline_call_in_expr): Likewise.
778         * tree-inline.h (struct copy_body_data): Replace eh_region with
779         eh_lp_nr, eh_region_offset with eh_map.
780         * tree-optimize.c (execute_fixup_cfg): Use maybe_clean_eh_stmt.
781         * tree-pass.h (pass_lower_eh_dispatch, pass_lower_resx): New.
782         * tree-pretty-print.c (dump_generic_node): Don't handle
783         EXC_PTR_EXPR, FILTER_EXPR, RESX_EXPR.
784         * tree-sra.c (scan_function): Use maybe_clean_eh_stmt.
785         * tree-ssa-alias.c (ref_maybe_used_by_call_p_1): Don't handle
786         EXC_PTR_EXPR, FILTER_EXPR.
787         * tree-ssa-operands.c (get_expr_operands): Likewise.
788         * tree-ssa-propagate.c (valid_gimple_rhs_p): Likewise.
789         * tree-ssa-sccvn.c (copy_reference_ops_from_ref): Likewise.
790         (ao_ref_init_from_vn_reference): Likewise.
791         * tree-ssa-sink.c (statement_sink_location): Likewise.
792         * tree-ssa-dce.c (mark_stmt_if_obviously_necessary): Likewise.
793         (mark_virtual_phi_result_for_renaming): Export.  Tidy.
794         * tree-ssa-pre.c (get_or_alloc_expr_for): Don't handle
795         EXC_PTR_EXPR, FILTER_EXPR.
796         (is_exception_related): Remove.
797         (compute_avail): Don't call it.
798         * tree-ssa-structalias.c: Remove VEC definitions for int and unsigned.
799         * tree.c (find_decls_types_in_eh_region): Update for eh_region changes.
800         (find_decls_types_in_node): Use FOR_ALL_EH_REGION_FN.
801         (build_common_builtin_nodes): Add enable_cxa_end_cleanup parameter.
802         Build EH builtins.
803         (build_resx): Remove.
804         * tree.def (EXC_PTR_EXPR, FILTER_EXPR, RESX_EXPR): Remove.
805         * tree.h: Update declarations.
806         (EH_FILTER_MUST_NOT_THROW): Remove.
807         (struct tree_label_decl): Add eh_landing_pad_nr.
808         (EH_LANDING_PAD_NR): New.
809         * value-prof.c (gimple_ic): Tidy variable names.  Update for
810         landing pad numbers.
811         (gimple_stringop_fixed_value): Tidy variable names.  Assert
812         that neither call stmt can throw.
813         * vecprim.h (uchar): New.
814         (VEC(uchar,heap), VEC(uchar,gc)): New.
815
816         * c-common.c (c_define_builtins): Update call to
817         build_common_builtin_nodes.
818         * c-parser.c (c_parse_file): Don't call
819         default_init_unwind_resume_libfunc.
820
821 2009-09-14  Richard Sandiford  <rdsandiford@googlemail.com>
822
823         * config/mips/mips-protos.h (mips_cfun_has_cprestore_slot_p): Declare.
824         (mips_cprestore_address_p): Likewise.
825         (mips_save_gp_to_cprestore_slot): Likewise.
826         (mips_restore_gp): Rename to...
827         (mips_restore_gp_from_cprestore_slot): ...this.
828         (mips_must_initialize_gp_p): Declare.
829         (mips_emit_save_slot_move): Likewise.
830         (mips_output_load_label): Return nothing.
831         (mips_eh_uses): Declare.
832         * config/mips/mips.h (TARGET_SPLIT_CALLS): Require epilogue_completed.
833         (TARGET_CPRESTORE_DIRECTIVE): New macro.
834         (TARGET_ABSOLUTE_JUMPS): Likewise.
835         (EH_USES): Likewise.
836         (FIRST_PSEUDO_REGISTER): Update comment.
837         (MIPS_ABSOLUTE_JUMP): New macro, extracted from...
838         (MIPS_CALL): ...here.
839         (REGISTER_NAMES): Add $cprestore.
840         * config/mips/mips.c (machine_function): Remove has_gp_insn_p.
841         Add load_label_length, has_inflexible_gp_insn_p,
842         has_flexible_gp_insn_p, must_initialize_gp_p and
843         must_restore_gp_when_clobbered_p.
844         (mips_expand_call): Don't generate split instructions here.
845         (mips_split_call): Update the call to mips_restore_gp after
846         the above name change.
847         (mips16_cfun_returns_in_fpr_p): Move earlier in file.
848         (mips_find_gp_ref): New function.
849         (mips_insn_has_inflexible_gp_ref_p): Likewise.
850         (mips_cfun_has_inflexible_gp_ref_p): Likewise.
851         (mips_insn_has_flexible_gp_ref_p): Likewise.
852         (mips_cfun_has_flexible_gp_ref_p): Likewise.
853         (mips_function_has_gp_insn): Delete.
854         (mips_global_pointer): Drop the df_regs_ever_live_p check.
855         Use the new functions above.  Only return INVALID_REGNUM
856         for TARGET_ABSOLUTE_JUMPS.
857         (mips_must_initialize_gp_p): New function.
858         (mips_get_cprestore_base_and_offset): New function, extracted from...
859         (mips_cprestore_slot): ...here.  Take a bool parameter.
860         (mips_cfun_has_cprestore_slot_p): New function.
861         (mips_cprestore_address_p): Likewise.
862         (mips_save_gp_to_cprestore_slot): Likewise.
863         (mips_restore_gp): Rename to...
864         (mips_restore_gp_from_cprestore_slot): ...this.  Assert
865         epilogue_completed.  Update the call to mips_cprestore_slot.
866         Test cfun->machine->must_restore_gp_when_clobbered_p.
867         (mips_direct_save_slot_move_p): New function.
868         (mips_emit_save_slot_move): Likewise.
869         (mips_output_cplocal): Test mips_must_initialize_gp_p () instead
870         of cfun->machine->global_pointer.
871         (mips_output_function_prologue): Check mips_must_initialize_gp_p ().
872         (mips_save_reg): Use mips_emit_save_slot_move.
873         (mips_expand_prologue): Set must_initialize_gp_p.
874         Use mips_cfun_has_cprestore_slot_p.  Use gen_potential_cprestore
875         for all cprestore saves.  Emit a use_cprestore instruction after
876         setting up the cprestore slot.
877         (mips_restore_reg): Use mips_emit_save_slot_move.
878         (mips_process_load_label): New function.
879         (mips_load_label_length): Likewise.
880         (mips_output_load_label): Don't return asm: output it here instead.
881         Use mips_process_load_label.
882         (mips_adjust_insn_length): Adjust the length of branch instructions
883         that have length MAX_PIC_BRANCH_LENGTH.
884         (mips_output_conditional_branch): Update the call to
885         mips_output_load_label.  Assume the branch target is OPERANDS[0]
886         rather than OPERANDS[1].  Use MIPS_ABSOLUTE_JUMP for absolute jumps.
887         (mips_output_order_conditional_branch): Swap the meaning of
888         OPERANDS[0] and OPERANDS[1].
889         (mips_variable_issue): Don't count ghost instructions.
890         (mips_expand_ghost_gp_insns): New function.
891         (mips_reorg): Rerun mips_reorg_process_insns if it returns true.
892         (mips_output_mi_thunk): Set must_initialize_gp_p.
893         (mips_eh_uses): New function.
894         * config/mips/predicates.md (cprestore_save_slot_operand)
895         (cprestore_load_slot_operand): New predicates.
896         * config/mips/mips.md (UNSPEC_POTENTIAL_CPRESTORE): New unspec.
897         (UNSPEC_MOVE_GP): Likewise.
898         (UNSPEC_CPRESTORE, UNSPEC_RESTORE_GP, UNSPEC_EH_RETURN)
899         (UNSPEC_CONSTTABLE_INT, UNSPEC_CONSTTABLE_FLOAT): Bump to make room.
900         (CPRESTORE_SLOT_REGNUM): New register.
901         (MAX_PIC_BRANCH_LENGTH): New constant.
902         (jal_macro): Use MIPS_ABSOLUTE_JUMPS.
903         (length): Use MAX_PIC_BRANCH_LENGTH as a placeholder for PIC long
904         branches.  Fix commentary.
905         (loadgp_newabi_<mode>): Change from unspec_volatile to unspec.
906         Only split if mips_must_initialize_gp_p; expand to nothing otherwise.
907         Change type to "ghost".
908         (loadgp_absolute_<mode>): Likewise.
909         (loadgp_rtp_<mode>): Likewise.
910         (copygp_mips16): Likewise.
911         (loadgp_blockage): Remove redundant mode attribute.
912         (potential_cprestore): New instruction.
913         (cprestore): Turn into an unspec set.
914         (use_cprestore): New instruction.
915         (*branch_fp): Swap operands 0 and 1.  Remove redundant mode attribute.
916         (*branch_fp_inverted): Likewise.
917         (*branch_order<mode>): Likewise.
918         (*branch_order<mode>_inverted): Likewise.
919         (*branch_equality<mode>): Likewise.
920         (*branch_equality<mode>_inverted): Likewise.
921         (*branch_bit<bbv><mode>): Likewise.
922         (*branch_bit<bbv><mode>_inverted): Likewise.
923         (*branch_equality<mode>_mips16): Remove redundant mode.
924         (jump): Turn into a define_expand.
925         (*jump_absolute): New instruction.
926         (*jump_pic): Likewise.
927         (*jump_mips16): Rename previously-unnamed pattern.  Remove
928         redundant mode attribute.
929         (restore_gp): Split on epilogue_completed rather than
930         reload_completed.  Change type to "ghost".
931         (move_gp<mode>): New instruction.
932         * config/mips/mips-dsp.md (mips_bposge): Swap operands 0 and 1.
933         Remove redundant mode attribute.
934         * config/mips/mips-ps-3d.md (bc1any4t): Likewise.
935         (bc1any4f, bc1any2t, bc1any2f): Likewise.
936         (*branch_upper_lower, *branch_upper_lower_inverted): Likewise.
937
938 2009-09-14  Michael Meissner  <meissner@linux.vnet.ibm.com>
939
940         PR target/41210
941         * config/rs6000/rs6000.c (rs6000_function_value): V2DF and V2DI
942         are returned in the same register (vs34 or v2) that Altivec vector
943         types are returned in.
944         (rs6000_libcall_value): Ditto.
945
946         PR target/41331
947         * config/rs6000/rs6000.c (rs6000_emit_move): Use gen_add3_insn
948         instead of explicit addsi3/adddi3 calls.
949         (rs6000_split_multireg_move): Ditto.
950         (rs6000_emit_allocate_stack): Ditto.
951         (rs6000_emit_prologue): Ditto.
952         (rs6000_output_mi_thunk): Ditto.
953
954         * config/rs6000/rs6000.md (bswapdi*): Don't assume the pointer
955         size is 64 bits if we can use 64-bit registers.
956
957 2009-09-14  Bernd Schmidt  <bernd.schmidt@analog.com>
958
959         * config/bfin/bfin.c (bfin_longcall_p): Don't use short calls for weak
960         symbols.
961
962         From Jie Zhang <jie.zhang@analog.com>:
963         * config/bfin/bfin.c (bfin_expand_prologue): Ask do_link to
964         save FP and RETS with saveall attribute.
965         (bfin_expand_epilogue): Ask do_unlink to restore FP and RETS
966         with saveall attribute.
967
968         * config/bfin/bfin.c (bfin_expand_builtin,
969         case BFIN_BUILTIN_MULT_1X32X32): Force constants to registers for the
970         operands.
971
972         From Jie Zhang <jie.zhang@analog.com>:
973         * config/bfin/bfin.c (bfin_expand_builtin): Initialize icodes
974         before use in two places.
975         * config/bfin/bfin.md (AREG): Define mode iterator.
976         (reload_in, reload_out): Use mode iterator AREG.
977
978 2009-09-14  Richard Guenther  <rguenther@suse.de>
979
980         PR middle-end/41350
981         * dwarf2out.c (dwarf2out_begin_prologue): Adjust non-CFI asm
982         EH personality path.
983
984 2009-09-13  Richard Guenther  <rguenther@suse.de>
985             Rafael Avila de Espindola  <espindola@google.com>
986
987         * langhooks-def.h (LANG_HOOKS_EH_RUNTIME_TYPE): Define.
988         (LANG_HOOKS_EH_PERSONALITY): Likewise.
989         (LANG_HOOKS_INITIALIZER): Adjust.
990         (lhd_pass_through_t): Declare.
991         * langhooks.h (struct lang_hooks): Add eh_runtime_type and
992         eh_personality.
993         * langhooks.c (lhd_pass_through_t): New function.
994         * dwarf2out.c (output_call_frame_info, dwarf2out_do_cfi_startproc,
995         dwarf2out_begin_prologue): Use personality from current_function_decl.
996         * expr.h (get_personality_function): Declare.
997         * expr.c (get_personality_function): New function.
998         (build_personality_function): Likewise.
999         * libfuncs.h (libfunc_index): Remove LTI_eh_personality.
1000         (eh_personality_libfunc): Remove.
1001         * optabs.c (build_libfunc_function): New function split out from ...
1002         (init_one_libfunc): ... here.
1003         * tree.h (DECL_FUNCTION_PERSONALITY): New.
1004         (tree_function_decl): Add personality.
1005         (lhd_gcc_personality): Declare.
1006         (build_personality_function): Likewise.
1007         * tree.c (gcc_eh_personality_decl): New.
1008         (lhd_gcc_personality): New function.
1009         * except.h (lang_eh_runtime_type): Remove.
1010         (enum eh_personality_kind): New.
1011         (build_personality_function): Declare.
1012         (function_needs_eh_personality): Declare.
1013         * except.c (lang_eh_runtime_type): Remove.
1014         (function_needs_eh_personality): New function.
1015         (add_type_for_runtime): Call lang_hooks.type_for_runtime instead.
1016         (sjlj_emit_function_enter, output_function_exception_table):
1017         Use personality from current_function_decl.
1018         * tree-eh.c (lower_eh_constructs): Set DECL_FUNCTION_PERSONALITY.
1019         * tree-inline.c (tree_can_inline_p): Do not inline across different
1020         EH personalities.
1021         (expand_call_inline): Likewise.  Adjust the callers EH personality.
1022         (tree_function_versioning): Copy DECL_FUNCTION_PERSONALITY.
1023         * cgraph.c (cgraph_add_new_function): Set DECL_FUNCTION_PERSONALITY.
1024         * Makefile.in (cgraph.o): Add $(EXCEPT_H) dependency.
1025         (c-parser.o): Likewise
1026         * c-tree.h (c_eh_initialized_p): Remove.
1027         (c_maybe_initialize_eh): Likewise.
1028         * c-decl.c (finish_decl): Don't call c_maybe_initialize_eh.
1029         (finish_decl): Don't call c_maybe_initialize_eh.
1030         (c_eh_initialized_p): Remove.
1031         (c_maybe_initialize_eh): Likewise.
1032         * c-parser.c (c_parser_omp_construct): Likewise.
1033         (c_parse_file): Initialize exception handling.
1034
1035 2009-09-13  Kai Tietz  <kai.tietz@onevision.com>
1036
1037         * config.gcc (tm_file): Remove i386/biarch32.h
1038         for i?86-w64-mingw* case.
1039         (i?86-*-mingw* andx86_64-*-mingw*): Add multilib
1040         support.
1041         * config.host: Set for x64 mingw the option
1042         use_long_long_for_widest_fast_int to yes.
1043
1044 2009-09-13  Eric Botcazou  <ebotcazou@adacore.com>
1045
1046         * tree.h (DECL_IGNORED_P): Document further effect for FUNCTION_DECL.
1047         * dbxout.c (dbxout_function_end): Do not test DECL_IGNORED_P.
1048         (dbxout_begin_function): Likewise.
1049         * final.c (dwarf2_debug_info_emitted_p): New predicate.
1050         (final_start_function): Do not emit debug info if DECL_IGNORED_P is
1051         set on the function.
1052         (final_end_function): Likewise.
1053         (final_scan_insn): Likewise.
1054         (rest_of_handle_final): Likewise.
1055         * varasm.c (assemble_start_function): Likewise.
1056         * config/rs6000/xcoff.h (ASM_DECLARE_FUNCTION_NAME): Likewise.
1057
1058 2009-09-12  Jason Merrill  <jason@redhat.com>
1059
1060         * dbgcnt.c (dbg_cnt_process_single_pair): constify.
1061         * opts.c (common_handle_option): constify.
1062
1063 2009-09-12  Gerald Pfeifer  <gerald@pfeifer.com>
1064
1065         * doc/install.texi (avr): Remove obsolete reference site.
1066
1067 2009-09-12  Gerald Pfeifer  <gerald@pfeifer.com>
1068         
1069         * doc/install.texi (Binaries): Adjust AIX link.
1070
1071 2009-09-12  Akim Demaille  <demaille@gostai.com>
1072
1073         * doc/invoke.texi (-fstrict-aliasing): Correct two examples.
1074         Use an imperative sentence.
1075
1076 2009-09-11  Richard Henderson  <rth@redhat.com>
1077
1078         * gsstruct.def (DEFGSSTRUCT): Remove printable-name argument; add
1079         structure-name and has-tree-operands arguments; update all entries.
1080         * gimple.def (DEFGSCODE): Replace 3rd argument with GSS_symbol;
1081         update all entries.
1082         * gimple.c (gimple_ops_offset_): Use HAS_TREE_OP argument.
1083         (gsstruct_code_size): New.
1084         (gss_for_code_): New.
1085         (gss_for_code): Remove.
1086         (gimple_size): Rewrite using gsstruct_code_size.
1087         (gimple_statement_structure): Move to gimple.h.
1088         * gimple.h (gimple_ops_offset_, gss_for_code_): Declare.
1089         (gss_for_code, gimple_statement_structure): New.
1090         (gimple_ops): Use new arrays; tidy.
1091
1092 2009-09-11  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
1093
1094         * config/pa/predicates.md (symbolic_operand): Require a CONST symbolic
1095         operand to be a PLUS expression.
1096         * config/pa/pa.c (pa_secondary_reload): Likewise.
1097
1098 2009-09-11  Jakub Jelinek  <jakub@redhat.com>
1099
1100         * combine.c (propagate_for_debug_subst): Call wrap_constant on top.
1101
1102         * print-rtl.c (print_rtx): Use JUMP_LABEL (in_rtx) instead of
1103         XEXP (in_rtx, 8).
1104
1105 2009-09-11  Bernd Schmidt  <bernd.schmidt@analog.com>
1106
1107         From Jie Zhang <jie.zhang@analog.com>:
1108         * doc/extend.texi (node Function Attributes): Document l2
1109         function attribute.
1110         (node Blackfin Variable Attributes): Document l2 variable attributes.
1111
1112 2009-09-11  Loren J. Rittle  <ljrittle@acm.org>
1113
1114         * config.gcc (*-*-freebsd*): Enable default_use_cxa_atexit
1115         to match the system compiler's configuration at inflection point.
1116         Add comment to remark a remaining difference with system compiler.
1117
1118         * configure.ac (*-*-freebsd*): Enable check for __stack_chk_fail.
1119         * configure: Regenerate.
1120
1121 2009-09-11  Bernd Schmidt  <bernd.schmidt@analog.com>
1122
1123         From Jie Zhang <jie.zhang@analog.com>:
1124         * config/bfin/bfin.c (bfin_expand_call): Handle L2 functions.
1125         (bfin_handle_l2_attribute): New.
1126         (bfin_attribute_table): Add l2 attribute.
1127
1128 2009-09-11  Michael Matz  <matz@suse.de>
1129
1130         PR middle-end/41275
1131         * tree-inline.c (remap_decls): Don't put DECL_EXTERNAL decls
1132         on the local_decls list.
1133
1134 2009-09-11  Alexandre Oliva  <aoliva@redhat.com>
1135
1136         PR debug/41276
1137         PR debug/41307
1138         * cselib.c (cselib_expand_value_rtx_cb): Document callback
1139         interface.
1140         (cselib_expand_value_rtx_1): Use callback for SUBREGs.  Adjust
1141         for VALUEs, to implement the documented interface.
1142         * var-tracking.c (vt_expand_loc_callback): Handle SUBREGs.
1143         Adjust for VALUEs and anything else, to implement the
1144         documented interface.
1145
1146 2009-09-10  Nathan Froyd  <froydnj@codesourcery.com>
1147
1148         * config/rs6000/rs6000.h (DATA_ALIGNMENT): Check that we are dealing
1149         with actual SPE/paired vector modes before using 64-bit alignment.
1150         Check that TYPE is a REAL_TYPE for TARGET_E500_DOUBLE.
1151
1152 2009-09-10  DJ Delorie  <dj@redhat.com>
1153
1154         * config/mep/mep.md (eh_epilogue): Defer until after epilogue is
1155         emitted.
1156
1157         * config/mep/mep.h (LEGITIMATE_CONSTANT_P): New.
1158         * config/mep/mep.c (mep_legitimate_constant_p): New.
1159         * config/mep/mep-protos.h: Prototype it.
1160
1161 2009-09-10  Richard Henderson  <rth@redhat.com>
1162
1163         * print-rtl.c (print_rtx): Fix JUMP_LABEL index.
1164
1165 2009-09-10  Jason Merrill  <jason@redhat.com>
1166
1167         * tree.c (chain_index): New fn.
1168         * tree.h: Declare it.
1169
1170 2009-09-10  Rainer Orth  <ro@CeBiTec.Uni-Bielefeld.DE>
1171
1172         * config/sol2-c.c (cmn_err_length_specs): Initialize
1173         scalar_identity_flag.
1174
1175 2009-09-10  Richard Henderson  <rth@redhat.com>
1176
1177         * tree.h (struct tree_decl_common): Move align member earlier;
1178         move label_decl_uid member ...
1179         (struct tree_label_decl): ... here.
1180         (LABEL_DECL_UID): Update to match.
1181
1182         * tree-cfg.c (dump_function_to_file): Dump eh tree with TDF_EH,
1183         not TDF_DETAILS.
1184
1185         * tree-cfg.c (gimple_redirect_edge_and_branch): Do
1186         gimple_try_redirect_by_replacing_jump test after no-op and EH tests.
1187
1188         * tree-cfg.c (split_edge_bb_loc): Don't disallow placement at
1189         dest_prev if the edge is complex.
1190
1191         * tree-cfg.c (is_ctrl_stmt): Use a switch.
1192
1193         * tree-cfg.c (gimple_can_merge_blocks_p): Move label and
1194         loop latch tests earlier.
1195
1196         * gimple-iterator.c (gimple_find_edge_insert_loc): Insert
1197         before GIMPLE_RETURN, not after its predecessor; insert
1198         before GIMPLE_RESX.
1199
1200         * gimple-iterator.c (gimple_find_edge_insert_loc): Use
1201         gimple_seq_empty_p to test for no PHI nodes.
1202         * tree-cfg.c (split_critical_edges): Likewise.
1203
1204         * c-common.h (c_dialect_cxx, c_dialect_objc): Boolify.
1205
1206 2009-09-10  Hariharan Sandanagobalane  <hariharan@picochip.com>
1207
1208         * final.c (shorten_branches) : Ignore DEBUG_INSN_P instructions
1209         introduced by the VTA branch merge.
1210
1211 2009-09-10  Uros Bizjak  <ubizjak@gmail.com>
1212
1213         * ira-conflicts.c: Use fputs or putc instead of fprintf
1214         where appropriate.
1215         * cfg.c: Ditto.
1216         * toplev.c: Ditto.
1217         * tree-switch-conversion.c: Ditto.
1218
1219 2009-09-10  Hariharan Sandanagobalane  <hariharan@picochip.com>
1220
1221         * config/picochip/picochip.c : Ignore DEBUG_INSN_P instructions
1222         introduced by the VTA branch merge.
1223
1224 2009-09-10  Uros Bizjak  <ubizjak@gmail.com>
1225
1226         Revert:
1227         2009-09-09  Uros Bizjak  <ubizjak@gmail.com>
1228
1229         PR rtl-optimization/39779
1230         * expr.c (convert_modes): Return when mode == oldmode after
1231         CONST_INTs are processed.
1232
1233 2009-09-10  Nick Clifton  <nickc@redhat.com>
1234
1235         * config/mep/mep.c (mep_encode_section_info): Copy weakness
1236         attribute and referring decl when creating renamed symbol.
1237
1238 2009-09-10  Richard Guenther  <rguenther@suse.de>
1239
1240         PR middle-end/41257
1241         * cgraphunit.c (cgraph_emit_thunks): Emit thunks only for
1242         reachable nodes.
1243         (cgraph_finalize_compilation_unit): Compute reachability
1244         before emitting thunks.  Properly process aliases before
1245         possibly removing unreachable nodes.
1246
1247 2009-09-10  Richard Guenther  <rguenther@suse.de>
1248
1249         PR middle-end/41254
1250         * tree.c (struct free_lang_data_d): Add worklist member.
1251         (find_decls_types_r): Push onto the worklist instead of recursing.
1252         Handle TREE_BINFOs properly.
1253         (find_decls_types): New function wrapped around find_decls_types_r
1254         to process the worklist.
1255         (find_decls_types_in_eh_region): Use it.
1256         (find_decls_types_in_node): Likewise.
1257         (find_decls_types_in_var): Likewise.
1258         (free_lang_data_in_cgraph): Likewise.  Free the worklist.
1259         * tree.h (RECORD_OR_UNION_TYPE_P): New.
1260         (AGGREGATE_TYPE_P): Adjust.
1261
1262 2009-09-09  Jason Merrill  <jason@redhat.com>
1263
1264         * configure.ac: Check glibc version even if we have an in-tree
1265         assembler.
1266
1267 2009-09-09  Anthony Green  <green@moxielogic.com>
1268
1269         * config/moxie/moxie.md (*movsi, *movhi, *movqi): Use xor to load
1270         the constant 0 when appropriate.
1271         * config/moxie/constraints.md: Add constraint O.
1272
1273         * config/moxie/moxie.c (moxie_setup_incoming_varargs): Adjust
1274         to pass up to 6 32-bit argument values in registers.
1275         (moxie_function_arg): Ditto.
1276         (moxie_arg_partial_bytes): Ditto.
1277         * config/moxie/moxie.h (FUNCTION_ARG_ADVANCE): Ditto.
1278         (REG_PARM_STACK_SPACE): Ditto.
1279         (FUNCTION_ARG_REGNO_P): Ditto.
1280
1281         * config/moxie/moxie.c (moxie_expand_prologue): Use dec
1282         instruction to allocate stack space.
1283
1284 2009-09-09  Segher Boessenkool  <segher@kernel.crashing.org>
1285
1286         * config/rs6000/rs6000.md (bswapdi2_64bit): Fix
1287         unnecessarily stringent constraints.  Fix address
1288         calculation in the splitters.
1289
1290 2009-09-09  Uros Bizjak  <ubizjak@gmail.com>
1291
1292         PR rtl-optimization/39779
1293         * expr.c (convert_modes): Return when mode == oldmode after
1294         CONST_INTs are processed.
1295
1296 2009-09-09  Kai Tietz  <kai.tietz@onevision.com>
1297
1298         PR/41315
1299         * config/i386.c (ix86_can_use_return_insn_p): Check for padding0, too.
1300         (ix86_expand_prologue): Take frame.padding0 into logic of
1301         to_allocate checks.
1302         (ix86_expand_epilogue): Likewise.
1303
1304 2009-09-09  Jakub Jelinek  <jakub@redhat.com>
1305
1306         * config/t-slibgcc-elf-ver (SHLIB_MAKE_SOLINK, SHLIB_INSTALL_SOLINK):
1307         New variables.
1308         (SHLIB_LINK, SHLIB_INSTALL): Use them.
1309         * config/t-slibgcc-libgcc: New file.
1310         * config.gcc (powerpc*-*-linux*, powerpc*-*-gnu*): Use it.
1311
1312 2009-09-09  Martin Jambor  <mjambor@suse.cz>
1313
1314         PR tree-optimization/41089
1315         * tree-sra.c (find_var_candidates): Do not consider va_lists in
1316         early SRA.
1317
1318 2009-09-09  Richard Henderson  <rth@redhat.com>
1319
1320         * gimple.h (CASE_GIMPLE_OMP): New.
1321         (is_gimple_omp): Use it.
1322         * tree-cfg.c (is_ctrl_altering_stmt): Likewise.
1323         (verify_gimple_debug): Likewise.
1324
1325 2009-09-09  Richard Guenther  <rguenther@suse.de>
1326
1327         PR tree-optimization/41101
1328         * tree-ssa-pre.c (maximal_set): Remove.
1329         (compute_antic_aux): Treat the maximal set as implicitly all ones.
1330         Defer all blocks we didn't visit at least one successor.
1331         (add_to_exp_gen): Do not add to the maximal set.
1332         (make_values_for_phi): Likewise.
1333         (compute_avail): Likewise.
1334         (init_pre): Do not allocate the maximal set.
1335         (execute_pre): Do not dump it.
1336
1337 2009-09-09  Martin Jambor  <mjambor@suse.cz>
1338
1339         * tree-cfg.c (verify_gimple_phi): Check that gimple_phi_result is
1340         an SSA_NAME rather than a is_gimple_variable.
1341
1342 2009-09-09  Richard Guenther  <rguenther@suse.de>
1343
1344         PR middle-end/41317
1345         * tree-ssa-ccp.c (maybe_fold_offset_to_component_ref): Remove
1346         code dealing with plain pointer bases.
1347         (maybe_fold_offset_to_reference): Likewise.
1348         (maybe_fold_stmt_addition): Adjust.
1349
1350 2009-09-09  Richard Guenther  <rguenther@suse.de>
1351
1352         * tree.c (free_lang_data_in_type): Do not free the type variant
1353         chains.
1354         (free_lang_data): Merge char_type_node with its properly signed
1355         variant.
1356         (pass_ipa_free): Collect after freeing language specific data.
1357
1358 2009-09-09  Michael Matz  <matz@suse.de>
1359
1360         PR middle-end/41268
1361         * cfgexpand.c (expand_gimple_stmt_1): Use an int for storing
1362         SUBREG_PROMOTED_UNSIGNED_P, instead of a bool.
1363         * rtl.h (struct rtx, SUBREG_PROMOTED_UNSIGNED_P): Update comments
1364         to reflect reality.
1365
1366 2009-09-08  DJ Delorie  <dj@redhat.com>
1367
1368         * config/mep/mep.c (conversions[]): Add "ml" pattern.
1369
1370 2009-09-04  Jason Merrill  <jason@redhat.com>
1371
1372         * tree.c (tree_find_value): Remove.
1373         * tree.h: Remove prototype.
1374         * varasm.c (assemble_external): Use value_member instead.
1375
1376 2009-09-08  Alexandre Oliva  <aoliva@redhat.com>
1377
1378         * toplev.c (process_options): Choose default debugging type when
1379         gtoggle enables debug info and type is unset.
1380
1381 2009-09-08  Alexandre Oliva  <aoliva@redhat.com>
1382
1383         PR debug/41276
1384         PR debug/41307
1385         * cselib.c (cselib_expand_value_rtx_1): Don't return copy of
1386         invalid subreg.
1387
1388 2009-09-08  Alexandre Oliva  <aoliva@redhat.com>
1389
1390         * configure: Rebuilt with modified libtool.m4.
1391
1392 2009-09-08  Alexandre Oliva  <aoliva@redhat.com>
1393
1394         PR debug/41229
1395         PR debug/41291
1396         PR debug/41300
1397         * tree-ssa.c (execute_update_addresses_taken): Update debug insns.
1398
1399 2009-09-08  Alexandre Oliva  <aoliva@redhat.com>
1400
1401         * tree-ssa-loop-ivopts.c (get_phi_with_result): Remove.
1402         (remove_statement): Likewise.
1403         (rewrite_use_nonlinear_expr): Adjust.
1404         (remove_unused_ivs): Collect SSA NAMEs to remove and call...
1405         * tree-ssa.c (release_defs_bitset): ... this.  New.
1406         * tree-flow.h (release_defs_bitset): Declare.
1407
1408 2009-09-08  Alexandre Oliva  <aoliva@redhat.com>
1409
1410         PR debug/41232
1411         * tree-ssa-phiopt.c (minmax_replacement): Skip debug stmts
1412         in the middle block.
1413
1414 2009-09-08  Kai Tietz  <kai.tietz@onevision.com>
1415
1416         * tree-ssa-reassoc.c (find_operand_rank): Cast pointer
1417         via intptr_t to long type.
1418         (insert_operand_rank): Cast long type via intptr_t to
1419         pointer type.
1420         * genattrtab.c (RTL_HASH): Use intptr_t to cast from
1421         pointer to scalar.
1422         * c-pretty-print.c (pp_c_tree_decl_identifier): Cast
1423         from pointer to unsigned via uintptr_t.
1424
1425         * configure.ac (GCC_STDINT_TYPES): Initialize intptr_t,
1426         uintptr_t, HAVE_INTTYPES_H, HAVE_STDINT_H, HAVE_UINTPTR_T,
1427         and HAVE_INTPTR_T.
1428         * configure: Regenerated.
1429         * config.in: Regenerated
1430         * system.h (stdint.h): Add include.
1431         (inttypes.h): Likewise.
1432         * Makefile.in (aclocal): Add config/stdint.m4.
1433         * aclocal.m4: Regenerated.
1434
1435 2009-09-08  Bernd Schmidt  <bernd.schmidt@analog.com>
1436
1437         * config/bfin/bfin.c (np_check_regno, np_after_branch): New static
1438         variables.
1439         (note_np_check_stores): New function.
1440         (harmless_null_pointer_p): New function.
1441         (trapping_loads_p): New args NP_REG and AFTER_NP_BRANCH.  Callers
1442         changed.  Take into account whether we're in the shadow of a condjump
1443         that tested NP_REG for NULL.
1444         Lose all code that tested for SEQUENCEs.
1445         (workaround_speculation): Avoid inserting NOPs for loads that are
1446         either always executed or a NULL pointer.
1447
1448 2009-09-08  Jan Hubicka  <jh@suse.cz>
1449
1450         * doc/invoke.texi (early-inlining-insns): Reduce from 12 to 8.
1451         * params.def (early-inlining-insns): Likewise.
1452
1453 2009-09-08  Jakub Jelinek  <jakub@redhat.com>
1454
1455         PR rtl-optimization/41239
1456         * sched-int.h (struct deps): Add last_function_call_may_noreturn field.
1457         * sched-rgn.c (deps_join): Join also last_function_call_may_noreturn
1458         lists.
1459         * sched-deps.c (sched_analyze_insn): Prevent moving trapping insns
1460         across calls, as the calls might not always return normally.
1461         (call_may_noreturn_p): New function.
1462         (deps_analyze_insn): Update last_function_call_may_noreturn list.
1463         (init_deps): Initialize it.
1464         (remove_from_deps): Also remove calls from
1465         last_function_call_may_noreturn list.
1466
1467 2009-09-07  Richard Henderson  <rth@redhat.com>
1468
1469         * tree-ssa-sccvn.c (vn_reference_lookup_3): Don't assume there are
1470         more VR->OPERANDS than LHS operands.  Free LHS before returning.
1471
1472 2009-09-07  Bernd Schmidt  <bernd.schmidt@analog.com>
1473
1474         * config/bfin/bfin.md (UNSPEC_VOLATILE_STALL): New constant.
1475         (attr "addrtype"): New member "spreg".
1476         Use it if mem_spfp_address_operand is true for the address.
1477         (attr "type"): New entry "stall".
1478         (cpu_unit "load"): New.
1479         (insn_reservations "load32", "loadp", "loadi"): Add reservation of
1480         "load".
1481         (insn_reservation "loadsp"): New.
1482         (insn_reservation "load_stall1"): New.
1483         (insn_reservation "load_stall3"): New.
1484         (stall): New insn.
1485         * config/bfin/predicates.md (const1_operand, const3_operand): New.
1486         (mem_p_address_operand): Exclude stack and frame pointer based
1487         addresses.
1488         (mem_spfp_address_operand): New; match them here.
1489         * config/bfin/bfin.c (add_sched_insns_for_speculation): New function.
1490         (bfin_reorg): Call it if scheduling insns.
1491         (bfin_gen_bundles): Remove dummy insns created by
1492         add_sched_insns_for_speculation.
1493
1494         From Jie Zhang <jie.zhang@analog.com>:
1495         * config/bfin/bfin-protos.h (enum bfin_cpu_type, bfin_cpu_type,
1496         bfin_si_revision, bfin_workarounds): Move these ...
1497         * config/bfin/bfin.h: ... here.
1498
1499         From Mike Frysinger  <michael.frysinger@analog.com>
1500         * config/bfin/bfin-protos.h (bfin_cpu_type): Add BFIN_CPU_BF542M,
1501         BFIN_CPU_BF544M, BFIN_CPU_BF547M, BFIN_CPU_BF548M, and BFIN_CPU_BF549M.
1502         * config/bfin/bfin.c (bfin_cpus[]): Add 0.3 for bf542m, bf544m,
1503         bf547m, bf548m, and bf549m.
1504         * config/bfin/bfin.h (TARGET_CPU_CPP_BUILTINS): Define __ADSPBF542M__
1505         for BFIN_CPU_BF542M, __ADSPBF544M__ for BFIN_CPU_BF544M,
1506         __ADSPBF547M__ for BFIN_CPU_BF547M, __ADSPBF548M__ for
1507         BFIN_CPU_BF548M, and __ADSPBF549M__ for BFIN_CPU_BF549M.
1508         * config/bfin/t-bfin-elf (MULTILIB_MATCHES): Select bf532-none for
1509         bf542m-none, bf544m-none, bf547m-none, bf548m-none, and bf549m-none.
1510         * config/bfin/t-bfin-linux (MULTILIB_MATCHES): Likewise.
1511         * config/bfin/t-bfin-uclinux (MULTILIB_MATCHES): Likewise.
1512         * doc/invoke.texi (Blackfin Options): Document that -mcpu now accepts
1513         bf542m, bf544m, bf547m, bf548m, and bf549m.
1514
1515         From Jie Zhang <jie.zhang@analog.com>:
1516         * config/bfin/predicates.md (p_register_operand): New predicate.
1517         (dp_register_operand): New predicate.
1518         * config/bfin/bfin-protos.h (WA_05000074): Define.
1519         (ENABLE_WA_05000074): Define.
1520         * config/bfin/bfin.c (bfin_cpus[]): Add WA_05000074 for all cpus.
1521         (bfin_gen_bundles): Put dsp32shiftimm instruction in slot[0].
1522         * config/bfin/bfin.md (define_attr type): Add dsp32shiftimm.
1523         (define_attr addrtype): Allow load/store register to be P register.
1524         (define_attr storereg): New.
1525         (define_cpu_unit anomaly_05000074): New.
1526         (define_insn_reservation dsp32shiftimm): New.
1527         (define_insn_reservation dsp32shiftimm_anomaly_05000074): New.
1528         (define_insn_reservation loadp): Cannot use slot2.
1529         (define_insn_reservation loadsp): Cannot use slot2.
1530         (define_insn_reservation storep): Cannot use slot2. Does not
1531         apply when working around 05000074.
1532         (define_insn_reservation storep_anomaly_05000074): New.
1533         (define_insn_reservation storei): Does not apply when working
1534         around 05000074.
1535         (define_insn_reservation storei_anomaly_05000074): New.
1536         (define_attr length): Add dsp32shiftimm case.
1537         (define_insn movsi_insn32, movsi_insv, ashlsi3_insn, ashrsi3,
1538         ror_one, rol_one, lshrsi3, lshrpdi3, ashrpdi3, movhiv2hi_low,
1539         movhiv2hi_high, composev2hi, packv2hi, movv2hi_hi,
1540         ssashiftv2hi3, ssashifthi3, ssashiftsi3, lshiftv2hi3, lshifthi3):
1541         Set type as dsp32shiftimm for dsp32shiftimm alternatives.
1542
1543 2009-09-07  Martin Jambor  <mjambor@suse.cz>
1544
1545         PR middle-end/41282
1546         * tree-sra.c (create_artificial_child_access): Return NULL if
1547         build_ref_for_offset fails.
1548         (propagate_subacesses_accross_link): Allow build_ref_for_offset
1549         and create_artificial_child_access to fail.
1550
1551 2009-09-06  Dmitry Gorbachev  <d.g.gorbachev@gmail.com>
1552
1553         PR c++/41214
1554         * unwind-dw2.c (uw_init_context_1): Mark noinline.
1555         * config/ia64/unwind-ia64.c (uw_init_context_1): Likewise.
1556         * config/xtensa/unwind-dw2-xtensa.c (uw_init_context_1): Likewise.
1557
1558 2009-09-07  Bernd Schmidt  <bernd.schmidt@analog.com>
1559
1560         * config/bfin/bfin.c (bfin_optimize_loop): When creating a new basic
1561         block, ensure it has an exit edge.  Emit a barrier after a jump.
1562
1563 2009-09-07  Nick Clifton  <nickc@redhat.com>
1564
1565         * gcc.c (this_is_linker_script): New variable.  Like
1566         this_is_library_file but for the %T constructor.
1567         (end_going_arg): If this_is_linker_script is set then locate the
1568         script and insert a --script switch before it
1569         (do_spec_2): Initialise this_is_linker_script.
1570         (do_spec_1): Likewise.  Handle %T construct.
1571         (eval_spec_function): Preserve this_is_linker_script.
1572         * doc/invoke.texi: Document %T construct in spec files.
1573         * config/m32c/m32c.h (LIB_SPEC): Use it.
1574
1575 2009-09-07  Andreas Krebbel  <Andreas.Krebbel@de.ibm.com>
1576
1577         * rtl.h (PREFETCH_SCHEDULE_BARRIER_P): New macro.
1578         * sched-deps.c (sched_analyze_2): Make prefetches a hard barrier
1579         when volatile flag is set.
1580         * doc/rtl.texi (PREFETCH_SCHEDULE_BARRIER_P): Add documentation pieces.
1581
1582 2009-09-06  Eric Botcazou  <ebotcazou@adacore.com>
1583
1584         PR bootstrap/41241
1585         * combine-stack-adj.c (try_apply_stack_adjustment): Handle stores.
1586         (combine_stack_adjustments_for_block): Allow insns between stack
1587         adjustments and stores with corresponding pre-(dec|inc)rement or
1588         pre-modify operation.
1589
1590 2009-09-06  Jakub Jelinek  <jakub@redhat.com>
1591
1592         PR bootstrap/41241
1593         * combine-stack-adj.c (struct csa_memlist): Rename to...
1594         (struct csa_reflist): ... this.  Rename mem field to ref.
1595         (free_csa_memlist): Rename to...
1596         (free_csa_reflist): ... this.
1597         (record_one_stack_memref): Rename to...
1598         (record_one_stack_ref): ... this.  Handle also REG_P.
1599         (try_apply_stack_adjustment): Handle also REG_P.
1600         (struct record_stack_memrefs_data): Rename to...
1601         (struct record_stack_refs_data): ... this.  Rename memlist field to
1602         reflist.
1603         (record_stack_memrefs): Rename to...
1604         (record_stack_refs): ... this.  For DEBUG_INSNs keep traversing
1605         subexpressions instead of failing when a MEM contains SP references.
1606         For SP itself in DEBUG_INSNs queue it also onto reflist chain.
1607         (combine_stack_adjustments_for_block): Adjust for mem to ref renaming.
1608
1609 2009-09-06  Richard Guenther  <rguenther@suse.de>
1610
1611         PR middle-end/41144
1612         * tree.c (build_array_type): Do not record types marked
1613         with structural equality in the canonical type hashtable.
1614
1615 2009-09-06  Richard Guenther  <rguenther@suse.de>
1616
1617         PR middle-end/41261
1618         * tree-ssa-alias.c (refs_may_alias_p_1): Bail out for function decls.
1619
1620 2009-09-05  Richard Guenther  <rguenther@suse.de>
1621
1622         PR middle-end/41181
1623         * tree-ssa-ccp.c (maybe_fold_stmt_addition): Use the correct type.
1624
1625 2009-09-05  Richard Guenther  <rguenther@suse.de>
1626
1627         PR debug/41273
1628         * tree-ssa-operands.c (get_tmr_operands): Pass through opf_no_vops.
1629
1630 2009-09-05  Richard Guenther  <rguenther@suse.de>
1631
1632         PR middle-end/41271
1633         * tree-ssa.c (useless_type_conversion_p): Drop qualifiers
1634         before comparing function argument types.
1635
1636 2009-09-05  Francois-Xavier Coudert  <fxcoudert@gcc.gnu.org>
1637
1638         PR target/41024
1639         * config/i386/mingw-w64.h (ASM_SPEC): Pass -v instead of -V to
1640         the assembler.
1641
1642 2009-09-04  Uros Bizjak  <ubizjak@gmail.com>
1643
1644         Revert:
1645         2009-08-18  Uros Bizjak  <ubizjak@gmail.com>
1646
1647         * config/alpha/alpha.c (alpha_output_mi_thunk_osf): Allocate insn
1648         locators before emit_insn is called.
1649
1650 2009-09-04  Vladimir Makarov  <vmakarov@redhat.com>
1651
1652         PR bootstrap/41241
1653         * ira.c (update_equiv_reg): Revert my previous patch for the PR.
1654         * reginfo.c (resize_reg_info): Call allocate_reg_info if necessary.
1655         (reginfo_init): Don't call allocate_reg_info.
1656
1657 2009-09-04  Uros Bizjak  <ubizjak@gmail.com>
1658
1659         PR target/41262
1660         * config/alpha/alpha.c (alpha_does_function_need_gp): Use
1661         NONDEBUG_INSN_P instead of INSN_P.
1662
1663 2009-09-04  Alexandre Oliva  <aoliva@redhat.com>
1664
1665         PR debug/41225
1666         * tree-vect-stmts.c (vect_stmt_relevant_p): Skip debug uses.
1667
1668 2009-09-04  Alexandre Oliva  <aoliva@redhat.com>
1669
1670         PR target/41252
1671         * config/arm/vfp.md (*cmpdf_split_vfp): Fix src mode in the second
1672         pattern of the split.
1673
1674 2009-09-04  Alexandre Oliva  <aoliva@redhat.com>
1675
1676         * toplev.c (process_options): Move setter of flag_var_tracking
1677         before other tests that depend on it.  Move down setter of
1678         flag_rename_registers.  Don't enable var-tracking-assignments
1679         by default if selective scheduling is enabled.  Warn if both
1680         are enabled.
1681
1682 2009-09-04  Alexandre Oliva  <aoliva@redhat.com>
1683
1684         * var-tracking.c (dv_is_decl_p): Adjust NULL behavior to match
1685         comment.  Use switch statement to catch overlaps between rtx
1686         and tree codes.  Accept FUNCTION_DECLs in addition to those in...
1687         (IS_DECL_CODE): ... here. Remove.
1688         (check_value_is_not_decl): Remove.
1689         (dv_from_decl, dv_from_value): Check after conversion.
1690
1691 2009-09-04  Richard Guenther  <rguenther@suse.de>
1692
1693         PR middle-end/41257
1694         * (cgraph_finalize_compilation_unit): Move finalizing aliases
1695         after emitting tunks.  Move emitting thunks and ctors from ...
1696         (cgraph_optimize): ... here.  Remove redundant
1697         cgraph_analyze_functions.
1698         * varasm.c (find_decl_and_mark_needed): Remove no longer
1699         necessary check.
1700         (finish_aliases_1): Adjust check for thunk aliases.
1701
1702 2009-09-04  Daniel Gutson  <dgutson@codesourcery.com>
1703
1704         * config/arm/arm.md (ctzsi2): Added braces
1705         to avoid warning that broke booststrap.
1706
1707 2009-09-04  Martin Jambor  <mjambor@suse.cz>
1708
1709         PR tree-optimization/41112
1710         * tree-sra.c (build_ref_for_offset_1): Signal that we cannot
1711         handle variable-bounded arrays.
1712         (expr_with_var_bounded_array_refs_p): New function.
1713         (analyze_access_subtree): Call expr_with_var_bounded_array_refs_p.
1714
1715 2009-09-04  Wolfgang Gellerich  <gellerich@de.ibm.com>
1716
1717         * config/s390/2097.md: Removed two incorrect bypasses.
1718         (z10_fsimpdf): Fixed latency.
1719         (z10_fhex): New insn_reservation.
1720         (z10_floaddf): Fixed latency.
1721         (z10_floadsf): Fixed latency.
1722         (z10_ftrunctf): Fixed latency.
1723         (z10_ftruncdf): Fixed latency.
1724         * config/s390/s390.c (z10_cost): Fixed values.
1725         (s390_adjust_priority): Added z10 path.
1726         * config/s390/s390.md (type): Added fhex.
1727         (*mov<mode>_64dfp): Updated type attribute.
1728         (*mov<mode>_64): Updated type attribute.
1729         (*mov<mode>_31): Updated type attribute.
1730         (*mov<mode>"): Likewise.
1731         * config/s390/2084.md (x_fsimpdf): Updated condition.
1732
1733 2009-09-04  Andreas Krebbel  <krebbel1@de.ibm.com>
1734
1735         * config/s390/s390.md ("*fmadd<mode>", "*fmsub<mode>"): Enable mem
1736         RTXs in the predicate for operand 1.
1737
1738 2009-09-03  Daniel Gutson  <dgutson@codesourcery.com>
1739
1740         * config/arm/arm.md (UNSPEC_RBIT): New constant.
1741         (rbitsi2): New insn.
1742         (ctzsi2): New expand.
1743         * config/arm/arm.h (CTZ_DEFINED_VALUE_AT_ZERO): New macro.
1744
1745 2009-09-03  Martin Jambor  <mjambor@suse.cz>
1746
1747         * tree-sra.c (duplicate_expr_for_different_base): Removed.
1748         (create_artificial_child_access): Use build_ref_for_offset instead
1749         of duplicate_expr_for_different_base.
1750         (propagate_subacesses_accross_link): Likewise.
1751
1752 2009-09-03  Richard Sandiford  <rdsandiford@googlemail.com>
1753
1754         * config/mips/mips.c (USEFUL_INSN_P): Use NONDEBUG_INSN_P instead
1755         of INSN_P.
1756         (mips16e_collect_argument_saves): Skip debug instructions.
1757         (mips_74k_agen_init): Use CALL_P || JUMP_P instead of !NONJUMP_INSN_P.
1758         (mips16_lay_out_constants): Use USEFUL_INSN_P instead of INSN_P.
1759         (r10k_insert_cache_barriers): Likewise.
1760         (mips_reorg_process_insns): Likewise.
1761
1762 2009-09-03  Vladimir Makarov  <vmakarov@redhat.com>
1763
1764         PR bootstrap/41241
1765         * ira.c (update_equiv_reg): Remove check on class likely spill.
1766
1767 2009-09-03  Jakub Jelinek  <jakub@redhat.com>
1768
1769         PR debug/41236
1770         * dwarf2out.c (loc_descriptor): Don't use SUBREG_REG macro on
1771         SIGN_EXTEND or ZERO_EXTEND.  Don't assume there is a REG inside of
1772         it or SUBREG.
1773
1774         PR debug/41238
1775         * function.c (assign_parm_find_stack_rtl): Don't set mem attributes on
1776         the stack slot if it is passed by invisible reference.
1777         * var-tracking.c (vt_add_function_parameters): Handle arguments passed
1778         by invisible reference.
1779
1780 2009-09-03  Bernd Schmidt  <bernd.schmidt@analog.com>
1781
1782         * config/bfin/linux.h (TARGET_SUPPORTS_SYNC_CALLS): Define to 1.
1783         * config/bfin/uclinux.h (TARGET_SUPPORTS_SYNC_CALLS): Define to 1.
1784         * config/bfin/bfin.h (TARGET_SUPPORTS_SYNC_CALLS): Provide default of
1785         0.
1786         * config/bfin/sync.md: New file.
1787         * config/bfin/bfin.md: Include it.
1788         (UNSPEC_ATOMIC): New.
1789         (UNSPEC_ONES): Provide a unique number.
1790
1791         From Jie Zhang <jie.zhang@analog.com>:
1792         * config/bfin/bfin.c (ret_regs): New.
1793         (must_save_fp_p): Don't return true because of frame_pointer_needed.
1794         (must_save_rets_p): New.
1795         (n_regs_saved_by_prologue): Use must_save_rets_p instead of
1796         current_function_is_leaf.
1797         (do_link): Likewise.
1798         (do_unlink): Likewise.
1799         (expand_interrupt_handler_prologue): Use ret_regs array.
1800         (expand_interrupt_handler_epilogue): Use ret_regs array and
1801         pass return register to gen_return_internal.
1802         (bfin_expand_epilogue): Pass return register to
1803         gen_return_internal.
1804         (bfin_expand_call): Explicitly clobber RETS.
1805         * config/bfin/bfin.h (FUNCTION_RETURN_REGISTERS): Define.
1806         * config/bfin/bfin.md (call_symbol_fdpic, call_value_symbol_fdpic,
1807         call_insn_fdpic, call_value_insn_fdpic, call_symbol,
1808         call_value_symbol, call_insn, call_value_insn): Explicitly clobber
1809         RETS.
1810         (return_internal): Take a reg rtx rather than the register number.
1811
1812 2009-09-03  H.J. Lu  <hongjiu.lu@intel.com>
1813
1814         * tree-parloops.c (parallelize_loops): Cast to HOST_WIDE_INT
1815         when comparing against estimated_loop_iterations_int return.
1816
1817 2009-09-03  Richard Guenther  <rguenther@suse.de>
1818
1819         * dwarf2out.c (dwarf2out_do_cfi_asm): Remove check of
1820         eh_personality_libfunc.
1821
1822 2009-09-03  Razya Ladelsky  <razya@il.ibm.com>
1823
1824         * tree-parloops.c (separate_decls_in_region): Add space.
1825
1826 2009-09-03  Razya Ladelsky  <razya@il.ibm.com>
1827
1828         * tree-parloops.c (separate_decls_in_region): Change the condition
1829         checking if there are reductions in the loop.
1830
1831 2009-09-03  Razya Ladelsky  <razya@il.ibm.com>
1832
1833         PR tree-optimization/38275
1834         * tree-parloops.c (parallelize_loops): Replace profitability condition
1835         for expected number of iterations.
1836
1837 2009-09-03  Alexandre Oliva  <aoliva@redhat.com>
1838
1839         * doc/invoke.texi (BUILD_CONFIG): Document --with-build-config.
1840         (bootstrap-debug): Explain conditions in which it becomes default.
1841         (bootstrap-debug-big): Rather than duplicate bootstrap-debug,
1842         make it add to it.
1843
1844 2009-09-03  Namhyung Kim  <namhyung@gmail.com>
1845
1846         * doc/invoke.texi (Optimize Options): Move
1847         -finline-small-functions to the -O2 list.
1848
1849 2009-09-03  Alexandre Oliva  <aoliva@redhat.com>
1850
1851         * toplev.c (process_options): Enable var-tracking-assignments
1852         by default if var-tracking is enabled.
1853
1854 2009-09-02  David Daney  <ddaney@caviumnetworks.com>
1855
1856         * cfgbuild.c (find_bb_boundaries): Split blocks containing a
1857         barrier.
1858         * emit-rtl.c (prev_nonnote_insn_bb): New function.
1859         * rtl.h (prev_nonnote_insn_bb): Declare it.
1860
1861 2009-09-03  Diego Novillo  <dnovillo@google.com>
1862
1863         * cgraph.c (cgraph_node_for_decl): New.
1864         * cgraph.h (cgraph_node_for_decl): Declare.
1865         * tree.c (host_integerp): Return 0 if T is NULL.
1866
1867 2009-09-03  Diego Novillo  <dnovillo@google.com>
1868
1869         * tree.h (struct alias_pair): Move from varasm.c.
1870         (alias_pairs): Likewise.
1871         (TYPE_MAXVAL): Define.
1872         (TYPE_MINVAL): Define.
1873         (iterative_hash_host_wide_int): Declare.
1874         (remove_unreachable_alias_pairs): Declare.
1875         * tree-pass.h (pass_ipa_free_lang_data): Declare.
1876         * diagnostic.c (default_diagnostic_starter): Make extern.
1877         (default_diagnostic_finalizer): Make extern.
1878         * diagnostic.h (default_diagnostic_starter): Declare.
1879         (default_diagnostic_finalizer): Declare.
1880         (default_tree_printer): Declare.
1881         * toplev.c (default_tree_printer): Make extern.
1882
1883 2009-09-03  Richard Guenther  <rguenther@suse.de>
1884             Diego Novillo  <dnovillo@google.com>
1885
1886         * cgraph.c (cgraph_add_new_function): Remove gimplification.
1887         * cgraphunit.c (cgraph_expand_function): Do not emit
1888         associated thunks from here.
1889         (cgraph_emit_thunks): New.
1890         (cgraph_optimize): Call it.
1891         Return if any IPA pass finds an error.
1892         * varasm.c (finish_aliases_1): Ignore errorneous aliases used
1893         by thunks.
1894
1895 2009-09-03  Simon Baldwin  <simonb@google.com>
1896             Rafael Espindola  <espindola@google.com>
1897             Richard Guenther  <rguenther@suse.de>
1898             Doug Kwan  <dougkwan@google.com>
1899             Diego Novillo  <dnovillo@google.com>
1900
1901         * tree.c: Include tree-pass.h, langhooks-def.h,
1902         diagnostic.h, cgraph.h, timevar.h, except.h and debug.h.
1903         (free_lang_data_in_type): New.
1904         (need_assembler_name_p): New.
1905         (free_lang_data_in_block): New.
1906         (free_lang_data_in_decl): New.
1907         (struct free_lang_data_d): New.
1908         (add_tree_to_fld_list): New.
1909         (find_decls_types_r): New.
1910         (get_eh_types_for_runtime): New.
1911         (find_decls_types_in_eh_region): New.
1912         (find_decls_types_in_node): New.
1913         (find_decls_types_in_var): New.
1914         (free_lang_data_in_cgraph): New.
1915         (free_lang_data): New.
1916         (gate_free_lang_data): New.
1917         (pass_ipa_free_lang_data): New.
1918
1919 2009-09-03  Diego Novillo  <dnovillo@google.com>
1920
1921         * timevar.def (TV_IPA_FREE_LANG_DATA): Define.
1922         * langhooks.h (struct lang_hooks): Add field free_lang_data.
1923         (lang_hooks): Remove const qualifier.
1924         * ipa.c (cgraph_remove_unreachable_nodes): Call
1925         remove_unreachable_alias_pairs.
1926         * except.c (add_type_for_runtime): Check if TYPE has
1927         already been converted.
1928         (lookup_type_for_runtime): Likewise.
1929         (check_handled): Handle converted types.
1930         * varasm.c (remove_unreachable_alias_pairs): New.
1931         * gimple.c: Include demangle.h.
1932         (gimple_decl_printable_name): New.
1933         (gimple_fold_obj_type_ref): New.
1934         * gimple.h (gimple_decl_printable_name): Declare.
1935         (gimple_fold_obj_type_ref): Declare.
1936         * passes.c (init_optimization_passes): Add pass
1937         pass_ipa_free_lang_data.
1938         * langhooks-def.h (LANG_HOOKS_FREE_LANG_DATA): Define.
1939         (LANG_HOOKS_INITIALIZER): Add LANG_HOOKS_FREE_LANG_DATA.
1940
1941 2009-09-03  Diego Novillo  <dnovillo@google.com>
1942
1943         * c-lang.c (lang_hooks): Remove const qualifier.
1944
1945 2009-09-02  Loren James Rittle  <ljrittle@acm.org>
1946
1947         * doc/install.texi (*-*-freebsd*): Update target information.
1948
1949 2009-09-02  Anatoly Sokolov  <aesok@post.ru>
1950
1951         * hard-reg-set.h (call_fixed_regs): Remove.
1952         * reginfo.c (call_fixed_regs): Remove.
1953         (init_reg_sets_1): Remove initialization of call_fixed_regs.
1954         (globalize_reg): Don't use call_fixed_regs.
1955         * caller-save.c (init_caller_save): Use call_fixed_reg_set instead of
1956         call_fixed_regs.
1957
1958 2009-09-01  Michael Matz  <matz@suse.de>
1959
1960         * expr.h (emit_storent_insn, expand_expr_real_1,
1961         expand_expr_real_2): Declare.
1962         * expr.c (emit_storent_insn, expand_expr_real_1,
1963         expand_expr_real_2): Export.
1964         (store_expr): Setting and evaluating dont_return_target is useless.
1965         (expand_expr_real_1, <case GOTO_EXPR, RETURN_EXPR, SWITCH_EXPR,
1966         LABEL_EXPR and ASM_EXPR>): Move to gcc_unreachable.
1967         * except.c (expand_resx_expr): Rename to ...
1968         (expand_resx_stmt): ... this.  Rewrite to take gimple statement.
1969         * except.h (expand_resx_stmt): Declare.
1970         * stmt.c: Add include gimple.h
1971         (expand_asm_expr): Rename to ...
1972         (expand_asm_stmt): ... this. Rewrite to take gimple statement.
1973         (expand_case): Rewrite to take gimple statement.
1974         * tree.h (expand_asm_stmt): Declare.
1975         (expand_case): Change prototype.
1976         * Makefile.in (stmt.o): Depend on gimple.h.
1977         * builtins.c (expand_builtin_synchronize): Build gimple asm
1978         statement, not an ASM_EXPR.
1979         * cfgexpand.c (gimple_cond_pred_to_tree, set_expr_location_r,
1980         gimple_to_tree, release_stmt_tree): Remove.
1981         (expand_gimple_cond): Don't call gimple_cond_pred_to_tree or
1982         ggc_free, but hold comparison code and operands separately.
1983         Call jumpif_1 and jumpifnot_1 instead of jumpif and jumpifnot.
1984         (expand_call_stmt, expand_gimple_stmt_1,
1985         expand_gimple_stmt): New helpers.
1986         (expand_gimple_tailcall): Don't call gimple_to_tree, expand_expr_stmt,
1987         release_stmt_tree.  Call expand_gimple_stmt instead.
1988         (expand_gimple_basic_block): Ditto.
1989
1990         * calls.c (emit_call_1): Don't look at EH regions here, make
1991         fntree parameter useless.
1992         (expand_call): New local rettype for TREE_TYPE(exp), use it
1993         throughout.  Remove local p, use addr instead.
1994         Don't look at EH regions here.
1995
1996 2009-09-02  Vladimir Makarov  <vmakarov@redhat.com>
1997
1998         * doc/invoke.texi (-fsched-pressure): Document it.
1999         (-fsched-reg-pressure-heuristic): Remove it.
2000
2001         * reload.c (ira.h): Include.
2002         (find_reloads): Add choosing reload on number of small spilled
2003         classes.
2004
2005         * haifa-sched.c (ira.h): Include.
2006         (sched_pressure_p, sched_regno_cover_class, curr_reg_pressure,
2007         saved_reg_pressure, curr_reg_live, saved_reg_live,
2008         region_ref_regs): New variables.
2009         (sched_init_region_reg_pressure_info, mark_regno_birth_or_death,
2010         initiate_reg_pressure_info, setup_ref_regs,
2011         initiate_bb_reg_pressure_info, save_reg_pressure,
2012         restore_reg_pressure, dying_use_p, print_curr_reg_pressure): New
2013         functions.
2014         (setup_insn_reg_pressure_info): New function.
2015         (rank_for_schedule): Add pressure checking and insn issue time.
2016         Remove comparison of insn reg weights.
2017         (ready_sort): Set insn reg pressure info.
2018         (update_register_pressure, setup_insn_max_reg_pressure,
2019         update_reg_and_insn_max_reg_pressure,
2020         sched_setup_bb_reg_pressure_info): New functions.
2021         (schedule_insn): Add code for printing and updating reg pressure info.
2022         (find_set_reg_weight, find_insn_reg_weight): Remove.
2023         (ok_for_early_queue_removal): Do nothing if pressure_only_p.
2024         (debug_ready_list): Print reg pressure info.
2025         (schedule_block): Ditto.  Check insn issue time.
2026         (sched_init): Set up sched_pressure_p.  Allocate and set up some
2027         reg pressure related info.
2028         (sched_finish): Free some reg pressure related info.
2029         (fix_tick_ready): Make insn always ready if pressure_p.
2030         (init_h_i_d): Don't call find_insn_reg_weight.
2031         (haifa_finish_h_i_d): Free insn reg pressure info.
2032
2033         * ira-int.h (ira_hard_regno_cover_class, ira_reg_class_nregs,
2034         ira_memory_move_cost, ira_class_hard_regs,
2035         ira_class_hard_regs_num, ira_no_alloc_regs,
2036         ira_available_class_regs, ira_reg_class_cover_size,
2037         ira_reg_class_cover, ira_class_translate): Move to ira.h.
2038
2039         * ira-lives.c (single_reg_class): Check mode to find how many
2040         registers are necessary for operand.
2041         (ira_implicitly_set_insn_hard_regs): New.
2042
2043         * common.opt (fsched-pressure): New options.
2044         (fsched-reg-pressure-heuristic): Remove.
2045
2046         * ira.c (setup_eliminable_regset): Rename to
2047         ira_setup_eliminable_regset.  Make it external.
2048         (expand_reg_info): Pass cover class to setup_reg_classes.
2049         (ira): Call resize_reg_info instead of allocate_reg_info.
2050
2051         * sched-deps.c: Include ira.h.
2052         (implicit_reg_pending_clobbers, implicit_reg_pending_uses): New.
2053         (create_insn_reg_use, create_insn_reg_set, setup_insn_reg_uses,
2054         reg_pressure_info, insn_use_p, mark_insn_pseudo_birth,
2055         mark_insn_hard_regno_birth, mark_insn_reg_birth,
2056         mark_pseudo_death, mark_hard_regno_death, mark_reg_death,
2057         mark_insn_reg_store, mark_insn_reg_clobber,
2058         setup_insn_reg_pressure_info): New.
2059         (sched_analyze_1): Update implicit_reg_pending_uses.
2060         (sched_analyze_insn): Find implicit sets, uses, clobbers of regs.
2061         Use them to create dependencies.  Set insn reg uses and pressure
2062         info.  Process reg_pending_uses in one place.
2063         (free_deps): Free implicit sets.
2064         (remove_from_deps): Remove implicit sets if necessary.  Check
2065         implicit sets when clearing reg_last_in_use.
2066         (init_deps_global): Clear implicit_reg_pending_clobbers and
2067         implicit_reg_pending_uses.
2068
2069         * ira.h (ira_hard_regno_cover_class, ira_reg_class_nregs,
2070         ira_memory_move_cost, ira_class_hard_regs,
2071         ira_class_hard_regs_num, ira_no_alloc_regs,
2072         ira_available_class_regs, ira_reg_class_cover_size,
2073         ira_reg_class_cover, ira_class_translate): Move from ira-int.h.
2074         (ira_setup_eliminable_regset, ira_set_pseudo_classes,
2075         ira_implicitly_set_insn_hard_regs): New prototypes.
2076
2077         * ira-costs.c (pseudo_classes_defined_p, allocno_p,
2078         cost_elements_num): New variables.
2079         (allocno_costs, total_costs): Rename to costs and
2080         total_allocno_costs.
2081         (COSTS_OF_ALLOCNO): Rename to COSTS.
2082         (allocno_pref): Rename to pref.
2083         (allocno_pref_buffer): Rename to pref_buffer.
2084         (common_classes): Rename to regno_cover_class.
2085         (COST_INDEX): New.
2086         (record_reg_classes): Set allocno attributes only if allocno_p.
2087         (record_address_regs): Ditto.  Use COST_INDEX instead of ALLOCNO_NUM.
2088         (scan_one_insn): Use COST_INDEX and COSTS instead of ALLOCNO_NUM
2089         and COSTS_OF_ALLOCNO.
2090         (print_costs): Rename to print_allocno_costs.
2091         (print_pseudo_costs): New.
2092         (process_bb_node_for_costs): Split into 2 functions with new
2093         function process_bb_for_costs.  Pass BB to process_bb_for_costs.
2094         (find_allocno_class_costs): Rename to find_costs_and_classes.  Add
2095         new parameter dump_file.  Use cost_elements_num instead of
2096         ira_allocnos_num.  Make one iteration if preferred classes were
2097         already calculated for scheduler.  Make 2 versions of code
2098         depending on allocno_p.
2099         (setup_allocno_cover_class_and_costs): Check allocno_p.  Use
2100         regno_cover_class and COSTS instead of common_classes and
2101         COSTS_OF_ALLOCNO.
2102         (init_costs, finish_costs): New.
2103         (ira_costs): Set up allocno_p and cost_elements_num.  Call
2104         init_costs and finish_costs.
2105         (ira_set_pseudo_classes): New.
2106
2107         * rtl.h (allocate_reg_info): Remove.
2108         (resize_reg_info): Change return type.
2109         (reg_cover_class): New.
2110         (setup_reg_classes): Add new parameter.
2111
2112         * sched-int.h (struct deps_reg): New member implicit_sets.
2113         (sched_pressure_p, sched_regno_cover_class): New external definitions.
2114         (INCREASE_BITS): New macro.
2115         (struct reg_pressure_data, struct reg_use_data): New.
2116         (struct _haifa_insn_data): Remove reg_weight.  Add members
2117         reg_pressure, reg_use_list, reg_set_list, and
2118         reg_pressure_excess_cost_change.
2119         (struct deps): New member implicit_sets.
2120         (pressure_p): New variable.
2121         (COVER_CLASS_BITS, INCREASE_BITS): New macros.
2122         (struct reg_pressure_data, struct reg_use_data): New.
2123         (INSN_REG_WEIGHT): Remove.
2124         (INSN_REG_PRESSURE, INSN_MAX_REG_PRESSURE, INSN_REG_USE_LIST,
2125         INSN_REG_SET_LIST, INSN_REG_PRESSURE_EXCESS_COST_CHANGE): New macros.
2126         (sched_init_region_reg_pressure_info,
2127         sched_setup_bb_reg_pressure_info): New prototypes.
2128
2129         * reginfo.c (struct reg_pref): New member coverclass.
2130         (reg_cover_class): New function.
2131         (reginfo_init, pass_reginfo_init): Move after free_reg_info.
2132         (reg_info_size): New variable.
2133         (allocate_reg_info): Make static.  Setup reg_info_size.
2134         (resize_reg_info): Use reg_info_size.  Return flag of resizing.
2135         (setup_reg_classes): Add a new parameter.  Setup cover class too.
2136
2137         * Makefile.in (reload.o, haifa-sched.o, sched-deps.o): Add ira.h to
2138         the dependencies.
2139
2140         * sched-rgn.c (deps_join): Set up implicit_sets.
2141         (schedule_region): Set up region and basic blocks pressure
2142         relative info.
2143
2144         * passes.c (init_optimization_passes): Move
2145         pass_subregs_of_mode_init before pass_sched.
2146
2147 2009-09-02  Martin Jambor  <mjambor@suse.cz>
2148
2149         * tree-sra.c (struct access): New field grp_hint.
2150         (dump_access): Dump grp_hint.
2151         (sort_and_splice_var_accesses): Set grp_hint if a group is read
2152         multiple times.
2153         (analyze_access_subtree): Only scalarize accesses with grp_hint set or
2154         those which have been specifically read and somehow written to.
2155         (propagate_subacesses_accross_link): Set grp_hint of right child and
2156         also possibly of the left child.
2157
2158 2009-09-02  Jakub Jelinek  <jakub@redhat.com>
2159
2160         * tree-object-size.c (addr_object_size): Always use object_size_type
2161         0 or 2 when determining the pointer pointed object size.
2162
2163 2009-09-02  Richard Guenther  <rguenther@suse.de>
2164
2165         Revert
2166         2009-08-31  Richard Guenther  <rguenther@suse.de>
2167
2168         * builtins.c (fold_builtin_memory_op): Use the alias oracle
2169         to query if the memory regions for memmove overlap.
2170         * tree-ssa-alias.c (ptr_deref_may_alias_decl_p): Relax the
2171         asserts on pointers, instead deal with odd trees.
2172         (ptr_derefs_may_alias_p): Likewise.
2173         (refs_may_alias_p_1): Constructor bases also never alias.
2174
2175 2009-08-01  Christian Bruel  <christian.bruel@st.com>
2176
2177         Revert:
2178         2009-07-31  Christian Bruel  <christian.bruel@st.com>
2179         * gcc/config.gcc (sh*-*-elf): test with_libgloss.
2180
2181 2009-09-01  Alexandre Oliva  <aoliva@redhat.com>
2182
2183         * doc/invoke.texi (-fvar-tracking-assignments): New.
2184         (-fvar-tracking-assignments-toggle): New.
2185         (-fdump-final-insns=file): Mark filename as optional.
2186         (--param min-nondebug-insn-uid): New.
2187         (-gdwarf-@{version}): Mention version 4.
2188         * opts.c (common_handle_option): Accept it.
2189         * tree-vrp.c (find_assert_locations_1): Skip debug stmts.
2190         * regrename.c (regrename_optimize): Drop last.  Don't count debug
2191         insns as uses.  Don't reject change because of debug insn.
2192         (do_replace): Reject DEBUG_INSN as chain starter.  Take base_regno
2193         from the chain starter, and check for inexact matches in DEBUG_INSNS.
2194         (scan_rtx_reg): Accept inexact matches in DEBUG_INSNs.
2195         (build_def_use): Simplify and fix the marking of DEBUG_INSNs.
2196         * sched-ebb.c (schedule_ebbs): Skip boundary debug insns.
2197         * fwprop.c (forward_propagate_and_simplify): ...into debug insns.
2198         * doc/gimple.texi (is_gimple_debug): New.
2199         (gimple_debug_bind_p): New.
2200         (is_gimple_call, gimple_assign_cast_p): End sentence with period.
2201         * doc/install.texi (bootstrap-debug): More details.
2202         (bootstrap-debug-big, bootstrap-debug-lean): Document.
2203         (bootstrap-debug-lib): More details.
2204         (bootstrap-debug-ckovw): Update.
2205         (bootstrap-time): New.
2206         * tree-into-ssa.c (mark_def_sites): Skip debug stmts.
2207         (insert_phi_nodes_for): Insert debug stmts.
2208         (rewrite_stmt): Take iterator.  Insert debug stmts.
2209         (rewrite_enter_block): Adjust.
2210         (maybe_replace_use_in_debug_stmt): New.
2211         (rewrite_update_stmt): Use it.
2212         (mark_use_interesting): Return early for debug stmts.
2213         * tree-ssa-loop-im.c (rewrite_bittest): Propagate DEFs into debug
2214         stmts before replacing stmt.
2215         (move_computations_stmt): Likewise.
2216         * ira-conflicts.c (add_copies): Skip debug insns.
2217         * regstat.c (regstat_init_n_sets_and_refs): Discount debug insns.
2218         (regstat_bb_compute_ri): Skip debug insns.
2219         * tree-ssa-threadupdate.c (redirection_block_p): Skip debug stmts.
2220         * tree-ssa-loop-manip.c (find_uses_to_rename_stmt,
2221         check_loop_closed_ssa_stmt): Skip debug stmts.
2222         * tree-tailcall.c (find_tail_calls): Likewise.
2223         * tree-ssa-loop-ch.c (should_duplicate_loop_header_p): Likewise.
2224         * tree.h (MAY_HAVE_DEBUG_STMTS): New.
2225         (build_var_debug_value_stat): Declare.
2226         (build_var_debug_value): Define.
2227         (target_for_debug_bind): Declare.
2228         * reload.c (find_equiv_reg): Skip debug insns.
2229         * rtlanal.c (reg_used_between_p): Skip debug insns.
2230         (side_effects_p): Likewise.
2231         (canonicalize_condition): Likewise.
2232         * ddg.c (create_ddg_dep_from_intra_loop_link): Check that non-debug
2233         insns never depend on debug insns.
2234         (create_ddg_dep_no_link): Likewise.
2235         (add_cross_iteration_register_deps): Use ANTI_DEP for debug insns.
2236         Don't add inter-loop dependencies for debug insns.
2237         (build_intra_loop_deps): Likewise.
2238         (create_ddg): Count debug insns.
2239         * ddg.h (struct ddg::num_debug): New.
2240         (num_backargs): Pair up with previous int field.
2241         * diagnostic.c (diagnostic_report_diagnostic): Skip notes on
2242         -fcompare-debug-second.
2243         * final.c (get_attr_length_1): Skip debug insns.
2244         (rest_of_clean-state): Don't dump CFA_RESTORE_STATE.
2245         * gcc.c (invoke_as): Call compare-debug-dump-opt.
2246         (driver_self_specs): Map -fdump-final-insns to
2247         -fdump-final-insns=..
2248         (get_local_tick): New.
2249         (compare_debug_dump_opt_spec_function): Test for . argument and
2250         compute output name.  Compute temp output spec without flag name.
2251         Compute -frandom-seed.
2252         (OPT): Undef after use.
2253         * cfgloopanal.c (num_loop_insns): Skip debug insns.
2254         (average_num_loop_insns): Likewise.
2255         * params.h (MIN_NONDEBUG_INSN_UID): New.
2256         * gimple.def (GIMPLE_DEBUG): New.
2257         * ipa-reference.c (scan_stmt_for_static_refs): Skip debug stmts.
2258         * auto-inc-dec.c (merge_in_block): Skip debug insns.
2259         (merge_in_block): Fix whitespace.
2260         * toplev.c (flag_var_tracking): Update comment.
2261         (flag_var_tracking_assignments): New.
2262         (flag_var_tracking_assignments_toggle): New.
2263         (process_options): Don't open final insns dump file if we're not
2264         going to write to it.  Compute defaults for var_tracking.
2265         * df-scan.c (df_insn_rescan_debug_internal): New.
2266         (df_uses_record): Handle debug insns.
2267         * haifa-sched.c (ready): Initialize n_debug.
2268         (contributes_to_priority): Skip debug insns.
2269         (dep_list_size): New.
2270         (priority): Use it.
2271         (rank_for_schedule): Likewise.  Schedule debug insns as soon as
2272         they're ready.  Disregard previous debug insns to make decisions.
2273         (queue_insn): Never queue debug insns.
2274         (ready_add, ready_remove_first, ready_remove): Count debug insns.
2275         (schedule_insn): Don't reject debug insns because of issue rate.
2276         (get_ebb_head_tail, no_real_insns_p): Skip boundary debug insns.
2277         (queue_to_ready): Skip and discount debug insns.
2278         (choose_ready): Let debug insns through.
2279         (schedule_block): Check boundary debug insns.  Discount debug
2280         insns, schedule them early.  Adjust whitespace.
2281         (set_priorities): Check for boundary debug insns.
2282         (add_jump_dependencies): Use dep_list_size.
2283         (prev_non_location_insn): New.
2284         (check_cfg): Use it.
2285         * tree-ssa-loop-ivopts.c (find-interesting_users): Skip debug
2286         stmts.
2287         (remove_unused_ivs): Reset debug stmts.
2288         * modulo-sched.c (const_iteration_count): Skip debug insns.
2289         (res_MII): Discount debug insns.
2290         (loop_single_full_bb_p): Skip debug insns.
2291         (sms_schedule): Likewise.
2292         (sms_schedule_by_order): Likewise.
2293         (ps_has_conflicts): Likewise.
2294         * caller-save.c (refmarker_fn): New.
2295         (save_call_clobbered_regs): Replace regs with saved mem in
2296         debug insns.
2297         (mark_referenced_regs): Take pointer, mark and arg.  Adjust.
2298         Call refmarker_fn mark for hardregnos.
2299         (mark_reg_as_referenced): New.
2300         (replace_reg_with_saved_mem): New.
2301         * ipa-pure-const.c (check_stmt): Skip debug stmts.
2302         * cse.c (cse_insn): Canonicalize debug insns.  Skip them when
2303         searching back.
2304         (cse_extended_basic_block): Skip debug insns.
2305         (count_reg_usage): Likewise.
2306         (is_dead_reg): New, split out of...
2307         (set_live_p): ... here.
2308         (insn_live_p): Use it for debug insns.
2309         * tree-stdarg.c (check_all_va_list_escapes): Skip debug stmts.
2310         (execute_optimize_stdarg): Likewise.
2311         * tree-ssa-dom.c (propagate_rhs_into_lhs): Likewise.
2312         * tree-ssa-propagate.c (substitute_and_fold): Don't regard
2313         changes in debug stmts as changes.
2314         * sel-sched.c (moving_insn_creates_bookkeeping_block_p): New.
2315         (moveup_expr): Don't move across debug insns.  Don't move
2316         debug insn if it would create a bookkeeping block.
2317         (moveup_expr_cached): Don't use cache for debug insns that
2318         are heads of blocks.
2319         (compute_av_set_inside_bb): Skip debug insns.
2320         (sel_rank_for_schedule): Schedule debug insns first.  Remove
2321         dead code.
2322         (block_valid_for_bookkeeping_p); Support lax searches.
2323         (create_block_for_bookkeeping): Adjust block numbers when
2324         encountering debug-only blocks.
2325         (find_place_for_bookkeeping): Deal with debug-only blocks.
2326         (generate_bookkeeping_insn): Accept no place to insert.
2327         (remove_temp_moveop_nops): New argument full_tidying.
2328         (prepare_place_to_insert): Deal with debug insns.
2329         (advance_state_on_fence): Debug insns don't start cycles.
2330         (update_boundaries): Take fence as argument.  Deal with
2331         debug insns.
2332         (schedule_expr_on_boundary): No full_tidying on debug insns.
2333         (fill_insns): Deal with debug insns.
2334         (track_scheduled_insns_and_blocks): Don't count debug insns.
2335         (need_nop_to_preserve_insn_bb): New, split out of...
2336         (remove_insn_from_stream): ... this.
2337         (fur_orig_expr_not_found): Skip debug insns.
2338         * rtl.def (VALUE): Move up.
2339         (DEBUG_INSN): New.
2340         * tree-ssa-sink.c (all_immediate_uses_same_place): Skip debug stmts.
2341         (nearest_common_dominator_of_uses): Take debug_stmts argument.
2342         Set it if debug stmts are found.
2343         (statement_sink_location): Skip debug stmts.  Propagate
2344         moving defs into debug stmts.
2345         * ifcvt.c (first_active_insn): Skip debug insns.
2346         (last_active_insns): Likewise.
2347         (cond_exec_process_insns): Likewise.
2348         (noce_process_if_block): Likewise.
2349         (check_cond_move_block): Likewise.
2350         (cond_move_convert_if_block): Likewise.
2351         (block_jumps_and_fallthru_p): Likewise.
2352         (dead_or_predicable): Likewise.
2353         * dwarf2out.c (debug_str_hash_forced): New.
2354         (find_AT_string): Add comment.
2355         (gen_label_for_indirect_string): New.
2356         (get_debug_string_label): New.
2357         (AT_string_form): Use it.
2358         (mem_loc_descriptor): Handle non-TLS symbols.  Handle MINUS , DIV,
2359         MOD, AND, IOR, XOR, NOT, ABS, NEG, and CONST_STRING.  Accept but
2360         discard COMPARE, IF_THEN_ELSE, ROTATE, ROTATERT, TRUNCATE and
2361         several operations that cannot be represented with DWARF opcodes.
2362         (loc_descriptor): Ignore SIGN_EXTEND and ZERO_EXTEND.  Require
2363         dwarf_version 4 for DW_OP_implicit_value and DW_OP_stack_value.
2364         (dwarf2out_var_location): Take during-call mark into account.
2365         (output_indirect_string): Update comment.  Output if there are
2366         label and references.
2367         (prune_indirect_string): New.
2368         (prune_unused_types): Call it if debug_str_hash_forced.
2369         More in dwarf2out.c, from Jakub Jelinek <jakub@redhat.com>:
2370         (dw_long_long_const): Remove.
2371         (struct dw_val_struct): Change val_long_long type to rtx.
2372         (print_die, attr_checksum, same_dw_val_p, loc_descriptor): Adjust for
2373         val_long_long change to CONST_DOUBLE rtx from a long hi/lo pair.
2374         (output_die): Likewise.  Use HOST_BITS_PER_WIDE_INT size of each
2375         component instead of HOST_BITS_PER_LONG.
2376         (output_loc_operands): Likewise.  For const8* assert
2377         HOST_BITS_PER_WIDE_INT rather than HOST_BITS_PER_LONG is >= 64.
2378         (output_loc_operands_raw): For const8* assert HOST_BITS_PER_WIDE_INT
2379         rather than HOST_BITS_PER_LONG is >= 64.
2380         (add_AT_long_long): Remove val_hi and val_lo arguments, add
2381         val_const_double.
2382         (size_of_die): Use HOST_BITS_PER_WIDE_INT size multiplier instead of
2383         HOST_BITS_PER_LONG for dw_val_class_long_long.
2384         (add_const_value_attribute): Adjust add_AT_long_long caller.  Don't
2385         handle TLS SYMBOL_REFs.  If CONST wraps a constant, tail recurse.
2386         (dwarf_stack_op_name): Handle DW_OP_implicit_value and
2387         DW_OP_stack_value.
2388         (size_of_loc_descr, output_loc_operands, output_loc_operands_raw):
2389         Handle DW_OP_implicit_value.
2390         (extract_int): Move prototype earlier.
2391         (mem_loc_descriptor): For SUBREG punt if inner
2392         mode size is wider than DWARF2_ADDR_SIZE.  Handle SIGN_EXTEND
2393         and ZERO_EXTEND by DW_OP_shl and DW_OP_shr{a,}.  Handle
2394         EQ, NE, GT, GE, LT, LE, GTU, GEU, LTU, LEU, SMIN, SMAX, UMIN,
2395         UMAX, SIGN_EXTRACT, ZERO_EXTRACT.
2396         (loc_descriptor): Compare mode size with DWARF2_ADDR_SIZE
2397         instead of Pmode size.
2398         (loc_descriptor): Add MODE argument.  Handle CONST_INT, CONST_DOUBLE,
2399         CONST_VECTOR, CONST, LABEL_REF and SYMBOL_REF if mode != VOIDmode,
2400         attempt to handle other expressions.  Don't handle TLS SYMBOL_REFs.
2401         (concat_loc_descriptor, concatn_loc_descriptor,
2402         loc_descriptor_from_tree_1): Adjust loc_descriptor callers.
2403         (add_location_or_const_value_attribute): Likewise.  For single
2404         location loc_lists attempt to use add_const_value_attribute
2405         for constant decls.  Add DW_AT_const_value even if
2406         NOTE_VAR_LOCATION is VAR_LOCATION with CONSTANT_P or CONST_STRING
2407         in its expression.
2408         * cfgbuild.c (inside_basic_block_p): Handle debug insns.
2409         (control_flow_insn_p): Likewise.
2410         * tree-parloops.c (eliminate_local_variables_stmt): Handle debug stmt.
2411         (separate_decls_in_region_debug_bind): New.
2412         (separate_decls_in_region): Process debug bind stmts afterwards.
2413         * recog.c (verify_changes): Handle debug insns.
2414         (extract_insn): Likewise.
2415         (peephole2_optimize): Skip debug insns.
2416         * dse.c (scan_insn): Skip debug insns.
2417         * sel-sched-ir.c (return_nop_to_pool): Take full_tidying argument.
2418         Pass it on.
2419         (setup_id_for_insn): Handle debug insns.
2420         (maybe_tidy_empty_bb): Adjust whitespace.
2421         (tidy_control_flow): Skip debug insns.
2422         (sel_remove_insn): Adjust for debug insns.
2423         (sel_estimate_number_of_insns): Skip debug insns.
2424         (create_insn_rtx_from_pattern): Handle debug insns.
2425         (create_copy_of_insn_rtx): Likewise.
2426         * sel-sched-.h (sel_bb_end): Declare.
2427         (sel_bb_empty_or_nop_p): New.
2428         (get_all_loop_exits): Use it.
2429         (_eligible_successor_edge_p): Likewise.
2430         (return_nop_to_pool): Adjust.
2431         * tree-eh.c (tre_empty_eh_handler_p): Skip debug stmts.
2432         * ira-lives.c (process_bb_node_lives): Skip debug insns.
2433         * gimple-pretty-print.c (dump_gimple_debug): New.
2434         (dump_gimple_stmt): Use it.
2435         (dump_bb_header): Skip gimple debug stmts.
2436         * regmove.c (optimize_reg_copy_1): Discount debug insns.
2437         (fixup_match_2): Likewise.
2438         (regmove_backward_pass): Likewise.  Simplify combined
2439         replacement.  Handle debug insns.
2440         * function.c (instantiate_virtual_regs): Handle debug insns.
2441         * function.h (struct emit_status): Add x_cur_debug_insn_uid.
2442         * print-rtl.h: Include cselib.h.
2443         (print_rtx): Print VALUEs.  Split out and recurse for VAR_LOCATIONs.
2444         * df.h (df_inns_rescan_debug_internal): Declare.
2445         * gcse.c (alloc_hash_table): Estimate n_insns.
2446         (cprop_insn): Don't regard debug insns as changes.
2447         (bypass_conditional_jumps): Skip debug insns.
2448         (one_pre_gcse_pass): Adjust.
2449         (one_code_hoisting_pass): Likewise.
2450         (compute_ld_motion_mems): Skip debug insns.
2451         (one_cprop_pass): Adjust.
2452         * tree-if-conv.c (tree_if_convert_stmt): Reset debug stmts.
2453         (if_convertible_stmt_p): Handle debug stmts.
2454         * init-regs.c (initialize_uninitialized_regs): Skip debug insns.
2455         * tree-vect-loop.c (vect_is_simple_reduction): Skip debug stmts.
2456         * ira-build.c (create_bb_allocnos): Skip debug insns.
2457         * tree-flow-inline.h (has_zero_uses): Discount debug stmts.
2458         (has_single_use): Likewise.
2459         (single_imm_use): Likewise.
2460         (num_imm_uses): Likewise.
2461         * tree-ssa-phiopt.c (empty_block_p): Skip debug stmts.
2462         * tree-ssa-coalesce.c (build_ssa_conflict_graph): Skip debug stmts.
2463         (create_outofssa_var_map): Likewise.
2464         * lower-subreg.c (adjust_decomposed_uses): New.
2465         (resolve_debug): New.
2466         (decompose_multiword_subregs): Use it.
2467         * tree-dfa.c (find_referenced_vars): Skip debug stmts.
2468         * emit-rtl.c: Include params.h.
2469         (cur_debug_insn_uid): Define.
2470         (set_new_first_and_last_insn): Set cur_debug_insn_uid too.
2471         (copy_rtx_if_shared_1): Handle debug insns.
2472         (reset_used_flags): Likewise.
2473         (set_used_flags): LIkewise.
2474         (get_max_insn_count): New.
2475         (next_nondebug_insn): New.
2476         (prev_nondebug_insn): New.
2477         (make_debug_insn_raw): New.
2478         (emit_insn_before_noloc): Handle debug insns.
2479         (emit_jump_insn_before_noloc): Likewise.
2480         (emit_call_insn_before_noloc): Likewise.
2481         (emit_debug_insn_before_noloc): New.
2482         (emit_insn_after_noloc): Handle debug insns.
2483         (emit_jump_insn_after_noloc): Likewise.
2484         (emit_call_insn_after_noloc): Likewise.
2485         (emit_debug_insn_after_noloc): Likewise.
2486         (emit_insn_after): Take loc from earlier non-debug insn.
2487         (emit_jump_insn_after): Likewise.
2488         (emit_call_insn_after): Likewise.
2489         (emit_debug_insn_after_setloc): New.
2490         (emit_debug_insn_after): New.
2491         (emit_insn_before): Take loc from later non-debug insn.
2492         (emit_jump_insn_before): Likewise.
2493         (emit_call_insn_before): Likewise.
2494         (emit_debug_insn_before_setloc): New.
2495         (emit_debug_insn_before): New.
2496         (emit_insn): Handle debug insns.
2497         (emit_debug_insn): New.
2498         (emit_jump_insn): Handle debug insns.
2499         (emit_call_insn): Likewise.
2500         (emit): Likewise.
2501         (init_emit): Take min-nondebug-insn-uid into account.
2502         Initialize cur_debug_insn_uid.
2503         (emit_copy_of_insn_after): Handle debug insns.
2504         * cfgexpand.c (gimple_assign_rhs_to_tree): Do not overwrite
2505         location of single rhs in place.
2506         (maybe_dump_rtl_for_gimple_stmt): Dump lineno.
2507         (floor_sdiv_adjust): New.
2508         (cell_sdiv_adjust): New.
2509         (cell_udiv_adjust): New.
2510         (round_sdiv_adjust): New.
2511         (round_udiv_adjust): New.
2512         (wrap_constant): Moved from cselib.
2513         (unwrap_constant): New.
2514         (expand_debug_expr): New.
2515         (expand_debug_locations): New.
2516         (expand_gimple_basic_block): Drop hiding redeclaration.  Expand
2517         debug bind stmts.
2518         (gimple_expand_cfg): Expand debug locations.
2519         * cselib.c: Include tree-pass.h.
2520         (struct expand_value_data): New.
2521         (cselib_record_sets_hook): New.
2522         (PRESERVED_VALUE_P, LONG_TERM_PRESERVED_VALUE_P): New.
2523         (cselib_clear_table): Move, and implemnet in terms of...
2524         (cselib_reset_table_with_next_value): ... this.
2525         (cselib_get_next_unknown_value): New.
2526         (discard_useless_locs): Don't discard preserved values.
2527         (cselib_preserve_value): New.
2528         (cselib_preserved_value_p): New.
2529         (cselib_preserve_definitely): New.
2530         (cselib_clear_preserve): New.
2531         (cselib_preserve_only_values): New.
2532         (new_cselib_val): Take rtx argument.  Dump it in details.
2533         (cselib_lookup_mem): Adjust.
2534         (expand_loc): Take regs_active in struct.  Adjust.  Silence
2535         dumps unless details are requested.
2536         (cselib_expand_value_rtx_cb): New.
2537         (cselib_expand_value_rtx): Rename and reimplment in terms of...
2538         (cselib_expand_value_rtx_1): ... this.  Adjust.  Silence dumps
2539         without details.  Copy more subregs.  Try to resolve values
2540         using a callback.  Wrap constants.
2541         (cselib_subst_to_values): Adjust.
2542         (cselib_log_lookup): New.
2543         (cselib_lookup): Call it.
2544         (cselib_invalidate_regno): Don't count preserved values as useless.
2545         (cselib_invalidate_mem): Likewise.
2546         (cselib_record_set): Likewise.
2547         (struct set): Renamed to cselib_set, moved to cselib.h.
2548         (cselib_record_sets): Adjust.  Call hook.
2549         (cselib_process_insn): Reset table when it would be cleared.
2550         (dump_cselib_val): New.
2551         (dump_cselib_table): New.
2552         * tree-cfgcleanup.c (tree_forwarded_block_p): Skip debug stmts.
2553         (remove_forwarder_block): Support moving debug stmts.
2554         * cselib.h (cselib_record_sets_hook): Declare.
2555         (cselib_expand_callback): New type.
2556         (cselib_expand_value_rtx_cb): Declare.
2557         (cselib_reset_table_with_next_value): Declare.
2558         (cselib_get_next_unknown_value): Declare.
2559         (cselib_preserve_value): Declare.
2560         (cselib_preserved_value_p): Declare.
2561         (cselib_preserve_only_values): Declare.
2562         (dump_cselib_table): Declare.
2563         * cfgcleanup.c (flow_find_cross_jump): Skip debug insns.
2564         (try_crossjump_to_edge): Likewise.
2565         (delete_unreachable_blocks): Remove dominant GIMPLE blocks after
2566         dominated blocks when debug stmts are present.
2567         * simplify-rtx.c (delegitimize_mem_from_attrs): New.
2568         * tree-ssa-live.c (remove_unused_locals): Skip debug stmts.
2569         (set_var_live_on_entry): Likewise.
2570         * loop-invariant.c (find_invariants_bb): Skip debug insns.
2571         * cfglayout.c (curr_location, last_location): Make static.
2572         (set_curr_insn_source_location): Don't avoid bouncing.
2573         (get_curr_insn_source_location): New.
2574         (get_curr_insn_block): New.
2575         (duplicate_insn_chain): Handle debug insns.
2576         * tree-ssa-forwprop.c (forward_propagate_addr_expr): Propagate
2577         into debug stmts.
2578         * common.opt (fcompare-debug): Move to sort order.
2579         (fdump-unnumbered-links): Likewise.
2580         (fvar-tracking-assignments): New.
2581         (fvar-tracking-assignments-toggle): New.
2582         * tree-ssa-dce.c (mark_stmt_necessary): Don't mark blocks
2583         because of debug stmts.
2584         (mark_stmt_if_obviously_necessary): Mark debug stmts.
2585         (eliminate_unnecessary_stmts): Walk dominated blocks before
2586         dominators.
2587         * tree-ssa-ter.c (find_replaceable_in_bb): Skip debug stmts.
2588         * ira.c (memref_used_between_p): Skip debug insns.
2589         (update_equiv_regs): Likewise.
2590         * sched-deps.c (sd_lists_size): Accept empty list.
2591         (sd_init_insn): Mark debug insns.
2592         (sd_finish_insn): Unmark them.
2593         (sd_add_dep): Reject non-debug deps on debug insns.
2594         (fixup_sched_groups): Give debug insns group treatment.
2595         Skip debug insns.
2596         (sched_analyze_reg): Don't mark debug insns for sched before call.
2597         (sched_analyze_2): Handle debug insns.
2598         (sched_analyze_insn): Compute next non-debug insn.  Handle debug
2599         insns.
2600         (deps_analyze_insn): Handle debug insns.
2601         (deps_start_bb): Skip debug insns.
2602         (init_deps): Initialize last_debug_insn.
2603         * tree-ssa.c (target_for_debug_bind): New.
2604         (find_released_ssa_name): New.
2605         (propagate_var_def_into_debug_stmts): New.
2606         (propagate_defs_into_debug_stmts): New.
2607         (verify_ssa): Skip debug bind stmts without values.
2608         (warn_uninialized_vars): Skip debug stmts.
2609         * target-def.h (TARGET_DELEGITIMIZE_ADDRESS): Set default.
2610         * rtl.c (rtx_equal_p_cb): Handle VALUEs.
2611         (rtx_equal_p): Likewise.
2612         * ira-costs.c (scan_one_insn): Skip debug insns.
2613         (process_bb_node_for_hard_reg_moves): Likewise.
2614         * rtl.h (DEBUG_INSN_P): New.
2615         (NONDEBUG_INSN_P): New.
2616         (MAY_HAVE_DEBUG_INSNS): New.
2617         (INSN_P): Accept debug insns.
2618         (RTX_FRAME_RELATED_P): Likewise.
2619         (INSN_DELETED_P): Likewise
2620         (PAT_VAR_LOCATION_DECL): New.
2621         (PAT_VAR_LOCATION_LOC): New.
2622         (PAT_VAR_OCATION_STATUS): New.
2623         (NOTE_VAR_LOCATION_DECL): Reimplement.
2624         (NOTE_VAR_LOCATION_LOC): Likewise.
2625         (NOTE_VAR_LOCATION_STATUS): Likewise.
2626         (INSN_VAR_LOCATION): New.
2627         (INSN_VAR_LOCATION_DECL): New.
2628         (INSN_VAR_LOCATION_LOC): New.
2629         (INSN_VAR_LOCATION_STATUS): New.
2630         (gen_rtx_UNKNOWN_VAR_LOC): New.
2631         (VAR_LOC_UNKNOWN_P): New.
2632         (NOTE_DURING_CALL_P): New.
2633         (SCHED_GROUP_P): Accept debug insns.
2634         (emit_debug_insn_before): Declare.
2635         (emit_debug_insn_before_noloc): Declare.
2636         (emit_debug_insn_beore_setloc): Declare.
2637         (emit_debug_insn_after): Declare.
2638         (emit_debug_insn_after_noloc): Declare.
2639         (emit_debug_insn_after_setloc): Declare.
2640         (emit_debug_insn): Declare.
2641         (make_debug_insn_raw): Declare.
2642         (prev_nondebug_insn): Declare.
2643         (next_nondebug_insn): Declare.
2644         (delegitimize_mem_from_attrs): Declare.
2645         (get_max_insn_count): Declare.
2646         (wrap_constant): Declare.
2647         (unwrap_constant): Declare.
2648         (get_curr_insn_source_location): Declare.
2649         (get_curr_insn_block): Declare.
2650         * tree-inline.c (insert_debug_decl_map): New.
2651         (processing_debug_stmt): New.
2652         (remap_decl): Don't create new mappings in debug stmts.
2653         (remap_gimple_op_r): Don't add references in debug stmts.
2654         (copy_tree_body_r): Likewise.
2655         (remap_gimple_stmt): Handle debug bind stmts.
2656         (copy_bb): Skip debug stmts.
2657         (copy_edges_for_bb): Likewise.
2658         (copy_debug_stmt): New.
2659         (copy_debug_stmts): New.
2660         (copy_body): Copy debug stmts at the end.
2661         (insert_init_debug_bind): New.
2662         (insert_init_stmt): Take id.  Skip and emit debug stmts.
2663         (setup_one_parameter): Remap variable earlier, register debug mapping.
2664         (estimate_num_insns): Skip debug stmts.
2665         (expand_call_inline): Preserve debug_map.
2666         (optimize_inline_calls): Check for no debug_stmts left-overs.
2667         (unsave_expr_now): Preserve debug_map.
2668         (copy_gimple_seq_and_replace_locals): Likewise.
2669         (tree_function_versioning): Check for no debug_stmts left-overs.
2670         Init and destroy debug_map as needed.  Split edges unconditionally.
2671         (build_duplicate_type): Init and destroy debug_map as needed.
2672         * tree-inline.h: Include gimple.h instead of pointer-set.h.
2673         (struct copy_body_data): Add debug_stmts and debug_map.
2674         * sched-int.h (struct ready_list): Add n_debug.
2675         (struct deps): Add last_debug_insn.
2676         (DEBUG_INSN_SCHED_P): New.
2677         (BOUNDARY_DEBUG_INSN_P): New.
2678         (SCHEDULE_DEBUG_INSN_P): New.
2679         (sd_iterator_cond): Accept empty list.
2680         * combine.c (create_log_links): Skip debug insns.
2681         (combine_instructions): Likewise.
2682         (cleanup_auto_inc_dec): New.  From Jakub Jelinek: Make sure the
2683         return value is always unshared.
2684         (struct rtx_subst_pair): New.
2685         (auto_adjust_pair): New.
2686         (propagate_for_debug_subst): New.
2687         (propagate_for_debug): New.
2688         (try_combine): Skip debug insns.  Propagate removed defs into
2689         debug insns.
2690         (next_nonnote_nondebug_insn): New.
2691         (distribute_notes): Use it.  Skip debug insns.
2692         (distribute_links): Skip debug insns.
2693         * tree-outof-ssa.c (set_location_for_edge): Likewise.
2694         * resource.c (mark_target_live_regs): Likewise.
2695         * var-tracking.c: Include cselib.h and target.h.
2696         (enum micro_operation_type): Add MO_VAL_USE, MO_VAL_LOC, and
2697         MO_VAL_SET.
2698         (micro_operation_type_name): New.
2699         (enum emit_note_where): Add EMIT_NOTE_AFTER_CALL_INSN.
2700         (struct micro_operation_def): Update comments.
2701         (decl_or_value): New type.  Use instead of decls.
2702         (struct emit_note_data_def): Add vars.
2703         (struct attrs_def): Use decl_or_value.
2704         (struct variable_tracking_info_def): Add permp, flooded.
2705         (struct location_chain_def): Update comment.
2706         (struct variable_part_def): Use decl_or_value.
2707         (struct variable_def): Make var_part a variable length array.
2708         (valvar_pool): New.
2709         (scratch_regs): New.
2710         (cselib_hook_called): New.
2711         (dv_is_decl_p): New.
2712         (dv_is_value_p): New.
2713         (dv_as_decl): New.
2714         (dv_as_value): New.
2715         (dv_as_opaque): New.
2716         (dv_onepart_p): New.
2717         (dv_pool): New.
2718         (IS_DECL_CODE): New.
2719         (check_value_is_not_decl): New.
2720         (dv_from_decl): New.
2721         (dv_from_value): New.
2722         (dv_htab_hash): New.
2723         (variable_htab_hash): Use it.
2724         (variable_htab_eq): Support values.
2725         (variable_htab_free): Free from the right pool.
2726         (attrs_list_member, attrs_list_insert): Use decl_or_value.
2727         (attrs_list_union): Adjust.
2728         (attrs_list_mpdv_union): New.
2729         (tie_break_pointers): New.
2730         (canon_value_cmp): New.
2731         (unshare_variable): Return possibly-modified slot.
2732         (vars_copy_1): Adjust.
2733         (var_reg_decl_set): Adjust.  Split out of...
2734         (var_reg_set): ... this.
2735         (get_init_value): Adjust.
2736         (var_reg_delete_and_set): Adjust.
2737         (var_reg_delete): Adjust.
2738         (var_regno_delete): Adjust.
2739         (var_mem_decl_set): Split out of...
2740         (var_mem_set): ... this.
2741         (var_mem_delete_and_set): Adjust.
2742         (var_mem_delete): Adjust.
2743         (val_store): New.
2744         (val_reset): New.
2745         (val_resolve): New.
2746         (variable_union): Adjust.  Speed up merge of 1-part vars.
2747         (variable_canonicalize): Use unshared slot.
2748         (VALUED_RECURSED_INTO): New.
2749         (find_loc_in_1pdv): New.
2750         (struct dfset_merge): New.
2751         (insert_into_intersection): New.
2752         (intersect_loc_chains): New.
2753         (loc_cmp): New.
2754         (canonicalize_loc_order_check): New.
2755         (canonicalize_values_mark): New.
2756         (canonicalize_values_star): New.
2757         (variable_merge_over_cur): New.
2758         (variable_merge_over_src): New.
2759         (dataflow_set_merge): New.
2760         (dataflow_set_equiv_regs): New.
2761         (remove_duplicate_values): New.
2762         (struct dfset_post_merge): New.
2763         (variable_post_merge_new_vals): New.
2764         (variable_post_merge_perm_vals): New.
2765         (dataflow_post_merge_adjust): New.
2766         (find_mem_expr_in_1pdv): New.
2767         (dataflow_set_preserve_mem_locs): New.
2768         (dataflow_set_remove_mem_locs): New.
2769         (dataflow_set_clear_at_call): New.
2770         (onepart_variable_different_p): New.
2771         (variable_different_p): Use it.
2772         (dataflow_set_different_1): Adjust.  Make detailed dump more verbose.
2773         (track_expr_p): Add need_rtl parameter.  Don't generate rtl
2774         if not needed.
2775         (track_loc_p): Pass it true.
2776         (struct count_use_info): New.
2777         (find_use_val): New.
2778         (replace_expr_with_values): New.
2779         (log_op_type): New.
2780         (use_type): New, partially split out of...
2781         (count_uses): ... this.  Count new micro-ops.
2782         (count_uses_1): Adjust.
2783         (count_stores): Adjust.
2784         (count_with_sets): New.
2785         (VAL_NEEDS_RESOLUTION): New.
2786         (VAL_HOLDS_TRACK_EXPR): New.
2787         (VAL_EXPR_IS_COPIED): New.
2788         (VAL_EXPR_IS_CLOBBERED): New.
2789         (add_uses): Adjust.  Generate new micro-ops.
2790         (add_uses_1): Adjust.
2791         (add_stores): Generate new micro-ops.
2792         (add_with_sets): New.
2793         (find_src_status): Adjust.
2794         (find_src_set_src): Adjust.
2795         (compute_bb_dataflow): Use dataflow_set_clear_at_call.
2796         Handle new micro-ops.  Canonicalize value equivalances.
2797         (vt_find_locations): Compute total size of hash tables for
2798         dumping.  Perform merge for var-tracking-assignments.  Don't
2799         disregard single-block loops.
2800         (dump_attrs_list): Handle decl_or_value.
2801         (dump_variable): Take variable.  Deal with decl_or_value.
2802         (dump_variable_slot): New.
2803         (dump_vars): Use it.
2804         (dump_dataflow_sets): Adjust.
2805         (set_slot_part): New, extended to support one-part variables
2806         after splitting out of...
2807         (set_variable_part): ... this.
2808         (clobber_slot_part): New, split out of...
2809         (clobber_variable_part): ... this.
2810         (delete_slot_part): New, split out of...
2811         (delete_variable_part): .... this.
2812         (check_wrap_constant): New.
2813         (vt_expand_loc_callback): New.
2814         (vt_expand_loc): New.
2815         (emit_note_insn_var_location): Adjust.  Handle values.  Handle
2816         EMIT_NOTE_AFTER_CALL_INSN.
2817         (emit_notes_for_differences_1): Adjust.  Handle values.
2818         (emit_notes_for_differences_2): Likewise.
2819         (emit_notes_for_differences): Adjust.
2820         (emit_notes_in_bb): Take pointer to set.  Emit AFTER_CALL_INSN notes.
2821         Adjust.  Handle new micro-ops.
2822         (vt_add_function_parameters): Adjust.  Create and bind values.
2823         (vt_initialize): Adjust.  Initialize scratch_regs and
2824         valvar_pool, flooded and perm..  Initialize and use cselib.  Log
2825         operations.  Move some code to count_with_sets and add_with_sets.
2826         (delete_debug_insns): New.
2827         (vt_debug_insns_local): New.
2828         (vt_finalize): Release permp, valvar_pool, scratch_regs.  Finish
2829         cselib.
2830         (var_tracking_main): If var-tracking-assignments is enabled
2831         but var-tracking isn't, delete debug insns and leave.  Likewise
2832         if we exceed limits or fail the stack adjustments tests, and
2833         after all var-tracking processing.
2834         More in var-tracking, from Jakub Jelinek <jakub@redhat.com>:
2835         (dataflow_set): Add traversed_vars.
2836         (value_chain, const_value_chain): New typedefs.
2837         (value_chain_pool, value_chains): New variables.
2838         (value_chain_htab_hash, value_chain_htab_eq, add_value_chain,
2839         add_value_chains, add_cselib_value_chains, remove_value_chain,
2840         remove_value_chains, remove_cselib_value_chains): New functions.
2841         (shared_hash_find_slot_unshare_1, shared_hash_find_slot_1,
2842         shared_hash_find_slot_noinsert_1, shared_hash_find_1): New
2843         static inlines.
2844         (shared_hash_find_slot_unshare, shared_hash_find_slot,
2845         shared_hash_find_slot_noinsert, shared_hash_find): Update.
2846         (dst_can_be_shared): New variable.
2847         (unshare_variable): Unshare set->vars if shared, use shared_hash_*.
2848         Clear dst_can_be_shared.  If set->traversed_vars is non-NULL and
2849         different from set->vars, look up slot again instead of using the
2850         passed in slot.
2851         (dataflow_set_init): Initialize traversed_vars.
2852         (variable_union): Use shared_hash_*.  Use initially NO_INSERT
2853         lookup if set->vars is shared.  Don't keep slot cleared before
2854         calling unshare_variable.  Unshare set->vars if needed.  Adjust
2855         unshare_variable callers.  Clear dst_can_be_shared if needed.
2856         Even ->refcount == 1 vars must be unshared if set->vars is shared
2857         and var needs to be modified.
2858         (dataflow_set_union): Set traversed_vars during canonicalization.
2859         (VALUE_CHANGED, DECL_CHANGED): Define.
2860         (set_dv_changed, dv_changed_p): New static inlines.
2861         (track_expr_p): Clear DECL_CHANGED.
2862         (dump_dataflow_sets): Set it.
2863         (variable_was_changed): Call set_dv_changed.
2864         (emit_note_insn_var_location): Likewise.
2865         (changed_variables_stack): New variable.
2866         (check_changed_vars_1, check_changed_vars_2): New functions.
2867         (emit_notes_for_changes): Do nothing if changed_variables is
2868         empty.  Traverse changed_variables with check_changed_vars_1,
2869         call check_changed_vars_2 on each changed_variables_stack entry.
2870         (emit_notes_in_bb): Add SET argument.  Just clear it at the
2871         beginning, use it instead of local &set, don't destroy it at the end.
2872         (vt_emit_notes): Call dataflow_set_clear early on all
2873         VTI(bb)->out sets, never use them, instead use emit_notes_in_bb
2874         computed set, dataflow_set_clear also VTI(bb)->in when we are
2875         done with the basic block.  Initialize changed_variables_stack,
2876         free it afterwards.  If ENABLE_CHECKING verify that after noting
2877         differences to an empty set value_chains hash table is empty.
2878         (vt_initialize): Initialize value_chains and value_chain_pool.
2879         (vt_finalize): Delete value_chains htab, free value_chain_pool.
2880         (variable_tracking_main): Call dump_dataflow_sets before calling
2881         vt_emit_notes, not after it.
2882         * tree-flow.h (propagate_defs_into_debug_stmts): Declare.
2883         (propagate_var_def_into_debug_stmts): Declare.
2884         * df-problems.c (df_lr_bb_local_compute): Skip debug insns.
2885         (df_set_note): Reject debug insns.
2886         (df_whole_mw_reg_dead_p): Take added_notes_p argument.  Don't
2887         add notes to debug insns.
2888         (df_note_bb_compute): Adjust.  Likewise.
2889         (df_simulate_uses): Skip debug insns.
2890         (df_simulate_initialize_backwards): Likewise.
2891         * reg-stack.c (subst_stack_regs_in_debug_insn): New.
2892         (subst_stack_regs_pat): Reject debug insns.
2893         (convert_regs_1): Handle debug insns.
2894         * Makefile.in (TREE_INLINE_H): Take pointer-set.h from GIMPLE_H.
2895         (print-rtl.o): Depend on cselib.h.
2896         (cselib.o): Depend on TREE_PASS_H.
2897         (var-tracking.o): Depend on cselib.h and TARGET_H.
2898         * sched-rgn.c (rgn_estimate_number_of_insns): Discount debug insns.
2899         (init_ready_list): Skip boundary debug insns.
2900         (add_branch_dependences): Skip debug insns.
2901         (free_block_dependencies): Check for blocks with only debug insns.
2902         (compute_priorities): Likewise.
2903         * gimple.c (gss_for_code): Handle GIMPLE_DEBUG.
2904         (gimple_build_with_ops_stat): Take subcode as unsigned.  Adjust
2905         all callers.
2906         (gimple_build_debug_bind_stat): New.
2907         (empty_body_p): Skip debug stmts.
2908         (gimple_has_side_effects): Likewise.
2909         (gimple_rhs_has_side_effects): Likewise.
2910         * gimple.h (enum gimple_debug_subcode, GIMPLE_DEBUG_BIND): New.
2911         (gimple_build_debug_bind_stat): Declare.
2912         (gimple_build_debug_bind): Define.
2913         (is_gimple_debug): New.
2914         (gimple_debug_bind_p): New.
2915         (gimple_debug_bind_get_var): New.
2916         (gimple_debug_bind_get_value): New.
2917         (gimple_debug_bind_get_value_ptr): New.
2918         (gimple_debug_bind_set_var): New.
2919         (gimple_debug_bind_set_value): New.
2920         (GIMPLE_DEBUG_BIND_NOVALUE): New internal temporary macro.
2921         (gimple_debug_bind_reset_value): New.
2922         (gimple_debug_bind_has_value_p): New.
2923         (gsi_next_nondebug): New.
2924         (gsi_prev_nondebug): New.
2925         (gsi_start_nondebug_bb): New.
2926         (gsi_last_nondebug_bb): New.
2927         * sched-vis.c (print_pattern): Handle VAR_LOCATION.
2928         (print_insn): Handle DEBUG_INSN.
2929         * tree-cfg.c (remove_bb): Walk stmts backwards.  Let loc
2930         of first insn prevail.
2931         (first_stmt): Skip debug stmts.
2932         (first_non_label_stmt): Likewise.
2933         (last_stmt): Likewise.
2934         (has_zero_uses_1): New.
2935         (single_imm_use_1): New.
2936         (verify_gimple_debug): New.
2937         (verify_types_in_gimple_stmt): Handle debug stmts.
2938         (verify_stmt): Likewise.
2939         (debug_loop_num): Skip debug stmts.
2940         (remove_edge_and_dominated_blocks): Remove dominators last.
2941         * tree-ssa-reasssoc.c (rewrite_expr_tree): Propagate into debug stmts.
2942         (linearize_expr): Likewise.
2943         * config/i386/i386.c (ix86_delegitimize_address): Call
2944         default implementation.
2945         * config/ia64/ia64.c (ia64_safe_itanium_class): Handle debug insns.
2946         (group_barrier_needed): Skip debug insns.
2947         (emit_insn_group_barriers): Likewise.
2948         (emit_all_insn_group_barriers): Likewise.
2949         (ia64_variable_issue): Handle debug insns.
2950         (ia64_dfa_new_cycle): Likewise.
2951         (final_emit_insn_group_barriers): Skip debug insns.
2952         (ia64_dwarf2out_def_steady_cfa): Take frame argument.  Don't
2953         def cfa without frame.
2954         (process_set): Likewise.
2955         (process_for_unwind_directive): Pass frame on.
2956         * config/rs6000/rs6000.c (TARGET_DELEGITIMIZE_ADDRESS): Define.
2957         (rs6000_delegitimize_address): New.
2958         (rs6000_debug_adjust_cost): Handle debug insns.
2959         (is_microcoded_insn): Likewise.
2960         (is_cracked_insn): Likewise.
2961         (is_nonpipeline_insn): Likewise.
2962         (insn_must_be_first_in_group): Likewise.
2963         (insn_must_be_last_in_group): Likewise.
2964         (force_new_group): Likewise.
2965         * cfgrtl.c (rtl_split_block): Emit INSN_DELETED note if block
2966         contains only debug insns.
2967         (rtl_merge_blocks): Skip debug insns.
2968         (purge_dead_edges): Likewise.
2969         (rtl_block_ends_with_call_p): Skip debug insns.
2970         * dce.c (deletable_insn_p): Handle VAR_LOCATION.
2971         (mark_reg_dependencies): Skip debug insns.
2972         * params.def (PARAM_MIN_NONDEBUG_INSN_UID): New.
2973         * tree-ssanames.c (release_ssa_name): Propagate def into debug stmts.
2974         * tree-ssa-threadedge.c
2975         (record_temporary_equivalences_from_stmts): Skip debug stmts.
2976         * regcprop.c (replace_oldest_value_addr): Skip debug insns.
2977         (replace_oldest_value_mem): Use ALL_REGS for debug insns.
2978         (copyprop_hardreg_forward_1): Handle debug insns.
2979         * reload1.c (reload): Skip debug insns.  Replace unassigned
2980         pseudos in debug insns with their equivalences.
2981         (eliminate_regs_in_insn): Skip debug insns.
2982         (emit_input_reload_insns): Skip debug insns at first, adjust
2983         them later.
2984         * tree-ssa-operands.c (add_virtual_operand): Reject debug stmts.
2985         (get_indirect_ref_operands): Pass opf_no_vops on.
2986         (get_expr_operands): Likewise.  Skip debug stmts.
2987         (parse_ssa_operands): Scan debug insns with opf_no_vops.
2988
2989 2009-09-01  Richard Henderson  <rth@redhat.com>
2990
2991         * tree-ssa-ccp.c (ccp_initialize): Make sure to simulate
2992         stmt_ends_pp_p statements at least once.
2993         * tree-vrp.c (vrp_initialize): Likewise.
2994         (vrp_visit_stmt): Be prepared for non-interesting stmts.
2995
2996 2009-09-01  Dodji Seketeli  <dodji@redhat.com>
2997
2998         PR bootstrap/41205
2999         Fix AIX bootstrap after PR debug/30161
3000         * dwarf2out.c (make_ith_pack_parameter_name): Don't used strnlen
3001         that is a GNU extension.
3002         (tmpl_value_parm_die_table): Move the definition of this global
3003         outside #ifdef DWARF2_DEBUGGING_INFO region.
3004
3005 2009-09-01  Richard Guenther  <rguenther@suse.de>
3006
3007         * tree.c (tree_expr_size): New function.
3008         * tree.h (tree_expr_size): Declare.
3009         * rtlanal.c (rtx_addr_can_trap_p_1): Adjust comment.
3010         * builtins.c (fold_builtin_memory_op): Use tree_expr_size.
3011         * langhooks.c (lhd_expr_size): Remove.
3012         * langhooks.h (struct lang_hooks): Remove expr_size.
3013         * explow.c (expr_size): Use tree_expr_size.
3014         (int_expr_size): Likewise.
3015         * langhooks-def.h (lhd_expr_size): Remove.
3016         (LANG_HOOKS_EXPR_SIZE): Likewise.
3017         (LANG_HOOKS_INITIALIZER): Adjust.
3018
3019 2009-09-01  Richard Guenther  <rguenther@suse.de>
3020
3021         * tree-flow.h (mark_addressable): Move declaration ...
3022         * tree.h (mark_addressable): ... here.
3023         * stmt.c (expand_asm_operands): Use mark_addressable, not
3024         lang_hooks.mark_addressable.
3025         * langhooks-def.h (LANG_HOOKS_INITIALIZER): Remove
3026         LANG_HOOKS_MARK_ADDRESSABLE.
3027         * langhooks.h (struct lang_hooks): Remove mark_addressable langhook.
3028         * c-objc-common.h (LANG_HOOKS_MARK_ADDRESSABLE): Remove.
3029
3030 2009-08-31  Chris Demetriou  <cgd@google.com>
3031
3032         * config/i386/i386.c (ix86_vectorize_builtin_conversion): Never
3033         vectorize if not TARGET_SSE2.
3034
3035 2009-08-31  DJ Delorie  <dj@redhat.com>
3036
3037         * config/mep/mep.h (FUNCTION_ARG_REGNO_P): Exclude coprocessor
3038         registers if no coprocessor is enabled.
3039
3040 2009-08-31  Dodji Seketeli  <dodji@redhat.com>
3041
3042         PR debug/30161
3043         * cgraph.h (cgraph_get_node): Declare ...
3044         * cgraph.c (cgraph_get_node): ... new function.
3045         * dwarf2out.c (gen_generic_params_dies,
3046         generic_parameter_die, tree_add_const_value_attribute_for_decl,
3047         make_ith_pack_parameter_name,
3048         append_entry_to_tmpl_value_parm_die_table,
3049         gen_remaining_tmpl_value_param_die_attribute): New functions.
3050         (gen_subprogram_die): Generate debug info for template parameters
3051         if debug info level is higher than DINFO_LEVEL_TERSE.
3052         Use tree_add_const_value_attribute_for_decl instead of
3053         tree_add_const_value_attribute.
3054         (gen_const_die): Use tree_add_const_value_attribute_for_decl
3055         instead of tree_add_const_value_attribute.
3056         (gen_struct_or_union_type_die): Generate debug
3057         info for template parameters if debug info level is higher than
3058         DINFO_LEVEL_TERSE.
3059         (tree_add_const_value_attribute): Handle integral and pointer
3060         constants. Update comment.
3061         (dwarf_tag_name): Support DW_TAG_GNU_template_template_param.
3062         (dwarf_attr_name): Support DW_AT_GNU_template_name.
3063         (reference_to_unused): Fix thinko. Remove redundant predicates from
3064         tests.
3065         (tree_add_const_value_attribute): Make this work for constant
3066         expressions only.
3067         tree_add_const_value_attribute_for_decl is to be used for variable
3068         DECLs now.
3069         (add_location_or_const_value_attribute): Use
3070         tree_add_const_value_attribute_for_decl now.
3071         (dwarf2out_finish): Emit the DW_AT_const_value attribute of
3072         DW_TAG_template_value_param DIEs after function DIEs have been
3073         emitted.
3074         * langhooks.h (lang_hooks_for_types): Add
3075         get_argument_pack_elems.
3076         (lang_hooks_for_decls): Add generic_generic_parameter_decl_p.
3077         (lang_hooks): Added get_innermost_generic_parms,
3078         get_innermost_generic_args.
3079         * langhooks-def.h (LANG_HOOKS_GET_INNERMOST_GENERIC_PARMS,
3080         LANG_HOOKS_GET_INNERMOST_GENERIC_ARGS,
3081         LANG_HOOKS_GET_ARGUMENT_PACK_ELEMS,
3082         LANG_HOOKS_GENERIC_GENERIC_PARAMETER_DECL_P): New language hooks.
3083
3084 2009-08-31  DJ Delorie  <dj@redhat.com>
3085
3086         * config/mep/mep.c (machine_function): Add frame_locked flag.  Set
3087         it once we start generating the prologue or epilogue.
3088         (mep_call_saves_register): If the frame is locked, re-use
3089         cached values.
3090         (mep_assign_save_slots): New, broken out from mep_expand_prologue.
3091         (mep_expand_prologue): Call it.
3092         (mep_expand_epilogue): Likewise.
3093         (mep_start_function): Use the same logic as mep_expand_prologue.
3094         (mep_pass_by_reference): Make logic more readable.
3095         (mep_return_in_memory): Zero-sized objects are passed in memory.
3096         (mep_reorg_noframe): Make sure we have accurate REG_DEAD notes.
3097
3098 2009-08-31  Richard Guenther  <rguenther@suse.de>
3099
3100         * builtins.c (fold_builtin_memory_op): Use the alias oracle
3101         to query if the memory regions for memmove overlap.
3102         * tree-ssa-alias.c (ptr_deref_may_alias_decl_p): Relax the
3103         asserts on pointers, instead deal with odd trees.
3104         (ptr_derefs_may_alias_p): Likewise.
3105         (refs_may_alias_p_1): Constructor bases also never alias.
3106
3107 2009-08-31  Gerald Pfeifer  <gerald@pfeifer.com>
3108
3109         * doc/install.texi (Final install): Adjust reference on where to
3110         order printed manuals.
3111
3112 2009-08-30  Olivier Hainque  <hainque@adacore.com>
3113
3114         * dwarf2out.c (switch_to_frame_table_section): Move
3115         definition prior to first use.
3116
3117 2009-08-30  Richard Guenther  <rguenther@suse.de>
3118
3119         PR tree-optimization/41186
3120         * tree-ssa-alias.c (ptr_deref_may_alias_ref_p): Remove.
3121         (ao_ref_init_from_ptr_and_size): New function.
3122         (ref_maybe_used_by_call_p_1): Be more precise tracking
3123         used ranges for builtin functions.
3124         (ref_maybe_used_by_call_p): Adjust.
3125         (call_may_clobber_ref_p_1): Be more precise tracking clobbered
3126         ranges for builtin functions.
3127         * tree-ssa-alias.h (ao_ref_init_from_ptr_and_size): Declare.
3128
3129 2009-08-30  Alan Modra  <amodra@bigpond.net.au>
3130
3131         PR target/41081
3132         * fwprop.c (get_reg_use_in): Delete.
3133         (free_load_extend): New function.
3134         (forward_propagate_subreg): Use it.
3135
3136 2009-08-29  Kaz Kojima  <kkojima@gcc.gnu.org>
3137
3138         * config.gcc (sh*-*-elf): Add superh stuff only for sh*-superh-elf.
3139
3140 2009-08-29  Kai Tietz<kai.tietz@onevision.com>
3141
3142         PR/41184
3143         * config/i386.c (ix86_expand_epilogue): Correct stack adjustment for
3144         padding.
3145
3146 2009-08-29  Douglas B Rupp  <rupp@gnat.com>
3147
3148         * crtstuff.c (__do_global_dtors_aux): Use atexit if no
3149         fini or fini_array section.
3150
3151 2009-08-28  Sebastian Pop  <sebastian.pop@amd.com>
3152
3153         * graphite-dependences.c (graphite_legal_transform_bb): Call
3154         pbb_remove_duplicate_pdrs.
3155         * graphite-poly.c (can_collapse_pdr): Removed.
3156         (pdr_find_duplicate): Removed.
3157         (can_collapse_pdrs): New.
3158         (pbb_remove_duplicate_pdrs): New.
3159         (new_poly_dr): Do not look for duplicates.
3160         * graphite-poly.h (struct poly_bb): New field pdr_duplicates_removed.
3161         (PBB_PDR_DUPLICATES_REMOVED): New.
3162         (pbb_remove_duplicate_pdrs): Declared.
3163
3164 2009-08-28  Sebastian Pop  <sebastian.pop@amd.com>
3165
3166         * graphite-interchange.c (pbb_interchange_profitable_p): Adjust
3167         the strides by multiplying by PDR_NB_REFS.
3168         * graphite-poly.c (can_collapse_pdr): New.
3169         (pdr_find_duplicate): New.
3170         (new_poly_dr): Call pdr_find_duplicate.  Collapse duplicate PDRs.
3171         Initialize PDR_NB_REFS.
3172         * graphite-poly.h (struct poly_dr): Add field nb_refs.
3173         (PDR_NB_REFS): New.
3174         (new_poly_dr): Number of subscripts is a graphite_dim_t.
3175
3176 2009-08-28  Sebastian Pop  <sebastian.pop@amd.com>
3177
3178         PR middle-end/40965
3179         * graphite-poly.c (apply_poly_transforms): Remove legality test before
3180         any transform.
3181
3182 2009-08-28  Sebastian Pop  <sebastian.pop@amd.com>
3183
3184         * graphite-dependences.c (pddr_original_scattering): Return NULL
3185         for read-read dependence relations.
3186         * graphite-poly.h (enum poly_dr_type): Fix comment.
3187         (pdr_read_p): New.
3188         (pdr_write_p): New.
3189         (pdr_may_write_p): New.
3190
3191 2009-08-28  Sebastian Pop  <sebastian.pop@amd.com>
3192
3193         * graphite-poly.h (enum POLY_DR_TYPE): Renamed poly_dr_type.
3194         (struct poly_dr): Same.
3195         (new_poly_dr): Same.
3196         * graphite-poly.c (new_poly_dr): Same.
3197         * graphite-dependences.c (dot_deps): Disable call to system.
3198
3199 2009-08-28  Cary Coutant  <ccoutant@google.com>
3200
3201         PR debug/41063
3202         * dwarf2out.c (gen_type_die_with_usage): Use proper context for
3203         struct/union/enum types local to a function.
3204
3205 2009-08-28  Konrad Trifunovic  <konrad.trifunovic@gmail.com>
3206             Sebastian Pop  <sebastian.pop@amd.com>
3207
3208         * graphite-blocking.c (pbb_strip_mine_loop_depth): Renamed
3209         pbb_strip_mine_time_depth.  Changed the implementation so that
3210         transformation is expressed as a transformation on
3211         time (scatttering) dimensions.  Also, ensures that the 2d+1
3212         scheduling format is preserved.
3213         (pbb_strip_mine_profitable_p): Profitability is based on the
3214         iteration number of a given time (scattering) dimension,
3215         and not on a original loop depth dimension.
3216         (pbb_strip_mine): Call pbb_number_of_iterations_at_time.
3217         (pbb_do_strip_mine): Call psct_dynamic_dim.
3218         * graphite-poly.c (pbb_number_of_iterations_at_time): New.
3219         * graphite-poly.h (pbb_number_of_iterations_at_time): Declared.
3220         (pbb_nb_dynamic_scattering_transform): New.
3221         (psct_dynamic_dim): New.
3222
3223 2009-08-28  Konrad Trifunovic  <konrad.trifunovic@gmail.com>
3224
3225         * graphite-ppl.c (ppl_max_for_le): Renamed ppl_max_for_le_pointset.
3226         * graphite-ppl.h (ppl_max_for_le): Renamed ppl_max_for_le_pointset.
3227         * graphite-poly.c (pbb_number_of_iterations): Rename ppl_max_for_le.
3228         * graphite-interchange.c (build_linearized_memory_access): Same.
3229         (memory_stride_in_loop): Same.
3230
3231 2009-08-28  Sebastian Pop  <sebastian.pop@amd.com>
3232
3233         * graphite-dependences.c (pddr_original_scattering): New.
3234         (graphite_legal_transform_dr): Call pddr_original_scattering.
3235         (dot_deps_1): New.
3236         (dot_deps): New.
3237         * graphite-dependences.h (dot_deps): Declared.
3238         * graphite-poly.c (new_poly_dr): Initialize PDR_ID.
3239         (print_pdr): Print PDR_ID.
3240         * graphite-poly.h (struct poly_dr): Add field id.
3241         (PDR_ID): New.
3242         (pbb_index): New.
3243         * graphite-scop-detection.c (dot_all_scops_1): Cleanup comment.
3244
3245 2009-08-28  Sebastian Pop  <sebastian.pop@amd.com>
3246
3247         * graphite-dependences.c (graphite_carried_dependence_level_k): Do
3248         not delete the original dependence relation.
3249
3250 2009-08-28  Sebastian Pop  <sebastian.pop@amd.com>
3251
3252         * graphite-dependences.c (new_poly_dr_pair): Renamed new_poly_ddr.
3253         (eq_poly_dr_pair_p): Renamed eq_poly_ddr_p.
3254         (hash_poly_dr_pair_p): Renamed hash_poly_ddr_p.
3255         (free_poly_ddr): New.
3256         (pddr_is_empty): New.
3257         (dependence_polyhedron_1): Now returns a poly_ddr_p.
3258         (dependence_polyhedron): Same.  Remove useless gcc_assert.
3259         Remove fprintfs.
3260         (graphite_legal_transform_dr): Call pddr_is_empty and free_poly_ddr.
3261         (graphite_carried_dependence_level_k): Call pddr_is_empty.
3262         * graphite-dependences.h (enum poly_dependence_kind): New.
3263         (poly_dr_pair): Renamed poly_ddr.  Added a field kind.
3264         (PDRP_SOURCE): Renamed PDDR_SOURCE.
3265         (PDRP_SINK): Renamed PDDR_SINK.
3266         (PDRP_DDP): Renamed PDDR_DDP.
3267         (PDDR_KIND): New.
3268         (free_poly_ddr): Declared.
3269         * graphite-poly.c (new_scop): Use the new hash function names.
3270         * graphite-poly.h (struct scop): Renamed field original_pdr_pairs
3271         into original_pddrs.
3272         (SCOP_ORIGINAL_PDR_PAIRS): Renamed SCOP_ORIGINAL_PDDRS.
3273
3274 2009-08-28  Sebastian Pop  <sebastian.pop@amd.com>
3275
3276         * cfgloopmanip.c (create_empty_loop_on_edge): Generate upper
3277         bounds with LT_EXPR to make niter analysis more precise on code
3278         generated by Graphite.
3279
3280 2009-08-28  Sebastian Pop  <sebastian.pop@amd.com>
3281
3282         * graphite-dependences.c (graphite_legal_transform_dr): Fix formatting.
3283         (graphite_legal_transform_bb): Same.
3284         (poly_drs_may_alias_p): Same.
3285
3286 2009-08-28  Richard Guenther  <rguenther@suse.de>
3287
3288         * tree.def: Remove note about obsolete TYPE_NONCOPIED_PARTS.
3289
3290 2009-08-28  Jan Beulich  <jbeulich@novell.com>
3291
3292         * config/i386/netware.c: Include langhooks.h.
3293         (i386_nlm_encode_section_info): Simplify.
3294         (netware_override_options): Delete.
3295         * config/i386/netware.h (netware_override_options): Delete
3296         declaration.
3297         (OVERRIDE_OPTIONS): Delete definition.
3298         (SUBTARGET_OVERRIDE_OPTIONS): Define.
3299         (ASM_COMMENT_START): Define.
3300         * config/i386/nwld.h (SUBSUBTARGET_OVERRIDE_OPTIONS): Define.
3301
3302 2009-08-28  Jan Beulich  <jbeulich@novell.com>
3303
3304         * configure.ac: For in-tree ld, do a plain version check to
3305         determine whether comdat groups are supported.
3306         * configure: Regenerate.
3307
3308 2009-08-28  Olivier Hainque  <hainque@adacore.com>
3309
3310         * collect2.c (DO_COLLECT_EXPORT_LIST): New internal macro,
3311         always defined.  Reflect definition or absence of such for
3312         COLLECT_EXPORT_LIST.  Readability helper.
3313         (scanfilter): New enum, to help control what symbols
3314         are to be considered or ignored by scan_prog_file.
3315         (enum pass): Rename as "scanpass", moved together with scanfilter
3316         prior to scan_prog_file's prototype.
3317         (scan_prog_file): Accept and honor scanpass and scanfilter arguments.
3318         Group prototype with the scanpass/scanfilter definitions, factorize
3319         head comments for the several implementations at the prototype.
3320         (main): Reorganize the first pass link control to let AIX
3321         drag only the needed frame tables in executables.  Prevent
3322         frame tables collection during the scan aimed at static ctors.
3323         Pre-link and scan for frame tables later to compensate.
3324         * doc/tm.texi (ASM_OUTPUT_DWARF_TABLE_REF): New macro.
3325         A C statement to issue assembly directives that create a reference
3326         to the given DWARF table identifier label from the current function
3327         section.
3328         * dwarf2out.c (switch_to_eh_frame_section): Add a BACK argument
3329         to differentiate first time section entry.  Only emit a .data
3330         tables start identifier label the first time around.
3331         (switch_to_frame_table_section): New function.  Helper for
3332         output_call_frame_info to switch possibly BACK into the eh_frame
3333         or the debug_frame section depending on FOR_EH.
3334         (output_call_frame_info): Use helper to first enter the proper
3335         frame section.
3336         (output_fde): Use ASM_OUTPUT_DWARF_TABLE_REF when defined to
3337         emit a link to the frame table start label from each function
3338         section.
3339         * config/rs6000/rs6000.c (rs6000_aix_asm_output_dwarf_table_ref):
3340         New function.  Implementation of ASM_OUTPUT_DWARF_TABLE_REF.
3341         * config/rs6000/rs6000-protos.h: Declare it.
3342         * config/rs6000/aix.h (ASM_OUTPUT_DWARF_TABLE_REF): Define.
3343
3344 2009-08-27  Kaz Kojima  <kkojima@gcc.gnu.org>
3345
3346         * config/sh/sh.c (split_branches): Check the result of
3347         next_active_insn.
3348
3349 2009-08-27  Steve Ellcey  <sje@cup.hp.com>
3350
3351         * config/ia64/hpux.h (LIB_SPEC): Add -lrt for when
3352         using -pthread -fopenmp
3353
3354 2009-08-27  Gerald Pfeifer  <gerald@pfeifer.com>
3355
3356         * doc/service.texi (service directory): Update URL.
3357
3358 2009-08-27  Uros Bizjak  <ubizjak@gmail.com>
3359
3360         PR rtl-optimization/40861
3361         * simplify-rtx.c (simplify_subreg): Do not call simplify_gen_subreg to
3362         extract word from a multi-word subreg for negative byte positions.
3363
3364 2009-08-27  Tristan Gingold  <gingold@adacore.com>
3365             Douglas B Rupp  <rupp@gnat.com>
3366
3367         * config/ia64/ia64.c (ia64_attribute_table): Add "common_object" entry.
3368         (SECTION_VMS_OVERLAY): Define.
3369         (ia64_vms_common_object_attribute): Added.  Handle the "common_object"
3370         attribute.
3371         (ia64_vms_elf_asm_named_section): Added.  Generate .section pseudo-op
3372         for common_object.
3373         (ia64_vms_output_aligned_decl_common): Added.  Generate pseudo-op for
3374         common_object declarations.
3375         (ia64_section_type_flags): Set section flag for common_object.
3376         * config/ia64/ia64-protos.h
3377         (ia64_vms_output_aligned_decl_common): Declare.
3378         (ia64_vms_elf_asm_named_section): Declare.
3379
3380 2009-08-27  Michael Matz  <matz@suse.de>
3381
3382         * expr.c (expand_expr_real_2): New function taking exploded
3383         unary or binary expression, split out from ...
3384         (expand_expr_real_1): ... here.  Move over all unary/binary
3385         switch parts to above function, in particular these codes:
3386         PAREN_EXPR, NOP_EXPR, CONVERT_EXPR, POINTER_PLUS_EXPR, PLUS_EXPR,
3387         MINUS_EXPR, MULT_EXPR, TRUNC_DIV_EXPR, FLOOR_DIV_EXPR, CEIL_DIV_EXPR,
3388         ROUND_DIV_EXPR, EXACT_DIV_EXPR, RDIV_EXPR, TRUNC_MOD_EXPR,
3389         FLOOR_MOD_EXPR, CEIL_MOD_EXPR, ROUND_MOD_EXPR, FIXED_CONVERT_EXPR,
3390         FIX_TRUNC_EXPR, FLOAT_EXPR, NEGATE_EXPR, ABS_EXPR, MAX_EXPR, MIN_EXPR,
3391         BIT_NOT_EXPR, TRUTH_AND_EXPR, BIT_AND_EXPR, TRUTH_OR_EXPR,
3392         BIT_IOR_EXPR, TRUTH_XOR_EXPR, BIT_XOR_EXPR, LROTATE_EXPR, RROTATE_EXPR,
3393         LSHIFT_EXPR, RSHIFT_EXPR, LT_EXPR, LE_EXPR, GT_EXPR, GE_EXPR, EQ_EXPR,
3394         NE_EXPR, UNORDERED_EXPR, ORDERED_EXPR, UNLT_EXPR, UNLE_EXPR, UNGT_EXPR,
3395         UNGE_EXPR, UNEQ_EXPR, LTGT_EXPR, TRUTH_NOT_EXPR, COMPLEX_EXPR,
3396         WIDEN_SUM_EXPR, REDUC_MAX_EXPR, REDUC_MIN_EXPR, REDUC_PLUS_EXPR,
3397         VEC_EXTRACT_EVEN_EXPR, VEC_EXTRACT_ODD_EXPR, VEC_INTERLEAVE_HIGH_EXPR,
3398         VEC_INTERLEAVE_LOW_EXPR, VEC_LSHIFT_EXPR, VEC_RSHIFT_EXPR,
3399         VEC_UNPACK_HI_EXPR, VEC_UNPACK_LO_EXPR, VEC_UNPACK_FLOAT_HI_EXPR,
3400         VEC_UNPACK_FLOAT_LO_EXPR, VEC_WIDEN_MULT_HI_EXPR,
3401         VEC_WIDEN_MULT_LO_EXPR, VEC_PACK_TRUNC_EXPR, VEC_PACK_SAT_EXPR,
3402         VEC_PACK_FIX_TRUNC_EXPR.
3403         (<case PAREN_EXPR>): Call set_mem_attributes() with type, not the
3404         full expression.
3405
3406 2009-08-27  Richard Guenther  <rguenther@suse.de>
3407
3408         * gengtype.c (main): Handle uint64_t.
3409         * ipa-utils.c (get_base_var): Indent properly.
3410         * tree-ssa-live.c (debug_scope_block): New function.
3411         * tree-flow.h (debug_scope_block): Declare.
3412         * tree-ssa-copy.c (replace_exp_1): Add vertical space.
3413         * basic-block.h (enum profile_status): Rename to
3414         enum profile_status_d.
3415         (x_profile_status): Adjust type.
3416
3417 2009-08-27  Dodji Seketeli  <dodji@redhat.com>
3418
3419         PR debug/41170
3420         * dwarf2out.c (get_context_die): Declare this static function.
3421         (gen_type_die_with_usage): Make sure a DIE is a generated for
3422         the context of a typedef.
3423
3424 2009-08-26  Anatoly Sokolov  <aesok@post.ru>
3425
3426         * doc/invoke.texi (AVR Options): Remove documentation of -minit-stack
3427         switch.
3428
3429 2009-08-26  Richard Sandiford  <rdsandiford@googlemail.com>
3430
3431         * config/mips/mips-protos.h (mips_output_sync): Declare.
3432         (mips_sync_loop_insns): Likewise.
3433         (mips_output_sync_loop): Replace first two parameters with an rtx.
3434         * config/mips/mips.c (mips_multi_member): New structure.
3435         (mips_multi_members): New variable.
3436         (mips_multi_start): New function.
3437         (mips_multi_add): Likewise.
3438         (mips_multi_add_insn): Likewise.
3439         (mips_multi_add_label): Likewise.
3440         (mips_multi_last_index): Likewise.
3441         (mips_multi_copy_insn): Likewise.
3442         (mips_multi_set_operand): Likewise.
3443         (mips_multi_write): Likewise.
3444         (mips_print_operand_punctuation): Remove '%|' and '%-'.
3445         (mips_init_print_operand_punct): Update accordingly.
3446         (mips_start_ll_sc_sync_block): New function.
3447         (mips_end_ll_sc_sync_block): Likewise.
3448         (mips_output_sync): Likewise.
3449         (mips_sync_insn1_template): Likewise.
3450         (mips_sync_insn2_template): Likewise.
3451         (mips_get_sync_operand): Likewise.
3452         (mips_process_sync_loop): Likewise.
3453         (mips_output_sync_loop): Use mips_process_sync_loop.
3454         (mips_sync_loop_insns): New function.
3455         * config/mips/mips.h (MIPS_COMPARE_AND_SWAP): Delete.
3456         (MIPS_COMPARE_AND_SWAP_12): Likewise.
3457         (MIPS_COMPARE_AND_SWAP_12_ZERO_OP): Likewise.
3458         (MIPS_COMPARE_AND_SWAP_12_NONZERO_OP): Likewise.
3459         (MIPS_SYNC_OP, MIPS_SYNC_OP_12): Likewise.
3460         (MIPS_SYNC_OP_12_AND, MIPS_SYNC_OP_12_XOR): Likewise.
3461         (MIPS_SYNC_OLD_OP_12): Likewise.
3462         (MIPS_SYNC_OLD_OP_12_AND, MIPS_SYNC_OLD_OP_12_XOR): Likewise.
3463         (MIPS_SYNC_NEW_OP_12): Likewise.
3464         (MIPS_SYNC_NEW_OP_12_AND, MIPS_SYNC_NEW_OP_12_XOR): Likewise.
3465         (MIPS_SYNC_OLD_OP, MIPS_SYNC_NEW_OP): Likewise.
3466         (MIPS_SYNC_NAND, MIPS_SYNC_OLD_NAND, MIPS_SYNC_NEW_NAND): Likewise.
3467         (MIPS_SYNC_EXCHANGE, MIPS_SYNC_EXCHANGE_12): Likewise.
3468         (MIPS_SYNC_EXCHANGE_12_ZERO_OP): Likewise.
3469         (MIPS_SYNC_EXCHANGE_12_NONZER_OP): Likewise.
3470         * config/mips/mips.md (sync_mem): New attribute.
3471         (sync_oldval, sync_newval, sync_inclusive_mask): Likewise.
3472         (sync_exclusive_mask, sync_required_oldval): Likewise.
3473         (sync_insn1_op2, sync_insn1, sync_insn2): Likewise.
3474         (sync_release_barrier): Likewise.
3475         (length): Handle sync loops.
3476         (sync): Use mips_output_sync.
3477         * config/mips/sync.md (*memory_barrier): Use mips_output_sync.
3478         (sync_compare_and_swap<mode>): Set the new sync_* attributes
3479         and use mips_output_sync_loop.
3480         (compare_and_swap_12, sync_add<mode>, sync_<optab>_12): Likewise.
3481         (sync_old_<optab>_12, sync_new_<optab>_12, sync_nand_12): Likewise.
3482         (sync_old_nand_12, sync_new_nand_12, sync_sub<mode>): Likewise.
3483         (sync_old_add<mode>, sync_old_sub<mode>): Likewise.
3484         (sync_new_add<mode>, sync_new_sub<mode>): Likewise.
3485         (sync_<optab><mode>, sync_old_<optab><mode>): Likewise.
3486         (sync_new_<optab><mode>, sync_nand<mode>): Likewise.
3487         (sync_old_nand<mode>, sync_new_nand<mode>): Likewise.
3488         (sync_lock_test_and_set<mode>, test_and_set_12): Likewise.
3489
3490 2009-08-26  Richard Guenther  <rguenther@suse.de>
3491
3492         PR middle-end/41163
3493         * gimplify.c (gimplify_addr_expr): Canonicalize ADDR_EXPRs if
3494         the types to not match.
3495         * tree-cfg.c (verify_gimple_assign_single): Adjust ADDR_EXPR
3496         verification.
3497         * tree-ssa.c (useless_type_conversion_p): Conversions to
3498         pointers to unprototyped functions are useless.
3499
3500 2009-08-26  Richard Guenther  <rguenther@suse.de>
3501
3502         * tree-ssa-structalias.c (create_variable_info_for): Remove strange
3503         whole-program condition, prepare to be called for non-globals.
3504         (intra_create_variable_infos): For restrict qualified DECL_BY_REFERENCE
3505         params build a representative with known type and track its fields.
3506
3507 2009-08-26  Uros Bizjak  <ubizjak@gmail.com>
3508
3509         * config/alpha/sync.md: Update comment about unpredictable LL/SC lock
3510         clearing by a taken branch.
3511         (sync_<fetchop_name><mode>): Split when epilogue_completed is set,
3512         effectively after bbro pass.
3513         (sync_nand<mode>): Ditto.
3514         (sync_old_<fetchop_name><mode>): Ditto.
3515         (sync_old_nand<mode>): Ditto.
3516         (sync_new_<fetchop_name><mode>): Dito.
3517         (sync_new_nand<mode>): Ditto.
3518         (sync_compare_and_swap<mode>_1): Ditto.
3519         (*sync_compare_and_swap<mode>): Ditto.
3520         (sync_lock_test_and_set<mode>_1): Ditto.
3521         ("sync_lock_test_and_set<mode>): Ditto.
3522
3523 2009-08-25  Douglas B Rupp  <rupp@gnat.com>
3524
3525         * hwint.h (HOST_LONG_FORMAT): New macro
3526         * bitmap.c, c-decl.c, mips-tfile.c, print-rtl.c, print-tree.c:
3527         Use HOST_PTR_PRINTF.
3528         * system.h (HOST_PTR_PRINTF): Resurrect old macro
3529         * doc/hostconfig.texi (HOST_LONG_FORMAT): Document.
3530         (HOST_PTR_PRINTF): Document.
3531
3532 2009-08-25 Jan Hubicka  <jh@suse.cz>
3533
3534         * config/i386/bmmintrin.h: Replace by #error.
3535
3536         Revert:
3537         Michael Meissner  <michael.meissner@amd.com>
3538         Dwarakanath Rajagopal  <dwarak.rajagopal@amd.com>
3539         Tony Linthicum  <tony.linthicum@amd.com>
3540
3541         * config/i386/i386.h (TARGET_SSE5): New macro for SSE5.
3542         (TARGET_ROUND): New macro for the round/ptest instructions which
3543         are shared between SSE4.1 and SSE5.
3544         (OPTION_MASK_ISA_ROUND): Ditto.
3545         (OPTION_ISA_ROUND): Ditto.
3546         (TARGET_FUSED_MADD): New macro for -mfused-madd swtich.
3547         (TARGET_CPU_CPP_BUILTINS): Add SSE5 support.
3548
3549         * config/i386/i386.opt (-msse5): New switch for SSE5 support.
3550         (-mfused-madd): New switch to give users control over whether the
3551         compiler optimizes to use the multiply/add SSE5 instructions.
3552
3553         * config/i386/i386.c (enum pta_flags): Add PTA_SSE5.
3554         (ix86_handle_option): Turn off 3dnow if -msse5.
3555         (override_options): Add SSE5 support.
3556         (print_operand): %Y prints comparison codes for SSE5 com/pcom
3557         instructions.
3558         (ix86_expand_sse_movcc): Add SSE5 support.
3559         (ix86_expand_sse5_unpack): New function to use pperm to unpack a
3560         vector type to the next largest size.
3561         (ix86_expand_sse5_pack): New function to use pperm to pack a
3562         vector type to the next smallest size.
3563         (IX86_BUILTIN_FMADDSS): New for SSE5 intrinsic.
3564         (IX86_BUILTIN_FMADDSD): Ditto.
3565         (IX86_BUILTIN_FMADDPS): Ditto.
3566         (IX86_BUILTIN_FMADDPD): Ditto.
3567         (IX86_BUILTIN_FMSUBSS): Ditto.
3568         (IX86_BUILTIN_FMSUBSD): Ditto.
3569         (IX86_BUILTIN_FMSUBPS): Ditto.
3570         (IX86_BUILTIN_FMSUBPD): Ditto.
3571         (IX86_BUILTIN_FNMADDSS): Ditto.
3572         (IX86_BUILTIN_FNMADDSD): Ditto.
3573         (IX86_BUILTIN_FNMADDPS): Ditto.
3574         (IX86_BUILTIN_FNMADDPD): Ditto.
3575         (IX86_BUILTIN_FNMSUBSS): Ditto.
3576         (IX86_BUILTIN_FNMSUBSD): Ditto.
3577         (IX86_BUILTIN_FNMSUBPS): Ditto.
3578         (IX86_BUILTIN_FNMSUBPD): Ditto.
3579         (IX86_BUILTIN_PCMOV_V2DI): Ditto.
3580         (IX86_BUILTIN_PCMOV_V4SI): Ditto.
3581         (IX86_BUILTIN_PCMOV_V8HI): Ditto.
3582         (IX86_BUILTIN_PCMOV_V16QI): Ditto.
3583         (IX86_BUILTIN_PCMOV_V4SF): Ditto.
3584         (IX86_BUILTIN_PCMOV_V2DF): Ditto.
3585         (IX86_BUILTIN_PPERM): Ditto.
3586         (IX86_BUILTIN_PERMPS): Ditto.
3587         (IX86_BUILTIN_PERMPD): Ditto.
3588         (IX86_BUILTIN_PMACSSWW): Ditto.
3589         (IX86_BUILTIN_PMACSWW): Ditto.
3590         (IX86_BUILTIN_PMACSSWD): Ditto.
3591         (IX86_BUILTIN_PMACSWD): Ditto.
3592         (IX86_BUILTIN_PMACSSDD): Ditto.
3593         (IX86_BUILTIN_PMACSDD): Ditto.
3594         (IX86_BUILTIN_PMACSSDQL): Ditto.
3595         (IX86_BUILTIN_PMACSSDQH): Ditto.
3596         (IX86_BUILTIN_PMACSDQL): Ditto.
3597         (IX86_BUILTIN_PMACSDQH): Ditto.
3598         (IX86_BUILTIN_PMADCSSWD): Ditto.
3599         (IX86_BUILTIN_PMADCSWD): Ditto.
3600         (IX86_BUILTIN_PHADDBW): Ditto.
3601         (IX86_BUILTIN_PHADDBD): Ditto.
3602         (IX86_BUILTIN_PHADDBQ): Ditto.
3603         (IX86_BUILTIN_PHADDWD): Ditto.
3604         (IX86_BUILTIN_PHADDWQ): Ditto.
3605         (IX86_BUILTIN_PHADDDQ): Ditto.
3606         (IX86_BUILTIN_PHADDUBW): Ditto.
3607         (IX86_BUILTIN_PHADDUBD): Ditto.
3608         (IX86_BUILTIN_PHADDUBQ): Ditto.
3609         (IX86_BUILTIN_PHADDUWD): Ditto.
3610         (IX86_BUILTIN_PHADDUWQ): Ditto.
3611         (IX86_BUILTIN_PHADDUDQ): Ditto.
3612         (IX86_BUILTIN_PHSUBBW): Ditto.
3613         (IX86_BUILTIN_PHSUBWD): Ditto.
3614         (IX86_BUILTIN_PHSUBDQ): Ditto.
3615         (IX86_BUILTIN_PROTB): Ditto.
3616         (IX86_BUILTIN_PROTW): Ditto.
3617         (IX86_BUILTIN_PROTD): Ditto.
3618         (IX86_BUILTIN_PROTQ): Ditto.
3619         (IX86_BUILTIN_PROTB_IMM): Ditto.
3620         (IX86_BUILTIN_PROTW_IMM): Ditto.
3621         (IX86_BUILTIN_PROTD_IMM): Ditto.
3622         (IX86_BUILTIN_PROTQ_IMM): Ditto.
3623         (IX86_BUILTIN_PSHLB): Ditto.
3624         (IX86_BUILTIN_PSHLW): Ditto.
3625         (IX86_BUILTIN_PSHLD): Ditto.
3626         (IX86_BUILTIN_PSHLQ): Ditto.
3627         (IX86_BUILTIN_PSHAB): Ditto.
3628         (IX86_BUILTIN_PSHAW): Ditto.
3629         (IX86_BUILTIN_PSHAD): Ditto.
3630         (IX86_BUILTIN_PSHAQ): Ditto.
3631         (IX86_BUILTIN_FRCZSS): Ditto.
3632         (IX86_BUILTIN_FRCZSD): Ditto.
3633         (IX86_BUILTIN_FRCZPS): Ditto.
3634         (IX86_BUILTIN_FRCZPD): Ditto.
3635         (IX86_BUILTIN_CVTPH2PS): Ditto.
3636         (IX86_BUILTIN_CVTPS2PH): Ditto.
3637         (IX86_BUILTIN_COMEQSS): Ditto.
3638         (IX86_BUILTIN_COMNESS): Ditto.
3639         (IX86_BUILTIN_COMLTSS): Ditto.
3640         (IX86_BUILTIN_COMLESS): Ditto.
3641         (IX86_BUILTIN_COMGTSS): Ditto.
3642         (IX86_BUILTIN_COMGESS): Ditto.
3643         (IX86_BUILTIN_COMUEQSS): Ditto.
3644         (IX86_BUILTIN_COMUNESS): Ditto.
3645         (IX86_BUILTIN_COMULTSS): Ditto.
3646         (IX86_BUILTIN_COMULESS): Ditto.
3647         (IX86_BUILTIN_COMUGTSS): Ditto.
3648         (IX86_BUILTIN_COMUGESS): Ditto.
3649         (IX86_BUILTIN_COMORDSS): Ditto.
3650         (IX86_BUILTIN_COMUNORDSS): Ditto.
3651         (IX86_BUILTIN_COMFALSESS): Ditto.
3652         (IX86_BUILTIN_COMTRUESS): Ditto.
3653         (IX86_BUILTIN_COMEQSD): Ditto.
3654         (IX86_BUILTIN_COMNESD): Ditto.
3655         (IX86_BUILTIN_COMLTSD): Ditto.
3656         (IX86_BUILTIN_COMLESD): Ditto.
3657         (IX86_BUILTIN_COMGTSD): Ditto.
3658         (IX86_BUILTIN_COMGESD): Ditto.
3659         (IX86_BUILTIN_COMUEQSD): Ditto.
3660         (IX86_BUILTIN_COMUNESD): Ditto.
3661         (IX86_BUILTIN_COMULTSD): Ditto.
3662         (IX86_BUILTIN_COMULESD): Ditto.
3663         (IX86_BUILTIN_COMUGTSD): Ditto.
3664         (IX86_BUILTIN_COMUGESD): Ditto.
3665         (IX86_BUILTIN_COMORDSD): Ditto.
3666         (IX86_BUILTIN_COMUNORDSD): Ditto.
3667         (IX86_BUILTIN_COMFALSESD): Ditto.
3668         (IX86_BUILTIN_COMTRUESD): Ditto.
3669         (IX86_BUILTIN_COMEQPS): Ditto.
3670         (IX86_BUILTIN_COMNEPS): Ditto.
3671         (IX86_BUILTIN_COMLTPS): Ditto.
3672         (IX86_BUILTIN_COMLEPS): Ditto.
3673         (IX86_BUILTIN_COMGTPS): Ditto.
3674         (IX86_BUILTIN_COMGEPS): Ditto.
3675         (IX86_BUILTIN_COMUEQPS): Ditto.
3676         (IX86_BUILTIN_COMUNEPS): Ditto.
3677         (IX86_BUILTIN_COMULTPS): Ditto.
3678         (IX86_BUILTIN_COMULEPS): Ditto.
3679         (IX86_BUILTIN_COMUGTPS): Ditto.
3680         (IX86_BUILTIN_COMUGEPS): Ditto.
3681         (IX86_BUILTIN_COMORDPS): Ditto.
3682         (IX86_BUILTIN_COMUNORDPS): Ditto.
3683         (IX86_BUILTIN_COMFALSEPS): Ditto.
3684         (IX86_BUILTIN_COMTRUEPS): Ditto.
3685         (IX86_BUILTIN_COMEQPD): Ditto.
3686         (IX86_BUILTIN_COMNEPD): Ditto.
3687         (IX86_BUILTIN_COMLTPD): Ditto.
3688         (IX86_BUILTIN_COMLEPD): Ditto.
3689         (IX86_BUILTIN_COMGTPD): Ditto.
3690         (IX86_BUILTIN_COMGEPD): Ditto.
3691         (IX86_BUILTIN_COMUEQPD): Ditto.
3692         (IX86_BUILTIN_COMUNEPD): Ditto.
3693         (IX86_BUILTIN_COMULTPD): Ditto.
3694         (IX86_BUILTIN_COMULEPD): Ditto.
3695         (IX86_BUILTIN_COMUGTPD): Ditto.
3696         (IX86_BUILTIN_COMUGEPD): Ditto.
3697         (IX86_BUILTIN_COMORDPD): Ditto.
3698         (IX86_BUILTIN_COMUNORDPD): Ditto.
3699         (IX86_BUILTIN_COMFALSEPD): Ditto.
3700         (IX86_BUILTIN_COMTRUEPD): Ditto.
3701         (IX86_BUILTIN_PCOMEQUB): Ditto.
3702         (IX86_BUILTIN_PCOMNEUB): Ditto.
3703         (IX86_BUILTIN_PCOMLTUB): Ditto.
3704         (IX86_BUILTIN_PCOMLEUB): Ditto.
3705         (IX86_BUILTIN_PCOMGTUB): Ditto.
3706         (IX86_BUILTIN_PCOMGEUB): Ditto.
3707         (IX86_BUILTIN_PCOMFALSEUB): Ditto.
3708         (IX86_BUILTIN_PCOMTRUEUB): Ditto.
3709         (IX86_BUILTIN_PCOMEQUW): Ditto.
3710         (IX86_BUILTIN_PCOMNEUW): Ditto.
3711         (IX86_BUILTIN_PCOMLTUW): Ditto.
3712         (IX86_BUILTIN_PCOMLEUW): Ditto.
3713         (IX86_BUILTIN_PCOMGTUW): Ditto.
3714         (IX86_BUILTIN_PCOMGEUW): Ditto.
3715         (IX86_BUILTIN_PCOMFALSEUW): Ditto.
3716         (IX86_BUILTIN_PCOMTRUEUW): Ditto.
3717         (IX86_BUILTIN_PCOMEQUD): Ditto.
3718         (IX86_BUILTIN_PCOMNEUD): Ditto.
3719         (IX86_BUILTIN_PCOMLTUD): Ditto.
3720         (IX86_BUILTIN_PCOMLEUD): Ditto.
3721         (IX86_BUILTIN_PCOMGTUD): Ditto.
3722         (IX86_BUILTIN_PCOMGEUD): Ditto.
3723         (IX86_BUILTIN_PCOMFALSEUD): Ditto.
3724         (IX86_BUILTIN_PCOMTRUEUD): Ditto.
3725         (IX86_BUILTIN_PCOMEQUQ): Ditto.
3726         (IX86_BUILTIN_PCOMNEUQ): Ditto.
3727         (IX86_BUILTIN_PCOMLTUQ): Ditto.
3728         (IX86_BUILTIN_PCOMLEUQ): Ditto.
3729         (IX86_BUILTIN_PCOMGTUQ): Ditto.
3730         (IX86_BUILTIN_PCOMGEUQ): Ditto.
3731         (IX86_BUILTIN_PCOMFALSEUQ): Ditto.
3732         (IX86_BUILTIN_PCOMTRUEUQ): Ditto.
3733         (IX86_BUILTIN_PCOMEQB): Ditto.
3734         (IX86_BUILTIN_PCOMNEB): Ditto.
3735         (IX86_BUILTIN_PCOMLTB): Ditto.
3736         (IX86_BUILTIN_PCOMLEB): Ditto.
3737         (IX86_BUILTIN_PCOMGTB): Ditto.
3738         (IX86_BUILTIN_PCOMGEB): Ditto.
3739         (IX86_BUILTIN_PCOMFALSEB): Ditto.
3740         (IX86_BUILTIN_PCOMTRUEB): Ditto.
3741         (IX86_BUILTIN_PCOMEQW): Ditto.
3742         (IX86_BUILTIN_PCOMNEW): Ditto.
3743         (IX86_BUILTIN_PCOMLTW): Ditto.
3744         (IX86_BUILTIN_PCOMLEW): Ditto.
3745         (IX86_BUILTIN_PCOMGTW): Ditto.
3746         (IX86_BUILTIN_PCOMGEW): Ditto.
3747         (IX86_BUILTIN_PCOMFALSEW): Ditto.
3748         (IX86_BUILTIN_PCOMTRUEW): Ditto.
3749         (IX86_BUILTIN_PCOMEQD): Ditto.
3750         (IX86_BUILTIN_PCOMNED): Ditto.
3751         (IX86_BUILTIN_PCOMLTD): Ditto.
3752         (IX86_BUILTIN_PCOMLED): Ditto.
3753         (IX86_BUILTIN_PCOMGTD): Ditto.
3754         (IX86_BUILTIN_PCOMGED): Ditto.
3755         (IX86_BUILTIN_PCOMFALSED): Ditto.
3756         (IX86_BUILTIN_PCOMTRUED): Ditto.
3757         (IX86_BUILTIN_PCOMEQQ): Ditto.
3758         (IX86_BUILTIN_PCOMNEQ): Ditto.
3759         (IX86_BUILTIN_PCOMLTQ): Ditto.
3760         (IX86_BUILTIN_PCOMLEQ): Ditto.
3761         (IX86_BUILTIN_PCOMGTQ): Ditto.
3762         (IX86_BUILTIN_PCOMGEQ): Ditto.
3763         (IX86_BUILTIN_PCOMFALSEQ): Ditto.
3764         (IX86_BUILTIN_PCOMTRUEQ): Ditto.
3765         (enum multi_arg_type): New enum for describing the various SSE5
3766         intrinsic argument types.
3767         (bdesc_multi_arg): New table for SSE5 intrinsics.
3768         (ix86_init_mmx_sse_builtins): Add SSE5 intrinsic support.
3769         (ix86_expand_multi_arg_builtin): New function for creating SSE5
3770         intrinsics.
3771         (ix86_expand_builtin): Add SSE5 intrinsic support.
3772         (ix86_sse5_valid_op_p): New function to validate SSE5 3 and 4
3773         operand instructions.
3774         (ix86_expand_sse5_multiple_memory): New function to split the
3775         second memory reference from SSE5 instructions.
3776         (type_has_variadic_args_p): Delete in favor of stdarg_p.
3777         (ix86_return_pops_args): Use stdarg_p to determine if the function
3778         has variable arguments.
3779         (ix86_setup_incoming_varargs): Ditto.
3780         (x86_this_parameter): Ditto.
3781
3782         * config/i386/i386-protos.h (ix86_expand_sse5_unpack): Add
3783         declaration.
3784         (ix86_expand_sse5_pack): Ditto.
3785         (ix86_sse5_valid_op_p): Ditto.
3786         (ix86_expand_sse5_multiple_memory): Ditto.
3787
3788         * config/i386/i386.md (UNSPEC_SSE5_INTRINSIC): Add new UNSPEC
3789         constant for SSE5 support.
3790         (UNSPEC_SSE5_UNSIGNED_CMP): Ditto.
3791         (UNSPEC_SSE5_TRUEFALSE): Ditto.
3792         (UNSPEC_SSE5_PERMUTE): Ditto.
3793         (UNSPEC_SSE5_ASHIFT): Ditto.
3794         (UNSPEC_SSE5_LSHIFT): Ditto.
3795         (UNSPEC_FRCZ): Ditto.
3796         (UNSPEC_CVTPH2PS): Ditto.
3797         (UNSPEC_CVTPS2PH): Ditto.
3798         (PCOM_FALSE): Add new constant for true/false SSE5 comparisons.
3799         (PCOM_TRUE): Ditto.
3800         (COM_FALSE_S): Ditto.
3801         (COM_FALSE_P): Ditto.
3802         (COM_TRUE_S): Ditto.
3803         (COM_TRUE_P): Ditto.
3804         (type attribute): Add ssemuladd, sseiadd1, ssecvt1, sse4arg types.
3805         (unit attribute): Add support for ssemuladd, ssecvt1, sseiadd1 sse4arg
3806         types.
3807         (memory attribute): Ditto.
3808         (sse4_1_round<mode>2): Use TARGET_ROUND instead of TARGET_SSE4_1.
3809         Use SSE4_1_ROUND_* constants instead of hard coded numbers.
3810         (rint<mode>2): Use TARGET_ROUND instead of TARGET_SSE4_1.
3811         (floor<mode>2): Ditto.
3812         (ceil<mode>2): Ditto.
3813         (btrunc<mode>2): Ditto.
3814         (nearbyintdf2): Ditto.
3815         (nearbyintsf2): Ditto.
3816         (sse_setccsf): Disable if SSE5.
3817         (sse_setccdf): Ditto.
3818         (sse5_setcc<mode>): New support for SSE5 conditional move.
3819         (sse5_pcmov_<mode>): Ditto.
3820
3821         * config/i386/sse.md (SSEMODE1248): New mode iterator for SSE5.
3822         (SSEMODEF4): Ditto.
3823         (SSEMODEF2P): Ditto.
3824         (ssemodesuffixf4): New mode attribute for SSE5.
3825         (ssemodesuffixf2s): Ditto.
3826         (ssemodesuffixf2c): Ditto.
3827         (sserotatemax): Ditto.
3828         (ssescalarmode): Ditto.
3829         (sse_maskcmpv4sf3): Disable if SSE5.
3830         (sse_maskcmpv2df3): Ditto.
3831         (sse_vmmaskcmpv4sf3): Ditto.
3832         (sse5_fmadd<mode>4): Add SSE5 floating point multiply/add instructions.
3833         (sse5_vmfmadd<mode>4): Ditto.
3834         (sse5_fmsub<mode>4): Ditto.
3835         (sse5_vmfmsub<mode>4): Ditto.
3836         (sse5_fnmadd<mode>4): Ditto.
3837         (sse5_vmfnmadd<mode>4): Ditto.
3838         (sse5_fnmsub<mode>4): Ditto.
3839         (sse5_vmfnmsub<mode>4): Ditto.
3840         (sse5i_fmadd<mode>4): Ditto.
3841         (sse5i_fmsub<mode>4): Ditto.
3842         (sse5i_fnmadd<mode>4): Ditto.
3843         (sse5i_fnmsub<mode>4): Ditto.
3844         (sse5i_vmfmadd<mode>4): Ditto.
3845         (sse5i_vmfmsub<mode>4): Ditto.
3846         (sse5i_vmfnmadd<mode>4): Ditto.
3847         (sse5i_vmfnmsub<mode>4): Ditto.
3848         (mulv16qi3): Add SSE5 support.
3849         (mulv4si3): Ditto.
3850         (sse5_mulv4si3): New insn for 32-bit multiply support on SSE5.
3851         (sse2_mulv4si3): Disable if SSE5.
3852         (sse4_1_roundpd): Use TARGET_ROUND instead of TARGET_SSE4_1.
3853         (sse4_1_roundps): Ditto.
3854         (sse4_1_roundsd): Ditto.
3855         (sse4_1_roundss): Ditto.
3856         (sse_maskcmpv4sf3): Disable if SSE5 so the SSE5 instruction will
3857         be generated.
3858         (sse_maskcmpsf3): Ditto.
3859         (sse_vmmaskcmpv4sf3): Ditto.
3860         (sse2_maskcmpv2df3): Ditto.
3861         (sse2_maskcmpdf3): Ditto.
3862         (sse2_vmmaskcmpv2df3): Ditto.
3863         (sse2_eq<mode>3): Ditto.
3864         (sse2_gt<mode>3): Ditto.
3865         (sse5_pcmov_<mode>): Add SSE5 support.
3866         (vec_unpacku_hi_v16qi): Ditto.
3867         (vec_unpacks_hi_v16qi): Ditto.
3868         (vec_unpacku_lo_v16qi): Ditto.
3869         (vec_unpacks_lo_v16qi): Ditto.
3870         (vec_unpacku_hi_v8hi): Ditto.
3871         (vec_unpacks_hi_v8hi): Ditto.
3872         (vec_unpacku_lo_v8hi): Ditto.
3873         (vec_unpacks_lo_v8hi): Ditto.
3874         (vec_unpacku_hi_v4si): Ditto.
3875         (vec_unpacks_hi_v4si): Ditto.
3876         (vec_unpacku_lo_v4si): Ditto.
3877         (vec_unpacks_lo_v4si): Ditto.
3878         (sse5_pmacsww): New SSE5 intrinsic insn.
3879         (sse5_pmacssww): Ditto.
3880         (sse5_pmacsdd): Ditto.
3881         (sse5_pmacssdd): Ditto.
3882         (sse5_pmacssdql): Ditto.
3883         (sse5_pmacssdqh): Ditto.
3884         (sse5_pmacsdqh): Ditto.
3885         (sse5_pmacsswd): Ditto.
3886         (sse5_pmacswd): Ditto.
3887         (sse5_pmadcsswd): Ditto.
3888         (sse5_pmadcswd): Ditto.
3889         (sse5_pcmov_<move>): Conditional move support on SSE5.
3890         (sse5_phaddbw): New SSE5 intrinsic insn.
3891         (sse5_phaddbd): Ditto.
3892         (sse5_phaddbq): Ditto.
3893         (sse5_phaddwd): Ditto.
3894         (sse5_phaddwq): Ditto.
3895         (sse5_phadddq): Ditto.
3896         (sse5_phaddubw): Ditto.
3897         (sse5_phaddubd): Ditto.
3898         (sse5_phaddubq): Ditto.
3899         (sse5_phadduwd): Ditto.
3900         (sse5_phadduwq): Ditto.
3901         (sse5_phaddudq): Ditto.
3902         (sse5_phsubbw): Ditto.
3903         (sse5_phsubwd): Ditto.
3904         (sse5_phsubdq): Ditto.