OSDN Git Service

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