OSDN Git Service

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