OSDN Git Service

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