OSDN Git Service

* system.h: Activate -Wcast-qual as warning-only.
[pf3gnuchains/gcc-fork.git] / gcc / ChangeLog
1 2007-08-29  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
2
3         * system.h: Activate -Wcast-qual as warning-only.
4
5 2007-08-29  Paolo Bonzini  <bonzini@gnu.org>
6
7         PR target/33168
8         * config/rs6000/rs6000.c (compare_section_name): New function.
9         (rs6000_elf_in_small_data_p): Compare section prefixes instead
10         of full name.
11
12 2007-08-29  Olivier Hainque  <hainque@adacore.com>
13
14         * xcoffout.c: #include debug.h.
15         * Makefile.in (xcoffout.o): Add debug.h dependency.
16
17 2007-08-29  Uros Bizjak  <ubizjak@gmail.com>
18
19         * simplify-rtx.c (simplify_binary_operation_1) [VEC_SELECT]:
20         Change CONST_VECTOR_ELT to XVECEXP in elem calculation.
21
22 2007-08-29  Richard Guenther  <rguenther@suse.de>
23
24         * tree-pretty-print.c (dump_generic_node): Print
25         label DECL_UID as D.%u.
26         * tree-dfa.c (dump_variable): Print DECL_UID as D.%u.
27
28 2007-08-29  Francois-Xavier Coudert  <fxcoudert@gcc.gnu.org>
29
30         * gcc/builtin-types.def (BT_FN_PTR_PTR_SIZE): New type.
31         * gcc/builtins.def (BUILT_IN_REALLOC): New builtin.
32
33 2007-08-29  Douglas Gregor  <doug.gregor@gmail.com>
34
35         PR c++/33194
36         * tree.c (build_type_attribute_qual_variant): Set canonical types
37         on the final, unqualified attribute variant before building the
38         qualified version.
39
40 2007-08-29  Jie Zhang  <jie.zhang@analog.com>
41
42         * config/bfin/bfin.c (bfin_expand_builtin): Fix the argument
43         order of __builtin_bfin_cmplx_mac and __builtin_bfin_cmplx_msu.
44
45 2007-08-29  Jie Zhang  <jie.zhang@analog.com>
46
47         Revert
48         2007-08-29  Jie Zhang  <jie.zhang@analog.com>
49         * config/bfin/bfin.md (composev2hi): Put operands into vector
50         with correct order.
51
52 2007-08-29  Jie Zhang  <jie.zhang@analog.com>
53
54         * config/bfin/bfin.md (composev2hi): Put operands into vector
55         with correct order.
56
57 2007-08-29  Jie Zhang  <jie.zhang@analog.com>
58
59         * config/bfin/bfin.c (bfin_expand_call): Inline PLT with l1_text
60         attribute when appropriate.
61         (bfin_handle_l1_text_attribute): New.
62         (bfin_handle_l1_data_attribute): New.
63         (bfin_attribute_table): Add attributes: l1_text, l1_data,
64         l1_data_A and l1_data_B.
65         * doc/extend.texi (node Function Attributes): Document l1_text
66         function attribute.
67         (Variable Attributes): Add Blackfin subsection. Document l1_data,
68         l1_data_A and l1_data_B variable attributes.
69
70 2007-08-28  Jie Zhang  <jie.zhang@analog.com>
71
72         * config/bfin/bfin.opt (minline-plt): Add.
73         * config/bfin/bfin.c (bfin_expand_call): Inline PLT when emit
74         call to global functions.
75         * doc/invoke.texi (Option Summary): Mention -minline-plt.
76         (Blackfin Options): Document -minline-plt.
77
78 2007-08-28  Nathan Sidwell  <nathan@codesourcery.com>
79
80         * config/m68k/m68k.c (m68k_get_function_kind): Assert we're never
81         given a non-function.
82         (m68k_ok_for_sibcall_p): Only sibcall functions of the same kind.
83
84 2007-08-28  DJ Delorie  <dj@redhat.com>
85
86         * config/sh/sh.c (sh_gimplify_va_arg_expr): Fix sh2a support.
87
88 2007-08-28  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
89
90         * system.h (CONST_CAST): Avoid union for gcc-4.0.x.
91
92 2007-08-28  Richard Guenther  <rguenther@suse.de>
93
94         * tree.h (struct tree_function_decl): Increase size of
95         function_code bitfield.
96
97 2007-08-28  Nathan Sidwell  <nathan@codesourcery.com>
98             Kazu Hirata  <kazu@codesourcery.com>
99
100         * gcc/config/m68k/linux.h
101         (M68K_HONOR_TARGET_STRICT_ALIGNMENT): Redefine as 0.
102         * config/m68k/m68k.c (TARGET_RETURN_IN_MEMORY): New.
103         (m68k_return_in_memory): New.
104         * gcc/config/m68k/m68k.h (M68K_HONOR_TARGET_STRICT_ALIGNMENT):
105         New.
106
107 2007-08-28  Uros Bizjak  <ubizjak@gmail.com>
108
109         PR target/32661
110         * simplify-rtx.c (simplify_binary_operation_1) [VEC_SELECT]:
111         Simplify nested VEC_SELECT (with optional VEC_CONCAT operator as
112         operand) when top VEC_SELECT extracts scalar element.
113         * config/i386/sse.md (*vec_extract_v4si_mem): New pattern.
114         (*vec_extract_v4sf_mem): Ditto.
115
116 2007-08-28  Jakub Jelinek  <jakub@redhat.com>
117
118         PR middle-end/32370
119         * passes.c (init_optimization_passes): Move pass_df_finish
120         after pass_postreload sublist.
121
122         PR rtl-optimization/33148
123         * simplify-rtx.c (simplify_unary_operation_1): Only optimize
124         (neg (lt X 0)) if X has scalar int mode.
125
126         PR debug/32914
127         * dwarf2out.c (rtl_for_decl_init): If vector decl has CONSTRUCTOR
128         initializer, use build_vector_from_ctor if possible to create
129         VECTOR_CST out of it.  If vector initializer is not VECTOR_CST
130         even after this, return NULL.
131
132 2007-08-28  Gabriel Dos Reis  <gdr@integrable-solutions.net>
133
134         * c-pretty-print.c (pp_c_constant): Handle COMPLEX_CST.
135
136 2007-08-28  Richard Guenther  <rguenther@suse.de>
137
138         * tree.h (DECL_DISREGARD_INLINE_LIMITS): New.
139         (struct tree_function_decl): Make function_code a bitfield.
140         Add disregard_inline_limits flag.
141         * cgraphunit.c (cgraph_process_new_functions): Check
142         DECL_DISREGARD_INLINE_LIMITS instead of disregard_inline_limits_p.
143         (cgraph_preserve_function_body_p): Likewise.
144         * ipa-inline.c (compute_inline_parameters): Likewise.
145         * c-decl.c (finish_function): Set DECL_DISREGARD_INLINE_LIMITS
146         for GNU C extern inline functions.
147         (merge_decls): Merge DECL_DISREGARD_INLINE_LIMITS.
148         * tree-inline.c (disregard_inline_limits_p): Remove.
149         * tree-inline.h (disregard_inline_limits_p): Likewise.
150         * c-common.c (handle_always_inline_attribute): Set
151         DECL_DISREGARD_INLINE_LIMITS.
152         * langhooks.c (add_builtin_function): Verify the function code
153         fits in the bitfield.
154
155 2007-08-28  Mircea Namolaru  <namolaru@il.ibm.com>
156             Vladimir Yanovsky  <yanov@il.ibm.com>
157             Revital Eres  <eres@il.ibm.com>
158             Andrey Belevantsev  <abel@ispras.ru>
159
160         * config/spu/spu.md: Recognize doloop pattern when -fmodulo-sched
161         is set.
162         * modulo-sched.c: Add documentation regarding do-loop.
163         (doloop_register_get): Change number of arguments to support
164         the new do-loop pattern and check whether COUNT_REG has no other
165         occurences in the loop besides in the control part.
166         (duplicate_insns_of_cycles): Do not duplicate the insn which
167         changes count_reg as it is already adjusted.
168         (generate_prolog_epilog): New argument to support the new
169         do-loop pattern.  Change the subtract instruction to use
170         expand_simple_binop.  Call duplicate_insns_of_cycles with new
171         argument.
172         (sms_schedule): Call doloop_register_get and
173         generate_prolog_epilog with new argument.  Do not handle loops
174         with single sets insns with subreg in their lhs.
175         * loop-doloop.c (doloop_optimize): Support for another do-loop
176         pattern.
177         (doloop_condition_get): Gets an instruction instead of a pattern
178         and change the return condition when the do-loop pattern is
179         not parallel.
180         * ddg.c (create_ddg_dep_from_intra_loop_link): Handle only reg
181         deps when considering to not create edges.
182
183 2007-08-27  Alexandre Oliva  <aoliva@redhat.com>
184
185         * doc/extend.texi (gnu_inline funtion attribute): Document C++
186         behavior.
187
188 2007-08-27  Jason Merrill  <jason@redhat.com>
189
190         PR c++/31337
191         * gimplify.c (gimplify_modify_expr): Discard the assignment of 
192         zero-sized types after calling gimplify_modify_expr_rhs.
193
194 2007-08-27  Sandra Loosemore  <sandra@codesourcery.com>
195
196         * regclass.c (init_reg_autoinc): Fix typo.
197
198 2007-08-27  Daniel Berlin  <dberlin@dberlin.org>
199         
200         Fix PR tree-optimization/33173
201         * tree-ssa-alias.c (find_used_portions): Fix reversed test.
202
203 2007-08-27  H.J. Lu  <hongjiu.lu@intel.com>
204
205         PR target/31385
206         * config/i386/i386.h (VALID_DFP_MODE_P): New.
207         * config/i386/i386.c (ix86_hard_regno_mode_ok): Allow DFP in
208         GPR.
209
210 2007-08-27  Sandra Loosemore  <sandra@codesourcery.com>
211             David Ung  <davidu@mips.com>
212             Nigel Stephens <nigel@mips.com>
213
214         Separate target-specific initialization from general
215         back-end initialization.
216
217         * toplev.c (init_alignments): New, split out from...
218         (process_options): ...here.
219         (backend_init_target):  New, split out from...
220         (backend_init): ...here.
221         (lang_dependent_init_target):  New, split out from...
222         (lang_dependent_init): ...here.
223         (target_reinit): New.
224         * toplev.h (target_reinit): Declare.
225         * expr.c (init_expr_target): Renamed from init_expr_once, since it
226         now can be called more than once.  Update comments.
227         * expr.h (init_expr_target): Likewise.
228         * alias.c (init_alias_target): Renamed from init_alias_once, since it
229         now can be called more than once.  Explicitly zero
230         static_reg_base_value.
231         * emit-rtl.c (init_emit_regs): New, split out from...
232         (init_emit_once): Here.
233         * regclass.c (initial_fixed_regs, initial_call_used_regs): Make
234         non-const, so that changes from command-line arguments can overwrite
235         values provided by the static initializers.
236         (initial_call_really_used_regs): New, used similarly to the above.
237         (initial_reg_names): Likewise.
238         (last_mode_for_init_move_cost): Promoted function-local static to
239         file-scope static to make it accessible outside init_move_cost.
240         (init_reg_sets): Do not initialize fixed_regs and call_used_regs yet.
241         Do not initialize inv_reg_alloc_order yet, either.  Do initialize
242         reg_names since it is needed for parsing command-line options.
243         (init_move_cost): Use last_mode_for_init_move_cost instead of
244         function-local static.
245         (init_reg_sets_1): Initialize fixed_regs, call_used_regs, and
246         call_really_used_regs now.  Reinitialize reg_names.  Also
247         initialize inv_reg_alloc_order.  Zero reg_class_subunion and
248         reg_class_superunion.  Clear losing_caller_save_reg_set.
249         Preserve global registers if called more than once.  Reset
250         move cost, may_move_in_cost, may_move_out_cost, and
251         last_mode_for_init_move_cost.
252         (init_reg_modes_target): Renamed from init_reg_modes_once, since it
253         can now be invoked more than once.  Update comments.
254         (init_regs): Update comments.
255         (fix_register): Update initial_fixed_regs, initial_call_used_regs,
256         and initial_call_really_used_regs, instead of the non-initial 
257         variables.  This allows us to save the command-line register settings
258         after target reinitialization.
259         (init_reg_autoinc): Zero forbidden_inc_dec_classes.
260         * rtl.h (init_emit_regs): Declare.
261         (init_reg_modes_target, init_alias_target): Renamed as described
262         above.
263         * reload1.c (init_reload): Update comments.
264         * optabs.c (init_optabs): Likewise.
265         * cfgloopanal.c (init_set_costs): Explicitly zero target_avail_regs.
266         
267 2007-08-26  Chao-ying Fu  <fu@mips.com>
268
269         * rtl.h (XCNMPFV): Preserve const-ness of parameters through use of
270         __typeof().
271
272 2007-08-26  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
273
274         * alias.c (memory_modified_1, memory_modified_in_insn_p):
275         Constify.
276         * basic-block.h (tree_predicted_by_p, rtl_predicted_by_p):
277         Likewise.
278         * bb-reorder.c (copy_bb_p): Likewise.
279         * cfghooks.c (can_remove_branch_p, can_merge_blocks_p,
280         predicted_by_p, can_duplicate_block_p, block_ends_with_call_p,
281         block_ends_with_condjump_p): Likewise.
282         * cfghooks.h (can_remove_branch_p, can_merge_blocks_p,
283         predicted_by_p, can_duplicate_block_p, block_ends_with_call_p,
284         block_ends_with_condjump_p): Likewise.
285         * cfglayout.c (cfg_layout_can_duplicate_bb_p): Likewise.
286         * cfgrtl.c (can_delete_note_p, can_delete_label_p,
287         rtl_can_merge_blocks, cfg_layout_can_merge_blocks_p,
288         rtl_block_ends_with_call_p, rtl_block_ends_with_condjump_p,
289         need_fake_edge_p, rtl_can_remove_branch_p): Likewise.
290         * dbxout.c (dbx_debug_hooks, xcoff_debug_hooks): Use
291         debug_true_const_tree instad of debug_true_tree.
292         * debug.c (do_nothing_debug_hooks): Likewise.
293         * debug.h (ignore_block, debug_true_const_tree): Constify.
294         * dwarf2out.c (stack_adjust_offset, clobbers_queued_reg_save,
295         dwarf2out_ignore_block, is_pseudo_reg, is_tagged_type,
296         decl_ultimate_origin, block_ultimate_origin, lookup_decl_loc,
297         same_dw_val_p, add_ranges, is_subrange_type, type_is_enum,
298         dbx_reg_number, is_based_loc, field_type,
299         simple_type_align_in_bits, simple_decl_align_in_bits,
300         simple_type_size_in_bits, field_byte_offset, insert_float,
301         type_tag, member_declared_type, is_redundant_typedef,
302         secname_for_decl, is_inlined_entry_point): Likewise.
303         * emit-rtl.c (const_next_insn, const_previous_insn,
304         const_next_nonnote_insn, const_prev_nonnote_insn,
305         const_next_real_insn, const_prev_real_insn,
306         const_next_active_insn, const_prev_active_insn, const_next_label,
307         const_prev_label): Likewise.
308         * except.h (lookup_stmt_eh_region_fn, lookup_stmt_eh_region):
309         Likewise.
310         * haifa-sched.c (may_trap_exp, haifa_classify_insn,
311         find_set_reg_weight, no_real_insns_p, find_set_reg_weight,
312         sched_insn_is_legitimate_for_speculation_p): Likewise.
313         * jump.c (reversed_comparison_code_parts,
314         reversed_comparison_code, reversed_comparison, condjump_label):
315         Likewise.
316         * predict.c (rtl_predicted_by_p, tree_predicted_by_p): Likewise.
317         * reg-stack.c (stack_regs_mentioned_p, stack_regs_mentioned):
318         Likewise.
319         * rtl.h (const_previous_insn, const_next_insn,
320         const_prev_nonnote_insn, const_next_nonnote_insn,
321         const_prev_real_insn, const_next_real_insn,
322         const_prev_active_insn, const_next_active_insn, const_prev_label,
323         const_next_label, modified_between_p, modified_in_p,
324         const_note_storeskeep_with_call_p, condjump_label,
325         reversed_comparison, reversed_comparison_code,
326         reversed_comparison_code_parts, memory_modified_in_insn_p,
327         stack_regs_mentioned): Likewise.
328         * rtlanal.c (modified_between_p, modified_in_p, const_note_stores,
329         keep_with_call_p): Likewise.
330         * sched-deps.c (deps_may_trap_p, sched_get_condition,
331         conditions_mutex_p, sched_insns_conditions_mutex_psd_next_list,
332         sd_lists_size, sd_lists_empty_p): Likewise.
333         * sched-int.h (sched_insns_conditions_mutex_p,
334         haifa_classify_insn, no_real_insns_p,
335         sched_insn_is_legitimate_for_speculation_p, sd_next_list,
336         sd_lists_size, sd_lists_empty_p): Likewise.
337         * sdbout.c (sdb_debug_hooks): Likewise.
338         * tree-cfg.c (tree_can_merge_blocks_p, is_ctrl_altering_stmt,
339         stmt_ends_bb_p, tree_can_remove_branch_p, tree_can_duplicate_bb_p,
340         -tree_block_ends_with_call_p, tree_block_ends_with_condjump_p):
341         Likewise.
342         * tree-eh.c (lookup_stmt_eh_region_fn, lookup_stmt_eh_region,
343         tree_can_throw_internal): Likewise.
344         * tree-flow-inline.h (phi_nodes): Likewise.
345         * tree-flow.h (phi_nodesstmt_ends_bb_p, is_ctrl_altering_stmt,
346         tree_can_throw_internal, lookup_stmt_eh_region): Likewise.
347         * tree-gimple.c (const_get_call_expr_in): Likewise.
348         * tree-gimple.h (const_get_call_expr_in): Likewise.
349         * tree.c (const_lookup_attribute, attribute_list_equal,
350         attribute_list_contained): Likewise.
351         * tree.h (attribute_list_equal, attribute_list_contained,
352         const_lookup_attribute): Likewise.
353         * vmsdbgout.c (vmsdbgout_ignore_block): Likewise.
354
355 2007-08-26  Bernhard Fischer  <aldot@gcc.gnu.org>
356
357         * tree-ssa-sccvn.c, tree-ssa-sccvn.h, tree-vn.c,
358         tree-ssa-pre.c: Remove unnecessary trailing whitespace.
359
360 2007-08-26  H.J. Lu  <hongjiu.lu@intel.com>
361
362         PR target/32991
363         * config/alpha/constraints.md: Delete "svn:mime-type" property
364         with svn propdel "svn:mime-type".
365
366 2007-08-26  H.J. Lu  <hongjiu.lu@intel.com>
367
368         PR middle-end/33181
369         * ifcvt.c (noce_get_alt_condition): Make sure that the previous
370         non NOTE insn doesn't cross basic block.
371         (noce_try_abs): Likewise.
372         (noce_process_if_block): Likewise.
373
374 2007-08-26  David Edelsohn  <edelsohn@gnu.org>
375
376         PR target/33151
377         * config/rs6000/predicates.md (offsettable_mem_operand): Memory
378         operand without auto-inc-dec.
379         * config/rs6000/rs6000.md (floatsidf2_internal): Use
380         offsettable_mem_operand.
381         (floatunssidf2_internal): Same.
382         (fix_truncdfsi2_internal): Same.
383         (floatsidf_ppc64): Same.
384         (floatunssidf_ppc64): Same.
385         (fix_trunctfsi2_internal): Same.
386
387 2007-08-26  Bernhard Fischer  <aldot@gcc.gnu.org>
388
389         PR bootstrap/30620
390         * Makefile.in (libbackend.o): Add gcov-iov.h dependency and
391         pass defines needed for version.c.
392
393 2007-08-25  Joseph Myers  <joseph@codesourcery.com>
394
395         * configure.ac (--debug-prefix-map check): Change assembler
396         version presumed to have feature to 2.18.
397         * configure: Regenerate.
398
399 2007-08-25  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
400
401         * c-common.c (vector_types_convertible_p,
402         decl_with_nonnull_addr_p, c_promoting_integer_type_p,
403         self_promoting_args_p): Constify.
404         * c-common.h (has_c_linkage, decl_with_nonnull_addr_p,
405         c_promoting_integer_type_p, self_promoting_args_p,
406         anon_aggr_type_p, vector_types_convertible_p): Likewise.
407         * c-decl.c (anon_aggr_type_p): Likewise.
408         * * c-dump.c (dump_stmt): Likewise.
409         * c-objc-common.c (has_c_linkage): Likewise.
410         * c-tree.h (same_translation_unit_p): Likewise.
411         * c-typeck.c (null_pointer_constant_p,
412         tagged_types_tu_compatible_p, function_types_compatible_p,
413         type_lists_compatible_p, lvalue_or_else, lvalue_p,
414         comptypes_internal, struct tagged_tu_seen_cache,
415         same_translation_unit_p, alloc_tagged_tu_seen_cache,
416         c_size_in_bytes): Likewise.
417         * ggc-common.c (compare_ptr_data, hash_descriptor, eq_descriptor,
418         hash_ptr, eq_ptr): Likewise.
419         * langhooks-def.h (lhd_decl_ok_for_sibcall,
420         LANG_HOOKS_OMP_PRIVATIZE_BY_REFERENCE): Likewise.
421         * langhooks.c (lhd_decl_ok_for_sibcall): Likewise.
422         * langhooks.h (ok_for_sibcall, omp_privatize_by_reference):
423         Likewise.
424         * optabs.c (optab_for_tree_code): Likewise.
425         * optabs.h (optab_for_tree_code): Likewise.
426         * rtl.h (simplify_rtx): Likewise.
427         * simplify-rtx.c (simplify_rtx): Likewise.
428         * tree-dump.c (queue, queue_and_dump_index, queue_and_dump_type,
429         dump_flag, dump_node): Likewise.
430         * tree-dump.h (struct dump_info, dump_stmt, queue_and_dump_index,
431         queue_and_dump_type, dump_flag): Likewise.
432         * tree-flow.h (vect_can_force_dr_alignment_p): Likewise.
433         * tree-pass.h (dump_node): Likewise.
434         * tree-vectorizer.c (vect_can_force_dr_alignment_p,
435         supportable_narrowing_operation): Likewise.
436         * tree-vectorizer.h (vect_can_force_dr_alignment_p,
437         supportable_narrowing_operation): Likewise.
438         * tree-vrp.c (needs_overflow_infinity, supports_overflow_infinity,
439         is_negative_overflow_infinity, is_positive_overflow_infinity,
440         is_overflow_infinity, vrp_val_is_max, vrp_val_is_min,
441         nonnull_arg_p, get_value_range, vrp_operand_equal_p,
442         update_value_range, add_equivalence, ssa_name_nonnegative_p,
443         ssa_name_nonzero_p, fp_predicate): Likewise.
444         * tree.c (auto_var_in_fn_p, empty_body_p): Likewise.
445         * tree.h (empty_body_p, auto_var_in_fn_p, ssa_name_nonzero_p,
446         ssa_name_nonnegative_p): Likewise.
447
448 2007-08-25  Hans Kester  <hans.kester@ellips.nl>
449
450         * config.gcc : Add x86_64-elf target.
451
452 2007-08-25  Jakub Jelinek  <jakub@redhat.com>
453
454         * expr.c (store_expr): Fix order of store_by_pieces arguments.
455
456 2007-08-24  Sandra Loosemore  <sandra@codesourcery.com>
457             Nigel Stephens <nigel@mips.com>
458
459         PR target/11787
460
461         * doc/tm.texi (SET_RATIO, SET_BY_PIECES_P): Document new macros.
462         (STORE_BY_PIECES_P): No longer applies to __builtin_memset.
463         * expr.c (SET_BY_PIECES_P): Define.
464         (can_store_by_pieces, store_by_pieces): Add MEMSETP argument; use
465         it to decide whether to use SET_BY_PIECES_P or STORE_BY_PIECES_P.
466         (store_expr): Pass MEMSETP argument to can_store_by_pieces and
467         store_by_pieces.
468         * expr.h (SET_RATIO): Define.
469         (can_store_by_pieces, store_by_pieces): Update prototypes.
470         * builtins.c (expand_builtin_memcpy): Pass MEMSETP argument to
471         can_store_by_pieces/store_by_pieces.
472         (expand_builtin_memcpy_args): Likewise.
473         (expand_builtin_strncpy): Likewise.
474         (expand_builtin_memset_args): Likewise.  Also remove special case
475         for optimize_size so that can_store_by_pieces/SET_BY_PIECES_P can
476         decide what to do instead.
477         * value-prof.c (tree_stringops_transform): Pass MEMSETP argument
478         to can_store_by_pieces.
479
480         * config/sh/sh.h (SET_BY_PIECES_P): Clone from STORE_BY_PIECES_P.
481         * config/s390/s390.h (SET_BY_PIECES_P): Likewise.
482
483         * config/mips/mips.opt (mmemcpy): Change from Var to Mask.
484         * config/mips/mips.c (override_options): Make -Os default to -mmemcpy.
485         * config/mips/mips.h (MIPS_CALL_RATIO): Define.
486         (MOVE_RATIO, CLEAR_RATIO, SET_RATIO): Define.
487         (STORE_BY_PIECES_P): Define.
488
489 2007-08-24  Tom Tromey  <tromey@redhat.com>
490
491         * varpool.c (varpool_last_needed_node): Fix comment typo.
492         * c-decl.c (duplicate_decls): Fix comment typo.
493         (clone_underlying_type): Update comment.
494
495 2007-08-24  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
496
497         * config/alpha/alpha.c (alpha_mangle_type, decl_has_samegp,
498         alpha_in_small_data_p, alpha_split_complex_arg,
499         alpha_stdarg_optimize_hook, TARGET_ASM_CAN_OUTPUT_MI_THUNK):
500         Constify.
501         * config/arm/arm-protos.h (arm_mangle_type): Likewise.
502         * config/arm/arm.c (arm_comp_type_attributes, arm_mangle_type):
503         Likewise.
504         * config/bfin/bfin.c (funkind, bfin_comp_type_attributes,
505         TARGET_ASM_CAN_OUTPUT_MI_THUNK): Likewise.
506         * config/darwin-protos.h (darwin_binds_local_p): Likewise.
507         * config/darwin.c (darwin_binds_local_p): Likewise.
508         * config/frv/frv.c (frv_string_begins_with, frv_in_small_data_p):
509         Likewise.
510         * config/i386/i386-protos.h (i386_pe_binds_local_p,
511         i386_pe_valid_dllimport_attribute_p): Likewise.
512         * config/i386/i386.c (ix86_function_regparm,
513         ix86_comp_type_attributes, ix86_ms_bitfield_layout_p,
514         x86_can_output_mi_thunk, ix86_mangle_type,
515         TARGET_USE_BLOCKS_FOR_CONSTANT_P): Likewise.
516         * config/i386/winnt.c (i386_pe_valid_dllimport_attribute_p,
517         i386_pe_binds_local_p): Likewise.
518         * config/ia64/ia64.c
519         (ia64_first_cycle_multipass_dfa_lookahead_guard_spec,
520         ia64_needs_block_p, ia64_in_small_data_p, ia64_mangle_type,
521         ia64_invalid_conversion, ia64_invalid_unary_op,
522         ia64_invalid_binary_op, TARGET_ASM_CAN_OUTPUT_MI_THUNK):
523         Likewise.
524         * config/m32c/m32c.c (m32c_comp_type_attributes): Likewise.
525         * config/m32r/m32r.c (m32r_in_small_data_p): Likewise.
526         * config/m68k/m68k.c (TARGET_ASM_CAN_OUTPUT_MI_THUNK): Likewise.
527         * config/mips/mips.c (mips_use_blocks_for_constant_p,
528         mips_in_small_data_p, mips_use_anchors_for_symbol_p,
529         mips_comp_type_attributes, TARGET_ASM_CAN_OUTPUT_MI_THUNK,
530         mips_near_type_p, mips_far_type_p, mips_global_symbol_p,
531         mips_symbol_binds_local_p, mips_classify_symbol): Likewise.
532         * config/pa/pa.c (pa_commutative_p): Likewise.
533         * config/rs6000/rs6000-protos.h (rs6000_elf_in_small_data_p):
534         Likewise.
535         * config/rs6000/rs6000.c (rs6000_invalid_within_doloop,
536         rs6000_ms_bitfield_layout_p, rs6000_mangle_type,
537         rs6000_use_blocks_for_constant_p,
538         rs6000_vector_alignment_reachable, rs6000_is_opaque_type,
539         invalid_arg_for_unprototyped_fn, TARGET_ASM_CAN_OUTPUT_MI_THUNK,
540         TARGET_SPLIT_COMPLEX_ARG, rs6000_elf_in_small_data_p): Likewise.
541         * config/s390/s390.c (s390_mangle_type,
542         TARGET_ASM_CAN_OUTPUT_MI_THUNK, TARGET_INVALID_WITHIN_DOLOOP):
543         Likewise.
544         * config/score/score.c (TARGET_ASM_CAN_OUTPUT_MI_THUNK,
545         th_in_small_data_p): Likewise.
546         * config/sh/sh.c (sh_ms_bitfield_layout_p,
547         sh_dwarf_calling_convention, TARGET_ASM_CAN_OUTPUT_MI_THUNK):
548         Likewise.
549         * config/sparc/sparc.c (sparc_can_output_mi_thunk,
550         sparc_mangle_type): Likewise.
551         * config/spu/spu.c (spu_vector_alignment_reachable): Likewise.
552         * config/xtensa/xtensa.c (TARGET_SPLIT_COMPLEX_ARG): Likewise.
553         * emit-rtl.c (const_fixed_htab_hash, const_fixed_htab_eq):
554         Likewise.
555         * hooks.c (hook_bool_mode_const_rtx_false,
556         hook_bool_mode_const_rtx_true,
557         hook_bool_const_tree_hwi_hwi_const_tree_false,
558         hook_bool_const_tree_hwi_hwi_const_tree_true,
559         hook_int_const_tree_0, hook_int_const_tree_const_tree_1,
560         hook_constcharptr_const_tree_null,
561         hook_constcharptr_const_rtx_null,
562         hook_constcharptr_const_tree_const_tree_null,
563         hook_constcharptr_int_const_tree_null,
564         hook_constcharptr_int_const_tree_const_tree_null): New.
565         (hook_bool_mode_rtx_false, hook_bool_mode_rtx_true,
566         hook_bool_tree_hwi_hwi_tree_false,
567         hook_bool_tree_hwi_hwi_tree_true, hook_int_tree_0,
568         hook_int_tree_tree_1, hook_constcharptr_tree_null,
569         hook_constcharptr_rtx_null, hook_constcharptr_tree_tree_null,
570         hook_constcharptr_int_tree_null,
571         hook_constcharptr_int_tree_tree_null): Delete.
572         (default_can_output_mi_thunk_no_vcall): Constify.
573         * hooks.h (hook_bool_mode_rtx_false, hook_bool_mode_rtx_true,
574         hook_bool_tree_hwi_hwi_tree_false,
575         hook_bool_tree_hwi_hwi_tree_true, hook_int_tree_0,
576         hook_int_tree_tree_1, hook_constcharptr_tree_null,
577         hook_constcharptr_rtx_null, hook_constcharptr_tree_tree_null,
578         hook_constcharptr_int_tree_null,
579         hook_constcharptr_int_tree_tree_null): Delete.
580         (hook_bool_mode_const_rtx_false, hook_bool_mode_const_rtx_true,
581         hook_bool_const_tree_hwi_hwi_const_tree_false,
582         hook_bool_const_tree_hwi_hwi_const_tree_true,
583         hook_int_const_tree_0, hook_int_const_tree_const_tree_1,
584         hook_constcharptr_const_tree_null,
585         hook_constcharptr_const_rtx_null,
586         hook_constcharptr_const_tree_const_tree_null,
587         hook_constcharptr_int_const_tree_null,
588         hook_constcharptr_int_const_tree_const_tree_null): New.
589         (default_can_output_mi_thunk_no_vcall): Constify.
590         * integrate.c (function_attribute_inlinable_p): Likewise.
591         * integrate.h (function_attribute_inlinable_p): Likewise.
592         * jump.c (rtx_renumbered_equal_p): Likewise.
593         * output.h (decl_readonly_section, categorize_decl_for_section,
594         default_use_anchors_for_symbol_p, default_binds_local_p,
595         default_binds_local_p_1): Likewise.
596         * rtl.h (rtx_renumbered_equal_p, decl_default_tls_model):
597         Likewise.
598         * target-def.h (TARGET_ASM_CAN_OUTPUT_MI_THUNK,
599         TARGET_VALID_DLLIMPORT_ATTRIBUTE_P, TARGET_VECTOR_OPAQUE_P,
600         TARGET_COMMUTATIVE_P, TARGET_USE_BLOCKS_FOR_CONSTANT_P,
601         TARGET_COMP_TYPE_ATTRIBUTES,
602         TARGET_FUNCTION_ATTRIBUTE_INLINABLE_P,
603         TARGET_MS_BITFIELD_LAYOUT_P, TARGET_MANGLE_TYPE,
604         TARGET_IN_SMALL_DATA_P, TARGET_INVALID_CONVERSION,
605         TARGET_INVALID_UNARY_OP, TARGET_INVALID_BINARY_OP,
606         TARGET_DWARF_CALLING_CONVENTION): Likewise.
607         * target.h (can_output_mi_thunk, needs_block_p,
608         first_cycle_multipass_dfa_lookahead_guard_spec,
609         vector_alignment_reachable, comp_type_attributes,
610         function_attribute_inlinable_p, ms_bitfield_layout_p, mangle_type,
611         commutative_p, use_blocks_for_constant_p,
612         use_anchors_for_symbol_p, in_small_data_p, binds_local_p,
613         vector_opaque_p, dwarf_calling_convention, stdarg_optimize_hook,
614         invalid_within_doloop, valid_dllimport_attribute_p,
615         split_complex_arg, invalid_arg_for_unprototyped_fn,
616         invalid_conversion, invalid_unary_op, invalid_binary_op):
617         Likewise.
618         * targhooks.c (default_invalid_within_doloop,
619         hook_invalid_arg_for_unprototyped_fn,
620         default_builtin_vector_alignment_reachable): Likewise.
621         (hook_bool_rtx_commutative_p): Delete.
622         (hook_bool_const_rtx_commutative_p): New.
623         * targhooks.h (default_invalid_within_doloop,
624         default_builtin_vector_alignment_reachable,
625         hook_invalid_arg_for_unprototyped_fn): Constify.
626         (hook_bool_rtx_commutative_p): Delete.
627         (hook_bool_const_rtx_commutative_p): New.
628         * varasm.c (bss_initializer_p, decl_default_tls_model,
629         categorize_decl_for_section, decl_readonly_section,
630         default_use_anchors_for_symbol_p, default_binds_local_p,
631         default_binds_local_p_1): Constify.
632
633 2007-08-24  Jie Zhang  <jie.zhang@analog.com>
634
635         * config/bfin/bfin.h (TARGET_CPU_CPP_BUILTINS): Define
636         __NO_BUILTIN if -fno-builtin.
637
638 2007-08-24  Jie Zhang  <jie.zhang@analog.com>
639
640         * config/bfin/bfin.c (print_operand): Report error instead of
641         ICE for wrong operand.
642
643 2007-08-24  Michael Matz  <matz@suse.de>
644
645         * Makefile.in (GTFILES_H): Use $(patsubst) instead of $(subst).
646
647 2007-08-24  Richard Guenther  <rguenther@suse.de>
648
649         PR middle-end/33166
650         * tree-ssa.c (useless_type_conversion_p): Split into a
651         recursive and a non-recursive part.
652         (useless_type_conversion_p_1): New function.
653         * tree-ssa-ccp.c (fold_stmt_r): Make sure that the result
654         from maybe_fold_offset_to_reference is trivially convertible
655         to the desired type before doing the simplification.
656
657 2007-08-24  Jakub Jelinek  <jakub@redhat.com>
658
659         * expr.c (store_expr): Optimize initialization of an array
660         with STRING_CST.
661         * expr.h (builtin_strncpy_read_str): New prototype.
662         * builtins.c (builtin_strncpy_read_str): Remove prototype.
663         No longer static.
664
665 2007-08-24  Uros Bizjak  <ubizjak@gmail.com>
666
667         PR middle-end/33157
668         * ifcvt.c (noce_find_if_block): Do not clear if_info.cond_earliest
669         field when initializing if_info structure.
670
671 2007-08-24  Richard Guenther  <rguenther@suse.de>
672
673         * Makefile.in (tree-inline.o): Add $(TARGET_H) and $(INTEGRATE_H)
674         dependencies.
675         * c-objc-common.c (c_cannot_inline_tree_fn): Remove.
676         * langhooks.c (lhd_tree_inlining_cannot_inline_tree_fn): Likewise.
677         * tree-inline.c (inlinable_function_p): Fold in common parts of
678         the cannot_inline_tree_fn langhook.
679         * langhooks-def.h (lhd_tree_inlining_cannot_inline_tree_fn): Remove.
680         (LANG_HOOKS_TREE_INLINING_CANNOT_INLINE_TREE_FN): Likewise.
681         (LANG_HOOKS_TREE_INLINING_INITIALIZER): Remove initializer for
682         cannot_inline_tree_fn langhook.
683         * langhooks.h (struct lang_hooks_for_tree_inlining): Remove
684         cannot_inline_tree_fn member.
685
686 2007-08-24  Richard Guenther  <rguenther@suse.de>
687
688         * expr.c (get_inner_reference): Do computation of bitoffset
689         from offset in a way we can detect overflow reliably.
690
691 2007-08-24  Jie Zhang  <jie.zhang@analog.com>
692
693         * crtstuff.c (USE_PT_GNU_EH_FRAME): Don't define for uClibc.
694
695 2007-08-24  Jie Zhang  <jie.zhang@analog.com>
696
697         * config/bfin/bfin.opt (mfast-fp): Add.
698         * config/bfin/linux.h (LINK_GCC_C_SEQUENCE_SPEC): Let
699         libbffastfp override libgcc if -mfast-fp.
700         * config/bfin/bfin.h (LINK_GCC_C_SEQUENCE_SPEC): Likewise.
701         * doc/invoke.texi (Option Summary): Mention -mfast-fp.
702         (Blackfin Options): Document -mfast-fp.
703
704 2007-08-24  Jakub Jelinek  <jakub@redhat.com>
705
706         PR tree-optimization/32573
707         PR middle-end/32946
708         * tree-data-ref.c (initialize_data_dependence_relation): Clear
709         DDR_SUBSCRIPTS, DDR_DIR_VECTS and DDR_DIST_VECTS at the beginning.
710         (finalize_ddr_dependent): Clear DDR_SUBSCRIPTS after freeing it.
711         (build_classic_dist_vector): Return false rather than true if
712         DDR_ARE_DEPENDENT is non-NULL at the beginning.  Return false
713         if either subscript_dependence_tester_1 or build_classic_dist_vector_1
714         returned false.  Don't call save_dist_v before calling
715         build_classic_dist_vector_1.
716         (free_dependence_relation): Don't guard freeing DDR_SUBSCRIPTS
717         with NULL DDR_ARE_DEPENDENT.  Also free DDR_DIST_VECTS and/or
718         DDR_DIR_VECTS vectors.
719
720 2007-08-23  Brian Sidebotham  <brian.sidebotham@gmail.com>
721
722         * configure.ac (leb128): Modify sed statement to work with any
723         binutils version string.
724         * configure: Regenerate
725
726 2007-08-23  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
727
728         * config/arc/arc-protos.h arc_select_cc_mode, gen_compare_reg):
729         Wrap in RTX_CODE macro guard.
730         * config/arm/pe.c (arm_dllexport_p, arm_dllimport_p,
731         arm_dllexport_name_p, arm_dllimport_name_p, arm_mark_dllexport,
732         arm_mark_dllimport, arm_pe_encode_section_info,
733         arm_pe_unique_section): Use ISO-C function declarations.
734         * config/c4x/c4x-c.c (c4x_parse_pragma, c4x_pr_CODE_SECTION,
735         c4x_pr_DATA_SECTION, c4x_pr_FUNC_IS_PURE,
736         c4x_pr_FUNC_NEVER_RETURNS, c4x_pr_INTERRUPT, c4x_pr_ignored):
737         Likewise.
738         * config/iq2000/iq2000.h (ASM_OUTPUT_SKIP): Fix format warning.
739         * config/m68hc11/m68hc11.h (ASM_OUTPUT_EXTERNAL): Undef before
740         defining.
741         * config/mips/mips.h (ASM_DECLARE_OBJECT_NAME): Fix format
742         warnings.
743         * config/mn10300/mn10300.h (OUTPUT_ADDR_CONST_EXTRA): Likewise.
744         * config/pdp11/pdp11.c (pdp11_output_function_epilogue): Likewise.
745         (register_move_cost): Use ISO-C function declarations.
746         * config/pdp11/pdp11.h (PRINT_OPERAND): Fix format warnings.
747         * config/score/score-protos.h (score_declare_object): Add
748         ATTRIBUTE_PRINTF_4.
749         * config/score/score.h (ASM_DECLARE_OBJECT_NAME): Fix format
750         warnings.
751         * final.c (profile_function): Avoid empty if-bodies.
752         
753         
754         * calls.c (must_pass_in_stack_var_size,
755         must_pass_in_stack_var_size_or_pad): Constify.
756         * config/alpha/alpha-protos.h (function_value): Likewise.
757         * config/alpha/alpha.c (alpha_return_in_memory,
758         alpha_pass_by_reference, function_value,
759         unicosmk_must_pass_in_stack, TARGET_PROMOTE_FUNCTION_ARGS,
760         TARGET_PROMOTE_FUNCTION_RETURN, TARGET_PROMOTE_PROTOTYPES):
761         Likewise.
762         * config/arc/arc.c (arc_return_in_memory, arc_pass_by_reference,
763         TARGET_PROMOTE_FUNCTION_ARGS, TARGET_PROMOTE_FUNCTION_RETURN,
764         TARGET_PROMOTE_PROTOTYPES): Likewise.
765         * config/arm/arm-protos.h (arm_return_in_memory,
766         arm_pad_arg_upward, arm_function_value): Likewise.
767         * config/arm/arm.c (arm_pass_by_reference,
768         arm_promote_prototypes, arm_return_in_msb, arm_must_pass_in_stack,
769         TARGET_PROMOTE_FUNCTION_ARGS, TARGET_PROMOTE_FUNCTION_RETURN,
770         arm_function_value, arm_return_in_memory, arm_pad_arg_upward):
771         Likewise.
772         * config/arm/arm.h (ARM_DECLARE_FUNCTION_NAME): Likewise.
773         * config/avr/avr-protos.h (avr_function_value): Likewise.
774         * config/avr/avr.c (avr_return_in_memory,
775         gas_output_limited_string, gas_output_ascii, avr_function_value,
776         avr_return_in_memory): Likewise.
777         * config/bfin/bfin-protos.h (bfin_return_in_memory): Likewise.
778         * config/bfin/bfin.c (bfin_pass_by_reference,
779         bfin_return_in_memory, TARGET_PROMOTE_PROTOTYPES,
780         TARGET_PROMOTE_FUNCTION_ARGS, TARGET_PROMOTE_FUNCTION_RETURN):
781         Likewise.
782         * config/cris/cris.c (cris_pass_by_reference,
783         TARGET_PROMOTE_FUNCTION_ARGS): Likewise.
784         * config/crx/crx.c (crx_return_in_memory): Likewise.
785         * config/darwin.c (function_base, machopic_function_base_name):
786         Likewise.
787         * config/fr30/fr30.c (fr30_must_pass_in_stack,
788         TARGET_PROMOTE_PROTOTYPES): Likewise.
789         * config/frv/frv.c (frv_must_pass_in_stack): Likewise.
790         * config/h8300/h8300.c (h8300_return_in_memory): Likewise.
791         * config/i386/i386-protos.h (ix86_return_in_memory,
792         ix86_sol10_return_in_memory): Likewise.
793         * config/i386/i386.c (ix86_function_value,
794         ix86_function_sseregparm, ix86_must_pass_in_stack,
795         type_natural_mode, classify_argument, examine_argument,
796         construct_container, ix86_pass_by_reference, function_value_32,
797         function_value_64, ix86_function_value_1, return_in_memory_32,
798         return_in_memory_64, return_in_memory_ms_64,
799         ix86_return_in_memory, ix86_sol10_return_in_memory,
800         TARGET_PROMOTE_PROTOTYPES): Likewise.
801         * config/ia64/ia64-protos.h (ia64_function_value,
802         ia64_hpux_function_arg_padding): Likewise.
803         * config/ia64/ia64.c (hfa_element_mode, ia64_return_in_memory,
804         ia64_function_value, bundle_state_hash, bundle_state_eq_p,
805         ia64_hpux_function_arg_padding): Likewise.
806         * config/iq2000/iq2000-protos.h (function_arg,
807         iq2000_function_value): Likewise.
808         * config/iq2000/iq2000.c (iq2000_return_in_memory,
809         iq2000_pass_by_reference, TARGET_PROMOTE_FUNCTION_ARGS,
810         TARGET_PROMOTE_FUNCTION_RETURN, TARGET_PROMOTE_PROTOTYPES,
811         function_arg, iq2000_function_value): Likewise.
812         * config/m32c/m32c-protos.h (m32c_function_value,
813         m32c_promote_function_return): Likewise.
814         * config/m32c/m32c.c (m32c_pass_by_reference,
815         m32c_promote_prototypes, m32c_promote_function_return,
816         m32c_function_value): Likewise.
817         * config/m32r/m32r.c (m32r_return_in_memory,
818         m32r_pass_by_reference, TARGET_PROMOTE_PROTOTYPES,
819         m32r_in_small_data_p): Likewise.
820         * config/m68hc11/m68hc11-protos.h (m68hc11_function_arg_padding):
821         Likewise.
822         * config/m68hc11/m68hc11.c (m68hc11_return_in_memory,
823         m68hc11_function_arg_padding): Likewise.
824         * config/m68k/m68k-protos.h (m68k_function_value): Likewise.
825         * config/m68k/m68k.c (TARGET_PROMOTE_PROTOTYPES,
826         m68k_function_value): Likewise.
827         * config/mcore/mcore-protos.h (mcore_num_arg_regs,
828         mcore_function_value): Likewise.
829         * config/mcore/mcore.c (handle_structs_in_regs,
830         mcore_return_in_memory, TARGET_PROMOTE_FUNCTION_ARGS,
831         TARGET_PROMOTE_FUNCTION_RETURN, TARGET_PROMOTE_PROTOTYPES,
832         mcore_num_arg_regs, mcore_function_value): Likewise.
833         * config/mips/mips-protos.h (mips_pad_arg_upward,
834         mips_function_value): Likewise.
835         * config/mips/mips.c (mips_fpr_return_fields, mips_return_in_msb,
836         mips_return_in_memory, mips_pass_by_reference, mips_callee_copies,
837         TARGET_PROMOTE_FUNCTION_ARGS, TARGET_PROMOTE_FUNCTION_RETURN,
838         TARGET_PROMOTE_PROTOTYPES, mips_pad_arg_upward,
839         mips_function_value): Likewise.
840         * config/mmix/mmix-protos.h (mmix_function_outgoing_value):
841         Likewise.
842         * config/mmix/mmix.c (mmix_pass_by_reference,
843         TARGET_PROMOTE_FUNCTION_ARGS, mmix_function_outgoing_value,
844         mmix_encode_section_info): Likewise.
845         * config/mn10300/mn10300-protos.h (mn10300_function_value):
846         Likewise.
847         * config/mn10300/mn10300.c (mn10300_return_in_memory,
848         mn10300_pass_by_reference, TARGET_PROMOTE_PROTOTYPES,
849         mn10300_function_value): Likewise.
850         * config/mt/mt-protos.h (mt_function_value): Likewise.
851         * config/mt/mt.c (mt_pass_by_reference, mt_function_value,
852         mt_pass_in_stack, TARGET_PROMOTE_PROTOTYPES): Likewise.
853         * config/pa/pa-protos.h (function_arg_padding, function_value,
854         pa_return_in_memory): Likewise.
855         * config/pa/pa.c (pa_pass_by_reference,
856         TARGET_PROMOTE_FUNCTION_RETURN, TARGET_PROMOTE_PROTOTYPES,
857         function_arg_padding, function_value, pa_return_in_memory):
858         Likewise.
859         * config/pdp11/pdp11.c (pdp11_return_in_memory): Likewise.
860         * config/rs6000/rs6000-protos.h (rs6000_function_value,
861         function_arg_padding): Likewise.
862         * config/rs6000/rs6000.c (rs6000_return_in_memory,
863         rs6000_darwin64_record_arg_recurse, rs6000_darwin64_record_arg,
864         rs6000_pass_by_reference, rs6000_must_pass_in_stack,
865         TARGET_PROMOTE_FUNCTION_ARGS, TARGET_PROMOTE_FUNCTION_RETURN,
866         function_arg_padding, altivec_expand_dst_builtin,
867         altivec_expand_builtin, rs6000_expand_builtin, spe_init_builtins,
868         altivec_init_builtins, rs6000_common_init_builtins,
869         rs6000_function_value): Likewise.
870         * s390/s390-protos.h (s390_function_value): Likewise.
871         * config/s390/s390.c (s390_function_arg_size,
872         s390_pass_by_reference, s390_return_in_memory,
873         s390_function_value, TARGET_PROMOTE_FUNCTION_ARGS,
874         TARGET_PROMOTE_FUNCTION_RETURN): Likewise.
875         * config/score/score-protos.h (score_function_value): Likewise.
876         * config/score/score.c (score_arg_partial_bytes,
877         TARGET_PROMOTE_FUNCTION_ARGS, TARGET_PROMOTE_FUNCTION_RETURN,
878         TARGET_PROMOTE_PROTOTYPES, score_return_in_memory,
879         score_pass_by_reference, score_add_offset, score_function_value):
880         Likewise.
881         * config/sh/sh-protos.h (sh_attr_renesas_p,
882         sh_promote_prototypes): Likewise.
883         * config/sh/sh.c (sh_return_in_memory, sh_pass_by_reference,
884         sh_callee_copies, sh_promote_prototypes, shcompact_byref,
885         sh_attr_renesas_p): Likewise.
886         * config/sparc/sparc-protos.h (function_value,
887         function_arg_padding): Likewise.
888         * config/sparc/sparc.c (sparc_promote_prototypes,
889         sparc_return_in_memory, sparc_pass_by_reference,
890         TARGET_PROMOTE_FUNCTION_ARGS, TARGET_PROMOTE_FUNCTION_RETURN,
891         function_arg_record_value_2, function_arg_record_value_1,
892         function_arg_record_value, function_arg_record_value,
893         function_arg_padding, function_value): Likewise.
894         * config/spu/spu-protos.h (spu_function_value): Likewise.
895         * config/spu/spu.c (spu_pass_by_reference, spu_return_in_memory,
896         spu_function_value): Likewise.
897         * config/stormy16/stormy16-protos.h (xstormy16_function_value):
898         Likewise.
899         * config/stormy16/stormy16.c (xstormy16_return_in_memory,
900         xstormy16_function_value, TARGET_PROMOTE_FUNCTION_ARGS,
901         TARGET_PROMOTE_FUNCTION_RETURN, TARGET_PROMOTE_PROTOTYPES):
902         Likewise.
903         * config/v850/v850.c (v850_return_in_memory,
904         v850_pass_by_reference, TARGET_PROMOTE_PROTOTYPES): Likewise.
905         * config/vax/vax.c (TARGET_PROMOTE_PROTOTYPES): Likewise.
906         * config/xtensa/xtensa.c (xtensa_return_in_msb,
907         xtensa_return_in_memory, TARGET_PROMOTE_FUNCTION_ARGS,
908         TARGET_PROMOTE_FUNCTION_RETURN, TARGET_PROMOTE_PROTOTYPES):
909         Likewise.
910         * explow.c (promote_mode, hard_function_value): Likewise.
911         * expr.h (hard_function_value, promote_mode): Likewise.
912         * function.c (aggregate_value_p): Likewise.
913         * hooks.c (hook_bool_const_tree_true): New.
914         * hooks.h (hook_bool_const_tree_true): New.
915         * sdbout.c (SET_KNOWN_TYPE_TAG, plain_type_1): Constify.
916         * target-def.h (TARGET_PROMOTE_FUNCTION_ARGS,
917         TARGET_PROMOTE_FUNCTION_RETURN, TARGET_PROMOTE_PROTOTYPES,
918         TARGET_RETURN_IN_MSB): Likewise.
919         * target.h (promote_function_args, promote_function_return,
920         promote_prototypes, return_in_memory, return_in_msb,
921         pass_by_reference, must_pass_in_stack, callee_copies,
922         function_value): Likewise.
923         * targhooks.c (default_return_in_memory,
924         hook_pass_by_reference_must_pass_in_stack,
925         hook_callee_copies_named,
926         hook_bool_CUMULATIVE_ARGS_mode_tree_bool_false,
927         hook_bool_CUMULATIVE_ARGS_mode_tree_bool_true,
928         default_function_value): Likewise. 
929         * targhooks.h (default_return_in_memory,
930         hook_pass_by_reference_must_pass_in_stack,
931         hook_callee_copies_named,
932         hook_bool_CUMULATIVE_ARGS_mode_tree_bool_false,
933         hook_bool_CUMULATIVE_ARGS_mode_tree_bool_true,
934         default_function_value): Likewise.
935         * tree-ssa-structalias.c (const_equiv_class_label_t): New.
936         (equiv_class_label_hash, equiv_class_label_eq): Constify.
937         * tree-vectorizer.c (bb_in_loop_p): Likewise.
938         * tree.c (needs_to_live_in_memory): Likewise.
939         * tree.h (struct tree_type, needs_to_live_in_memory,
940         aggregate_value_p, must_pass_in_stack_var_size,
941         must_pass_in_stack_var_size_or_pad): Likewise.
942         * vmsdbgout.c (write_debug_addr, write_debug_delta4,
943         write_debug_string, ASM_OUTPUT_DEBUG_STRING, write_rtnbeg,
944         lookup_filename): Likewise.
945
946 2007-08-23  Uros Bizjak  <ubizjak@gmail.com>
947
948         PR target/17390
949         * config/i386/i386.c (ix86_expand_fp_compare): Expand fp comparison to
950         fake fcomi i387 instruction for !TARGET_CMOVE.
951         (ix86_expand_branch): Expand natural sequence with one jump for
952         all targets, not only TARGET_CMOVE.
953         * config/i386/i386.md (*cmpfp_0_cc): New define_insn_and_split
954         pattern to implement fake fcomi sequence.  Split instruction after
955         reload to correct compare sequences.
956         (*cmpfp_xf_cc): Ditto.
957         (*cmpfp_<mode>_cc): Ditto.
958         (*cmpfp_u_cc): Ditto.
959         (*cmpfp_<mode>_cc): Ditto.
960
961 2007-08-23  Richard Guenther  <rguenther@suse.de>
962
963         * tree-pretty-print.c (dump_generic_node): Annotate
964         GIMPLE_MODIFY_STMTs with volatile ops with "{v}".
965
966 2007-08-23  Richard Guenther  <rguenther@suse.de>
967
968         * builtins.c (expand_builtin_mathfn): Wrap argument in
969         save_expr directly instead of re-building the call.
970         (expand_builtin_mathfn_2): Likewise.
971         (expand_builtin_mathfn_3): Likewise.
972         (expand_builtin_interclass_mathfn): Likewise.
973         (expand_builtin_int_roundingfn): Set arg.
974         (expand_builtin_int_roundingfn_2): Likewise.
975
976 2007-08-23  Paolo Bonzini  <bonzini@gnu.org>
977
978         * config/i386/sse.md (*sse_and<mode>3, *sse_ior<mode>3,
979         *sse_nand<mode>3, *sse_xor<mode>3): New.
980
981 2007-08-23  Uros Bizjak  <ubizjak@gmail.com>
982
983         * config/i386/i386.h (PRINT_OPERAND_PUNCT_VALID_P): Add ';' code.
984         * config/i386/i386.c (print_operand): Handle ';' code.  Output
985         semicolon for TARGET_MACHO.
986         * config/i386/sync.md (*sync_compare_and_swap<mode>): Use '%;' to
987         emit semicolon after 'lock' prefix.
988         (sync_double_compare_and_swap<mode>): Ditto.
989         (*sync_double_compare_and_swapdi_pic): Ditto.
990         (*sync_compare_and_swap_cc<mode>): Ditto.
991         (sync_double_compare_and_swap_cc<mode>): Ditto.
992         (*sync_double_compare_and_swap_ccdi_pic): Ditto.
993         (sync_old_add<mode>): Ditto.
994         (sync_add<mode>): Ditto.
995         (sync_sub<mode>): Ditto.
996         (sync_ior<mode>): Ditto.
997         (sync_and<mode>): Ditto.
998         (sync_xor<mode>): Ditto.
999
1000 2007-08-22  Chao-ying Fu  <fu@mips.com>
1001
1002         * rtl.c (rtx_code_size): Check CONST_FIXED to calcualte correct sizes
1003         in DEF_RTL_EXPR.
1004         (copy_rtx): Handle CONST_FIXED.
1005         (rtx_equal_p): Likewise.
1006         * rtl.h (fixed_value.h): New include.
1007         (rtx_def): Add a new field of fixed_value to u.
1008         (XCNMPFV): Define for accessing fixed_value.
1009         (CONST_FIXED_VALUE, CONST_FIXED_VALUE_HIGH, CONST_FIXED_VALUE_LOW):
1010         Define.
1011         * rtl.def (CONST_FIXED): New constant.
1012         (SS_MULT, US_MULT, SS_DIV, US_DIV, FRACT_CONVERT,
1013         UNSIGNED_FRACT_CONVERT, SAT_FRACT, UNSIGNED_SAT_FRACT, US_NEG,
1014         US_ASHIFT): New codes.
1015         * doc/rtl.texi (Expressions): Document const_fixed, us_neg, ss_mult,
1016         us_mult, ss_div, us_div, us_ashift, fract_convert, sat_fract,
1017         unsigned_fract_convert, unsigned_sat_fract): Document them.
1018         * varasm.c (assemble_integer): Extend to support fixed-point constants
1019         by using different machine classes.
1020         (decode_addr_const): Handle FIXED_CST.
1021         (const_hash_1): Likewise.
1022         (compare_constant): Likewise.
1023         (copy_constant): Likewise.
1024         (const_rtx_hash_1): Handle CONST_FIXED.
1025         (output_constant_pool_2): Handle MODE_FRACT, MODE_UFRACT, MODE_ACCUM,
1026         MODE_UACCUM, MODE_VECTOR_FRACT, MODE_VECTOR_UFRACT, MODE_VECTOR_ACCUM,
1027         MODE_VECTOR_UACCUM.
1028         (initializer_constant_valid_p): Handle FIXED_CST.
1029         (output_constant): Support FIXED_POINT_TYPE.
1030         * gengenrtl.c (excluded_rtx): Check CONST_FIXED to exclude.
1031         * cse.c (hash_rtx): Support CONST_FIXED.
1032         (exp_equiv_p): Likewise.
1033         (cannon_reg): Likewise.
1034         (fold_rtx): Likewise.
1035         (equiv_constant): Likewise.
1036         (cse_process_notes_1): Likewise.
1037         (count_reg_usage): Likewise.
1038         * cselib.c (entry_and_rtx_equal_p): Check CONST_FIXED.
1039         (rtx_equal_for_cselib_p): Handle CONST_FIXED.
1040         (wrap_constant): Check CONST_FIXED.
1041         (cselib_hash_rtx): Support CONST_FIXED.
1042         (cselib_subst_to_values): Likewise.
1043         * df-scan.c (df_uses_record): Likewise.
1044         * gcse.c (want_to_gcse_p): Likewise.
1045         (oprs_unchanged_p): Likewise.
1046         (oprs_not_set_p): Likewise.
1047         (compute_transp): Likewise.
1048         (extract_mentioned_regs_helper): Likewise.
1049         * genemit.c (gen_exp): Likewise.
1050         * local-alloc.c (equiv_init_varies_p): Likewise.
1051         (contains_replace_regs): Likewise.
1052         (memref_referenced_p): Likewise.
1053         * loop-invariant.c (check_maybe_invariant): Likewise.
1054         (hash_invariant_expr_1): Likewise.
1055         (invariant_expr_equal_p): Likewise.
1056         * postreload-gcse.c (oprs_unchanged_p): Likewise.
1057         * regclass.c (reg_scan_mark_refs): Likewise.
1058         * regrename.c (scan_rtx): Likewise.
1059         * resource.c (mark_referenced_resources): Likewise.
1060         (mark_set_resources): Likewise.
1061         * rtlanal.c (rtx_unstable_p): Likewise.
1062         (rtx_varies_p): Likewise.
1063         (count_occurrences): Likewise.
1064         (reg_mentioned_p): Likewise.
1065         (modified_between_p): Likewise.
1066         (modified_in_p): Likewise.
1067         (volatile_insn_p): Likewise.
1068         (volatile_refs_p): Likewise.
1069         (side_effects_p): Likewise.
1070         (may_trap_p_1): Likewise.
1071         (inequality_comparisons_p): Likewise.
1072         (computed_jump_p_1): Likewise.
1073         (commutative_operand_precedence): Likewise.
1074         * sched-deps.c (sched_analyze_2): Likewise.
1075         * sched-vis.c (print_value): Likewise.
1076         * reload.c (operands_match_p): Likewise.
1077         (subst_reg_equivs): Likewise.
1078         * reload1.c (eliminate_regs_1): Likewise.
1079         (elimination_effects): Likewise.
1080         (scan_paradoxical_subregs): Likewise.
1081         * alias.c (rtx_equal_for_memref_p): Likewise.
1082         * Makefile.in (RTL_BASE_H): Add fixed-value.h.
1083         * emit-rtl.c (const_fixed_htab): New hash table.
1084         (const_fixed_htab_hash, const_fixed_htab_eq, lookup_const_fixed):
1085         Declare.
1086         (const_fixed_htab_hash, const_fixed_htab_eq, lookup_const_fixed,
1087         const_fixed_from_fixed_value): New functions.
1088         (verify_rtx_sharing): Handle CONST_FIXED.
1089         (copy_rtx_if_shared_1): Likewise.
1090         (reset_used_flags): Likewise.
1091         (set_used_flags): Likewise.
1092         (copy_insn_1): Likewise.
1093         (init_emit_once): Create const_fixed_htab.
1094         Store fixed-point scalar and vector zero and one to const_tiny_rtx.
1095
1096 2007-08-22  Zdenek Dvorak  <ook@ucw.cz>
1097
1098         PR tree-optimization/32949
1099         * tree-ssa-loop-niter.c (scev_probably_wraps_p): Test nowrap_type_p
1100         before failing for ivs with non-constant step.
1101
1102 2007-08-22  Hans-Peter Nilsson  <hp@axis.com>
1103
1104         * doc/md.texi (Iterators): Renamed from Macros.  All contents
1105         changed to reflect rename of respectively define_code_macro and
1106         define_mode_macro to define_code_iterator and define_mode_iterator.
1107         (Mode Iterators, Code Iterators): Similar.
1108         * read-rtl.c (struct iterator_group, struct iterator_traverse_data)
1109         (uses_mode_iterator_p, apply_mode_iterator, uses_code_iterator_p)
1110         (apply_iterator_to_string, uses_iterator_p, apply_iterator_traverse)
1111         (initialize_iterators, find_iterator, check_code_iterator)
1112         (map_attr_string, apply_mode_maps, apply_iterator_to_rtx, add_mapping)
1113         (read_mapping, read_rtx_1): Similar.
1114         * config/alpha/sync.md, config/alpha/alpha.md, config/frv/frv.md,
1115         config/s390/s390.md, config/m32c/blkmov.md, config/m32c/m32c.md,
1116         config/spu/spu.md, config/sparc/sparc.md, config/sparc/sync.md,
1117         config/i386/i386.md, config/i386/mmx.md, config/i386/sse.md,
1118         config/i386/sync.md, config/crx/crx.md, config/xtensa/xtensa.md,
1119         config/cris/cris.c, config/cris/cris.md, config/ia64/sync.md,
1120         config/ia64/div.md, config/ia64/vect.md, config/ia64/ia64.md,
1121         config/m68k/m68k.md, config/rs6000/spe.md, config/rs6000/altivec.md,
1122         config/rs6000/sync.md, config/rs6000/rs6000.md,
1123         config/arm/vec-common.md, config/arm/neon.md, config/arm/iwmmxt.md,
1124         config/arm/arm.md, config/mips/mips-dsp.md, config/mips/mips.md,
1125         config/vax/vax.md, config/bfin/bfin.md: Similar.
1126
1127 2007-08-22  David Daney  <ddaney@avtrex.com>
1128
1129         * doc/install.texi (Testing): Mention testing on a simulator.
1130
1131 2007-08-22  Janis Johnson  <janis187@us.ibm.com>
1132
1133         * config/dfp-bit.c (DFP_TO_DFP): Check for overflow.
1134
1135         * doc/libgcc.texi (Decimal float library routines): Fix formatting
1136         and rearrange floating point conversion functions into different
1137         categories.
1138
1139 2007-08-22  Maxim Kuvyrkov  <maxim@codesourcery.com>
1140
1141         * target.h (struct gcc_target.sched: dfa_pre_advance_cycle,
1142         dfa_post_advance_cycle): New scheduler hooks.
1143         * target-def.h (TARGET_SCHED_DFA_PRE_ADVANCE_CYCLE,
1144         TARGET_SCHED_DFA_POST_ADVANCE_CYCLE): New macros to initialize
1145         new hooks.
1146         (TARGET_SCHED): Use them.
1147         * doc/tm.texi (TARGET_SCHED_DFA_PRE_ADVANCE_CYCLE,
1148         TARGET_SCHED_DFA_POST_ADVANCE_CYCLE): Document new hooks.
1149         * haifa-sched.c (advance_one_cycle): Invoke new hooks.
1150
1151         * genautomata.c (insn_has_dfa_reservation_p): New DFA interface
1152         function to facilitate debugging.
1153         (INSN_HAS_DFA_RESERVATION_P_FUNC_NAME): New macro.
1154         (output_insn_has_dfa_reservation_p): New static function to output
1155         insn_has_dfa_reservation_p ().
1156         (write_automata): Use it.
1157         * genattr.c (main): Output declaration for
1158         insn_has_dfa_reservation_p ().
1159
1160 2007-08-22  Christian Bruel  <christian.bruel@st.com>   
1161             Richard Guenther <rguenther@suse.de>
1162         
1163         * fold-const.c (fold_binary): Optimize A-A if -ffinite-math-only.
1164         * simplify_rtx (simplify_binary_operation_1): Likewise.
1165                 
1166 2007-08-22  Rask Ingemann Lambertsen  <rask@sygehus.dk>
1167
1168         PR rtl-optimization/32557
1169         * df-problems.c (df_note_bb_compute): Use mws->start_regno instead
1170         of REGNO (mws->mw_reg).
1171
1172 2007-08-22  Richard Guenther  <rguenther@suse.de>
1173
1174         PR middle-end/33007
1175         * builtins.c (expand_builtin_int_roundingfn): Replace call
1176         argument wrapped with SAVE_EXPR directly.
1177         (expand_builtin_int_roundingfn_2): Likewise.
1178
1179 2007-08-22  Richard Guenther  <rguenther@suse.de>
1180
1181         * tree-inline.c (inlinable_function_p): Restore disregarding
1182         inline limits for GNU extern inline functions.
1183
1184 2007-08-22  Richard Guenther  <rguenther@suse.de>
1185
1186         PR middle-end/32563
1187         * tree.c (host_integerp): Treat sizetype as signed as it is
1188         sign-extended.
1189
1190 2007-08-21  Ian Lance Taylor  <iant@google.com>
1191
1192         PR tree-optimization/33134
1193         * tree-vrp.c (adjust_range_with_scev): Call
1194         set_value_range_to_value.
1195
1196 2007-08-21  Aldy Hernandez  <aldyh@redhat.com>
1197
1198         * value-prof.h (gimple_remove_histogram_value): Remove duplicate
1199         prototype.
1200         
1201 2007-08-21  Aldy Hernandez  <aldyh@redhat.com>
1202
1203         * tree-flow-inline.h (next_imm_use_stmt): Remove unecessary
1204         whitespace.
1205
1206 2007-08-21  Nathan Froyd  <froydnj@codesourcery.com>
1207
1208         * config/rs6000/rs6000.c (expand_block_clear): Add TARGET_SPE
1209         cases to set eight bytes at a time.
1210         (expand_block_move): Likewise.
1211         
1212 2007-08-21  Jakub Jelinek  <jakub@redhat.com>
1213
1214         PR debug/32610
1215         * dwarf2out.c (gen_decl_die): Don't call
1216         gen_tagged_type_instantiation_die if decl doesn't have tagged type.
1217
1218 2007-08-21  Paul Brook  <paul@codesourcery.com>
1219             Nathan Sidwell  <nathan@codesourcery.com>
1220             Mark Mitchell  <mark@codesourcery.com>
1221             Joseph Myers  <joseph@codesourcery.com>
1222
1223         * configure.ac: Add --with-pkgversion and --with-bugurl.
1224         * configure: Regenerate.
1225         * doc/install.texi: Document them.
1226         * version.c (version_string): Remove VERSUFFIX.
1227         (VERSUFFIX): Remove.
1228         (pkgversion_string): New.
1229         (bug_report_url): Do not hard-code initializer.
1230         * version.h (pkgversion_string): Declare.
1231         * Makefile.in (PKGVERSION_s, BUGURL_s, PKGVERSION, BUGURL_TEXI):
1232         Define.
1233         (version.o): Define PKGVERSION and BUGURL.
1234         (gcc-vers.texi): Define VERSION_PACKAGE and BUGURL.
1235         (%.pod): Define BUGURL.
1236         * gcc.c (process_command, main): Use pkgversion_string.
1237         * toplev.c (compile_file, print_version): Likewise.
1238         * protoize.c (main): Likewise.
1239         * gcov.c (print_version): Likewise.  Update copyright date.
1240         * gcov-dump.c (print_version): Likewise.  Update copyright date.
1241         * mips-tdump.c (main): Likewise.  Update copyright date.
1242         * mips-tfile.c (main): Likewise.  Update copyright date.
1243         * doc/include/gcc-common.texi: Include VERSION_PACKAGE as subtitle.
1244         * doc/bugreport.texi: Use BUGURL for bug-reporting instructions;
1245         shorten description.
1246         * doc/gcc.texi: Include VERSION_PACKAGE in version description.
1247         * doc/gccint.texi: Likewise.
1248         * doc/invoke.texi: Use BUGURL for bug-reporting instructions.
1249         Update copyright date.
1250
1251 2007-08-21  Uros Bizjak  <ubizjak@gmail.com>
1252
1253         * config/i386/i386.c (ix86_expand_clear): Use FLAGS_REG.
1254         (ix86_expand_strlensi_unroll_1): Ditto.
1255         (ix86_expand_branch): Use FLAGS_REG and FPSR_REG.
1256         (ix86_expand_carry_flag_compare): Update comment.
1257
1258 2007-08-21  Jakub Jelinek  <jakub@redhat.com>
1259
1260         PR middle-end/32912
1261         * fold-const.c (fold_unary): Optimize BIT_NOT_EXPR of VECTOR_CST.
1262         (fold_binary): Handle vectors in X | ~X and X ^ ~X optimizations.
1263
1264 2007-08-21  Richard Guenther  <rguenther@suse.de>
1265
1266         * fold-const.c (fold_binary): Revert removing of index +p PTR folding.
1267
1268 2007-08-21  Richard Guenther  <rguenther@suse.de>
1269
1270         PR middle-end/33122
1271         * fold-const.c (fold_binary): Remove index +p PTR folding.
1272         Fix types of POINTER_PLUS_EXPR generated by folding of
1273         (PTR +p B) +p A.
1274
1275 2007-08-20  Chao-ying Fu  <fu@mips.com>
1276
1277         * c-common.h (enum rid): Add new enumeration values of RID_SAT,
1278         RID_FRACT, and RID_ACCUM.  RID_SAT needs to be inserted before
1279         RID_ONEWAY, so that it can be checked in declspecs_add_type.
1280         (c_common_fixed_point_type_for_size): Declare.
1281         * c-parser.c (reswords): Add _Fract, _Accum, and _Sat.
1282         (c_token_starts_typename): Handle RID_FRACT, RID_ACCUM, and RID_SAT.
1283         (c_token_starts_declspecs): Likewise.
1284         (c_parser_declspecs): Likewise.
1285         (c_parser_attributes): Likewise.
1286         * c-tree.h (enum c_typespec_keyword): Add cts_fract and cts_accum.
1287         (c_declspecs): Add saturating_p.
1288         * c-decl.c (build_null_declspecs): Initialize saturating_p.
1289         (declspecs_add_type): Avoid using complex with _Fract, _Accum, or
1290         _Sat.  Handle RID_SAT.
1291         Avoid using void, bool, char, int, float, double, _Decimal32,
1292         _Decimal64, _Decimal128, and complex with _Sat.
1293         Handle RID_FRACT and RID_ACCUM.
1294         Make sure _Sat is used with _Fract or _Accum.
1295         (finish_declspecs): Handle cts_fract and cts_accum.
1296         * c-common.c (fixed-value.h): New include.
1297         (constant_expression_warning): Handle FIXED_CST.
1298         (overflow_warning): Likewise.
1299         (warnings_for_convert_and_check): Likewise.
1300         (c_common_fixed_point_type_for_size): New.
1301         (c_common_type_for_mode): Handle fixed-point modes to
1302         return various saturating/non-saturating, signed/unsigned types.
1303         (c_common_signed_or_unsigned_type): Support fixed-point types.
1304         (shorten_compare): Check fixed-point zero.
1305         Handle FIXED_POINT_TYPE.
1306         (c_common_truthvalue_conversion): Handle FIXED_CST.
1307         Handle FIXED_POINT_TYPE.
1308         (c_common_nodes_and_builtins): Record builtin types for fixed-point
1309         types.
1310         (handle_mode_attribute): Handle fixed-point modes.  Need to check
1311         if the signness of base type and fixed-point modes are consistent.
1312         (handle_vector_size_attribute): Handle fixed-point modes.
1313         (same_scalar_type_ignoring_signedness): Handle FIXED_POINT_TYPE.
1314         (warn_for_div_by_zero): Check fixed-point zero.
1315         * c-typeck.c (c_common_type): Check FIXED_POINT_TYPE.  Build
1316         a common fixed-point type based on fbit, ibit, sign, and saturation.
1317         (build_unary_op): Allow FIXED_POINT_TYPE for CONVERT_EXPR,
1318         NEGATE_EXPR, TRUTH_NOT_EXPR, PREINCREMENT_EXPR, POSTINCREMENT_EXPR,
1319         PREDECREMENT_EXPR, and POSTDECREMENT_EXPR.
1320         (convert_for_assignment): Support FIXED_POINT_TYPE.
1321         (digest_init): Handle FIXED_POINT_TYPE.
1322         (build_binary_op): Support FIXED_POINT_TYPE in *_DIV_EXPR,
1323         TRUTH_ANDIF_EXPR, TRUTH_ORIF_EXPR, TRUTH_AND_EXPR, TRUTH_OR_EXPR,
1324         TRUTH_XOR_EXPR, RSHIFT_EXPR, LSHIFT_EXPR, EQ_EXPR, NE_EXPR, LE_EXPR,
1325         GE_EXPR, LT_EXPR, GT_EXPR.
1326         * target-def.h (TARGET_FIXED_POINT_SUPPORTED_P): New.
1327         (TARGET_INITIALIZER): Add TARGET_FIXED_POINT_SUPPORTED_P.
1328         * target.h (gcc_target): Add fixed_point_supported_p.
1329         * targhooks.c (default_scalar_mode_supported_p): Handle MODE_FRACT,
1330         MODE_UFRACT, MODE_ACCUM, and MODE_UACCUM.
1331         (default_fixed_point_supported_p): Define.
1332         * targhooks.h (default_fixed_point_supported_p): Declare.
1333         * doc/tm.texi (TARGET_FIXED_POINT_SUPPORTED_P): Add.
1334         * doc/install.texi (Configuration): Add --enable-fixed-point.
1335         * configure.ac (--enable-fixed-point): New to enable fixed-point
1336         arithmetic extension to C.  For mips targets, we enable it by default.
1337         * configure, config.in: Regenerate.
1338
1339 2007-08-20  Pawel Sikora  <pluto@pld-linux.org>
1340
1341         * doc/invoke.texi (-Wnon-virtual-dtor): Update documentation.
1342
1343 2007-08-20  David Edelsohn  <edelsohn@gnu.org>
1344
1345         * dwarf2out.c (text_section_used): Move declaration outside ifdef
1346         DWARF2_DEBUGGING_INFO.
1347         (cold_text_section_used): Same.
1348         (cold_text_section): Same.
1349
1350 2007-08-20  Richard Guenther  <rguenther@suse.de>
1351
1352         * c-typeck.c (convert_for_assignment): Use the type of
1353         the member for the initialization.
1354
1355 2007-08-20  Richard Guenther  <rguenther@suse.de>
1356
1357         * c-objc-common.c (c_disregard_inline_limits): Remove.
1358         * c-objc-common.h (c_disregard_inline_limits): Likewise.
1359         * cgraphunit.c (cgraph_process_new_functions): Call
1360         disregard_inline_limits_p.
1361         (cgraph_preserve_function_body_p): Likewise.
1362         * ipa-inline.c (compute_inline_parameters): Likewise.
1363         * langhooks-def.h (lhd_tree_inlining_disregard_inline_limits):
1364         Remove.
1365         (LANG_HOOKS_TREE_INLINING_DISREGARD_INLINE_LIMITS): Remove.
1366         (LANG_HOOKS_TREE_INLINING_INITIALIZER): Remove initializer for
1367         disregard_inline_limits langhook.
1368         * langhooks.c (lhd_tree_inlining_disregard_inline_limits):
1369         Remove.
1370         * langhooks.h (lang_hooks_for_tree_inlining): Remove
1371         disregard_inline_limits langhook.
1372         * tree-inline.c (disregard_inline_limits_p): New function.
1373         * tree-inline.h (disregard_inline_limits_p): Declare.
1374
1375 2007-08-20  Richard Guenther  <rguenther@suse.de>
1376
1377         * langhooks-def.h (lhd_tree_inlining_auto_var_in_fn_p): Remove.
1378         (LANG_HOOKS_TREE_INLINING_AUTO_VAR_IN_FN_P): Likewise.
1379         (LANG_HOOKS_TREE_INLINING_INITIALIZER): Remove initializer for
1380         auto_var_in_fn_p langhook.
1381         * langhooks.c (lhd_tree_inlining_auto_var_in_fn_p): Rename and
1382         move ...
1383         * tree.c (auto_var_in_fn_p): ... here.
1384         (find_var_from_fn): Call auto_var_in_fn_p directly.
1385         * langhooks.h (lang_hooks_for_tree_inlining): Remove
1386         auto_var_in_fn_p langhook.
1387         * tree-inline.c (remap_decls): Call auto_var_in_fn_p directly.
1388         (copy_body_r): Likewise.
1389         (self_inlining_addr_expr): Likewise.
1390         * tree.h (auto_var_in_fn_p): Declare.
1391
1392 2007-08-20  Richard Guenther  <rguenther@suse.de>
1393
1394         * tree.c (WALK_SUBTREE): Call walk_tree_1.
1395         (walk_type_fields): Take lh parameter.
1396         (walk_tree): Rename to ...
1397         (walk_tree_1): ... this.  Do not call the walk_subtrees
1398         langhook but the now passed callback.  Pass lh on recursion.
1399         (walk_tree_without_duplicates): Rename to ...
1400         (walk_tree_without_duplicates_1): ... this.  Take lh parameter
1401         and call walk_tree_1.
1402         * tree.h (walk_tree_lh): New typedef.
1403         (walk_tree_1): Declare.
1404         (walk_tree_without_duplicates_1): Likewise.
1405         (walk_tree): New define to walk_tree_1 with NULL lh parameter.
1406         (walk_tree_without_duplicates): New define to
1407         walk_tree_without_duplicates_1 with NULL lh parameter.
1408         * langhooks.c (lhd_tree_inlining_walk_subtrees): Remove.
1409         * langhooks.h (lang_hooks_for_tree_inlining): Remove walk_subtrees
1410         langhook.
1411         * langhooks-def.h (lhd_tree_inlining_walk_subtrees): Remove.
1412         (LANG_HOOKS_TREE_INLINING_WALK_SUBTREES): Likewise.
1413         (LANG_HOOKS_TREE_INLINING_INITIALIZER): Remove walk_subtrees
1414         initializer.
1415
1416 2007-08-20  Andrew Pinski  <andrew_pinski@playstation.sony.com>
1417
1418         PR middle-end/30564
1419         * tree-inline.c (optimize_inline_calls): Move the cgraph checking
1420         code in front of the compacting of basic blocks.
1421         Move the folding of statements inbetween the cgraph checking
1422         and compacting of basic blocks.
1423
1424 2007-08-19  Andrew Pinski  <andrew_pinski@playstation.sony.com>
1425            Serge Belyshev  <belyshev@depni.sinp.msu.ru>
1426
1427         PR target/32522
1428         * config/alpha/alpha.c (va_list_skip_additions): Check for
1429         POINTER_PLUS_EXPR in addition to PLUS_EXPR.
1430         (alpha_stdarg_optimize_hook): Look for POINTER_PLUS_EXPR instead of
1431         PLUS_EXPR when checking ap.__base.
1432         (alpha_va_start): Create POINTER_PLUS_EXPR instead of PLUS_EXPR
1433         when doing addition on pointer types.  Use size_int instead of
1434         build_int_cst.
1435         (alpha_gimplify_va_arg_1): Likewise, but use sizetype instead of
1436         ptr_type in the second operand.
1437
1438 2007-08-19  Andrew Pinski  <pinskia@gmail.com>
1439
1440         PR target/33115
1441         * config/i386/darwin.h (CC1_SPEC): Add %(cc1_cpu) in front.
1442
1443 2007-08-19  Andrew Pinski  <andrew_pinski@playstation.sony.com>
1444
1445         PR middle-end/32940
1446         * cfgexpand.c  (expand_one_register_var): Mark pointer
1447         DECL_ARTIFICIAL as REG_POINTER also.
1448         * stmt.c (expand_decl): Likewise.
1449
1450 2007-08-19  Daniel Berlin  <dberlin@dberlin.org>
1451
1452         Fix PR 32772
1453         Fix PR 32716
1454         Fix PR 32328
1455         Fix PR 32303
1456
1457         * tree-flow.h (struct stmt_ann_d): Remove makes_clobbering_call.
1458         * tree-ssa-alias.c (init_transitive_clobber_worklist): Add
1459         on_worklist argument and avoid adding things to worklist multiple
1460         times.
1461         (add_to_worklist): Ditto.
1462         (mark_aliases_call_clobbered): Mark entire structure clobbered if
1463         single SFT is clobbered.
1464         (set_initial_properties): Ditto.
1465         (compute_call_clobbered): Update for changes to function
1466         arguments.
1467         (create_overlap_variables_for): Always create SFT for offset 0.
1468         (create_structure_vars): Handle PHI's, since we are in SSA form at
1469         this point.
1470         * tree-ssa-loop-ivopts.c (get_ref_tag): Don't return subvars.
1471         * tree-ssa-operands.c (access_can_touch_variable): Don't handle
1472         TARGET_MEM_REF.
1473         (add_vars_for_offset): Figure out aliases from access + points-to.
1474         (add_virtual_operand): Use add_vars-for_offset.
1475         (get_tmr_operands): Update for NMT changes, rewrite to be correct.
1476         (add_call_clobber_ops): Remove makes_clobbering_call set.
1477         (get_expr_operands): Always pass through the INDIRECT_REF
1478         reference.
1479         * tree-ssa-structalias.c (struct constraint_graph): Remove
1480         variables member.
1481         Add pe, pe_rep, pointer_label, loc_label, pointed_by, points_to,
1482         address_taken, pt_used, number_incoming.
1483         (FIRST_ADDR_NODE): Removed.
1484         (merge_graph_nodes): Remove broken code for the moment.
1485         (init_graph): New function.
1486         (build_pred_graph): Remove code to init_graph.
1487         Add location equivalence support.
1488         (struct scc_info): Rename roots to deleted.
1489         (scc_visit): Ditto.
1490         (init_scc_info): Ditto
1491         (init_topo_info): Use graph->size.
1492         (compute_topo_order): Ditto.
1493         (do_da_constraint): Removed.
1494         (do_sd_constraint): Remove calls to find().
1495         set_union_with_increment should always get 0 as last arg here.
1496         (do_complex_constraint): Replace do_da_constraint with assert.
1497         Stop calling find.
1498         (struct equiv_class_label): New.
1499         (pointer_equiv_class_table): Ditto.
1500         (location_equiv_class_table): Ditto.
1501         (equiv_class_label_hash): Ditto.
1502         (equiv_class_label_eq): Ditto
1503         (equiv_class_lookup): Ditto.
1504         (equiv_class_ladd): Ditto.
1505         (pointer_equiv_class): Ditto.
1506         (location_equiv_class): Ditto.
1507         (condense_visit): Rename and rewrite from label_visit to do only
1508         SCC related stuff for HU.
1509         (label_visit): Do HU work for HU.
1510         (perform_var_substitution): Update to do HU and location
1511         equivalence.
1512         (free_var_substitution_info): Update to free HU and location
1513         equivalence structures.  */
1514         (find_equivalent_node): Update for pointer but not location
1515         equivalence.
1516         (unite_pointer_equivalences): New function.
1517         (move_complex_constraints): Rewrite to only do moving.
1518         (rewrite_constraints): Split out of move_complex_constraints.
1519         (solve_graph): Use graph->size.
1520         (process_constraint_1): Add from_call argument, use it.
1521         Split *a = &b into two constraints.
1522         (process_constraint): Use new process_constraint_1.
1523         (get_constraint_for_component_ref): Handle bitmaxsize == -1 case.
1524         (get_constraint_for): Handle non-pointer integers properly.
1525         Remove code that used to handle structures.
1526         (handle_ptr_arith): Fix a few bugs in pointer arithmetic handling
1527         with unknown addends.
1528         (handle_rhs_call): New function.
1529         (find_func_aliases): Use handle_rhs_call.
1530         (set_uids_in_ptset): Add an assert.
1531         (set_used_smts): Fix bug in not considering unified vars.
1532         (compute_tbaa_pruning): Stop initing useless iteration_obstack.
1533         (compute_points_to_sets): Update for other function changes.
1534         (delete_points_to_sets): Ditto.
1535         (ipa_pta_execute): Ditto.
1536         (pass_ipa_pta): We need to update SSA after ipa_pta.
1537         
1538 2007-08-19  Jan Hubicka  <jh@suse.cz>
1539
1540         * i386.md: Replace "rim" and "mri" constraints by "g".
1541
1542 2007-08-19  Joseph Myers  <joseph@codesourcery.com>
1543
1544         * dwarf2out.c (text_section_used, cold_text_section_used,
1545         cold_text_section, dwarf2out_note_section_used): New.
1546         (dwarf2out_init): Initialize cold_text_section.
1547         (dwarf2out_switch_text_section, dwarf2out_begin_function): Call
1548         dwarf2out_note_section_used.
1549         (size_of_aranges): Only count entry for text section if it was
1550         used.  Count entry for cold text section if it was used.
1551         (output_aranges): Only output entries for text section and cold
1552         text section if they were used.
1553
1554 2007-08-19  Andrew Pinski  <pinskia@gmail.com>
1555
1556         * tree-pretty-print.c (debug_generic_expr): Add a comment about
1557         the function.
1558         (debug_generic_stmt): Likewise.
1559         (debug_tree_chain): Likewise.
1560
1561 2007-08-19  Dorit Nuzman  <dorit@il.ibm.com>
1562
1563         * tree-data-refs.c (split_constant_offset): Expose.
1564         * tree-data-refs.h (split_constant_offset): Add declaration.
1565
1566         * tree-vectorizer.h (dr_alignment_support): Renamed
1567         dr_unaligned_software_pipeline to dr_explicit_realign_optimized.
1568         Added a new value dr_explicit_realign.
1569         (_stmt_vec_info): Added new fields: dr_base_address, dr_init,
1570         dr_offset, dr_step, and dr_aligned_to, along with new access
1571         functions for these fields: STMT_VINFO_DR_BASE_ADDRESS,
1572         STMT_VINFO_DR_INIT, STMT_VINFO_DR_OFFSET, STMT_VINFO_DR_STEP, and
1573         STMT_VINFO_DR_ALIGNED_TO.
1574
1575         * tree-vectorizer.c (vect_supportable_dr_alignment): Add
1576         documentation.
1577         In case of outer-loop vectorization with non-fixed misalignment - use
1578         the dr_explicit_realign scheme instead of the optimized realignment
1579         scheme.
1580         (new_stmt_vec_info): Initialize new fields.
1581
1582         * tree-vect-analyze.c (vect_compute_data_ref_alignment): Handle the
1583         'nested_in_vect_loop' case. Change verbosity level.
1584         (vect_analyze_data_ref_access): Handle the 'nested_in_vect_loop' case.
1585         Don't fail on zero step in the outer-loop for loads.
1586         (vect_analyze_data_refs): Call split_constant_offset to calculate
1587         base, offset and init relative to the outer-loop.
1588
1589         * tree-vect-transform.c (vect_create_data_ref_ptr): Replace the unused
1590         BSI function argument with a new function argument - at_loop.
1591         Simplify the condition that determines STEP. Takes additional argument
1592         INV_P. Support outer-loop vectorization (handle the
1593         nested_in_vect_loop case), including zero step in the outer-loop. Call
1594         vect_create_addr_base_for_vector_ref with additional argument.
1595         (vect_create_addr_base_for_vector_ref): Takes additional argument LOOP.
1596         Updated function documentation. Handle the 'nested_in_vect_loop' case.
1597         Fixed and simplified calculation of step.
1598         (vectorizable_store): Call vect_create_data_ref_ptr with loop instead
1599         of bsi, and with additional argument. Call bump_vector_ptr with
1600         additional argument. Fix typos. Handle the 'nested_in_vect_loop' case.
1601         (vect_setup_realignment): Takes additional arguments INIT_ADDR and
1602         DR_ALIGNMENT_SUPPORT. Returns another value AT_LOOP. Handle the case
1603         when the realignment setup needs to take place inside the loop.
1604         Support the dr_explicit_realign scheme. Allow generating the optimized
1605         realignment scheme for outer-loop vectorization. Added documentation.
1606         (vectorizable_load): Support the dr_explicit_realign scheme. Handle
1607         the 'nested_in_vect_loop' case, including loads that are invariant in
1608         the outer-loop and the realignment schemes. Handle the case when the
1609         realignment setup needs to take place inside the loop. Call
1610         vect_setup_realignment with additional arguments.  Call
1611         vect_create_data_ref_ptr with additional argument and with loop instead
1612         of bsi. Fix 80-column overflow. Fix typos. Rename PHI_STMT to PHI.
1613         (vect_gen_niters_for_prolog_loop): Call
1614         vect_create_addr_base_for_vector_ref with additional arguments.
1615         (vect_create_cond_for_align_checks): Likewise.
1616         (bump_vector_ptr): Updated to support the new dr_explicit_realign
1617         scheme: takes additional argument bump; argument ptr_incr is now
1618         optional; updated documentation.
1619         (vect_init_vector): Takes additional argument (bsi). Use it, if
1620         available, to insert the vector initialization.
1621         (get_initial_def_for_induction): Pass additional argument in call to
1622         vect_init_vector.
1623         (vect_get_vec_def_for_operand): Likewise.
1624         (vect_setup_realignment): Likewise.
1625         (vectorizable_load): Likewise.
1626
1627 2007-08-19  Dorit Nuzman  <dorit@il.ibm.com>
1628
1629         * tree-vectorizer.h (vect_is_simple_reduction): Takes a loop_vec_info
1630         as argument instead of struct loop.
1631         (nested_in_vect_loop_p): New function.
1632         (vect_relevant): Add enum values vect_used_in_outer_by_reduction and
1633         vect_used_in_outer.
1634         (is_loop_header_bb_p): New. Used to differentiate loop-header phis
1635         from other phis in the loop.
1636         (destroy_loop_vec_info): Add additional argument to declaration.
1637
1638         * tree-vectorizer.c (supportable_widening_operation): Also check if
1639         nested_in_vect_loop_p (don't allow changing the order in this case).
1640         (vect_is_simple_reduction): Takes a loop_vec_info as argument instead
1641         of struct loop. Call nested_in_vect_loop_p and don't require
1642         flag_unsafe_math_optimizations if it returns true.
1643         (new_stmt_vec_info): When setting def_type for phis differentiate 
1644         loop-header phis from other phis.
1645         (bb_in_loop_p): New function.
1646         (new_loop_vec_info): Inner-loop phis already have a stmt_vinfo, so
1647         just update their loop_vinfo.  Order of BB traversal now matters -
1648         call dfs_enumerate_from with bb_in_loop_p.
1649         (destroy_loop_vec_info): Takes additional argument to control whether
1650         stmt_vinfo of the loop stmts should be destroyed as well.
1651         (vect_is_simple_reduction): Allow the "non-reduction" use of a
1652         reduction stmt to be defines by a non loop-header phi.
1653         (vectorize_loops): Call destroy_loop_vec_info with additional argument.
1654
1655         * tree-vect-transform.c (vectorizable_reduction): Call
1656         nested_in_vect_loop_p. Check for multitypes in the inner-loop.
1657         (vectorizable_call): Likewise.
1658         (vectorizable_conversion): Likewise.
1659         (vectorizable_operation): Likewise.
1660         (vectorizable_type_promotion): Likewise.
1661         (vectorizable_type_demotion): Likewise.
1662         (vectorizable_store): Likewise.
1663         (vectorizable_live_operation): Likewise.
1664         (vectorizable_reduction): Likewise. Also pass loop_info to
1665         vect_is_simple_reduction instead of loop.
1666         (vect_init_vector): Call nested_in_vect_loop_p.
1667         (get_initial_def_for_reduction): Likewise.
1668         (vect_create_epilog_for_reduction): Likewise.
1669         (vect_init_vector): Check which loop to work with, in case there's an
1670         inner-loop.
1671         (get_initial_def_for_inducion): Extend to handle outer-loop
1672         vectorization. Fix indentation.
1673         (vect_get_vec_def_for_operand): Support phis in the case vect_loop_def.
1674         In the case vect_induction_def get the vector def from the induction
1675         phi node, instead of calling get_initial_def_for_inducion.
1676         (get_initial_def_for_reduction): Extend to handle outer-loop 
1677         vectorization.
1678         (vect_create_epilog_for_reduction): Extend to handle outer-loop
1679         vectorization.
1680         (vect_transform_loop): Change assert to just skip this case.  Add a
1681         dump printout.
1682         (vect_finish_stmt_generation): Add a couple asserts.
1683
1684         (vect_estimate_min_profitable_iters): Multiply
1685         cost of inner-loop stmts (in outer-loop vectorization) by estimated
1686         inner-loop bound.
1687         (vect_model_reduction_cost): Don't add reduction epilogue cost in case
1688         this is an inner-loop reduction in outer-loop vectorization.
1689
1690         * tree-vect-analyze.c (vect_analyze_scalar_cycles_1): New function.
1691         Same code as what used to be vect_analyze_scalar_cycles, only with
1692         additional argument loop, and loop_info passed to
1693         vect_is_simple_reduction instead of loop.
1694         (vect_analyze_scalar_cycles): Code factored out into
1695         vect_analyze_scalar_cycles_1. Call it for each relevant loop-nest.
1696         Updated documentation.
1697         (analyze_operations): Check for inner-loop loop-closed exit-phis during
1698         outer-loop vectorization that are live or not used in the outerloop,
1699         cause this requires special handling.
1700         (vect_enhance_data_refs_alignment): Don't consider versioning for
1701         nested-loops.
1702         (vect_analyze_data_refs): Check that there are no datarefs in the
1703         inner-loop.
1704         (vect_mark_stmts_to_be_vectorized): Also consider vect_used_in_outer
1705         and vect_used_in_outer_by_reduction cases.
1706         (process_use): Also consider the case of outer-loop stmt defining an
1707         inner-loop stmt and vice versa.
1708         (vect_analyze_loop_1): New function.
1709         (vect_analyze_loop_form): Extend, to allow a restricted form of nested
1710         loops.  Call vect_analyze_loop_1.
1711         (vect_analyze_loop): Skip (inner-)loops within outer-loops that have
1712         been vectorized.  Call destroy_loop_vec_info with additional argument.
1713
1714         * tree-vect-patterns.c (vect_recog_widen_sum_pattern): Don't allow
1715         in the inner-loop when doing outer-loop vectorization. Add
1716         documentation and printout.
1717         (vect_recog_dot_prod_pattern): Likewise. Also add check for
1718         GIMPLE_MODIFY_STMT (in case we encounter a phi in the loop).
1719
1720 2007-08-18  Andrew Pinski  <pinskia@gmail.com>
1721
1722         * tree-affine.h (print_aff): New prototype.
1723         (debug_aff): Likewise.
1724         * tree-affine.c (print_aff): New function.
1725         (debug_aff): Likewise.
1726
1727 2007-08-18  Paul Brook  <paul@codesourcery.com>
1728             Joseph Myers  <joseph@codesourcery.com>
1729
1730         * common.opt (-fdebug-prefix-map=): New option.
1731         * opts.c: Include debug.h.
1732         (common_handle_option): Handle -fdebug-prefix-map.
1733         * final.c: Include ggc.h.
1734         (struct debug_prefix_map, debug_prefix_maps, add_debug_prefix_map,
1735         remap_debug_filename): New.
1736         * Makefile.in (final.o, opts.o): Update dependencies.
1737         * debug.h (remap_debug_filename, add_debug_prefix_map): Declare.
1738         * configure.ac: Check for assembler --debug-prefix-map support.
1739         * configure, config.in: Regenerate.
1740         * gcc.c (ASM_MAP): Define conditional on HAVE_AS_DEBUG_PREFIX_MAP.
1741         (ASM_DEBUG_SPEC): Include ASM_MAP.
1742         * doc/install.texi (--with-debug-prefix-map): Document.
1743         * doc/invoke.texi (-fdebug-prefix-map): Document.
1744         * dbxout.c (dbxout_init, dbxout_start_source_file,
1745         dbxout_source_file): Call remap_debug_filename.
1746         * dwarf2out.c (add_comp_dir_attribute, maybe_emit_file,
1747         dwarf2out_start_source_file, dwarf2out_finish): Call
1748         remap_debug_filename.
1749         (file_table_relative_p): Do not check d->emitted_number.
1750         * toplev.c (output_file_directive): Call remap_debug_filename.
1751         * vmsdbgout.c (write_srccorr): Call remap_debug_filename.
1752         * xcoffout.c (xcoffout_source_file): Call remap_debug_filename.
1753
1754 2007-08-17  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
1755
1756         * loop-invariant.c (find_invariants_to_move): Add missing macro
1757         argument.
1758
1759 2007-08-17  Tom Tromey  <tromey@redhat.com>
1760
1761         * tree.h (struct tree_label_decl): Removed old "java" fields.
1762
1763 2007-08-17  Richard Sandiford  <richard@codesourcery.com>
1764             Nigel Stephens  <nigel@mips.com>
1765
1766         * config/mips/sde.h (DRIVER_SELF_SPECS): Add commas.
1767         Treat -mno-data-in-code and -mcode-xonly as aliases for
1768         -mcode-readable=no and -mcode-readable=pcrel respectively.
1769         * config/mips/t-sde (TARGET_LIBGCC2_CFLAGS): Add -mcode-xonly.
1770         (MULTILIB_OPTIONS): Add -mcode-readable=no multilibs.
1771         (MULTILIB_DIRNAMES): Update accordingly.
1772
1773 2007-08-17  H.J. Lu  <hongjiu.lu@intel.com>
1774
1775         * Makefile.in (version.o): Depend on $(REVISION) only if
1776         REVISION_s is defined.
1777
1778 2007-08-17  Sa Liu  <saliu@de.ibm.com>
1779             Ulrich Weigand  <uweigand@de.ibm.com>
1780
1781         PR middle-end/32970
1782         * tree.c (reconstruct_complex_type): For a pointer to a vector,
1783         use build_qualified_type to retain qualifiers of the base type.
1784
1785 2007-08-17  Chen Liqin  <liqin@sunnorth.com.cn>
1786
1787         * config/score/score.md : Update pattern tablejump.
1788         * config/score/score.c : Update score_initialize_trampoline 
1789         function.
1790         * config/score/score.h (TRAMPOLINE_TEMPLATE): Added macro.
1791         (TRAMPOLINE_INSNS, TRAMPOLINE_SIZE) Update macro.
1792         * doc/contrib.texi: Add my entry.
1793
1794 2007-08-16  H.J. Lu  <hongjiu.lu@intel.com>
1795
1796         * Makefile.in (REVISION): New.
1797         (REVISION_c): New.
1798         (REVISION_s): New.
1799         (version.o): Also depend on $(REVISION). Add
1800         -DREVISION=$(REVISION_s).
1801
1802         * version.c (version_string): Add REVISION.
1803
1804 2007-08-16  Seongbae Park <seongbae.park@gmail.com>
1805
1806         * tree-eh.c (lower_try_finally_onedest): Reset the locus
1807         of GOTO that's relocated to a different block.
1808
1809 2007-08-16  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
1810
1811         * c-common.c (const_strip_array_types): New.
1812         * c-common.h (lang_missing_noreturn_ok_p): Delete.
1813         (const_strip_array_types): New.
1814         * c-objc-common.c (c_disregard_inline_limits,
1815         c_warn_unused_global_decl): Constify.
1816         * c-tree.h (c_disregard_inline_limits, c_warn_unused_global_decl,
1817         c_vla_type_p, c_incomplete_type_error): Likewise.
1818         * c-typeck.c (c_incomplete_type_error, c_vla_type_p): Likewise.
1819         * hooks.c (hook_bool_const_tree_false): New.
1820         * hooks.h (hook_bool_const_tree_false): Likewise.
1821         * langhooks-def.h (lhd_warn_unused_global_decl,
1822         lhd_incomplete_type_error, lhd_expr_size,
1823         lhd_tree_inlining_disregard_inline_limits,
1824         lhd_tree_inlining_auto_var_in_fn_p, lhd_tree_dump_type_quals,
1825         LANG_HOOKS_GENERIC_TYPE_P, LANG_HOOKS_TYPE_MAX_SIZE): Constify.
1826         * langhooks.c (lhd_warn_unused_global_decl,
1827         lhd_incomplete_type_error,
1828         lhd_tree_inlining_disregard_inline_limits,
1829         lhd_tree_inlining_auto_var_in_fn_p, lhd_tree_dump_type_quals,
1830         lhd_expr_size): Likewise.
1831         * langhooks.h (lang_hooks_for_tree_inlining,
1832         lang_hooks_for_tree_dump, lang_hooks_for_types,
1833         lang_hooks_for_decls, lang_hooks): Likewise.
1834         * pointer-set.c (pointer_set_t, pointer_set_create,
1835         pointer_set_contains, insert_aux, pointer_set_insert,
1836         pointer_set_traverse, pointer_map_t, pointer_map_create,
1837         pointer_map_contains, pointer_map_insert, pointer_map_traverse):
1838         Likewise.
1839         * pointer-set.h (pointer_set_contains, pointer_set_insert,
1840         pointer_set_traverse, pointer_map_contains, pointer_map_insert,
1841         pointer_map_traverse): Likewise.
1842         * predict.c (assert_is_empty): Likewise.
1843         * tree-affine.c (free_name_expansion): Likewise.
1844         * tree-cfg.c (edge_to_cases_cleanup): Likewise.
1845         * tree.c (size_in_bytes, max_int_size_in_bytes): Likewise.
1846         * tree.h (size_in_bytes, max_int_size_in_bytes): Likewise.
1847
1848 2007-08-16  Victor Kaplansky <victork@il.ibm.com>
1849
1850         * tree-vectorizer.c (new_loop_vec_info): Initialize new 
1851         field.
1852         (destroy_loop_vec_info): Add call to VEC_free.
1853         * tree-vectorizer.h (may_alias_ddrs): Define.
1854         (LOOP_VINFO_MAY_ALIAS_DDRS): Define.
1855         * tree-vect-analyze.c (vect_analyze_data_ref_dependence):
1856         Change reporting to dump.
1857         (vect_is_duplicate_ddr): New.
1858         (vect_mark_for_runtime_alias_test): New.
1859         (vect_analyze_data_ref_dependences) Add call to
1860         vect_mark_for_runtime_alias_test.
1861         (vect_enhance_data_refs_alignment): Define local variable
1862         vect_versioning_for_alias_required, don't perform
1863         peeling for alignment if versioning for alias is
1864         required.
1865         (vect_enhance_data_refs_alignment): Use
1866         PARAM_VECT_MAX_VERSION_FOR_ALIGNMENT_CHECKS instead of
1867         PARAM_VECT_MAX_VERSION_CHECKS.
1868         * tree-vect-transform.c
1869         (vect_create_cond_for_alias_checks): New.
1870         (vect_transform_loop): Add call to
1871         vect_create_cond_for_alias_checks.
1872         (vect_vfa_segment_size): New.
1873         * params.def (PARAM_VECT_MAX_VERSION_FOR_ALIGNMENT_CHECKS):
1874         Rename.
1875         (PARAM_VECT_MAX_VERSION_FOR_ALIAS_CHECKS): Define.
1876         * gcc/doc/invoke.texi
1877         (vect-max-version-for-alignment-checks): Document.
1878         (vect-max-version-for-alias-checks): Document.
1879         (vect-max-version-checks): Remove.
1880      
1881 2007-08-16  Uros Bizjak  <ubizjak@gmail.com>
1882
1883         * config/i386/i386.md (*rep_movdi_rex64): Emit "rep" prefix on
1884         the same line as the instruction for all asm dialects.
1885         (*rep_movsi): Ditto.
1886         (*rep_movsi_rex64): Ditto.
1887         (*rep_movqi): Ditto.
1888         (*rep_movqi_rex64): Ditto.
1889         (*rep_stosdi_rex64): Ditto.
1890         (*rep_stossi): Ditto.
1891         (*rep_stossi_rex64): Ditto.
1892         (*rep_stosqi): Ditto.
1893         (*rep_stosqi_rex64): Ditto.
1894         (*cmpstrnqi_nz_1): Ditto.
1895         (*cmpstrnqi_nz_rex_1): Ditto.
1896         (*cmpstrnqi_1): Ditto.
1897         (*cmpstrnqi_rex_1): Ditto.
1898         (*strlenqi_1): Ditto.
1899         (*strlenqi_rex_1): Ditto.
1900         * config/i386/sync.md (*sync_compare_and_swap<mode>): Emit "lock"
1901         prefix on the same line as the instruction for all asm dialects.
1902         (sync_double_compare_and_swap<mode>): Ditto.
1903         (*sync_double_compare_and_swapdi_pic): Ditto.
1904         (*sync_compare_and_swap_cc<mode>): Ditto.
1905         (sync_double_compare_and_swap_cc<mode>): Ditto.
1906         (*sync_double_compare_and_swap_ccdi_pic): Ditto.
1907         (sync_old_add<mode>): Ditto.
1908         (sync_add<mode>): Ditto.
1909         (sync_sub<mode>): Ditto.
1910         (sync_ior<mode>): Ditto.
1911         (sync_and<mode>): Ditto.
1912         (sync_xor<mode>): Ditto.
1913
1914 2007-08-16  Richard Sandiford  <richard@codesourcery.com>
1915
1916         PR middle-end/32897
1917         * reload.c (find_reloads): Check that the memory returned by
1918         find_reloads_toplev was not the result of forcing a constant
1919         to memory.
1920         (find_reloads_toplev): Always use simplify_gen_subreg to get
1921         the subreg of a constant.  If the result is also a constant,
1922         but not a legitimate one, force it into the constant pool
1923         and reload its address.
1924
1925 2007-08-15  David Edelsohn  <edelsohn@gnu.org>
1926
1927         * config/rs6000/rs6000.c (rs6000_rtx_costs): Add CLZ, CTZ, and
1928         POPCOUNT.
1929
1930 2007-08-15  Daniel Jacobowitz  <dan@codesourcery.com>
1931
1932         * config/rs6000/rs6000.c (rs6000_file_start): Output a .gnu_attribute
1933         directive for the current vector ABI.
1934
1935 2007-08-15  Steve Ellcey  <sje@cup.hp.com>
1936
1937         PR target/32963
1938         * caller-save.c (reg_save_code): Set invalide status on restore code.
1939         
1940 2007-08-15  Diego Novillo  <dnovillo@google.com>
1941
1942         * tree-ssa-alias.c (compute_memory_partitions): Use
1943         alias_bitmap_obstack to allocate bitmaps.
1944         (reset_alias_info): Factor out of init_alias_info.
1945         Mark all name tags not associated to an SSA name for renaming.
1946         (init_alias_info): Call it.
1947         (create_name_tags): Tidy.  Add comments.
1948         (dump_points_to_info_for): Do not call get_mem_sym_stats_for.
1949
1950 2007-08-15  Maxim Kuvyrkov  <maxim@codesourcery.com>
1951
1952         * config/mips/mips.c (vr4130_swap_insns_p): Use new interface to
1953         scheduler dependencies.
1954
1955 2007-08-15  Rask Ingemann Lambertsen  <rask@sygehus.dk>
1956
1957         * config/i386/i386.md (subsi3_carry_zext): Remove "m" constraint for
1958         "register_operand".
1959         (*iorsi_1_zext): Likewise.
1960         (*iorsi_1_zext_imm): Likewise.
1961         * config/i386/sse.md: (*sse4_1_extractps): Use "nonimmediate_operand"
1962         with "rm"/"xm" constraint.
1963         (sse2_vmsqrtv2df2): Likewise.
1964
1965 2007-08-15  Jakub Jelinek  <jakub@redhat.com>
1966
1967         PR middle-end/33074
1968         * emit-rtl.c (try_split): Use INSN_LIST instead of EXPR_LIST for
1969         REG_LIBCALL note.
1970
1971 2007-08-14  Daniel Berlin  <dberlin@dberlin.org>
1972
1973         * tree-pass.h (PROP_pta): Removed.
1974         (TODO_rebuild_alias): New.
1975         (pass_may_alias): Removed.
1976         * tree-ssa-ccp.c (execute_fold_all_builtins): Only rebuild
1977         aliasing if we changed something.
1978         * tree-ssa-alias.c (compute_may_aliases): Make non-static.  Update
1979         SSA internally.
1980         (pass_may_alias): Removed.
1981         (create_structure_vars): Return TODO_rebuild_alias.
1982         * tree-ssa-pre.c (do_pre): Return TODO_rebuild_alias.
1983         * tree-sra.c (tree_sra): Only rebuild aliasing if something
1984         changed.
1985         (tree_sra_early): We never affect aliasing right now.
1986         * tree-flow.h (compute_may_aliases): New prototype.
1987         * passes.c: Remove pass_may_alias from the passes.
1988         (execute_function_todo): Support TODO_rebuild_alias.    
1989
1990 2007-08-14  Kai Tietz  <kai.tietz@onevision.com>
1991
1992         * i386.c: (legitimize_address): Move dllimported variable check
1993         infront of legitimizing pic address of CONST symbols.
1994
1995 2007-08-14  Steve Ellcey  <sje@cup.hp.com>
1996
1997         PR tree-optimization/32941
1998         * tree-eh.c (struct leh_tf_state): Add goto_queue_map field.
1999         (goto_queue_cmp): Remove.
2000         (find_goto_replacement): Change search method.
2001         (maybe_record_in_goto_queue): Add assert.
2002         (lower_try_finally): Remove qsort call, add pointer_map_destroy call.
2003         * Makefile.in (tree-eh.o): Add pointer-set.h dependency.
2004
2005 2007-08-14  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
2006
2007         * alias.c (component_uses_parent_alias_set): Constify.
2008         * alias.h (component_uses_parent_alias_set): Likewise.
2009         * cfgrtl.c (print_rtl_with_bb): Likewise.
2010         * double-int.c (tree_to_double_int, double_int_fits_to_tree_p,
2011         mpz_get_double_int): Likewise.
2012         * double-int.h (double_int_fits_to_tree_p, tree_to_double_int,
2013         mpz_get_double_int): Likewise.
2014         * expr.c (is_aligning_offset, undefined_operand_subword_p,
2015         mostly_zeros_p, all_zeros_p, safe_from_p, is_aligning_offset):
2016         Likewise.
2017         * expr.h (safe_from_p): Likewise.
2018         * gimple-low.c (try_catch_may_fallthru, block_may_fallthru):
2019         Likewise.
2020         * gimplify.c (should_carry_locus_p, zero_sized_field_decl,
2021         zero_sized_type, goa_lhs_expr_p): Likewise.
2022         * omp-low.c (is_variable_sized, use_pointer_for_field): Likewise.
2023         * rtl.h (print_rtl_with_bb): Likewise.
2024         * sched-vis.c (print_exp, print_value, print_pattern): Likewise.
2025         * tree-cfg.c (const_first_stmt, const_last_stmt): New.
2026         * tree-flow-inline.h (bb_stmt_list): Constify.
2027         (cbsi_start, cbsi_last, cbsi_end_p, cbsi_next, cbsi_prev,
2028         cbsi_stmt): New.
2029         * tree-flow.h (const_block_stmt_iterator, cbsi_start, cbsi_last,
2030         const_first_stmt, const_last_stmt): New.
2031         (block_may_fallthru, empty_block_p): Constify.
2032         * tree-iterator.c (EXPR_FIRST_BODY, EXPR_LAST_BODY,
2033         EXPR_ONLY_BODY): New.
2034         (expr_first, expr_last, expr_only): Use macro for body.
2035         (const_expr_first, const_expr_last, const_expr_only): New.
2036         * tree-iterator.h (const_tree_stmt_iterator, ctsi_start,
2037         ctsi_last, ctsi_end_p, ctsi_one_before_end_p, ctsi_next,
2038         ctsi_prev, ctsi_stmt): New.
2039         * tree-scalar-evolution.c (get_loop_exit_condition): Constify.
2040         * tree-scalar-evolution.h (get_loop_exit_condition): Likewise.
2041         * tree-ssa-loop-niter.c (loop_only_exit_p,
2042         derive_constant_upper_bound): Likewise.
2043         * tree-ssa-phiopt.c (empty_block_p): Likewise.
2044         * tree-ssa-threadupdate.c (redirection_block_p): Likewise.
2045         * tree-vectorizer.c (slpeel_can_duplicate_loop_p): Likewise.
2046         * tree-vectorizer.h (slpeel_can_duplicate_loop_p): Likewise.
2047         * tree-vrp.c (vrp_bitmap_equal_p): Likewise.
2048         * tree.c (get_type_static_bounds): Likewise.
2049         * tree.h (const_expr_first, const_expr_last, const_expr_only): New.
2050         (get_type_static_bounds): Constify.
2051
2052 2007-08-14  Rask Ingemann Lambertsen  <rask@sygehus.dk>
2053
2054         PR target/30315
2055         * config/i386/i386.h (CANONICALIZE_COMPARISON): New.
2056         * config/i386/i386.md (plusminus)(addsub)(SWI): New.
2057         (*<addsub><mode>3_cc_overflow): New.
2058         (*add<mode>3_cconly_overflow): New.
2059         (*sub<mode>3_cconly_overflow): New.
2060         (*<addsub>si3_zext_cc_overflow): New.
2061         * config/i386/predicates.md (fcmov_comparison_operator): Accept
2062         CCCmode for LTU, GTU, LEU and GEU.
2063         (ix86_comparison_operator): Likewise.
2064         (ix86_carry_flag_operator): Carry flag is set if LTU or GTU in CCCmode.
2065         * config/i386/i386.c (put_condition_code): Support CCCmode.
2066         (ix86_cc_mode): Use CCCmode when testing for overflow of PLUS
2067         or MINUS expressions.
2068
2069 2007-08-14  Andrew Pinski  <pinskia@gmail.com>
2070
2071         PR c/30428
2072         * c-typeck.c (build_binary_op): Disallow vector float types with
2073         BIT_IOR_EXPR, BIT_AND_EXPR, and BIT_XOR_EXPR.
2074
2075 2007-08-14  Maxim Kuvyrkov  <maxim@codesourcery.com>
2076
2077         * sched-int.h (struct _dep): Rename field 'kind' to 'type'.
2078         (DEP_KIND): Rename to DEP_TYPE.  Update all uses.
2079         (dep_def): New typedef.
2080         (init_dep_1, sd_debug_dep): Declare functions.
2081         (DEP_LINK_KIND): Rename to DEP_LINK_TYPE.
2082         (debug_dep_links): Remove.
2083         (struct _deps_list): New field 'n_links'.
2084         (DEPS_LIST_N_LINKS): New macro.
2085         (FOR_EACH_DEP_LINK): Remove.
2086         (create_deps_list, free_deps_list, delete_deps_list): Remove
2087         declaration.
2088         (deps_list_empty_p, debug_deps_list, add_back_dep_to_deps_list): Ditto.
2089         (find_link_by_pro_in_deps_list, find_link_by_con_in_deps_list): Ditto.
2090         (copy_deps_list_change_con, move_dep_link): Ditto.
2091         (struct haifa_insn_data): Split field 'back_deps' into 'hard_back_deps'
2092         and 'spec_back_deps'.  New field 'resolved_forw_deps'.  Remove field
2093         'dep_count'.
2094         (INSN_BACK_DEPS): Remove.
2095         (INSN_HARD_BACK_DEPS, INSN_SPEC_BACK_DEPS, INSN_RESOLVED_FORW_DEPS):
2096         New macros.
2097         (INSN_DEP_COUNT): Remove.
2098         (enum DEPS_ADJUST_RESULT): Add new constant DEP_NODEP.  Fix comments.
2099         (spec_info, haifa_recovery_block_was_added_during_scheduling_p):
2100         Declare global variables.
2101         (deps_pools_are_empty_p, sched_free_deps): Declare functions.
2102         (add_forw_dep, compute_forward_dependences): Remove declarations.
2103         (add_or_update_back_dep, add_or_update_back_forw_dep): Ditto.
2104         (add_back_forw_dep, delete_back_forw_dep): Ditto.
2105         (debug_ds, sched_insn_is_legitimate_for_speculation_p): Declare
2106         functions.
2107         (SD_LIST_NONE, SD_LIST_HARD_BACK, SD_LIST_SPEC_BACK, SD_LIST_FORW):
2108         New constants.
2109         (SD_LIST_RES_BACK, SD_LIST_RES_FORW, SD_LIST_BACK): Ditto.
2110         (sd_list_types_def): New typedef.
2111         (sd_next_list): Declare function.
2112         (struct _sd_iterator): New type.
2113         (sd_iterator_def): New typedef.
2114         (sd_iterator_start, sd_iterator_cond, sd_iterator_next): New inline
2115         functions.
2116         (FOR_EACH_DEP): New cycle wrapper.
2117         (sd_lists_size, sd_lists_empty_p, sd_init_insn, sd_finish_insn):
2118         Declare functions.
2119         (sd_find_dep_between, sd_add_dep, sd_add_or_update_dep): Ditto.
2120         (sd_resolve_dep, sd_copy_back_deps, sd_delete_dep, sd_debug_lists):
2121         Ditto.
2122
2123         * sched-deps.c (init_dep_1): Make global.
2124         (DUMP_DEP_PRO, DUMP_DEP_CON, DUMP_DEP_STATUS, DUMP_DEP_ALL): New
2125         constants.
2126         (dump_dep): New static function.
2127         (dump_dep_flags): New static variable.
2128         (sd_debug_dep): New function.
2129         (add_to_deps_list, remove_from_deps_list): Update 'n_links' field of
2130         the list.
2131         (move_dep_link): Use remove_from_deps_list (), instead of
2132         detach_dep_link ().
2133         (dep_links_consistent_p, dump_dep_links, debug_dep_links): Remove.
2134         (dep_link_is_detached_p): New static function.
2135         (deps_obstack, dl_obstack, dn_obstack): Remove.  Use dn_pool, dl_pool
2136         instead.
2137         (dn_pool, dl_pool): New alloc_pools.
2138         (dn_pool_diff, dl_pool_diff): New static variables.
2139         (create_dep_node, delete_dep_node): New static function.
2140         (create_deps_list): Make it static.  Use alloc_pool 'dl_pool'.
2141         (deps_list_empty_p): Make it static.  Use 'n_links' field.
2142         (deps_pools_are_empty_p): New static function.
2143         (alloc_deps_list, delete_deps_list): Remove.
2144         (dump_deps_list, debug_deps_list, add_back_dep_to_deps_list): Remove.
2145         (find_link_by_pro_in_deps_list, find_link_by_con_in_deps_list): Ditto.
2146         (copy_deps_list_change_con): Remove.  Use sd_copy_back_deps () instead.
2147         (forward_dependency_cache): Remove.
2148         (maybe_add_or_update_back_dep_1, add_or_update_back_dep_1): Remove
2149         'back' from the names.  Change signature to use dep_t instead of
2150         equivalent quad.
2151         (add_back_dep): Ditto.  Make global.
2152         (check_dep_status): Rename to check_dep ().
2153         (sd_next_list, sd_lists_size, sd_lists_empty_p, sd_init_insn):
2154         New functions.
2155         (sd_finish_insn): Ditto.
2156         (sd_find_dep_between_no_cache): New static function.
2157         (sd_find_dep_between): New function.
2158         (ask_dependency_caches, set_dependency_caches): New static functions.
2159         (update_dependency_caches, change_spec_dep_to_hard, update_dep): Ditto.
2160         (add_or_update_dep_1): Separate pieces of functionality into
2161         ask_dependency_caches (), update_dependency_caches (),
2162         change_spec_dep_to_hard (), update_dep ().
2163         (get_back_and_forw_lists): New static function.
2164         (sd_add_dep): Separate setting of dependency caches into
2165         set_dependency_caches ().
2166         (sd_add_or_update_dep, sd_resolve_dep, sd_copy_back_deps):
2167         New functions.
2168         (sd_delete_dep): Ditto.
2169         (DUMP_LISTS_SIZE, DUMP_LISTS_DEPS, DUMP_LISTS_ALL): New constants.
2170         (dump_lists): New static function.
2171         (sd_debug_lists): New debug function.
2172         (delete_all_dependences, fixup_sched_groups): Update to use
2173         sd_* infrastructure.
2174         (sched_analyze_2): Create data-speculative dependency only if
2175         data-speculation is enabled.
2176         (sched_analyze_insn): If insn cannot be speculative, make all its
2177         dependencies non-speculative.
2178         (sched_analyze): Use sd_init_insn ().
2179         (add_forw_dep, compute_forward_dependencies): Remove.
2180         (delete_dep_nodes_in_back_deps): New static function.
2181         (sched_free_deps): New function.
2182         (init_dependency_caches): Init alloc_pools.
2183         (extend_depedency_caches): Update after removing of
2184         forward_dependency_cache.
2185         (free_dependency_caches): Ditto.  Free alloc_pools.
2186         (adjust_add_sorted_back_dep, adjust_back_add_forw_dep): Remove.
2187         (delete_forw_dep, add_or_update_back_dep, add_or_update_back_forw_dep):
2188         Ditto.
2189         (add_back_forw_dep, delete_back_forw_dep): Ditto.
2190         (add_dependence): Use init_dep ().
2191         (get_dep_weak_1): New static function.
2192         (get_dep_weak): Move logic to get_dep_weak_1 ().
2193         (dump_ds): New static function moved from haifa-sched.c:
2194         debug_spec_status ().
2195         (debug_ds): New debug function.
2196         (check_dep_status): Rename to check_dep ().  Update to check whole
2197         dependencies.
2198
2199         * haifa-sched.c (spec_info): Make global.
2200         (added_recovery_block_p): Rename to
2201         'haifa_recovery_block_was_added_during_current_schedule_block_p'.
2202         (haifa_recovery_block_was_added_during_scheduling_p): New variable.
2203         (dep_cost, priority, rank_for_schedule, schedule_insn): Update
2204         to use new interfaces.
2205         (ok_for_early_queue_removal): Ditto.
2206         (schedule_block): Initialize logical uids of insns emitted by the
2207         target.
2208         (sched_init): Initialize new variable.
2209         (fix_inter_tick, try_ready, fix_tick_ready): Update to use new
2210         interfaces.
2211         (extend_global): Initialize insn data.
2212         (init_h_i_d): Remove code that is now handled in sd_init_insn ().
2213         (process_insn_forw_deps_be_in_spec): Change signature.  Update to use
2214         new interfaces.
2215         (add_to_speculative_block): Update to use new interfaces.
2216         (create_recovery_block): Set new variables.
2217         (create_check_block_twin, fix_recovery_deps): Update to use new
2218         interfaces.
2219         (sched_insn_is_legitimate_for_speculation_p): New function.
2220         (speculate_insn): Move checking logic to
2221         sched_insn_is_legitimate_for_speculation_p ().
2222         (sched_remove_insn): Finalize sched-deps information of instruction.
2223         (clear_priorities, add_jump_dependencies): Update to use new
2224         interfaces.
2225         (debug_spec_status): Rename to dump_ds () and move to sched-deps.c.
2226         
2227         * sched-rgn.c (set_spec_fed, find_conditional_protection): Update
2228         to use new interfaces.
2229         (is_conditionally_protected, is_pfree, is_prisky) Ditto.
2230         (new_ready): Try to use control speculation only if it is available.
2231         (add_branch_dependences): Update to use new interfaces.
2232         (compute_block_backward_dependences): Rename to
2233         compute_block_dependences ().  Call
2234         targetm.sched.dependencies_evaluation_hook ().
2235         (free_block_dependencies): New static function.
2236         (debug_dependencies): Update to use new interfaces.
2237         (schedule_region): Remove separate computation of forward dependencies.
2238         Move call of targetm.sched.dependencies_evaluation_hook () to
2239         compute_block_dependences ().  Free dependencies at the end of
2240         scheduling the region.
2241
2242         * sched-ebb.c (earliest_block_with_similiar_load): Update to use
2243         new interfaces.
2244         (add_deps_for_risky_insns): Ditto.
2245         (schedule_ebb): Remove separate computation of forward dependencies.
2246         Free dependencies at the end of scheduling the ebb.
2247
2248         * ddg.c (create_ddg_dependence): Update to use new interfaces.
2249         (build_intra_loop_deps): Ditto.  Remove separate computation of
2250         forward dependencies.  Free sched-deps dependencies.
2251
2252         * config/ia64/ia64.c (ia64_dependencies_evaluation_hook): Update
2253         to use new interfaces.
2254         (ia64_dfa_new_cycle, ia64_gen_check): Ditto.
2255
2256         * config/rs6000/rs6000.c (rs6000_is_costly_dependence): Update to use
2257         new interfaces.
2258         (is_costly_group): Ditto.
2259
2260 2007-08-14  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
2261
2262         * alias.c (rtx_equal_for_memref_p): Constify.
2263         * basic-block.h (const_edge, const_basic_block): New.
2264         (reg_set_to_hard_reg_set, dfs_enumerate_from, single_succ_p,
2265         single_pred_p, single_succ_edge, single_pred_edge, single_succ,
2266         single_pred, maybe_hot_bb_p, probably_cold_bb_p,
2267         probably_never_executed_bb_p, edge_probability_reliable_p,
2268         br_prob_note_reliable_p, forwarder_block_p, flow_nodes_print,
2269         inside_basic_block_p, control_flow_insn_p, dominated_by_p):
2270         Likewise.
2271         * bb-reorder.c (better_edge_p, push_to_next_round_p): Likewise.
2272         * bt-load.c (basic_block_freq, insn_sets_btr_p, can_move_up):
2273         Likewise.
2274         * cfganal.c (flow_active_insn_p, forwarder_block_p,
2275         flow_nodes_print, dfs_enumerate_from): Likewise.
2276         * cfgbuild.c (count_basic_blocks, inside_basic_block_p,
2277         control_flow_insn_p, count_basic_blocks): Likewise.
2278         * cfgloop.c (flow_bb_inside_loop_p, glb_enum_p,
2279         get_loop_body_with_size, loop_exit_edge_p): Likewise.
2280         * cfgloop.h (flow_bb_inside_loop_p, num_loop_insns,
2281         average_num_loop_insns, loop_exit_edge_p,
2282         just_once_each_iteration_p, can_duplicate_loop_p): Likewise.
2283         * cfgloopanal.c (just_once_each_iteration_p, num_loop_insns,
2284         average_num_loop_insns, seq_cost): Likewise.
2285         * cfgloopmanip.c (rpe_enum_p, can_duplicate_loop_p): Likewise.
2286         * dominance.c (dominated_by_p): Likewise.
2287         * emit-rtl.c (validate_subreg): Likewise.
2288         * except.c (can_throw_internal, can_throw_external): Likewise.
2289         * except.h (can_throw_internal, can_throw_external): Likewise.
2290         * gcse.c (gcse_constant_p, oprs_unchanged_p, oprs_anticipatable_p,
2291         oprs_available_p, hash_expr, expr_equiv_p, oprs_not_set_p,
2292         compute_transp, load_killed_in_block_p, reg_killed_on_edge,
2293         simple_mem, store_ops_ok, load_kills_store, find_loads,
2294         store_killed_in_insn, store_killed_after, store_killed_before,
2295         gcse_mem_operand, implicit_set_cond_p, store_killed_in_pat):
2296         Likewise.
2297         * ifcvt.c (count_bb_insns, cheap_bb_rtx_cost_p, noce_operand_ok,
2298         noce_mem_write_may_trap_or_fault_p): Likewise.
2299         * pointer-set.c (pointer_set_contains, pointer_map_contains):
2300         Likewise.
2301         * pointer-set.h (pointer_set_contains, pointer_map_contains):
2302         Likewise.
2303         * predict.c (can_predict_insn_p, maybe_hot_bb_p,
2304         probably_cold_bb_p, probably_never_executed_bb_p,
2305         edge_probability_reliable_p, br_prob_note_reliable_p,
2306         can_predict_insn_p): Likewise.
2307         * regclass.c (reg_set_to_hard_reg_set): Likewise.
2308         * resource.c (return_insn_p): Likewise.
2309         * rtl.h (reg_set_between_p, reg_set_p, validate_subreg):
2310         Likewise.
2311         * rtlanal.c (reg_set_between_p, reg_set_p): Likewise.
2312         * tracer.c (count_insns, ignore_bb_p, better_p): Likewise.
2313         * tree-cfg.c (verify_gimple_unary_expr, verify_gimple_binary_expr,
2314         verify_gimple_modify_stmt): Likewise.
2315         * tree-chrec.c (is_not_constant_evolution,
2316         is_multivariate_chrec_rec, is_multivariate_chrec,
2317         chrec_contains_symbols, chrec_contains_undetermined,
2318         tree_contains_chrecs, evolution_function_is_affine_multivariate_p,
2319         evolution_function_is_univariate_p, avoid_arithmetics_in_type_p,
2320         eq_evolutions_p, scev_direction): Likewise.
2321         * tree-chrec.h (automatically_generated_chrec_p, tree_is_chrec,
2322         eq_evolutions_p, is_multivariate_chrec, chrec_contains_symbols,
2323         chrec_contains_symbols_defined_in_loop,
2324         chrec_contains_undetermined, tree_contains_chrecs,
2325         evolution_function_is_affine_multivariate_p,
2326         evolution_function_is_univariate_p, chrec_zerop,
2327         evolution_function_is_constant_p, evolution_function_is_affine_p,
2328         evolution_function_is_affine_or_constant_p,
2329         tree_does_not_contain_chrecs, chrec_type): Likewise.
2330         * tree-data-ref.c (tree_fold_divides_p,
2331         object_address_invariant_in_loop_p, dr_may_alias_p,
2332         ziv_subscript_p, siv_subscript_p, gcd_of_steps_may_divide_p,
2333         same_access_functions, constant_access_functions,
2334         access_functions_are_affine_or_constant_p, find_vertex_for_stmt):
2335         Likewise.
2336         * tree-flow.h (scev_direction): Likewise.
2337         * tree-gimple.c (is_gimple_stmt): Likewise.
2338         * tree-outof-ssa.c (identical_copies_p, identical_stmt_lists_p):
2339         Likewise.
2340         * tree-pretty-print.c (op_prio): Likewise.
2341         * tree-scalar-evolution.c (chrec_contains_symbols_defined_in_loop,
2342         analyzable_condition, backedge_phi_arg_p): Likewise.
2343         * tree-scalar-evolution.h (get_chrec_loop): Likewise.
2344         * tree-ssa-operands.c (get_name_decl, operand_build_cmp): Likewise.
2345         * tree-ssa-threadupdate.c (dbds_continue_enumeration_p):
2346         Likewise.
2347
2348 2007-08-13  Dan Hipschman  <dsh@google.com>
2349
2350         PR c/32953
2351         * c-format.c (check_format_arg): Move check for zero-length
2352         format strings below the check for unterminated strings.
2353
2354 2007-08-13  Andrew Pinski  <pinskia@gmail.com>
2355
2356         PR C/30427
2357         * c-typeck.c (build_unary_op <case BIT_NOT_EXPR>): Reject vector float
2358         types.
2359
2360 2007-08-13  Nick Clifton  <nickc@redhat.com>
2361
2362         * config/arm/arm_neon.h: Revert GPLv3 patch to this file.
2363
2364 2007-08-12  Francois-Xavier Coudert  <fxcoudert@gcc.gnu.org>
2365
2366         PR fortran/32860
2367         * c-format.c (gcc_gfc_length_specs): New array.
2368         (gcc_gfc_char_table): Add unsigned specifier, and references to
2369         the l length modifier.
2370         (format_types_orig): Use the new gcc_gfc_length_specs.
2371
2372 2007-08-12  Sa Liu  <saliu@de.ibm.com>
2373
2374         * emit-rtl.c (try_split): Relink the insns with REG_LIBCALL note
2375         and with REG_RETVAL note after split.
2376
2377 2007-08-11  David Daney  <ddaney@avtrex.com>
2378
2379         * config/mips/mips.c (mips_sched_reorder):  Mark cycle parameter
2380         as ATTRIBUTE_UNUSED.
2381
2382 2007-08-11  David Edelsohn  <edelsohn@gnu.org>
2383             Segher Boessenkool  <segher@kernel.crashing.org>
2384
2385         * config/rs6000/rs6000.h (CC1_CPU_SPEC): Define as empty string if
2386         HAVE_LOCAL_CPU_DETECT not defined.
2387
2388 2007-08-11  Jan Hubicka  <jh@suse.cz>
2389
2390         * cgraphunit.c (record_cdtor_fn): Declare all cdtors always inlined.
2391         (cgraph_process_new_functions): Honor previous value of
2392         disregard_inline_limits.
2393         * ipa-inline.c (compute_inline_parameters): Likewise.
2394
2395 2007-08-11  Ian Lance Taylor  <iant@google.com>
2396
2397         * alias.h (alias_set_type): Define new type.
2398         (ALIAS_SET_MEMORY_BARRIER): Use it.
2399         * rtl.h: Include alias.h.
2400         (struct mem_attrs): Use alias_set_type.
2401         * tree.h: Include alias.h
2402         (struct tree_type): Use alias_set_type.
2403         (struct tree_struct_field_tag): Likewise.
2404         (struct tree_decl_common): Likewise.
2405         * alias.c (struct alias_set_entry): Use alias_set_type.
2406         (get_alias_set_entry, alias_set_subset_of): Likewise.
2407         (alias_sets_conflict_p): Likewise.
2408         (alias_sets_must_conflict_p): Likewise.
2409         (objects_must_conflict_p): Likewise.
2410         (get_alias_set, new_alias_set): Likewise.
2411         (record_alias_subset, record_component_aliases): Likewise.
2412         (varargs_set, frame_set): Change to alias_set_type.
2413         (get_varargs_alias_set): Use alias_set_type.
2414         (get_frame_alias_set): Likewise.
2415         * builtins.c (setjmp_alias_set): Change to alias_set_type.
2416         * dse.c (struct store_info): Use alias_set_type.
2417         (struct read_info, struct clear_alias_mode_holder): Likewise.
2418         (clear_alias_set_lookup, canon_address): Likewise.
2419         (record_store, check_mem_read_rtx): Likewise.
2420         (dse_record_singleton_alias_set): Likewise.
2421         (dse_invalidate_singleton_alias_set): Likewise.
2422         * emit-rtl.c (get_mem_attrs): Likewise.
2423         (set_mem_attributes_minus_bitpos): Likewise.
2424         (set_mem_alias_set): Likewise.
2425         * expr.c (store_constructor_field, store_field): Likewise.
2426         * gimplify.c (struct gimplify_init_ctor_preeval_data): Likewise.
2427         * langhooks.c (lhd_get_alias_set): Likewise.
2428         * langhooks-def.h (lhd_get_alias_set): Likewise.
2429         * reload1.c (alter_reg): Likewise.
2430         * tree-flow.h (struct fieldoff): Likewise.
2431         * tree-ssa-alias.c (struct alias_map_d): Likewise.
2432         (may_alias_p, get_smt_for, create_sft): Likewise.
2433         * tree-ssa-alias-warnings.c (nonstandard_alias_types_p): Likewise.
2434         * tree-ssa-structalias.c (set_uids_in_ptset): Likewise.
2435         (merge_smts_into): Likewise.
2436         * varasm.c (const_alias_set): Likewise.
2437         * c-common.c (strict_aliasing_warning): Likewise.
2438         (c_common_get_alias_set): Likewise.
2439         * dse.h (dse_record_singleton_alias_set): Update declaration.
2440         (dse_invalidate_singleton_alias_set): Likewise.
2441         * emit-rtl.h (set_mem_alias_set): Likewise.
2442         * c-common.h (c_common_get_alias_set): Likewise.
2443         * print-rtl.c (print_rtx): Cast MEM_ALIAS_SET when printing it.
2444         * print-tree.c (print_node): Likewise.
2445         * config/alpha/alpha.c (alpha_sr_alias_set): Change to
2446         alias_set_type.
2447         (alpha_setup_incoming_varargs): Use alias_set_type.
2448         * config/i386/i386.c (setup_incoming_varargs_64): Use
2449         alias_set_type.
2450         (setup_incoming_varargs_ms_64): Likewise.
2451         (ix86_GOT_alias_set): Likewise.
2452         * config/mn10300/mn10300.c (mn10300_builtin_saveregs): Likewise.
2453         * config/rs6000/rs6000.c (setup_incoming_varargs): Likewise.
2454         (set): Change to alias_set_type.
2455         (get_TOC_alias_set): Use alias_set_type.
2456         * config/rs6000/rs6000-protos.h (get_TOC_alias_set): Update
2457         declaration.
2458         * config/sh/sh.c (sh_builtin_saveregs): Use alias_set_type.
2459         * config/sparc/sparc.c (sparc_sr_alias_set): Change to
2460         alias_set_type.
2461         (struct_value_alias_set): Likewise.
2462         * Makefile.in (GTFILES): Add $(srcdir)/alias.h.
2463
2464 2007-08-11  Richard Sandiford  <richard@codesourcery.com>
2465
2466         * config/vxworks-dummy.h (TARGET_VXWORKS): Define.
2467         * config/vxworks.h (TARGET_VXWORKS): Override.
2468         * config/mips/mips.h (TARGET_CPU_CPP_BUILTINS): Don't define
2469         "mips" if TARGET_VXWORKS.
2470
2471 2007-08-11  Richard Sandiford  <richard@codesourcery.com>
2472
2473         * calls.c (avoid_likely_spilled_reg): New function.
2474         (expand_call): Use it.
2475
2476 2007-08-11  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
2477
2478         * c-typeck.c (build_c_cast): Add OPT_Wcast_qual to warnings.
2479
2480 2007-08-10  Adam Nemet  <anemet@caviumnetworks.com>
2481
2482         * config/mips/predicates.md (const_call_insn_operand): Invoke
2483         SYMBOL_REF_LONG_CALL_P only on SYMBOL_REFs.
2484
2485 2007-08-10  David Edelsohn  <edelsohn@gnu.org>
2486
2487         PR target/33042
2488         * config/rs6000/driver-rs6000.c: Include link.h.
2489         Use ElfW instead of wordsize-specif typedef.
2490
2491 2007-08-10  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
2492
2493         * system.h (CONST_CAST): New.
2494         * c-decl.c (c_make_fname_decl): Use it.
2495         * c-lex.c (cb_ident, lex_string): Likewise.
2496         * c-typeck.c (free_all_tagged_tu_seen_up_to): Likewise.
2497         * gcc.c (set_spec, read_specs, for_each_path, execute, do_spec_1,
2498         give_switch, set_multilib_dir): Likewise.
2499         * gengtype-parse.c (string_seq, typedef_name): Likewise.
2500         * passes.c (execute_one_pass): Likewise.
2501         * prefix.c (update_path): Likewise.
2502         * pretty-print.c (pp_base_destroy_prefix): Likewise.
2503         * tree.c (build_string): Likewise.
2504
2505 2007-08-10  Aldy Hernandez  <aldyh@redhat.com>
2506
2507         * tree-flow-inline.h (is_exec_stmt): Remove.
2508         (is_label_stmt): Remove.
2509         * tree-flow.h: Remove prototypes for is_exec_stmt, get_filename, and
2510         is_label_stmt.
2511
2512 2007-08-10  Andreas Krebbel  <krebbel1@de.ibm.com>
2513
2514         * lower-subreg.c (resolve_shift_zext): Don't adjust
2515         src_reg_num for wordmode operands.
2516
2517 2007-08-10  Sandra Loosemore  <sandra@codesourcery.com>
2518             David Ung  <davidu@mips.com>
2519
2520         * config/mips/mips.c (TARGET_SCHED_INIT): Define.
2521         (TARGET_SCHED_REORDER2): Define.
2522         (mips_maybe_swap_ready): New.
2523         (mips_last_74k_agen_insn): New.
2524         (mips_74k_agen_init): New.
2525         (mips_74k_agen_reorder): New function to group loads and stores
2526         in the ready queue.
2527         (mips_sched_init): New.  
2528         (mips_sched_reorder): Don't do initialization here.  Call
2529         mips_74k_agen_reorder.
2530         (mips_variable_issue): Call mips_74k_agen_init.
2531
2532 2007-08-10  Aldy Hernandez  <aldyh@redhat.com>
2533
2534         * tree-flow-inline.h (get_filename): Remove.
2535
2536 2007-08-10  Richard Sandiford  <richard@codesourcery.com>
2537
2538         * config/mips/mips-protos.h (mips_address_insns): Add a boolean
2539         argument.
2540         (mips_fetch_insns): Delete in favor of...
2541         (mips_load_store_insns): ...this new function.
2542         * config/mips/mips.c (mips_address_insns): Add a boolean argument
2543         to say whether multiword moves _might_ be split.
2544         (mips_fetch_insns): Delete in favor of...
2545         (mips_load_store_insns): ...this new function.
2546         (mips_rtx_costs): Update the call to mips_address_insns.
2547         (mips_address_cost): Likewise.
2548         * config/mips/mips.md (length): Use mips_load_store_insns instead
2549         of mips_fetch_insns.
2550         * config/mips/constraints.md (R): Use mips_address_insns rather
2551         than mips_fetch_insns.  Assume that the move never needs to be split.
2552
2553 2007-08-09  Sandra Loosemore  <sandra@codesourcery.com>
2554
2555         * config/mips/mips.opt (mhard-float, msoft-float):  Make these
2556         control TARGET_HARD_FLOAT_ABI and TARGET_SOFT_FLOAT_ABI, rather
2557         than TARGET_HARD_FLOAT and TARGET_SOFT_FLOAT.  
2558         * config/mips/mips.h (mips16_hard_float): Delete.
2559         (TARGET_HARD_FLOAT_ABI, TARGET_SOFT_FLOAT_ABI):  Delete these
2560         definitions, and replace with....
2561         (TARGET_HARD_FLOAT, TARGET_SOFT_FLOAT): Define.
2562         * config/mips/mips.c (mips16_hard_float): Delete.  Replace
2563         all references with (TARGET_MIPS16 && TARGET_HARD_FLOAT_ABI).
2564         (MIPS_MARCH_CONTROLS_SOFT_FLOAT): Update comments.
2565         (override_options):  Replace MASK_SOFT_FLOAT references with
2566         MASK_SOFT_FLOAT_ABI.  Delete twiddling with MASK_SOFT_FLOAT
2567         and mips16_hard_float when TARGET_MIPS16.
2568         
2569 2007-08-09  Andrew Pinski  <andrew_pinski@playstation.sony.com>
2570
2571         PR c/32796
2572         * c-typeck.c (build_binary_op): Check for non pointer types before
2573         calling int_fits_type_p.
2574
2575 2007-08-09  Andrew Pinski  <andrew_pinski@playstation.sony.com>
2576
2577         PR middle-end/32813
2578         * fold-const.c (omit_one_operand): Return only the ommitted expression
2579         if the result is an empty statement.
2580         (pedantic_omit_one_operand): Likewise.
2581
2582 2007-08-09  Daniel Berlin  <dberlin@dberlin.org>
2583
2584         * c-typeck.c (readonly_error): Improve error for assignment.
2585         
2586         * c-pretty-print.c (pp_c_additive_expression): Handle pointer-plus
2587         expression. 
2588         (pp_c_expression): Ditto.
2589
2590 2007-08-09  Simon Baldwin  <simonb@google.com>
2591
2592         * simplify-rtx.c (simplify_binary_operation_1): Removed erroneous
2593         break that was preventing simplify_associative_operation() for xor.
2594
2595 2007-08-09  Sandra Loosemore  <sandra@codesourcery.com>
2596             Nigel Stephens  <nigel@mips.com>
2597
2598         * doc/tm.texi (CLZ_DEFINED_VALUE_AT_ZERO, CTZ_DEFINED_VALUE_AT_ZERO):
2599         Document change in interpretation of value from boolean to
2600         tri-state integer.
2601         * optabs.c (expand_ffs, expand_ctz): New functions to compute
2602         ffs and ctz using clz.
2603         (expand_unop):  Call them.
2604         * config/rs6000/rs6000.h (CLZ_DEFINED_VALUE_AT_ZERO): Fix its
2605         result value.
2606         (CTZ_DEFINED_VALUE_AT_ZERO): Likewise.
2607         * config/mips/mips.h (CLZ_DEFINED_VALUE_AT_ZERO): Likewise, to
2608         enable the new ffs expansion on this target.
2609
2610 2007-08-09  Jan Hubicka  <jh@suse.cz>
2611
2612         * optabs.c (expand_widen_pattern_expr): Use optabs accestors.
2613         (expand_ternary_op): Likewise.
2614         (expand_vec_shift_expr): Likewise.
2615         (expand_binop_directly): Likewise.
2616         (expand_binop): Likewise.
2617         (sign_expand_binop): Likewise.
2618         (expand_twoval_unop): Likewise.
2619         (expand_twoval_binop): Likewise.
2620         (expand_twoval_binop_libfunc): Likewise.
2621         (widen_clz): Likewise.
2622         (widen_bswap): Likewise.
2623         (expand_parity): Likewise.
2624         (expand_unop): Likewise.
2625         (expand_abs_nojump): Likewise.
2626         (expand_copysign): Likewise.
2627         (emit_no_conflict_block): Likewise.
2628         (emit_libcall_block): Likewise.
2629         (can_compare_p): Likewise.
2630         (prepare_cmp_insn): Likewise.
2631         (emit_cmp_and_jump_insn_1): Likewise.
2632         (prepare_float_lib_cmp): Likewise.
2633         (emit_conditional_add): Likewise.
2634         (gen_add2_insn): Likewise.
2635         (have_add2_insn): Likewise.
2636         (gen_sub2_insn): Likewise.
2637         (have_sub2_insn): Likewise.
2638         (can_extend_p): Likewise.
2639         (can_fix_p): Likewise.
2640         (can_float_p): Likewise.
2641         (expand_float): Likewise.
2642         (expand_fix): Likewise.
2643         (expand_sfix_optab): Likewise.
2644         (new_optab): Likewise.
2645         (new_convert_optab): Likewise.
2646         (init_libfuncs): Likewise.
2647         (init_interclass_conv_libfuncs): Likewise.
2648         (init_intraclass_conv_libfuncs): Likewise.
2649         (set_conv_libfunc): Likewise.
2650         (init_optabs): Likewise.
2651         (debug_optab_libfuncs): Likewise.
2652         (gen_cond_trap): Likewise.
2653         * optabs.h (optab_handler, convert_optab_hanlder): New.
2654         * genopinit.c: Update optabs generation table.
2655         * reload.c (find_reloads_address_1): Use optabs accestors.
2656         * builtins.c (expand_builtin_mathfn): Likewise.
2657         (expand_builtin_mathfn_2): Likewise.
2658         (expand_builtin_mathfn_3): Likewise.
2659         (expand_builtin_interclass_mathfn): Likewise.
2660         (expand_builtin_sincos): Likewise.
2661         (expand_builtin_cexpi): Likewise.
2662         (expand_builtin_powi): Likewise.
2663         (expand_builtin_strlen): Likewise.
2664         * dojump.c (do_jump): Likewise.
2665         * expr.c (convert_move): Likewise.
2666         (move_by_pieces): Likewise.
2667         (move_by_pieces_ninsns): Likewise.
2668         (can_store_by_pieces): Likewise.
2669         (store_by_pieces_1): Likewise.
2670         (emit_move_via_integer): Likewise.
2671         (emit_move_complex): Likewise.
2672         (emit_move_ccmode): Likewise.
2673         (emit_move_insn_1): Likewise.
2674         (emit_single_push_insn): Likewise.
2675         (store_constructor): Likewise.
2676         (expand_expr_real_1): Likewise.
2677         (do_store_flag): Likewise.
2678         * ada/misc.c (gnat_compute_largest_alignment): Likewise.
2679         (enumerate_modes): Likewise.
2680         * tree-vectorizer.c (vect_supportable_dr_alignment): Likewise.
2681         (supportable_widening_operation): Likewise.
2682         (supportable_narrowing_operation): Likewise.
2683         * expmed.c (store_bit_field_1): Likewise.
2684         (extract_bit_field_1): Likewise.
2685         (expand_mult_highpart_optab): Likewise.
2686         (expand_smod_pow2): Likewise.
2687         (expand_divmod): Likewise.
2688         (emit_store_flag): Likewise.
2689         * tree-vect-patterns.c
2690         (vect_pattern_recog_1): Likewise.
2691         * tree-ssa-loop-prefetch.c
2692         (nontemporal_store_p): Likewise.
2693         * tree-vect-transform.c (vect_model_reduction_cost): Likewise.
2694         (vect_create_epilog_for_reduction): Likewise.
2695         (vectorizable_reduction): Likewise.
2696         (vectorizable_operation): Likewise.
2697         (vect_strided_store_supported): Likewise.
2698         (vectorizable_store): Likewise.
2699         (vect_strided_load_supported): Likewise.
2700         (vectorizable_load): Likewise.
2701         * combine.c (simplify_comparison): Likewise.
2702         * tree-vect-generic.c
2703         (type_for_widest_vector_mode): Likewise.
2704         (expand_vector_operations_1): Likewise.
2705         * config/spu/spu.c (spu_expand_mov): Likewise.
2706         (spu_emit_vector_compare): Likewise.
2707         * config/rs6000/rs6000.c
2708         (rs6000_emit_vector_compare): Likewise.
2709         * stmt.c (add_case_node): Likewise.
2710         * reload1.c (gen_reload):
2711
2712 2007-08-09  Michael Matz  <matz@suse.de>
2713
2714         * tree.h (fixed_zerop): Declare as taking a const_tree.
2715         * tree.c (fixed_zerop): Take a const_tree.
2716
2717 2007-08-09  Ira Rosen  <irar@il.ibm.com>
2718
2719         * tree-vect-transform.c (vectorizable_store): Remove call to
2720         copy_virtual_operands() and call mark_symbols_for_renaming() for
2721         the created vector store.
2722         (vect_setup_realignment): Don't call copy_virtual_operands() and
2723         update_vuses_to_preheader(). 
2724         (vectorizable_load): Don't call copy_virtual_operands(). 
2725         (update_vuses_to_preheader): Remove.
2726
2727 2007-08-08  Chao-ying Fu  <fu@mips.com>
2728
2729         * tree.def (FIXED_POINT_TYPE): New type.
2730         (FIXED_CST): New constant.
2731         (FIXED_CONVERT_EXPR): New expr.
2732         * doc/c-tree.texi (Types): Document FIXED_POINT_TYPE.
2733         (Expressions): Document FIXED_CST and FIXED_CONVERT_EXPR.
2734         * tree.h (struct tree_base): Add saturating_flag.
2735         Remove one bit of spare for saturating_flag.
2736         (NUMERICAL_TYPE_CHECK): Support FIXED_POINT_TYPE.
2737         (NON_SAT_FIXED_POINT_TYPE_P, SAT_FIXED_POINT_TYPE_P,
2738         FIXED_POINT_TYPE_P): Define.
2739         (TYPE_SATURATING): Define.
2740         (TREE_FIXED_CST_PTR, TREE_FIXED_CST): Define.
2741         (struct tree_fixed_cst): New.
2742         (TYPE_IBIT, TYPE_FBIT): Define.
2743         (tree_node): Add fixed_cst.
2744         (enum tree_index): Add new enumeration values of
2745         TI_SAT_SFRACT_TYPE, TI_SAT_FRACT_TYPE, TI_SAT_LFRACT_TYPE,
2746         TI_SAT_LLFRACT_TYPE, TI_SAT_USFRACT_TYPE, TI_SAT_UFRACT_TYPE,
2747         TI_SAT_ULFRACT_TYPE, TI_SAT_ULLFRACT_TYPE, TI_SFRACT_TYPE,
2748         TI_FRACT_TYPE, TI_LFRACT_TYPE, TI_LLFRACT_TYPE, TI_USFRACT_TYPE,
2749         TI_UFRACT_TYPE, TI_ULFRACT_TYPE, TI_ULLFRACT_TYPE,
2750         TI_SAT_SACCUM_TYPE, TI_SAT_ACCUM_TYPE, TI_SAT_LACCUM_TYPE,
2751         TI_SAT_LLACCUM_TYPE, TI_SAT_USACCUM_TYPE, TI_SAT_UACCUM_TYPE,
2752         TI_SAT_ULACCUM_TYPE, TI_SAT_ULLACCUM_TYPE, TI_SACCUM_TYPE,
2753         TI_ACCUM_TYPE, TI_LACCUM_TYPE, TI_LLACCUM_TYPE, TI_USACCUM_TYPE,
2754         TI_UACCUM_TYPE, TI_ULACCUM_TYPE, TI_ULLACCUM_TYPE,
2755         TI_QQ_TYPE, TI_HQ_TYPE,_TYPE, TI_SQ_TYPE, TI_DQ_TYPE, TI_TQ_TYPE,
2756         TI_UQQ_TYPE, TI_UHQ_TYPE, TI_USQ_TYPE, TI_UDQ_TYPE, TI_UTQ_TYPE,
2757         TI_SAT_QQ_TYPE, TI_SAT_HQ_TYPE, TI_SAT_SQ_TYPE, TI_SAT_DQ_TYPE,
2758         TI_SAT_TQ_TYPE, TI_SAT_UQQ_TYPE, TI_SAT_UHQ_TYPE, TI_SAT_USQ_TYPE,
2759         TI_SAT_UDQ_TYPE, TI_SAT_UTQ_TYPE, TI_HA_TYPE, TI_SA_TYPE, TI_DA_TYPE,
2760         TI_TA_TYPE, TI_UHA_TYPE, TI_USA_TYPE, TI_UDA_TYPE, TI_UTA_TYPE,
2761         TI_SAT_HA_TYPE, TI_SAT_SA_TYPE, TI_SAT_DA_TYPE, TI_SAT_TA_TYPE,
2762         TI_SAT_UHA_TYPE, TI_SAT_USA_TYPE, TI_SAT_UDA_TYPE, TI_SAT_UTA_TYPE.
2763         (sat_short_fract_type_node, sat_fract_type_node,
2764         sat_long_fract_type_node, sat_long_long_fract_type_node,
2765         sat_unsigned_short_fract_type_node, sat_unsigned_fract_type_node,
2766         sat_unsigned_long_fract_type_node,
2767         sat_unsigned_long_long_fract_type_node, short_fract_type_node,
2768         fract_type_node, long_fract_type_node, long_long_fract_type_node,
2769         unsigned_short_fract_type_node, unsigned_fract_type_node,
2770         unsigned_long_fract_type_node, unsigned_long_long_fract_type_node,
2771         sat_short_accum_type_node, sat_accum_type_node,
2772         sat_long_accum_type_node, sat_long_long_accum_type_node,
2773         sat_unsigned_short_accum_type_node, sat_unsigned_accum_type_node,
2774         sat_unsigned_long_accum_type_node,
2775         sat_unsigned_long_long_accum_type_node, short_accum_type_node,
2776         accum_type_node, long_accum_type_node, long_long_accum_type_node,
2777         unsigned_short_accum_type_node, unsigned_accum_type_node,
2778         unsigned_long_accum_type_node, unsigned_long_long_accum_type_node,
2779         qq_type_node, hq_type_node, sq_type_node, dq_type_node, tq_type_node,
2780         uqq_type_node, uhq_type_node, usq_type_node, udq_type_node,
2781         utq_type_node, sat_qq_type_node, sat_hq_type_node, sat_sq_type_node,
2782         sat_dq_type_node, sat_tq_type_node, sat_uqq_type_node,
2783         sat_uhq_type_node, sat_usq_type_node, sat_udq_type_node,
2784         sat_utq_type_node, ha_type_node, sa_type_node, da_type_node,
2785         ta_type_node, uha_type_node, usa_type_node, uda_type_node,
2786         uta_type_node, sat_ha_type_node, sat_sa_type_node, sat_da_type_node,
2787         sat_ta_type_node, sat_uha_type_node, sat_usa_type_node,
2788         sat_uda_type_node, sat_uta_type_node): New macro.
2789         (make_fract_type, make_accum_type): Declare.
2790         (make_signed_fract_type, make_unsigned_fract_type,
2791         make_sat_signed_fract_type, make_sat_unsigned_fract_type,
2792         make_signed_accum_type, make_unsigned_accum_type,
2793         make_sat_signed_accum_type, make_sat_unsigned_accum_type,
2794         make_or_reuse_signed_fract_type, make_or_reuse_unsigned_fract_type,
2795         make_or_reuse_sat_signed_fract_type,
2796         make_or_reuse_sat_unsigned_fract_type, make_or_reuse_signed_accum_type,
2797         make_or_reuse_unsigned_accum_type, make_or_reuse_sat_signed_accum_type,
2798         make_or_reuse_sat_unsigned_accum_type): New macro.
2799         (fixed_zerop): Declare.
2800         * defaults.h (SHORT_FRACT_TYPE_SIZE, FRACT_TYPE_SIZE,
2801         LONG_FRACT_TYPE_SIZE, LONG_LONG_FRACT_TYPE_SIZE,
2802         SHORT_ACCUM_TYPE_SIZE, ACCUM_TYPE_SIZE, LONG_ACCUM_TYPE_SIZE,
2803         LONG_LONG_ACCUM_TYPE_SIZE): Define.
2804         * treestruct.def: Add TS_FIXED_CST.
2805         * Makefile.in (c-pretty-print.o): Add dependence on fixed-value.h.
2806         (tree.o): Likewise.
2807         (tree-dump.o): Likewise.
2808         (print-tree.o): Likewise.
2809         (tree-pretty-print.o): Likewise.
2810         (fold-const.o): Likewise.
2811         * tree-complex.c (some_nonzerop): Handle FIXED_CST.
2812         * tree-gimple.c (is_gimple_formal_tmp_rhs): Handle FIXED_CST.
2813         (is_gimple_min_invariant): Handle FIXED_CST.
2814         * stor-layout.c (int_mode_for_mode): Handle MODE_FRACT, MODE_UFRACT,
2815         MODE_ACCUM, MODE_UACCUM, MODE_VECTOR_FRACT, MODE_VECTOR_UFRACT,
2816         MODE_VECTOR_ACCUM, MODE_VECTOR_UACCUM.
2817         (layout_type): Handle FIXED_POINT_TYPE.
2818         (make_fract_type, make_accum_type): New functions.
2819         * tree-browser.c (browse_tree): Handle FIXED_POINT_TYPE.
2820         * tree-dump.c (fixed-value.h): New include.
2821         (dump_fixed): New function.
2822         (dequeue_and_dump): Handle FIXED_POINT_TYPE and FIXED_CST.
2823         * tree-inline.c (remap_type_1): Handle FIXED_POINT_TYPE.
2824         (estimate_num_insns_1): Handle FIXED_CST and FIXED_CONVERT_EXPR.
2825         * tree-pretty-print.c (fixed-value.h): New include.
2826         (dump_generic_node): Handle FIXED_POINT_TYPE, FIXED_CST, and
2827         FIXED_CONVERT_EXPR.
2828         * tree-scalar-evolution.c (get_scalar_evolution): Handle FIXED_CST.
2829         * tree-ssa-loop-im.c (for_each_index): Handle FIXED_CST.
2830         * tree-ssa-pre.c (poolify_tree): Handle FIXED_CST.
2831         * tree-ssa-reassoc.c (break_up_subtract_bb): We can do reassociation
2832         for non-saturating fixed-point types.
2833         (reassociate_bb): Likewise.
2834         * emit-rtl.c (fixed-value.h): New include.
2835         (fconst0, fconst1): New array.
2836         (init_emit_once): Initialize fconst0 and fconst1 for fixed-point modes.
2837         * tree-vect-generic.c expand_vector_operation): Support
2838         MODE_VECTOR_FRACT, MODE_VECTOR_UFRACT, MODE_VECTOR_ACCUM, and
2839         MODE_VECTOR_UACCUM.
2840         (type_for_widest_vector_mode): Add one parameter for the 
2841         saturating flag.
2842         Check scalar FRACT, UFRACT, ACCUM, and UACCUM mode to select their
2843         vector mode.
2844         Pass the satp parameter to type_for_mode for fixed-point types.
2845         (expand_vector_operations_1): Pass the saturating flag to
2846         type_for_widest_vector_mode.
2847         Support MODE_VECTOR_FRACT, MODE_VECTOR_UFRACT, MODE_VECTOR_ACCUM,
2848         and MODE_VECTOR_UACCUM.
2849         * tree-vect-transform.c (vect_is_simple_cond): Support FIXED_CST.
2850         (vectorizable_condition): Likewise.
2851         * tree.c (fixed-value.h): New include.
2852         (tree_code_size): Support FIXED_CST.
2853         (build_fixed): New function.
2854         (build_one_cst): Support FIXED_POINT_TYPE for accum types.
2855         (fixed_zerop): New function.
2856         (tree_node_structure): Support FIXED_CST.
2857         (type_contains_placeholder_1): Support FIXED_POINT_TYPE.
2858         (build_type_attribute_qual_variant): Handle FIXED_POINT_TYPE.
2859         (type_hash_eq): Handle FIXED_POINT_TYPE.
2860         (simple_cst_equal): Support FIXED_CST.
2861         (iterative_hash_expr): Handle FIXED_CST.
2862         (get_unwidened): Make sure type is not FIXED_POINT_TYPE.
2863         (get_narrower): Likewise.
2864         (variably_modified_type_p): Handle FIXED_POINT_TYPE.
2865         (make_or_reuse_fract_type, make_or_reuse_accum_type): New functions.
2866         (build_common_tree_nodes_2): Use MAKE_FIXED_TYPE_NODE_FAMILY and
2867         MAKE_FIXED_MODE_NODE macros to initialize fixed-point type
2868         nodes.
2869         (build_vector_type_for_mode): Handle MODE_VECTOR_FRACT,
2870         MODE_VECTOR_UFRACT, MODE_VECTOR_ACCUM, MODE_VECTOR_UACCUM.
2871         (initializer_zerop): Support FIXED_CST.
2872         (walk_tree): Handle FIXED_CST and FIXED_POINT_TYPE.
2873         * dwarf2out.c (base_type_die): Use DW_ATE_signed_fixed or
2874         DW_ATE_unsigned_fixed to describe FIXED_POINT_TYPE.
2875         (is_base_type): Handle FIXED_POINT_TYPE.
2876         (add_type_attribute): Handle FIXED_POINT_TYPE.
2877         (gen_type_die_with_usage): Handle FIXED_POINT_TYPE.
2878         * print-tree.c (fixed-value.h): New include.
2879         (print_node_brief): Support FIXED_CST.
2880         (print_node): Support FIXED_POINT_TYPE and FIXED_CST.
2881         * c-pretty-print.c (fixed-value.h): New include.
2882         (pp_c_type_specifier): Handle FIXED_POINT_TYPE.  Need to pass
2883         TYPE_SATURATING to c_common_type_for_mode for fixed-point modes.
2884         (pp_c_direct_abstract_declarator): Handle FIXED_POINT_TYPE.
2885         Support fixed-point types for inner items in VECTOR_TYPE.
2886         (pp_c_direct_declarator): Likewise.
2887         (pp_c_declarator): Likewise.
2888         (pp_c_fixed_constant): New function.
2889         (pp_c_constant): Handle FIXED_CST.
2890         (pp_c_primary_expression): Likewise.
2891         (pp_c_expression): Likewise.
2892         * fold-const.c (fixed-value.h): New include.
2893         (negate_expr_p): Return true for FIXED_CST.
2894         (fold_negate_expr): Support FIXED_CST.
2895         (split_tree): Support FIXED_CST.
2896         (const_binop): Support FIXED_CST.
2897         (fold_convert_const_int_from_fixed): New function to convert from
2898         fixed to int.
2899         (fold_convert_const_real_from_fixed): New function to convert from
2900         fixed to real.
2901         (fold_convert_const_fixed_from_fixed): New function to convert from
2902         fixed to another fixed.
2903         (fold_convert_const_fixed_from_int): New function to convert from
2904         int to fixed.
2905         (fold_convert_const_fixed_from_real): New function to convert from
2906         real to fixed.
2907         (fold_convert_const): Support conversions from fixed to int, from
2908         fixed to real, from fixed to fixed, from int to fixed, and from real
2909         to fixed.
2910         (fold_convert): Support FIXED_CST and FIXED_POINT_TYPE.
2911         (operand_equal_p): Support FIXED_CST.
2912         (make_range): For fixed-point modes, we need to pass the
2913         saturating flag as the 2nd parameter.
2914         (tree_swap_operands_p): Handle FIXED_CST.
2915         (fold_plusminus_mult_expr): For fract modes, we cannot generate
2916         constant 1.
2917         (fold_unary): Support FIXED_CONVERT_EXPR.
2918         (fold_binary): Handle FIXED_CST.
2919         Make sure the type is not saturating, before associating operations.
2920         Ex: A + B + C, A * B * C, (A1 * C1) +/- (A2 * C2).
2921         (tree_expr_nonnegative_warnv_p): Handle FIXED_CST.
2922         (fold_negate_const): Support FIXED_CST.
2923         (fold_relational_const): Support FIXED_CST.
2924         * gimplify.c (omp_firstprivatize_type_sizes): Handle FIXED_POINT_TYPE.
2925         (gimplify_expr): Handle FIXED_CST.
2926         (gimplify_type_sizes): Handle FIXED_POINT_TYPE.
2927         * ipa-prop.c (ipa_callsite_compute_param): Support FIXED_CST.
2928         * ipa-type-escape.c (type_to_consider): Handle FIXED_POINT_TYPE.
2929         * doc/tm.texi (Type Layout): Document SHORT_FRACT_TYPE_SIZE,
2930         FRACT_TYPE_SIZE, LONG_FRACT_TYPE_SIZE, LONG_LONG_FRACT_TYPE_SIZE,
2931         SHORT_ACCUM_TYPE_SIZE, ACCUM_TYPE_SIZE, LONG_ACCUM_TYPE_SIZE,
2932         LONG_LONG_ACCUM_TYPE_SIZE.
2933         * dbxout.c (dbxout_type): Handle FIXED_POINT_TYPE.
2934         * c-aux-info.c (gen_type): Handle FIXED_POINT_TYPE.
2935         * tree-sra.c (is_sra_scalar_type): Support FIXED_POINT_TYPE.
2936         * expmed.c (extract_bit_field): Support MODE_FRACT, MODE_UFRACT,
2937         MODE_ACCUM, and MODE_UACCUM.
2938         * tree-vectorizer.c (vect_is_simple_reduction): Check for saturating
2939         fixed-point types to disable reduction.
2940         * explow.c (promote_mode): Support FIXED_POINT_TYPE.
2941
2942 2007-08-08  David Edelsohn  <edelsohn@gnu.org>
2943
2944         * config/rs6000/x-rs6000: New file.
2945         * config/rs6000/darwin.h (CC1_SPEC): Add cc1_cpu.
2946         * config/rs6000/rs6000.h (EXTRA_SPECS): Add cc1_cpu.
2947         (EXTRA_SPEC_FUNCTIONS): Define.
2948         (HAVE_LOCAL_CPU_DETECT): Define.
2949         (CC1_CPU_SPEC): Define.
2950         * config/rs6000/driver-rs6000.c: New file.
2951         * config/rs6000/aix.h (CC1_SPEC): Define.
2952         * config/rs6000/sysv4.h (CC1_SPEC): Add cc1_cpu.
2953         * config.host: Add x-rs6000 to host_xmake_file if host and target
2954         are rs6000 or powerpc.
2955
2956 2007-08-08  Paolo Bonzini <paolo.bonzini@lu.unisi.ch>
2957
2958         * config/i386/t-crtstuff (CRTSTUFF_T_CFLAGS): Use +=.
2959
2960 2007-08-08  Richard Sandiford  <richard@codesourcery.com>
2961             Sandra Loosemore  <sandra@codesourcery.com>
2962             Chao-ying Fu  <fu@mips.com>
2963             Nigel Stephens  <nigel@mips.com>
2964             David Ung  <davidu@mips.com>
2965
2966         * doc/invoke.texi (-mcode-readable): Document.
2967         * config/mips/mips.opt (mcode-readable): New option.
2968         * config/mips/mips-protos.h (SYMBOL_32_HIGH): New symbol type.
2969         * config/mips/mips.h (mips_code_readable_setting): New enum.
2970         (mips_code_readable): Declare.
2971         (TARGET_MIPS16_TEXT_LOADS, TARGET_MIPS16_PCREL_LOADS): New macros.
2972         (TARGET_MIPS16_SHORT_JUMP_TABLES): New macro.
2973         (JUMP_TABLES_IN_TEXT_SECTION): Use it.
2974         (CASE_VECTOR_MODE, CASE_VECTOR_PC_RELATIVE): Likewise.  Remove
2975         boiler-plate comments.
2976         (ASM_OUTPUT_ADDR_DIFF_ELT): Use TARGET_MIPS16_SHORT_JUMP_TABLES.
2977         * config/mips/mips.c (mips_code_readable): New variable.
2978         (mips_classify_symbol): Only return SYMBOL_PC_RELATIVE for
2979         MIPS16 labels if TARGET_MIPS16_SHORT_JUMP_TABLES.  Use both the
2980         context and -mcode-readable setting to restrict the use of
2981         SYMBOL_PC_RELATIVE for MIPS16 constant pool references.
2982         Only return TARGET_FORCE_TO_MEM if PC-relative loads are allowed.
2983         (mips_symbolic_constant_p): Handle SYMBOL_32_HIGH.
2984         (mips_blocks_for_constant_p): Only return false for
2985         TARGET_MIPS16_PCREL_LOADS.
2986         (mips_symbol_insns_1): Treat HIGHs as 2 extended instructions
2987         for MIPS16.  Handle SYMBOL_32_HIGH.
2988         (mips_const_insns): Allow HIGHs for MIPS16 too.
2989         (mips_unspec_address_offset): New function, split out from...
2990         (mips_unspec_address): ...here.
2991         (mips_output_move): Handle MIPS16 HIGH moves.  Use "li" to load
2992         16-bit symbolic constants.  Assert approropiate conditions for
2993         using the "la" and "dla" macros.
2994         (mips_handle_option): Handle -mcode-readable=.
2995         (override_options): Use %hi/%lo relocations for TARGET_MIPS16 too.
2996         Set up mips_lo_relocs[SYMBOL_32_HIGH].
2997         (mips_strip_unspec_address): New function, split out from...
2998         (print_operand_reloc): ...here.
2999         (print_operand): Pass constants through mips_strip_unspec_address.
3000         (print_operand_address): Likewise.
3001         (mips_output_mi_thunk): Remove guard of mips16_lay_out_constants.
3002         (mips_select_rtx_section): Remove MIPS16 handling.
3003         (mips16_gp_pseudo_reg): Check currently_expanding_to_rtl.
3004         (mips16_rewrite_pool_refs): Wrap the labels in an address UNSPEC.
3005         (mips16_lay_out_constants): Do nothing unless
3006         TARGET_MIPS16_PCREL_LOADS.
3007         (mips_avoid_hazards): Remove guard of mips16_lay_out_constants.
3008         * config/mips/mips.md: Split HIGHs for MIPS16.
3009         (tablejump): Use TARGET_MIPS16_SHORT_JUMP_TABLES.
3010
3011 2007-08-08  Richard Sandiford  <richard@codesourcery.com>
3012
3013         * config/mips/mips-protos.h (mips_emit_move): Declare.
3014         * config/mips/mips.c (mips_emit_move): New function.
3015         (mips_force_temporary): Use mips_emit_move instead of emit_move_insn.
3016         (mips_legitimize_const_move): Likewise.
3017         (mips_legitimize_move): Likewise.
3018         (mips_split_64bit_move): Likewise.
3019         (mips_restore_gp): Likewise.
3020         (mips_load_call_address): Likewise.
3021         (mips_emit_fcc_reload): Likewise.
3022         (mips_set_return_address): Likewise.
3023         (mips_block_move_straight): Likewise.
3024         (mips_block_move_loop): Likewise.
3025         (mips_setup_incoming_varargs): Likewise.
3026         (mips_save_reg): Likewise.
3027         (mips_expand_prologue): Likewise.
3028         (mips_restore_reg): Likewise.
3029         (mips_expand_epilogue): Likewise.
3030         (mips_output_mi_thunk): Likewise.
3031         (build_mips16_call_stub): Likewise.
3032         (mips_builtin_branch_and_move): Likewise.
3033         * config/mips/mips.h (INITIALIZE_TRAMPOLINE): Likewise.
3034         * config/mips/mips.md (fixuns_truncdfsi2): Likewise.
3035         (fixuns_truncdfdi2): Likewise.
3036         (fixuns_truncsfsi2): Likewise.
3037         (fixuns_truncsfdi2): Likewise.
3038         (loadgp_absolute): Likewise.
3039         (builtin_setjmp_setup): Likewise.
3040         (builtin_longjmp): Likewise.
3041         (untyped_call): Likewise.
3042
3043 2007-08-08  Richard Sandiford  <richard@codesourcery.com>
3044
3045         * config/mips/mips-protos.h (mips_split_symbol): Add a mode and
3046         an "rtx *" argument.  Return a bool.
3047         * config/mips/mips.c (mips_split_symbol): Accept arbitrary source
3048         values and return true if they can be split.  Take the same kind of
3049         mode argument as mips_symbol_insns.  Add a "lo_sum_out" parameter
3050         and store the lo_sum there if nonnull.  Use the symbol type to
3051         determine whether a $gp or HIGH is needed.
3052         (mips_legitimize_address): Update call to mips_split_symbol and
3053         simplify accordingly.
3054         (mips_legitimize_const_move): Likewise.
3055         * config/mips/mips.md: In the combine define_split,
3056         check mips_split_symbol instead of splittable_symbolic_operand.
3057         Update use of mips_split_symbol in the generator code.
3058         * config/mips/predicates.md (splittable_symbolic_operand): Delete.
3059
3060 2007-08-08  Richard Sandiford  <richard@codesourcery.com>
3061
3062         * config/mips/mips.c (mips_symbolic_address_p): Delete.
3063         (mips_symbol_insns_1): New function, split out from...
3064         (mips_symbol_insns): ...here.  Take a mode argument.  Treat loads
3065         and stores separately from load addresses.
3066         (mips_classify_address): Replace uses of mips_symbolic_address_p
3067         with uses of mips_symbol_insns.
3068         (mips_address_insns): Update calls to mips_symbol_insns.
3069         (mips_const_insns): Likewise.
3070         (mips_legitimize_address): Likewise.
3071
3072 2007-08-08  Richard Sandiford  <richard@codesourcery.com>
3073
3074         * config/mips/mips-protos.h (SYMBOL_FORCE_TO_MEM): New symbol type.
3075         * config/mips/mips.c (mips_classify_symbol): Skip TARGET_ABICALLS
3076         block for locally-binding symbols if TARGET_ABSOLUTE_ABICALLS.
3077         Return SYMBOL_FORCE_TO_MEM instead of SYMBOL_ABSOLUTE for
3078         non-call contexts if TARGET_MIPS16.
3079         (mips_symbolic_constant_p): Handle SYMBOL_FORCE_TO_MEM.
3080         (mips_symbolic_address_p): Likewise.  Remove special TARGET_MIPS16
3081         code for SYMBOL_ABSOLUTE.
3082         (mips_symbol_insns): Likewise.
3083
3084 2007-08-08  Richard Sandiford  <richard@codesourcery.com>
3085
3086         * config/mips/mips-protos.h (mips_symbol_context): New enumeration.
3087         * config/mips/mips.c (mips_classify_symbol): Take a context argument.
3088         (mips_symbolic_constant_p): Likewise.  Update the call to
3089         mips_classify_symbol.
3090         (mips_classify_address): Update the calls to mips_symbolic_constant_p.
3091         (mips_const_insns): Likewise.  Update the call to mips_classify_symbol.
3092         (mips_legitimize_address): Update the call to mips_symbolic_constant_p.
3093         (print_operand_reloc): Add a context argument.  Update the call to
3094         mips_symbolic_constant_p.
3095         (print_operand): Update the calls to print_operand_reloc.
3096         (print_operand_address): Use print_operand_reloc rather than
3097         print_operand.
3098         (mips_rewrite_small_data_p): Add a context argument.  Update the call
3099         to mips_symbolic_constant_p.
3100         (mips_small_data_pattern_1): Make DATA the containing mem.
3101         Update the call to mips_rewrite_small_data_p.
3102         (mips_rewrite_small_data_1): Likewise.
3103         (mips_use_anchors_for_symbol_p): Update the call to
3104         mips_symbolic_constant_p.
3105         * config/mips/predicates.md (const_call_insn_operand): Likewise.
3106         (splittable_symbolic_operand): Likewise.
3107         (move_operand): Likewise.
3108         (absolute_symbolic_operand): Likewise.
3109         (got_disp_operand): Likewise.
3110         (got_page_ofst_operand): Likewise.
3111
3112 2007-08-08  Richard Sandiford  <richard@codesourcery.com>
3113
3114         * config/mips/mips-protos.h (SYMBOL_GENERAL): Rename to...
3115         (SYMBOL_ABSOLUTE): ...this.
3116         (SYMBOL_SMALL_DATA): Rename to...
3117         (SYMBOL_GP_RELATIVE): ...this.
3118         (SYMBOL_CONSTANT_POOL): Rename to...
3119         (SYMBOL_PC_RELATIVE): ...this.
3120         * config/mips/mips.c (mips_classify_symbol, mips_symbolic_constant_p)
3121         (mips_symbolic_address_p, mips_symbol_insns, override_options)
3122         (mips_rewrite_small_data_p, mips_use_anchors_for_symbol_p): Update
3123         after above changes.
3124         * config/mips/predicates.md (const_call_insn_operand): Likewise.
3125         (general_symbolic_operand): Rename to...
3126         (absolute_symbolic_operand): ...this.
3127         * config/mips/mips.md: Update after above changes.
3128
3129 2007-08-08  Vladimir Yanovsky  <yanov@il.ibm.com>
3130             Revital Eres  <eres@il.ibm.com>
3131
3132         * ddg.c (print_ddg): Add dump information.
3133         * modulo-sched.c (print_node_sched_params): Add parameter and
3134         verbosity.
3135         (calculate_maxii): Remove function.
3136         (undo_generate_reg_moves): Likewise.
3137         (undo_permute_partial_schedule): Likewise.
3138         (kernel_number_of_cycles): Likewise.
3139         (MAXII_FACTOR): New definition to calculate the upper bound of II.
3140         (sms_schedule): Use it.  Remove profitability checks.
3141         (sms_schedule_by_order): Fix order of nodes within the cycle.
3142
3143 2007-08-08  Samuel Thibault  <samuel.thibault@ens-lyon.org>
3144
3145         * config/i386/gnu.h (STARTFILE_SPEC): Use gcrt0.o in profile mode, add
3146         -profile option, add pie support.
3147         (ENDFILE_SPEC): New spec.
3148         * config/gnu.h (LIB_SPEC): Add -profile option.
3149
3150 2007-08-08  Samuel Thibault  <samuel.thibault@ens-lyon.org>
3151
3152         * config/i386/gnu.h (CPP_SPEC): Add -pthread option.
3153         * config/gnu.h (LIB_SPEC): Likewise.
3154
3155 2007-08-07  Yaz Saito  <saito@google.com>
3156             Ian Lance Taylor  <iant@google.com>
3157
3158         * common.opt (finstrument-functions-exclude-function-list): New
3159         option.
3160         (finstrument-functions-exclude-file-list): New option.
3161         * opts.c (char_p): Define and DEF_VEC.
3162         (flag_instrument_functions_exclude_functions): New static
3163         variable.
3164         (flag_instrument_functions_exclude_files): New static variable.
3165         (add_instrument_functions_exclude_list): New static function.
3166         (flag_instrument_functions_exclude_p): New function.
3167         (common_handle_option): Handle new options.
3168         * flags.h (flag_instrument_functions_exclude_p): Declare.
3169         * gimplify.c (gimplify_function_tree): Call
3170         flag_instrument_functions_exclude_p.
3171         * doc/invoke.texi (Option Summary): Mention new options.
3172         (Code Gen Options): Document new options.
3173
3174 2007-08-07  Ian Lance Taylor  <iant@google.com>
3175
3176         PR rtl-optimization/32776
3177         * lower-subreg.c (resolve_clobber): Call resolve_reg_notes.
3178         (resolve_use): Likewise.
3179         (decompose_multiword_subregs): Remove "changed" local variable.
3180
3181 2007-08-07  Carlos O'Donell  <carlos@codesourcery.com>
3182
3183         * configure.ac: Define HAVE_GNU_AS if $gas_flag is yes.
3184         * configure: Regenerate.
3185         * config.in: Regenerate.
3186         * gcc.c [HAVE_GNU_AS]: Add "%{v} %{w:-W} %{I*} " to asm_options
3187         spec string.
3188
3189 2007-08-07  Ian Lance Taylor  <iant@google.com>
3190
3191         * lower-subreg.c (resolve_clobber): If the clobber has a LIBCALL
3192         note, just delete the insn.
3193
3194 2007-08-07  Andreas Schwab  <schwab@suse.de>
3195
3196         PR bootstrap/32973
3197         * gengtype-lex.l: Ignore backslash/newline pair while scanning a
3198         struct definition.
3199
3200 2007-08-07  Andreas Krebbel  <krebbel1@de.ibm.com>
3201
3202         * lower-subreg.c (resolve_subreg_use): Remove assertion.
3203         (find_decomposable_shift_zext, resolve_shift_zext): New functions.
3204         (decompose_multiword_subregs): Use the functions above to decompose
3205         multiword shifts and zero-extends.
3206
3207 2007-08-07  Rask Ingemann Lambertsen  <rask@sygehus.dk>
3208
3209         * doc/sourcebuild.texi (Test Directives): Fix "compile" and
3210         "assemble" descriptions which were swapped.
3211
3212 2007-08-06  Chao-ying Fu  <fu@mips.com>
3213
3214         * fixed-value.h: New file.
3215         * fixed-value.c: New file.
3216         * Makefile.in (OBJS-common): Add fixed-value.o.
3217         (fixed-value.o): New rule.
3218         (GTFILES): Add fixed-value.h.
3219         * double-int.c (double_int_scmp): We should use unsigned HOST_WIDE_INT
3220         to compare a.low and b.low.
3221         * gengtype.c (main): Handle FIXED_VALUE_TYPE type as scalar typedef.
3222
3223 2007-08-06  H.J. Lu  <hongjiu.lu@intel.com>
3224             Daniel Jacobowitz  <dan@codesourcery.com>
3225
3226         PR target/31868
3227         * config.gcc (x86_64-*-freebsd*): Add i386/t-crtstuff to
3228         tmake_file.
3229         (x86_64-*-netbsd*): Likewise.
3230         (x86_64-*-linux*): Likewise.
3231         (x86_64-*-kfreebsd*-gnu): Likewise.
3232         (x86_64-*-knetbsd*-gnu): Likewise.
3233         (i[34567]86-*-solaris2.1[0-9]*): Likewise.
3234
3235         * config/i386/t-linux64 (CRTSTUFF_T_CFLAGS): Removed.
3236
3237         * config/i386/t-crtstuff (CRTSTUFF_T_CFLAGS): Update comments.
3238         Add -fno-asynchronous-unwind-tables.
3239
3240         * config/t-freebsd (CRTSTUFF_T_CFLAGS_S): Add $(CRTSTUFF_T_CFLAGS).
3241         * config/t-libc-ok (CRTSTUFF_T_CFLAGS_S): Likewise.
3242         * config/t-lynx (CRTSTUFF_T_CFLAGS_S): Likewise.
3243         * config/t-netbsd (CRTSTUFF_T_CFLAGS_S): Likewise.
3244         * config/t-svr4 (CRTSTUFF_T_CFLAGS_S): Likewise.
3245
3246 2007-08-06  Steve Ellcey  <sje@cup.hp.com>
3247
3248         * config/ia64/ia64.c (ia64_c_mode_for_suffix): New.
3249         (TARGET_C_MODE_FOR_SUFFIX): New.
3250
3251 2007-08-06  Steve Ellcey  <sje@cup.hp.com>
3252
3253         * config/ia64/div.md (m2subrf4_cond): Change 'g' to 'G'.
3254
3255 2007-08-06  Steve Ellcey  <sje@cup.hp.com>
3256
3257         * config/ia64/ia64.h (MODES_TIEABLE_P): Fix typo.
3258
3259 2007-08-06  H.J. Lu  <hongjiu.lu@intel.com>
3260
3261         * config/i386/i386.md: Check TARGET_ macros and optimize_size
3262         before checking function returns in conditional expressions.
3263
3264 2007-08-06  Alfred Minarik  <a.minarik@aon.at>
3265
3266         PR pch/13676
3267         * doc/invoke.texi: Add .hp, .hxx, .hpp, .h, .HPP, .tcc as c++ header.
3268
3269 2008-08-05  Andrew Pinski  <andrew_pinski@playstation.sony.com>
3270
3271         PR middle-end/32988
3272         * tree.c (build2_stat): Instead of checking for INTEGER_TYPE, check
3273         for INTEGRAL_TYPE_P.
3274
3275 2008-08-05  Paolo Bonzini  <bonzini@gnu.org>
3276
3277         * configure.ac: Remove --enable-checking=df from default settings.
3278         * tree-pass.h (TODO_df_verify): New.  Shift TODO_mark_first_instance.
3279         * df-core.c (df_finish_pass) [ENABLE_CHECKING]: Schedule verification
3280         if the parameter is true.
3281         (df_analyze) [!ENABLE_DF_CHECKING]: Also do verification if the
3282         DF_VERIFY_SCHEDULED flag is true.
3283         * df.h (enum df_changeable_flags): Add DF_VERIFY_SCHEDULED.
3284         (df_finish_pass): Adjust prototype.
3285         * passes.c (execute_todo): Schedule verification if TODO_df_verify is
3286         true.
3287
3288         * see.c (pass_see): Add TODO_df_verify.
3289         * loop-init.c (pass_rtl_move_loop_invariants): Add TODO_df_verify.
3290         * global.c (rest_of_handle_global_alloc): Schedule verification
3291         after the pass.
3292         * local-alloc.c (rest_of_handle_local_alloc): Schedule verification
3293         before the pass.
3294         * function.c (pass_thread_prologue_and_epilogue): Add TODO_df_verify.
3295         * gcse.c (rest_of_handle_gcse): Adjust call to df_finish_pass.
3296         * loop-iv.c (iv_analysis_done): Schedule verification after the pass.
3297
3298         * config/sh/sh.c (sh_output_mi_thunk): Remove dead code.
3299         * config/ia64/ia64.c (ia64_reorg): Adjust call to df_finish_pass.
3300         * config/bfin/bfin.c (bfin_reorg): Adjust call to df_finish_pass.
3301
3302 2007-08-05  Vladimir Yanovsky  <yanov@il.ibm.com>
3303             Revital Eres <eres@il.ibm.com>
3304
3305         * doc/invoke.texi (-fmodulo-sched-allow-regmoves): Document new
3306         flag.
3307         * ddg.c (create_ddg_dependence): Rename to...
3308         (create_ddg_dep_from_intra_loop_link): This.  Do not check
3309         for interloop edges.  Do not create anti dependence edge when
3310         a true dependence edge exists in the opposite direction and
3311         -fmodulo-sched-allow-regmoves is set.
3312         (build_intra_loop_deps): Call create_ddg_dep_from_intra_loop_link.
3313         (add_cross_iteration_register_deps): Create anti dependence edge
3314         when -fno-modulo-sched-allow-regmoves is set.
3315         * common.opt (-fmodulo-sched-allow-regmoves): New flag.
3316
3317 2007-08-04  Richard Sandiford  <richard@codesourcery.com>
3318
3319         * config/arm/arm.md (movsi): Add braces.
3320
3321 2007-08-04  Andrew Pinski  <andrew_pinski@playstation.sony.com>
3322
3323         PR middle-end/32780
3324         * fold-const.c (fold_binary <case MINUS_EXPR>): Fix the type of
3325         operands for the folding of "A - (A & B)" into "~B & A"; cast them
3326         to type.
3327
3328 2007-08-03  Zdenek Dvorak  <ook@ucw.cz>
3329
3330         * tree-ssa-threadupdate.c (thread_through_all_blocks): Use loops'
3331         state accessor functions.
3332         * cfgloopmanip.c (remove_path, create_preheaders,
3333         force_single_succ_latches, fix_loop_structure): Ditto.
3334         * tree-ssa-loop-manip.c (rewrite_into_loop_closed_ssa,
3335         tree_duplicate_loop_to_header_edge): Ditto.
3336         * cfgloopanal.c (mark_irreducible_loops): Ditto.
3337         * loop-init.c (loop_optimizer_init, loop_optimizer_finalize):
3338         Ditto.
3339         * tree-cfgcleanup.c (cleanup_tree_cfg_noloop, repair_loop_structures,
3340         cleanup_tree_cfg): Ditto.
3341         * tree-cfg.c (tree_merge_blocks): Ditto.
3342         * cfgloop.c (rescan_loop_exit, record_loop_exits,
3343         release_recorded_exits, get_loop_exit_edges, verify_loop_structure,
3344         loop_preheader_edge, single_exit): Ditto.
3345         (flow_loops_find): Do not clear loops->state.
3346         * cfgloop.h (loops_state_satisfies_p, loops_state_set,
3347         loops_state_clear): New functions.
3348
3349 2007-08-03  Andrew Pinski  <andrew_pinski@playstation.sony.com>
3350
3351         PR middle-end/32399
3352         * tree-ssa-address.c (add_to_parts): Use POINTER_PLUS_EXPR
3353         when adding to the base and convert ELT to sizetype instead of type.
3354
3355 2007-08-03  Andrew Pinski  <andrew_pinski@playstation.sony.com>
3356
3357         PR middle-end/32304
3358         * ipa-reference.c (has_proper_scope_for_analysis): Return false when
3359         the decl's type has TYPE_NEEDS_CONSTRUCTING set.
3360
3361 2007-08-03  Andrew Pinski  <andrew_pinski@playstation.sony.com>
3362
3363         PR middle-end/32935
3364         * fold-convert.c (fold_negate_expr <NOP_EXPR>): Convert back to the
3365          correct type the negate expression.
3366
3367 2007-08-03  Jan Hubicka  <jh@suse.cz>
3368
3369         * i386.c (setup_incoming_varargs_64): Tolerate 64bit preferred
3370         stack boundary.
3371
3372 2007-08-03  David Edelsohn  <edelsohn@gnu.org>
3373
3374         * config/rs6000/rs6000.c (struct processor_cost): Change
3375         l1_cache_lines to l1_cache_size.  Add l2_cache_size.
3376         (*_cost): Convert l1 cache information to kilobytes.  Add l2 cache
3377         information.
3378         (rios1_costs, rios2_cost): Correct cache line size.
3379         (rs6000_override_options): Set l2-cache-size parameter.
3380
3381 2007-08-03  Andrew Pinski  <andrew_pinski@playstation.sony.com>
3382             Diego Novillo  <dnovillo@google.com>
3383
3384         PR 31521
3385         * tree-vrp.c (simplify_div_or_mod_using_ranges): Also simplify
3386         if the range includes 0.
3387
3388 2007-08-03  Ben Elliston  <bje@au.ibm.com>
3389
3390         * config/spu/spu.md (dftsv, dftsv_celledp): Attach the appropriate
3391         mode to unspec expressions to silence a warning from the generator
3392         programs.
3393         
3394 2007-08-02  Steve Ellcey  <sje@cup.hp.com>
3395
3396         * config/ia64/constraints.md ("U"): Make constraint vector only.
3397
3398 2007-08-02  Nathan Froyd  <froydnj@codesourcery.com>
3399
3400         PR middle-end/25446
3401         * c-objc-common.c (c_cannot_inline_tree_fn): Check for an
3402         always_inline attribute on the function decl.
3403
3404 2007-08-02  Nathan Froyd  <froydnj@codesourcery.com>
3405
3406         PR middle-end/25445
3407         * varasm.c (default_binds_local_p_1): Consult flag_whole_program
3408         if we are compiling with -fPIC.
3409
3410 2007-08-02  Sandra Loosemore  <sandra@codesourcery.com>
3411             Nigel Stephens  <nigel@mips.com>
3412
3413         * longlong.h [__mips__] (count_leading_zeros, COUNT_LEADING_ZEROS_0):
3414         Define for MIPS32 and MIPS64.
3415
3416 2007-08-02  Nick Clifton  <nickc@redhat.com>
3417
3418         * config/host-hpux.c: Change copyright header to refer to version
3419         3 of the GNU General Public License and to point readers at the
3420         COPYING3 file and the FSF's license web page.
3421         * config/alpha/predicates.md, config/alpha/vms-ld.c,
3422         config/alpha/linux.h, config/alpha/alpha.opt,
3423         config/alpha/linux-elf.h, config/alpha/vms.h, config/alpha/elf.h,
3424         config/alpha/vms-unwind.h, config/alpha/ev4.md,
3425         config/alpha/ev6.md, config/alpha/alpha.c, config/alpha/vms-cc.c,
3426         config/alpha/alpha.h, config/alpha/sync.md,
3427         config/alpha/openbsd.h, config/alpha/alpha.md,
3428         config/alpha/alpha-modes.def, config/alpha/ev5.md,
3429         config/alpha/alpha-protos.h, config/alpha/freebsd.h,
3430         config/alpha/osf5.h, config/alpha/netbsd.h, config/alpha/vms64.h,
3431         config/alpha/constraints.md, config/alpha/osf.h,
3432         config/alpha/xm-vms.h, config/alpha/unicosmk.h, config/linux.h,
3433         config/frv/predicates.md, config/frv/frv.h, config/frv/linux.h,
3434         config/frv/frv.md, config/frv/frv.opt, config/frv/frv-modes.def,
3435         config/frv/frv-asm.h, config/frv/frv-protos.h,
3436         config/frv/frv-abi.h, config/frv/frv.c, config/s390/tpf.h,
3437         config/s390/s390.c, config/s390/predicates.md, config/s390/s390.h,
3438         config/s390/linux.h, config/s390/tpf.md, config/s390/tpf.opt,
3439         config/s390/2064.md, config/s390/2084.md, config/s390/s390.md,
3440         config/s390/s390.opt, config/s390/s390-modes.def,
3441         config/s390/fixdfdi.h, config/s390/constraints.md,
3442         config/s390/s390-protos.h, config/s390/s390x.h, config/elfos.h,
3443         config/dbxcoff.h, config/m32c/predicates.md, config/m32c/cond.md,
3444         config/m32c/m32c.c, config/m32c/minmax.md, config/m32c/blkmov.md,
3445         config/m32c/m32c-pragma.c, config/m32c/m32c.h,
3446         config/m32c/prologue.md, config/m32c/m32c.abi,
3447         config/m32c/muldiv.md, config/m32c/bitops.md, config/m32c/mov.md,
3448         config/m32c/addsub.md, config/m32c/m32c.md, config/m32c/m32c.opt,
3449         config/m32c/t-m32c, config/m32c/m32c-modes.def,
3450         config/m32c/jump.md, config/m32c/shift.md,
3451         config/m32c/m32c-protos.h, config/libgloss.h,
3452         config/spu/spu-protos.h, config/spu/predicates.md,
3453         config/spu/spu-builtins.h, config/spu/spu.c,
3454         config/spu/spu-builtins.def, config/spu/spu-builtins.md,
3455         config/spu/spu.h, config/spu/spu-elf.h, config/spu/constraints.md,
3456         config/spu/spu.md, config/spu/spu-c.c, config/spu/spu.opt,
3457         config/spu/spu-modes.def, config/spu/t-spu-elf, config/interix.h,
3458         config/sparc/hypersparc.md, config/sparc/predicates.md,
3459         config/sparc/linux.h, config/sparc/sp64-elf.h,
3460         config/sparc/supersparc.md, config/sparc/cypress.md,
3461         config/sparc/openbsd1-64.h, config/sparc/openbsd64.h,
3462         config/sparc/niagara.md, config/sparc/sparc.md,
3463         config/sparc/long-double-switch.opt, config/sparc/ultra3.md,
3464         config/sparc/sparc.opt, config/sparc/sync.md,
3465         config/sparc/sp-elf.h, config/sparc/sparc-protos.h,
3466         config/sparc/ultra1_2.md, config/sparc/biarch64.h,
3467         config/sparc/sparc.c, config/sparc/little-endian.opt,
3468         config/sparc/sysv4-only.h, config/sparc/sparc.h,
3469         config/sparc/linux64.h, config/sparc/freebsd.h,
3470         config/sparc/sol2.h, config/sparc/rtemself.h,
3471         config/sparc/netbsd-elf.h, config/sparc/vxworks.h,
3472         config/sparc/sparc-modes.def, config/sparc/sparclet.md,
3473         config/sparc/sysv4.h, config/vx-common.h, config/netbsd-aout.h,
3474         config/flat.h, config/m32r/m32r.md, config/m32r/predicates.md,
3475         config/m32r/little.h, config/m32r/m32r.c, config/m32r/m32r.opt,
3476         config/m32r/linux.h, config/m32r/constraints.md,
3477         config/m32r/m32r.h, config/m32r/m32r-protos.h, config/vxworks.opt,
3478         config/darwin-c.c, config/darwin.opt, config/i386/i386.h,
3479         config/i386/cygming.h, config/i386/linux.h, config/i386/cygwin.h,
3480         config/i386/i386.md, config/i386/netware-crt0.c,
3481         config/i386/sco5.h, config/i386/mmx.md, config/i386/vx-common.h,
3482         config/i386/kaos-i386.h, config/i386/winnt-stubs.c,
3483         config/i386/netbsd64.h, config/i386/djgpp.h, config/i386/gas.h,
3484         config/i386/sol2.h, config/i386/constraints.md,
3485         config/i386/netware-libgcc.c, config/i386/sysv5.h,
3486         config/i386/predicates.md, config/i386/geode.md,
3487         config/i386/x86-64.h, config/i386/kfreebsd-gnu.h,
3488         config/i386/freebsd64.h, config/i386/vxworksae.h,
3489         config/i386/pentium.md, config/i386/lynx.h, config/i386/i386elf.h,
3490         config/i386/rtemself.h, config/i386/netbsd-elf.h,
3491         config/i386/ppro.md, config/i386/k6.md, config/i386/netware.c,
3492         config/i386/netware.h, config/i386/i386-modes.def,
3493         config/i386/sysv4-cpp.h, config/i386/i386-interix.h,
3494         config/i386/cygwin1.c, config/i386/djgpp.opt, config/i386/uwin.h,
3495         config/i386/unix.h, config/i386/ptx4-i.h, config/i386/xm-djgpp.h,
3496         config/i386/att.h, config/i386/winnt.c, config/i386/beos-elf.h,
3497         config/i386/sol2-10.h, config/i386/darwin64.h, config/i386/sse.md,
3498         config/i386/i386.opt, config/i386/bsd.h, config/i386/cygming.opt,
3499         config/i386/xm-mingw32.h, config/i386/linux64.h,
3500         config/i386/openbsdelf.h, config/i386/xm-cygwin.h,
3501         config/i386/sco5.opt, config/i386/darwin.h, config/i386/mingw32.h,
3502         config/i386/winnt-cxx.c, config/i386/i386-interix3.h,
3503         config/i386/nwld.c, config/i386/nwld.h, config/i386/host-cygwin.c,
3504         config/i386/cygwin2.c, config/i386/i386-protos.h,
3505         config/i386/sync.md, config/i386/openbsd.h,
3506         config/i386/host-mingw32.c, config/i386/i386-aout.h,
3507         config/i386/nto.h, config/i386/biarch64.h,
3508         config/i386/i386-coff.h, config/i386/freebsd.h,
3509         config/i386/driver-i386.c, config/i386/knetbsd-gnu.h,
3510         config/i386/host-i386-darwin.c, config/i386/vxworks.h,
3511         config/i386/crtdll.h, config/i386/i386.c, config/i386/sysv4.h,
3512         config/darwin-protos.h, config/linux.opt, config/sol2.c,
3513         config/sol2.h, config/sh/symbian.c, config/sh/sh-protos.h,
3514         config/sh/linux.h, config/sh/elf.h, config/sh/superh.h,
3515         config/sh/sh4.md, config/sh/coff.h, config/sh/newlib.h,
3516         config/sh/embed-elf.h, config/sh/symbian-pre.h, config/sh/rtems.h,
3517         config/sh/kaos-sh.h, config/sh/sh4a.md, config/sh/constraints.md,
3518         config/sh/sh64.h, config/sh/sh.opt, config/sh/symbian-post.h,
3519         config/sh/sh-c.c, config/sh/predicates.md, config/sh/sh.c,
3520         config/sh/sh.h, config/sh/shmedia.md, config/sh/sh-modes.def,
3521         config/sh/little.h, config/sh/sh1.md, config/sh/sh4-300.md,
3522         config/sh/superh64.h, config/sh/rtemself.h,
3523         config/sh/netbsd-elf.h, config/sh/sh.md, config/sh/vxworks.h,
3524         config/usegas.h, config/svr3.h, config/pdp11/pdp11-protos.h,
3525         config/pdp11/2bsd.h, config/pdp11/pdp11.md, config/pdp11/pdp11.c,
3526         config/pdp11/pdp11.opt, config/pdp11/pdp11-modes.def,
3527         config/pdp11/pdp11.h, config/avr/rtems.h, config/avr/avr-protos.h,
3528         config/avr/predicates.md, config/avr/constraints.md,
3529         config/avr/avr.md, config/avr/avr.c, config/avr/avr.opt,
3530         config/avr/avr.h, config/sol2-protos.h, config/dbxelf.h,
3531         config/lynx.opt, config/crx/crx.h, config/crx/crx-protos.h,
3532         config/crx/crx.md, config/crx/crx.c, config/crx/crx.opt,
3533         config/c4x/c4x-c.c, config/c4x/c4x.c, config/c4x/c4x.opt,
3534         config/c4x/c4x-modes.def, config/c4x/rtems.h,
3535         config/c4x/predicates.md, config/c4x/c4x.h,
3536         config/c4x/c4x-protos.h, config/c4x/c4x.md, config/kfreebsd-gnu.h,
3537         config/xtensa/predicates.md, config/xtensa/xtensa.c,
3538         config/xtensa/linux.h, config/xtensa/xtensa.h,
3539         config/xtensa/elf.h, config/xtensa/xtensa.md,
3540         config/xtensa/xtensa.opt, config/xtensa/constraints.md,
3541         config/xtensa/xtensa-protos.h, config/dbx.h,
3542         config/stormy16/predicates.md, config/stormy16/stormy16.md,
3543         config/stormy16/stormy16.c, config/stormy16/stormy16.opt,
3544         config/stormy16/stormy16.h, config/stormy16/stormy16-protos.h,
3545         config/host-solaris.c, config/fr30/fr30.h,
3546         config/fr30/predicates.md, config/fr30/fr30-protos.h,
3547         config/fr30/fr30.md, config/fr30/fr30.c, config/fr30/fr30.opt,
3548         config/vxworksae.h, config/sol2-c.c, config/lynx.h,
3549         config/m68hc11/m68hc11-protos.h, config/m68hc11/predicates.md,
3550         config/m68hc11/m68hc11.md, config/m68hc11/m68hc11.c,
3551         config/m68hc11/m68hc11.opt, config/m68hc11/m68hc11.h,
3552         config/m68hc11/m68hc12.h, config/openbsd-oldgas.h,
3553         config/host-linux.c, config/interix3.h, config/cris/cris.c,
3554         config/cris/predicates.md, config/cris/linux.h,
3555         config/cris/cris.h, config/cris/aout.h, config/cris/cris.md,
3556         config/cris/linux.opt, config/cris/cris.opt, config/cris/elf.opt,
3557         config/cris/aout.opt, config/cris/cris-protos.h,
3558         config/vxworks-dummy.h, config/netbsd.h, config/netbsd-elf.h,
3559         config/iq2000/iq2000.h, config/iq2000/predicates.md,
3560         config/iq2000/iq2000-protos.h, config/iq2000/iq2000.md,
3561         config/iq2000/iq2000.c, config/iq2000/iq2000.opt,
3562         config/host-darwin.c, config/mt/mt.md, config/mt/mt.c,
3563         config/mt/mt.opt, config/mt/t-mt, config/mt/mt.h,
3564         config/mt/mt-protos.h, config/svr4.h, config/host-darwin.h,
3565         config/chorus.h, config/mn10300/mn10300.c,
3566         config/mn10300/mn10300.opt, config/mn10300/predicates.md,
3567         config/mn10300/mn10300.h, config/mn10300/linux.h,
3568         config/mn10300/constraints.md, config/mn10300/mn10300-protos.h,
3569         config/mn10300/mn10300.md, config/ia64/predicates.md,
3570         config/ia64/itanium1.md, config/ia64/unwind-ia64.h,
3571         config/ia64/ia64-c.c, config/ia64/sync.md, config/ia64/ia64.c,
3572         config/ia64/itanium2.md, config/ia64/ia64.h, config/ia64/vect.md,
3573         config/ia64/freebsd.h, config/ia64/ia64.md,
3574         config/ia64/ia64-modes.def, config/ia64/constraints.md,
3575         config/ia64/hpux.h, config/ia64/ia64-protos.h, config/windiss.h,
3576         config/gofast.h, config/rtems.h, config/sol2-10.h,
3577         config/m68k/predicates.md, config/m68k/m68k.md,
3578         config/m68k/linux.h, config/m68k/m68k-modes.def,
3579         config/m68k/print-sysroot-suffix.sh, config/m68k/m68k-protos.h,
3580         config/m68k/coff.h, config/m68k/m68k-none.h, config/m68k/ieee.opt,
3581         config/m68k/openbsd.h, config/m68k/m68k-aout.h,
3582         config/m68k/m68k.opt, config/m68k/m68020-elf.h,
3583         config/m68k/m68kelf.h, config/m68k/m68k-devices.def,
3584         config/m68k/uclinux-oldabi.h, config/m68k/m68k.c,
3585         config/m68k/constraints.md, config/m68k/rtemself.h,
3586         config/m68k/netbsd-elf.h, config/m68k/m68k.h,
3587         config/m68k/uclinux.h, config/rs6000/power4.md,
3588         config/rs6000/host-darwin.c, config/rs6000/6xx.md,
3589         config/rs6000/linux.h, config/rs6000/eabi.h,
3590         config/rs6000/aix41.opt, config/rs6000/xcoff.h,
3591         config/rs6000/secureplt.h, config/rs6000/linuxspe.h,
3592         config/rs6000/eabialtivec.h, config/rs6000/8540.md,
3593         config/rs6000/darwin8.h, config/rs6000/kaos-ppc.h,
3594         config/rs6000/windiss.h, config/rs6000/603.md,
3595         config/rs6000/aix41.h, config/rs6000/cell.md,
3596         config/rs6000/mpc.md, config/rs6000/aix43.h, config/rs6000/beos.h,
3597         config/rs6000/gnu.h, config/rs6000/rtems.h, config/rs6000/aix.opt,
3598         config/rs6000/darwin.md, config/rs6000/darwin64.h,
3599         config/rs6000/default64.h, config/rs6000/7xx.md,
3600         config/rs6000/darwin.opt, config/rs6000/spe.md,
3601         config/rs6000/rs6000.opt, config/rs6000/rs6000-c.c,
3602         config/rs6000/rios2.md, config/rs6000/linuxaltivec.h,
3603         config/rs6000/7450.md, config/rs6000/linux64.h,
3604         config/rs6000/constraints.md, config/rs6000/440.md,
3605         config/rs6000/darwin.h, config/rs6000/host-ppc64-darwin.c,
3606         config/rs6000/rs6000.c, config/rs6000/aix52.h,
3607         config/rs6000/rs6000.h, config/rs6000/power6.md,
3608         config/rs6000/predicates.md, config/rs6000/altivec.md,
3609         config/rs6000/aix64.opt, config/rs6000/rios1.md,
3610         config/rs6000/rs6000-modes.def, config/rs6000/rs64.md,
3611         config/rs6000/eabisim.h, config/rs6000/sysv4le.h,
3612         config/rs6000/darwin7.h, config/rs6000/dfp.md,
3613         config/rs6000/linux64.opt, config/rs6000/sync.md,
3614         config/rs6000/vxworksae.h, config/rs6000/power5.md,
3615         config/rs6000/lynx.h, config/rs6000/biarch64.h,
3616         config/rs6000/rs6000.md, config/rs6000/sysv4.opt,
3617         config/rs6000/eabispe.h, config/rs6000/e500.h,
3618         config/rs6000/freebsd.h, config/rs6000/rs6000-protos.h,
3619         config/rs6000/netbsd.h, config/rs6000/e500-double.h,
3620         config/rs6000/aix.h, config/rs6000/vxworks.h,
3621         config/rs6000/40x.md, config/rs6000/aix51.h,
3622         config/rs6000/sysv4.h, config/arc/arc-protos.h, config/arc/arc.md,
3623         config/arc/arc.c, config/arc/arc.opt, config/arc/arc-modes.def,
3624         config/arc/arc.h, config/mcore/mcore-elf.h,
3625         config/mcore/mcore-protos.h, config/mcore/predicates.md,
3626         config/mcore/mcore.md, config/mcore/mcore.c,
3627         config/mcore/mcore.opt, config/mcore/mcore.h,
3628         config/mcore/mcore-pe.h, config/darwin.c, config/freebsd-nthr.h,
3629         config/score/predicates.md, config/score/score-version.h,
3630         config/score/score-protos.h, config/score/misc.md,
3631         config/score/elf.h, config/score/score.c, config/score/mac.md,
3632         config/score/score7.md, config/score/score.h,
3633         config/score/score-conv.h, config/score/score-mdaux.c,
3634         config/score/score.md, config/score/score.opt,
3635         config/score/score-modes.def, config/score/score-mdaux.h,
3636         config/score/mul-div.S, config/arm/uclinux-elf.h,
3637         config/arm/semi.h, config/arm/ecos-elf.h, config/arm/arm1020e.md,
3638         config/arm/symbian.h, config/arm/linux-elf.h,
3639         config/arm/arm1026ejs.md, config/arm/arm1136jfs.md,
3640         config/arm/elf.h, config/arm/aout.h, config/arm/arm.c,
3641         config/arm/thumb2.md, config/arm/vec-common.md, config/arm/coff.h,
3642         config/arm/strongarm-pe.h, config/arm/arm.h,
3643         config/arm/cortex-a8-neon.md, config/arm/semiaof.h,
3644         config/arm/cortex-a8.md, config/arm/uclinux-eabi.h,
3645         config/arm/arm-modes.def, config/arm/linux-eabi.h,
3646         config/arm/rtems-elf.h, config/arm/neon-schedgen.ml,
3647         config/arm/arm-cores.def, config/arm/arm-protos.h,
3648         config/arm/vfp.md, config/arm/aof.h, config/arm/linux-gas.h,
3649         config/arm/wince-pe.h, config/arm/neon.md,
3650         config/arm/constraints.md, config/arm/neon.ml,
3651         config/arm/xscale-elf.h, config/arm/strongarm-coff.h,
3652         config/arm/arm.opt, config/arm/arm926ejs.md,
3653         config/arm/predicates.md, config/arm/iwmmxt.md,
3654         config/arm/arm_neon.h, config/arm/unknown-elf.h,
3655         config/arm/kaos-arm.h, config/arm/bpabi.h, config/arm/pe.opt,
3656         config/arm/neon-testgen.ml, config/arm/arm.md,
3657         config/arm/xscale-coff.h, config/arm/pe.c,
3658         config/arm/arm-generic.md, config/arm/pe.h,
3659         config/arm/kaos-strongarm.h, config/arm/freebsd.h,
3660         config/arm/neon-docgen.ml, config/arm/netbsd.h, config/arm/fpa.md,
3661         config/arm/strongarm-elf.h, config/arm/cirrus.md,
3662         config/arm/netbsd-elf.h, config/arm/vxworks.h,
3663         config/arm/neon-gen.ml, config/kaos.h, config/darwin-driver.c,
3664         config/pa/predicates.md, config/pa/pa64-hpux.h,
3665         config/pa/pa-hpux.opt, config/pa/som.h, config/pa/pa-hpux1010.opt,
3666         config/pa/pa-hpux1111.opt, config/pa/pa-pro-end.h,
3667         config/pa/elf.h, config/pa/fptr.c, config/pa/pa64-linux.h,
3668         config/pa/pa.md, config/pa/pa.opt, config/pa/pa-hpux.h,
3669         config/pa/pa-hpux10.h, config/pa/pa-hpux11.h,
3670         config/pa/pa-hpux1010.h, config/pa/pa-protos.h,
3671         config/pa/pa-osf.h, config/pa/pa-hpux1111.h, config/pa/pa-64.h,
3672         config/pa/milli64.S, config/pa/pa.c, config/pa/pa-linux.h,
3673         config/pa/pa.h, config/pa/pa32-linux.h, config/pa/pa64-hpux.opt,
3674         config/pa/pa64-regs.h, config/pa/pa-modes.def,
3675         config/pa/constraints.md, config/darwin9.h, config/mips/4100.md,
3676         config/mips/linux.h, config/mips/elfoabi.h, config/mips/elf.h,
3677         config/mips/sdb.h, config/mips/windiss.h, config/mips/rtems.h,
3678         config/mips/3000.md, config/mips/iris5.h, config/mips/5000.md,
3679         config/mips/7000.md, config/mips/9000.md, config/mips/4600.md,
3680         config/mips/linux64.h, config/mips/elforion.h,
3681         config/mips/constraints.md, config/mips/generic.md,
3682         config/mips/predicates.md, config/mips/4300.md,
3683         config/mips/mips-ps-3d.md, config/mips/iris.h, config/mips/24k.md,
3684         config/mips/mips.md, config/mips/mips.opt, config/mips/4k.md,
3685         config/mips/5k.md, config/mips/vr4120-div.S,
3686         config/mips/openbsd.h, config/mips/iris6.h, config/mips/4000.md,
3687         config/mips/mips-protos.h, config/mips/6000.md,
3688         config/mips/mips.c, config/mips/mips.h, config/mips/r3900.h,
3689         config/mips/74k.md, config/mips/netbsd.h, config/mips/vxworks.h,
3690         config/mips/mips-modes.def, config/mips/vr.h,
3691         config/soft-fp/t-softfp, config/openbsd.h, config/ptx4.h,
3692         config/freebsd-spec.h, config/vax/vax.c, config/vax/openbsd.h,
3693         config/vax/vax.h, config/vax/elf.h, config/vax/vax.md,
3694         config/vax/bsd.h, config/vax/vax.opt, config/vax/vax-modes.def,
3695         config/vax/openbsd1.h, config/vax/netbsd.h,
3696         config/vax/vax-protos.h, config/vax/netbsd-elf.h,
3697         config/vax/vaxv.h, config/vax/ultrix.h, config/freebsd.h,
3698         config/h8300/rtems.h, config/h8300/predicates.md,
3699         config/h8300/h8300.c, config/h8300/h8300.h, config/h8300/elf.h,
3700         config/h8300/h8300.md, config/h8300/h8300.opt,
3701         config/h8300/coff.h, config/h8300/h8300-protos.h,
3702         config/v850/v850.md, config/v850/predicates.md,
3703         config/v850/v850-c.c, config/v850/v850.c, config/v850/v850.opt,
3704         config/v850/v850.h, config/v850/v850-protos.h, config/vxworks.c,
3705         config/knetbsd-gnu.h, config/sol2-6.h, config/vxworks.h,
3706         config/mmix/mmix.h, config/mmix/predicates.md,
3707         config/mmix/mmix-protos.h, config/mmix/mmix.md,
3708         config/mmix/mmix.c, config/mmix/mmix.opt,
3709         config/mmix/mmix-modes.def, config/bfin/bfin.opt,
3710         config/bfin/rtems.h, config/bfin/bfin-modes.def,
3711         config/bfin/predicates.md, config/bfin/bfin-protos.h,
3712         config/bfin/bfin.c, config/bfin/bfin.h, config/bfin/bfin.md:
3713         Likewise.
3714
3715 2007-08-02  Richard Sandiford  <richard@codesourcery.com>
3716
3717         * emit-rtl.c (reset_used_decls): Rename to...
3718         (set_used_decls): ...this.  Set the used flag rather than clearing it.
3719         (unshare_all_rtl_again): Update accordingly.  Set flags on argument
3720         DECL_RTLs rather than resetting them.
3721
3722 2007-08-02  Andreas Krebbel  <krebbel1@de.ibm.com>
3723
3724         * config/s390/s390.md ("*xordi3_cconly"): Change xr to xg.
3725
3726 2007-08-01  Sandra Loosemore  <sandra@codesourcery.com>
3727
3728         * reload.c (find_reloads_address_part):  Pass correct MEMREFLOC
3729         argument to find_reloads_address.
3730
3731 2007-08-01  Daniel Jacobowitz  <dan@codesourcery.com>
3732
3733         PR tree-optimization/32919
3734         * tree-ssa-sccvn.c (visit_phi): Do not visit abnormal PHIs.
3735         * tree-ssa-coalesce.c (ssa_conflicts_dump): New.
3736         (coalesce_ssa_name): Call it.
3737
3738 2007-08-01  Sandra Loosemore  <sandra@codesourcery.com>
3739             David Ung  <davidu@mips.com>
3740
3741         * config/mips/mips16.S (__mips16_unordsf2, __mips16_floatunsisf): New.
3742         (__mips16_unorddf2, __mips16_floatunsidf): New.
3743         * config/mips/mips.c (mips_init_libfuncs): Add optab entries for
3744         above functions.
3745         * config/mips/t-libgcc-mips16 (LIB1ASMFUNCS): Add new functions.
3746
3747 2007-08-01  Zdenek Dvorak  <ook@ucw.cz>
3748
3749         * tree-pretty-print.c (dump_generic_node): Dump OMP_SECTIONS_SWITCH.
3750         Display new operands of OMP_SECTIONS and OMP_CONTINUE.
3751         * tree.h (OMP_SECTIONS_CONTROL): New macro.
3752         (OMP_DIRECTIVE_P): Add OMP_SECTIONS_SWITCH.
3753         * omp-low.c (get_ws_args_for, determine_parallel_type,
3754         expand_omp_for_generic, expand_omp_for_static_nochunk,
3755         expand_omp_for_static_chunk, expand_omp_for, expand_omp_sections):
3756         Work with more precise CFG.
3757         (build_omp_regions_1): Handle OMP_SECTIONS_SWITCH.
3758         (lower_omp_sections): Emit OMP_SECTIONS_SWITCH.  Add arguments to
3759         OMP_CONTINUE.
3760         * tree-gimple.c (is_gimple_stmt): Handle OMP_SECTIONS_SWITCH.
3761         * gimple-low.c (lower_stmt): Ditto.
3762         * tree-inline.c (estimate_num_insns_1): Ditto.
3763         * tree.def (OMP_SECTIONS, OMP_CONTINUE): Added new operands.
3764         (OMP_SECTIONS_SWITCH): New.
3765         * tree-cfgcleanup.c (cleanup_omp_return): New.
3766         (cleanup_tree_cfg_bb): Call cleanup_omp_return.
3767         * tree-cfg.c (make_edges): Create back edges for OMP_CONTINUE
3768         and exit edge for OMP_FOR.  Handle OMP_SECTIONS_SWITCH.
3769         (tree_redirect_edge_and_branch): Handle omp constructs.
3770
3771         * fortran/trans-openmp.c (gfc_trans_omp_sections): Build OMP_SECTIONS
3772         with three arguments.
3773
3774 2007-08-01  Zdenek Dvorak  <ook@ucw.cz>
3775
3776         * tree-cfg.c (tree_merge_blocks): Preserve loop exit phi nodes only
3777         in loop closed ssa.
3778
3779 2007-08-01  Zdenek Dvorak  <ook@ucw.cz>
3780
3781         * tree-ssa-threadupdate.c (thread_through_all_blocks): Record that
3782         the loop structures may need fixing.
3783         * tree-cfgcleanup.c (cleanup_tree_cfg_noloop, repair_loop_structures):
3784         New functions.
3785         (cleanup_tree_cfg_loop): Removed.
3786         (cleanup_tree_cfg): If loops need fixing, call repair_loop_structures.
3787         * tree-predcom.c (tree_predictive_commoning): Return TODO_cleanup_cfg
3788         instead of running cleanup_tree_cfg_loop.
3789         * cfgloop.h (LOOPS_NEED_FIXUP): New constant.
3790         * tree-flow.h (cleanup_tree_cfg_loop): Declaration removed.
3791         (tree_predictive_commoning): Declaration changed.
3792         * passes.c (execute_function_todo): Do not use cleanup_tree_cfg_loop.
3793
3794 2007-08-01  Zdenek Dvorak  <ook@ucw.cz>
3795
3796         * doc/invoke.texi (l1-cache-size): Update documentation.
3797         (l2-cache-size): Document.
3798         * params.h (L2_CACHE_SIZE): New macro.
3799         * tree-ssa-loop-prefetch.c (L1_CACHE_SIZE_BYTES): Reflect
3800         that L1_CACHE_SIZE is in kB now.
3801         (L2_CACHE_SIZE_BYTES): New macro.
3802         (tree_ssa_prefetch_arrays): Show size in kB.
3803         * config/i386/i386.h (struct processor_costs): Add l1_cache_size
3804         and l2_cache_size fields.
3805         * config/i386/driver-i386.c (describe_cache): Detect cache size
3806         in kB.
3807         * config/i386/i386.c (size_cost, i386_cost, i486_cost,pentium_cost,
3808         pentiumpro_cost, geode_cost, k6_cost, athlon_cost, k8_cost,
3809         amdfam10_cost, pentium4_cost, nocona_cost, core2_cost,
3810         generic64_cost, generic32_cost): Add l1_cache_size and l2_cache_size.
3811         (override_options): Set l1-cache-size and l2-cache-size to default
3812         values if not specified otherwise.
3813         * params.def (PARAM_L1_CACHE_SIZE): Change to set in kB.
3814         (PARAM_L2_CACHE_SIZE): New.
3815
3816 2007-08-01  Nigel Stephens  <nigel@mips.com>
3817             David Ung  <davidu@mips.com>
3818             Thiemo Seufer  <ths@mips.com>
3819             Chris Dearman  <chris@mips.com>
3820             Richard Sandiford  <richard@codesourcery.com>
3821
3822         * config.gcc (mips*-sde-elf*): New stanza.
3823         (mipsisa32-*-elf*, mipsisa32el-*-elf*, mipsisa32r2-*-elf*)
3824         (mipsisa32r2el-*-elf*, mipsisa64-*-elf*, mipsisa64el-*-elf*)
3825         (mipsisa64sb1-*-elf*, mipsisa64sb1el-*-elf*, mips-*-elf*)
3826         (mipsel-*-elf*, mips64-*-elf*, mips64el-*-elf*, mips64orion-*-elf*)
3827         (mips64orionel-*-elf*, mips*-*-rtems*, mips-wrs-windiss)
3828         (mipstx39-*-elf*, mipstx39el-*-elf*): Add mips/t-libgcc-mips16
3829         to tmake_file.
3830         * config/mips/sde.h: New file.
3831         * config/mips/t-libgcc-mips16: Likewise.
3832         * config/mips/t-sde: Likewise.
3833         * config/mips/linux.h (TARGET_OS_CPP_BUILTINS): Remove settings
3834         of _ABIN32, _ABI64, _ABIO32, _MIPS_SIM, _MIPS_SZLONG, _MIPS_SZPTR,
3835         _MIPS_FPSET and _MIPS_SZINT.
3836         * config/mips/iris.h (TARGET_OS_CPP_BUILTINS): Likewise.
3837         * config/mips/elfoabi.h (DRIVER_SELF_SPECS): Remove separate
3838         insertion of a default -mips option.  Use MIPS_32BIT_OPTION_SPEC.
3839         * config/mips/t-isa3264 (LIB1ASMSRC, LIB1ASMFUNCS): Delete.
3840         * config/mips/t-r3900 (LIB1ASMSRC, LIB1ASMFUNCS): Likewise.
3841         * config/mips/t-elf (LIB1ASMSRC, LIB1ASMFUNCS): Likewise.
3842         * config/mips/mips.h (TARGET_CPU_CPP_BUITINS): Define _ABIO32,
3843         _ABIN32, _ABI64, _ABIO64, _MIPS_SIM, _MIPS_SZINT, _MIPS_SZLONG,
3844         _MIPS_SZPTR and _MIPS_FPSET.
3845         (MIPS_ISA_LEVEL_SPEC): Inject the default -mips option if no
3846         architecture is specified.
3847         (MIPS_32BIT_OPTION_SPEC): New macro.
3848
3849 2007-07-31  Dan Hipschman  <dsh@google.com>
3850
3851         * gcc.c (end_going_arg): New function.
3852         (do_spec_2): Use it.
3853         (do_spec_1): Use it.
3854
3855 2007-07-31  H.J. Lu  <hongjiu.lu@intel.com>
3856
3857         * ddg.c (add_cross_iteration_register_deps): Declare bb_info
3858         only if ENABLE_CHECKING is defined.
3859
3860 2007-07-31  Kenneth Zadeck <zadeck@naturalbridge.com>
3861
3862         * df.h (DF_RU, DF_RU_BB_INFO, df_ru_bb_info, df_ru,
3863         df_ru_add_problem, df_ru_get_bb_info): Removed.
3864         (DF_RD, DF_UREC, DF_CHAIN, DF_NOTE): Renumbered.
3865         * df-problems.c (df_ru_problem_data, df_ru_set_bb_info,
3866         df_ru_free_bb_info, df_ru_alloc,
3867         df_ru_bb_local_compute_process_def,
3868         df_ru_bb_local_compute_process_use, df_ru_bb_local_compute,
3869         df_ru_local_compute, df_ru_init_solution, df_ru_confluence_n,
3870         df_ru_transfer_function, df_ru_free, df_ru_start_dump,
3871         df_ru_top_dump, df_ru_bottom_dump, df_problem problem_RU,
3872         df_ru_add_problem): Removed.
3873
3874 2007-07-31  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
3875
3876         PR target/32847
3877         * pa.md (casesi32): Use match_scratch.  Revise insn condition.
3878         (casesi32p, casesi64p): Likewise.
3879         (casesi): Adjust for above.
3880
3881 2007-07-31  Richard Sandiford  <richard@codesourcery.com>
3882
3883         * mode-switching.c (create_pre_exit): Don't search past calls.
3884
3885 2007-07-31  Sandra Loosemore  <sandra@codesourcery.com>
3886
3887         * config/mips/mips.h (ISA_HAS_SYNCI):  Add !TARGET_MIPS16 test.
3888
3889 2007-07-31  Revital Eres  <eres@il.ibm.com>
3890
3891         * ddg.c (add_deps_for_def): Rename to...
3892         (add_cross_iteration_register_deps): This.  Change implementation
3893         to use only reaching def and def-use chains to construct the
3894         inter loop dependencies.
3895         (add_deps_for_use): Remove function.
3896         (build_inter_loop_deps): Call add_cross_iteration_register_deps
3897         function to build the inter loop dependencies.
3898         * modulo-sched.c (sms_schedule): Build only
3899         reaching def and def-use chains for the propose of the ddg
3900         construction.
3901
3902 2007-07-31  Julian Brown  <julian@codesourcery.com>
3903
3904         * config/arm/neon.md (vec_set<mode>_internal, vec_setv2di_internal):
3905         New define_insns. Use correct RTL.
3906         (vec_set<mode>): Write as expander.
3907
3908 2007-07-31  Razya Ladelsky  <razya@il.ibm.com>
3909
3910         * matrix-reorg.c (analyze_matrix_allocation_site): Avoid referring 
3911         to an unallocated space.
3912
3913 2007-07-30  Jan Sjodin  <jan.sjodin@amd.com>
3914
3915         * tree-data-ref.c
3916         (split_constant_offset): Enable split_constant_offset to extract
3917         constants from other statements.
3918         * tree-vect-transform.c
3919         (vect_create_addr_base_for_vector_ref): Generate data_ref_base
3920         to a temp var. Force base_offset to be simple.
3921
3922 2007-07-30  Seongbae Park <seongbae.park@gmail.com>
3923
3924         * df-scan.c (df_scan_verify): Remove artificial limit on
3925         the number of blocks for verification.
3926         * df-problems.c (df_lr_bb_local_compute, df_simulate_find_defs,
3927         df_simulate_defs): Avoid unnecessary insn checking for defs.
3928
3929 2007-07-29  Mark Mitchell  <mark@codesourcery.com>
3930
3931         * config/m68k/lb1sf68.asm (FUNC): New macro.
3932         (__mulsi3): Use it.
3933         (__udivsi3): Likewise.
3934         (__divsi3): Likewise.
3935         (__umodsi3): Likewise.
3936         (__modsi3): Likewise.
3937         (__subdf3): Likewise.
3938         (__adddf3): Likewise.
3939         (__muldf3): Likewise.
3940         (__divdf3): Likewise.
3941         (__negdf2): Likewise.
3942         (__cmpdf2): Likewise.
3943         (__subsf3): Likewise.
3944         (__addsf3): Likewise.
3945         (__mulsf3): Likewise.
3946         (__divsf3): Likewise.
3947         (__negsf2): Likewise.
3948         (__cmpsf2): Likewise.
3949         (__eqdf2): Likewise.
3950         (__nedf2): Likewise.
3951         (__gtdf2): Likewise.
3952         (__gedf2): Likewise.
3953         (__ltdf2): Likewise.
3954         (__ledf2): Likewise.
3955         (__eqsf2): Likewise.
3956         (__nesf2): Likewise.
3957         (__gtsf2): Likewise.
3958         (__gesf2): Likewise.
3959         (__ltsf2): Likewise.
3960         (__lesf2): Likewise.
3961
3962 2007-07-30  Ollie Wild  <aaw@google.com>
3963
3964         * c-ppoutput.c (print_lines_directives_only): New function.
3965         (scan_translation_unit_directives_only): New function.
3966         (preprocess_file): Add call to scan_translation_unit_directives_only.
3967         * c-opts.c (c_common_handle_option): Add OPT_fdirectives_only.
3968         (sanitize_cpp_opts): Add default flag_dump_macros setting for
3969         -fdirectives-only.  Add errors for -fdirectives-only conflict with
3970         -Wunused-macros and -traditional.
3971         (finish_options): Add builtin macro initialization for
3972         -fdirectives-only + -fpreprocessed.
3973         * c.opt (fdirectives-only): New.
3974         * doc/cppopts.texi (fdirectives-only): New.
3975
3976 2007-07-30  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
3977
3978         * alias.c (record_set, memory_modified_1): Constify.
3979         * bt-load.c (note_btr_set): Likewise.
3980         * caller-save.c (mark_set_regs, add_stored_regs): Likewise.
3981         * combine.c (set_nonzero_bits_and_sign_copies,
3982         expand_field_assignment, record_dead_and_set_regs_1,
3983         use_crosses_set_p, reg_dead_at_p_1, can_combine_p,
3984         likely_spilled_retval_1): Likewise.
3985         * config/frv/frv.c (frv_registers_update_1, frv_io_check_address,
3986         frv_io_handle_set): Likewise.
3987         * config/mips/mips.c (mips_sim_record_set,
3988         vr4130_true_reg_dependence_p_1): Likewise.
3989         * config/mt/mt.c (insn_dependent_p_1): Likewise.
3990         * config/s390/s390.c (s390_reg_clobbered_rtx): Likewise.
3991         * config/sh/sh.c (flow_dependent_p_1): Likewise.
3992         * cselib.c (cselib_invalidate_rtx_note_stores): Likewise.
3993         * dce.c (mark_nonreg_stores_1, mark_nonreg_stores_2): Likewise.
3994         * ddg.c (mark_mem_store): Likewise.
3995         * df-problems.c (df_urec_mark_reg_change): Likewise.
3996         * function.c (update_epilogue_consts): Likewise.
3997         * gcse.c (record_set_info, record_last_set_info,
3998         mems_conflict_for_gcse_p, canon_list_insert, reg_set_info,
3999         reg_clear_last_set): Likewise.
4000         * global.c (mark_reg_store, mark_reg_clobber, reg_becomes_live):
4001         Likewise.
4002         * jump.c (reversed_comparison_code_parts): Likewise.
4003         * local-alloc.c (validate_equiv_mem_from_store, no_equiv,
4004         reg_is_set): Likewise.
4005         * loop-iv.c (mark_altered): Likewise.
4006         * mode-switching.c (reg_becomes_live): Likewise.
4007         * optabs.c (no_conflict_move_test): Likewise.
4008         * postreload-gcse.c (record_last_set_info, find_mem_conflicts):
4009         Likewise.
4010         * postreload.c (reload_combine_note_store, move2add_note_store):
4011         Likewise.
4012         * regmove.c (flags_set_1): Likewise.
4013         * regrename.c (note_sets, kill_clobbered_value, kill_set_value):
4014         Likewise.
4015         * reload1.c (mark_not_eliminable, forget_old_reloads_1):
4016         Likewise. 
4017         * resource.c (update_live_status): Likewise.
4018         * rtl.h (set_of, note_stores): Likewise.
4019         * rtlanal.c (set_of_1, parms_set, struct set_of_data, set_of,
4020         note_stores, parms_set): Likewise.
4021         * sched-rgn.c (sets_likely_spilled_1): Likewise.
4022         * stack-ptr-mod.c (notice_stack_pointer_modification_1):
4023         Likewise. 
4024         * var-tracking.c (count_stores, add_stores): Likewise.
4025
4026 2007-07-30  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
4027
4028         * alias.c (mems_in_disjoint_alias_sets_p,
4029         fixed_scalar_and_varying_struct_p, aliases_everything_p,
4030         nonoverlapping_component_refs_p, nonoverlapping_memrefs_p,
4031         write_dependence_p, mems_in_disjoint_alias_sets_p,
4032         read_dependence, true_dependence, canon_true_dependence,
4033         anti_dependence, output_dependence): Constify.
4034         * combine.c (extended_count): Likewise.
4035         * cse.c (cse_rtx_varies_p, hash_rtx, exp_equiv_p): Likewise.
4036         * cselib.c (get_value_hash, references_value_p,
4037         cselib_reg_set_mode, cselib_rtx_varies_p): Likewise.
4038         * cselib.h (cselib_reg_set_mode, references_value_p): Likewise.
4039         * emit-rtl.c (mem_expr_equal_p, active_insn_p): Likewise.
4040         * function.c (contains, prologue_epilogue_contains,
4041         sibcall_epilogue_contains): Likewise. 
4042         * jump.c (simplejump_p, condjump_p, condjump_in_parallel_p,
4043         pc_set, any_uncondjump_p, any_condjump_p, onlyjump_p,
4044         only_sets_cc0_p, sets_cc0_p, rtx_renumbered_equal_p, true_regnum,
4045         reg_or_subregno): Likewise.
4046         * recog.c (asm_noperands): Likewise.
4047         * reload1.c (function_invariant_p): Likewise.
4048         * rtl.h (mem_expr_equal_p, active_insn_p, rtx_varies_p,
4049         rtx_addr_varies_p, asm_noperands, exp_equiv_p, hash_rtx,
4050         condjump_p, any_condjump_p, any_uncondjump_p, pc_set,
4051         simplejump_p, onlyjump_p, only_sets_cc0_p, sets_cc0_p,
4052         true_regnum, reg_or_subregno, condjump_in_parallel_p,
4053         extended_count, prologue_epilogue_contains,
4054         sibcall_epilogue_contains, function_invariant_p, true_dependence,
4055         canon_true_dependence, read_dependence, anti_dependence,
4056         output_dependence): Likewise.
4057         * rtlanal.c (rtx_varies_p, rtx_addr_varies_p): Likewise.
4058
4059 2007-07-30  Julian Brown  <julian@codesourcery.com>
4060
4061         * config/arm/neon.md (V_ext): New mode attribute.
4062         (neon_vget_lane<mode>): Replace with define_expand.
4063         (neon_vget_lane<mode>_sext_internal)
4064         (neon_vget_lane<mode>_zext_internal): New define_insns for double
4065         and quad precision vectors.
4066         (neon_vget_lanedi): Add bounds check. Remove dead comment.
4067         * config/arm/neon.ml (get_lane): Make 32-bit get-lane intrinsics
4068         have typeless 32-bit result.
4069
4070 2007-07-30  Andrew Pinski  <andrew_pinski@playstation.sony.com>
4071
4072         PR tree-opt/32527
4073         * tree-affine.h (aff_tree): The type of rest is sizetype for types
4074         of pointers.
4075         * tree-affine.c (aff_combination_scale): If type is a pointer type,
4076         use sizetype for rest.
4077         (aff_combination_add_elt): Likewise. Don't specialize pointer types.
4078         (aff_combination_convert): Don't convert rest for pointer types.
4079
4080 2007-07-28  Daniel Berlin  <dberlin@dberlin.org>
4081
4082         * Makefile.in (tree-ssa-alias.o): Add alloc-pool.h
4083
4084         * tree-ssa-alias.c: Add alloc-pool.h.
4085         (init_alias_info): Free alias_bitmap_obstack.
4086         (delete_alias_info): Call delete_mem_ref_stats.
4087         (get_mem_sym_stats_for): Use alloc_pool.
4088         (init_mem_ref_stats): Do not delete mem_ref_stats here.
4089         (delete_mem_sym_stats): Removed.
4090         
4091 2007-07-29  Sebastian Pop  <sebpop@gmail.com>
4092
4093         * tree-data-ref.c (add_multivariate_self_dist): Parametric access
4094         functions cannot be represented as classical distance vectors.
4095
4096 2007-07-29  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
4097
4098         * attribs.c (hash_attr, eq_attr, init_attributes): Constify.
4099         * builtins.c (validate_arg, builtin_mathfn_code,
4100         validate_arglist): Likewise.
4101         * calls.c (call_expr_flags): Likewise.
4102         * combine.c (reg_nonzero_bits_for_combine,
4103         reg_num_sign_bit_copies_for_combine, get_last_value,
4104         reg_truncated_to_mode): Likewise.
4105         * emit-rtl.c (subreg_lowpart_p): Likewise.
4106         * expr.c (highest_pow2_factor_for_target,
4107         categorize_ctor_elements_1, categorize_ctor_elements,
4108         count_type_elements, contains_packed_reference,
4109         highest_pow2_factor, highest_pow2_factor_for_target): Likewise.
4110         * fold-const.c (may_negate_without_overflow_p, int_const_binop,
4111         fold_convertible_p, operand_equal_p, tree_swap_operands_p,
4112         native_encode_int, native_encode_real, native_encode_complex,
4113         native_encode_vector, native_encode_expr, native_interpret_int,
4114         native_interpret_real, native_interpret_complex,
4115         native_interpret_vector, native_interpret_expr): Likewise.
4116         * function.c (use_register_for_decl): Likewise.
4117         * gimplify.c (get_name): Likewise.
4118         * langhooks-def.h (lhd_return_null_const_tree): New.
4119         (LANG_HOOKS_GET_CALLEE_FNDECL): Use it.
4120         * langhooks.c (lhd_return_null_const_tree): New.
4121         * langhooks.h (lang_get_callee_fndecl): Constify.
4122         * output.h (constructor_static_from_elts_p): Likewise.
4123         * rtl-factoring.c (gen_symbol_ref_rtx_for_label): Likewise.
4124         * rtl.h (nonzero_bits, num_sign_bit_copies, truncated_to_mode,
4125         subreg_lowpart_p, noop_move_p, struct rtl_hooks): Likewise.
4126         * rtlanal.c (cached_nonzero_bits, nonzero_bits1,
4127         cached_num_sign_bit_copies, num_sign_bit_copies1, noop_move_p,
4128         nonzero_bits, num_sign_bit_copies, truncated_to_mode): Likewise.
4129         * rtlhooks-def.h (reg_nonzero_bits_general,
4130         reg_num_sign_bit_copies_general, reg_truncated_to_mode_general):
4131         Likewise. 
4132         * rtlhooks.c (reg_num_sign_bit_copies_general,
4133         reg_nonzero_bits_general, reg_truncated_to_mode_general):
4134         Likewise. 
4135         * stmt.c (warn_if_unused_value, is_body_block): Likewise.
4136         * stor-layout.c (mode_for_size_tree): Likewise.
4137         * tree-ssa-loop-im.c (memref_eq): Likewise.
4138         * tree-ssa-loop-ivopts.c (tree_int_cst_sign_bit): Likewise.
4139         * tree.c (contains_placeholder_p, type_list_equal,
4140         simple_cst_equal, get_callee_fndecl, operand_equal_for_phi_arg_p):
4141         Likewise. 
4142         * tree.h (tree_int_cst_sign_bit, may_negate_without_overflow_p,
4143         mode_for_size_tree, categorize_ctor_elements, count_type_elements,
4144         contains_placeholder_p, contains_packed_reference,
4145         get_callee_fndecl, operand_equal_for_phi_arg_p,
4146         warn_if_unused_value, is_body_block, native_encode_expr,
4147         native_interpret_expr, fold_convertible_p, operand_equal_p,
4148         int_const_binop, tree_swap_operands_p, builtin_mathfn_code,
4149         validate_arglist, simple_cst_equal, type_list_equal,
4150         use_register_for_decl, call_expr_flags, get_name,
4151         highest_pow2_factor): Likewise.
4152         (const_call_expr_arg_iterator_d,
4153         init_const_call_expr_arg_iterator, next_const_call_expr_arg,
4154         first_const_call_expr_arg, more_const_call_expr_args_p,
4155         FOR_EACH_CONST_CALL_EXPR_ARG): New.
4156         * varasm.c (constructor_static_from_elts_p): Constify.
4157
4158 2007-07-28  Kazu Hirata  <kazu@codesourcery.com>
4159
4160         * cfglayout.c, config/arm/arm.c, config/arm/cortex-a8.md,
4161         config/arm/neon-schedgen.ml, config/arm/neon.ml,
4162         config/arm/vec-common.md, config/ia64/div.md, cselib.c,
4163         df-core.c, df.h, dominance.c, optabs.c, opts.c, reg-stack.c,
4164         regstat.c, target.h, tree-ssa-live.c, tree-ssa-pre.c,
4165         tree-vect-transform.c, tree.def: Fix comment typos.  Follow
4166         spelling conventions.
4167         * doc/invoke.texi: Follow spelling conventions.
4168
4169 2007-07-29  Vladimir Yanovsky  <yanov@il.ibm.com>
4170             Revital Eres  <eres@il.ibm.com>
4171
4172         * modulo-sched.c (sms_schedule): Avoid loops which includes
4173         auto-increment instructions.
4174
4175 2007-07-28  Richard Guenther  <rguenther@suse.de>
4176
4177         PR middle-end/32920
4178         * fold-const.c (fold_cond_expr_with_comparison): Convert
4179         operand zero of MIN/MAX_EXPR to correct type.
4180
4181 2007-07-28  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
4182
4183         * calls.c (special_function_p, setjmp_call_p, alloca_call_p,
4184         flags_from_decl_or_type): Constify.
4185         * gcc.c (do_spec_1): Likewise.
4186         * print-tree.c (dump_addr, print_node_brief): Likewise.
4187         * tree-cfg.c (stmt_starts_bb_p, is_ctrl_stmt, computed_goto_p,
4188         simple_goto_p, tree_can_make_abnormal_goto, stmt_starts_bb_p,
4189         tree_purge_all_dead_eh_edges): Likewise.
4190         * tree-flow.h (is_ctrl_stmt, computed_goto_p, simple_goto_p,
4191         tree_can_make_abnormal_goto, tree_purge_all_dead_eh_edges):
4192         Likewise. 
4193         * tree.c (expr_location, expr_has_location, expr_locus,
4194         expr_filename, expr_lineno, get_inner_array_type,
4195         fields_compatible_p): Likewise.
4196         * tree.h (get_inner_array_type, fields_compatible_p,
4197         expr_location, expr_has_location, expr_locus, expr_filename,
4198         expr_lineno, dump_addr, print_node_brief, flags_from_decl_or_type,
4199         setjmp_call_p, alloca_call_p): Likewise.
4200
4201 2007-07-28  Daniel Berlin  <dberlin@dberlin.org>
4202
4203         * timevar.def: Add TV_CALL_CLOBBER, TV_FLOW_SENSITIVE,
4204         TV_FLOW_INSENSITIVE.
4205
4206         * tree-ssa-alias.c (compute_call_clobbered): Push/pop
4207         TV_CALL_CLOBBER.
4208         (compute_flow_sensitive_aliasing): Ditto for TV_FLOW_SENSITIVE.
4209         (compute_flow_insensitive_aliasing): Ditto for
4210         TV_FLOW_INSENSITIVE.    
4211
4212 2007-07-27  Jan Hubicka  <jh@suse.cz>
4213
4214         * config/i386/i386.c (register_move_cost): Remove accidentally
4215         comitted #if 0 block.
4216
4217         * attribs.c: Include hashtab.h
4218         (attribute_hash): New.
4219         (substring): New structure.
4220         (extract_attribute_substring, substring_hash, hash_attr, eq_attr):
4221         New function.
4222         (init_attributes): Initialize attribute hash.
4223         (decl_attributes): Use attribute hash.
4224         * Makefile.in (attribs.c): Depend on hashtab.h.
4225
4226 2007-07-27  Steve Ellcey  <sje@cup.hp.com>
4227
4228         * config/ia64/vect.md (vec_initv2si): Remove bad BIG_ENDIAN test.
4229
4230 2007-07-27  Richard Sandiford  <richard@codesourcery.com>
4231
4232         * doc/invoke.texi (mdsp, mdspr2): Document the __mips_dsp,
4233         __mips_dspr2 and __mips_dsp_rev macros.
4234         * config/mips/mips.h (TARGET_CPU_CPP_BUILTINS): Define __mips_dsp_rev.
4235
4236 2007-07-27  Douglas Gregor  <doug.gregor@gmail.com>
4237         
4238        * c-common.h (enum rid): Add RID_DECLTYPE, update RID_LAST_CXX0X.
4239
4240 2007-07-26  Kenneth Zadeck <zadeck@naturalbridge.com>
4241
4242         PR middle-end/32749
4243         
4244         * df-problems.c (df_create_unused_note): Removed do_not_gen parm
4245         and the updating of the live and do_not_gen sets.
4246         (df_note_bb_compute): Added updating of live and do_not_gen sets
4247         for regular defs so that the case of clobber inside conditional
4248         call is processed correctly.
4249         
4250 2007-07-27  Zdenek Dvorak  <dvorakz@suse.cz>
4251
4252         * config/rs6000/rs6000.c (rs6000_gimplify_va_arg): Generate the
4253         operands with compatible type.
4254
4255 2007-07-27  Richard Sandiford  <richard@codesourcery.com>
4256
4257         * expr.h (store_bit_field): Don't return a value.
4258         * expmed.c (check_predicate_volatile_ok): New function.
4259         (store_bit_field_1): New function, extracted from store_bit_field.
4260         Take a fallback_p argument and return true if the operation succeeded.
4261         Only use store_fixed_bit_field if fallback_p.  Don't recompute
4262         mode_for_extraction; use op_mode instead.  Try forcing memories
4263         into registers if the insv expander fails.
4264         (store_bit_field): Use store_bit_field_1 with fallback_p true.
4265         Don't return a value.
4266         (convert_extracted_bit_field): New function, extracted from
4267         store_bit_field.
4268         (extract_bit_field_1): Likewise.  Take a fallback_p argument
4269         and return NULL if the operation succeeded.  Only use
4270         extract_fixed_bit_field if fallback_p.  Only calculate one
4271         extraction mode.  Combine code for extv and extzv.  Try forcing
4272         memories into registers if the ext(z)v expander fails.
4273         (extract_bit_field): Use extract_bit_field_1 with fallback_p true.
4274
4275 2007-07-27  Richard Sandiford  <rsandifo@nildram.co.uk>
4276
4277         * df.h (df_mw_hardreg): Turn df_ref_type and df_ref_flags
4278         into bitfields.
4279         (df_ref): Likewise.  Put regno with other integer fields.
4280
4281 2007-07-27  Richard Sandiford  <rsandifo@nildram.co.uk>
4282
4283         * df.h (df_mw_hardreg): Remove "loc" field.
4284         * df-scan.c (df_ref_record): Don't set it.  Remove redundant
4285         local variable.
4286         * df-problems.c (df_whole_mw_reg_unused_p): New function,
4287         split out from df_set_unused_notes_for_mw.  Return false for
4288         partial references.  Assert that mw_reg is a REG when returning true.
4289         (df_set_unused_notes_for_mw): Use it.  Use mw_reg instead of *loc.
4290         (df_whole_mw_reg_dead_p): New function, split out from
4291         df_set_dead_notes_for_mw.  Return false for partial references.
4292         Assert that mw_reg is a REG when returning true.
4293         (df_set_dead_notes_for_mw): Use it.  Use mw_reg instead of *loc.
4294         Remove redundant bitmap check.
4295
4296 2007-07-26  H.J. Lu  <hongjiu.lu@intel.com>
4297
4298         * config/ia64/t-ia64 ($(T)crtbegin.o): Removed.
4299         ($(T)crtend.o): Likwise.
4300         ($(T)crtbeginS.o): Likwise.
4301         ($(T)crtendS.o): Likwise.
4302         ($(T)crtfastmath.o): Likwise.
4303
4304 2007-07-26  Zdenek Dvorak  <dvorakz@suse.cz>
4305
4306         * dominance.c (dom_computed, n_bbs_in_dom_tree): Removed.
4307         * function.h (dom_computed, n_bbs_in_dom_tree): New macros.
4308         * basic-block.h (struct control_flow_graph): Added x_dom_computed
4309         and x_n_bbs_in_dom_tree fields.
4310
4311 2007-07-26  Steve Ellcey  <sje@cup.hp.com>
4312
4313         PR tree-optimization/32087
4314         * tree-ssa-loop-manip.c (tree_transform_and_unroll_loop):
4315         Do not call scale_bbs_frequencies_int with prob of zero.
4316
4317 2007-07-26  Julian Brown  <julian@codesourcery.com>
4318
4319         * config/arm/arm-protos.h (neon_lane_bounds, neon_const_bounds)
4320         (neon_element_bits): Add prototypes.
4321         * config/arm/arm.c (bounds_check, neon_lane_bounds)
4322         (neon_const_bounds, neon_element_bits): New functions.
4323         * config/arm/neon.md (neon_vget_lane<mode>, neon_vget_lanedi)
4324         (neon_vget_lanev2di, neon_vset_lane<mode>, neon_vset_lanedi)
4325         (neon_vset_lanev2di, neon_vdup_lane<mode>, neon_vdup_lanedi)
4326         (neon_vdup_lanev2di, neon_vcvt_n<mode>, neon_vmul_lane<mode>)
4327         (neon_vmull_lane<mode>, neon_vqdmull_lane<mode>)
4328         (neon_vqdmulh_lane<mode>, neon_vmla_lane<mode>)
4329         (neon_vmlal_lane<mode>, neon_vqdmlal_lane<mode>)
4330         (neon_vmls_lane<mode>, neon_vmlsl_lane<mode>)
4331         (neon_vqdmlsl_lane<mode>, neon_vext<mode>, neon_vshr_n<mode>)
4332         (neon_vshrn_n<mode>, neon_vqshrn_n<mode>, neon_vqshrun_n<mode>)
4333         (neon_vshl_n<mode>, neon_vshl_n<mode>, neon_vqshl_n<mode>)
4334         (neon_vqshlu_n<mode>, neon_vshll_n<mode>, neon_vsra_n<mode>)
4335         (neon_vsri_n<mode>, neon_vsli_n<mode>): Add bounds checks.
4336
4337 2007-07-26  Nathan Froyd  <froydnj@codesourcery.com>
4338
4339         * config/vxworks.h (VXWORKS_LINK_SPEC): Fix typo.
4340         (HAVE_AS_GNU_ATTRIBUTE): Undefine.
4341
4342 2007-07-26  Mark Shinwell  <shinwell@codesourcery.com>
4343             Julian Brown  <julian@codesourcery.com>
4344
4345         * config/arm/arm.c (arm_mac_accumulator_is_mul_result): New.
4346         * config/arm/arm-protos.h (arm_mac_accumulator_is_mul_result): New.
4347         * config/arm/cortex-a8.md: New.
4348         * config/arm/cortex-a8-neon.md: New.
4349         * config/arm/neon-schedgen.ml: New.
4350         * config/arm/neon.md (vqh_mnem): New.
4351         (neon_type): New.
4352         (Is_float_mode): New.
4353         (Scalar_mul_8_16): New.
4354         (Is_d_reg): New.
4355         (V_mode_nunits): New.
4356         (All instruction patterns): Annotate with neon_type attribute
4357         values.
4358         * config/arm/arm.md: Include cortex-a8.md.
4359         (insn): Add smmla, umaal, smlald, smlsld, clz, mrs, msr and xtab
4360         values.
4361         Annotate instruction patterns accordingly.
4362         (generic_sched): Do not use generic scheduling for Cortex-A8.
4363         (generic_vfp): Do not use generic VFP scheduling for Cortex-A8.
4364
4365 2007-07-26  Daniel Jacobowitz  <dan@codesourcery.com>
4366
4367         * fold-const.c (fold_read_from_constant_string): Use
4368         build_int_cst_type.
4369         * tree-ssa-ccp.c (fold_const_aggregate_ref): Likewise.
4370
4371 2007-07-26  Nick Clifton  <nickc@redhat.com>
4372
4373         * tree-ssa-operands.h: Change copyright header to refer to version
4374         3 of the GNU General Public License and to point readers at the
4375         COPYING3 file and the FSF's license web page.
4376         * tree-vrp.c, regrename.c, attribs.c, loop-unswitch.c,
4377         sched-ebb.c, fwprop.c, tree-loop-linear.c, dwarf2asm.c,
4378         tree-into-ssa.c, dwarf2asm.h, tree-ssa-loop-im.c, sbitmap.c,
4379         targhooks.c, tree-dump.c, tree-complex.c, sbitmap.h, targhooks.h,
4380         tree-dump.h, regstat.c, see.c, machmode.h, hooks.c, cgraphbuild.c,
4381         hooks.h, genrecog.c, tree-ssa-threadupdate.c, gen-protos.c,
4382         flags.h, rtlhooks.c, gencheck.c, tree-ssa-loop-niter.c,
4383         opts-common.c, dbgcnt.def, tree-pretty-print.c, tracer.c,
4384         gengtype.c, mkconfig.sh, gengtype.h, tree-ssa-loop-unswitch.c,
4385         cgraph.c, c-lex.c, cgraph.h, libfuncs.h, cfgloopmanip.c,
4386         rtl-error.c, optabs.c, postreload-gcse.c, tree-ssa-loop-manip.c,
4387         optabs.h, genmddeps.c, defaults.h, postreload.c, value-prof.c,
4388         tree-ssa-loop-ch.c, tree-tailcall.c, gengenrtl.c, value-prof.h,
4389         genopinit.c, tree.c, tree.h, reload.c, tree-pass.h, ipa-cp.c,
4390         reload.h, bitmap.c, bitmap.h, tree-scalar-evolution.c,
4391         c-config-lang.in, tree-scalar-evolution.h, target.h, cppspec.c,
4392         rtlanal.c, ddg.c, lambda-mat.c, mips-tdump.c, ddg.h,
4393         tree-phinodes.c, mips-tfile.c, pointer-set.c, pointer-set.h,
4394         diagnostic.c, final.c, diagnostic.h, builtins.c, genoutput.c,
4395         gcc.c, lists.c, tree-ssa-alias-warnings.c, gcc.h, cfghooks.c,
4396         input.h, gensupport.c, fold-const.c, cfghooks.h, insn-notes.def,
4397         gensupport.h, builtin-attrs.def, sync-builtins.def, params.c,
4398         cfgloopanal.c, params.h, graphds.c, omp-low.c, tree-ssa-dse.c,
4399         graphds.h, gcov.c, cfg.c, genextract.c, ipa-reference.c,
4400         genautomata.c, tree-ssa-uncprop.c, auto-inc-dec.c, toplev.c,
4401         tree-gimple.c, ipa-reference.h, vmsdbgout.c, errors.c, toplev.h,
4402         reorg.c, tree-gimple.h, tree-chrec.c, pretty-print.c, errors.h,
4403         real.c, tree-chrec.h, pretty-print.h, debug.c, real.h, genemit.c,
4404         omega.c, c-cppbuiltin.c, genmultilib, debug.h, omega.h,
4405         tree-ssa-sccvn.c, genconfig.c, tree-ssa-sccvn.h, cgraphunit.c,
4406         regs.h, df-scan.c, vec.c, hosthooks-def.h, vec.h,
4407         tree-ssa-copyrename.c, scan.c, builtin-types.def, tree-ssa-ccp.c,
4408         scan.h, mode-classes.def, haifa-sched.c, dominance.c, dojump.c,
4409         double-int.c, gcov-io.c, dbxout.c, builtins.def, double-int.h,
4410         dbxout.h, tree-ssa-loop-ivopts.c, df-core.c, mode-switching.c,
4411         gengtype-lex.l, tree-nomudflap.c, modulo-sched.c, c-objc-common.c,
4412         hosthooks.h, c-objc-common.h, caller-save.c, graph.c,
4413         ipa-pure-const.c, graph.h, c-format.c, cse.c, fix-header.c,
4414         c-format.h, web.c, tree-stdarg.c, genpeep.c, tree-stdarg.h,
4415         tree-ssa-math-opts.c, xcoffout.c, tree-ssa-dom.c, tree-nrv.c,
4416         xcoffout.h, tree-ssa-propagate.c, ipa-utils.c,
4417         tree-ssa-propagate.h, tree-ssa-alias.c, loop-init.c, ipa-utils.h,
4418         gimple-low.c, rtl.def, c-tree.h, tree-ssa-sink.c, ipa-inline.c,
4419         mkmap-symver.awk, machmode.def, c-pch.c, cfganal.c, global.c,
4420         alloc-pool.c, c-semantics.c, alloc-pool.h, jump.c, ifcvt.c,
4421         dwarf2out.c, expr.c, cfgbuild.c, tree-browser.c, dwarf2out.h,
4422         expr.h, longlong.h, opts.c, gcov-iov.c, opts.h, dwarf2.h,
4423         genattrtab.c, genconditions.c, genattr.c, optc-gen.awk,
4424         timevar.def, tree-ssa-loop-ivcanon.c, hard-reg-set.h, predict.c,
4425         tree-ssa-loop.c, host-default.c, predict.h, recog.c, dbgcnt.c,
4426         recog.h, dbgcnt.h, c-aux-info.c, tree-ssa-address.c, timevar.c,
4427         dse.c, lcm.c, tree-ssa-ifcombine.c, timevar.h, dse.h,
4428         matrix-reorg.c, tree-vn.c, treestruct.def, fp-test.c, c-decl.c,
4429         tree-eh.c, c-errors.c, c-pretty-print.c, regmove.c,
4430         lambda-trans.c, c-pretty-print.h, et-forest.c, et-forest.h,
4431         ebitmap.c, configure.ac, local-alloc.c, function.c, langhooks.c,
4432         ebitmap.h, cppdefault.c, tree-vectorizer.c, function.h,
4433         langhooks.h, print-rtl.c, cppdefault.h, df.h, tree-vectorizer.h,
4434         sdbout.c, stor-layout.c, sdbout.h, rtlhooks-def.h, read-rtl.c,
4435         gcse.c, ipa-type-escape.c, vmsdbg.h, alias.c, gengtype-parse.c,
4436         ipa-type-escape.h, domwalk.c, alias.h, tree-if-conv.c, profile.c,
4437         init-regs.c, domwalk.h, ipa.c, gccbug.in, tree-data-ref.c,
4438         loop-unroll.c, tree-data-ref.h, tree-flow-inline.h, tree-affine.c,
4439         mkmap-flat.awk, tree-affine.h, tree-vect-analyze.c, c.opt, ggc.h,
4440         opt-gather.awk, c-typeck.c, gimplify.c, coretypes.h, exec-tool.in,
4441         insn-addr.h, tree-ssa-phiopt.c, c-pragma.c, c-pragma.h, calls.c,
4442         tree-ssa-coalesce.c, genmodes.c, loop-doloop.c, predict.def,
4443         dwarf.h, tree.def, rtl-factoring.c, lower-subreg.c, expmed.c,
4444         bt-load.c, ggc-common.c, genflags.c, tree-dfa.c, except.c,
4445         coverage.c, except.h, emit-rtl.c, cfgexpand.c, coverage.h,
4446         stringpool.c, cselib.c, emit-rtl.h, tree-cfgcleanup.c, c-opts.c,
4447         cselib.h, cfgcleanup.c, simplify-rtx.c, tree-ssa-pre.c, explow.c,
4448         tree-ssa-live.c, tree-sra.c, tree-ssa-live.h, tree-predcom.c,
4449         loop-invariant.c, genpreds.c, protoize.c, opth-gen.awk, c-dump.c,
4450         lambda.h, loop-iv.c, tree-mudflap.c, ipa-prop.c, print-tree.c,
4451         tree-mudflap.h, tree-ssa-copy.c, ipa-prop.h, cfglayout.c,
4452         tree-ssa-forwprop.c, c-convert.c, cfglayout.h, common.opt,
4453         ggc-zone.c, ggc-page.c, c-omp.c, tree-ssa-dce.c, gencodes.c,
4454         varasm.c, tree-vect-patterns.c, libada-mk.in, tree-ssa-ter.c,
4455         sched-deps.c, tree-nested.c, c-ppoutput.c, tree-ssa.c,
4456         target-def.h, tree-ssa-loop-prefetch.c, lambda-code.c,
4457         omp-builtins.def, rtl.c, regclass.c, stab.def, intl.c, rtl.h,
4458         intl.h, tree-inline.c, conditions.h, tree-inline.h, integrate.c,
4459         sched-int.h, tree-iterator.c, integrate.h, tree-iterator.h,
4460         genchecksum.c, tree-optimize.c, output.h, tree-vect-transform.c,
4461         tree-object-size.c, combine.c, tree-outof-ssa.c, addresses.h,
4462         bb-reorder.c, stack-ptr-mod.c, resource.c, var-tracking.c,
4463         cfgloop.c, system.h, resource.h, ggc-none.c, tree-profile.c,
4464         cfgloop.h, c-gimplify.c, c-common.c, opt-functions.awk,
4465         tree-vect-generic.c, tree-flow.h, df-problems.c, scan-decls.c,
4466         c-common.h, config.gcc, reg-stack.c, tlink.c, main.c, stub-objc.c,
4467         fixproto, config.host, Makefile.in, gccspec.c, sched-rgn.c,
4468         vecprim.h, basic-block.h, tree-ssa-structalias.c,
4469         tree-ssa-structalias.h, c-common.def, sched-vis.c, tree-cfg.c,
4470         passes.c, genconstants.c, c-incpath.c, c-incpath.h,
4471         struct-equiv.c, c-parser.c, tree-ssa-reassoc.c, varray.c, sreal.c,
4472         varray.h, dfp.c, sreal.h, combine-stack-adj.c, dfp.h,
4473         reg-notes.def, cfgrtl.c, config.build, varpool.c, gengtype-yacc.y,
4474         stmt.c, dce.c, tree-browser.def, prefix.c, statistics.h,
4475         params.def, dce.h, c-lang.c, gcov-dump.c, prefix.h,
4476         tree-ssanames.c, collect2.c, collect2.h, tree-ssa-threadedge.c,
4477         convert.c, convert.h, langhooks-def.h, reload1.c,
4478         tree-ssa-operands.c: Likewise.
4479
4480 2007-07-26  Jan Hubicka  <jh@suse.cz>
4481
4482         * tree-ssa-live.c: Include debug.h and flags.h.
4483         (mark_scope_block_unused): New function.
4484         (remove_unused_scope_block_p): New function.
4485         (remove_unused_locals): Remove unused blocks too.
4486
4487 2007-07-25  Ian Lance Taylor  <iant@google.com>
4488
4489         * combine.c (combine_max_regno): Remove.  Remove all uses.
4490         (struct reg_stat_struct): Rename from struct reg_stat.
4491         (reg_stat_type): Define, and declare VECs.
4492         (reg_stat): Change from pointer to VEC.  Change all uses.
4493         (combine_split_insns): New static function.
4494         (try_combine, find_split_point): Call it instead of split_insns.
4495
4496 2007-07-25  Zdenek Dvorak  <dvorakz@suse.cz>
4497
4498         * cfghooks.c (split_block): Fix the information about loop latch.
4499
4500 2007-07-25  Zdenek Dvorak  <dvorakz@suse.cz>
4501
4502         * cfgloopmanip.c (fix_loop_structure): Call force_single_succ_latches.
4503
4504 2007-07-25  Zdenek Dvorak  <dvorakz@suse.cz>
4505
4506         * tree-ssa-threadupdate.c (create_edge_and_update_destination_phis):
4507         Scan the new edge for loop exit info.
4508
4509 2007-07-25  Andreas Tobler  <a.tobler@schweiz.org>
4510
4511         * config/darwin.c: Include debug.h.
4512
4513 2007-07-25  Steve Ellcey  <sje@cup.hp.com>
4514
4515         PR target/32218
4516         * tree-vect-patterns.c (vect_pattern_recog_1): Check for valid type.
4517
4518 2007-07-25  Steve Ellcey  <sje@cup.hp.com>
4519
4520         * config/ia64/ia64.h (HARD_REGNO_NREGS): Handle RFmode.
4521         (HARD_REGNO_MODE_OK): Ditto.
4522         (MODES_TIEABLE_P): Ditto.
4523         (HARD_REGNO_CALLER_SAVE_MODE): Ditto.
4524         (CLASS_MAX_NREGS): Ditto.
4525         * config/ia64/ia64.c (ia64_print_operand_address): Add R format.
4526         * config/ia64/ia64.md (divsf3_internal_thr): Removed.
4527         (divdf3_internal_thr): Removed.
4528         * config/ia64/div.md: New file.
4529         * config/ia64/constraints.md: Add H constraint.
4530
4531 2007-07-25  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
4532
4533         * sbitmap.c (sbitmap_verify_popcount, sbitmap_alloc_with_popcount,
4534         sbitmap_copy, sbitmap_copy_n, sbitmap_equal, sbitmap_empty_p,
4535         sbitmap_union_of_diff_cg, sbitmap_union_of_diff, sbitmap_not,
4536         sbitmap_difference, sbitmap_any_common_bits, sbitmap_a_and_b_cg,
4537         sbitmap_a_and_b, sbitmap_a_xor_b_cg, sbitmap_a_xor_b,
4538         sbitmap_a_or_b_cg, sbitmap_a_or_b, sbitmap_a_subset_b_p,
4539         sbitmap_a_or_b_and_c_cg, sbitmap_a_or_b_and_c,
4540         sbitmap_a_and_b_or_c_cg, sbitmap_a_and_b_or_c,
4541         sbitmap_first_set_bit, sbitmap_last_set_bit, dump_sbitmap,
4542         dump_sbitmap_file, debug_sbitmap, popcount_table,
4543         sbitmap_popcount): Constify.
4544         * sbitmap.h (const_sbitmap, const_sbitmap_ptr): New.
4545         (sbitmap_iterator, sbitmap_iter_init, dump_sbitmap,
4546         dump_sbitmap_file, sbitmap_copy, sbitmap_copy_n, sbitmap_equal,
4547         sbitmap_empty_p, sbitmap_union_of_diff, sbitmap_union_of_diff_cg,
4548         sbitmap_difference, sbitmap_not, sbitmap_a_or_b_and_c,
4549         sbitmap_a_or_b_and_c_cg, sbitmap_a_and_b_or_c,
4550         sbitmap_a_and_b_or_c_cg, sbitmap_any_common_bits, sbitmap_a_and_b,
4551         sbitmap_a_and_b_cg, sbitmap_a_or_b, sbitmap_a_or_b_cg,
4552         sbitmap_a_xor_b, sbitmap_a_xor_b_cg, sbitmap_a_subset_b_p,
4553         sbitmap_first_set_bit, sbitmap_last_set_bit, debug_sbitmap,
4554         sbitmap_popcount, sbitmap_verify_popcount): Constify.
4555
4556 2007-07-25  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
4557
4558         * bitmap.c (hash_descriptor, eq_descriptor, bitmap_element_zerop,
4559         bitmap_copy, bitmap_clear_bit, popcount_table, bitmap_count_bits,
4560         bitmap_first_set_bit, bitmap_and, bitmap_and_into,
4561         bitmap_elt_copy, bitmap_and_compl, bitmap_and_compl_into,
4562         bitmap_compl_and_into, bitmap_elt_ior, bitmap_ior,
4563         bitmap_ior_into, bitmap_xor, bitmap_xor_into, bitmap_equal_p,
4564         bitmap_intersect_p, bitmap_intersect_compl_p,
4565         bitmap_ior_and_compl, bitmap_ior_and_compl_into,
4566         debug_bitmap_file, debug_bitmap, bitmap_print, bitmap_hash):
4567         Constify.
4568         * bitmap.h (bitmap_copy, bitmap_equal_p, bitmap_intersect_p,
4569         bitmap_intersect_compl_p, bitmap_count_bits, bitmap_and,
4570         bitmap_and_into, bitmap_and_compl, bitmap_and_compl_into,
4571         bitmap_compl_and_into, bitmap_ior, bitmap_ior_into, bitmap_xor,
4572         bitmap_xor_into, bitmap_ior_and_compl, bitmap_ior_and_compl_into,
4573         debug_bitmap, debug_bitmap_file, bitmap_print,
4574         bitmap_first_set_bit, bitmap_hash, bmp_iter_set_init,
4575         bmp_iter_and_init, bmp_iter_and_compl_init): Likewise.
4576
4577 2007-07-25  Daniel Berlin  <dberlin@dberlin.org>
4578
4579         * config/darwin.c (darwin_override_options): Additional fix for
4580         debug info formats that don't support var tracking.
4581
4582 2007-07-25  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
4583
4584         * cselib.c (entry_and_rtx_equal_p): Constify.
4585         * gengtype.c (output_mangled_typename, write_types, write_local):
4586         Likewise.
4587         * gengtype.h (const_type_p): New.
4588         * see.c (eq_descriptor_extension, hash_descriptor_extension):
4589         Constify.
4590         * tlink.c (scan_linker_output): De-constify.
4591         * tree-ssa-loop-im.c (memref_eq): Constify.
4592         * tree-ssa-structalias.c (const_shared_bitmap_info_t): New.
4593         (shared_bitmap_hash, shared_bitmap_eq): Constify.
4594
4595 2007-07-25  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
4596
4597         * c-common.c (fname_as_string, c_type_hash): Constify.
4598         * c-typeck.c (free_all_tagged_tu_seen_up_to): Likewise.
4599         * cgraph.c (edge_hash, edge_eq): Likewise.
4600         * dwarf2out.c (decl_die_table_eq, decl_loc_table_eq): Likewise.
4601         * emit-rtl.c (mem_attrs_htab_eq, reg_attrs_htab_hash,
4602         reg_attrs_htab_eq): Likewise.
4603         * except.c (t2r_eq, t2r_hash, ttypes_filter_eq, ehl_hash, ehl_eq):
4604         Likewise.
4605         * genautomata.c (const_reserv_sets_t, const_unit_decl_t,
4606         const_decl_t, const_state_t, const_automata_list_el_t): New.
4607         (first_out_arc, DECL_UNIT, DECL_BYPASS, DECL_AUTOMATON, DECL_EXCL,
4608         DECL_PRESENCE, DECL_ABSENCE, DECL_RESERV, DECL_INSN_RESERV,
4609         automaton_decl_hash, automaton_decl_eq_p, insn_decl_hash,
4610         insn_decl_eq_p, decl_hash, decl_eq_p, alt_state_cmp,
4611         reserv_sets_cmp, reserv_sets_eq, state_hash, state_eq_p,
4612         automata_list_hash, automata_list_eq_p, compare_states_for_equiv,
4613         compare_max_occ_cycle_nums, out_state_arcs_num,
4614         compare_transition_els_num, units_cmp, state_reservs_cmp):
4615         Constify.
4616         * genmodes.c (cmp_modes): Likewise.
4617         * ggc-common.c (saving_htab_hash, saving_htab_eq): Likewise.
4618         * gimplify.c (compare_case_labels): Likewise.
4619         * ipa-type-escape.c (get_name_of_type, type_brand_s): Likewise.
4620         * loop-unroll.c (si_info_hash, ve_info_hash): Likewise.
4621         * matrix-reorg.c (mtt_info_hash): Likewise.
4622         * postreload-gcse.c (hash_expr_for_htab, expr_equiv_p): Likewise.
4623         * rtl-factoring.c (const_p_hash_bucket, const_p_hash_elem): New.
4624         (htab_hash_bucket, htab_hash_elem): Constify.
4625         * tree-browser.c (TB_parent_eq): Likewise.
4626         * tree-scalar-evolution.c (hash_scev_info): Likewise.
4627         * tree-ssa-alias.c (sort_tags_by_id): Likewise.
4628         * tree-ssa-coalesce.c (const_coalesce_pair_p): New.
4629         (coalesce_pair_map_hash, coalesce_pair_map_eq, compare_pairs):
4630         Constify.
4631         * tree-ssa-dom.c (avail_expr_hash, avail_expr_eq): Likewise.
4632         * tree-ssa-pre.c (const_expr_pred_trans_t): New.
4633         (expr_pred_trans_hash, expr_pred_trans_eq): Constify.
4634         * tree-ssa-sccvn.c (const_vn_binary_op_t, const_vn_unary_op_t,
4635         const_vn_phi_t, const_vn_reference_op_t, const_vn_reference_t):
4636         New.
4637         (vn_reference_op_eq, vn_reference_hash, vn_reference_eq,
4638         vn_unary_op_hash, vn_unary_op_eq, vn_binary_op_hash,
4639         vn_binary_op_eq, vn_phi_hash, vn_phi_eq): Constify.
4640         * tree-ssa-threadupdate.c (redirection_data_hash,
4641         redirection_data_eq): Likewise. 
4642         * tree-ssa-uncprop.c (equiv_hash, equiv_eq): Likewise.
4643         * tree-ssa.c (var_ann_eq): Likewise.
4644         * tree-vrp.c (compare_case_labels): Likewise.
4645         * tree.c (int_cst_hash_hash, int_cst_hash_eq,
4646         tree_map_base_marked_p, type_hash_marked_p, tree_check_failed,
4647         tree_not_check_failed, tree_class_check_failed,
4648         tree_range_check_failed, tree_not_class_check_failed,
4649         omp_clause_check_failed, omp_clause_range_check_failed,
4650         tree_contains_struct_check_failed, tree_operand_check_failed):
4651         Likewise. 
4652         * tree.h (tree_contains_struct_check_failed, tree_check_failed,
4653         tree_not_check_failed, tree_class_check_failed,
4654         tree_range_check_failed, tree_not_class_check_failed,
4655         tree_operand_check_failed, omp_clause_operand_check_failed,
4656         tree_operand_length): Likewise. 
4657         * var-tracking.c (const_variable): New.
4658         (variable_htab_hash, variable_htab_eq): Constify.
4659         * varasm.c (const_desc_hash): Likewise.
4660
4661 2007-07-25  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
4662
4663         * expr.c (handled_component_p): Constify.
4664         * fold-const.c (fit_double_type): Likewise.
4665         * real.h (real_value_from_int_cst): Likewise.
4666         * tree-flow-inline.h (gimple_in_ssa_p,
4667         gimple_aliases_computed_p, gimple_addressable_vars,
4668         gimple_call_clobbered_vars, gimple_referenced_vars,
4669         gimple_global_var, gimple_nonlocal_all, gimple_var_anns,
4670         end_htab_p, end_referenced_vars_p, var_ann, function_ann,
4671         may_aliases, end_readonly_imm_use_p, has_zero_uses,
4672         has_single_use, single_imm_use, num_imm_uses, is_exec_stmt,
4673         is_label_stmt, is_global_var, phi_ssa_name_p,
4674         factoring_name_p, is_call_clobbered, tree_common_ann,
4675         op_iter_done, end_imm_use_stmt_p, end_imm_use_on_stmt_p,
4676         unmodifiable_var_p, array_ref_contains_indirect_ref,
4677         ref_contains_array_ref, lookup_subvars_for_var,
4678         var_can_have_subvars, overlap_subvar, gimple_ssa_operands,
4679         gimple_mem_ref_stats): Likewise.
4680         * tree-flow.h (tree_common_ann, var_ann, function_ann,
4681         may_aliases, is_exec_stmt, is_label_stmt,
4682         ref_contains_array_ref, array_ref_contains_indirect_ref,
4683         var_can_have_subvars, overlap_subvar, is_call_clobbered,
4684         unmodifiable_var_p): Likewise.
4685         * tree-gimple.c (is_gimple_min_invariant): Likewise.
4686         * tree-gimple.h (is_gimple_min_invariant): Likewise. 
4687         * tree.c (type_hash_list, attribute_hash_list, tree_size,
4688         cst_and_fits_in_hwi, real_value_from_int_cst,
4689         build_real_from_int_cst, integer_zerop, integer_onep,
4690         integer_all_onesp, integer_pow2p, integer_nonzerop, tree_log2,
4691         tree_floor_log2, real_zerop, real_onep, real_twop,
4692         real_minus_onep, really_constant_p, purpose_member, chain_member,
4693         list_length, fields_length, int_size_in_bytes, bit_position,
4694         int_bit_position, byte_position, int_byte_position, expr_align,
4695         array_type_nelts, tree_node_structure,
4696         type_contains_placeholder_1, iterative_hash_pointer,
4697         is_attribute_with_length_p, is_attribute_p, check_qualified_type,
4698         tree_map_base_eq, type_hash_list, type_hash_eq,
4699         attribute_hash_list, type_num_arguments, tree_int_cst_equal,
4700         tree_int_cst_lt, tree_int_cst_compare, host_integerp,
4701         tree_low_cst, tree_int_cst_msb, tree_int_cst_sgn,
4702         simple_cst_list_equal, compare_tree_int, iterative_hash_expr,
4703         int_fits_type_p, get_containing_scope, decl_function_context,
4704         decl_type_context, omp_clause_operand_check_failed,
4705         initializer_zerop, int_cst_value, num_ending_zeros): Likewise.
4706         * tree.h (omp_clause_operand_check_failed, tree_size,
4707         build_real_from_int_cst, array_type_nelts, purpose_member,
4708         tree_int_cst_equal, tree_int_cst_lt, tree_int_cst_compare,
4709         host_integerp, tree_low_cst, tree_int_cst_msb, tree_int_cst_sgn,
4710         is_attribute_p, check_qualified_type, expr_align,
4711         int_size_in_bytes, bit_position, int_bit_position, byte_position,
4712         int_byte_position, list_length, fields_length, initializer_zerop,
4713         integer_zerop, integer_onep, integer_all_onesp, integer_pow2p,
4714         integer_nonzerop, cst_and_fits_in_hwi, num_ending_zeros,
4715         tree_node_structure, handled_component_p, get_containing_scope,
4716         decl_function_context, decl_type_context, real_zerop,
4717         type_num_arguments, fit_double_type, really_constant_p,
4718         int_fits_type_p, tree_log2, tree_floor_log2, iterative_hash_expr,
4719         compare_tree_int, chain_member, simple_cst_list_equal, real_onep,
4720         real_twop, real_minus_onep, int_cst_value): Likewise.
4721
4722 2007-07-25  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
4723
4724         * cfglayout.c (insn_scope, insn_line): Constify.
4725         * emit-rtl.c (const_int_htab_hash, const_int_htab_eq,
4726         const_double_htab_hash, const_double_htab_eq,
4727         mem_attrs_htab_hash): Likewise.
4728         * loop-iv.c (biv_eq): Likewise.
4729         * print-rtl.c (print_rtx, print_decl_name, print_mem_expr,
4730         print_inline_rtx, debug_rtx, debug_rtx_list, debug_rtx_range,
4731         debug_rtx_find, print_rtl, print_rtl_single, print_simple_rtl):
4732         Likewise. 
4733         * rtl-error.c (location_for_asm, diagnostic_for_asm,
4734         error_for_asm, warning_for_asm, _fatal_insn,
4735         _fatal_insn_not_found): Likewise. 
4736         * rtl.c (rtx_size, shared_const_p, shallow_copy_rtx_stat,
4737         rtx_equal_p, rtl_check_failed_bounds, rtl_check_failed_type1,
4738         rtl_check_failed_type2, rtl_check_failed_code1,
4739         rtl_check_failed_code2, rtl_check_failed_code_mode,
4740         rtvec_check_failed_bounds, rtl_check_failed_flag): Likewise.
4741         * rtl.h (rtl_check_failed_bounds, rtl_check_failed_type1,
4742         rtl_check_failed_type2, rtl_check_failed_code1,
4743         rtl_check_failed_code2, rtl_check_failed_code_mode,
4744         rtvec_check_failed_bounds, rtl_check_failed_flag, LABEL_KIND,
4745         SET_LABEL_KIND, rhs_regno, subreg_lsb, subreg_regno, subreg_nregs,
4746         shared_const_p, rtx_size, shallow_copy_rtx_stat, rtx_equal_p,
4747         get_pool_mode, insn_line, insn_file, simplify_replace_rtx,
4748         mode_signbit_p, rtx_addr_can_trap_p, nonzero_address_p,
4749         rtx_unstable_p, get_integer_term, get_related_value,
4750         offset_within_block_p, reg_mentioned_p, count_occurrences,
4751         reg_referenced_p, reg_used_between_p, no_labels_between_p,
4752         single_set_2, multiple_sets, set_noop_p, refers_to_regno_p,
4753         reg_overlap_mentioned_p, dead_or_set_p, dead_or_set_regno_p,
4754         find_reg_note, find_regno_note, find_reg_equal_equiv_note,
4755         find_constant_src, find_reg_fusage, find_regno_fusage,
4756         pure_call_p, remove_note, side_effects_p, volatile_refs_p,
4757         volatile_insn_p, may_trap_p, may_trap_after_code_motion_p,
4758         may_trap_or_fault_p, inequality_comparisons_p, tablejump_p,
4759         computed_jump_p, auto_inc_p, in_expr_list_p,
4760         remove_node_from_expr_list, loc_mentioned_in_p,
4761         label_is_jump_target_p, reversed_comparison_code_parts,
4762         debug_rtx, debug_rtx_list, debug_rtx_range, debug_rtx_find,
4763         print_mem_expr, print_rtl, print_simple_rtl, print_rtl_single,
4764         print_inline_rtx): Likewise.
4765         * rtlanal.c (covers_regno_p, covers_regno_no_parallel_p,
4766         computed_jump_p_1, nonzero_bits1, rtx_unstable_p,
4767         rtx_addr_can_trap_p_1, rtx_addr_can_trap_p, nonzero_address_p,
4768         get_integer_term, get_related_value, offset_within_block_p,
4769         count_occurrences, reg_mentioned_p, no_labels_between_p,
4770         reg_used_between_p, reg_referenced_p, single_set_2,
4771         multiple_sets, set_noop_p, refers_to_regno_p,
4772         reg_overlap_mentioned_p, dead_or_set_p,
4773         covers_regno_no_parallel_p, covers_regno_p,
4774         dead_or_set_regno_p, find_reg_note, find_regno_note,
4775         find_reg_equal_equiv_note, find_constant_src, find_reg_fusage,
4776         find_regno_fusage, pure_call_p, remove_note, in_expr_list_p,
4777         remove_node_from_expr_list, volatile_insn_p, volatile_refs_p,
4778         side_effects_p, may_trap_p_1, may_trap_p,
4779         may_trap_after_code_motion_p, may_trap_or_fault_p,
4780         inequality_comparisons_p, tablejump_p, computed_jump_p_1,
4781         computed_jump_p, auto_inc_p, loc_mentioned_in_p, subreg_lsb,
4782         subreg_regno, subreg_nregs, label_is_jump_target_p): Likewise.
4783         * simplify-rtx.c (neg_const_int, plus_minus_operand_p,
4784         mode_signbit_p, simplify_replace_rtx, plus_minus_operand_p):
4785         Likewise. 
4786         * toplev.h (_fatal_insn_not_found, _fatal_insn, error_for_asm,
4787         warning_for_asm): Likewise.
4788         * tree.h (print_rtl): Likewise.
4789         * varasm.c (get_pool_mode): Likewise.
4790
4791 2007-07-25  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
4792
4793         * c-lex.c (c_lex_with_flags, lex_string): Constify.
4794         * c-ppoutput.c (print_line, pp_dir_change): Likewise.
4795         * c-typeck.c (free_all_tagged_tu_seen_up_to): Likewise.
4796         * cfg.c (bb_copy_original_hash, bb_copy_original_eq): Likewise.
4797         * cfgloop.c (loop_exit_hash, loop_exit_eq): Likewise.
4798         * ddg.c (compare_sccs): Likewise.
4799         * df-scan.c (df_ref_compare, df_mw_compare): Likewise.
4800         * dfp.c (decimal_real_from_string, decimal_to_decnumber,
4801         decimal_to_binary, decimal_do_compare, decimal_real_to_decimal,
4802         decimal_do_fix_trunc, decimal_real_to_integer,
4803         decimal_real_to_integer2, decimal_real_maxval): Likewise.
4804         * dse.c (const_group_info_t): New.
4805         (invariant_group_base_eq, invariant_group_base_hash): Constify.
4806         * dwarf2out.c (const_dw_die_ref): New.
4807         (decl_die_table_hash, decl_die_table_eq, file_info_cmp): Constify.
4808         * tree-browser.c (TB_parent_eq): Likewise.
4809         * unwind-dw2-fde.c (__register_frame_info_bases,
4810         __deregister_frame_info_bases, fde_unencoded_compare, fde_split,
4811         add_fdes, linear_search_fdes, binary_search_unencoded_fdes):
4812         Likewise.
4813         * unwind-dw2-fde.h (get_cie, next_fde): Likewise.
4814         * unwind-dw2.c (uw_frame_state_for): Likewise.
4815         * value-prof.c (histogram_hash, histogram_eq): Likewise.
4816         * value-prof.h (const_histogram_value): New.
4817
4818 2007-07-25  Richard Sandiford  <richard@codesourcery.com>
4819
4820         * config/mips/mips.c (machine_function): Add
4821         initialized_mips16_gp_pseudo_p.
4822         (mips16_gp_pseudo_reg): Do not emit the initialization of
4823         mips16_gp_pseudo_rtx when being called from the gimple cost-
4824         calculation routines; emit it on the first use outside those
4825         routines.
4826
4827 2007-07-25  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
4828
4829         * coretypes.h (const_bitmap, const_rtx, const_rtvec, const_tree):
4830         New.
4831         
4832         * rtl.h (RTL_CHECK1, RTL_CHECK2, RTL_CHECKC1, RTL_CHECKC2,
4833         RTVEC_ELT, XWINT, XCWINT, XCMWINT, XCNMPRV, BLOCK_SYMBOL_CHECK,
4834         RTL_FLAG_CHECK1, RTL_FLAG_CHECK2, RTL_FLAG_CHECK3,
4835         RTL_FLAG_CHECK4, RTL_FLAG_CHECK5, RTL_FLAG_CHECK6,
4836         RTL_FLAG_CHECK7, RTL_FLAG_CHECK8, LABEL_KIND, SET_LABEL_KIND):
4837         Preserve const-ness of parameters through use of __typeof(),
4838         also constify and tidy.
4839         
4840         * tree.h (TREE_CHECK, TREE_NOT_CHECK, TREE_CHECK2,
4841         TREE_NOT_CHECK2, TREE_CHECK3, TREE_NOT_CHECK3, TREE_CHECK4,
4842         NON_TREE_CHECK4, TREE_CHECK5, TREE_NOT_CHECK5,
4843         CONTAINS_STRUCT_CHECK, TREE_CLASS_CHECK, TREE_RANGE_CHECK,
4844         OMP_CLAUSE_SUBCODE_CHECK, OMP_CLAUSE_RANGE_CHECK, EXPR_CHECK,
4845         GIMPLE_STMT_CHECK, NON_TYPE_CHECK, TREE_VEC_ELT_CHECK,
4846         PHI_NODE_ELT_CHECK, OMP_CLAUSE_ELT_CHECK, TREE_OPERAND_CHECK,
4847         TREE_OPERAND_CHECK_CODE, GIMPLE_STMT_OPERAND_CHECK,
4848         TREE_RTL_OPERAND_CHECK, TREE_CHAIN, TREE_TYPE): Likewise.
4849
4850 2007-07-25  Julian Brown  <julian@codesourcery.com>
4851             Mark Shinwell  <shinwell@codesourcery.com>
4852
4853         * config/alpha/alpha.c (alpha_mangle_fundamental_type): Rename to...
4854         (alpha_mangle_type): This.
4855         (TARGET_MANGLE_FUNDAMENTAL_TYPE): Don't define.
4856         (TARGET_MANGLE_TYPE): Define this instead.
4857         * config/arm/arm-protos.h (arm_mangle_type): Add prototype.
4858         * config/arm/arm.c (TARGET_MANGLE_TYPE): Define target hook.
4859         (arm_init_neon_builtins): Fix comment.
4860         (arm_mangle_map_entry): New.
4861         (arm_mangle_map): New.
4862         (arm_mangle_type): New.
4863         * config/i386/i386.c (ix86_mangle_fundamental_type): Rename to...
4864         (ix86_mangle_type): This. Use TYPE_MAIN_VARIANT and restrict
4865         mangled types to VOID_TYPE, BOOLEAN_TYPE, INTEGER_TYPE, REAL_TYPE.
4866         (TARGET_MANGLE_FUNDAMENTAL_TYPE): Don't define.
4867         (TARGET_MANGLE_TYPE): Define this instead.
4868         * config/ia64/ia64.c (ia64_mangle_fundamental_type): Rename to...
4869         (ia64_mangle_type): This. Use TYPE_MAIN_VARIANT  and restrict
4870         mangled types to VOID_TYPE, BOOLEAN_TYPE, INTEGER_TYPE, REAL_TYPE.
4871         (TARGET_MANGLE_FUNDAMENTAL_TYPE): Don't define.
4872         (TARGET_MANGLE_TYPE): Define this instead.
4873         * config/rs6000/rs6000.c (rs6000_mangle_fundamental_type): Rename
4874         to...
4875         (rs6000_mangle_type): This. Use TYPE_MAIN_VARIANT.
4876         (TARGET_MANGLE_FUNDAMENTAL_TYPE): Don't define.
4877         (TARGET_MANGLE_TYPE): Define this instead.
4878         * config/s390/s390.c (s390_mangle_fundamental_type): Rename to...
4879         (s390_mangle_type): This.
4880         (TARGET_MANGLE_FUNDAMENTAL_TYPE): Don't define.
4881         (TARGET_MANGLE_TYPE): Define this instead.
4882         * config/sparc/sparc.c (sparc_mangle_fundamental_type): Rename to...
4883         (sparc_mangle_type): This.
4884         (TARGET_MANGLE_FUNDAMENTAL_TYPE): Don't define.
4885         (TARGET_MANGLE_TYPE): Define this instead.
4886         * cp/mangle.c (write_type): Call mangle_type target hook on all
4887         types before mangling.  Use original type, not main variant, as
4888         argument.
4889         * target-def.h (TARGET_MANGLE_FUNDAMENTAL_TYPE): Rename hook to...
4890         (TARGET_MANGLE_TYPE): This.
4891         * target.h (gcc_target): Rename mangle_fundamental_type to
4892         mangle_type.
4893         * doc/tm.texi (TARGET_MANGLE_FUNDAMENTAL_TYPE): Rename section to...
4894         (TARGET_MANGLE_TYPE): This. Note slightly different semantics.
4895
4896 2007-07-25  Julian Brown  <julian@codesourcery.com>
4897             Paul Brook  <paul@codesourcery.com>
4898             Joseph Myers  <joseph@codesourcery.com>
4899             Mark Shinwell  <shinwell@codesourcery.com>
4900
4901         * Makefile.in (TEXI_GCC_FILES): Add arm-neon-intrinsics.texi.
4902         * config.gcc (arm*-*-*): Add arm_neon.h to extra headers.
4903         (with_fpu): Allow --with-fpu=neon.
4904         * config/arm/aof.h (ADDITIONAL_REGISTER_NAMES): Add Q0-Q15.
4905         * config/arm/aout.h (ADDITIONAL_REGISTER_NAMES): Add Q0-Q15.
4906         * config/arm/arm-modes.def (EI, OI, CI, XI): New modes.
4907         * config/arm/arm-protos.h (neon_immediate_valid_for_move)
4908         (neon_immediate_valid_for_logic, neon_output_logic_immediate)
4909         (neon_pairwise_reduce, neon_expand_vector_init, neon_reinterpret)
4910         (neon_emit_pair_result_insn, neon_disambiguate_copy)
4911         (neon_vector_mem_operand, neon_struct_mem_operand, output_move_quad)
4912         (output_move_neon): Add prototypes.
4913         * config/arm/arm.c (FL_NEON): New flag for NEON processor capability.
4914         (all_fpus): Add FPUTYPE_NEON.
4915         (fp_model_for_fpu): Add NEON field.
4916         (arm_return_in_memory): Return vectors <= 16 bytes in ARM registers.
4917         (arm_arg_partial_bytes): Allow NEON vectors to be passed partially
4918         in registers.
4919         (arm_legitimate_address_p): Don't support fancy addressing for NEON
4920         structure moves.
4921         (thumb2_legitimate_address_p): Likewise.
4922         (neon_valid_immediate): Recognize and prepare constants suitable for
4923         NEON instructions.
4924         (neon_immediate_valid_for_move): New function. Recognize and prepare
4925         immediates for NEON move instructions.
4926         (neon_immediate_valid_for_logic): New function. Recognize and
4927         prepare immediates for NEON logic instructions.
4928         (neon_output_logic_immediate): New function. Create asm string
4929         suitable for outputting immediate logic instructions.
4930         (neon_pairwise_reduce): New function. Implement reduction using
4931         pairwise operations.
4932         (neon_expand_vector_init): New function. Expand a (possibly
4933         non-constant) vector initialization.
4934         (neon_vector_mem_operand): New function. Memory operands supported
4935         for quad-word loads/stores to/from ARM or NEON registers. Don't
4936         allow base+offset addressing for core regs.
4937         (neon_struct_mem_operand): New function. Valid mems for NEON
4938         structure moves.
4939         (coproc_secondary_reload_class): Enable NEON registers to be loaded
4940         from neon_vector_mem_operand addresses without a secondary register.
4941         (add_minipool_forward_ref): Handle >8-byte minipool entries.
4942         (add_minipool_backward_ref): Likewise.
4943         (dump_minipool): Likewise.
4944         (push_minipool_fix): Likewise.
4945         (output_move_quad): New function. Output quad-word moves, loads and
4946         stores using ARM registers.
4947         (output_move_vfp): Add support for vectors in VFP (NEON) D
4948         registers.
4949         (output_move_neon): Output a NEON load/store to/from a quadword
4950         register.
4951         (arm_print_operand): Implement new codes:
4952         - 'c' for unadorned integers (without a # sign).
4953         - 'J', 'K' for reg+2/reg+3, reg+3/reg+2 in little/big-endian
4954         mode.
4955         - 'e', 'f' for the low and high D parts of a NEON Q register.
4956         - 'q' outputs a NEON Q register.
4957         - 'h' outputs ranges of D registers for VLDM/VSTM etc.
4958         - 'T' prints NEON opcode features from a coded bitmask.
4959         - 'F' is similar to T, but signed/unsigned codes both print as
4960         'i'.
4961         - 't' is similar to T, but 'u' is printed instead of 'p'.
4962         - 'O' prints 'r' if NEON instruction should perform rounding (as
4963         specified by bitmask), else prints nothing.
4964         - '#' is a punctuation character to stop operand numbers from
4965         running together with following digits in the assembler
4966         strings for instructions (when using mode attributes).
4967         (arm_assemble_integer): Handle extra NEON vector modes. Permute
4968         constant vectors in big-endian mode, where necessary.
4969         (arm_hard_regno_mode_ok): Allow vectors in VFP/NEON registers.
4970         Handle EI, OI, CI, XI modes.
4971         (ashlv4hi3, ashlv2si3, lshrv4hi3, lshrv2si3, ashrv4hi3)
4972         (ashrv2si3): Rename IWMMXT2_BUILTINs to...
4973         (ashlv4hi3_iwmmxt, ashlv2si3_iwmmxt, lshrv4hi3_iwmmxt)
4974         (lshrv2si3_iwmmxt, ashrv4hi3_iwmmxt, ashrv2si3_iwmmxt): New names.
4975         (neon_builtin_type_bits): Add enumeration, one bit for each vector
4976         type.
4977         (v8qi_UP, v4hi_UP, v2si_UP, v2sf_UP, di_UP, v16qi_UP, v8hi_UP)
4978         (v4si_UP, v4sf_UP, v2di_UP, ti_UP, ei_UP, oi_UP, UP): Define macros
4979         to turn v8qi, etc. into bits defined above.
4980         (neon_itype): New enumeration. Classifications of NEON builtins.
4981         (neon_builtin_datum): Define struct. Contains information about
4982         a single builtin (with multiple modes).
4983         (CF): Define helper macro for...
4984         (VAR1...VAR10): Define builtins with a type, name and 1-10 different
4985         modes.
4986         (neon_builtin_data): New array. Define information about builtins
4987         for use during initialization/expansion.
4988         (arm_init_neon_builtins): New function.
4989         (arm_init_builtins): Call arm_init_neon_builtins if TARGET_NEON is
4990         true.
4991         (neon_builtin_compare): New function.
4992         (locate_neon_builtin_icode): New function. Find an insn code for a
4993         builtin given a function code for that builtin. Also return type of
4994         builtin (NEON_BINOP, NEON_UNOP etc.).
4995         (builtin_arg): New enumeration. Types of arguments for builtins.
4996         (arm_expand_neon_args): New function. Expand a generic NEON builtin.
4997         Takes a variable argument list of builtin_arg types, terminated by
4998         NEON_ARG_STOP.
4999         (arm_expand_neon_builtin): New function. Expand a NEON builtin.
5000         (neon_reinterpret): New function. Expand NEON reinterpret intrinsic.
5001         (neon_emit_pair_result_insn): New function. Support returning pairs
5002         of vectors via a pointer.
5003         (neon_disambiguate_copy): New function. Set up operands for a
5004         multi-word copy such that registers do not get clobbered.
5005         (arm_expand_builtin): Call arm_expand_neon_builtin if fcode >=
5006         ARM_BUILTIN_NEON_BASE.
5007         (arm_file_start): Set float-abi attribute for NEON.
5008         (arm_vector_mode_supported_p): Enable NEON vector modes.
5009         (arm_mangle_map_entry): New.
5010         (arm_mangle_map): New.
5011         (arm_mangle_vector_type): New.
5012         * config/arm/arm.h (TARGET_CPU_CPP_BUILTINS): Define __ARM_NEON__
5013         when appropriate.
5014         (TARGET_NEON): New macro. Target supports NEON.
5015         (fputype): Add FPUTYPE_NEON.
5016         (UNITS_PER_SIMD_WORD): Define. Allow quad-word registers to be used
5017         for vectorization based on command-line arg.
5018         (NEON_REGNO_OK_FOR_NREGS): Define.
5019         (VALID_NEON_DREG_MODE, VALID_NEON_QREG_MODE)
5020         (VALID_NEON_STRUCT_MODE): Define.
5021         (PRINT_OPERAND_PUNCT_VALID_P): '#' is valid punctuation.
5022         (arm_builtins): Add ARM_BUILTIN_NEON_BASE.
5023         * config/arm/arm.md (VUNSPEC_POOL_16): Insert constant for unspec.
5024         (consttable_16): Add pattern for outputting 16-byte minipool
5025         entries.
5026         (movv2si, movv4hi, movv8qi): Remove blank expanders (redefined in
5027         vec-common.md).
5028         (vec-common.md, neon.md): Include md files.
5029         * config/arm/arm.opt (mvectorize-with-neon-quad): Add option.
5030         * config/arm/constraints.md (constraint "Dn", "Dl", "DL"): Define.
5031         (memory_constraint "Ut", "Un", "Us"): Define.
5032         * config/arm/iwmmxt.md (VMMX, VSHFT): New mode macros.
5033         (MMX_char): New mode attribute.
5034         (addv8qi3, addv4hi3, addv2si3): Remove. Replace with...
5035         (*add<mode>3_iwmmxt): New insn pattern.
5036         (subv8qi3, subv4hi3, subv2si3): Remove. Replace with...
5037         (*sub<mode>3_iwmmxt): New insn pattern.
5038         (mulv4hi3): Rename to...
5039         (*mulv4hi3_iwmmxt): This.
5040         (smaxv8qi3, smaxv4hi3, smaxv2si3, umaxv8qi3, umaxv4hi3)
5041         (umaxv2si3, sminv8qi3, sminv4hi3, sminv2si3, uminv8qi3)
5042         (uminv4hi3, uminv2si3): Remove. Replace with...
5043         (*smax<mode>3_iwmmxt, *umax<mode>3_iwmmxt, *smin<mode>3_iwmmxt)
5044         (*umin<mode>3_iwmmxt): These.
5045         (ashrv4hi3, ashrv2si3, ashrdi3_iwmmxt): Replace with...
5046         (ashr<mode>3_iwmmxt): This new pattern.
5047         (lshrv4hi3, lshrv2si3, lshrdi3_iwmmxt): Replace with...
5048         (lshr<mode>3_iwmmxt): This new pattern.
5049         (ashlv4hi3, ashlv2si3, ashldi3_iwmmxt): Replace with...
5050         (ashl<mode>3_iwmmxt): This new pattern.
5051         * config/arm/neon-docgen.ml: New file. Generate documentation for
5052         intrinsics.
5053         * config/arm/neon-gen.ml: New file. Generate arm_neon.h header.
5054         * config/arm/arm_neon.h: New (autogenerated).
5055         * config/arm/neon-testgen.ml: New file. Generate NEON tests
5056         automatically.
5057         * config/arm/neon.md: New file. Define NEON instructions.
5058         * config/arm/neon.ml: New file. Abstract description of NEON
5059         instructions, used to generate arm_neon.h header, documentation and
5060         tests.
5061         * config/arm/t-arm (MD_INCLUDES): Add vec-common.md, neon.md.
5062         * vec-common.md: New file. Shared parts for iWMMXt and NEON vector
5063         support.
5064         * doc/extend.texi (ARM Built-in Functions): Rename and remove
5065         extraneous comma.
5066         (ARM NEON Intrinsics): New subsection.
5067         * doc/arm-neon-intrinsics.texi: New (autogenerated).
5068
5069 2007-07-25  Danny Smith   <dannysmith@users.sourceforge.net>
5070
5071         * config/i386/i386-protos.h (i386_pe_asm_file_end): Remove
5072         prototype.
5073
5074 2007-07-24  Jan Hubicka  <jh@suse.cz>
5075
5076         * regclass.c (move_table): New type.
5077         (move_cost, may_move_in_cost, may_move_out_cost): Use it.
5078         (init_move_cost): Break out from ...
5079         (init_reg_sets_1): ... here; simplify computation of
5080         have_regs-of_mode and contains_reg_of_mode.
5081         (record_reg_classes): Unswitch internal loops.
5082         (copy_cost): Trigger lazy initialization of move cost
5083         (record_address_regs): Likewise.
5084
5085 2007-07-24  Daniel Berlin  <dberlin@dberlin.org>
5086
5087         * config/darwin.c (darwin_override_options): Don't force on
5088         flag_var_tracking_uninit when no debug info is requested.
5089
5090 2007-07-25  Zdenek Dvorak  <dvorakz@suse.cz>
5091
5092         * cfgloop.c (init_loops_structure): New function.
5093         (flow_loops_find): Create root of the loop tree unconditionally.
5094
5095 2007-07-24  Daniel Jacobowitz  <dan@codesourcery.com>
5096
5097         * tree-ssa-ccp.c (fold_const_aggregate_ref): Use fold_convert.
5098
5099 2007-07-24  Jan Hubicka  <jh@suse.cz>
5100
5101         * caller-save.c: Include ggc.h, gt-caller-save.h
5102         (reg_save_code, reg_restore_code): Rename to ...
5103         (cached_reg_save_code, cached_reg_restore_code): ... those.
5104         (savepat, restpat, test_reg, test_mem, saveinsn, restinsn): New.
5105         (reg_save_code, reg_restore_code): New functions.
5106         (init_caller_save): Do not intialize
5107         reg_save_code/reg_restore_code tables.
5108         * Makefile.in: (gt-caller-save.h): New.
5109
5110 2007-07-24  Andreas Krebbel  <krebbel1@de.ibm.com>
5111
5112         * tree-ssa-ifcombine.c (ifcombine_ifandif): Use a ONE operand
5113         with the mode of the original operand instead of
5114         integer_one_node.
5115
5116 2007-07-23  Jan Hubicka  <jH@suse.cz>
5117
5118         * i386.c (ix86_secondary_memory_needed): Break out to...
5119         (inline_secondary_memory_needed): ... here.
5120         (ix86_memory_move_cost): Break out to ...
5121         (inline_memory_move_cost): ... here; add support for IN value of 2 for
5122         maximum of input and output; fix handling of Q_REGS on 64bit.
5123         (ix86_secondary_memory_needed): Microoptimize.
5124
5125 2007-07-23  Sebastian Pop  <sebpop@gmail.com>
5126
5127         * tree-data-ref.c (find_vertex_for_stmt, create_rdg_edge_for_ddr,
5128         create_rdg_edges_for_scalar, create_rdg_edges, create_rdg_vertices,
5129         stmts_from_loop, known_dependences_p, build_rdg): New.
5130         * tree-data-ref.h: Depends on graphds.h.
5131         (rdg_vertex, RDGV_STMT, rdg_dep_type, rdg_edge, RDGE_TYPE): New.
5132         (build_rdg): Declared.
5133         * Makefile.in (TREE_DATA_REF_H): Depends on graphds.h.
5134
5135 2007-07-23  Daniel Berlin  <dberlin@dberlin.org>
5136
5137         * tree-ssa-propagate.c (valid_gimple_expression_p): Match up with
5138         ccp_min_invariant.
5139
5140 2007-07-23  Peter Bergner  <bergner@vnet.ibm.com>
5141             Jakub Jelinek  <jakub@redhat.com>
5142
5143         PR middle-end/PR28690
5144         * optabs.c (expand_binop): (emit_cmp_and_jump_insns): Allow
5145         EQ compares.
5146         * rtlanal.c (commutative_operand_precedence): Prefer both REG_POINTER
5147         and MEM_POINTER operands over REG and MEM operands.
5148         (swap_commutative_operands_p): Change return value to bool.
5149         * rtl.h: Update the corresponding prototype.
5150         * tree-ssa-address.c (gen_addr_rtx): Use simplify_gen_binary
5151         instead of gen_rtx_PLUS.
5152         * simplify-rtx.c (simplify_plus_minus_op_data_cmp): Change return
5153         value to bool.  Change function arguments to rtx's and update code
5154         to match.
5155         (simplify_plus_minus): Update the simplify_plus_minus_op_data_cmp
5156         calls to match the new declaration.
5157         * simplify-rtx.c (simplify_associative_operation): Don't
5158         reorder simplify_binary_operation arguments.
5159
5160 2007-07-23  Richard Sandiford  <richard@codesourcery.com>
5161
5162         * config/mips/mips.c (override_options): Use mips_costs to derive
5163         the default branch cost.
5164         * config/mips/mips.h (BRANCH_COST): Use mips_branch_cost rather
5165         than mips_costs.
5166         * config/mips/mips.opt (mbranch-cost=): New option.
5167         * doc/invoke.texi (-mbranch-cost): Document new MIPS option.
5168
5169 2007-07-23  Richard Sandiford  <richard@codesourcery.com>
5170
5171         * config/mips/mips.h (GR_REG_CLASS_P, COP_REG_CLASS_P): Delete.
5172         (SECONDARY_MEMORY_NEEDED): Delete commented-out definition.
5173         * config/mips/mips.c (mips_register_move_cost): Use reg_class_subset_p
5174         instead of GR_REG_CLASS_P and COP_REG_CLASS_P.
5175
5176 2007-07-23  Richard Sandiford  <richard@codesourcery.com>
5177
5178         * config/mips/constraints.md (ks): New constraint.
5179         * config/mips/mips.md (*add<mode>3_sp1, *add<mode>3_sp2): Fold into...
5180         (*add<mode>3_mips16): ...here.
5181
5182 2007-07-21  Uros Bizjak  <ubizjak@gmail.com>
5183
5184         * optabs.h (enum optab_index): Add new OTI_signbit.
5185         (signbit_optab): Define corresponding macro.
5186         (enum insn_code signbit_optab[]): Remove array.
5187         * optabs.c (init_optabs): Initialize signbit_optab using init_optab.
5188         (expand_copysign_absneg): If back end provides signbit insn, use it
5189         instead of bit operations on floating point argument.
5190         * builtins.c (enum insn_code signbit_optab[]): Remove array.
5191         (expand_builtin_signbit): Check signbit_optab->handlers[].insn_code
5192         for availability of signbit insn.
5193
5194         * config/i386/i386.md (signbit<mode>2): New insn pattern to implement
5195         signbitf, signbit and signbitl built-ins as inline x87 intrinsics when
5196         SSE mode is not active.
5197         (isinf<mode>2): Disable for mfpmath=sse,387.
5198
5199 2007-07-22  Ben Elliston  <bje@au.ibm.com>
5200
5201         * regclass.c (invalid_mode_change_p): Attach ATTRIBUTE_UNUSED to
5202         `class' parameter.
5203         * struct-equiv.c (note_local_live): Likewise for `y_regno'.
5204
5205 2007-07-20  Richard Guenther  <rguenther@suse.de>
5206
5207         * tree-cfg.c (verify_expr): COND_EXPRs can have any
5208         integral typed condition.
5209         * tree-ssa.c (useless_type_conversion_p): Do not preserve
5210         booleanness.  Only preserve conversions from a non-base
5211         type to a base type, not in general between types with
5212         different TYPE_MIN_VALUE or TYPE_MAX_VALUE.
5213         * tree.def (COND_EXPR): Document that the condition
5214         can be of any integral type.
5215
5216 2007-07-20  Nigel Stephens  <nigel@mips.com>
5217             Richard Sandiford  <richard@codesourcery.com>
5218
5219         * config/mips/mips.h (mips_dwarf_regno): Declare.
5220         (DBX_REGISTER_NUMBER): Remove redundant brackets.
5221         (HI_REGNUM, LO_REGNUM): Define in an endian-dependent way.
5222         (AC1HI_REGNUM, AC1LO_REGNUM, AC2HI_REGNUM, AC2LO_REGNUM)
5223         (AC3HI_REGNUM, AC3LO_REGNUM, ACC_HI_REG_P): Delete.
5224         (reg_class): Rename HI_REG to MD0_REG and LO_REG to MD1_REG.
5225         (REG_CLASS_NAMES): Update accordingly.
5226         * config/mips/mips.c (mips_dwarf_regno): New array.
5227         (mips_regno_to_class): Rename HI_REG to MD0_REG and LO_REG to MD1_REG.
5228         (mips_subword): Remove special handling for accumulator registers.
5229         (override_options): Initiailize mips_dwarf_regno.  Remove use
5230         of ACC_HI_REG_P.
5231         (mips_swap_registers): New function.
5232         (mips_conditional_register_usage): Swap accumulator registers
5233         around if TARGET_LITTLE_ENDIAN.
5234         (mips_cannot_change_mode_class): Remove special treatment of ACC_REGS.
5235         * config/mips/constraints.md (h, l): Use the endianness to choose
5236         between MD0_REG and MD1_REG.
5237         * config/mips/mips.md (*mfhilo_<mode>_macc): Use a fixed-string,
5238         alternative-dependent template.
5239
5240 2007-07-20  Richard Sandiford  <richard@codesourcery.com>
5241
5242         * config/arm/arm.md (movsi): Use can_create_pseudo_p instead of
5243         no_new_pseudos.
5244
5245 2007-07-20  Zdenek Dvorak  <dvorakz@suse.cz>
5246
5247         * function.c (thread_prologue_and_epilogue_insns): Fix exit
5248         predecessor fallthru flags.
5249
5250 2007-07-20  Zdenek Dvorak  <dvorakz@suse.cz>
5251
5252         * tree-ssa-loop-niter.c (assert_loop_rolls_lt): Convert the operands
5253         of compare to the same type.
5254         * cfgloopmanip.c (add_loop): Update information about loop exits.
5255         (loop_version): Remove the innermost loop requirement.
5256         * tree-ssa-loop-manip.c (determine_exit_conditions): Convert bounds
5257         to sizetype for pointers.
5258
5259 2007-07-18  H.J. Lu  <hongjiu.lu@intel.com>
5260
5261         * Makefile.in (D32PBIT_FUNCS): Add _sd_to_tf and _tf_to_sd.
5262         (D64PBIT_FUNCS): Add _dd_to_tf and _tf_to_dd.
5263         (D128PBIT_FUNCS): Add _td_to_tf and _tf_to_td.
5264
5265         * config/dfp-bit.c: Empty for TFmode conversions.
5266
5267 2007-07-18  Caroline Tice  <ctice@apple.com>
5268         
5269         * var-tracking.c (find_src_status):  Check for  COND_EXEC insns
5270         and handle them correctly; check that src is not NULL before
5271         trying to use it.
5272         (find_src_set_src): Likewise.
5273         
5274 2007-07-18  Bob Wilson  <bob.wilson@acm.org>
5275         
5276         * config/xtensa/xtensa.c (xtensa_expand_mask_and_shift): New.
5277         (struct alignment_context, init_alignment_context): New.
5278         (xtensa_expand_compare_and_swap, xtensa_expand_atomic): New.
5279         * config/xtensa/xtensa.h (XCHAL_HAVE_RELEASE_SYNC): Add default.
5280         (XCHAL_HAVE_S32C1I): Likewise.
5281         (TARGET_RELEASE_SYNC, TARGET_S32C1I): New.
5282         * config/xtensa/xtensa.md (UNSPECV_MEMW): New constant.
5283         (UNSPECV_S32RI, UNSPECV_S32C1I): Likewise.
5284         (ATOMIC, HQI): New macros.
5285         (memory_barrier, *memory_barrier): New.
5286         (sync_lock_releasesi): New.
5287         (sync_compare_and_swapsi, sync_compare_and_swap<mode>): New.
5288         (sync_lock_test_and_set<mode>): New.
5289         (sync_<atomic><mode>): New.
5290         (sync_old_<atomic><mode>, sync_new_<atomic><mode>): New.
5291         * config/xtensa/xtensa-protos.h (xtensa_expand_compare_and_swap): New.
5292         (xtensa_expand_atomic): New.
5293         
5294 2007-07-18  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
5295
5296         PR target/30652
5297
5298         * builtins.c (expand_builtin_interclass_mathfn): Provide a generic
5299         transformation for builtin ISNORMAL.
5300         (expand_builtin): Handle BUILT_IN_ISNORMAL.
5301         * builtins.def (BUILT_IN_ISNORMAL): New.
5302         * doc/extend.texi: Document isnormal.
5303
5304 2007-07-18  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
5305
5306         PR target/30652
5307
5308         * builtins.c (expand_builtin_interclass_mathfn): Allow for missing
5309         optabs infrastructure.  Provide generic implementation for
5310         FINITE/ISFINITE.
5311         (expand_builtin): Handle FINITE/ISFINITE.
5312         (fold_builtin_classify): Make ISFINITE canonical instead of FINITE.
5313         (fold_builtin_1): Likewise.
5314
5315         * builtins.def (BUILT_IN_ISFINITE): New.
5316
5317         * doc/extend.texi: Document isfinite.
5318
5319 2007-07-18  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
5320
5321         PR target/30652
5322         PR middle-end/20558
5323
5324         * builtins.c (expand_builtin_interclass_mathfn): Provide a
5325         generic fallback for isinf.
5326         * c-cppbuiltin.c (builtin_define_float_constants): Move FP max
5327         calculation code ...
5328         * real.c (get_max_float): ... to here.
5329         * real.h (get_max_float): New.
5330
5331 2007-07-18  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
5332
5333         PR middle-end/32668
5334
5335         * builtin-attrs.def (ATTR_TYPEGENERIC,
5336         ATTR_CONST_NOTHROW_TYPEGENERIC): New.
5337
5338         * builtins.def (BUILT_IN_ISINF, BUILT_IN_ISNAN,
5339         BUILT_IN_ISGREATER, BUILT_IN_ISGREATEREQUAL, BUILT_IN_ISLESS,
5340         BUILT_IN_ISLESSEQUAL, BUILT_IN_ISLESSGREATER,
5341         BUILT_IN_ISUNORDERED): Use ATTR_CONST_NOTHROW_TYPEGENERIC.
5342
5343         * c-common.c (handle_type_generic_attribute): New.
5344         (c_common_attribute_table): Add "type generic".
5345
5346         * c-typeck.c (convert_arguments): Handle "type generic" functions.
5347
5348 2007-07-18  Daniel Berlin  <dberlin@dberlin.org>
5349
5350         * tree-ssa-sccvn.c (try_to_simplify): Use valid_gimple_expression
5351         * tree-ssa-propagate (valid_gimple_expression): Handle ADDR_EXPR
5352         properly.
5353
5354 2007-07-18  Rask Ingemann Lambertsen  <rask@sygehus.dk>
5355
5356         PR target/32808
5357         * config/cris/cris.c (cris_print_index): Don't use XEXP before
5358         checking that the operand is an expression.
5359
5360 2007-07-19  Christoph von Wittich  <Christoph_vW@reactos.org>
5361             Danny Smith  <dannysmith@users.sourceforge.net>
5362
5363         PR/other 30335
5364         * config/i386/host-mingw32.c (mingw32_gt_pch_use_address): Put
5365         file mapping object in local namespace if Windows version later
5366         than NT4
5367
5368 2007-07-18  Richard Sandiford  <richard@codesourcery.com>
5369
5370         * config/arm/arm-protos.h (arm_cannot_force_const_mem): Declare.
5371         * config/arm/arm.c (TARGET_CANNOT_FORCE_CONST_MEM): Redefine to
5372         arm_cannot_force_const_mem.
5373         (arm_cannot_force_const_mem): New function.
5374         * config/arm/arm.h (ARM_OFFSETS_MUST_BE_WITHIN_SECTIONS_P): New macro.
5375         (LEGITIMATE_CONSTANT_P): Test arm_cannot_force_const_mem instead
5376         of arm_tls_referenced_p.
5377         * config/arm/arm.md (movsi): Split out-of-section constants when
5378         ARM_OFFSETS_MUST_BE_WITHIN_SECTIONS_P.
5379         * config/arm/vxworks.h (ARM_OFFSETS_MUST_BE_WITHIN_SECTIONS_P): Define.
5380
5381 2007-07-18  Richard Sandiford  <richard@codesourcery.com>
5382
5383         * config/mips/mips.md (clear_cache): Treat the size argument as Pmode.
5384
5385 2007-07-18  Richard Sandiford  <richard@codesourcery.com>
5386
5387         * config/mips/mips.md (*extendqihi2): Convert the destination
5388         to SImode.
5389
5390 2007-07-17  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
5391
5392         * config/pa/fptr.c: Update license header.
5393         * config/pa/milli64.S: Likewise.
5394
5395 2007-07-17  Nick Clifton  <nickc@redhat.com>
5396
5397         * COPYING_v3: New file.  Contains version 3 of the GNU General
5398         Public License.
5399         * COPYING.LIB_v3: New file.  Contains version 3 of the GNU
5400         Lesser General Public License.
5401         * doc/include/gpl_v3.texi: New file.  Contains version 3 of
5402         the GNU General Public License.
5403
5404 2007-07-17  Zdenek Dvorak  <dvorakz@suse.cz>
5405
5406         PR rtl-optimization/32773
5407         * cfglayout.c (force_one_exit_fallthru): New function.
5408         (cfg_layout_finalize): Use it.
5409
5410 2007-07-16  Richard Guenther  <rguenther@suse.de>
5411             Uros Bizjak  <ubizjak@gmail.com>
5412
5413         * tree-if-conv.c (find_phi_replacement_condition): Unshare "*cond"
5414         before forcing it to gimple operand.
5415
5416 2007-07-16  Sandra Loosemore  <sandra@codesourcery.com>
5417             David Ung  <davidu@mips.com>
5418
5419         * config/mips/mips.h (TUNE_24K): Define.
5420         (TUNE_MACC_CHAINS): Add TUNE_24K.
5421         * config/mips/mips.md: (*mul_acc_si, *mul_sub_si): Change type to
5422         imadd.
5423         * config/mips/74k.md (r74k_int_mult): Split madd/msub to ..
5424         (r74k_int_madd): .. this new reservation.
5425         (define_bypass): Fixed bypasses for r74k_int_madd to use
5426         mips_linked_madd_p.
5427         * config/mips/24k.md (define_bypass): Define new
5428         r24k_int_mul3->r24k_int_madd bypass using mips_linked_madd_p.
5429
5430 2007-07-16  Sandra Loosemore  <sandra@codesourcery.com>
5431             Nigel Stephens  <nigel@mips.com>
5432
5433         * config/mips/mips.md:  Include 20kc.md.
5434         * config/mips/20kc.md: New file.
5435         * config/mips/mips.c (mips_rtx_cost_data): Fill in 20Kc costs.
5436         (mips_adjust_cost): Tweak for 20Kc.
5437         (mips_issue_rate): Likewise.
5438         * config/mips/mips.h (TUNE_20KC): Define.
5439
5440 2007-07-16  David Edelsohn  <edelsohn@gnu.og>
5441
5442         * config/rs6000/rs6000.c (struct processor_cost): Add
5443         cache_line_size, l1_cache_lines, and simultaneous_prefetches
5444         fields.
5445         (*_cost): Add cache information.
5446         (rs6000_override_options): Set cache parameters.
5447
5448 2007-07-16  Rainer Orth  <ro@TechFak.Uni-Bielefeld.DE>
5449
5450         PR bootstrap/3456
5451         * config.gcc (mips-sgi-irix[56]*): Enable pthread support.
5452         * doc/install.texi (mips-sgi-irix6): pthread support works now.
5453
5454 2007-07-16  Paul Brook  <paul@codesourcery.com>
5455
5456         PR target/32753
5457         * config/arm/cirrus.md (cirrus_arm_movsi_insn): Remove dead insn.
5458         (cirrus_thumb2_movsi_insn): Ditto.
5459
5460 2007-07-15  Geoffrey Keating  <geoffk@apple.com>
5461
5462         * config/rs6000/darwin-fallback.c (interpret_libc): Change
5463         CR2_REGNO to R_CR2.
5464
5465 2007-07-15  Andrew Haley  <aph@redhat.com>
5466
5467         * unwind-sjlj.c (_Unwind_GetIPInfo): Check for context->fc != NULL
5468         before looking in the context.
5469
5470 2007-07-15  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
5471
5472         PR middle-end/32398
5473         PR middle-end/32769
5474         * pa-protos.h (pa_eh_return_handler_rtx): Declare.
5475         * pa.c (pa_extra_live_on_entry, rp_saved): Declare.
5476         (TARGET_EXTRA_LIVE_ON_ENTRY): Define.
5477         (pa_output_function_prologue): Use rp_saved and
5478         current_function_is_leaf to generate .CALLINFO statement.
5479         (hppa_expand_prologue): Set rp_saved.
5480         (hppa_expand_epilogue): Use rp_saved.
5481         (pa_extra_live_on_entry, pa_eh_return_handler_rtx): New functions.
5482         * pa.h (EH_RETURN_HANDLER_RTX): Use pa_eh_return_handler_rtx.
5483
5484 2007-07-14  Dirk Mueller  <dmueller@suse.de>
5485
5486         * omega.c (coalesce): Fix memory leak on early exit.
5487         * matrix-reorg.c (check_allocation_function): Likewise.
5488         * tree-vect-transform.c (vect_get_new_vect_var): free result
5489         of concat().
5490         * bb-reorder.c (find_rarely_executed_basic_blocks_and_crossing_edges):
5491         pass pointer to edge vector
5492         (partition_hot_cold_basic_blocks): Fix memory leak.
5493         * collect2.c (prefix_from_string): Free temporary storage.
5494         * reload1.c (fixup_abnormal_edges): Free sbitmap.
5495
5496 2007-07-14  Kaz Kojima  <kkojima@gcc.gnu.org>
5497
5498         * config/sh/sh.h (DO_GLOBAL_CTORS_BODY): Add void to prototype.
5499         (DO_GLOBAL_DTORS_BODY): Likewise.
5500
5501 2007-07-14  Sandra Loosemore  <sandra@codesourcery.com>
5502             Nigel Stephens  <nigel@mips.com>
5503
5504         * config/mips/mips.c (mips_classify_symbol): Don't return
5505         SYMBOL_SMALL_DATA for constant pool addresses if
5506         TARGET_EMBEDDED_DATA is true.
5507
5508 2007-07-14  Uros Bizjak  <ubizjak@gmail.com>
5509
5510         * config/i386/i386.c (init_mmx_sse_builtins): Define all builtins
5511         except __builtin_ia32_emms, __builtin_ia32_ldmxcsr,
5512         __builtin_ia32_stmxcsr, __builtin_ia32_maskmovq, __builtin_ia32_loadups,
5513         __builtin_ia32_storeups, __builtin_ia32_loadhps, __builtin_ia32_loadlps,
5514         __builtin_ia32_storehps, __builtin_ia32_storelps,
5515         __builtin_ia32_movntps, __builtin_ia32_movntq, __builtin_ia32_sfence,
5516         __builtin_ia32_femms, __builtin_ia32_maskmovdqu, __builtin_ia32_loadupd,
5517         __builtin_ia32_storeupd, __builtin_ia32_loadhpd, __builtin_ia32_loadlpd,
5518         __builtin_ia32_movnti, __builtin_ia32_movntpd, __builtin_ia32_movntdq,
5519         __builtin_ia32_clflush, __builtin_ia32_lfence, __builtin_ia32_mfence,
5520         __builtin_ia32_loaddqu, __builtin_ia32_storedqu, __builtin_ia32_monitor,
5521         __builtin_ia32_mwait, __builtin_ia32_lddqu, __builtin_ia32_movntdqa,
5522         __builtin_ia32_movntsd and __builtin_ia32_movntss as const builtins
5523         using def_builtin_const.
5524
5525 2007-07-14  Eric Botcazou  <ebotcazou@adacore.com>
5526
5527         PR tree-optimization/32705
5528         * tree-ssa-sccvn.c (set_ssa_val_to): Accept VN_TOP as value number.
5529         (simplify_binary_expression): Use SSA_VAL consistently.
5530
5531 2007-07-13  David Edelsohn  <edelsohn@gnu.org>
5532
5533         * config/rs6000/spe.md (SPE_ACC_REGNO): Delete definition.
5534         (SPEFSCR_REGNO): Delete definition.
5535         * config/rs6000/rs6000.c: LINK_REGISTER_REGNUM -> LR_REGNO.
5536         COUNT_REGISTER_REGNUM -> CTR_REGNO.
5537         * config/rs6000/rs6000.h: Do not define *_REGNO.
5538         LINK_REGISTER_REGNUM -> LR_REGNO.
5539         COUNT_REGISTER_REGNUM -> CTR_REGNO.
5540         * config/rs6000/predicates.md: LINK_REGISTER_REGNUM ->  LR_REGNO.
5541         COUNT_REGISTER_REGNUM -> CTR_REGNO.
5542         * config/rs6000/linux-unwind.h: Define R_LR, R_CR2, R_VR0,
5543         R_VRSAVE, R_VSCR. Use them.
5544         * config/rs6000/darwin-fallback.c: Define R_LR, R_CTR, R_CR2,
5545         R_XER, R_VR0, R_VRSAVE, R_VSCR, R_SPEFSCR.  Use them.
5546         * config/rs6000/rs6000.md: Define REGNO constants.  Use them.
5547         * config/rs6000/aix.h: Define R_LR.  Use it.
5548         
5549 2007-07-13  Caroline Tice  <ctice@apple.com>
5550         
5551         * toplev.c (process_options): Turn flag_var_tracking_uninit off when
5552         flag_var_tracking is explicitly turned off (i.e. when variable
5553         tracking is not feasible); otherwise, turn flag_var_tracking on when
5554         flag_var_tracking_uninit is on.
5555         * rtl.def (VAR_LOCATION): Add a new integer subfield to VAR_LOCATION
5556         note definitions, to allow recording of initialization status in the
5557         notes.
5558         * dwarf2out.c (dwarf_stack_op_name): Add case for DW_OP_GNU_uninit.
5559         (add_var_loc_to_decl): Add comparison of NOTE_VAR_LOCATION_STATUS to
5560         determine if two note locations are equal.
5561         (output_loc_list): Don't output list entries whose start & end labels
5562         are the same.
5563         (reg_loc_descriptor): Add parameter for initialization status; pass it
5564         to other loc descriptor functions.
5565         (one_reg_loc_descriptor): Add parameter for initialization status;
5566         check its value and add DW_OP_GNU_uninit to returned loc descr if
5567         appropriate.
5568         (multiple_reg_loc_descriptor): Add parameter for initialization
5569         status;
5570         pass init status argument to other loc descriptor functions; check
5571         value of intialization parameter and add DW_OP_GNU_uninit to returned
5572         loc descr if appropriate.
5573         (based_loc_descr): Add parameter for initialization status; add new
5574         variable for return value; check value of initialization parameter and
5575         add DW_OP_GNU_uninit to returned loc descr if appropriate.
5576         (concatn_mem_loc_descriptor): Add parameter for initialization status;
5577         pass init status argument to other loc descriptor functions; check
5578         value of intialization parameter and add DW_OP_GNU_uninit to returned
5579         loc descr if appropriate.
5580         (mem_loc_descriptor): Likewise.
5581         (concat_loc_descriptor): Likewise.
5582         (concatn_loc_descriptor): Likewise.
5583         (loc_descriptor): Add parameter for initialization status; pass it as
5584         argument to other loc descriptor function calls.
5585         (loc_descriptor_from_tree_1): Add appropriate initialization status
5586         to loc descriptor function calls.
5587         (add_location_or_const_value_attribute): Get initialization status
5588         from VAR_LOCATION note; add initialization status to loc descriptor
5589         function calls.
5590         * dwarf2.h (enum dwarf_location_atom): New op, DW_OP_GNU_uninit.
5591         * print-rtl.c (print_rtx): When printing a VAR_LOCATION note, if
5592         status is uninitialized, add "[uninint]" to output.
5593         * common.opt (fvar-tracking-uninit): New option, similar to
5594         fvar-tracking, to turn on tracking of uninitialized variables; creates
5595         a new global flag, flag_var_tracking_uninit.
5596         * rtl.h (NOTE_VAR_LOCATION_STATUS): New macro for accessing new field.
5597         (enum var_init_status): New type, for var initialization status field.
5598         * var-tracking.c (struct location_chain_def): Two new fields, init,
5599         for initialization status, and set_src for the assignment value expr.
5600         (unshare_variable): New parameter for initialization status;
5601         initialize new init and set_src fields.
5602         (var_reg_set): New parameters for initialization status and value;
5603         pass them to set_variable_part.
5604         (var_mem_set): Likewise.
5605         (get_init_value): New function.
5606         (var_reg_delete_and_set): New initialization status & value
5607         parameters; add call to get_init_value if status is unknown; pass new
5608         parameters to clobber_variable_part and var_reg_set.
5609         (var_mem_delete_and_set): Likewise.
5610         (var_reg_delete): Pass null set_src value to clobber_variable_part.
5611         (var_mem_delete): Likewise.
5612         (variable_union): Pass status to unshare_variable; initialize new init
5613         and set_src fields. If flag_var_tracking_uninit is not set, force
5614         status to initialized.
5615         (add_stores): Store insn, rather than NEXT_INSN(insn), so it can be
5616         used later to get the set_src value.
5617         (find_src_status): New function.
5618         (find_src_set_src): New function.
5619         (compute_bb_dataflow): Pass init status to calls to var_reg_set,
5620         var_mem_set, var_reg_delete_and_set and var_mem_delete_and_set; for
5621         MO_SET, get set_src value and pass it to var_reg_delete_and_set
5622         and var_mem_delete_and_set.
5623         (dump_variable): Print out "[uninit]" if appropriate.
5624         (set_variable_part): Add new initialization and set_src parameters;
5625         pass status to unshare_variable; set node->init and node- >set_src
5626         fields and modify slot in hash table appropriately; save the init and
5627         set_src values if appropriate and assign to the new node.
5628         (clobber_variable_part): New set_src parameter; if two nodes have
5629         same variable and same location but different set_src (assignment)
5630         values, clobber old node.
5631         (delete_variable_part): Pass init status to unshare_variable.
5632         (emit_note_insn_var_location): Add initialized var; assign var's init
5633         status to new 'initialized'; pass new init status field to calls to
5634         gen_rtx_VAR_LOCATION. If flag_var_tracking_uninit is not set, force
5635         status to initialized.
5636         (emit_notes_in_bb): Pass initialization status to calls to
5637         var_reg_set, var_mem_set, var_reg_delete_and_set and
5638         var_mem_delete_and_set; for MO_SET, get set_src value and pass it to
5639         var_reg_delete_and_set and var_mem_delete_and_set; call
5640         emit_notes_for_changes on NEXT_INSN(insn) rather than on insn, to
5641         make up for change in add_stores.
5642         (vt_add_function_parameters): Add status to calls to
5643         set_variable_part.
5644         * config/darwin.c (darwin_override_options): Turn on uninitialized
5645         tracking automatically, if var_tracking is on and the system is
5646         10.5 or higher.
5647         
5648 2007-07-13  Sa Liu  <saliu@de.ibm.com>
5649
5650         * config.gcc: Add options for arch and tune on SPU.
5651         * config/spu/predicates.md: Add constant operands 0 and 1.
5652         * config/spu/spu-builtins.def: Add builtins for double precision 
5653         floating point comparison: si_dfceq, si_dfcmeq, si_dfcgt, si_dfcmgt, 
5654         si_dftsv, spu_cmpeq_13, spu_cmpabseq_1, spu_cmpgt_13, spu_cmpabsgt_1,
5655         spu_testsv.
5656         * config/spu/spu-c.c: Define __SPU_EDP__ when builtins invoked with 
5657         a CELLEDP target.
5658         * config/spu/spu-protos.h: Add new function prototypes. 
5659         * config/spu/spu.c (spu_override_options): Check options -march and
5660         -mtune.
5661         (spu_comp_icode): Add comparison code for DFmode and vector mode.
5662         (spu_emit_branch_or_set): Use the new code for DFmode and vector 
5663         mode comparison.
5664         (spu_const_from_int): New.  Create a vector constant from 4 ints.
5665         (get_vec_cmp_insn): New.  Get insn index of vector compare instruction.
5666         (spu_emit_vector_compare): New.  Emit vector compare.
5667         (spu_emit_vector_cond_expr): New.  Emit vector conditional expression.
5668         * config/spu/spu.h: Add options -march and -mtune.  Define processor
5669         types PROCESSOR_CELL and PROCESSOR_CELLEDP.  Define macro
5670         CANONICALIZE_COMPARISON.
5671         * config/spu/spu.md: Add new insns for double precision compare
5672         and double precision vector compare.  Add vcond and smax/smin patterns
5673         to enable DFmode vector conditional expression.
5674         * config/spu/spu.opt: Add options -march and -mtune.
5675         * config/spu/spu_internals.h: Add builtins for CELLEDP target:
5676         si_dfceq, si_dfcmeq, si_dfcgt, si_dfcmgt, si_dftsv.  Add builtin for
5677         both CELL and CELLEDP targets: spu_testsv.
5678         * config/spu/spu_intrinsics.h: Add flag mnemonics for test special 
5679         values.
5680
5681 2007-07-13  Richard Guenther  <rguenther@suse.de>
5682
5683         PR tree-optimization/32721
5684         * tree-ssa-ccp.c (maybe_fold_stmt_indirect): Preserve
5685         TREE_THIS_VOLATILE on the folded reference.
5686         * tree-ssa-operands.c (get_expr_operands): Set has_volatile_ops
5687         if the array reference has TREE_THIS_VOLATILE set.
5688
5689 2007-07-13  H.J. Lu  <hongjiu.lu@intel.com>
5690
5691         PR other/32188
5692         * doc/libgcc.texi: Update DFP intrinsics for DPD and BID.
5693
5694 2007-07-13  Andreas Schwab  <schwab@suse.de>
5695
5696         * gengtype-lex.l: Allow declarations to be indented.
5697
5698 2007-07-12  Geoffrey Keating  <geoffk@apple.com>
5699
5700         * ginclude/tgmath.h: New.
5701         * config.gcc: Use GCC's tgmath.h on non-glibc systems.
5702         * doc/sourcebuild.texi (Headers): Document use_gcc_tgmath.
5703         * configure.ac (STMP_FIXPROTO): Honor use_gcc_tgmath.
5704         * configure: Regenerate.
5705
5706 2007-07-13  Kaz Kojima  <kkojima@gcc.gnu.org>
5707
5708         * config/sh/linux-unwind.h (sh_fallback_frame_state): Use
5709         correct index when setting register save state for xd
5710         registers.
5711
5712 2007-07-13  Kaz Kojima  <kkojima@gcc.gnu.org>
5713
5714         * config/sh/sh.c (mark_use): Remove.
5715
5716 2007-07-12  Paul Brook  <paul@codesourcery.com>
5717
5718         * config/arm/arm.c (thumb1_compute_save_reg_mask): Make sure scratch
5719         reg does not overlap return value.
5720
5721 2007-07-12  Daniel Berlin  <dberlin@dberlin.org>
5722
5723         * tree-ssa-pre.c (get_expression_vuses): Move out side-effect.
5724         (set_expression_vuses): Ditto.
5725         (init_pre): Initialize expression_vuses.
5726
5727 2007-07-12  Zdenek Dvorak  <dvorakz@suse.cz>
5728
5729         * config/i386/sse.md (storentdf, storentsf): New.
5730
5731 2007-07-12  Geoffrey Keating  <geoffk@apple.com>
5732
5733         * builtins.c (get_pointer_alignment): Honor DECL_ALIGN on a
5734         FUNCTION_DECL.
5735         * tree.c (build_decl_stat): Move code from here...
5736         (make_node_stat): ... to here.  Don't uselessly clear DECL_USER_ALIGN.
5737         (expr_align): Honor DECL_ALIGN on a FUNCTION_DECL.  Add comment
5738         about using DECL_ALIGN of LABEL_DECL and CONST_DECL.
5739         * tree.h (DECL_USER_ALIGN): Fix misplaced comment.
5740         * varasm.c (assemble_start_function): Use DECL_ALIGN instead of
5741         FUNCTION_BOUNDARY.
5742
5743 2007-07-12  Dorit Nuzman  <dorit@il.ibm.com>
5744             Devang Patel  <dpatel@apple.com>
5745
5746         PR tree-optimization/25413
5747         * targhooks.c (default_builtin_vector_alignment_reachable): New.
5748         * targhooks.h (default_builtin_vector_alignment_reachable): New.
5749         * tree.h (contains_packed_reference): New.
5750         * expr.c (contains_packed_reference): New.
5751         * tree-vect-analyze.c (vector_alignment_reachable_p): New.
5752         (vect_enhance_data_refs_alignment): Call
5753         vector_alignment_reachable_p.
5754         * target.h (vector_alignment_reachable): New builtin.
5755         * target-def.h (TARGET_VECTOR_ALIGNMENT_REACHABLE): New.
5756         * config/rs6000/rs6000.c (rs6000_vector_alignment_reachable): New.
5757         (TARGET_VECTOR_ALIGNMENT_REACHABLE): Define.
5758
5759 2007-07-12  Dorit Nuzman  <dorit@il.ibm.com>
5760
5761         * target.h (builtin_vectorization_cost): Add new target builtin.
5762         * target-def.h (TARGET_VECTORIZE_BUILTIN_VECTORIZATION_COST): New.
5763         * tree-vectorizer.h (TARG_SCALAR_STMT_COST): New.
5764         (TARG_SCALAR_LOAD_COST, TARG_SCALAR_STORE_COST): New.
5765         * tree-vect-analyze.c (vect_analyze_slp_instance): Initisliaze
5766         uninitialized variables.
5767         * tree-vect-transform.c (cost_for_stmt): New function.
5768         (vect_estimate_min_profitable_iters): Call cost_for_stmt instead of
5769         using cost 1 for all scalar stmts. Be less conservative when
5770         estimating the number of prologue/epulogue iterations. Call
5771         targetm.vectorize.builtin_vectorization_cost. Return
5772         min_profitable_iters-1.
5773         (vect_model_reduction_cost): Use TARG_SCALAR_TO_VEC_COST for
5774         initialization cost instead of TARG_VEC_STMT_COST. Use
5775         TARG_VEC_TO_SCALAR_COST instead of TARG_VEC_STMT_COST for reduction
5776         epilogue code. Fix epilogue cost computation.
5777         * config/spu/spu.c (spu_builtin_vectorization_cost): New.
5778         (TARGET_VECTORIZE_BUILTIN_VECTORIZATION_COST): Implement.
5779         * config/spu/spu.h (TARG_COND_BRANCH_COST, TARG_SCALAR_STMT_COST):
5780         (TARG_SCALAR_LOAD_COST, TARG_SCALAR_STORE_COST, TARG_VEC_STMT_COST):
5781         (TARG_VEC_TO_SCALAR_COST, TARG_SCALAR_TO_VEC, TARG_VEC_LOAD_COST):
5782         (TARG_VEC_UNALIGNED_LOAD_COST, TARG_VEC_STORE_COST): Define.
5783
5784 2007-07-12  Richard Guenther  <rguenther@suse.de>
5785
5786         * gimplify.c (gimplify_conversion): Make sure that the result
5787         from maybe_fold_offset_to_reference is trivially convertible
5788         to the desired type before doing the simplification.
5789         (gimplify_expr): Likewise.
5790         * fold-const.c (fold_binary): Use the correct types for
5791         building the simplified expression.
5792
5793 2007-07-12  Zdenek Dvorak  <dvorakz@suse.cz>
5794
5795         PR rtl-optimization/32729
5796         * cfghooks.c (can_duplicate_block_p): Do not forbid duplicating blocks
5797         that fallthru to exit.
5798
5799 2007-07-12  Kaz Kojima  <kkojima@gcc.gnu.org>
5800
5801         * config/sh/sh.md (symGOTOFF2reg): Add missing parenthesis.
5802         (symDTPOFF2reg): Likewise.
5803
5804 2007-07-11  Daniel Berlin  <dberlin@dberlin.org>
5805
5806         PR tree-optimization/32663
5807         
5808         * tree.h (VALUE_HANDLE_VUSES): Remove.
5809         (struct tree_value_handle): Remove vuses.
5810
5811         * tree-vn.c (create_value_handle_for_expr): Don't set
5812         VALUE_HANDLE_VUSES. 
5813
5814         * tree-ssa-pre.c (expression_vuses): New.
5815         (alloc_expression_id): Set up expression_vuses.
5816         (get_expression_vuses): New.
5817         (set_expression_vuses): Ditto.
5818         (clear_expression_ids): Modify for expression_vuses.
5819         (phi_translate_1): Ditto.
5820         (phi_translate_set): Ditto.
5821         (value_dies_in_block_x): Ditto
5822         (valid_in_sets): Ditto.
5823         (add_to_sets): Ditto.
5824         (find_existing_value_expr): Ditto.
5825         (create_value_handle_for_expr): Ditto.
5826         (make_values_for_stmt): Ditto.
5827         (vuse_equiv): Remove.
5828
5829 2007-07-11  Alexandre Oliva  <aoliva@redhat.com>
5830
5831         * Makefile.in (mostlyclean): Remove object files.
5832
5833 2007-07-11  Kenneth Zadeck <zadeck@naturalbridge.com>
5834
5835         * toplev.c (no_new_pseudos): Deleted.
5836         * rtl.h (no_new_pseudos): Deleted.
5837         * tree-pass.h (pass_no_new_pseudos): Deleted. 
5838         * passes.c (pass_no_new_pseudos): Deleted.
5839         * final.c (rest_of_clean_state): Removed no_new_pseudos.
5840         (rest_of_no_new_pseudos, pass_no_new_pseudos): Deleted.
5841         * struct-equiv.c (rtx_equiv_p): Replaced no_new_pseudos with 
5842         reload_completed.
5843         * cfgcleanup.c (try_crossjump_to_edge): Ditto. 
5844         * rtlhooks.c (gen_lowpart_general): Ditto.
5845         * optabs.c (prepare_operand): Ditto.
5846         * mode-switching.c (rest_of_handle_mode_switching): Deleted set of
5847         no_new_pseudos.
5848         * modulo-sched.c (rest_of_handle_sms): Ditto.
5849         * see.c (rest_of_handle_see): Ditto.
5850         * ifcvt.c (if_convert): Ditto.
5851         (gate_handle_if_after_combine): Replaced no_new_pseudos with 
5852         reload_completed.
5853         * init-regs.c (gate_initialize_regs): Deleted set of
5854         no_new_pseudos.
5855         * lower-subreg.c (decompose_multiword_subregs): Ditto. 
5856         * bb-reorder.c (rest_of_handle_partition_blocks): Ditto.
5857         * doc/md.texi: Changed no_new_pseudos to can_create_pseudo_p.
5858         
5859 2007-07-11  Uros Bizjak  <ubizjak@gmail.com>
5860
5861         PR target/32661
5862         * config/i386/sse.md (*sse2_storeq_rex64): Handle 64bit mem->reg moves.
5863         (*vec_extractv2di_1_sse2): Disable for TARGET_64BIT.
5864         (*vec_extractv2di_1_rex64): New insn pattern.
5865
5866 2007-07-11  David Daney  <ddaney@avtrex.com>
5867
5868         * config/mips/linux-unwind.h (mips_fallback_frame_state): Rewrite
5869         return address calculation.  Substitute DWARF_ALT_FRAME_RETURN_COLUMN
5870         for SIGNAL_UNWIND_RETURN_COLUMN.
5871         * config/mips/mips.h (SIGNAL_UNWIND_RETURN_COLUMN): Remove.
5872         (DWARF_FRAME_REGNUM): Rewrite.
5873         (DWARF_ALT_FRAME_RETURN_COLUMN) Define.
5874
5875 2007-07-11  Nick Clifton  <nickc@redhat.com>
5876
5877         * config/m32r/m32r.h (INITIALIZE_TRAMPOLINE): Revert previous
5878         delta and use gen_int_mode in place of GET_INT instead.
5879
5880 2007-07-11  Uros Bizjak  <ubizjak@gmail.com>
5881
5882         * reg-stack.c (struct tree_opt_pass pass_stack_regs): Nullify name
5883         and letter field.
5884
5885 2007-07-11  Douglas Gregor  <doug.gregor@gmail.com>
5886
5887         * params.def (PARAM_VERIFY_CANONICAL_TYPES): Remove.
5888         (PARAM_USE_CANONICAL_TYPES): New; decides whether to use canonical 
5889         types or not.
5890         * params.h (VERIFY_CANONICAL_TYPES): Remove.
5891         (USE_CANONICAL_TYPES): New.
5892         * doc/invoke.texi (verify-canonical-types): Remove.
5893         (use-canonical-types): Add.
5894
5895 2007-07-11  Ulrich Weigand  <uweigand@de.ibm.com>
5896
5897         * config/spu/spu.c (spu_optimization_options): Remove setting of
5898         parameter PARAM_MAX_COMPLETELY_PEEL_TIMES.
5899         (spu_override_options): Move it here.
5900
5901 2007-07-11  Richard Sandiford  <richard@codesourcery.com>
5902
5903         * config/mips/mips.h (MIPS_ISA_LEVEL_SPEC): Handle -m4ksc and -m4ksd.
5904         * config/mips/mips.c (mips_cpu_info_table): Mention
5905         MIPS_ISA_LEVEL_SPEC in the comment.
5906
5907 2007-07-11  Eric Botcazou  <ebotcazou@adacore.com>
5908
5909         PR tree-optimization/32713
5910         * tree-ssa-sccvn.c (copy_reference_ops_from_ref): Handle REAL_CST.
5911
5912 2007-07-11  Paolo Carlini  <pcarlini@suse.de>
5913
5914         PR middle-end/30482
5915         * c-opts.c (c_common_post_options): Do not change flag_complex_method
5916         conditional to flag_isoc99.
5917         (c_common_init_options): Do it here, unconditionally.
5918
5919 2007-07-11  Eric Botcazou  <ebotcazou@adacore.com>
5920
5921         PR tree-optimization/32589
5922         * doc/tree-ssa.texi (Rough GIMPLE Grammar): Add missing rule.
5923         * tree-gimple.c (is_gimple_min_invariant): Clarify head comment.
5924         * tree-ssa-propagate.c (valid_gimple_expression_p): New
5925         predicate, extracted from...
5926         (set_rhs): ...here.  Call it for the expression on entry.
5927         * tree-ssa-propagate.h (valid_gimple_expression_p): Declare.
5928         * tree-ssa-sccvn.c: Include tree-ssa-propagate.h.
5929         (simplify_binary_expression): Use valid_gimple_expression_p
5930         to validate the simplification.
5931         * Makefile.in (tree-ssa-sccvn.o): Depends on tree-ssa-propagate.h.
5932
5933 2007-07-11  Danny Smith  <dannysmith@users.sourceforge.net>
5934
5935         * config/i386/cygming.h (PREFERRED_DEBUGGING_TYPE): Define to
5936         DWARF2_DEBUG on 32 bit target too.
5937         (DWARF2_UNWIND_INFO): Reorganize 64-bit vs 32-bit definition. 
5938
5939 2007-07-11  Nick Clifton  <nickc@redhat.com>
5940
5941         * config/m32r/m32r.h (INITIALIZE_TRAMPOLINE): Provide alternative
5942         version for 64-bit hosts.
5943
5944 2007-07-10  David Daney  <ddaney@avtrex.com>
5945
5946         * config/mips/mips.h (ISA_HAS_SYNCI): New target capability
5947         predicate.
5948         (INITIALIZE_TRAMPOLINE): Emit clear_cache insn instead of  library
5949         call.
5950         * config/mips/mips.c (mips_expand_synci_loop): New function.
5951         * config/mips/mips.md (UNSPEC_CLEAR_HAZARD): New constant.
5952         (UNSPEC_RDHWR): Same.
5953         (UNSPEC_SYNCI): Same.
5954         (UNSPEC_SYNC): Same.
5955         (clear_cache): New expand.
5956         (sync): New insn.
5957         (synci): Same.
5958         (rdhwr): Same.
5959         (clear_hazard): Same.
5960         * config/mips/mips-protos.h (mips_expand_synci_loop): Declare
5961         function.
5962         * testsuite/gcc.target/mips/clear-cache-1.c: New test.
5963         * testsuite/gcc.target/mips/clear-cache-2.c: New test.
5964
5965 2007-07-10  Ian Lance Taylor  <iant@google.com>
5966
5967         * emit-rtl.c (gen_reg_rtx): Check can_create_pseudo_p rather than
5968         no_new_pseudos.
5969
5970 2007-07-10  David Daney  <ddaney@avtrex.com>
5971
5972         * builtins.def (BUILT_IN_CLEAR_CACHE): New builtin.
5973         * builtins.c (expand_builtin___clear_cache): New function.
5974         (expand_builtin): Call expand_builtin___clear_cache for
5975         BUILT_IN_CLEAR_CACHE case.
5976         * doc/extend.texi (__builtin___clear_cache): Document new builtin.
5977         * doc/md.texi (clear_cache): Document new instruction pattern.
5978         * testsuite/gcc.dg/builtins-64.c: New test.
5979
5980 2007-07-11  Hans-Peter Nilsson  <hp@axis.com>
5981
5982         * config/cris/cris.md ("movsi"): Fix typo in last change.
5983
5984 2007-07-09  Geoffrey Keating  <geoffk@apple.com>
5985
5986         PR 32617
5987         * c-common.c (c_alignof_expr): Look at DECL_ALIGN of
5988         FUNCTION_DECLs.
5989         (handle_aligned_attribute): Allow use on FUNCTION_DECLs.
5990         * varasm.c (assemble_start_function): Honor DECL_ALIGN
5991         for FUNCTION_DECLs.  Don't use align_functions_log if
5992         DECL_USER_ALIGN.
5993         * print-tree.c (print_node): Print DECL_ALIGN and DECL_USER_ALIGN
5994         even for FUNCTION_DECLs.
5995         * c-decl.c (merge_decls): Propagate DECL_ALIGN even for
5996         FUNCTION_DECLs.
5997         * tree.h (DECL_ALIGN): Update for new location of 'align'.
5998         (DECL_FUNCTION_CODE): Update for new location and name of
5999         'function_code'.
6000         (DECL_OFFSET_ALIGN): Update for new location of 'off_align'.
6001         (struct tree_decl_common): Move 'align' and 'off_align' out
6002         of union, ensure they're still on a 32-bit boundary.  Remove
6003         other fields in union 'u1'.
6004         (struct tree_function_decl): Add field 'function_code' replacing
6005         'u1.f' in tree_decl_common.
6006         * tree.c (build_decl_stat): Set initial value of DECL_ALIGN.
6007         * doc/extend.texi (Function Attributes): Add 'aligned' attribute.
6008         (Variable Attributes): Cross-reference 'aligned' attribute
6009         to Function Attributes.
6010         * flags.h (force_align_functions_log): Delete.
6011         * toplev.c (force_align_functions_log): Delete.
6012
6013 2007-07-10  Uros Bizjak  <ubizjak@gmail.com>
6014
6015         PR target/32708
6016         * config/i386/sse.md (vec_concatv2di): Disable for TARGET_64BIT.
6017         (*vec_concatv2di_rex): New insn pattern.
6018
6019 2007-07-10  Rainer Orth  <ro@TechFak.Uni-Bielefeld.DE>
6020
6021         PR target/32538
6022         * config/mips/iris6.h (LIBGCC_SPEC): Add libm.
6023
6024 2007-07-10  Ian Lance Taylor  <iant@google.com>
6025
6026         Replace no_new_pseudos in backends.
6027         * rtl.h (can_create_pseudo_p): Define.
6028         * config/darwin.c (machopic_indirect_data_reference): Use
6029         can_create_pseudo_p () instead of no_new_pseudos.
6030         (machopic_indirect_data_reference): Likewise.
6031         (machopic_legitimize_pic_address): Likewise.
6032         * config/alpha/alpha.c (alpha_legitimize_address): Likewise.
6033         (alpha_emit_set_const_1): Likewise.
6034         (alpha_emit_set_const): Likewise.
6035         (alpha_emit_conditional_move): Likewise.
6036         (alpha_split_conditional_move): Likewise.
6037         * config/alpha/alpha.md (various splitters): Likewise.
6038         (movti): Likewise.
6039         * config/arm/arm.c (legitimize_pic_address): Likewise.
6040         (arm_load_pic_register): Likewise.
6041         * config/arm/arm.md (addsi3, subsi3, andsi3, iorsi3): Likewise.
6042         (movdi, movsi, movhi, movqi, movsf, movdf): Likewise.
6043         * config/bfin/bfin.c (legitimize_pic_address): Likewise.
6044         * config/cris/cris.c (cris_expand_pic_call_address): Likewise.
6045         * config/cris/cris.md (movsi): Likewise.
6046         * config/frv/frv.md (symGOT2reg_hilo): Likewise.
6047         (symGOTOFF2reg_hilo): Likewise.
6048         (symGPREL2reg, symGPREL2reg_hilo): Likewise.
6049         * config/h8300/h8300.md (insv, extzv): Likewise.
6050         * config/i386/i386.c (ix86_expand_move): Likewise.
6051         (ix86_expand_vector_move): Likewise.
6052         (ix86_prepare_fp_compare_args): Likewise.
6053         (ix86_expand_carry_flag_compare): Likewise.
6054         * config/i386/i386.md (tls_dynamic_gnu2_32): Likewise.
6055         (tls_dynamic_gnu2_combine_32): Likewise.
6056         (tls_dynamic_gnu2_64, tls_dynamic_gnu2_combine_64): Likewise.
6057         * config/ia64/ia64.c (ia64_expand_move): Likewise.
6058         (ia64_expand_movxf_movrf): Likewise.
6059         * config/m32c/m32c.c (m32c_prepare_move): Likewise.
6060         (m32c_split_move): Likewise.
6061         (m32c_expand_insv): Likewise.
6062         * config/m68k/m68k.md (movsi): Likewise.
6063         * config/mips/mips.c (mips_force_temporary): Likewise.
6064         (mips_split_symbol): Likewise.
6065         (mips_move_integer): Likewise.
6066         (mips_legitimize_const_move): Likewise.
6067         * config/mn10300/mn10300.md (movsi): Likewise.
6068         * config/pa/pa.c (emit_move_sequence): Likewise.
6069         * config/rs6000/rs6000.c (rs6000_emit_move): Likewise.
6070         (rs6000_got_register): Likewise.
6071         (create_TOC_reference): Likewise.
6072         (rs6000_machopic_legitimize_pic_address): Likewise.
6073         * config/rs6000/rs6000.md (add<mode>3): Likewise.
6074         (various splitters): Likewise.
6075         (iorsi3, xorsi3, iordi3, xordi3): Likewise.
6076         (movsi_got): Likewise.
6077         * config/s390/s390.c (emit_symbolic_move): Likewise.
6078         * config/s390/s390.md (movhi, movqi): Likewise.
6079         (load_multiple, store_multiple): Likewise.
6080         * config/score/score.c (score_force_temporary): Likewise.
6081         * config/sh/sh.c (prepare_move_operands): Likewise.
6082         (prepare_cbranch_operands): Likewise.
6083         (emit_fpu_switch): Likewise.
6084         (fpscr_set_from_mem): Likewise.
6085         * config/sh/sh.md (movdicc, movsicc, movsicc_umin): Likewise.
6086         (adddi3, subsi3): Likewise.
6087         (various splitters): Likewise.
6088         (divsi_inv_fp_combine): Likewise.
6089         (symGOT_load, symGOTOFF2reg, symDTPOFF2reg): Likewise.
6090         (seq, slt, sle, sgt, sge, sgtu, sltu, sleu, sgeu): Likewise.
6091         (sne): Likewise.
6092         * config/sh/predicates.md (xor_operand): Likewise.
6093         * config/sparc/sparc.c (legitimize_tls_address): Likewise.
6094         * config/sparc/sparc.md (movsi_pic_label_ref): Likewise.
6095         (movdi_pic_label_ref): Likewise.
6096         * config/spu/spu.c (spu_split_immediate): Likewise.
6097         * config/alpha/alpha.md (various splitters): Remove test
6098         !no_new_pseudos || reload_completed.
6099         * config/ia64/ia64.c (ia64_output_mi_thunk): Don't set
6100         no_new_pseudos.
6101         * config/m68k/m68k.c (m68k_output_mi_thunk): Likewise.
6102         * config/mips/mips.c (mips_output_mi_thunk): Likewise.
6103         * config/rs6000/rs6000.c (rs6000_output_mi_thunk): Likewise.
6104         * config/score/score.c (th_output_mi_thunk): Likewise.
6105         * config/sh/sh.c (sh_output_mi_thunk): Likewise.
6106         * config/sparc/sparc.c (sparc_output_mi_thunk): Likewise.
6107
6108 2007-07-10  Kaz Kojima  <kkojima@gcc.gnu.org>
6109
6110         PR rtl-optimization/32664
6111         * mode-switching.c (create_pre_exit): Skip barrier insns.
6112
6113 2007-07-10  Zdenek Dvorak  <dvorakz@suse.cz>
6114
6115         * tree-scalar-evolution.c (scev_const_prop): Add arguments to
6116         force_gimple_operand_bsi.
6117         * tree-ssa-loop-ivopts.c (rewrite_use_nonlinear_expr,
6118         rewrite_use_compare): Ditto.
6119         * tree-ssa-address.c (gimplify_mem_ref_parts, create_mem_ref):
6120         Ditto.
6121         * tree-ssa-ifcombine.c (ifcombine_ifandif): Ditto.
6122         * tree-ssa-loop-prefetch.c (issue_prefetch_ref): Ditto.
6123         * lambda-code.c (replace_uses_equiv_to_x_with_y): Ditto.
6124         * tree-profile.c (prepare_instrumented_value,
6125         tree_gen_interval_profiler, tree_gen_pow2_profiler,
6126         tree_gen_one_value_profiler, tree_gen_ic_profiler,
6127         tree_gen_ic_func_profiler, tree_gen_average_profiler,
6128         tree_gen_ior_profiler): Ditto.
6129         * tree-ssa-reassoc.c (negate_value): Ditto.
6130         * matrix-reorg.c (transform_access_sites, transform_allocation_sites):
6131         Use force_gimple_operand_bsi.
6132         * tree-vect-transform.c (vect_update_ivs_after_vectorizer): Ditto.
6133         * tree-if-conv.c (add_to_dst_predicate_list,
6134         find_phi_replacement_condition): Ditto.
6135         * gimplify.c (force_gimple_operand_bsi): Add before and m arguments.
6136         Call mark_symbols_for_renaming for new statements.
6137         * tree-flow.h (force_gimple_operand_bsi): Declaration changed.
6138
6139 2007-07-10  Zdenek Dvorak  <dvorakz@suse.cz>
6140
6141         * cfghooks.c (remove_edge): New function.
6142         (redirect_edge_and_branch, remove_branch, merge_blocks): Updated
6143         loop exit rescans.
6144         * cfghooks.h (remove_edge): Declare.
6145         * cfg.c (remove_edge): Renamed to remove_edge_raw.
6146         * basic-block.h (remove_edge): Declaration changed to remove_edge_raw.
6147
6148 2007-07-09  Wolfgang Gellerich  <gellerich@de.ibm.com>
6149
6150         * optabs.h: Added declaration for signbit_optab.  
6151         * optabs.c: (init_optabs): Added initialization for signbit_optab.
6152         * genoptinit.c (optabs): Added entry for signbit insns.  
6153         * builtins.c (expand_builtin_signbit): Added code to use a signbit
6154         insn, if available.  
6155         * config/s390/s390.h (S390_TDC_SIGNBIT_SET): New constant.  
6156         * config/s390/s390.md (signbit<mode>2): New expander.  
6157
6158 2007-07-09  Richard Guenther  <rguenther@suse.de>
6159
6160         PR middle-end/32698
6161         * fold-const.c (fold_plusminus_mult_expr): Move constant
6162         arguments second to allow decomposing.
6163
6164 2007-07-09  Alexandre Oliva  <aoliva@oliva.athome.lsd.ic.unicamp.br>
6165
6166         Revert:
6167         2007-07-06  Alexandre Oliva  <aoliva@redhat.com>
6168         PR debug/23551
6169         * tree-ssa-copyrename.c (copy_rename_partition_coalesce):
6170         Disregard DECL_FROM_INLINE.
6171
6172 2007-07-09  Uros Bizjak  <ubizjak@gmail.com>
6173
6174         PR target/27855
6175         * doc/invoke.texi: Add ftree-reassoc flag.
6176         * common.opt (ftree-reassoc): New flag.
6177         * tree-ssa-reassoc.c (gate_tree_ssa_reassoc): New static function.
6178         (struct tree_opt_pass pass_reassoc): Use gate_tree_ssa_reassoc.
6179
6180 2007-07-09  Uros Bizjak  <ubizjak@gmail.com>
6181
6182         PR tree-optimization/32681
6183         * tree-if-conv.c (find_phi_replacement_condition): Use the condition
6184         saved in second_edge->aux when first_bb is a loop header.
6185
6186 2007-07-09  Jan HUbicka  <jh@suse.cz>
6187
6188         * cse.c (cse_insn): Avoid invalid sharing on trial replacement.
6189
6190 2007-07-09  Richard Guenther  <rguenther@suse.de>
6191
6192         * c-decl.c (start_function): Do not promote return type.
6193
6194 2007-07-08  Daniel Franke  <franke.daniel@gmail.com>
6195
6196         * function.c (do_warn_unused_parameter): Do not warn if
6197         TREE_NO_WARNING is set.
6198
6199 2007-07-08  Andreas Schwab  <schwab@suse.de>
6200
6201         * doc/invoke.texi (DEC Alpha/VMS Options): Fix typo.
6202
6203 2007-07-08  Sandra Loosemore  <sandra@codesourcery.com>
6204
6205         Revert this patch:
6206         2007-07-06  Sandra Loosemore  <sandra@codesourcery.com>
6207
6208         * c-opts.c (c_common_handle_option): Make DOLLARS_IN_IDENTIFIERS
6209         apply to assembly language, too.
6210         * doc/tm.texi (DOLLARS_IN_IDENTIFIERS): Update.
6211
6212 2007-07-07  Daniel Berlin  <dberlin@dberlin.org>
6213
6214         Revert (note the sccvn portions are *not* reverted)
6215         2007-07-06  Daniel Berlin  <dberlin@dberlin.org>
6216
6217         Fix PR tree-optimization/23488
6218
6219         * tree-vn.c (set_value_handle): Use decl_vh_map for decl value
6220         handles.
6221         * tree-flow-inline.h (get_value_handle): Ditto.
6222         * tree-ssa-pre.c (decl_vh_map): New.
6223         (decl_node_pool): New.
6224         (can_value_number_operation): Support DECL_P.
6225         (can_PRE_operation): Ditto.
6226         (create_expression_by_pieces): Ditto.
6227         (find_existing_value_expr): Modify to differnetiate between
6228         addressing and top level.
6229         (create_value_handle_for_expr): Handle DECL's.
6230         (poolify_tree): Ditto.
6231         (make_values_for_phi): Don't insert into PHI_GEN during FRE.
6232         (make_values_for_stmt): Handle DECL's properly.
6233         (init_pre): Reorg to not init useless things during FRE.
6234         (fini_pre): Ditto.
6235         * tree-flow.h: Include pointer-set.h.
6236         (decl_vh_map): Declare.
6237         * Makefile.in (TREE_FLOW_H): Add pointer-set.h
6238
6239 2007-07-07 Eric Weddington  <eweddington@cso.atmel.com>
6240
6241         * config/avr/constraints.md (define_memory_constraint "Q"): Fix
6242         the constraint description.
6243         * doc/md.texi: Update documentation of AVR constraints.
6244
6245 2007-07-07  Kazu Hirata  <kazu@codesourcery.com>
6246
6247         * auto-inc-dec.c, config/arm/arm.c,
6248         config/m32r/constraints.md, config/mips/mips.md,
6249         config/rs6000/rs6000.c, cselib.c, dce.c, df-core.c,
6250         df-problems.c, df-scan.c, df.h, dse.c, gimplify.c,
6251         tree-if-conv.c, tree-ssa-sccvn.c, tree-ssa.c: Fix comment
6252         typos.  Follow spelling conventions.
6253         * doc/invoke.texi, doc/rtl.texi: Fix typos.
6254
6255         * cfgrtl.c (delete_insn_chain_and_edges): Remove.
6256         * rtl.h: Remove the prototype for delete_insn_chain_and_edges.
6257
6258         * tree-ssa-operands.c (realloc_vop, realloc_vdef,
6259         realloc_vuse): Remove.
6260         * tree-ssa-operands.h: Remove the prototype for realloc_vdef
6261         and realloc_vuse.
6262
6263 2007-07-06  Daniel Berlin  <dberlin@dberlin.org>
6264
6265         Fix PR tree-optimization/23488
6266
6267         * tree-ssa-sccvn.c (expr_has_constants): Handle tcc_declaration.
6268         (try_to_simplify): Ditto.
6269         (visit_use): Ditto.
6270         * tree-vn.c (set_value_handle): Use decl_vh_map for decl value
6271         handles.
6272         * tree-flow-inline.h (get_value_handle): Ditto.
6273         * tree-ssa-pre.c (decl_vh_map): New.
6274         (decl_node_pool): New.
6275         (can_value_number_operation): Support DECL_P.
6276         (can_PRE_operation): Ditto.
6277         (create_expression_by_pieces): Ditto.
6278         (find_existing_value_expr): Modify to differnetiate between
6279         addressing and top level.
6280         (create_value_handle_for_expr): Handle DECL's.
6281         (poolify_tree): Ditto.
6282         (make_values_for_phi): Don't insert into PHI_GEN during FRE.
6283         (make_values_for_stmt): Handle DECL's properly.
6284         (init_pre): Reorg to not init useless things during FRE.
6285         (fini_pre): Ditto.
6286         * tree-flow.h: Include pointer-set.h.
6287         (decl_vh_map): Declare.
6288         * Makefile.in (TREE_FLOW_H): Add pointer-set.h
6289                 
6290 2007-07-06  Sandra Loosemore  <sandra@codesourcery.com>
6291
6292         * c-opts.c (c_common_handle_option): Make DOLLARS_IN_IDENTIFIERS
6293         apply to assembly language, too.
6294         * doc/tm.texi (DOLLARS_IN_IDENTIFIERS): Update.
6295
6296 2007-07-06  Ian Lance Taylor  <iant@google.com>
6297             Zack Weinberg  <zackw@panix.com>
6298
6299         PR middle-end/32441
6300         * builtins.c (std_expand_builtin_va_start): Don't use make_tree.
6301
6302 2007-07-06  Richard Sandiford  <richard@codesourcery.com>
6303
6304         * config/sh/sh.md (*prefetch_i4): Disable for TARGET_VXWORKS_RTP.
6305         (prefetch): Likewise if "pref" would be used.
6306
6307 2007-07-06  Josh Conner  <jconner@apple.com>
6308
6309         PR middle-end/32602
6310         PR middle-end/32603
6311         * calls.c (store_one_arg): Handle arguments which are partially
6312         on the stack when detecting argument overlap.
6313
6314 2007-07-06  Bernd Schmidt  <bernd.schmidt@analog.com>
6315
6316         * reload1.c (choose_reload_regs): Set reload_spill_index for regs
6317         chosen during find_reloads.
6318
6319 2007-07-06  Richard Guenther  <rguenther@suse.de>
6320
6321         * gimplify.c (gimplify_call_expr): Prefer DECL_ARGUMENTS over
6322         TYPE_ARG_TYPES for verification of argument types.  Use
6323         DECL_ARG_TYPE instead of the PARM_DECL type.  Take excess
6324         parameters as variable arguments.
6325
6326 2007-07-06  Andreas Krebbel  <krebbel1@de.ibm.com>
6327
6328         * libgcc2.h (word_type): Type definition removed.
6329         (cmp_return_type, shift_count_type): Type definitions added.
6330         (__lshrdi3, __ashldi3, __ashrdi3): word_type of second parameter
6331         replaced with shift_count_type.
6332         (__cmpdi2, __ucmpdi2): word_type of return type replaced with
6333         cmp_return_type.
6334         * libgcc2.c (__udivmoddi4, __moddi3): Type of local variable c
6335         changed from word_type to Wtype.
6336         (__lshrdi3, __ashldi3, __ashrdi3): word_type of second parameter
6337         replaced with shift_count_type.
6338         (__cmpdi2, __ucmpdi2): word_type of return type replaced with
6339         cmp_return_type.
6340         * c-common.c (handle_mode_attribute): Handling for libgcc_cmp_return
6341         and libgcc_shift_count attribute added.
6342         * target-def.h (TARGET_LIBGCC_CMP_RETURN_MODE,
6343         TARGET_LIBGCC_SHIFT_COUNT_MODE): New target hooks defined.
6344         (TARGET_INITIALIZER): New target hooks added.
6345         * targhooks.c (default_libgcc_cmp_return_mode,
6346         default_libgcc_shift_count_mode): Default implementations for the new
6347         target hooks added.
6348         * targhooks.h (default_libgcc_cmp_return_mode,
6349         default_libgcc_shift_count_mode): Function prototypes added.
6350         * target.h (struct gcc_target): Fields for the new target hooks added.
6351         * optabs.c (expand_binop): Use shift_count_mode when expanding shift
6352         as library call.
6353         (prepare_cmp_insn): Use cmp_return_mode when expanding comparison as
6354         library call.
6355
6356         * doc/tm.texi (TARGET_LIBGCC_CMP_RETURN_MODE,
6357         TARGET_LIBGCC_SHIFT_COUNT_MODE): Documentation added.
6358
6359         * config/s390/s390.c (s390_libgcc_cmp_return_mode,
6360         s390_libgcc_shift_count_mode): Functions added.
6361         (TARGET_LIBGCC_CMP_RETURN_MODE, TARGET_LIBGCC_SHIFT_COUNT_MODE):
6362         Target hooks defined.
6363
6364 2007-07-06  Richard Sandiford  <richard@codesourcery.com>
6365
6366         * config/mips/mips.c (compute_frame_size): Restore the original
6367         gp_sp_offset for !GENERATE_MIPS16E_SAVE_RESTORE and remove the
6368         fp_size term from the GENERATE_MIPS16E_SAVE_RESTORE calculation.
6369         Document why the difference is needed.
6370
6371 2007-07-06  Richard Guenther  <rguenther@suse.de>
6372
6373         * c-common.c (boolean_increment): Use correctly typed
6374         constant.
6375
6376 2007-07-06  Richard Sandiford  <richard@codesourcery.com>
6377
6378         * config/mips/mips.c (mips16e_save_restore_pattern_p): Check that
6379         the topmost argument register is not also included in the save mask.
6380         (mips16e_collect_argument_save_p): Take a pointer to the argument
6381         register, rather than a pointer to the number of arguments.
6382         (mips16e_collect_argument_saves): Only include argument saves
6383         that aren't in the register mask.
6384
6385 2007-07-06  Uros Bizjak  <ubizjak@gmail.com>
6386
6387         PR rtl-optimization/32450
6388         * function.c (thread_prologue_and_epilogue_insns): Emit blockage insn
6389         to ensure that instructions are not moved into the prologue when
6390         profiling is on.  Remove unused prologue_end variable.
6391         (expand_function_end): Emit blockage insn instead of ASM_INPUT rtx
6392         as a scheduling barrier.
6393
6394 2007-07-06  Alexandre Oliva  <aoliva@redhat.com>
6395
6396         PR debug/23551
6397         * tree-ssa-copyrename.c (copy_rename_partition_coalesce):
6398         Disregard DECL_FROM_INLINE.
6399
6400 2007-07-05  Adam Nemet  <anemet@caviumnetworks.com>
6401
6402         * rtlanal.c (num_sign_bit_copies1): Improve cases of ANDing or
6403         IORing with a constant.
6404
6405 2007-07-05  Seongbae Park  <seongbae.park@gmail.com>
6406
6407         PR rtl-optimization/32475
6408         * df-scan.c (df_def_record_1): Add a use of the stack pointer
6409         for every definition of the stack pointer.
6410
6411 2007-07-05  Richard Earnshaw  <rearnsha@arm.com>
6412
6413         * arm.c (vfp3_const_double_index): Copy signed results of
6414         REAL_VALUE_TO_INT into unsigned vars.
6415
6416 2007-07-05  Richard Guenther  <rguenther@suse.de>
6417
6418         PR middle-end/32639
6419         * alias.c (get_alias_set): Tread METHOD_TYPE the same as
6420         FUNCTION_TYPE.
6421         * tree-ssa.c (useless_type_conversion_p): Check canonical
6422         types early.
6423
6424 2007-07-05 Anatoly Sokolov <aesok@post.ru>
6425
6426         * config/avr/avr.md (zero_extendqihi2, zero_extendqisi2, 
6427         zero_extendhisi2): Change to define_insn_and_split. 
6428         (zero_extendqidi2, zero_extendhidi2, zero_extendsidi2): New.
6429
6430 2007-07-05  Paolo Bonzini  <bonzini@gnu.org>
6431
6432         * function.c (match_asm_constraints_1, rest_of_match_asm_constraints,
6433         pass_match_asm_constraints): New.
6434         * passes.c (init_optimization_passes): Add new pass.
6435         * stmt.c (expand_asm_operands): Set cfun->has_asm_statement.
6436         * function.h (struct function): Add has_asm_statement bit.
6437         (current_function_has_asm_statement): New.
6438         * tree-pass.h (pass_match_asm_constraints): New.
6439
6440 2007-07-05  Richard Sandiford  <rsandifo@nildram.co.uk>
6441
6442         * config/mips/mips.c (mips_file_start): Avoid declaration
6443         after code.
6444
6445 2007-07-05  Sandra Loosemore  <sandra@codesourcery.com>
6446
6447         * optabs.c (expand_binop_directly): Fix signed/unsigned comparison.
6448
6449 2007-07-05  Uros Bizjak  <ubizjak@gmail.com>
6450
6451         * rtl.def (NOTE): Change print format string to print
6452         operand 5 as a note insn name.
6453
6454 2007-07-05  Sandra Loosemore  <sandra@codesourcery.com>
6455             David Ung  <davidu@mips.com>
6456
6457         * config/mips/mips.c (mips_cpu_info): Add 4ksc and 4ksd processors.
6458         * doc/invoke.texi: (MIPS Options): Document them.
6459
6460 2007-07-05  Sandra Loosemore  <sandra@codesourcery.com>
6461             David Ung  <davidu@mips.com>
6462
6463         Add support for SmartMIPS ASE.
6464
6465         * optabs.c (expand_binop_directly): New, broken out from...
6466         (expand_binop): Here.  Make it try rotating in the other
6467         direction even when the second operand isn't constant.
6468         * config/mips/mips.md (*lwxs): New.
6469         * config/mips/mips.opt (msmartmips): New.
6470         * config/mips/mips.c (mips_lwxs_address_p): New.
6471         (mips_rtx_costs): Make it recognize scaled indexed addressing.
6472         * config/mips/mips.h (TARGET_CPU_CPP_BUILTINS): Define
6473         __mips_smartmips when compiling for TARGET_SMARTMIPS.
6474         (ISA_HAS_ROR): Define for TARGET_SMARTMIPS.
6475         (ISA_HAS_LWXS): New.
6476         (ASM_SPEC): Add -msmartmips/-mno-smartmips.
6477         * doc/invoke.texi (MIPS Options): Document -msmartmips/-mno-smartmips.
6478         * testsuite/gcc.target/mips/smartmips-lwxs.c: New test case.
6479         * testsuite/gcc.target/mips/smartmips-ror-1.c: New test case.
6480         * testsuite/gcc.target/mips/smartmips-ror-2.c: New test case.
6481         * testsuite/gcc.target/mips/smartmips-ror-3.c: New test case.
6482         * testsuite/gcc.target/mips/smartmips-ror-4.c: New test case.
6483
6484 2007-07-05  Dorit Nuzman  <dorit@il.ibm.com>
6485
6486         * tree-vectorizer.c (new_loop_vec_info): Initialize
6487         LOOP_VINFO_COST_MODEL_MIN_ITERS.
6488         * tree-vectorizer.h (_loop_vec_info): Added new filed
6489         min_profitable_iters.
6490         (LOOP_VINFO_COST_MODEL_MIN_ITERS): New access macro to above new field.
6491         (TARG_SCALAR_TO_VEC_COST): Define cost of scalar to vector operation.
6492         * tree-vect-analyze.c (vect_analyze_operations): Set
6493         LOOP_VINFO_COST_MODEL_MIN_ITERS.
6494         * tree-vect-transform.c (vect_estimate_min_profitable_iters): Use
6495         VEC_length to determine if there are any LOOP_VINFO_MAY_MISALIGN_STMTS.
6496         Fix calculation of peel_iters_prologue. Move consideration of epilogue
6497         and prologue cost to after they are computed.
6498         (vect_model_induction_cost): Use TARG_SCALAR_TO_VEC_COST instead of
6499         TARG_VEC_STMT_COST.
6500         (vect_model_simple_cost): Takes additional argument dt. Consider cost
6501         of creating vectors from scalars according to dt.
6502         (vect_model_store_cost): Likewise.
6503         (vectorizable_call): Use dt array instead of scalar dt. Call
6504         vect_model_simple_cost with additional argument dt.
6505         (vectorizable_assignment): Likewise.
6506         (vectorizable_operation): Likewise.
6507         (vectorizable_type_demotion): Likewise.
6508         (vectorizable_type_promotion): Likewise.
6509         (vectorizable_store): Use dt array instead of scalar dt. Call
6510         vect_model_store_cost with additional argument dt.
6511         (vect_do_peeling_for_loop_bound): Don't call
6512         vect_estimate_min_profitable_iters. Instead, lookup
6513         LOOP_VINFO_COST_MODEL_MIN_ITERS. Don't always print
6514         "may not be profitable".
6515
6516 2007-07-05  Dorit Nuzman  <dorit@il.ibm.com>
6517
6518         PR testsuite/32014
6519         * config/rs6000/altivec.md (UNSPEC_VUPKHS_V4SF, UNSPEC_VUPKLS_V4SF):
6520         (UNSPEC_VUPKHU_V4SF, UNSPEC_VUPKLU_V4SF): New.
6521         (vec_unpacks_float_hi_v8hi, vec_unpacks_float_lo_v8hi): New patterns.
6522         (vec_unpacku_float_hi_v8hi, vec_unpacku_float_lo_v8hi): New patterns. 
6523
6524 2007-07-05  Zdenek Dvorak  <dvorakz@suse.cz>
6525
6526         * config/i386/i386.c (ix86_address_cost): Do not consider more complex
6527         addressing modes cheaper.
6528
6529 2007-07-05  Alexandre Oliva  <aoliva@redhat.com>
6530
6531         * dwarf2out.c (dw_ranges_by_label_ref): New typedef.
6532         (dw_ranges_struct): Rename block_num to num.  Adjust.
6533         (dw_ranges_by_label_struct): New.
6534         (ranges_by_label, ranges_by_label_allocated,
6535         ranges_by_label_in_use): New variables.
6536         (add_ranges_num): Factored most of the code out of...
6537         (add_ranges): ... this one.  Rewrite in terms of the former.
6538         (add_ranges_by_labels): New.
6539         (output_ranges): Output by-label ranges.
6540         (dwarf2out_finish): Output range for multiple-section
6541         compile_unit.  Output standard DW_AT_low_pc in addition to
6542         unexpected DW_AT_entry_pc.
6543
6544 2007-07-04  Daniel Berlin  <dberlin@dberlin.org>
6545
6546         PR tree-optimization/32604
6547         PR tree-optimization/32606
6548
6549         * tree-ssa-pre.c (bb_bitmap_sets): Removed antic_safe_loads.
6550         (compute_antic_safe): Removed.
6551         (ANTIC_SAFE_LOADS): Ditto.
6552         (compute_antic_aux): Don't print ANTIC_SAFE_LOADS.
6553         (execute_pre): Don't call compute_antic_safe.
6554         (vuse_equiv): New function.
6555         (make_values_for_stmt): Use it
6556         * tree-ssa-sccvn.c (set_ssa_val_to): Remove assert, since it is
6557         not always true.
6558
6559 2007-07-04 Anatoly Sokolov <aesok@post.ru>
6560
6561         PR target/31331
6562         * config/avr/avr.c (avr_naked_function_p): Handle receiving a type
6563         rather than a decl. 
6564         (avr_attribute_table): Make "naked" attribute apply to function types
6565         rather than to decls.
6566         (avr_handle_fntype_attribute): New function.
6567
6568 2007-07-04  Joseph Myers  <joseph@codesourcery.com>
6569
6570         * target-def.h (TARGET_INITIALIZER): Remove trailing whitespace
6571         after \.
6572
6573 2007-07-04  David Ung  <davidu@mips.com>
6574             Joseph Myers  <joseph@codesourcery.com>
6575
6576         * config/mips/mips.md (type): Add logical, signext and move.
6577         (one_cmpl<mode>2, *and<mode>3, *and<mode>3_mips16, *ior<mode>3,
6578         *ior<mode>3_mips16, two unnamed insns after *ior<mode>3_mips16,
6579         *nor<mode>3, "Combiner patterns to optimize truncate/zero_extend
6580         combinations", *zero_extend<SHORT:mode><GPR:mode>2,
6581         *zero_extendqihi2, *extend<SHORT:mode><GPR:mode>2_mips16e,
6582         *extend<SHORT:mode><GPR:mode>2_se<SHORT:size>, *movdi_64bit,
6583         *movdi_64bit_mips16, *movsi_internal, *movsi_mips16, movcc,
6584         *movhi_internal, *movhi_mips16, *movqi_internal, *movqi_mips16,
6585         *movsf_hardfloat, *movsf_softfloat, *movsf_mips16,
6586         *movdf_hardfloat_64bit, *movdf_hardfloat_32bit,
6587         movv2sf_hardfloat_64bit): Use the new types.
6588         (*movdi_32bit, *movdi_gp32_fp64, *movdi_32bit_mips16,
6589         *movdf_softfloat, *movdf_mips16): Use "multi".
6590         (extendqihi2): Replace with a define_expand.
6591         (*extendqihi2_mips16e, *extendqihi2, *extendqihi2_seb): New.
6592         Based on extend<SHORT:mode><GPR:mode>2 patterns.
6593         * config/mips/74k.md (r74k_int_logical): New reservation and
6594         bypasses.
6595         (r74k_int_arith): Remove "slt".
6596         * config/mips/24k.md, config/mips/4130.md, config/mips/4k.md,
6597         config/mips/5400.md, config/mips/5500.md, config/mips/5k.md,
6598         config/mips/7000.md, config/mips/9000.md, config/mips/generic.md,
6599         config/mips/sb1.md, config/mips/sr71k.md: Add new types to
6600         reservations for "arith".
6601
6602 2007-07-04  Richard Guenther  <rguenther@suse.de>
6603
6604         * tree-ssa.c (useless_type_conversion_p): Add handling for
6605         scalar float and vector types.  Only call the types_compatible_p
6606         langhook for aggregate types as last resort.  Follow the
6607         rules.
6608
6609 2007-07-04  Richard Guenther  <rguenther@suse.de>
6610
6611         * tree-inline.c (estimate_num_insns_1): Treat CONVERT_EXPR
6612         the same as NOP_EXPR.
6613
6614 2007-07-04  Nick Clifton  <nickc@redhat.com>
6615
6616         * target.h (struct gcc_target): Add target_help field.
6617         * target-def.h (TARGET_HELP): New.
6618         (TARGET_INITIALIZER): Use TARGET_HELP.
6619         * opts.c (command_handle_option): Invoke target_help function, if
6620         defined, when the user has specified --target-help on the command
6621         line.
6622         * doc/invoke.texi: Mention that --target-help might print
6623         additional information.
6624         * doc/tm.texi: Document TARGET_HELP hook.
6625
6626         * arm.c (TARGET_HELP): Override default definition.
6627         (arm_target_help): New - display a wrapped list of cores and
6628         architectures supported.
6629
6630 2007-07-04  Rask Ingemann Lambertsen  <rask@sygehus.dk>
6631
6632         * config/v850/v850.c (expand_prologue): Make sure
6633         GEN_INT() argument is sign extended rather than zero extended.
6634         (expand_epilogue): Likewise.
6635         (output_move_double): Delete.
6636         * config/v850/v850-protos.h (output_move_double): Delete.
6637         * config/v850/v850.md (movdi): Delete.
6638         (*movdi_internal): Delete.
6639         (movdf): Delete.
6640         (*movdf_internal): Delete.
6641
6642 2007-07-04  Richard Sandiford  <richard@codesourcery.com>
6643
6644         * config/sh/vxworks.h (SUBTARGET_OVERRIDE_OPTIONS): Reject -mrelax
6645         unless compiling RTP PIC.
6646
6647 2007-07-04  Richard Guenther  <rguenther@suse.de>
6648
6649         PR tree-optimization/32482
6650         * tree-ssa-ifcombine.c (recognize_single_bit_test): Use the
6651         original ssa name if we didn't find a shift expression.
6652         Fix shift constant for bit zero test.
6653
6654 2007-07-04  Richard Sandiford  <richard@codesourcery.com>
6655
6656         * config/sh/lib1funcs.asm (ic_invalidate): Align constant pool.
6657
6658 2007-07-04  Richard Sandiford  <richard@codesourcery.com>
6659
6660         * config.gcc (arm-wrs-vxworks): Don't include svr4.h.
6661         * config/vxworks.h (PTRDIFF_TYPE, SIZE_TYPE, TARGET_POSIX_IO): Define.
6662         * config/arm/vxworks.h (ASM_SPEC): Delete.
6663         (SUBTARGET_EXTRA_ASM_SPEC): Define.
6664
6665 2007-07-04  Sebastian Pop  <sebpop@gmail.com>
6666
6667         * tree-data-ref.h (data_dependence_relation): New flag reversed_p.
6668         (DDR_REVERSED_P): New.
6669         * tree-data-ref.c (initialize_data_dependence_relation,
6670         build_classic_dist_vector): Set DDR_REVERSED_P.
6671
6672 2007-07-04  Sebastian Pop  <sebpop@gmail.com>
6673
6674         PR middle-end/32457
6675         * tree-data-ref.c (analyze_siv_subscript_cst_affine,
6676         compute_overlap_steps_for_affine_1_2, analyze_subscript_affine_affine,
6677         init_omega_for_ddr_1): Use non conservative number of iterations
6678         estimations.
6679         (analyze_subscript_affine_affine): Use HOST_WIDE_INT instead of int.
6680         (analyze_siv_subscript): Remove FIXME and reinitialization of 
6681         last_conflicts to chrec_dont_know.
6682         * testsuite/gfortran.dg/vect/pr32457.f90: New.
6683
6684 2007-07-04  Douglas Gregor  <doug.gregor@gmail.com>
6685
6686         * tree.c (maybe_canonicalize_argtypes): Improve description.
6687
6688 2007-07-04  Douglas Gregor  <doug.gregor@gmail.com>
6689
6690         * tree.c (maybe_canonicalize_argtypes): New.
6691         (build_function_type): Set canonical type.
6692         (build_method_type_directly): Ditto.
6693         (reconstruct_complex_type): Rebuild the METHOD_TYPE node
6694         properly.
6695
6696 2007-07-03  Andrew Pinski  <andrew_pinski@playstation.sony.com>
6697
6698         * tree-ssa-loop-ivopts.c (strip_offset_1): Treat POINTER_PLUS_EXPR
6699         like PLUS_EXPR.
6700         (rewrite_use_nonlinear_expr): Likewise.
6701
6702 2007-07-03  Seongbae Park  <seongbae.park@gmail.com>
6703
6704         * rtl.def (UNSPEC, USE, CLOBBER): More comments.
6705
6706 2007-07-04  Ben Elliston  <bje@au.ibm.com>
6707
6708         * dwarf2out.c: Move DWARF2 abbreviation glossary closer to the top
6709         of this file.
6710
6711         * c-objc-common.c (c_types_compatible_p): Fix indentation.
6712
6713         * doc/tm.texi (Run-time Target): Capitalise "CPU".
6714         (Exception Handling): Likewise.
6715
6716 2007-07-03  Jan Hubicka  <jh@suse.cz>
6717
6718         * ifcvt.c (find_cond_trap): Avoid invalid RTL sharing.
6719
6720 2007-07-03  Eric Christopher  <echristo@apple.com>
6721
6722         * doc/cppopts.texi: Add conflicting option note to -dM.
6723         * doc/invoke.texi: Add note about possible conflicts with
6724         -E for -dCHARS and note that -dM will not produce
6725         any results if there is no machine dependent reorg.
6726         
6727 2007-07-03  Geoffrey Keating  <geoffk@apple.com>
6728
6729         * tree.h (DECL_ALIGN): Back out previous change.
6730
6731 2007-07-03  Joseph Myers  <joseph@codesourcery.com>
6732
6733         * configure.ac: Test for .dtprelword support on MIPS.
6734         * configure, config.in: Regenerate.
6735         * config/mips/mips.c (mips_output_dwarf_dtprel): New.
6736         (TARGET_ASM_OUTPUT_DWARF_DTPREL): Define.
6737
6738 2007-07-03  Julian Brown  <julian@codesourcery.com>
6739
6740         * config.gcc (with_fpu): Allow --with-fpu=vfp3.
6741         * config/arm/aout.h (REGISTER_NAMES): Add D16-D31.
6742         * config/arm/aof.h (REGISTER_NAMES): Add D16-D31.
6743         * config/arm/arm.c (FL_VFPV3): New flag for VFPv3 processor
6744         capability.
6745         (all_fpus): Add FPUTYPE_VFP3.
6746         (fp_model_for_fpu): Add VFPv3 field.
6747         (arm_rtx_costs_1): Give cost to VFPv3 constants.
6748         (vfp3_const_double_index): New function. Return integer index of
6749         VFPv3 constant suitable for fconst[sd] insns, or -1 if constant
6750         isn't suitable.
6751         (vfp3_const_double_rtx): New function. True if VFPv3 is enabled
6752         and argument represents a valid RTX for a VFPv3 constant.
6753         (vfp_output_fldmd): Split fldmd with > 16 registers in the list into
6754         two instructions.
6755         (vfp_emit_fstmd): Similar, for fstmd.
6756         (arm_print_operand): Implement new code 'G' for VFPv3 floating-point
6757         constants, represented as integer indices.
6758         (arm_hard_regno_mode_ok): Use VFP_REGNO_OK_FOR_SINGLE,
6759         VFP_REGNO_OK_FOR_DOUBLE macros.
6760         (arm_regno_class): Handle VFPv3 d0-d7, low, high register split.
6761         (arm_file_start): Set float-abi attribute for VFPv3, and output
6762         correct ".fpu" assembler directive.
6763         (arm_dbx_register_numbering): Add FIXME.
6764         * config/arm/arm.h (TARGET_VFP3): New macro. Target supports VFPv3.
6765         (fputype): Add FPUTYPE_VFP3.
6766         (FIXED_REGISTERS): Add 32 registers for D16-D31.
6767         (CALL_USED_REGISTERS): Likewise.
6768         (CONDITIONAL_REGISTER_USAGE): Add note about conditional definition
6769         of LAST_VFP_REGNUM. Make D16-D31 caller-saved, if present.
6770         (LAST_VFP_REGNUM): Extend available VFP registers for VFPv3.
6771         (D7_VFP_REGNUM): New.
6772         (LAST_LO_VFP_REGNUM, FIRST_HI_VFP_REGNUM, LAST_HI_VFP_REGNUM)
6773         (VFP_REGNO_OK_FOR_SINGLE, VFP_REGNO_OK_FOR_SINGLE)
6774         (VFP_REGNO_OK_FOR_DOUBLE): Define new macros.
6775         (FIRST_PSEUDO_REGISTER): Shift up to 128 to accommodate VFPv3.
6776         (REG_ALLOC_ORDER): Adjust for VFPv3.
6777         (reg_class): Add VFP_D0_D7_REGS, VFP_LO_REGS, VFP_HI_REGS.
6778         (REG_CLASS_NAMES): Add entries corresponding to VFP_D0_D7_REGS,
6779         VFP_LO_REGS, VFP_HI_REGS.
6780         (REG_CLASS_CONTENTS): Likewise. Extend contents for VFP_REGS.
6781         (IS_VFP_CLASS): Define macro.
6782         (SECONDARY_OUTPUT_RELOAD_CLASS, SECONDARY_INPUT_RELOAD_CLASS): Use
6783         IS_VFP_CLASS.
6784         (REGISTER_MOVE_COST): Likewise.
6785         * config/arm/arm-protos.h (vfp3_const_double_rtx): Add prototype.
6786         * config/arm/vfp.md (VFPCC_REGNUM): Redefine as 127.
6787         (*arm_movsi_vfp, *thumb2_movsi_vfp, *movsfcc_vfp)
6788         (*thumb2_movsfcc_vfp, *abssf2_vfp, *negsf2_vfp, *addsf3_vfp)
6789         (*subsf3_vfp, *divsf_vfp, *mulsf_vfp, *mulsf3negsf_vfp)
6790         (*mulsf3addsf_vfp, *mulsf3subsf_vfp, *mulsf3negsfaddsf_vfp)
6791         (*extendsfdf2_vfp, *truncdfsf2_vfp, *truncsisf2_vfp)
6792         (*truncsidf2_vfp, fixuns_truncsfsi2, fixuns_truncdfsi2)
6793         (*floatsisf2_vfp, *floatsidf2_vfp, floatunssisf2)
6794         (floatunssidf2, *sqrtsf2_vfp, *cmpsf_split_vfp)
6795         (*cmpsf_trap_split_vfp, *cmpsf_vfp, *cmpsf_trap_vfp): Use 't'
6796         where appropriate for single-word registers.
6797         (*movsf_vfp, *thumb2_movsf_vfp, *movdf_vfp, *thumb2_movdf_vfp):
6798         As above. Fix type attributes.
6799         * config/arm/constraints.md (register_contraint "t"): Define.
6800         (register_constraint "w"): Change to D0-D15, or D0-D31 for
6801         VFPv3/NEON.
6802         (register_constraint "x"): Define.
6803         (constraint "Dv"): Define.
6804
6805 2007-07-03  Geoffrey Keating  <geoffk@apple.com>
6806
6807         * tree.h (DECL_ALIGN): Prevent use on a FUNCTION_DECL.
6808
6809 2007-07-03  Tom Tromey  <tromey@redhat.com>
6810
6811         * c-parser.c (objc_pq_context): Removed.
6812         (objc_need_raw_identifier): Likewise.
6813         (c_parser) <objc_pq_context>: New field.
6814         <objc_need_raw_identifier>: Likewise.
6815         (OBJC_NEED_RAW_IDENTIFIER): Removed.
6816         (c_lex_one_token): Update.
6817         (c_parser_objc_protocol_definition): Update.
6818         (c_parser_objc_method_definition): Update.
6819         (c_parser_objc_methodproto): Update.
6820         (c_parser_declspecs): Update.
6821
6822 2007-07-03  David Ung  <davidu@mips.com>
6823
6824         * config/mips/mips.c (mips_issue_rate): Return 4 for 74K processors.
6825
6826 2007-07-03  David Ung  <davidu@mips.com>
6827             Richard Sandiford  <richard@codesourcery.com>
6828
6829         * doc/invoke.texi: Document -march=74kf3_2.
6830         * config/mips/mips.h (PROCESSOR_74KF3_2): New processor_type.
6831         (TUNE_74K): Check for it.
6832         * config/mips/mips.c (mips_cpu_info): Add 74kf3_2.
6833         (mips_rtx_cost_data): Add an entry for PROCESSOR_74KF3_2.
6834         * config/mips/mips.md (cpu): Add 74kf3_2.
6835         * config/mips/74k.md (r74k_int_logical, r74k_int_arith, r74k_int_nop)
6836         (r74k_int_cmove, r74k_int_mult, r74k_int_mul3, r74k_int_mfhilo)
6837         (r74k_int_mthilo, r74k_int_div, r74k_int_call, r74k_int_jump)
6838         (r74k_int_load, r74k_int_store, r74k_unknown, r74k_multi): Add
6839         74kf3_2 to the CPU list.
6840         (r74kf3_2_fadd, r74kf3_2_fmove, r74kf3_2_fload, r74kf3_2_fstore)
6841         (r74kf3_2_fmul_sf, r74kf3_2_fmul_df, r74kf3_2_fdiv_sf)
6842         (r74kf3_2_fdiv_df, r74kf3_2_frsqrt_sf, r74kf3_2_frsqrt_df)
6843         (r74kf3_2_fcmp, r74kf3_2_fcvt, r74kf3_2_fxfer_to_c1)
6844         (r74kf3_2_fxfer_from_c1): New insn reservations.
6845
6846 2007-07-03  Richard Sandiford  <richard@codesourcery.com>
6847             David Ung  <davidu@mips.com>
6848
6849         * doc/invoke.texi: Replace -march=24kf with -march=24kf2_1 and
6850         -march=24kx with -march=24kf1_1.  Likewise 24ke[fx], 34k[fx]
6851         and 74k[fx].  Document aliases for the new options.
6852         * config/mips/mips.h (PROCESSOR_24KF): Rename to...
6853         (PROCESSOR_24KF2_1): ...this.
6854         (PROCESSOR_24KX): Rename to...
6855         (PROCESSOR_24KF1_1): ...this.
6856         (PROCESSOR_74KF): Rename to...
6857         (PROCESSOR_74KF2_1): ...this.
6858         (PROCESSOR_74KX): Rename to...
6859         (PROCESSOR_74KF1_1): ...this.
6860         (TUNE_74K): Update PROCESSOR_* names.
6861         * config/mips/mips.c (mips_cpu_info): Add 24kf2_1 as a synonym
6862         for 24kf.  Add 24kf1_1 and 24kfx as synonyms for 24kx.  Likewise
6863         the 24ke*, 34k* and 74k* processors.  Update PROCESSOR_* names.
6864         (mips_rtx_cost_data): Update processor names in comments.
6865         (mips_issue_rate): Update PROCESSOR_* names.
6866         * config/mips/mips.md (cpu): Rename 24kf to 24kf2_1, 24kx to
6867         24kf1_1, 74kf to 74kf2_1 and 74kx to 74kf1_1.
6868         * config/mips/24k.md: Rename FPU-related r24k_* insn reservations
6869         to r24kf2_1_*.  Rename r24kx_* insn reservations to r24kf1_1_*.
6870         Update cpu attribute names.
6871         (r24k_fpu_iss): Rename this reservation to...
6872         (r24kf2_1_fpu_iss): ...this and update all uses.
6873         (r24kx_fpu_iss): Rename this reservation to...
6874         (r24kf1_1_fpu_iss): ...this and update all uses.
6875         * config/mips/74k.md: Rename FPU-related r74kf_* insn reservations
6876         to r74kf2_1_*.  Rename r74kx_* insn reservations to r74kf1_1_*.
6877         Update cpu attribute names.
6878
6879 2007-07-01  Kaz Kojima  <kkojima@gcc.gnu.org>
6880
6881         * config/m32r/constraints.md: New file.
6882         * config/m32r/m32r.c: Include tm-constrs.h.
6883         (small_data_operand): Use satisfies_constraint_* instead of macro.
6884         (addr24_operand, gen_compare): Likewise.
6885         * config/m32r/m32r.h (REG_CLASS_FROM_LETTER): Remove.
6886         (INT8_P, UPPER16_P, UINT32_P, UINT5_P, INVERTED_SIGNED_8BIT,
6887         CONST_OK_FOR_LETTER_P, CONST_DOUBLE_OK_FOR_LETTER_P,
6888         EXTRA_CONSTRAINT): Likewise.
6889         * config/m32r/m32r.md: Include constraints.md.
6890         (*movsi_insn): Use satisfies_constraint_* instead of macro.
6891         (andsi3, iorsi3, xorsi3, seq_insn+1, sne): Likewise.
6892         * config/m32r/predicates.md (conditional_move_operand): Likewise.
6893         (two_insn_const_operand, int8_operand, uint16_operand,
6894         reg_or_int16_operand, reg_or_uint16_operand,
6895         reg_or_cmp_int16_operand, cmp_int16_operand,
6896         seth_add3_operand): Likewise.
6897
6898 2007-07-03  Eric Christopher  <echristo@gmail.com>
6899
6900         * libgcc2.h: Conditionally declare __bswapsi2 and
6901         __bswapdi2.
6902         
6903 2007-07-03  H.J. Lu  <hongjiu.lu@intel.com>
6904
6905         * ddg.c (check_sccs): Define only if ENABLE_CHECKING is
6906         defined.
6907
6908 2007-07-03  Rainer Orth  <ro@TechFak.Uni-Bielefeld.DE>
6909
6910         PR target/28307
6911         * gthr-posix.h [SUPPORTS_WEAK && GTHREAD_USE_WEAK]
6912         (__gthrw_pragma): Provide default definition.
6913         (__gthrw2): Use it.
6914         * gthr-posix.c (__gthrw_pragma): Define.
6915
6916 2007-07-03  Daniel Berlin  <dberlin@dberlin.org>
6917
6918         * tree-ssa-sccvn.c (set_ssa_val_to): Check for operand_equal_p
6919         before declaring inequality.
6920
6921 2007-07-03  Rask Ingemann Lambertsen  <rask@sygehus.dk>
6922
6923         * combine.c (recog_for_combine): Log the success or failure of
6924           matching new insn patterns against the machine description in
6925           detailed dumps.
6926
6927 2007-07-03  Revital Eres  <eres@il.ibm.com>
6928
6929         * ddg.c (print_sccs): New function.
6930         (check_sccs): New function.
6931         (create_ddg_all_sccs): Use it.
6932         * ddg.h (print_sccs): Declare.
6933         * modulo-sched.c (sms_order_nodes): Call print_sccs.
6934
6935 2007-07-03  Uros Bizjak  <ubizjak@gmail.com>
6936
6937         * targhooks.h (default_mode_for_suffix): New function declaration.
6938         * targhooks.c (default_mode_for_suffix): New default target hook.
6939         * target.h (struct c): New structure in the targetm struct.
6940         (mode_for_suffix): New target hook as part of struct c.
6941         target-def.h (TARGET_C_MODE_FOR_SUFFIX): Define as
6942         default_mode_for_suffix.
6943         (TARGET_C): New define.
6944         * c-lex.c: Include "target.h".
6945         (interpret_float): Use targetm.c.mode_for_suffix to determine
6946         the mode for a given non-standard suffix.
6947         Makefile.in (c-lex.o): Depend on $(TARGET_H).
6948
6949         * config/i386/i386.c (ix86_c_mode_for_suffix): New static function.
6950         (TARGET_C_MODE_FOR_SUFFIX): Define to ix86_c_mode_for_suffix.
6951
6952         * doc/extend.texi (Floating Types): New node.  Document __float80 and
6953         __float128 types.  Document 'w', 'W', 'q' and 'Q' suffixes.
6954
6955 2007-07-03  Kaz Kojima  <kkojima@gcc.gnu.org>
6956
6957         PR target/32506
6958         * config/sh/sh.md (udivsi3_i1_media): Use target_reg_operand
6959         predicate instead of target_operand.
6960         (divsi3_i1_media, divsi3_media_2): Likewise.
6961
6962 2007-07-02  Eric Botcazou  <ebotcazou@adacore.com>
6963
6964         * tree.h (alias_sets_might_conflict_p): Rename into
6965         alias_sets_must_conflict_p.
6966         * alias.c (alias_sets_might_conflict_p): Likewise.
6967         (alias_sets_conflict_p): Use it.
6968         (objects_must_conflict_p): Likewise.
6969         * c-common.c (strict_aliasing_warning): Adjust.
6970
6971 2007-07-02  Andrew Pinski  <andrew_pinski@playstation.sony.com>
6972
6973         * rtlhooks.c (gen_lowpart_if_possible): Check for
6974         invalid subreg before calling gen_lowpart_SUBREG.
6975
6976 2007-07-02  Geoffrey Keating  <geoffk@apple.com>
6977
6978         * config/darwin9.h: Add copyright notice.
6979         (LINK_COMMAND_SPEC): Add comment.
6980         (DARWIN_LIBSYSTEM_HAS_UNWIND): Define.
6981         * config/rs6000/darwin.h (MD_UNWIND_SUPPORT): Conditionalise on
6982         DARWIN_LIBSYSTEM_HAS_UNWIND.
6983
6984 2007-07-02  Jakub Jelinek  <jakub@redhat.com>
6985
6986         PR libgomp/32468
6987         * omp-low.c (check_combined_parallel): New function.
6988         (lower_omp_parallel): Call it via walk_stmts, set
6989         OMP_PARALLEL_COMBINED if appropriate.
6990         (determine_parallel_type): If OMP_FOR resp. OMP_SECTIONS
6991         isn't the only statement in WS_ENTRY_BB or OMP_RETURN
6992         the only one in PAR_EXIT_BB and not OMP_PARALLEL_COMBINED,
6993         don't consider it as combined parallel.
6994
6995 2007-07-02  Richard Sandiford  <richard@codesourcery.com>
6996
6997         * configure.ac (gcc_gxx_include_dir): Use $(libsubdir_to_prefix).
6998         (gcc_tooldir): Likewise.
6999         * configure: Regenerate.
7000         * Makefile.in (libsubdir_to_prefix): New variable, based on the
7001         old configure.ac gcc_tooldir setting.
7002         (prefix_to_exec_prefix): New variable.
7003         (DRIVER_DEFINES): Use $(libsubdir_to_prefix)$(prefix_to_exec_prefix)
7004         rather than $(unlibsubdir)/../ to derive TOOLDIR_BASE_PREFIX.
7005
7006 2007-07-02  Daniel Berlin  <dberlin@dberlin.org>
7007
7008         Fix PR tree-optimization/32583
7009         Fix PR tree-optimization/32584
7010         * tree-ssa-pre.c (phi_translate): Always pass seen bitmap.
7011         (phi_translate_set): Use phi_translate directly now.
7012         (make_values_for_stmt): Don't value number RHS if we already know
7013         it is constant.
7014
7015 2007-07-02  Steve Ellcey  <sje@cup.hp.com>
7016             Jim Wilson <wilson@specifix.com>
7017
7018         PR target/31684
7019         * haifa-sched.c (add_to_speculative_block): Change copy_rtx to
7020         copy_insn.
7021
7022 2007-07-02  Sandra Loosemore  <sandra@codesourcery.com>
7023             Richard Sandiford  <richard@codesourcery.com>
7024             Nigel Stephens  <nigel@mips.com>
7025
7026         * config/mips/mips-protos.h (mips16e_save_restore_info): New struct.
7027         (mips16e_output_save_restore): Declare.
7028         (mips16e_save_restore_pattern_p): Likewise.
7029         * config/mips/mips.h (GENERATE_MIPS16E_SAVE_RESTORE): New macro.
7030         * config/mips/mips.c (MIPS_MAX_FIRST_STACK_STEP): Return 0x7f8
7031         for GENERATE_MIPS16E_SAVE_RESTORE.  Return 0x400 for TARGET_MIPS16
7032         && !GENERATE_MIPS16E_SAVE_RESTORE && !TARGET_64BIT.
7033         (BITSET_P): New global macro, extracted from...
7034         (mips_for_each_saved_reg): ...here.
7035         (mips16e_save_restore_info): New struct.
7036         (mips16e_s2_s8_regs, mips16e_a0_a3_regs): New variables.
7037         (mips16e_save_restore_regs): New variable.
7038         (mips_split_plus, mips16e_find_first_register): New functions.
7039         (mips16e_mask_registers): New function.
7040         (compute_frame_size): Expand the commentary before the function.
7041         Enforce the MIPS16e save and restore register range restrictions.
7042         Pad the general register save area at the low end.
7043         (mips16e_save_restore_reg, mips16e_build_save_restore)
7044         (mips16e_save_restore_pattern_p, mips16e_add_register_range)
7045         (mips16e_output_save_restore, mips16e_collect_propagate_value)
7046         (mips16e_collect_argument_save, mips16e_collect_argument_saves):
7047         New functions.
7048         (mips_expand_prologue, mips_expand_epilogue): Handle
7049         GENERATE_MIPS16E_SAVE_RESTORE.
7050         * config/mips/mips.md (*mips16e_save_restore): New pattern.
7051
7052 2007-07-02  Uros Bizjak  <ubizjak@gmail.com>
7053
7054         PR tree-optimization/31966
7055         PR tree-optimization/32533
7056         * tree-if-conv.c (add_to_dst_predicate_list): Use "edge", not
7057         "basic_block" description as its third argument.  Update function
7058         calls to get destination bb from "edge" argument.  Save "cond" into
7059         aux field of the edge.  Update prototype for changed arguments.
7060         (if_convertible_loop_p): Clear aux field of incoming edges if bb
7061         contains phi node.
7062         (find_phi_replacement_condition): Operate on incoming edges, not
7063         on predecessor blocks.  If there is a condition saved in the
7064         incoming edge aux field, AND it with incoming bb predicate.
7065         Return source bb of the first edge.
7066         (clean_predicate_lists): Clean aux field of outgoing node edges.
7067         (tree_if_conversion): Do not initialize cond variable. Move
7068         variable declaration into the loop.
7069         (replace_phi_with_cond_gimple_modify_stmt): Remove unneded
7070         initializations of new_stmt, arg0 and arg1 variables.
7071
7072 2007-07-02  Jakub Jelinek  <jakub@redhat.com>
7073
7074         * tree-nrv.c (dest_safe_for_nrv_p): Grok any handled_component_p,
7075         SSA_NAMEs, RESULT_DECLs and PARM_DECLs.
7076
7077 2007-07-02  Richard Guenther  <rguenther@suse.de>
7078
7079         * tree-ssa.c (useless_type_conversion_p): Document
7080         future intent as defining the middle-end type system.
7081         Re-structure to call langhook last, group by type class,
7082         mark questionable parts.
7083
7084 2007-07-02  Richard Guenther  <rguenther@suse.de>
7085
7086         * tree-flow.h (types_compatible_p): Declare.
7087         * tree-ssa.c (types_compatible_p): New function.
7088         * ipa-type-escape.c (discover_unique_type): Use
7089         types_compatible_p instead of lang_hooks.types_compatible_p.
7090         * tree-ssa-copyrename.c (copy_rename_partition_coalesce): Likewise.
7091         * tree-vn.c (expressions_equal_p): Likewise.
7092         * tree.c (fields_compatible_p): Likewise.
7093         * tree-ssa-dom.c (avail_expr_eq): Likewise.
7094         (cprop_operand): Use useless_type_conversion_p instead of
7095         lang_hooks.types_compatible_p.
7096         * tree-inline.c (setup_one_parameter): Likewise.
7097         (declare_return_variable): Likewise.
7098         * tree-nrv.c (tree_nrv): Likewise.
7099         * tree-ssa-ccp.c (maybe_fold_offset_to_array_ref): Likewise.
7100         (maybe_fold_offset_to_component_ref): Likewise.
7101         (maybe_fold_offset_to_reference): Likewise.
7102         * tree-ssa-copy.c (may_propagate_copy): Likewise.
7103         (merge_alias_info): Likewise.
7104         * tree-ssa-forwprop.c (forward_propagate_addr_expr_1): Likewise.
7105         * tree-ssa-phiopt.c (conditional_replacement): Likewise.
7106         * tree-ssa-reassoc.c (optimize_ops_list): Likewise.
7107         * tree-tailcall.c (find_tail_calls): Likewise.
7108         * tree-vect-generic.c (expand_vector_operations_1): Likewise.
7109         * gimplify.c (canonicalize_addr_expr): Likewise.
7110         (fold_indirect_ref_rhs): Likewise.
7111         (gimplify_addr_expr): Likewise.  Swap parameters to cpt_same_type.
7112         (cpt_same_type): Likewise.
7113         (check_pointer_types_r): Swap parameters to cpt_same_type
7114         where appropriate.
7115         * fold-const.c (fold_convert): Revert fix for PR15988.
7116         * tree-inline.c (setup_one_parameter): Instead fix it here by
7117         using fold_build1 instead of fold_convert and checking for
7118         error_mark_node.  Convert only if the conversion is necessary.
7119
7120 2007-07-02  Joseph Myers  <joseph@codesourcery.com>
7121
7122         * configure.ac: Check for .gnu_attribute on Power.
7123         * configure: Regenerate.
7124         * config/rs6000/rs6000.c (rs6000_file_start): If supported, output
7125         attribute for floating-point ABI.
7126
7127 2007-07-02  Ira Rosen  <irar@il.ibm.com>
7128
7129         PR tree-optimization/32230
7130         PR tree-optimization/32477
7131         * tree-vect-analyze.c (vect_analyze_data_refs): Fail if base 
7132         address is a constant.
7133
7134 2007-07-02  Richard Sandiford  <richard@codesourcery.com>
7135
7136         * config.gcc (mipsisa32-*-elf*, mipsisa32el-*-elf*)
7137         (mipsisa32r2-*-elf*, mipsisa32r2el-*-elf*)
7138         (mipsisa64-*-elf*, mipsisa64el-*-elf*): Combine top-level
7139         stanzas.  Use the first part of the triplet to set MIPS_ISA_DEFAULT.
7140         Remove redundant setting of MASK_FLOAT64 and MASK_64BIT for the
7141         64-bit targets.  Add support for *-elfoabi*.
7142         * config/mips/t-isa3264 (MULTILIB_OPTIONS, MULTILIB_DIRNAMES): Use
7143         different settings if $(tm_defines) does not select the EABI.
7144         (MULTILIB_EXCLUSIONS): Define in those circumstances.
7145         * config/mips/mips.h (MIPS_ISA_LEVEL_OPTION_SPEC): New macro.
7146         (MIPS_ARCH_OPTION_SPEC): Likewise.
7147         (MIPS_ISA_LEVEL_SPEC): Likewise.
7148         (OPTION_DEFAULT_SPECS): Use MIPS_ARCH_OPTION_SPEC.
7149         * config/mips/elfoabi.h: New file.
7150
7151 2007-07-02  Richard Guenther  <rguenther@suse.de>
7152
7153         * tree-flow.h (tree_ssa_useless_type_conversion_1): Rename to ...
7154         (useless_type_conversion_p): ... this.
7155         * tree-ssa.c (tree_ssa_useless_type_conversion_1): Rename to ...
7156         (useless_type_conversion_p): ... this.
7157         * builtins.c (fold_builtin_memory_op): Rename
7158         tree_ssa_useless_type_conversion_1 to useless_type_conversion_p.
7159         * tree-cfg.c (verify_expr): Likewise.
7160         * tree-ssa-address.c (tree_ssa_useless_type_conversion_1): Likewise.
7161         * tree-ssa-ccp.c (ccp_fold): Likewise.
7162         * tree-ssa-copy.c (may_propagate_copy): Likewise.
7163         * tree-ssa-dom.c (eliminate_redundant_computations): Likewise.
7164         * tree-ssa-forwprop.c (forward_propagate_addr_expr_1): Likewise.
7165         * tree-ssa-loop-niter.c (refine_bounds_using_guard): Likewise.
7166         * tree-ssa-pre.c (eliminate): Likewise.
7167         * tree-ssa.c (delete_tree_ssa): Likewise.
7168         (tree_ssa_useless_type_conversion): Likewise.
7169         * tree.c (build2_stat): Likewise.
7170
7171 2007-07-01  Daniel Berlin  <dberlin@dberlin.org>
7172
7173         Fix PR tree-optimization/32571
7174         * tree-ssa-sccvn.c (visit_use): Shortcut copies to avoid
7175         simplifying them.
7176
7177 2007-07-01  Daniel Berlin  <dberlin@dberlin.org>
7178
7179         * tree-ssa-sccvn.c (copy_reference_ops_from_ref): Handle constants
7180         and other expected operations explicitly, change default to
7181         gcc_unreachable. 
7182
7183 2007-07-01  Daniel Jacobowitz  <dan@codesourcery.com>
7184
7185         * config/arm/arm.c (arm_cannot_copy_insn_p): Do not expect a
7186         PARALLEL.
7187         * config/arm/arm.md (pic_add_dot_plus_four, pic_add_dot_plus_eight)
7188         (tls_load_dot_plus_eight): Move the label number into the unspec.
7189         * config/arm/thumb2.md (pic_load_dot_plus_four): Likewise.
7190
7191 2007-07-01  Andreas Schwab  <schwab@suse.de>
7192
7193         * dwarf2out.c (initial_return_save): Define only if used.
7194
7195 2007-07-01  Kenneth Zadeck <zadeck@naturalbridge.com>
7196
7197         Unreverting Richard's Revert of:
7198
7199         2007-06-27  Richard Sandiford  <richard@codesourcery.com>
7200
7201         * dce.c (deletable_insn_p_1): New function, split out from...
7202         (deletable_insn_p): ...here.  Only treat bare USEs and CLOBBERs
7203         specially, not those inside PARALLELs.  Remove BODY argument
7204         and adjust recursive call accordingly.
7205         (prescan_insns_for_dce): Update call to delete_insn_p.
7206
7207 2007-07-01  Vladimir Yanovsky  <yanov@il.ibm.com>
7208             Revital Eres  <eres@il.ibm.com>
7209
7210         * ddg.c (create_ddg_all_sccs): Fix missed
7211         initialization of scc_nodes.
7212
7213 2007-07-01  Uros Bizjak  <ubizjak@gmail.com>
7214
7215         PR middle-end/32559
7216         * fold-const.c (fold-binary) [PLUS_EXPR]: Convert ~X + X to 1 or
7217         X + ~X to 1 only for INTEGRAL_TYPE_P type.
7218
7219 2007-06-30  Joseph Myers  <joseph@codesourcery.com>
7220
7221         * configure.ac: Check for .gnu_attribute on MIPS.
7222         * configure, config.in: Regenerate.
7223         * config/mips/mips.c (mips_file_start): If supported, output
7224         attribute for floating-point ABI.
7225
7226 2007-06-30  Uros Bizjak  <ubizjak@gmail.com>
7227
7228         PR target/32433
7229         * config/i386/i386.md (ffssi2): Expand as ffs_cmove for TARGET_CMOVE.
7230         (ffs_cmove): New expander to expand using ctz pattern.
7231         (*ffs_cmove): Remove pattern.
7232         (*ffs_no_cmove): Enable only for !TARGET_CMOVE.
7233         (ffsdi2): Expand using ctz pattern.
7234         (*ffs_rex64): Remove pattern.
7235
7236 2007-06-30  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
7237
7238         PR rtl-optimization/32296
7239         * pa.md (return): Delete pattern.
7240         (return_internal): Remove "(const_int 1)" from pattern.
7241         (epilogue): Use return_internal pattern for trivial returns.
7242         * pa-protos.h (hppa_can_use_return_insn_p): Delete declaration.
7243         * pa.c (hppa_can_use_return_insn_p): Delete function.  Include "df.h".
7244
7245 2007-06-30  Daniel Berlin  <dberlin@dberlin.org>
7246
7247         * tree-ssa-pre.c (is_exception_related): New function
7248         (can_value_number_operation): Use it.
7249
7250 2007-06-30  Daniel Berlin  <dberlin@dberlin.org>
7251         
7252         Fix PR tree-optimization/32540
7253         Fix PR tree-optimization/31651
7254
7255         * tree-ssa-sccvn.c: New file.
7256
7257         * tree-ssa-sccvn.h: Ditto.
7258         
7259         * tree-vn.c: Include tree-ssa-sccvn.h
7260         (val_expr_paid_d): Removed.
7261         (value_table): Ditto.
7262         (vn_compute): Ditto.
7263         (val_expr_pair_hash): Ditto.
7264         (val_expr_pair_expr_eq): Ditto.
7265         (copy_vuses_from_stmt): Ditto.
7266         (vn_delete): Ditto.
7267         (vn_init): Ditto.
7268         (shared_vuses_from_stmt): Ditto.
7269         (print_creation_to_file): Moved up.
7270         (sort_vuses): Ditto.
7271         (sort_vuses_heap): Ditto.
7272         (set_value_handle): Make non-static.
7273         (make_value_handle): Ditto.
7274         (vn_add): Rewritten to use sccvn lookups.
7275         (vn_add_with_vuses): Ditto.
7276         (vn_lookup): Ditto (and second argument removed).
7277         (vn_lookup_with_vuses): Ditto.
7278         (vn_lookup_or_add): Ditto (and second argument removed);
7279         (vn_lookup_or_add_with_vuses): Ditto.
7280         (vn_lookup_with_stmt): New.
7281         (vn_lookup_or_add_with_stmt): Ditto.
7282         (create_value_handle_for_expr): Ditto.
7283
7284         * tree-ssa-pre.c: Include tree-ssa-sccvn.h.
7285         (seen_during_translate): New function.
7286         (phi_trans_lookup): Use iterative_hash_expr, not vn_compute.
7287         (phi_trans_add): Ditto.
7288         (constant_expr_p): FIELD_DECL is always constant.
7289         (phi_translate_1): Renamed from phi_translate, add seen bitmap.
7290         Use constant_expr_p.
7291         Avoid infinite recursion on mutually valued expressions.
7292         Change callers of vn_lookup_or_add.
7293         (phi_translate): New function.
7294         (compute_antic_safe): Allow phi nodes.
7295         (create_component_ref_by_pieces): Update for FIELD_DECL change.
7296         (find_or_generate_expression): Rewrite slightly.
7297         (create_expression_by_pieces): Updated for vn_lookup_or_add
7298         change.
7299         Update VN_INFO for new names.
7300         (insert_into_preds_of_block): Update for new names.
7301         (add_to_exp_gen): New function.
7302         (add_to_sets): Use vn_lookup_or_add_with_stmt.
7303         (find_existing_value_expr): Rewrite to changed vn_lookup.
7304         (create_value_expr_from): Ditto, and use add_to_exp_gen.
7305         (try_look_through_load): Removed.
7306         (try_combine_conversion): Ditto.
7307         (get_sccvn_value): New function.
7308         (make_values_for_phi): Ditto.
7309         (make_values_for_stmt): Ditto.
7310         (compute_avail): Rewritten for vn_lookup_or_add changes and to use
7311         SCCVN.
7312         (init_pre): Update for SCCVN changes.
7313         (fini_pre): Ditto.
7314         (execute_pre): Ditto.
7315
7316         * tree-flow.h (make_value_handle): Declare.
7317         (set_value_handle): Ditto.
7318         (sort_vuses_heap): Ditto.
7319         (vn_lookup_or_add_with_stmt): Ditto.
7320         (vn_lookup_with_stmt): Ditto.
7321         (vn_compute): Remove.
7322         (vn_init): Ditto.
7323         (vn_delete): Ditto.
7324         (vn_lookup): Update arguments.
7325
7326         * Makefile.in (tree-ssa-pre.o): Add tree-ssa-sccvn.h
7327         (tree-vn.o): Ditto.
7328         (tree-ssa-sccvn.o): New.
7329         (OBJS-common): Add tree-ssa-sccvn.o
7330         
7331 2007-06-30  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
7332
7333         PR c/4076
7334         * c-typeck.c (build_external_ref): Don't mark as used if called
7335         from itself.
7336         * calls.c (rtx_for_function_call): Likewise.
7337         
7338 2007-06-30  Richard Sandiford  <richard@codesourcery.com>
7339
7340         Revert:
7341
7342         2007-06-27  Richard Sandiford  <richard@codesourcery.com>
7343
7344         * dce.c (deletable_insn_p_1): New function, split out from...
7345         (deletable_insn_p): ...here.  Only treat bare USEs and CLOBBERs
7346         specially, not those inside PARALLELs.  Remove BODY argument
7347         and adjust recursive call accordingly.
7348         (prescan_insns_for_dce): Update call to delete_insn_p.
7349
7350 2007-06-30  Rask Ingemann Lambertsen <rask@sygehus.dk>
7351
7352         * combine.c (combine_validate_cost): New parameter NEWOTHERPAT.
7353         (try_combine): Move potential calls to undo_all() so they happen
7354         before we commit to using the combined insns.
7355
7356 2006-06-30  Jan Hubicka  <jh@suse.cz>
7357
7358         * loop-unroll.c (unroll_loop_runtime_iterations): Unshare newly emit
7359         code.
7360
7361 2006-06-30  Thomas Neumann  <tneumann@users.sourceforge.net>
7362
7363         * ipa.c (cgraph_postorder): Cast according to the coding conventions.
7364         (cgraph_remove_unreachable_nodes): Likewise.
7365         * ipa-cp.c (ipcp_propagate_stage): Use BOTTOM instead of integer 0.
7366         * ipa-inline.c (update_caller_keys): Cast according to the coding
7367         conventions.
7368         (cgraph_decide_recursive_inlining): Likewise.
7369         (cgraph_decide_inlining_of_small_function): Likewise.
7370         (try_inline): Likewise.
7371         (cgraph_decide_inlining_incrementally): Likewise.
7372         * ipa-pure-const.c (get_function_state): Likewise.
7373         (scan_function): Likewise.
7374         (analyze_function): Likewise.
7375         (static_execute): Likewise.
7376         * ipa-reference.c (scan_for_static_refs): Likewise.
7377         (merge_callee_local_info): Likewise.
7378         (analyze_function): Use type safe memory macros.
7379         (static_execute): Likewise. Cast according to the coding conventions.
7380         * ipa-type-escape.c (scan_for_regs): Cast according to the coding
7381         conventions.
7382         * ipa-utils.c (searchc): Likewise. Avoid using C++ keywords as variable
7383         names.
7384         (ipa_utils_reduced_inorder): Likewise. Use type safe memory macros.
7385         * ipa-utils.h (struct ipa_dfa_info): Avoid using C++ keywords as
7386         variable names.
7387
7388 2007-06-29  Andrew Pinski  <andrew_pinski@playstation.sony.com>
7389
7390         PR middle-end/30024
7391         * emit-rtl.c (init_emit_once): Intilize const_tiny_rtx[0]
7392         for complex modes (both int and real).
7393
7394 2007-06-29  Jan Hubicka  <jh@suse.cz>
7395
7396         * cse.c: Rever accidentally comitted TODO_verify_rtl_sharing change.
7397
7398 2007-06-29  Jan Hubicka  <jh@suse.cz>
7399
7400         PR middle-end/32372
7401         * cse.c (cse_insn): Avoid invalid sharing in between register note and
7402         the insn pattern.
7403
7404 2007-06-29  Anatoly Sokolov <aesok@post.ru>
7405
7406         PR target/32335
7407         * config/avr/avr.c: Include dataflow header file.
7408         (expand_prologue): Adjust for prologue insn change.
7409         * config/avr/avr.md (call_prologue_saves): Only modify REG_SP once
7410         inside a insn.
7411
7412 2007-06-29  Richard Guenther  <rguenther@suse.de>
7413
7414         PR middle-end/32493
7415         * gimplify.c (gimplify_call_expr): Ignore variable argument parts
7416         during type verification.
7417
7418 2007-06-29  Jan Hubicka  <jh@suse.cz>
7419
7420         * recog.c (validate_change_rtx_1): Unshare TO argument.
7421
7422 2007-06-29  Uros Bizjak  <ubizjak@gmail.com>
7423
7424         PR tree-optimization/24659
7425         * tree-vect-transform.c (vectorizable_call): Handle
7426         (nunits_in == nunits_out / 2) and (nunits_out == nunits_in / 2) cases.
7427
7428         * config/i386/sse.md (vec_pack_sfix_v2df): New expander.
7429         * config/i386/i386.c (enum ix86_builtins)
7430         [IX86_BUILTIN_VEC_PACK_SFIX]: New constant.
7431         (struct bdesc_2arg) [__builtin_ia32_vec_pack_sfix]: New builtin
7432         description.
7433         (ix86_init_mmx_sse_builtins): Define all builtins with 2 arguments as
7434         const using def_builtin_const.
7435         (ix86_expand_binop_builtin): Remove bogus assert() that insn wants
7436         input operands in the same modes as the result.
7437         (ix86_builtin_vectorized_function): Handle BUILT_IN_LRINT.
7438
7439 2007-06-29  Richard Sandiford  <rsandifo@nildram.co.uk>
7440
7441         * df-problems.c (df_set_unused_notes_for_mw): Fix formatting.
7442         (df_set_dead_notes_for_mw): Likewise.
7443
7444 2007-06-29  Eric Botcazou  <ebotcazou@adacore.com>
7445
7446         * c-common.c (pointer_int_sum): Do the negation in sizetype.
7447
7448 2007-06-28  DJ Delorie  <dj@redhat.com>
7449
7450         * config/m32c/m32c.h (OVERRIDE_OPTIONS): Omit unneeded semicolon.
7451
7452 2007-06-28  Geoffrey Keating  <geoffk@apple.com>
7453
7454         * doc/invoke.texi (C++ Dialect Options): Document
7455         fvisibility-ms-compat.
7456         * c.opt (fvisibility-ms-compat): New.
7457
7458 2007-06-28  Andrew Pinski  <andrew_pinski@playstation.sony.com>
7459
7460         PR tree-opt/32417
7461         * tree-affine.c (aff_combination_add_elt): Handle
7462         pointer addition specially.
7463
7464 2007-06-28  Jakub Jelinek  <jakub@redhat.com>
7465
7466         * config/rs6000/rs6000.c (rs6000_function_ok_for_sibcall): Ensure
7467         decl is non-external for AIX ABI.
7468
7469 2007-06-28  David Edelsohn  <edelsohn@gnu.org>
7470
7471         * config/rs6000/predicates.md (current_file_function_operand):
7472         Ensure the symbol is non-external for AIX ABI.
7473
7474 2007-06-28  Nick Clifton  <nickc@redhat.com>
7475
7476         * common.opt (fipa-matrix-reorg): Add Optimization attribute.
7477         (fdce, fdse, fpredictive-commoning): Likewise.
7478
7479 2007-06-28 Francois-Xavier Coudert <fxcoudert@gcc.gnu.org>
7480
7481         PR other/31400
7482         * gcc.c (process_command): Recognize the new -static-libgfortran
7483         option.
7484
7485 2007-06-27  Rask Ingemann Lambertsen  <rask@sygehus.dk>
7486
7487         PR target/32418
7488         * config/m32c/m32c.c (m32c_eh_return_stackadj_rtx): Dataflow fix:
7489         Use a call clobbered hard reg instead of a pseudo reg.
7490
7491 2007-06-27  Kaz Kojima  <kkojima@gcc.gnu.org>
7492
7493         * config/sh/sh.md (load_gbr): Use correct operand constraint.
7494
7495 2007-06-27  Kaz Kojima  <kkojima@gcc.gnu.org>
7496
7497         PR target/32479
7498         * config/sh/sh.md (udivsi3): Don't wrap the sequence with
7499         REG_LIBCALL and REG_RETVAL notes.
7500         (divsi3, mulsi3): Likewise.
7501         (mulhisi3): Likewise.  Use emit_libcall_block.
7502         (umulhisi3, smulsi3_highpart, umulsi3_highpart_i): Likewise.
7503
7504 2007-06-27  Seongbae Park  <seongbae.park@gmail.com>
7505
7506         PR rtl-optimization/32481
7507         * combine.c (adjust_for_new_dest): Rescan the changed insn.
7508
7509 2007-06-27  Richard Sandiford  <richard@codesourcery.com>
7510
7511         * dce.c (deletable_insn_p_1): New function, split out from...
7512         (deletable_insn_p): ...here.  Only treat bare USEs and CLOBBERs
7513         specially, not those inside PARALLELs.  Remove BODY argument
7514         and adjust recursive call accordingly.
7515         (prescan_insns_for_dce): Update call to delete_insn_p.
7516
7517 2007-06-27  Richard Guenther  <rguenther@suse.de>
7518
7519         PR middle-end/32492
7520         * tree.h (fold_convertible_p): Declare.
7521         * fold-const.c (fold_convertible_p): New function.
7522         * gimplify.c (gimplify_call_expr): Use fold_convertible_p
7523         instead of lang_hooks.types_compatible_p.
7524
7525 2007-06-26  Jan Hubicka  <jh@suse.cz>
7526
7527         * fwprop.c (try_fwprop_subst): Use validate_unshare_change.
7528         * postreload.c (reload_cse_simplify_set): Instead of copying the rtx
7529         early use validate_unshare_change.
7530         (reload_combine): Likewise.
7531         * recog.c (change_t): New field unshare.
7532         (validate_change_1): Rename from validate_change; add argument unshare.
7533         (validate_change): Turn into wrapper of validate_change_1; update
7534         prototype for bools.
7535         (validate_unshare_change): New.
7536         (confirm_change_group): Unshare changes if asked for; avoid unnecesary
7537         calls of df_insn_rescan.
7538         * recog.h (validate_change): Replace ints by bools.
7539         (validate_unshare_change): Declare.
7540
7541 2007-06-26  Kenneth Zadeck <zadeck@naturalbridge.com>
7542
7543         * tree.def (VEC_WIDEN_MULT_LO_EXPR): Corrected string name.
7544         
7545 2007-06-26  Steve Ellcey  <sje@cup.hp.com>
7546
7547         * builtins.c (expand_builtin_next_arg): Change Pmode to ptr_mode.
7548
7549 2007-06-25  Jan Hubicka  <jh@suse.cz>
7550
7551         * ipa-inline.c (cgraph_mark_inline): Assert that we never inline
7552         uninlinable call.
7553         (cgraph_decide_inlining_of_small_function, cgraph_decide_inlining,
7554         cgraph_decide_inlining_incrementally): Move uninlinability checks to
7555         places other call site specific checks are performed.
7556
7557 2007-06-25  Andrew Pinski  <andrew_pinski@playstation.sony.com>
7558
7559         PR tree-opt/32421
7560         * tree-vect-transform.c (vectorizable_operation): Convert
7561         POINTER_PLUS_EXPR over to PLUS_EXPR.
7562
7563 2007-06-25  Chao-ying Fu  <fu@mips.com>
7564
7565         * doc/rtl.texi (Machine Modes): Document QQ, HQ, SQ, DQ, TQ,
7566         UQQ, UHQ, USQ, UDQ, UTQ, HA, SA, DA, TA, UHA, USA, UDA, and UTAmodes.
7567         Document MODE_FRACT, MODE_UFRACT, MODE_ACCUM, MODE_UACCUM.
7568         Document GET_MODE_IBIT, and GET_MODE_FBIT.
7569
7570         * machmode.h (VECTOR_MODE_P): Test MODE_VECTOR_FRACT,
7571         MODE_VECTOR_UFRACT, MODE_VECTOR_ACCUM, MODE_VECTOR_UACCUM.
7572         (SCALAR_FRACT_MODE_P, SCALAR_UFRACT_MODE_P, ALL_SCALAR_FRACT_MODE_P,
7573         SCALAR_ACCUM_MODE_P, SCALAR_UACCUM_MODE_P, ALL_SCALAR_ACCUM_MODE_P,
7574         SIGNED_SCALAR_FIXED_POINT_MODE_P, UNSIGNED_SCALAR_FIXED_POINT_MODE_P,
7575         ALL_SCALAR_FIXED_POINT_MODE_P, FRACT_MODE_P, UFRACT_MODE_P,
7576         ALL_FRACT_MODE_P, ACCUM_MODE_P, UACCUM_MODE_P, ALL_ACCUM_MODE_P,
7577         SIGNED_FIXED_POINT_MODE_P, UNSIGNED_FIXED_POINT_MODE_P,
7578         ALL_FIXED_POINT_MODE_P): New define.
7579         (CLASS_HAS_WIDER_MODES_P): Test MODE_FRACT, MODE_UFRACT, MODE_ACCUM,
7580         MODE_UACCUM.
7581         (GET_MODE_IBIT, GET_MODE_FBIT): New define.
7582
7583         * mode-classes.def (MODE_FRACT, MODE_UFRACT, MODE_ACCUM, MODE_UACCUM,
7584         MODE_VECTOR_FRACT, MODE_VECTOR_UFRACT, MODE_VECTOR_ACCUM,
7585         MODE_VECTOR_UACCUM): New mode classes.
7586
7587         * machmode.def: Document FRACT_MODE, UFRACT_MODE, ACCUM_MODE,
7588         UACCUM_MODE, ADJUST_IBIT, and ADJUST_FBIT.
7589         Add QQ, HQ, SQ, DQ, TQ, UQQ, UHQ, USQ, UDQ, UTQ, HA, SA, DA, TA, UHA,
7590         USA, UDA, and UTA.
7591
7592         * genmodes.c (struct mode_data): Add ibit and fbit fields.
7593         (blank_mode): Initialize ibit and fbit.
7594         (adj_ibit, adj_fbit): New to adjust ibit and fbit.
7595         (vector_class): Handle MODE_FRACT, MODE_UFRACT, MODE_ACCUM,
7596         MODE_UACCUM.
7597         (new_adjust): Change required_class to required_class_from and
7598         required_class_to for testing within a range.
7599         (complete_mode): Handle MODE_FRACT, MODE_UFRACT, MODE_ACCUM,
7600         MODE_UACCUM, MODE_VECTOR_FRACT, MODE_VECTOR_UFRACT, MODE_VECTOR_ACCUM,
7601         MODE_VECTOR_UACCUM.
7602         (FRACT_MODE, UFRACT_MODE, ACCUM_MODE, UACCUM_MODE): New define.
7603         (make_fixed_point_mode): New.
7604         (_ADD_ADJUST): Change C to C1 and C2.
7605         (ADJUST_BYTESIZE, ADJUST_ALIGNMENT, ADJUST_FLOAT_FORMAT): Change to
7606         use a range for machine classes.
7607         (ADJUST_IBIT, ADJUST_FBIT): New.
7608         (emit_insn_modes_h): Output defines of CONST_MODE_IBIT and
7609         CONST_MODE_FBIT.
7610         (emit_mode_adjustments): Handle MODE_VECTOR_FRACT, MODE_VECTOR_UFRACT,
7611         MODE_VECTOR_ACCUM, MODE_VECTOR_UACCUM.
7612         Emit adjustment for ibit and fbit.
7613         (emit_mode_ibit, emit_mode_fbit): New.
7614         (emit_insn_modes_c): Add emit_mode_ibit and emit_mode_fbit.
7615
7616 2007-06-25  Nathan Froyd  <froydnj@codesourcery.com>
7617
7618         * config/rs6000/spe.md (*frob_ti_tf_2): Specify an input_operand
7619         as the source of the set.
7620
7621 2007-06-25  Roman Zippel <zippel@linux-m68k.org>
7622
7623         * config/m68k/m68k.h (DATA_REGNO_P, ADDRESS_REGNO_P, INT_REGNO_P,
7624         FP_REGNO_P): Use IN_RANGE.
7625         (REGNO_OK_FOR_DATA_P, REGNO_OK_FOR_FP_P): Remove.
7626         (REGNO_OK_FOR_INDEX_NONSTRICT_P, REGNO_OK_FOR_BASE_NONSTRICT_P): New.
7627         (DATA_REG_P): Use DATA_REGNO_P.
7628         (FP_REG_P): Use FP_REGNO_P.
7629         (ADDRESS_REG_P): Use ADDRESS_REGNO_P.
7630         * config/m68k/m68k.c (m68k_legitimate_base_reg_p): Use
7631         REGNO_OK_FOR_INDEX_NONSTRICT_P, REGNO_OK_FOR_BASE_NONSTRICT_P.
7632
7633 2007-06-24  Jan Hubicka  <jh@suse.cz>
7634
7635         PR middle-end/30563
7636         * cgraphunit.c (cgraph_analyze_function): Fix ordering problem.
7637
7638 2007-06-24  Sebastian Pop  <sebpop@gmail.com>
7639
7640         PR middle-end/32461
7641         * fold-const.c (fold_binary): Strip nops of operand 0
7642         of BIT_NOT_EXPR before calling operand_equal_p.
7643         * testsuite/gcc.dg/tree-ssa/pr32461-1.c: New.
7644         * testsuite/gcc.dg/tree-ssa/pr32461-2.c: New.
7645
7646 2007-06-23  Mark Mitchell  <mark@codesourcery.com>
7647
7648         * doc/extend.texi: Document that dllimport and dllexport imply
7649         default visibility.
7650         * tree.c (handle_dll_attribute): Set DECL_VISIBILITY on the
7651         imported or exported declaration, including type declarations.
7652         * c-common.c (handle_visibility_attribute): Check for conflicts
7653         with dllimport/dllexport.
7654         (c_determine_visibility): Handle dllimport/dllexport as an
7655         explicit visibility atttribute.
7656
7657 2007-06-23  Richard Guenther  <rguenther@suse.de>
7658
7659         PR tree-optimization/16876
7660         PR middle-end/29478
7661         * tree.h (CALL_CANNOT_INLINE_P): New macro to access static_flag
7662         for CALL_EXPRs.
7663         * tree-inline.c (initialize_inlined_parameters): Do not call
7664         lang_hooks.tree_inlining.convert_parm_for_inlining.
7665         * cgraphbuild.c (initialize_inline_failed): Set inline failed
7666         reason for mismatched types.
7667         * gimplify.c (gimplify_call_expr): Verify the call expression
7668         arguments match the called function type signature.  Otherwise
7669         mark the call expression to be not considered for inlining
7670         using CALL_CANNOT_INLINE_P flag.
7671         * ipa-inline.c (cgraph_mark_inline): Honor CALL_CANNOT_INLINE_P on the
7672         edges call expression.
7673         (cgraph_decide_inlining_of_small_function): Likewise.
7674         (cgraph_decide_inlining): Likewise.
7675         * c-objc-common.h (LANG_HOOKS_TREE_INLINING_CONVERT_PARM_FOR_INLINING):
7676         Remove define.
7677         * c-tree.h (c_convert_parm_for_inlining): Remove declaration.
7678         * c-typeck.c (c_convert_parm_for_inlining): Remove.
7679         * langhooks-def.h (lhd_tree_inlining_convert_parm_for_inlining):
7680         Remove declaration.
7681         (LANG_HOOKS_TREE_INLINING_CONVERT_PARM_FOR_INLINING): Remove define.
7682         * langhooks.c (lhd_tree_inlining_convert_parm_for_inlining):
7683         Remove.
7684         * langhooks.h (struct lang_hooks_for_tree_inlining): Remove
7685         convert_parm_for_inlining member.
7686
7687 2007-06-23  Richard Earnshaw  <rearnsha@arm.com>
7688
7689         PR target/31152
7690         * arm.md (negscc): Match the correct operand for optimized LT0 test.
7691         Remove optimization for GT.
7692
7693 2007-06-23  Kenneth Zadeck <zadeck@naturalbridge.com>
7694
7695         PR middle-end/32437
7696         * dce.c (deletable_insn_p): Add extra parameter and recurse if insn
7697         is a PARALLEL.
7698         (prescan_insns_for_dce): Add extra parameter.
7699         
7700 2007-06-23  Jan Hubicka  <jh@suse.cz>
7701
7702         PR middle-end/31541
7703         * gimplify.c (mark_addressable): New function.
7704         (gimplify_modify_expr_rhs, gimplify_addr_expr, gimplify_expr): Use it.
7705
7706 2007-06-22  Uros Bizjak  <ubizjak@gmail.com>
7707
7708         PR middle-end/32374
7709         * expr.c (store_constructor): Do not clobber non-zeroed memory. 
7710
7711 2007-06-22  Uros Bizjak  <ubizjak@gmail.com>
7712
7713         PR target/32413
7714         * config/i386/i386.c (ix86_register_move_cost): Rise the cost of
7715         moves between MMX/SSE registers to at least 8 units to prevent
7716         ICE caused by non-tieable SI/HI/QImodes in SSE registers. 
7717
7718 2007-06-22  Uros Bizjak  <ubizjak@gmail.com>
7719
7720         * config/i386/i386.c (override_options): Correct x86_sahf
7721         setting condition.
7722
7723 2007-06-21  David Daney  <ddaney@avtrex.com>
7724
7725         PR target/32406
7726         * config/mips/mips.md (define_constants): Rename UNSPEC_EH_RECEIVER
7727         to UNSPEC_NONLOCAL_GOTO_RECEIVER globally.
7728         (exception_receiver): Renamed to ...
7729         (nonlocal_goto_receiver): ... this.
7730
7731 2007-06-22  Roman Zippel <zippel@linux-m68k.org>
7732
7733         * df-scan.c (df_read_modify_subreg_p): Use REGMODE_NATURAL_SIZE.
7734         (df_def_record_1): Set (DF_REF_READ_WRITE | DF_REF_PARTIAL) for
7735         partial register accesses.
7736
7737 2007-06-21  Adam Nemet  <anemet@caviumnetworks.com>
7738
7739         * fold-const.c (debug_fold_checksum): Move it under
7740         ENABLE_FOLD_CHECKING.
7741
7742 2007-06-21  Sebastian Pop  <sebpop@gmail.com>
7743
7744         PR middle-end/20623
7745         * tree.h (debug_fold_checksum): Declared.
7746         * fold-const.c (build_fold_addr_expr_with_type_1): New.
7747         (build_fold_addr_expr_with_type, build_fold_addr_expr): Use 
7748         build_fold_addr_expr_with_type_1.
7749         (fold_addr_expr, debug_fold_checksum): New.
7750         (fold_checksum_tree): Don't fold TREE_CHAIN of an SSA_NAME.
7751         (fold_unary, fold_comparison, split_address_to_core_and_offset):
7752         Use fold_addr_expr.
7753         
7754 2007-06-21  Sebastian Pop  <sebpop@gmail.com>
7755
7756         PR tree-optimization/19590
7757         * tree-vrp.c (adjust_range_with_scev): Set the range when the result
7758         of scev is a constant.
7759         * gcc/testsuite/gcc.dg/tree-ssa/pr19590.c: New.
7760
7761 2007-06-21  Kenneth Zadeck <zadeck@naturalbridge.com>
7762
7763         * df-problems.c (df_note_bb_compute): Made computation of live
7764         info consistent with df_lr.
7765
7766 2007-06-21  Richard Guenther  <rguenther@suse.de>
7767
7768         PR tree-optimization/32453
7769         * tree-vrp.c (extract_range_from_assert): Build POINTER_PLUS_EXPR
7770         for pointer anti-range.
7771
7772 2007-06-21  H.J. Lu  <hongjiu.lu@intel.com>
7773
7774         * config/i386/i386.c (processor_target_table): Increase maximum
7775         skip from 7 byte to 10 byte for Pentium Pro, Core 2 Duo and
7776         default 64bit.
7777
7778         * config/i386/linux.h (ASM_OUTPUT_MAX_SKIP_ALIGN): Ensure 8
7779         byte alignment if > 8 byte alignment is preferred.
7780         * config/i386/x86-64.h (ASM_OUTPUT_MAX_SKIP_ALIGN): Likewise.
7781
7782 2007-06-21  Jakub Jelinek  <jakub@redhat.com>
7783
7784         PR tree-optimization/31866
7785         * tree-ssa-coalesce.c (create_outofssa_var_map): Do nothing
7786         if ASM_EXPR's input is not a SSA_NAME.
7787
7788         PR middle-end/32362
7789         * omp-low.c (lookup_decl_in_outer_ctx): Don't ICE if t is NULL,
7790         but decl is a global var, instead return decl.
7791         * gimplify.c (gimplify_adjust_omp_clauses_1): Add shared clauses
7792         even for is_global_var decls, if they are private in some outer
7793         context.
7794
7795 2007-06-21  Richard Guenther  <rguenther@suse.de>
7796
7797         PR tree-optimization/32451
7798         * tree-ssa-threadupdate.c (thread_single_edge): Fixup edge flags.
7799
7800 2007-06-21  Christian Bruel  <christian.bruel@st.com>
7801
7802         * config/sh/sh-protos.h (sh_loads_bankedreg_p): Declare.
7803         * config/sh/sh.c (sh_loads_bankedreg_p): New function.
7804         (push_regs): Changed saving order or banked registers.
7805         (sh_expand_epilogue): Likewise.
7806         * config/sh/sh.h (BANKED_REGISTER_P): New macro.
7807         (FIRST_BANKED_REG): Likewise.
7808         (LAST_BANKED_REG): Likewise.
7809         * config/sh/sh.md (banked) New attribute.
7810         (in_delay_slot): Check banked attribute.
7811         
7812 2007-06-20  Sebastian Pop  <sebpop@gmail.com>
7813
7814         PR tree-optimization/32075
7815         * tree-data-ref.c (subscript_dependence_tester_1, 
7816         analyze_miv_subscript, analyze_overlapping_iterations,
7817         add_distance_for_zero_overlaps, build_classic_dist_vector,
7818         subscript_dependence_tester_1, analyze_overlapping_iterations,
7819         subscript_dependence_tester, access_functions_are_affine_or_constant_p,
7820         compute_affine_dependence, compute_all_dependences): Pass loop_nest 
7821         to evolution_function_is_affine_multivariate_p.
7822
7823 2007-06-20  Eric Botcazou  <ebotcazou@libertysurf.fr>
7824
7825         * df-scan.c (df_get_call_refs): Be prepared for MEMs inside CLOBBERs.
7826
7827 2007-06-20  Rask Ingemann Lambertsen  <rask@sygehus.dk>
7828
7829         PR target/32335
7830         * config/m32c/m32c.c (m32c_emit_epilogue): Use new HImode epilogue
7831         for TARGET_A16.
7832         * config/m32c/prologue.md (epilogue_exitd_16): New.
7833         (epilogue_reit_16): New.
7834         (epilogue_exitd): Rename to epilogue_exitd_24.
7835         (epilogue_reit): Rename to epilogue_reit_24.
7836
7837 2007-06-20  Seongbae Park  <seongbae.park@gmail.com>
7838             Maxim Kuvyrkov  <mkuvyrkov@ispras.ru>
7839
7840         * dbgcnt.def (global_alloc_at_func, global_alloc_at_reg):
7841         New counters.
7842         * haifa-sched.c (queue_to_ready): Don't requeue next insn
7843         if dbg_cnt (sched_insn) reaches the limit.
7844         (choose_ready): New parameter INSN_PTR and new return value.
7845         (schedule_block): Handle dbg_cnt (sched_insn). Handle
7846         the new return value from choose_ready.
7847         * global.c (global_aloc): New dbgcnt global_alloc_at_reg.
7848         (rest_of_handle_global_alloc): New global_alloc_at_func.
7849
7850 2007-06-20  Adam Nemet  <anemet@caviumnetworks.com>
7851
7852         PR tree-optimization/25737
7853         * tree.h (struct tree_struct_field_tag): Add new field alias_set.
7854         (SFT_NONADDRESSABLE_P, SFT_ALIAS_SET): New macros.
7855         * tree-flow.h (struct fieldoff): Add new field alias_set.
7856         * tree-ssa-structalias.c (push_fields_onto_fieldstack): Add new
7857         argument addressable_type.  Set alias_set of fieldoff.
7858         * tree-ssa-alias.c (create_sft): Add new argument alias_set.
7859         (create_overlap_variables_for): Pass alias_set from fieldoff to
7860         create_sft.
7861         * alias.c (get_alias_set): Use alias_set from SFT if set.
7862
7863 2007-06-20  Hui-May Chang  <hm.chang@apple.com>
7864
7865         * config/i386/darwin.h (ASM_OUTPUT_COMMON): Print the size
7866         of a variable as an unsigned HOST_WIDE_INT integer.
7867
7868 2007-06-20  Zdenek Dvorak  <dvorakz@suse.cz>
7869
7870         PR rtl-optimization/32405
7871         * loop-iv.c (iv_get_reaching_def): Fail for partial defs.
7872
7873 2007-06-20  Jakub Jelinek  <jakub@redhat.com>
7874
7875         * Makefile.in (omega.o): Depend on $(DIAGNOSTIC_H).
7876
7877         PR middle-end/31959
7878         * builtins.c: Include diagnostic.h.
7879         (expand_builtin_expect): Make gcc_assert more permissive.
7880         * Makefile.in (builtins.o): Depend on $(DIAGNOSTIC_H).
7881
7882         PR inline-asm/32109
7883         * gimplify.c (gimplify_asm_expr): Issue error if type is addressable
7884         and !allows_mem.
7885
7886         PR middle-end/32285
7887         * calls.c (precompute_arguments): Also precompute CALL_EXPR arguments
7888         if ACCUMULATE_OUTGOING_ARGS.
7889
7890 2007-06-19  Rask Ingemann Lambertsen  <rask@sygehus.dk>
7891
7892         * config/m68hc11/m68hc11.c: Include dataflow header file.
7893         (m68hc11_reorg): Port to dataflow.
7894
7895 2007-06-19  Kenneth Zadeck <zadeck@naturalbridge.com>
7896
7897         * df.h (DF_FIRST_OPTIONAL_PROBLEM): Removed.
7898         (struct df_problem.free_blocks_on_set_blocks): New field.
7899         (struct dataflow.optional_p): New field.
7900         (df_bb_regno_last_use_find, df_insn_regno_def_p): Removed.
7901         (df_live_set_all_dirty): New function.
7902         * df-scan.c (df_scan_alloc): Initialize optional_p.
7903         (problem_SCAN): Initialize free_blocks_on_set_blocks.
7904         * df-core.c (df_set_blocks): Removed use of
7905         DF_FIRST_OPTIONAL_PROBLEM.  Now uses
7906         df_problem.free_blocks_on_set_blocks to determine which blocks are
7907         recycled.
7908         (df_remove_problem): Removed use of DF_FIRST_OPTIONAL_PROBLEM.
7909         (df_finish_pass): Removed use of DF_FIRST_OPTIONAL_PROBLEM.  Now
7910         uses dataflow.optional_p to determine if problem should be
7911         deleted.
7912         (rest_of_handle_df_initialize): Only start live problem if 
7913         -02 or above.
7914         (df_bb_regno_last_use_find, df_insn_regno_def_p): Removed.
7915         * df-problems.c (df_ru_alloc, df_rd_alloc, df_lr_alloc,
7916         df_live_alloc, df_urec_alloc, df_note_alloc): set optional_p.
7917         (problem_RU, problem_RD, problem_LR, problem_UREC, problem_CHAIN,
7918         problem_NOTE):  Initialize free_blocks_on_set_blocks.
7919         (df_lr_bb_local_compute): Recompute luids if df_live problem is
7920         not active.
7921         (df_live_set_all_dirty, df_note_alloc): New function.
7922         * regrename.c (merge_overlapping_regs): Change DF_LIVE_* to
7923         df_get_live_*.
7924         * sched_ebb.c (compute_jump_reg_dependencies): Ditto.
7925         * postreload.c (reload_combine): Ditto.
7926         * cse.c (cse_extended_basic_block): Ditto.
7927         * regmove.c (mark_flags_life_zones): Ditto.
7928         * rtlfactoring.c (split_blocks_after_seqs, split_pattern_seq,
7929         erase_matching_seqs): Ditto.
7930         * bt-load.c (compute_defs_uses_and_gen): Ditto.
7931         * integrate (allocate_initial_values): Ditto.
7932         * combine.c (reg_dead_at_p): Ditto.
7933         * resource.c (mark_target_live_regs): Ditto.
7934         * sched-rgn.c (check_live_1, update_live_1): Ditto.
7935         * config/sh/sh.c (find_r0_life_regions): Ditto.
7936         * global.c (rest_of_handle_global_alloc): Only add back df_live
7937         for -O > 1.
7938         * local-alloc.c (rest_of_handle_local_alloc): Only remove
7939         df_live for -O > 1.
7940         * ifcvt.c (dead_or_predicable): Change DF_LIVE_* to
7941         df_get_live_*.
7942         (if_convert): Make sure df_live is there at -O == 1.
7943         (pass_if_after_combine): Cleanup flags.
7944         * init-regs.c (initialize_uninitialized_regs): Make sure df_live
7945         is there at -O == 1.
7946         
7947 2007-06-19  Seongbae Park  <seongbae.park@gmail.com>
7948
7949         * config/arm/arm.c (arm_get_frame_offsets): Set
7950         offsets->locals_base to avoid negative stack size.
7951         (thumb1_expand_prologue): Assert on negative stack size.
7952
7953 2007-06-19  Sebastian Pop  <sebpop@gmail.com>
7954
7955         PR tree-optimization/32367
7956         * tree-chrec.h (build_polynomial_chrec): Verify that the left hand side 
7957         of the chrec has no evolution in that loop.
7958         * testsuite/gcc.dg/tree-ssa/pr32367.c: New.
7959
7960 2007-06-19  Bob Wilson  <bob.wilson@acm.org>
7961
7962         * config/xtensa/xtensa.c: Include "df.h".
7963         (xtensa_builtin_saveregs): Use adjust_address instead of
7964         change_address.
7965         (xtensa_va_start): Invoke make_tree with sizetype for
7966         expand_builtin_saveregs and then convert the result to a pointer.
7967         Use POINTER_PLUS_EXPR.  Use size_int instead of build_int_cst.
7968         (xtensa_gimplify_va_arg_expr): Use size_int instead of build_int_cst.
7969         Subtract argument size from index value as integers and then use
7970         POINTER_PLUS_EXPR to add the result to the array address.
7971         
7972 2007-06-19  Rask Ingemann Lambertsen  <rask@sygehus.dk>
7973
7974         PR target/32335
7975         * config/m32c/m32c.c: Include dataflow header file.
7976         (m32c_emit_prologue): Adjust for prologue insn change.
7977         * config/m32c/prologue.md (prologue_enter_16): Only modify SP_REGNO
7978         once inside a PARALLEL. Assume frame size passed in operand 0
7979         includes space to save the fb register.
7980         (prologue_enter_24): Likewise.
7981         (epilogue_exitd): Only modify SP_REGNO once inside a PARALLEL.
7982
7983 2007-06-19  David Daney  <ddaney@avtrex.com
7984
7985         PR target/32313
7986         * config/mips/mips.md (cprestore): Mark $gp as used.
7987
7988 2007-06-19  Rask Ingemann Lambertsen  <rask@sygehus.dk>
7989
7990         PR target/32369
7991         * config/frv/frv.c (frv_ifcvt_modify_tests): Dataflow merge fix.
7992         (frv_ifcvt_modify_insn): Likewise.
7993
7994 2007-06-19  Richard Guenther  <rguenther@suse.de>
7995
7996         * tree-ssa-structalias.c (handle_ptr_arith): Make sure to
7997         only handle positive offsets that fit in a HOST_WIDE_INT.
7998
7999 2007-06-19  Uros Bizjak  <ubizjak@gmail.com>
8000
8001         * config/i386/i386.c (ix86_emit_swsqrtsf): Filter out infinity
8002         result of rsqrt insn for zero input argument to avoid NaN.
8003
8004 2007-06-19  Richard Guenther  <rguenther@suse.de>
8005
8006         PR middle-end/31950
8007         * tree-ssa-alias-warnings.c (ffan_walker): Punt on MTAGs.
8008
8009 2007-06-19  Jakub Jelinek  <jakub@redhat.com>
8010
8011         PR tree-optimization/32353
8012         * tree-ssa-structalias.c (set_uids_in_ptset): Also handle RESULT_DECL.
8013
8014 2007-06-19  Nick Clifton  <nickc@redhat.com>
8015
8016         * config/m32r/linux.h (LIB_SPEC): Always imply -lpthread for -pthread.
8017
8018 2007-06-18  Uros Bizjak  <ubizjak@gmail.com>
8019
8020         PR target/32389
8021         * config/i386/i386.h (enum ix86_stack_slot): Add SLOT_VIRTUAL.
8022         * config/i386/i386.c (assign_386_stack_local): Assert that
8023         SLOT_VIRTUAL is valid only before virtual regs are instantiated.
8024         (ix86_expand_builtin) [IX86_BUILTIN_LDMXCSR, IX86_BUILTIN_STMXCSR]:
8025         Use SLOT_VIRTUAL stack slot instead of SLOT_TEMP.
8026         * config/i386/i386.md (truncdfsf2, truncxf<mode>2): Ditto.
8027
8028 2007-06-18  Steve Ellcey  <sje@cup.hp.com>
8029
8030         * config/ia64/ia64.h (LIBGCC2_TF_CEXT): New.
8031
8032 2007-06-18  Seongbae Park  <seongbae.park@gmail.com>
8033
8034         PR rtl-optimization/32321
8035         * gcse.c (replace_store_insn): Update the note before
8036         calling emit_insn_after.
8037
8038 2007-06-18  Kenneth Zadeck <zadeck@naturalbridge.com>
8039
8040         PR middle-end/32355
8041         * gcse (rest_of_handle_gcse): Add call to df_finish_pass after
8042         cse_main.
8043         * df-problems.c (df_note_bb_compute): Fix dumping info.
8044         
8045 2007-06-18  Kazu Hirata  <kazu@codesourcery.com>
8046
8047         * config/m68k/m68k.c (m68k_expand_epilogue): Emit a return
8048         insn with emit_jump_insn.
8049
8050 2007-06-18  Uros Bizjak  <ubizjak@gmail.com>
8051
8052         PR tree-optimization/32383
8053         * targhooks.c (default_builtin_reciprocal): Add new bool argument.
8054         * targhooks.h (default_builtin_reciprocal): Update prototype.
8055         * target.h (struct gcc_target): Update builtin_reciprocal.
8056         * doc/tm.texi (TARGET_BUILTIN_RECIPROCAL): Update description.
8057         * tree-ssa-math-opts (execute_cse_reciprocals): Skip statements
8058         where arg1 is not SSA_NAME.  Pass true to targetm.builtin_reciprocal
8059         when fndecl is in BUILT_IN_MD class.
8060         (execute_convert_to_rsqrt): Ditto.
8061
8062         * config/i386/i386.c (ix86_builtin_reciprocal): Update for new bool
8063         argument.  Convert IX86_BUILTIN_SQRTPS code only when md_fn is true.
8064         Convert BUILT_IN_SQRTF code only  when md_fn is false.
8065
8066 2007-06-18  Kaz Kojima  <kkojima@gcc.gnu.org>
8067
8068         * bt-load.c (move_btr_def): Fix the order of arguments
8069         to validate_replace_rtx.
8070
8071 2007-06-18  Nathan Sidwell  <nathan@codesourcery.com>
8072
8073         * config/m68k/m68k-devices.def: Add 54450..54455.
8074
8075 2007-06-17  Uros Bizjak  <ubizjak@gmail.com>
8076
8077         PR rtl-optimization/32366
8078         * simplify-rtx.c (simplify_unary_operation_1) [FLOAT_TRUNCATE,
8079         FLOAT_EXTEND]: Prevent non-scalar modes from entering
8080         significand_size.
8081
8082 2007-06-17  Kenneth Zadeck <zadeck@naturalbridge.com>
8083
8084         PR middle-end/32349
8085         * modulo-sched (generate_reg_moves): Added rescan parameter and if
8086         this is true, rescan insn being modified.
8087         (sms_schedule): Added rescan parameter.
8088         (rest_of_handle_sms): Moved freeing of dominance info to before
8089         getting out of cfg_layout.
8090         
8091 2007-06-17  Nathan Sidwell  <nathan@codesourcery.com>
8092
8093         * config/m68k/m68k.h (ISA_HAS_FF1, ISA_HAS_MVS_MVZ): New.
8094         * config/m68k/m68k.md: Use ISA_HAS_FF1 and ISA_HAS_MVS_MVZ as
8095         appropriate.
8096
8097         * config/m68k/m68k.c (all_isas): Remove FL_CF_FPU and
8098         FL_CF_EMAC from the entry for isac.
8099
8100         * config/m68k/predicates.md (const_call_operand): Adjust comment.
8101         (const_sibcall_operand): New.
8102         (sibcall_operand): Use it.
8103         * config/m68k/m68k.c (FL_FOR_isa_c): Not ISA_B compatible.
8104         (m68k_isas): ISAC does not imply FPU or EMAC.
8105         (override_options): Add ISA_C logic for symbolic jump & call.
8106
8107 2007-06-17  Eric Botcazou  <ebotcazou@libertysurf.fr>
8108
8109         * config/sparc/sparc.c (sparc_vis_init_builtins): Retrieve the
8110         return mode from the builtin itself.
8111         (sparc_fold_builtin): Fix cast of zero constant.
8112
8113 2007-06-16  Uros Bizjak  <ubizjak@gmail.com>
8114
8115         * targhooks.c (default_builtin_reciprocal): New default target hook.
8116         * targhooks.h (default_builtin_reciprocal): Add prototype.
8117         * hooks.c (hook_tree_tree_bool_null): Remove hook.
8118         * hooks.h (hook_tree_tree_bool_null): Remove prototype.
8119         * target-def.h (TARGET_BUILTIN_RECIPROCAL): Define as
8120         default_builtin_reciprocal.
8121
8122 2007-06-16  Uros Bizjak  <ubizjak@gmail.com>
8123
8124         PR middle-end/31723
8125         * hooks.c (hook_tree_tree_bool_null): New hook.
8126         * hooks.h (hook_tree_tree_bool_null): Add prototype.
8127         * tree-pass.h (pass_convert_to_rsqrt): Declare.
8128         * passes.c (init_optimization_passes): Add pass_convert_to_rsqrt.
8129         * tree-ssa-math-opts.c (execute_cse_reciprocals): Scan for a/func(b)
8130         and convert it to reciprocal a*rfunc(b).
8131         (execute_convert_to_rsqrt): New function.
8132         (gate_convert_to_rsqrt): New function.
8133         (pass_convert_to_rsqrt): New pass definition.
8134         * target.h (struct gcc_target): Add builtin_reciprocal.
8135         * target-def.h (TARGET_BUILTIN_RECIPROCAL): New define.
8136         (TARGET_INITIALIZER): Initialize builtin_reciprocal with
8137         TARGET_BUILTIN_RECIPROCAL.
8138         * doc/tm.texi (TARGET_BUILTIN_RECIPROCAL): Document.
8139
8140         * config/i386/i386.h (TARGET_RECIP): New define.
8141         * config/i386/i386.md (divsf3): Expand by calling ix86_emit_swdivsf
8142         for TARGET_SSE_MATH and TARGET_RECIP when flag_finite_math_only and
8143         flag_unsafe_math_optimizations are set, flag_trapping_math is unset
8144         and not optimizing for size.
8145         (*rcpsf2_sse): New insn pattern.
8146         (*rsqrtsf2_sse): Ditto.
8147         (rsqrtsf2): New expander.  Expand by calling ix86_emit_swsqrtsf
8148         for TARGET_SSE_MATH and TARGET_RECIP when flag_finite_math_only and
8149         flag_unsafe_math_optimizations are set, flag_trapping_math is unset
8150         and not optimizing for size.
8151         (sqrt<mode>2): Expand SFmode operands by calling ix86_emit_swsqrtsf
8152         for TARGET_SSE_MATH and TARGET_RECIP when flag_finite_math_only and
8153         flag_unsafe_math_optimizations are set, flag_trapping_math is unset
8154         and not optimizing for size.
8155         * config/i386/sse.md (divv4sf): Expand by calling ix86_emit_swdivsf
8156         for TARGET_SSE_MATH and TARGET_RECIP when flag_finite_math_only and
8157         flag_unsafe_math_optimizations are set, flag_trapping_math is unset
8158         and not optimizing for size.
8159         (*sse_rsqrtv4sf2): Do not export.
8160         (sqrtv4sf2): Ditto.
8161         (sse_rsqrtv4sf2): New expander.  Expand by calling ix86_emit_swsqrtsf
8162         for TARGET_SSE_MATH and TARGET_RECIP when flag_finite_math_only and
8163         flag_unsafe_math_optimizations are set, flag_trapping_math is unset
8164         and not optimizing for size.
8165         (sqrtv4sf2): Ditto.
8166         * config/i386/i386.opt (mrecip): New option.
8167         * config/i386/i386-protos.h (ix86_emit_swdivsf): Declare.
8168         (ix86_emit_swsqrtsf): Ditto.
8169         * config/i386/i386.c (IX86_BUILTIN_RSQRTF): New constant.
8170         (ix86_init_mmx_sse_builtins): __builtin_ia32_rsqrtf: New
8171         builtin definition.
8172         (ix86_expand_builtin): Expand IX86_BUILTIN_RSQRTF using
8173         ix86_expand_unop1_builtin.
8174         (ix86_emit_swdivsf): New function.
8175         (ix86_emit_swsqrtsf): Ditto.
8176         (ix86_builtin_reciprocal): New function.
8177         (TARGET_BUILTIN_RECIPROCAL): Use it.
8178         (ix86_vectorize_builtin_conversion): Rename from
8179         ix86_builtin_conversion.
8180         (TARGET_VECTORIZE_BUILTIN_CONVERSION): Use renamed function.
8181         * doc/invoke.texi (Machine Dependent Options): Add -mrecip to
8182         "i386 and x86_64 Options" section.
8183         (Intel 386 and AMD x86_64 Options): Document -mrecip.
8184
8185 2007-06-15  Andrew Pinski <andrew_pinski@playstation.sony.com>
8186             Zdenek Dvorak <dvorakz@suse.cz>
8187             Richard Guenther  <rguenther@suse.de>
8188             Kaz Kojima  <kkojima@gcc.gnu.org>
8189
8190         * tree-vrp.c (compare_values_warnv): Convert val2 to
8191         the type of val1.
8192         (extract_range_from_assert): Create
8193         POINTER_PLUS_EXPR for pointer types.
8194         (extract_range_from_binary_expr): Handle
8195         only POINTER_PLUS_EXPR, MIN_EXPR, and MAX_EXPR
8196         for pointer types.
8197         * doc/c-tree.texi (POINTER_PLUS_EXPR): Document.
8198         * tree-ssa-loop-niter.c (split_to_var_and_offset): Handle
8199         POINTER_PLUS_EXPR as PLUS_EXPR.
8200         (number_of_iterations_lt_to_ne):
8201         For pointer types, use sizetype when
8202         creating MINUS_EXPR/PLUS_EXPRs.
8203         (assert_loop_rolls_lt): For pointer types, use sizetype when
8204         creating MINUS_EXPR/PLUS_EXPRs.
8205         (number_of_iterations_le): Likewise.
8206         (expand_simple_operations): POINTER_PLUS_EXPR are simple also.
8207         (derive_constant_upper_bound): Handle POINTER_PLUS_EXPR just
8208         like PLUS_EXPR and MINUS_EXPR.
8209         * tree-pretty-print.c (dump_generic_node): Handle
8210         POINTER_PLUS_EXPR.
8211         (op_prio): Likewise.
8212         (op_symbol_1): Likewise.
8213         * optabs.c (optab_for_tree_code): Likewise.
8214         * tree-ssa-loop-manip.c (create_iv): Handle pointer base
8215         specially.
8216         * tree-tailcall.c (process_assignment): Mention
8217         POINTER_PLUS_EXPR in a TODO comment.
8218         * tree.c (build2_stat): Assert when trying to use PLUS_EXPR or 
8219         MINUS_EXPR with a pointer. Also assert for POINTER_PLUS_EXPR
8220         not used with a pointer and an integer type.
8221         * tree-scalar-evolution.c (add_to_evolution_1): Convert the
8222         increment using chrec_convert_rhs instead of chrec_convert.
8223         (follow_ssa_edge_in_rhs): Handle POINTER_PLUS_EXPR like
8224         PLUS_EXPR except for the right hand side's type will be
8225         sizetype.
8226         (interpret_rhs_modify_stmt): Handle POINTER_PLUS_EXPR.
8227         (fold_used_pointer_cast): Kill.
8228         (pointer_offset_p): Kill.
8229         (fold_used_pointer): Kill.
8230         (pointer_used_p): Kill.
8231         (analyze_scalar_evolution_1 <case GIMPLE_MODIFY_STMT>): Don't
8232         call fold_used_pointer.
8233         (instantiate_parameters_1): Convert the increment
8234         using chrec_convert_rhs instead of chrec_convert.
8235         Handle POINTER_PLUS_EXPR as PLUS_EXPR.
8236         * builtins.c (get_pointer_alignment): Handle POINTER_PLUS_EXPR
8237         instead of PLUS_EXPR.
8238         (expand_builtin_strcat): Create a POINTER_PLUS_EXPR instead of
8239         PLUS_EXPR for pointers.
8240         (std_gimplify_va_arg_expr): Likewise.
8241         (fold_builtin_memory_op): Likewise.
8242         (fold_builtin_strstr): Likewise.
8243         (fold_builtin_strchr): Likewise.
8244         (fold_builtin_strrchr): Likewise.
8245         (fold_builtin_strpbrk): Likewise.
8246         (expand_builtin_memory_chk): Likewise.
8247         (fold_builtin_memory_chk): Likewise.
8248         (std_expand_builtin_va_start): Use
8249         sizetype for the call to make_tree and then convert
8250         to the pointer type.
8251         (fold_builtin_memchr): Use POINTER_PLUS_EXPR
8252         instead of PLUS_EXPR for adding to a pointer.
8253         (std_gimplify_va_arg_expr): Use fold_build2 for
8254         the creating of POINTER_PLUS_EXPR.  For the BIT_AND_EXPR, cast
8255         the operands to sizetype first and then cast the BIT_AND_EXPR
8256         back to the pointer type.
8257         * fold-const.c (build_range_check): Handle pointer types
8258         specially.
8259         (extract_array_ref): Look for POINTER_PLUS_EXPR instead
8260         of PLUS_EXPR's. Make sure the offset is converted to
8261         sizetype.
8262         (try_move_mult_to_index): Strip the NOPs from the offset.
8263         Remove code argument and replace all uses with PLUS_EXPR.
8264         (fold_to_nonsharp_ineq_using_bound): Handle pointer types
8265         specially. Don't use a pointer type for MINUS_EXPR.
8266         (fold_unary): Handle for (T1)(X op Y),
8267         only p+ as that is the only as that can be handled for
8268         binary operators now.
8269         (fold_binary <case POINTER_PLUS_EXPR>): Add folding of
8270         POINTER_PLUS_EXPR.
8271         <case PLUS_EXPR>: Add folding of PTR+INT into
8272         PTR p+ INT.
8273         Don't call try_move_mult_to_index.
8274         <case MINUS_EXPR>: Fold (PTR0 p+ A) - (PTR1 p+ B)
8275         into (PTR0 - PTR1) + (A - B). Fold (PTR0 p+ A) - PTR1 into
8276         (PTR0 - PTR1) + A iff (PTR0 - PTR1) simplifies.
8277         Don't call try_move_mult_to_index.
8278         (tree_expr_nonnegative_warnv_p): Handle POINTER_PLUS_EXPR.
8279         (tree_expr_nonzero_p): Likewise.
8280         (fold_indirect_ref_1): Look at POINTER_PLUS_EXPR instead
8281         of PLUS_EXPR for the complex expression folding.
8282         * tree-chrec.c (chrec_fold_plus_poly_poly): If the
8283         first chrec is a pointer type, then the second should
8284         be sizetype and not the first's type.
8285         For POINTER_PLUS_EXPR, use a different right hand side type.
8286         Handle POINTER_PLUS_EXPR like PLUS_EXPR.
8287         (chrec_fold_plus_1): For POINTER_PLUS_EXPR, use a
8288         different right hand side type.
8289         Handle POINTER_PLUS_EXPR like PLUS_EXPR.
8290         (chrec_fold_plus): For pointer types, use POINTER_PLUS_EXPR
8291         instead of PLUS_EXPR.
8292         When either operand is zero, convert the other operand.
8293         (chrec_apply): Use chrec_convert_rhs
8294         on the argument x instead of chrec_convert.
8295         (reset_evolution_in_loop): For pointer types, the new_evol
8296         should be sizetype.
8297         (convert_affine_scev): For POINTER_PLUS_EXPR, use a
8298         different right hand side type.
8299         Handle POINTER_PLUS_EXPR like PLUS_EXPR.
8300         (chrec_convert_rhs): New function.
8301         (chrec_convert_aggressive): For POINTER_PLUS_EXPR, use a
8302         different right hand side type.
8303         Handle POINTER_PLUS_EXPR like PLUS_EXPR.
8304         * tree-chrec.h (chrec_convert_rhs): New prototype.
8305         (build_polynomial_chrec): For pointer types, the right hand
8306         * tree-ssa-ccp.c (maybe_fold_stmt_indirect): Look for
8307         POINTER_PLUS_EXPR instead of PLUS_EXPR's.
8308         Remove subtraction case as it is always addition now.
8309         Make sure the offset is converted to sizetype.
8310         (fold_stmt_r): Don't handle PLUS_EXPR/MINUS_EXPR specially.
8311         Handle POINTER_PLUS_EXPR like PLUS_EXPR was handled before.
8312         * tree-ssa-loop-ivopts.c (determine_base_object): Abort for 
8313         PLUS_EXPR in pointer type.
8314         Handle POINTER_PLUS_EXPR.
8315         (tree_to_aff_combination): Likewise.
8316         (force_expr_to_var_cost): Likewise.
8317         (force_expr_to_var_cost): Likewise. Create a POINTER_PLUS_EXPR
8318         instead of PLUS_EXPR for pointers.
8319         * c-format.c (check_format_arg): Handle POINTER_PLUS_EXPR
8320         instead of PLUS_EXPR of pointer types.
8321         * tree-stdarg.c (va_list_counter_bump): Handle POINTER_PLUS_EXPR
8322         as PLUS_EXPR.
8323         (check_va_list_escapes): Likewise.
8324         (check_all_va_list_escapes): Likewise.
8325         * dwarf2out.c (loc_descriptor_from_tree_1):
8326         Handle POINT_PLUS_EXPR as a PLUS_EXPR.
8327         * expr.c (expand_expr_real_1): Handle POINTER_PLUS_EXPR.
8328         (string_constant): Likewise.
8329         * tree-ssa-address.c (tree_mem_ref_addr): When adding
8330         the offset to the base, use POINTER_PLUS_EXPR.
8331         (add_to_parts): Convert the index to sizetype.
8332         (create_mem_ref): Create A POINTER_PLUS_EXPR for the one case.
8333         * matrix-reorg.c (collect_data_for_malloc_call): Stmt
8334         will now only be either INDIRECT_REF and POINTER_PLUS_EXPR.
8335         Offset only holds something for PLUS_EXPR.
8336         (ssa_accessed_in_tree): Handle POINTER_PLUS_EXPR just as
8337         a PLUS_EXPR.
8338         (analyze_transpose): POINTER_PLUS_EXPR will only show up now
8339         and not PLUS_EXPR.
8340         (analyze_accesses_for_modify_stmt): Likewise.
8341         Remove comment about the type being integral type as it is
8342         wrong now.
8343         (can_calculate_expr_before_stmt): Handle POINTER_PLUS_EXPR as
8344         PLUS_EXPR.
8345         (transform_access_sites): POINTER_PLUS_EXPR will only show up now
8346         and not PLUS_EXPR.
8347         Correct the type which the artimentic is done in (is now
8348         sizetype).
8349         Reindent one loop.
8350         * tree-data-ref.c (split_constant_offset): Handle
8351         POINTER_PLUS_EXPR
8352         * tree-affine.c (tree_to_aff_combination): Likewise.
8353         * c-typeck.c (build_unary_op): For pointers create the increment
8354         as a sizetype. Create a POINTER_PLUS_EXPR instead of PLUS_EXPR
8355         for pointers.
8356         * gimplify.c (gimplify_self_mod_expr): Create a
8357         POINTER_PLUS_EXPR instead of PLUS_EXPR for pointers.
8358         (gimplify_omp_atomic_fetch_op): Handle POINTER_PLUS_EXPR.
8359         * tree.def (POINTER_PLUS_EXPR): New tree code.
8360         * tree-predcom.c (ref_at_iteration): If we have a pointer
8361         type do the multiplication in sizetype.
8362         * tree-mudflap.c (mf_xform_derefs_1): Create a
8363         POINTER_PLUS_EXPR instead of PLUS_EXPR for pointers.
8364         * tree-ssa-forwprop.c 
8365         (forward_propagate_addr_into_variable_array_index):
8366         Don't expect there to be a cast for the index as that
8367         does not exist anymore.
8368         (forward_propagate_addr_expr_1): Check for POINTER_PLUS_EXPR
8369         instead of PLUS_EXPR.
8370         Don't check for the first operand of the POINTER_PLUS_EXPR
8371         was the index as it cannot be.
8372         Call forward_propagate_addr_into_variable_array_index with
8373         the SSA_NAME instead of the statement.
8374         * varasm.c (const_hash_1): Handle POINTER_PLUS_EXPR.
8375         (compare_constant): Likewise.
8376         (copy_constant): Likewise.
8377         (compute_reloc_for_constant): Likewise.
8378         (output_addressed_constants): Likewise.
8379         (initializer_constant_valid_p): Likewise.
8380         * tree-ssa.c (tree_ssa_useless_type_conversion_1):
8381         Convert the MIN/MAX of the inner type to the outer
8382         type before comparing them.
8383         * tree-ssa-loop-prefetch.c (idx_analyze_ref):  Handle
8384         POINTER_PLUS_EXPR instead of PLUS_EXPR.
8385         (issue_prefetch_ref): Create a POINTER_PLUS_EXPR instead
8386         of PLUS_EXPR for pointers.
8387         * tree-inline.c (estimate_num_insns_1): Handle
8388         POINTER_PLUS_EXPR.
8389         * tree-vect-transform.c (vect_create_addr_base_for_vector_ref): 
8390         Create a POINTER_PLUS_EXPR instead of PLUS_EXPR for pointers.
8391         (bump_vector_ptr): Create a POINTER_PLUS_EXPR
8392         instead of PLUS_EXPR for the pointer increment statement.
8393         (vect_update_ivs_after_vectorizer): For pointer types, create
8394         POINTER_PLUS_EXPR instead of PLUS_EXPR and also create
8395         MULT_EXPR in sizetype.
8396         (vect_gen_niters_for_prolog_loop): Add a cast when creating
8397         byte_misalign.
8398         * tree-object-size.c (plus_expr_object_size): Handle
8399         POINTER_PLUS_EXPR instead of PLUS_EXPR.  Removing all the extra
8400         code which is trying to figure out which side is a pointer and 
8401         is the index.
8402         (check_for_plus_in_loops_1): Likewise.
8403         (check_for_plus_in_loops): Likewise.
8404         * c-common.c (pointer_int_sum): Create a
8405         POINTER_PLUS_EXPR instead of PLUS_EXPR for pointers.
8406         * tree-ssa-structalias.c (handle_ptr_arith): Handle
8407         only POINTER_PLUS_EXPR.  Removing all the extra
8408         code which is trying to figure out which side is a pointer and 
8409         is the index.
8410         * tree-cfg.c (verify_expr): Add extra checking for pointers and
8411         PLUS_EXPR and MINUS_EXPR.
8412         Also add checking to make sure the operands of POINTER_PLUS_EXPR
8413         are correct.
8414         * config/frv/frv.c (frv_expand_builtin_va_start): Use sizetype
8415         with make_tree, instead of a pointer type.
8416         * config/s390/s390.c (s390_va_start): Use POINTER_PLUS_EXPR
8417         for pointers instead of PLUS_EXPR.
8418         (s390_gimplify_va_arg): Likewise.
8419         * config/spu/spu.c (spu_va_start): Create POINTER_PLUS_EXPR
8420         instead of PLUS_EXPR when doing addition on pointer
8421         types.  Use sizetype for the second operand.
8422         (spu_gimplify_va_arg_expr): Likewise.
8423         * config/sparc/sparc.c (sparc_gimplify_va_arg): Use 
8424         POINTER_PLUS_EXPR instead of PLUS_EXPR when the operand was
8425         a pointer.  Don't create a BIT_AND_EXPR for pointer types.
8426         * config/i386/i386.c (ix86_va_start): Use POINTER_PLUS_EXPR
8427         for the pointer addition and also use size_int/sizetype
8428         for the offset.
8429         (ix86_gimplify_va_arg): Likewise.
8430         Perform BIT_AND_EXPR on sizetype arguments.
8431         * config/sh/sh.c (sh_va_start): Call make_tree with sizetype
8432         and convert its result to a pointer type.  Use POINTER_PLUS_EXPR
8433         for the pointer additions and also use size_int for the offsets.
8434         (sh_gimplify_va_arg_expr): Use POINTER_PLUS_EXPR for the pointer
8435         additions and also use size_int for the offsets.  Perform
8436         BIT_AND_EXPR on sizetype arguments.
8437         * config/ia64/ia64.c (ia64_gimplify_va_arg): Use
8438         POINTER_PLUS_EXPR for pointers and create the
8439         BIT_AND_EXPR in sizetype.
8440         * config/rs6000/rs6000.c (rs6000_va_start): Use POINTER_PLUS_EXPR
8441         instead of PLUS_EXPR for pointer addition.
8442         (rs6000_va_start): Likewise.
8443         Also use sizetype for the offset.
8444         * config/pa/pa.c (reloc_needed): Handle POINTER_PLUS_EXPR
8445         as PLUS_EXPR/MINUS_EXPR.
8446         (hppa_gimplify_va_arg_expr): Don't create MINUS_EXPR or
8447         PLUS_EXPR for pointers, instead use POINTER_PLUS_EXPR.
8448         Don't use BIT_AND_EXPR on a pointer type, convert the
8449         expression to sizetype first.
8450         * config/mips/mips.c (mips_va_start): Use POINTER_PLUS_EXPR
8451         for pointers.
8452         (mips_gimplify_va_arg_expr): Likewise.
8453         Don't create BIT_AND_EXPR in a pointer type.
8454
8455 2007-06-15  Eric Christopher  <echristo@apple.com>
8456
8457         * config.gcc (i?86-*-darwin*): Add t-crtfm and t-crtpc.
8458         (x86_64-*-darwin*): Ditto.
8459         * config/i386/darwin.h (CRTEND_SPEC): New. Add support
8460         for above.
8461
8462 2007-06-15  Matthew Wilcox <matthew@wil.cx>
8463
8464         * doc/extend.texi: Document behavior of __attribute__((aligned))
8465         on typedefs.
8466
8467 2007-06-15  Mark Mitchell  <mark@codesourcery.com>
8468
8469         * rtlanal.c (note_stores): Improve documentation.
8470
8471 2007-06-15  Bernd Schmidt  <bernd.schmidt@analog.com>
8472
8473         * config/bfin/elf.h (ASM_GENERATE_INTERNAL_LABEL,
8474         LOCAL_LABEL_PREFIX): Delete.
8475         * config/bfin/bfin.c (TARGET_ASM_INTERNAL_LABEL): Delete.
8476         (bfin_internal_label): Delete.
8477
8478 2007-06-15  Uros Bizjak  <ubizjak@gmail.com>
8479
8480         * libgcc2.c (CEXT): When compiling L_multc3 and L_divtc3,
8481         define to "l" if LIBGCC_LONG_DOUBLE_SIZE == 128,
8482         otherwise define to LIBGCC2_TF_CEXT.
8483         * config/i386/linux64.h (LIBGCC2_HAS_TF_MODE): New define.
8484         (LIBGCC_TF_CEXT): Ditto.
8485         (TF_SIZE): Ditto.
8486
8487 2007-06-14  Seongbae Park  <seongbae.park@gmail.com>
8488
8489         PR rtl-optimization/32339
8490         * df-scan.c (df_uses_record): Don't modify flags but just add to
8491         it for df_ref_record.
8492
8493 2007-06-14  Andrew Pinski  <andrew_pinski@playstation.sony.com>
8494
8495         * tree-mudflap.c: Fix whitespace issues.
8496
8497 2007-06-15  Kazu Hirata  <kazu@codesourcery.com>
8498
8499         * config/m68k/m68k.c (ASM_DOT, ASM_DOTW, ASM_DOTL): Remove.
8500
8501 2007-06-14  Eric Christopher  <echristo@apple.com>
8502
8503         * config/i386/sse.md (movdi_to_sse): Rewrite body.
8504         (movv4sf): Use gcc_unreachable instead of abort.
8505
8506 2007-06-14  Uros Bizjak  <ubizjak@gmail.com>
8507
8508         PR target/32268
8509         * config/i386/sfp-machine.h (CMPtype): New define.
8510         (mach stubs): Use CMPtype instead of int as a return type.
8511
8512 2007-06-14  Uros Bizjak  <ubizjak@gmail.com>
8513
8514         * config/soft-fp/eqdf2.c, config/soft-fp/eqsf2.c,
8515         config/soft-fp/eqtf2.c, config/soft-fp/gedf2.c,
8516         config/soft-fp/gesf2.c, config/soft-fp/getf2.c,
8517         config/soft-fp/ledf2.c, config/soft-fp/lesf2.c,
8518         config/soft-fp/letf2.c, config/soft-fp/unorddf2.c,
8519         config/soft-fp/unordsf2.c, config/soft-fp/unordtf2.c,
8520         config/soft-fp/soft-fp.h: Update from glibc CVS.
8521
8522 2007-06-14  Bernd Schmidt  <bernd.schmidt@analog.com>
8523
8524         * config/bfin/uclinux.h (MFWRAP_SPEC): New.
8525
8526 2007-06-14  Rask Ingemann Lambertsen  <rask@sygehus.dk>
8527
8528         PR target/32341
8529         * config/v850/v850.c: Include dataflow header file.
8530         (substitute_ep_register): Fix typo.
8531
8532 2007-06-14  Paolo Bonzini  <bonzini@gnu.org>
8533
8534         * configure.ac: Fix earlier checkin.
8535         * configure: Regenerated.
8536
8537 2007-06-14  Paolo Bonzini  <bonzini@gnu.org>
8538
8539         * acinclude.m4 (gcc_AC_CHECK_PROG_VER): Remove.
8540         * aclocal.m4: Regenerate.
8541         * configure.ac: Use ACX_PROG_CC_WARNING_OPTS,
8542         ACX_PROG_CC_WARNINGS_ARE_ERRORS,
8543         ACX_PROG_CC_WARNING_ALMOST_PEDANTIC, ACX_CHECK_PROG_VER.
8544         * configure: Regenerate.
8545         * Makefile.in (LOOSE_WARN): Subst loose_warn.
8546
8547         * Makefile.in (quickstrap): Build libgcc too.
8548
8549 2007-06-14  Paolo Bonzini  <bonzini@gnu.org>
8550
8551         * configure.ac: Add --enable-checking=df.  Explicitly mention that
8552         the variables are initialized as for "release".
8553         * df-core.c: Use it.
8554         * configure: Regenerate.
8555         * config.in: Regenerate.
8556
8557 2007-06-14  Bob Wilson  <bob.wilson@acm.org>
8558
8559         * config/xtensa/xtensa.c (xtensa_expand_nonlocal_goto): Use
8560         validate_replace_rtx instead of replace_rtx.
8561         (xtensa_expand_prologue): Call df_insn_rescan after replace_rtx.
8562
8563 2007-06-14  Danny Smith  <dannysmith@users.sourceforge.net>
8564
8565         * config/i386/cygming.h (DWARF_FRAME_REGNUM): Define.
8566         (DWARF2_UNWIND_INFO): Override default if configured with
8567         SJLJ EH disabled.
8568         * config/i386/cygwin.h (STARTFILE_SPEC): Add crtbegin.o.
8569         (ENDFILE_SPEC): Add crtend.o.
8570         * config/i386/mingw32.h (STARTFILE_SEC): Add crtbegin.o.
8571         (ENDFILE_SPEC): Add crtend.o.
8572         (TARGET_USE_JCR_SECTION): Define.
8573         (MD_UNWIND_SUPPORT): Define for 32-bit target.
8574
8575         * config/i386/cygming-crtbegin.c: New file.
8576         * config/i386/cygming-crtend.c: New file.
8577
8578 2007-06-14  Pascal Obry Pascal Obry  <obry@adacore.com>
8579
8580         * config/i386/w32-unwind.h: New file.
8581
8582 2007-06-13  Eric Christopher  <echristo@apple.com>
8583
8584         * config/i386/darwin.h (PREFERRED_STACK_BOUNDARY): Don't let
8585         the user set a value below STACK_BOUNDARY.
8586
8587 2007-06-13  Thiemo Seufer  <ths@networkno.de>
8588
8589         * config/mips/linux.h, config/mips/linux64.h (LIB_SPEC): Always
8590         imply -lpthread for -pthread.
8591
8592 2007-06-13  Kazu Hirata  <kazu@codesourcery.com>
8593
8594         * basic-block.h: Remove the prototype for
8595         free_basic_block_vars.
8596         * cfglayout.h: Remove the prototype for
8597         insn_locators_initialize.
8598         * tree.h: Remove the prototype for emit_line_note.
8599
8600         * tree-ssa-pre.c (mergephitemp): Remove.
8601         (init_pre): Don't use mergephitemp.
8602
8603 2007-06-13  Eric Christopher  <echristo@apple.com>
8604
8605         * config/i386/i386.c (override_options): If we've specified
8606         an arch then don't use TARGET_SUBTARGET_ISA_DEFAULTs.
8607
8608 2007-06-13  Bob Wilson  <bob.wilson@acm.org>
8609
8610         * df-scan.c (df_get_entry_block_def_set): Check if STATIC_CHAIN_REGNUM
8611         is defined.
8612
8613 2007-06-13  Bernd Schmidt  <bernd.schmidt@analog.com>
8614
8615         * config/bfin/bfin.h (EH_RETURN_HANDLER_RTX): Use gen_frame_mem.
8616         * config/bfin/bfin.md (UNSPEC_VOLATILE_STORE_EH_HANDLER): New constant.
8617         (eh_store_handler): New pattern.
8618         (eh_return): Emit it instead of a plain move.
8619
8620 2007-06-13  Uros Bizjak  <ubizjak@gmail.com>
8621
8622         * config/i386/i386.c (ix86_init_mmx_sse_builtins)
8623         [__builtin_infq, __builtin_fabsq]: Define usign def_builtin.
8624         [__builtin_ia32_rsqrtps, __builtin_ia32_rsqrtss]: Define using
8625         def_builtin_const.
8626
8627 2007-06-13  Bernd Schmidt  <bernd.schmidt@analog.com>
8628
8629         * config/bfin/bfin.c (gen_one_bundle): Delete unused local variables.
8630         (find_next_insn_start, find_load): New functions.
8631         (bfin_reorg): Use them to deal with the fact that parallel insns are
8632         no longer represented as a SEQUENCE.
8633
8634 2007-06-13  Eric Botcazou  <ebotcazou@libertysurf.fr>
8635
8636         * config/sparc/sparc.c (sparc_override_options): Initialize
8637         fpu mask correctly.
8638
8639 2007-06-13  Dave Korn  <dave.korn@artimi.com>
8640
8641         * config/i386/i386.c (ix86_eax_live_at_start_p): Use
8642         df_get_live_out.
8643
8644 2007-06-13  Kazu Hirata  <kazu@codesourcery.com>
8645
8646         * auto-inc-dec.c, c-incpath.c, config/c4x/libgcc.S,
8647         config/sh/divcost-analysis, dbgcnt.def, df-core.c,
8648         df-problems.c, df-scan.c, df.h, dominance.c, dse.c, regstat.c,
8649         tree-data-ref.c, tree-ssa-loop-im.c, tree-ssa-loop-prefetch.c,
8650         tree-vect-transform.c: Fix comment typos.  Follow spelling
8651         conventions.
8652
8653 2007-06-12  Seongbae Park  <seongbae.park@gmail.com>
8654
8655        * df-scan.c (df_get_exit-block_use_set): Always add the stack pointer
8656        to the exit block use set.
8657        (df_insn_delete, df_insn_rescan): Fixed spelling of "deferring". 
8658        * gcse.c (cpro_jump): Don't emit barrier in cfglayout mode.
8659        * config/sparc/sparc.c (sparc_check_64): Check df != NULL.
8660
8661 2007-06-12  Seongbae Park  <seongbae.park@gmail.com>
8662
8663         * opts.c (common_handle_option): Handle new option -fdbg-cnt-list.
8664         * dbgcnt.c (dbg_cnt_set_limit_by_name): Return value
8665         to indicate an error.
8666         (dbg_cnt_process_single_pair, dbg_cnt_list_all_counters):
8667         New functions.
8668         (dbg_cnt_process_opt): Print an error on a bad argument.
8669         * dbgcnt.h (dbg_cnt_list_all_counters): New function declaration.
8670         * common.opt (-fdbg-cnt-list): New.
8671         * doc/invoke.texi (-fdbg-cnt-list,-fdbg-cnt=): New.
8672
8673 2007-06-12  Eric Botcazou  <ebotcazou@adacore.com>
8674
8675         * tree-ssa-alias.c (finalize_ref_all_pointers): Clear pt_anything
8676         flag on ref-all pointers.
8677
8678 2007-06-12  Andrew Pinski  <andrew_pinski@playstation.sony.com>
8679
8680         PR middle-end/31579
8681         * expr.c (expand_expr_addr_expr_1): Call expand_expr
8682         for the offset with the modifier as EXPAND_INITIALIZER
8683         if the modifier is EXPAND_INITIALIZER.
8684         (expand_expr_real_1 <case INTEGER_CST>): Don't force to
8685         a register if we had an overflow.
8686
8687 2007-06-12  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
8688
8689         * real.c (real_isfinite): New.
8690         (real_sqrt): Use it.
8691         * real.h (real_isfinite): New.
8692         * builtins.c: Use it.
8693
8694 2007-06-12  Ian Lance Taylor  <iant@google.com>
8695             Daniel Berlin  <dberlin@dberlin.org>
8696
8697         PR libstdc++/29286
8698         * tree.def: Add CHANGE_DYNAMIC_TYPE_EXPR.
8699         * tree.h (CHANGE_DYNAMIC_TYPE_NEW_TYPE): Define.
8700         (CHANGE_DYNAMIC_TYPE_LOCATION): Define.
8701         (DECL_NO_TBAA_P): Define.
8702         (struct tree_decl_common): Add no_tbaa_flag field.
8703         * tree-ssa-structalias.c (struct variable_info): Add
8704         no_tbaa_pruning field.
8705         (new_var_info): Initialize no_tbaa_pruning field.
8706         (unify_nodes): Copy no_tbaa_pruning field.
8707         (find_func_aliases): Handle CHANGE_DYNAMIC_TYPE_EXPR.
8708         (dump_solution_for_var): Print no_tbaa_pruning flag.
8709         (set_uids_in_ptset): Add no_tbaa_pruning parameter.  Change all
8710         callers.
8711         (compute_tbaa_pruning): New static function.
8712         (compute_points_to_sets): Remove CHANGE_DYNAMIC_TYPE_EXPR nodes.
8713         Call compute_tbaa_pruning.
8714         * tree-ssa-alias.c (may_alias_p): Test no_tbaa_flag for pointers.
8715         * gimplify.c (gimplify_expr): Handle CHANGE_DYNAMIC_TYPE_EXPR.
8716         * gimple-low.c (lower_stmt): Likewise.
8717         * tree-gimple.c (is_gimple_stmt): Likewise.
8718         * tree-ssa-operands.c (get_expr_operands): Likewise.
8719         * tree-ssa-dce.c (mark_stmt_if_obviously_necessary): Likewise.
8720         * tree-inline.c (estimate_num_insns_1): Likewise.
8721         (copy_result_decl_to_var): Likewise.
8722         * expr.c (expand_expr_real_1): Likewise.
8723         * tree-pretty-print.c (dump_generic_node): Likewise.
8724         * tree-inline.c (copy_decl_to_var): Copy DECL_NO_TBAA_P flag.
8725         * omp-low.c (omp_copy_decl_2): Likewise.
8726         * print-tree.c (print_node): Print DECL_NO_TBAA_P flag.
8727         * doc/c-tree.texi (Expression trees): Document
8728         CHANGE_DYNAMIC_TYPE_EXPR.
8729
8730 2007-06-12  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
8731
8732         * fold-const.c (fold_binary): Guard (X-X) -> 0 transformation
8733         with !HONOR_NANS and !HONOR_INFINITIES.
8734         * simplify-rtx.c (simplify_binary_operation_1): Likewise.
8735
8736 2007-06-12  Tristan Gingold  <gingold@adacore.com>
8737
8738         * gcov.c: Comments updated.
8739         (source_info): Add file_time field.
8740         (source_index): New variable.
8741         (mutiple_files): New variable.
8742         (generate_results): New function extracted from process_file.
8743         (process_file): Save and restore chain of functions, generate
8744         results and free structures only if not merging results.
8745         (release_structures): File names are now freed in create_file_names
8746         (create_file_names): Free previous file names.
8747         (find_source): File date is now read here and modifications in
8748         source files is checked here.
8749         (read_graph_file): Only reverse order of functions for the current
8750         object file.
8751         (make_gcov_file_name): Do not generate long names if input_name is
8752         NULL.
8753         (output_lines): If merging results do not display graph, data and
8754         runs informations.
8755         Checking source file modification is done in find_source.
8756
8757         * doc/gcov.texi: Append an s to sourcefile.
8758
8759 2007-06-12  Bernd Schmidt  <bernd.schmidt@analog.com>
8760
8761         * config/bfin/bfin.md (UNSPEC_NOP): New constant.
8762         (forced_nop): New pattern.
8763         * config/bfin/bfin.c: Include "df.h".
8764         (add_to_reg): Use df_regs_ever_live_p instead of regs_ever_live.
8765         (bfin_discover_loop): Use df_get_live_in instead of
8766         global_live_at_start.
8767         (bfin_reorder_loops): Pass 0 to cfg_layout_initialize.  Call
8768         df_analyze when done.
8769         (gen_one_bundle): Don't generate SEQUENCE insns, just put modes on
8770         the insns.  Use QImode for the final insn in a bundle.  Call
8771         df_insn_rescan on generated NOPs; use gen_forced_nop instead of
8772         gen_nop.
8773         (reorder_var_tracking_notes): New function.
8774         (bfin_reorg): Pass no argument to split_all_insns.  Don't call
8775         update_life_info.  Call df_analyze after scheduling and bundle
8776         generation.  Call reorder_var_tracking_notes if generating these
8777         notes.  Call df_finish_pass at the end.
8778
8779 2007-06-12  Dirk Mueller  <dmueller@suse.de>
8780
8781         * optabs.c (debug_optab_libfuncs): fix gcc_assert to
8782         a comparison, not an assignment.
8783
8784 2007-06-12  Olivier Hainque  <hainque@adacore.com>
8785
8786         * tree-nested.c (convert_local_reference): Handle VIEW_CONVERT_EXPR.
8787         Request walking the subtrees only, leaving the current is_lhs/val_only
8788         untouched.
8789         (convert_non_local_reference): Likewise.
8790
8791 2007-06-12  Nathan Sidwell  <nathan@codesourcery.com>
8792
8793         * config/m68k/m68k-devices.def (52221, 52223, 5253): New.
8794
8795 2007-06-12  Richard Guenther  <rguenther@suse.de>
8796
8797         PR tree-optimization/15353
8798         PR tree-optimization/31657
8799         * passes.c (init_optimization_passes): Add pass_tree_ifcombine.
8800         * timevar.def: Add TV_TREE_IFCOMBINE.
8801         * tree-pass.h (pass_tree_ifcombine): Declare.
8802         * tree-ssa-ifcombine.c: New file.
8803         * tree-ssa-phiopt.c (blocks_in_phiopt_order): Export.
8804         * tree-flow.h (blocks_in_phiopt_order): Declare.
8805         * Makefile.in (OBJS-common): Add tree-ssa-ifcombine.o.
8806         (tree-ssa-ifcombine.o): New dependencies.
8807
8808 2007-06-12  Uros Bizjak  <ubizjak@gmail.com>
8809
8810         PR rtl-optimization/32293
8811         * combine.c (simplify_if_then_else): Truncate return from
8812         nonzero_bits() to correct mode.
8813
8814 2007-06-12  Uros Bizjak  <ubizjak@gmail.com>
8815
8816         * fold-const (fold_binary) [RDIV_EXPR]: Also optimize a/cbrt(b/c)
8817         into a*cbrt(c/b) if flag_unsafe_math_optimizations is set.
8818
8819 2007-06-11  Diego Novillo  <dnovillo@google.com>
8820
8821         * Makefile.in (reload1.o-warn): Remove.
8822
8823 2007-06-11  Seongbae Park <seongbae.park@gmail.com>
8824
8825         * combine.c (subst): Use reg_overlap_mentioned_p
8826         instead of comparing register numbers directly.
8827
8828 2007-06-11  Kenneth Zadeck <zadeck@naturalbridge.com>
8829
8830         * reload1.c (mark_home_live_1): Use the mode parameter.
8831
8832 2007-06-11  Kenneth Zadeck <zadeck@naturalbridge.com>
8833
8834         * df-scan.c (df_insn_delete, df_insn_rescan, df_insn_rescan_all,
8835         df_process_deferred_rescans, df_notes_rescan): Fixed spelling of
8836         word "deferred".
8837         * df-core.c: Ditto.
8838
8839 2007-06-11  Daniel Berlin  <dberlin@dberlin.org>
8840
8841         * Merge dataflow-branch into mainline (see ChangeLog.dataflow)
8842
8843 2007-06-11  Uros Bizjak  <ubizjak@gmail.com>
8844
8845         * config/i386/i386.md ("*movtf_internal): Penalize moves to and
8846         from integer registers.
8847         (FP mode splitters): Handle TFmode.
8848
8849 2007-06-11  Eric Botcazou  <ebotcazou@adacore.com>
8850
8851         * tree-ssa-structalias.c (find_what_p_points_to): Return false
8852         for ref-all pointers that point-to anything.
8853
8854 2007-06-11  Joseph Myers  <joseph@codesourcery.com>
8855
8856         * config/arm/arm.c (arm_output_dwarf_dtprel,
8857         TARGET_ASM_OUTPUT_DWARF_DTPREL): New.
8858
8859 2007-06-11  Bernd Schmidt  <bernd.schmidt@analog.com>
8860
8861         * config/bfin/bfin.md (movdi_insn, movsi_insn, movv2hi_insn,
8862         movhi_insn, movqi_insn, movsf_insn, movdf_insn): Don't allow constant
8863         to memory moves.
8864
8865 2007-06-11  Rafael Avila de Espindola  <espindola@google.com>
8866
8867         * tree.c (signed_or_unsigned_type_for): New.
8868         (unsigned_type_for): Use signed_or_unsigned_type_for.
8869         (signed_type_for): Use signed_or_unsigned_type_for.
8870         * tree.h (signed_or_unsigned_type_for): New.
8871         (get_signed_or_unsigned_type): Remove.
8872         * fold-const.c (fold_negate_expr): Use signed_type_for instead of
8873         lang_hooks.types.signed_type
8874         (size_diffop): Likewise.
8875         (all_ones_mask_p): Likewise.
8876         (build_range_check): Likewise.
8877         (fold_cond_expr_with_comparison): Likewise.
8878         (fold_cond_expr_with_comparison): Likewise.
8879         (unextend): Likewise.
8880         (extract_muldiv_1): Likewise.
8881         (fold_single_bit_test_into_sign_test): Likewise.
8882         (fold_binary): Likewise.
8883         (fold_ternary): Likewise.
8884         (operand_equal_for_comparison_p): Use signed_or_unsigned_type_for
8885         instead of get_signed_or_unsigned_type.
8886         * c-objc-common.h (LANG_HOOKS_SIGNED_TYPE): Remove.
8887         (LANG_HOOKS_SIGNED_OR_UNSIGNED_TYPE): Remove.
8888         * expr.c (signed_or_unsigned_type_for): Use
8889         signed_or_unsigned_type_for instead of get_signed_or_unsigned_type.
8890         * langhooks.c (get_signed_or_unsigned_type): Remove.
8891         (lhd_signed_or_unsigned_type): Remove.
8892         * langhooks.h (lang_hooks_for_types): Remove signed_type and
8893         signed_or_unsigned_type.
8894         (lhd_signed_or_unsigned_type): Remove.
8895         * expmed.c (make_tree): Use signed_type_for instead of
8896         lang_hooks.types.signed_type.
8897         * c-common.c (same_scalar_type_ignoring_signedness): Use
8898         c_common_signed_type instead of lang_hooks.types.signed_type.
8899         (c_common_unsigned_type): New.
8900         (c_common_signed_type): Just call c_common_signed_or_unsigned_type.
8901         (shorten_compare): Use c_common_unsigned_type instead of
8902         c_common_signed_or_unsigned_type.
8903         (c_common_nodes_and_builtins): Use c_common_unsigned_type instead of
8904         unsigned_type_for.
8905         * convert.c (convert_to_integer): Use signed_type_for instead of
8906         lang_hooks.types.signed_type.
8907         * langhooks-def.h (LANG_HOOKS_SIGNED_OR_UNSIGNED_TYPE): Remove.
8908         (LANG_HOOK_FOR_TYPES_INITIALIZER): Remove LANG_HOOKS_SIGNED_TYPE and
8909         LANG_HOOKS_SIGNED_OR_UNSIGNED_TYPE.
8910         * c-format.c (check_format_types): Use c_common_unsigned_type
8911         instead of unsigned_type_for.
8912         * c-decl.c (groakdeclarator): Likewise.
8913         * c-typeck.c (convert_for_assignment): Likewise.
8914         * c-common.h (c_common_unsigned_type): New.
8915
8916 2007-06-11  Uros Bizjak  <ubizjak@gmail.com>
8917
8918         PR target/32280
8919         * config/i386/sse.md ("sse2_ashlti", "sse2_lshrti3"): Move ...
8920         * config/i386/i386.md ("sse2_ashlti", "sse2_lshrti3"): ... to here.
8921
8922 2007-06-11  Uros Bizjak  <ubizjak@gmail.com>
8923
8924         PR middle-end/32279
8925         * fold-const (fold_binary) [RDIV_EXPR]: Optimize a/sqrt(b/c)
8926         into a*sqrt(c/b) if flag_unsafe_math_optimizations is set.
8927
8928 2007-06-10  Jan Sjodin  <jan.sjodin@amd.com>
8929             Sebastian Pop  <sebpop@gmail.com>
8930
8931         * lambda-code.c (remove_iv): New.
8932         (lambda_loopnest_to_gcc_loopnest): Use remove_iv.
8933
8934 2007-06-10  Zdenek Dvorak  <dvorakz@suse.cz>
8935
8936         * tree-data-ref.c (dr_analyze_alias): Handle case smt is NULL.
8937         * tree-predcom.c (mark_virtual_ops_for_renaming): Exported.
8938         * tree-ssa-loop-prefetch.c: Include optabs.h.
8939         (FENCE_FOLLOWING_MOVNT): New macro.
8940         (struct mem_ref): Add independent_p and storent_p fields.
8941         (record_ref): Initalize the new fields.
8942         (gather_memory_references_ref): Return true if the reference
8943         could be analysed.
8944         (gather_memory_references): Check whether all memory accesses
8945         in loop were recorded.
8946         (should_issue_prefetch_p): Return false for nontemporal stores.
8947         (nontemporal_store_p, mark_nontemporal_store, emit_mfence_after_loop,
8948         may_use_storent_in_loop_p, mark_nontemporal_stores): New functions.
8949         (determine_loop_nest_reuse): Detect independent memory references.
8950         (loop_prefetch_arrays): Call mark_nontemporal_stores.
8951         * tree-flow.h (mark_virtual_ops_for_renaming): Declare.
8952         * Makefile.in (tree-ssa-loop-prefetch.o): Add OPTABS_H dependency.
8953         * config/i386/i386.h (x86_mfence): Declare.
8954         (FENCE_FOLLOWING_MOVNT): Return x86_mfence.
8955         * config/i386/i386.c (x86_mfence): New variable.
8956         (ix86_init_mmx_sse_builtins): Initialize x86_mfence.
8957
8958         * tree-pretty-print.c (dump_generic_node): Mark nontemporal stores.
8959         * optabs.c (init_optabs): Initialize storent_optab.
8960         * optabs.h (enum optab_index): Add OTI_storent.
8961         (storent_optab): Declare.
8962         * genopinit.c (optabs): Add initialization for storent_optab.
8963         * tree.h (MOVE_NONTEMPORAL): New macro.
8964         * expr.c (expand_assignment, store_expr, store_constructor_field,
8965         store_constructor, store_field, expand_expr_real_1): Propagate
8966         nontemporality of the expanded store.
8967         (emit_storent_insn): New function.
8968         * expr.h (expand_assignment, store_expr): Declaration changed.
8969         * function.c (assign_parm_setup_reg): Pass false as nontemporality
8970         to expand_assignment.
8971         * stmt.c (expand_asm_expr): Ditto.
8972         * calls.c (initialize_argument_information): Pass false as
8973         nontemporality to store_expr.
8974         * config/i386/sse.md (storentv4sf, storentv2df, storentv2di,
8975         storentsi): New.
8976
8977 2007-06-09  Daniel Berlin  <dberlin@dberlin.org>
8978
8979         * tree-ssa-structalias.c (set_uids_in_ptset): Add is_deref'd
8980         parameter, use it.
8981         (find_what_p_points_to): Pass new parameter to set_uids_in_ptset.
8982
8983 2007-06-09  Daniel Berlin  <dberlin@dberlin.org>
8984
8985         * tree-data-ref.c (dr_may_alias_p): Check that decl_a != decl_b,
8986         and allow DECL_P here.
8987
8988 2007-06-09  Zdenek Dvorak  <dvorakz@suse.cz>
8989
8990         * tree-scalar-evolution.c (follow_ssa_edge_in_rhs,
8991         follow_ssa_edge_in_condition_phi, follow_ssa_edge): Keep more precise
8992         track of the size of the expression.
8993         * cfghooks.c (merge_blocks): Remove block from loops structure only
8994         after call of the merge_blocks hook.
8995
8996 2007-06-09  Tom Tromey  <tromey@redhat.com>
8997
8998         * c-decl.c (grokdeclarator): Added 'deprecated_state' argument.
8999         (deprecated_state): Removed.
9000         (start_decl): Update.
9001         (enum deprecated_states): Moved earlier.
9002         (groktypename): Update.
9003         (push_parm_decl): Likewise.
9004         (grokfield): Likewise.
9005         (start_function): Likewise.
9006
9007 2007-06-09  Ian Lance Taylor  <iant@google.com>
9008
9009         PR tree-optimization/32169
9010         * tree-vrp.c (extract_range_from_unary_expr): For NOP_EXPR and
9011         CONVERT_EXPR, check whether min and max both converted to an
9012         overflow infinity representation.
9013
9014 2007-06-08  Eric Botcazou  <ebotcazou@adacore.com>
9015
9016         * reload1.c (fixup_abnormal_edges): Clear bb field for insns
9017         not inserted on the edge.
9018
9019 2007-06-08  Bob Wilson  <bob.wilson@acm.org>
9020
9021         * config/xtensa/lib1funcs.asm (__udivsi3): Use hardware divide
9022         instructions if they are supported.
9023         (__divsi3, __umodsi3, __modsi3): Likewise.
9024         (__ashldi3, __ashrdi3, __lshrdi3): New.
9025         * config/xtensa/t-xtensa (LIB1ASMFUNCS): Add DImode shift functions.
9026
9027 2007-06-08  Harsha Jagasia <harsha.jagasia@amd.com>
9028             Tony Linthicum <tony.linthicum@amd.com>
9029
9030         * doc/invoke.texi: Add fvect-cost-model flag.
9031         * common.opt (fvect-cost-model): New flag.
9032         * tree-vectorizer.c (new_stmt_vec_info): Initialize inside and outside
9033         cost fields in stmt_vec_info struct for STMT.
9034         * tree-vectorizer.h (stmt_vec_info): Define inside and outside cost
9035         fields in stmt_vec_info struct and access functions for the same.
9036         (TARG_COND_BRANCH_COST): Define cost of conditional branch.
9037         (TARG_VEC_STMT_COST): Define cost of any vector operation, excluding
9038         load, store and vector to scalar operation.
9039         (TARG_VEC_TO_SCALAR_COST): Define cost of vector to scalar operation.
9040         (TARG_VEC_LOAD_COST): Define cost of aligned vector load.
9041         (TARG_VEC_UNALIGNED_LOAD_COST): Define cost of misasligned vector load.
9042         (TARG_VEC_STORE_COST): Define cost of vector store.
9043         (vect_estimate_min_profitable_iters): Define new function.
9044         * tree-vect-analyze.c (vect_analyze_operations): Add a compile-time
9045         check to evaluate if loop iterations are less than minimum profitable
9046         iterations determined by cost model or minimum vect loop bound defined
9047         by user, whichever is more conservative.
9048         * tree-vect-transform.c (vect_do_peeling_for_loop_bound): Add a
9049         run-time check to evaluate if loop iterations are less than minimum
9050         profitable iterations determined by cost model or minimum vect loop
9051         bound defined by user, whichever is more conservative.
9052         (vect_estimate_min_profitable_iterations): New function to estimate
9053         mimimimum iterartions required for vector version of loop to be
9054         profitable over scalar version.
9055         (vect_model_reduction_cost): New function.
9056         (vect_model_induction_cost): New function.
9057         (vect_model_simple_cost): New function.
9058         (vect_cost_strided_group_size): New function.
9059         (vect_model_store_cost): New function.
9060         (vect_model_load_cost): New function.
9061         (vectorizable_reduction): Call vect_model_reduction_cost during
9062         analysis phase.
9063         (vectorizable_induction): Call vect_model_induction_cost during
9064         analysis phase.
9065         (vectorizable_load): Call vect_model_load_cost during analysis phase.
9066         (vectorizable_store): Call vect_model_store_cost during analysis phase.
9067         (vectorizable_call, vectorizable_assignment, vectorizable_operation,
9068         vectorizable_promotion, vectorizable_demotion): Call
9069         vect_model_simple_cost during analysis phase.
9070
9071 2007-06-08  Simon Baldwin  <simonb@google.com>
9072
9073         * reg-stack.c (get_true_reg): Readability change.  Moved default case
9074         label into direct switch statement scope.
9075
9076 2007-06-08  Simon Baldwin  <simonb@google.com>
9077
9078         * tree-flow-inline.h (var_ann): Replaced erroneous '=' assignment
9079         in gcc_assert() with '==' comparison.
9080
9081 2007-06-08  Uros Bizjak  <ubizjak@gmail.com>
9082
9083         * config/i386/i386.c (override_options): Merge TARGET_SSE4_2 and
9084         TARGET_ABM handling of x86_popcnt variable.
9085
9086 2007-06-08  Uros Bizjak  <ubizjak@gmail.com>
9087
9088         * doc/extend.texi (X86 Built-in Functions): Document __builtin_fabsq,
9089         __builtin_copysignq and __builtin_infq built-in functions.
9090
9091 2007-06-08  Uros Bizjak  <ubizjak@gmail.com>
9092
9093         * doc/extend.texi (X86 Built-in Functions): Add missing `@item's in
9094         SSE4.2 section.  Correct built-in function names in SSE4A section.
9095
9096 2007-06-08  Uros Bizjak  <ubizjak@gmail.com>
9097
9098         PR tree-optimization/32243
9099         * tree-vect-transform.c (vectorizable_type_promotion): Move check
9100         for ncopies after ratio check between nunits_out and nunits_in.
9101         (vectorizable_type_demotion): Remove single-use variable "scalar_type".
9102
9103 2007-06-08  Dorit Nuzman  <dorit@il.ibm.com>
9104
9105         PR tree-optimization/32224
9106         * tree-vect-analyze.c (vect_determine_vectorization_factor): Fail
9107         vectorization upon a non GIMPLE_MODIFY_STMT.
9108
9109 2007-06-08  Christian Bruel  <christian.bruel@st.com>
9110
9111         PR target/29953
9112         * config/sh/sh.md (doloop_end): New pattern and splitter.
9113         * loop-iv.c (simple_rhs_p): Check for hardware registers.
9114
9115 2007-06-08  Zdenek Dvorak  <dvorakz@suse.cz>
9116
9117         PR middle-end/32209
9118         * dominance.c (debug_dominance_tree, debug_dominance_tree_1): New
9119         functions.
9120         (verify_dominators): Do not change dominance tree.
9121
9122 2007-06-08  Kaz Kojima  <kkojima@gcc.gnu.org>
9123
9124         * config/sh/constraints.md: New file.
9125         * config/sh/sh.c: Include tm-constrs.h.
9126         (reg_class_from_letter): Remove.
9127         (prepare_cbranch_operands): Use satisfies_constraint_*
9128         function instead of macro.
9129         (andcosts, broken_move, sh_secondary_reload): Likewise.
9130         * config/sh/predicates.md (trapping_target_operand): Likewise.
9131         (and_operand, arith_operand, arith_reg_or_0_operand,
9132         cmp_operand, logical_operand, target_operand,
9133         ua_address_operand, ua_offset, xor_operand): Likewise.
9134         * config/sh/sh.md: Include constraints.md.
9135         (*movsicc_t_false): Use satisfies_constraint_* function
9136         instead of macro.
9137         (*movsicc_t_true, ashlsi3_std, ashlhi3_k, lshrsi3_m,
9138         lshrsi3_k, movsi_const_16bit+2, *movhi_media+1,
9139         movdi_const_16bit+1, beq, bne, *ptb): Likewise.
9140         * config/sh/sh.h (reg_class_from_letter): Remove prototype.
9141         (OVERRIDE_OPTIONS): Don't modify reg_class_from_letter.
9142         (REG_CLASS_FROM_CONSTRAINT): Remove.
9143         (CONSTRAINT_LEN, CONST_OK_FOR_I20, CONST_OK_FOR_I,
9144         CONST_OK_FOR_J, CONST_OK_FOR_K16, CONST_OK_FOR_K,
9145         CONST_OK_FOR_P27, CONST_OK_FOR_P, CONST_OK_FOR_M,
9146         CONST_OK_FOR_N, CONST_OK_FOR_CONSTRAINT_P,
9147         CONST_DOUBLE_OK_FOR_LETTER_P): Likewise.
9148         (SECONDARY_INOUT_RELOAD_CLASS): Use satisfies_constraint_*
9149         function instead of macro.
9150         (SECONDARY_INPUT_RELOAD_CLASS): Likewise.
9151         (EXTRA_CONSTRAINT_Q, EXTRA_CONSTRAINT_A,
9152         EXTRA_CONSTRAINT_Bsc, EXTRA_CONSTRAINT_B,
9153         EXTRA_CONSTRAINT_Css, EXTRA_CONSTRAINT_Csu): Remove.
9154         (IS_PC_RELATIVE_LOAD_ADDR_P): New macro.
9155         (IS_LITERAL_OR_SYMBOLIC_S16_P): Likewise.
9156         (IS_LITERAL_OR_SYMBOLIC_U16_P): Likewise.
9157         (IS_NON_EXPLICIT_CONSTANT_P): Likewise.
9158         (EXTRA_CONSTRAINT_Csy, EXTRA_CONSTRAINT_Z, EXTRA_CONSTRAINT_W,
9159         EXTRA_CONSTRAINT_Cpg, EXTRA_CONSTRAINT_C,
9160         EXTRA_MEMORY_CONSTRAINT, EXTRA_CONSTRAINT_Sr0,
9161         EXTRA_CONSTRAINT_Sua, EXTRA_CONSTRAINT_S,
9162         EXTRA_CONSTRAINT_STR): Likewise.
9163         (GO_IF_LEGITIMATE_INDEX): Fix indentation.
9164
9165 2007-06-07  Geoffrey Keating  <geoffk@apple.com>
9166
9167         * config/i386/darwin.h (STACK_BOUNDARY): Define.
9168
9169 2007-06-07  Simon Martin  <simartin@users.sourceforge.net>
9170
9171         PR c++/30759
9172         * c-common.h (flag_cpp0x): Replaced by...
9173         (cxx_dialect): ... this new variable specifying the C++ dialect that
9174         is used.
9175         * c-common.c (flag_cpp0x): Removed.
9176         (cxx_dialect): Defined.
9177         * c-cppbuiltin.c (c_cpp_builtins): flag_cpp0x rewritten in terms of
9178         cxx_dialect.
9179         * c-opts.c (c_common_post_options): Likewise.
9180         (set_std_cxx98): Set cxx_dialect to cxx98.
9181         (set_std_cxx0x): Set cxx_dialect to cxx0x.
9182
9183 2007-06-07  Geoffrey Keating  <geoffk@apple.com>
9184             Hui-May Chang <hm.chang@apple.com>
9185
9186         * doc/invoke.texi (Darwin Options): Update documentation for
9187         -mmacosx-version-min.
9188         * config.gcc (*-*-darwin*): Set extra_gcc_objs.
9189         * config/darwin-driver.c: New file.
9190         * config/darwin.h (GCC_DRIVER_HOST_INITIALIZATION): New.
9191         * config/t-darwin (darwin-driver.o): New rule.
9192
9193         * config/darwin-c.c (version_as_macro): Ignore low digit.
9194
9195 2007-06-07  Uros Bizjak  <ubizjak@gmail.com>
9196
9197         * config/i386/i386.md (standard sse constant splitter): Handle TFmode.
9198         (negtf2, abstf2, *absnegtf2_sse): New insn patterns.
9199         (CSGNMODE): New mode macro.
9200         (CSGNVMODE): New mode attribute.
9201         (copysign<mode>3): Rename from copysingsf3 and copysigndf3.  Macroize
9202         expander using CSGNMODE mode macro.  Handle TFmode.
9203         (copysign<mode>3_const): Rename from copysignsf3_const and
9204         copysigndf3_const.  Macroize pattern using CSGNMODE mode macro.
9205         Handle TFmode.
9206         (copysign<mode>3_var): Rename from copysignsf3_var and
9207         copysigndf3_var.  Macroize pattern using CSGNMODE mode macro.
9208         Handle TFmode.
9209         (copysign<mode>3_var splitter): Macroize pattern using CSGNMODE
9210         mode macro.  Handle TFmode.
9211         * config/i386/sse.md (andtf3, *andtf3, *nandtf3): New insn patterns.
9212         (iortf3, *iortf3): Ditto.
9213         (xortf3, *xortf3): Ditto.
9214         * config/i386/i386.c (ix86_build_signbit_mask): Create scalar
9215         TFmode and TImode masks.
9216         (ix86_expand_copysign): Expand TFmode copysign insn.
9217         (IX86_BUILTIN_INFQ): New.
9218         (IX86_BUILTIN_FABSQ): Ditto.
9219         (IX86_BUILTIN_COPYSIGNQ): Ditto.
9220         (ix86_init_mmx_sse_builtins) [__builtin_infq]: New builtin definition.
9221         [__builtin_fabsq]: Ditto.
9222         [__builtin_copysignq]: Ditto.
9223         (ix86_expand_builtin) [IX86_BUILTIN_INFQ]: Expand builtin.
9224         [IX86_BUILTIN_FABSQ]: Expand builtin using ix86_expand_unop_builtin().
9225         [IX86_BUILTIN_COPYSIGNQ]: Expand builtin using
9226         ix86_expand_binop_builtin().
9227
9228 2007-06-07  Bob Wilson  <bob.wilson@acm.org>
9229
9230         * config/xtensa/lib1funcs.asm: Clean up whitespace.
9231
9232 2007-06-07  Steve Ellcey  <sje@cup.hp.com>
9233
9234         PR target/31850
9235         * rtl.h (push_to_sequence2): New.
9236         * emit-rtl.c (push_to_sequence2): New.
9237         * function.c (assign_parm_data_all): Add new fields.
9238         (assign_parm_setup_block): Call push_to_sequence2 instead of
9239         push_to_sequence.
9240         (assign_parm_setup_reg): Ditto.
9241         (assign_parm_setup_stack): Ditto.
9242         (assign_parms_unsplit_complex): Ditto.
9243         (assign_parms): Change field name.
9244
9245 2007-06-07  Zdenek Dvorak  <dvorakz@suse.cz>
9246
9247         PR tree-optimization/32220
9248         * tree-predcom.c (eliminate_temp_copies): Handle the case that loop
9249         phi node is reached before defining statement.
9250
9251 2007-06-06  Andrew Pinski  <andrew_pinski@playstation.sony.com>
9252
9253         PR tree-opt/32231
9254         * tree-vect-transform.c (vectorizable_call): Call update_stmt
9255         after changing the right hand side of the assignment.
9256
9257 2007-06-06  Eric Christopher  <echristo@apple.com>
9258
9259         * config.gcc (i?86-*-darwin*): Remove arch parameter.
9260         (x86_64-*-darwin*): Ditto.
9261         * config/i386/darwin.h (TARGET_SUBTARGET32_ISA_DEFAULT): Define.
9262         (TARGET_SUBTARGET64_ISA_DEFAULT): Ditto.
9263
9264 2007-06-06  Thomas Neumann  <tneumann@users.sourceforge.net>
9265
9266         * tree-ssa-alias-warnings.c (maybe_add_match): Cast according to the
9267         coding conventions.
9268         (add_key): Likewise.
9269         * tree-ssa.c (init_tree_ssa): Use type safe memory macros.
9270         * tree-ssa-ccp.c (ccp_fold_builtin): Avoid using C++ keywords as
9271         variable names.
9272         * tree-ssa-coalesce.c (find_coalesce_pair): Use type safe memory
9273         macros.
9274         (add_cost_one_coalesce): Likewise.
9275         * tree-ssa-copy.c (merge_alias_info): Avoid using C++ keywords as
9276         variable names. Rename orig to orig_name for consistency.
9277         * tree-ssa-dom.c (dom_thread_across_edge): Cast according to the
9278         coding conventions.
9279         (cprop_into_successor_phis): Avoid using C++ keywords as variable
9280         names.
9281         (record_equivalences_from_stmt): Likewise.
9282         * tree-ssa-dse.c (dse_initialize_block_local_data): Cast according to
9283         the coding conventions.
9284         (memory_ssa_name_same): Likewise.
9285         (dse_optimize_stmt): Likewise.
9286         (dse_record_phis): Likewise.
9287         (dse_finalize_block): Likewise.
9288         * tree-ssa-loop-im.c (outermost_invariant_loop_expr): Avoid using C++
9289         keywords as variable names.
9290         (may_move_till): Cast according to the coding conventions.
9291         (force_move_till_expr): Avoid using C++ keywords as variable names.
9292         (force_move_till): Cast according to the coding conventions.
9293         (memref_hash): Likewise.
9294         (memref_eq): Likewise.
9295         (gather_mem_refs_stmt): Likewise.
9296         * tree-ssa-loop-ivopts.c (contains_abnormal_ssa_name_p): Avoid
9297         using C++ keywords as variable names.
9298         (idx_find_step): Cast according to the coding conventions.
9299         (idx_record_use): Likewise.
9300         (find_depends): Likewise.
9301         (prepare_decl_rtl): Likewise.
9302         (mbc_entry_hash): Likewise.
9303         (mbc_entry_eq): Likewise.
9304         * tree-ssa-loop-niter.c (SWAP): Use the correct the type for tmp.
9305         (simplify_replace_tree): Avoid using C++ keywords as variable names.
9306         (idx_infer_loop_bounds): Cast according to the coding conventions.
9307         * tree-ssa-loop-prefetch.c (idx_analyze_ref): Likewise.
9308         * tree-ssa-math-opts.c (occ_new ): Likwise.
9309         * tree-ssanames.c (duplicate_ssa_name_ptr_info): Use type safe memory
9310         macros.
9311         * tree-ssa-operands.c (add_def_op): Avoid using C++ keywords as
9312         variable names.
9313         (add_use_op): Likewise.
9314         (add_vop): Likewise.
9315         (add_vuse_op): Likewise.
9316         (add_vdef_op): Likewise.
9317         (get_expr_operands): Likewise.
9318         (push_stmt_changes): Use type safe memory macros.
9319         * tree-ssa-phiopt.c (replace_phi_edge_with_variable): Avoid using C++
9320         keywords as variable names.
9321         (conditional_replacement): Likewise.
9322         (minmax_replacement): Likewise.
9323         (abs_replacement): Likewise.
9324         * tree-ssa-pre.c (create_expression_by_pieces): Cast according to the
9325         coding conventions.
9326         (insert_fake_stores): Avoid using C++ keywords as variable names.
9327         * tree-ssa-reassoc.c (add_to_ops_vec): Cast according to the coding
9328         conventions.
9329         * tree-ssa-structalias.c (heapvar_lookup): Likewise.
9330         (heapvar_insert): Use type safe memory macros.
9331         (new_var_info): Cast according to the coding conventions.
9332         (new_constraint): Likewise.
9333         (remove_preds_and_fake_succs): Use type safe memory macros.
9334         * tree-ssa-threadupdate.c (thread_block): Cast according to the coding
9335         conventions.
9336         (thread_single_edge): Likewise.
9337         (thread_through_loop_header): Likewise.
9338
9339 2007-06-06  Eric Christopher  <echristo@apple.com>
9340
9341         * config/i386/i386.c (override_options): Move handling
9342         of TARGET_SUBTARGET* earlier.
9343
9344 2007-06-06  Paolo Bonzini  <bonzini@gnu.org>
9345
9346         * genmodes.c (tagged_printf, emit_insn_modes_h): Don't
9347         use %n on printf.
9348
9349 2007-06-06  Zdenek Dvorak  <dvorakz@suse.cz>
9350
9351         * haifa-sched.c (restore_bb_notes): Clear bb field of the notes
9352         emited outside of basic block.
9353         * cfgbuild.c (find_bb_boundaries): Clear bb field for insns between
9354         the created blocks.
9355         * rtl.h (delete_insn_chain): Declaration changed.
9356         * cfgrtl.c (delete_insn_chain): Add option to clear bb field for
9357         non-removed insns.
9358         (rtl_delete_block, rtl_merge_blocks): Pass true to delete_insn_chain.
9359         (delete_insn_chain_and_edges, try_redirect_by_replacing_jump,
9360         rtl_tidy_fallthru_edge, cfg_layout_merge_blocks): Pass false
9361         to delete_insn_chain.
9362         (rtl_verify_flow_info_1): Verify that the insns in header and footer
9363         do not have bb field set.
9364         (rtl_verify_flow_info): Verify that insns between basic blocks do not
9365         have bb field set.
9366         * recog.c (peephole2_optimize): Add argument to delete_insn_chain call.
9367         * cfgcleanup.c (try_optimize_cfg): Ditto.
9368
9369 2007-06-06  Thomas Neumann  <tneumann@users.sourceforge.net>
9370
9371         * lambda-code.c (struct lambda_lattice_s): Add a name to the struct.
9372         (lambda_body_vector_new): Use type safe memory macros.
9373         (lambda_linear_expression_new): Likewise.
9374         (lambda_loopnest_new): Likewise.
9375         (lambda_lattice_new): Likewise.
9376         (replace_uses_equiv_to_x_with_y): Cast according to the coding
9377         conventions. Use type safe memory macros.
9378         * lambda.h (struct lambda_trans_matrix_s): Add a name to the struct.
9379         (lambda_body_vector_s): Likewise.
9380         * lambda-mat.c (lambda_matrix_new): Use type safe memory macros.
9381         * lambda-trans.c (lambda_trans_matrix_new): Likewise.
9382
9383 2007-06-06  Richard Guenther  <rguenther@suse.de>
9384
9385         * tree-ssa-forwprop.c (forward_propagate_into_cond): Return 2
9386         if we need to schedule cfg_cleanup.
9387         (tree_ssa_forward_propagate_single_use_vars): Do so.
9388
9389 2007-06-06  Ian Lance Taylor  <iant@google.com>
9390
9391         * fold-const.c (merge_ranges): If range_successor or
9392         range_predecessor fail, just return 0.
9393
9394 2007-06-06  Uros Bizjak  <ubizjak@gmail.com>
9395
9396         PR tree-optimization/32216
9397         * tree-vectorizer.c (supportable_widening_operation): Determine
9398         signedness of FIX_TRUNC_EXPR from output operand.
9399         (supportable_narrowing_operation): Ditto.
9400         * tree-vect-generic.c (expand_vector_operations_1): Determine
9401         signedness of VEC_UNPACK_FLOAT_HI_EXPR and VEC_UNPACK_FLOAT_LO_EXPR
9402         from input operand.
9403
9404 2007-06-06  Thomas Neumann  <tneumann@users.sourceforge.net>
9405
9406         * config/i386/i386.c (enum pta_flags): Move out of struct scope...
9407         (struct pta): ...from here. Change flags to unsigned to avoid
9408         excessive casting (as it is used as a bit mask).
9409         (override_options): Add casts according to the coding convenventions.
9410         (x86_64_elf_unique_section): Likewise.
9411         (examine_argument): Avoid using C++ keywords as variable names.
9412         (construct_container): Likewise.
9413         (legitimize_pic_address): Likewise.
9414         (get_dllimport_decl): Cast according to the coding conventions. Use
9415         type safe memory macros.
9416         (legitimize_address): Cast according to the coding conventions.
9417         (emit_i387_cw_initialization): Corrected the type of slot to enum
9418         ix86_stack_slot.
9419         (ix86_init_machine_status): Use type safe memory macros.
9420         (bdesc_pcmpestr): Use UNKNOWN instead of integer 0.
9421         (bdesc_pcmpistr): Likewise.
9422         (bdesc_crc32): Likewise.
9423         (bdesc_sse_3arg): Likewise.
9424         (bdesc_2arg): Likewise.
9425         (bdesc_1arg): Likewise.
9426         (ix86_expand_sse_pcmpestr): Cast according to the coding conventions.
9427         (ix86_expand_sse_pcmpistr): Likewise.
9428         (ix86_expand_vec_set_builtin): Use EXPAND_NORMAL instead of integer 0.
9429         (ix86_builtin_vectorized_function): Change the type of fn to unsigned
9430         int to match the langhook definition.
9431         (ix86_builtin_conversion): Change the type of code to unsigned init to
9432         match the langhook definition.
9433         (ix86_preferred_reload_class): Avoid using C++ keywords as variable
9434         names.
9435         (ix86_preferred_output_reload_class): Likewise.
9436         (ix86_cannot_change_mode_class): Likewise.
9437         (ix86_memory_move_cost): Likewise.
9438         (ix86_rtx_costs): Cast the outer_code parameter to enum rtx_code to
9439         avoid excessive casting later on.
9440         (x86_output_mi_thunk): Avoid using C++ keywords as variable names.
9441
9442 2007-06-06  Uros Bizjak  <ubizjak@gmail.com>
9443
9444         * config/i386/sse.md (sse4_2_pcmpestr_cconly): Prefer pcmpestrm
9445         as flags setting insn.
9446         (sse4_2_pcmpistr_cconly): Prefer pcmpistrm as flags setting insn.
9447
9448 2007-06-06  Uros Bizjak  <ubizjak@gmail.com>
9449
9450         * config/i386/i386.md (UNSPEC_ROUNDP, UNSPEC_ROUNDS): Remove.
9451         (UNSPEC_ROUND): New.
9452         ("sse4_1_round<mode>2"): New insn pattern.
9453         ("rint<mode>2"): Expand using "sse4_1_round<mode>2" pattern for
9454         SSE4.1 targets.
9455         ("floor<mode>2"): Rename from floordf2 and floorsf2.  Macroize
9456         expander using SSEMODEF mode macro.  Expand using
9457         "sse4_1_round<mode>2" pattern for SSE4.1 targets.
9458         ("ceil<mode>2"): Rename from ceildf2 and ceilsf2.  Macroize
9459         expander using SSEMODEF mode macro.  Expand using
9460         "sse4_1_round<mode>2" pattern for SSE4.1 targets.
9461         ("btrunc<mode>2"): Rename from btruncdf2 and btruncsf2.  Macroize
9462         expander using SSEMODEF mode macro.  Expand using
9463         "sse4_1_round<mode>2" pattern for SSE4.1 targets.
9464         * config/i386/sse.md ("sse4_1_roundpd", "sse4_1_roundps"): Use
9465         UNSPEC_ROUND instead of UNSPEC_ROUNDP.
9466         ("sse4_1_roundsd", "sse4_1_roundss"): Use UNSPEC_ROUND instead of
9467         UNSPEC_ROUNDS.
9468
9469 2007-06-06  Jan Sjodin  <jan.sjodin@amd.com>
9470             Sebastian Pop  <sebpop@gmail.com>
9471
9472         * lambda.h (build_linear_expr): New.
9473         * lambda-code.c (lbv_to_gcc_expression, lle_to_gcc_expression):
9474         Use build_linear_expr, call fold and force_gimple_operand.
9475         (lambda_loopnest_to_gcc_loopnest): Check that there is
9476         something to insert.
9477         * testsuite/gcc.dg/tree-ssa/ltrans-6.c: New.
9478
9479 2007-06-05  Joerg Wunsch  <j.gnu@uriah.heep.sax.de>
9480
9481         PR preprocessor/23479
9482         * doc/extend.texi: Document the 0b-prefixed binary integer
9483         constant extension.
9484
9485 2007-06-05  Uros Bizjak  <ubizjak@gmail.com>
9486
9487         PR tree-optimization/32215
9488         * tree-vectorizer.c (supportable_widening_operation): Return false
9489         for unsupported FIX_TRUNC_EXPR tree code.
9490         (supportable_narrowing_operation): Ditto for FLOAT_EXPR tree code.
9491
9492 2007-06-06  Nathan Froyd  <froydnj@codesourcery.com>
9493
9494         * config/rs6000/rs6000.h (FIXED_SCRATCH): Use r0 as a scratch
9495         register on SPE targets.  Change documentation to reflect
9496         reality.
9497         * config/rs6000/rs6000.c (rs6000_conditional_register_usage):
9498         Change FIXED_SCRATCH to 14 and document why we're keeping r14
9499         out of the register allocation pool.
9500         (rs6000_reg_live_or_pic_offset_p): New function.
9501         (rs6000_emit_prologue): Move the actual saving of LR up to free
9502         r0 for holding r11.  Split saving of SPE 64-bit registers into
9503         its own case.  Ensure that offsets will always be in-range for
9504         'evstdd' by using r11 as a scratch register to point at the start
9505         of the SPE save area.  Save r11 if necessary, as it is the static
9506         chain register.
9507         (rs6000_emit_epilogue): Split restoring of SPE 64-bit registers
9508         into its own case.  Ensure that offsets will always be in-range
9509         for 'evldd' by using r11 as a scratch register to point at the
9510         start of the SPE save area.  Also adjust r11 when restoring
9511         the stack pointer to compensate for pre-loading r11.
9512
9513 2007-06-05  Thomas Neumann  <tneumann@users.sourceforge.net>
9514
9515         * cfg.c (init_flow): Use type safe memory macros.
9516         (alloc_block): Likewise.
9517         (unchecked_make_edge): Likewise.
9518         (dump_flow_info): Avoid using C++ keywords as variable names.
9519         (copy_original_table_clear): Cast according to the coding conventions.
9520         (copy_original_table_set): Likewise.
9521         * cfgexpand (label_rtx_for_bb): Likewise.
9522         (expand_gimple_basic_block): Likewise.
9523         * cfghooks.c (dump_bb): Likewise.
9524         (lv_adjust_loop_header_phi): Avoid using C++ keywords as
9525         variable names.
9526         (lv_add_condition_to_bb): Likewise.
9527         * cfglayout (relink_block_chain): Cast according to the coding
9528         conventions.
9529         (fixup_reorder_chain): Likewise.
9530         (fixup_fallthru_exit_predecessor): Likewise.
9531         * cfgloop.c (glb_enum_p): Likewise.
9532         (get_exit_description): Likewise.
9533         (dump_recorded_exit): Likewise.
9534         * cfgloop.h (enum loop_estimation): Move out of struct scope...
9535         (struct loop): ... from here.
9536         * cfgloopmanip.c (rpe_enum_p): Cast according to the coding
9537         conventions.
9538         * cfgrtl.c (rtl_create_basic_block): Likewise.
9539         (rtl_split_block): Likewise.
9540         (rtl_dump_bb): Likewise.
9541         (cfg_layout_split_block): Likewise.
9542         (init_rtl_bb_info): Use typesafe memory macros.
9543
9544         * graphds.h (struct graph_edge): Renamed edge to graph_edge.
9545         * graphds.h: Updated all usages of edge to graph_edge.
9546         * graphds.c: Likewise.
9547         * cfgloopanal.c: Likewise.
9548
9549 2007-06-05  Ian Lance Taylor  <iant@google.com>
9550
9551         * tree-vrp.c (compare_values_warnv): Check TREE_NO_WARNING on a
9552         PLUS_EXPR or MINUS_EXPR node before setting *strict_overflow_p.
9553         (extract_range_from_assert): Set TREE_NO_WARNING when creating an
9554         expression.
9555         (test_for_singularity): Likewise.
9556
9557 2007-06-05  H.J. Lu  <hongjiu.lu@intel.com>
9558
9559         * config/i386/constraints.md ("Y2"): Replaced by ...
9560         ("Yt"): This.
9561         * config/i386/i386.md: Likewise.
9562         * config/i386/mmx.md: Likewise.
9563         * config/i386/sse.md: Likewise.
9564
9565 2007-06-05  H.J. Lu  <hongjiu.lu@intel.com>
9566
9567         * config/i386/constraints.md ("z"): Replaced by ...
9568         ("Y0"): This.
9569         * config/i386/sse.md (sse4_1_blendvpd): Likewise.
9570         (sse4_1_blendvps): Likewise.
9571         (sse4_1_pblendvb): Likewise.
9572         (sse4_2_pcmpestr): Likewise.
9573         (sse4_2_pcmpestrm): Likewise.
9574         (sse4_2_pcmpestr_cconly): Likewise.
9575         (sse4_2_pcmpistr): Likewise.
9576         (sse4_2_pcmpistrm): Likewise.
9577         (sse4_2_pcmpistr_cconly): Likewise.
9578
9579 2007-06-05  Razya Ladelsky  <razya@il.ibm.com>
9580
9581         * matrix-reorg.c (transform_access_sites): Fix computation.
9582         (transform_allocation_sites): Same.
9583
9584 2007-06-05  Uros Bizjak  <ubizjak@gmail.com>
9585
9586         * config/i386/i386.c (override_options): Use
9587         TARGET_SUBTARGET32_ISA_DEFAULT to select default ix86_isa_flags.
9588
9589 2007-06-05  Uros Bizjak  <ubizjak@gmail.com>
9590
9591         * config/i386/predicates.md (reg_not_xmm0_operand): New predicate.
9592         (nonimm_not_xmm0_operand): Ditto.
9593         * config/i386/sse.md ("sse4_1_blendvpd"): Use "reg_not_xmm0_operand"
9594         as operand[0] and operand[1] predicate.  Use "nonimm_not_xmm0_operand"
9595         as operand[2] predicate.  Require "z" class XMM register for
9596         operand[3].  Adjust asm template.
9597         ("sse4_1_blendvpd"): Ditto.
9598         ("sse4_1_pblendvb"): Ditto.
9599         * config/i386/i386.c (ix86_expand_sse_4_operands_builtin): Do not
9600         force op2 into xmm0 register for variable blend instructions.
9601
9602 2007-06-04  Tom Tromey  <tromey@redhat.com>
9603
9604         * c-tree.h (start_enum): Update.
9605         (build_enumerator): Likewise.
9606         * c-decl.c (enum_next_value): Removed.
9607         (enum_overflow): Likewise.
9608         (start_enum): Add c_enum_contents argument.  Don't use globals.
9609         (build_enumerator): Likewise.
9610         * c-tree.h (struct c_enum_contents): New struct.
9611
9612 2007-06-04  Tom Tromey  <tromey@redhat.com>
9613
9614         * c-common.c (c_common_get_alias_set): Fix indentation.
9615
9616 2007-06-04  Ian Lance Taylor  <iant@google.com>
9617
9618         * tree-vrp.c (adjust_range_with_scev): When loop is not expected
9619         to overflow, reduce overflow infinity to regular infinity.
9620         (vrp_var_may_overflow): New static function.
9621         (vrp_visit_phi_node): Check vrp_var_may_overflow.
9622
9623 2007-06-04  Kazu Hirata  <kazu@codesourcery.com>
9624
9625         * stor-layout.c (layout_type): Remove duplicate code.
9626
9627 2007-06-04  Uros Bizjak  <ubizjak@gmail.com>
9628
9629         PR c/32191
9630         * c-common.c (c_define_builtins): Call targetm.init_builtins ()
9631         before build_common_builtin_nodes ().
9632
9633 2007-06-04  Steve Ellcey  <sje@cup.hp.com>
9634
9635         PR target/31733
9636         * cfgrtl.c (rtl_verify_flow_info): Skip notes when looking for barrier.
9637
9638 2007-06-04  Jan Hubicka  <jh@suse.cz>
9639
9640         * tree-predcom.c (replace_ref_with, initialize_root_vars_lm,
9641         reassociate_to_the_same_stmt): Call build_gimple_modify_stmt
9642         instead of _stat version.
9643
9644 2007-06-03  Zdenek Dvorak  <dvorakz@suse.cz>
9645
9646         PR tree-optimization/32194
9647         * tree-predcom.c (determine_offset): Check that both references have
9648         the same type.
9649
9650 2007-06-03  Zdenek Dvorak  <dvorakz@suse.cz>
9651
9652         * cfgloopmanip.c (remove_path, loopify, duplicate_loop_to_header_edge):
9653         Change dom_bbs to vector.  Add argument to iterate_fix_dominators call.
9654         * loop-unroll.c (unroll_loop_runtime_iterations): Ditto.
9655         * tree-cfg.c (tree_duplicate_sese_region): Change doms to vector.
9656         Add argument to iterate_fix_dominators call.
9657         (remove_edge_and_dominated_blocks): Pass vector to bbs_to_fix_dom.
9658         * gcse.c (hoist_code): Change domby to vector.
9659         * cfghooks.c (make_forwarder_block): Change doms_to_fix to vector.
9660         Add argument to iterate_fix_dominators call.
9661         * loop-doloop.c (doloop_modify): Changed recount_dominator to
9662         recompute_dominator.
9663         * lambda-code.c (perfect_nestify): Ditto.
9664         * cfgloopanal.c: Include graphds.h.
9665         (struct edge, struct vertex, struct graph, dump_graph, new_graph,
9666         add_edge, dfs, for_each_edge, free_graph): Moved to graphds.c.
9667         (mark_irreducible_loops): Use graphds_scc.  Remove argument from
9668         add_edge call.
9669         * graphds.c: New file.
9670         * graphds.h: New file.
9671         * dominance.c: Include vecprim.h, pointer-set.h and graphds.h.
9672         (get_dominated_by, get_dominated_by_region): Change return type to
9673         vector.
9674         (verify_dominators): Recompute all dominators and compare the results.
9675         (recount_dominator): Renamed to ...
9676         (recompute_dominator): ... this.  Do not check that the block is
9677         dominated by entry.
9678         (iterate_fix_dominators): Reimplemented.
9679         (prune_bbs_to_update_dominators, root_of_dom_tree,
9680         determine_dominators_for_sons): New functions.
9681         * et-forest.c (et_root): New function.
9682         * et-forest.h (et_root): Declare.
9683         * Makefile.in (graphds.o): Add.
9684         (cfgloopanal.o): Add graphds.h dependency.
9685         (dominance.o): Add graphds.h, vecprim.h and pointer-set.h dependency.
9686         * basic-block.h (get_dominated_by, get_dominated_by_region,
9687         iterate_fix_dominators): Declaration changed.
9688         (recount_dominator): Renamed to ...
9689         (recompute_dominator): ... this.
9690         * tree-ssa-threadupdate.c (thread_block): Free dominance info.
9691         (thread_through_all_blocks): Do not free dominance info.
9692
9693 2007-06-03  Andreas Schwab  <schwab@suse.de>
9694
9695         * config/m68k/m68k.c (override_options): Don't override
9696         REAL_MODE_FORMAT.
9697         * config/m68k/m68k-modes.def (SF, DF): Define to use
9698         motorola_single_format and motorola_double_format, resp.
9699         * real.c (motorola_single_format): Renamed from
9700         coldfire_single_format.
9701         (motorola_double_format): Renamed from coldfire_double_format.
9702         (encode_ieee_extended): Generate a proper canonical NaN image
9703         respecting canonical_nan_lsbs_set.
9704         (ieee_extended_motorola_format): Set canonical_nan_lsbs_set to
9705         true.
9706         * real.h: Adjust declarations.
9707
9708 2007-06-03  Kaz Kojima  <kkojima@gcc.gnu.org>
9709
9710         PR target/32163
9711         * config/sh/sh.md (symGOT_load): Don't schedule insns when
9712         the symbol is generated with the stack protector.
9713
9714 2007-06-03  Kazu Hirata  <kazu@codesourcery.com>
9715
9716         * config/m68k/m68k.c (m68k_attribute_table): Add "interrupt".
9717         (m68k_get_function_kind): Return m68k_fk_interrupt_handler on
9718         "interrupt".
9719         * doc/extend.texi (interrupt): Mention m68k.
9720
9721 2007-06-02  Uros Bizjak  <ubizjak@gmail.com>
9722
9723         * config/i386/i386.c (ix86_expand_sse_4_operands_builtin): Call
9724         safe_vector_operand() if input operand is VECTOR_MODE_P operand.
9725         (ix86_expand_sse_pcmpestr): Do not check operands for
9726         "register_operand", when insn operand predicate is "register_operand".
9727         (ix86_expand_sse_pcmpistr): Ditto.
9728
9729 2007-06-02  H.J. Lu  <hongjiu.lu@intel.com>
9730             Uros Bizjak  <ubizjak@gmail.com>
9731
9732         * config/i386/i386.h (enum reg_class) [SSE_FIRST_REG]: New.
9733         (SSE_CLASS_P): Use reg_class_subset_p between SSE_REGS.
9734         (REG_CLASS_NAMES): Add "FIRST_SSE_REG" string.
9735         (REG_CLASS_CONTENTS): Add members of FIRST_SSE_REG class.
9736         * config/i386/constraints.md ("z"): New register constraint
9737         for members of SSE_FIRST_REG class.
9738         * config/i386/i386-modes.def (CCA, CCC, CCO, CCS): New compare modes.
9739         * config/i386/i386.c (regclass_map): Change class of %xmm0 to
9740         SSE_FIRST_REG class.
9741         (put_condition_code) [EQ, NE]: Output suffixes for new compare modes.
9742         (ix86_cc_modes_compatible): Handle CCA, CCC, CCO and CCS modes.
9743         (IX86_BUILTIN_PCMPESTRI128): New for SSE4.2.
9744         (IX86_BUILTIN_PCMPESTRM128): Likewise.
9745         (IX86_BUILTIN_PCMPESTRA128): Likewise.
9746         (IX86_BUILTIN_PCMPESTRC128): Likewise.
9747         (IX86_BUILTIN_PCMPESTRO128): Likewise.
9748         (IX86_BUILTIN_PCMPESTRS128): Likewise.
9749         (IX86_BUILTIN_PCMPESTRZ128): Likewise.
9750         (IX86_BUILTIN_PCMPISTRI128): Likewise.
9751         (IX86_BUILTIN_PCMPISTRM128): Likewise.
9752         (IX86_BUILTIN_PCMPISTRA128): Likewise.
9753         (IX86_BUILTIN_PCMPISTRC128): Likewise.
9754         (IX86_BUILTIN_PCMPISTRO128): Likewise.
9755         (IX86_BUILTIN_PCMPISTRS128): Likewise.
9756         (IX86_BUILTIN_PCMPISTRZ128): Likewise.
9757         (struct builtin_description): Change "flag" field to unsigned.
9758         (bdesc_pcmpestr): New builtin description table.
9759         (bdesc_pcmpistr): Likewise.
9760         (ix86_init_mmx_sse_builtins): Define int_ftype_v16qi_int_v16qi_int_int,
9761         v16qi_ftype_v16qi_int_v16qi_int_int and int_ftype_v16qi_v16qi_int.
9762         Initialize pcmp[ei]str[im] insns for SSE4.2.
9763         (ix86_expand_sse_pcmpestr): New subroutine of ix86_expand_builtin.
9764         (ix86_expand_sse_pcmpistr): Likewise.
9765         (ix86_expand_builtin): Expand pcmp[ei]str[im] builtins for SSE4.2.
9766         * config/i386/i386.md (UNSPEC_PCMPESTR): New for SSE4.2.
9767         (UNSPEC_PCMPISTR): Likewise.
9768         * config/i386/sse.md (sse4_2_pcmpestr): New insn patern and splitter.
9769         (sse4_2_pcmpestri):New isns pattern.
9770         (sse4_2_pcmpestrm): Likewise.
9771         (sse4_2_pcmpestr_cconly): Likewise.
9772         (sse4_2_pcmpistr): New insn patern and splitter.
9773         (sse4_2_pcmpistri):New isns pattern.
9774         (sse4_2_pcmpistrm): Likewise.
9775         (sse4_2_pcmpistr_cconly): Likewise.
9776         * config/i386/smmintrin.h: Enable pcmp[ei]str[im] intrinsics
9777         in SSE4.2.
9778
9779 2007-06-01  David Daney  <ddaney@avtrex.com>
9780
9781         * config/mips/mips.c (mips_output_mi_thunk): Only load gp if not
9782         LOADGP_ABSOLUTE and not binds_local_p.
9783
9784 2007-06-01  Geoffrey Keating  <geoffk@apple.com>
9785
9786         * config/darwin.h (LINK_SPEC): Pass -fpie through to the linker.
9787
9788 2007-06-01  Ian Lance Taylor  <iant@google.com>
9789
9790         * tree-vrp.c (compare_name_with_value): Always set
9791         used_strict_overflow if we get a result from the variable itself.
9792
9793 2007-06-01  Ian Lance Taylor  <iant@google.com>
9794
9795         PR rtl-optimization/31455
9796         * lower-subreg.c (find_decomposable_subregs): Don't decompose
9797         subregs which have a cast between modes which are not tieable.
9798
9799 2007-06-01  Uros Bizjak  <ubizjak@gmail.com>
9800
9801         * expr.c (force_operand) [DIV, MOD, UDIV, UMOD, ASHIFTRT]: Remove
9802         breaks after return statements.
9803
9804 2007-06-01  Kaz Kojima  <kkojima@gcc.gnu.org>
9805
9806         * config/sh/sh.c (fpscr_set_from_mem): Call get_free_reg
9807         only after no_new_pseudos.
9808
9809 2007-05-31  Eric Christopher  <echristo@apple.com>
9810
9811         * expr.c (convert_move): Assert that we don't have a BLKmode
9812         operand.
9813         (store_expr): Handle BLKmode moves by calling emit_block_move.
9814
9815 2007-05-31  Daniel Berlin  <dberlin@dberlin.org>
9816
9817         * c-typeck.c (build_indirect_ref): Include type in error message.
9818         (build_binary_op): Pass types to binary_op_error.
9819         * c-common.c (binary_op_error): Take two type arguments, print out
9820         types with error.
9821         * c-common.h (binary_op_error): Update prototype.
9822
9823 2007-05-31  H.J. Lu  <hongjiu.lu@intel.com>
9824
9825         * config/i386/i386.c: Correct coments on -mno-sse4.
9826
9827 2007-05-31  H.J. Lu  <hongjiu.lu@intel.com>
9828
9829         * config.gcc (i[34567]86-*-*): Add nmmintrin.h to extra_headers.
9830         (x86_64-*-*): Likewise.
9831         * config/i386/i386.c (OPTION_MASK_ISA_MMX_UNSET): New.
9832         (OPTION_MASK_ISA_3DNOW_UNSET): Likewise.
9833         (OPTION_MASK_ISA_SSE_UNSET): Likewise.
9834         (OPTION_MASK_ISA_SSE2_UNSET): Likewise.
9835         (OPTION_MASK_ISA_SSE3_UNSET): Likewise.
9836         (OPTION_MASK_ISA_SSSE3_UNSET): Likewise.
9837         (OPTION_MASK_ISA_SSE4_1_UNSET): Likewise.
9838         (OPTION_MASK_ISA_SSE4_2_UNSET): Likewise.
9839         (OPTION_MASK_ISA_SSE4): Likewise.
9840         (OPTION_MASK_ISA_SSE4_UNSET): Likewise.
9841         (OPTION_MASK_ISA_SSE4A_UNSET): Likewise.
9842         (ix86_handle_option): Use OPTION_MASK_ISA_*_UNSET.  Handle SSE4.2.
9843         (override_options): Support SSE4.2.
9844         (ix86_build_const_vector): Support SImode and DImode.
9845         (ix86_build_signbit_mask): Likewise.
9846         (ix86_expand_int_vcond): Support V2DImode.
9847         (IX86_BUILTIN_CRC32QI): New for SSE4.2.
9848         (IX86_BUILTIN_CRC32HI): Likewise.
9849         (IX86_BUILTIN_CRC32SI): Likewise.
9850         (IX86_BUILTIN_CRC32DI): Likewise.
9851         (IX86_BUILTIN_PCMPGTQ): Likewise.
9852         (bdesc_crc32): Likewise.
9853         (bdesc_sse_3arg): Likewise.
9854         (ix86_expand_crc32): Likewise.
9855         (ix86_init_mmx_sse_builtins): Support SSE4.2.
9856         (ix86_expand_builtin): Likewise.
9857         * config/i386/i386.h (TARGET_CPU_CPP_BUILTINS): Define
9858         __SSE4_2__ for -msse4.2.
9859         * config/i386/i386.md (UNSPEC_CRC32): New for SSE4.2.
9860         (CRC32MODE): Likewise.
9861         (crc32modesuffix): Likewise.
9862         (crc32modeconstraint): Likewise.
9863         (sse4_2_crc32<mode>): Likewise.
9864         (sse4_2_crc32di): Likewise.
9865         * config/i386/i386.opt (msse4.2): New for SSE4.2.
9866         (msse4): Likewise.
9867         * config/i386/nmmintrin.h: New. The dummy SSE4.2 intrinsic header file.
9868         * config/i386/smmintrin.h: Add SSE4.2 intrinsics.
9869         * config/i386/sse.md (sse4_2_gtv2di3): New pattern for SSE4.2.
9870         (vcond<mode>): Use SSEMODEI instead of SSEMODE124.
9871         (vcondu<mode>): Likewise.
9872         * doc/extend.texi: Document SSE4.2 built-in functions.
9873         * doc/invoke.texi: Document -msse4.2/-msse4.
9874
9875 2007-05-31  Zdenek Dvorak  <dvorakz@suse.cz>
9876
9877         PR tree-optimization/32160
9878         * tree-predcom.c (predcom_tmp_var): New function.  Mark created
9879         variable as gimple reg.
9880         (initialize_root_vars, initialize_root_vars_lm): Use predcom_tmp_var.
9881
9882 2007-05-31  Kazu Hirata  <kazu@codesourcery.com>
9883
9884         * gcc.c (main): Don't consider linker options when issuing the
9885         warning about a linker input file not being used.
9886
9887 2007-05-30  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
9888
9889         * tree-vrp.c (compare_names): Initialize sop.
9890
9891 2007-05-30  Dirk Mueller  <dmueller@suse.de>
9892
9893         * cgraphunit.c (cgraph_analyze_function): Remove
9894         computation of inline parameters.
9895
9896 2007-05-30  Uros Bizjak  <ubizjak@gmail.com>
9897
9898         * config/i386/darwin.h (TARGET_SUBTARGET_DEFAULT): Undef before define.
9899
9900 2007-05-30  Richard Sandiford  <richard@codesourcery.com>
9901
9902         * config.gcc (arm-wrs-vxworks): Remove dbxelf.h from tm_file.
9903         Add vx-common.h.  Include vxworks.h between vx-common.h and
9904         arm/vxworks.h.
9905         * config/vx-common.h (DWARF2_UNWIND_INFO): Undefine before
9906         redefining.
9907         * config/vxworks.h (TARGET_ASM_CONSTRUCTOR): Likewise.
9908         (TARGET_ASM_DESTRUCTOR): Likewise.
9909         * config/arm/vxworks.h (TARGET_OS_CPP_BUILTINS): Check arm_arch_xscale
9910         instead of arm_is_xscale.  Use VXWORKS_OS_CPP_BUILTINS.
9911         (OVERRIDE_OPTIONS, SUBTARGET_CPP_SPEC): Define.
9912         (CC1_SPEC): Add -tstrongarm.  Line up backslashes.
9913         (VXWORKS_ENDIAN_SPEC): Define.
9914         (ASM_SPEC): Add VXWORKS_ENDIAN_SPEC.
9915         (LIB_SPEC, STARTFILE_SPEC, ENDFILE_SPEC): Redefine to their
9916         VXWORKS_* equivalents.
9917         (LINK_SPEC): Likewise, but add VXWORKS_ENDIAN_SPEC.
9918         (ASM_FILE_START): Delete.
9919         (TARGET_VERSION): Reformat.
9920         (FPUTYPE_DEFAULT, FUNCTION_PROFILER): Define.
9921         (DEFAULT_STRUCTURE_SIZE_BOUNDARY): Define.
9922         * config/arm/t-vxworks (LIB1ASMSRC, LIB1ASMFUNCS): Define.
9923         (FPBIT, DPBIT): Define.
9924         (fp-bit.c, dp-bit.c): New rules.
9925         (MULTILIB_OPTIONS): Add strongarm, -mrtp and -mrtp/-fPIC multilibs.
9926         (MULTILIB_MATCHES, MULTILIB_EXCEPTIONS): Define.
9927         * config/arm/arm-protos.h (arm_emit_call_insn): Declare.
9928         * config/arm/arm.h: Include vxworks-dummy.h.
9929         * config/arm/arm.c (arm_elf_asm_constructor, arm_elf_asm_destructor):
9930         Mark with ATTRIBUTE_UNUSED.
9931         (arm_override_options): Do not allow VxWorks RTP PIC to be used
9932         for Thumb.  Force r9 to be the PIC register for VxWorks RTPs and
9933         make it incompatible with -msingle-pic-base.
9934         (arm_function_ok_for_sibcall): Return false for calls that might
9935         go through a VxWorks PIC PLT entry.
9936         (require_pic_register): New function, split out from...
9937         (legitimize_pic_address): ...here.  Do not use GOTOFF accesses
9938         for VxWorks RTPs.
9939         (arm_load_pic_register): Handle the VxWorks RTP initialization
9940         sequence.  Use pic_reg as a shorthand for cfun->machine->pic_reg.
9941         (arm_emit_call_insn): New function.
9942         (arm_assemble_integer): Do not use GOTOFF accesses for VxWorks RTP.
9943         * config/arm/arm.md (UNSPEC_PIC_OFFSET): New unspec number.
9944         (pic_offset_arm): New pattern.
9945         (call, call_value): Use arm_emit_call_insn.
9946         (call_internal, call_value_internal): New expanders.
9947         * config/arm/lib1funcs.asm (__PLT__): Define to empty for
9948         VxWorks unless __PIC__.
9949
9950 2007-05-30  Eric Christopher  <echristo@gmail.com>
9951
9952         * genrecog.c: Include regs.h in generated file.
9953         * genemit.c: Ditto. Fix up formatting.
9954         * config/mn10300/constraints.md: New.
9955         * config/mn10300/mn10300.md: Include.
9956         * config/mn10300/mn10300.c(mn10300_secondary_reload_class):
9957         Fix up for removed macro.
9958         * config/mn10300/predicates.md (call_address_operand):  Ditto.
9959         * config/mn10300/mn10300.h (REG_CLASS_FROM_LETTER): Delete.
9960         (CONST_OK_FOR_I): Ditto.
9961         (CONST_OK_FOR_J): Ditto.
9962         (CONST_OK_FOR_K): Ditto.
9963         (CONST_OK_FOR_L): Ditto.
9964         (CONST_OK_FOR_M): Ditto.
9965         (CONST_OK_FOR_N): Ditto.
9966         (CONST_DOUBLE_OK_FOR_LETTER_P): Ditto.
9967         (OK_FOR_Q): Ditto.
9968         (OK_FOR_R): Ditto.
9969         (OK_FOR_T): Ditto.
9970         (EXTRA_CONSTRAINT): Ditto.
9971
9972 2007-05-30 Uros Bizjak <ubizjak@gmail.com>
9973
9974         * config/i386/i386.h (MASK_64BIT, MASK_MMX, MASK_3DNOW*, MASK_SSE*):
9975         Remove defines.
9976         * config/i386/biarch.h (TARGET_64BIT_DEFAULT): Define to
9977         OPTION_MASK_ISA_64BIT.
9978         * config/i386/i386.c: Rename MASK_* macros to OPTION_MASK_ISA_*.
9979
9980 2007-05-30  Richard Guenther  <rguenther@suse.de>
9981
9982         PR middle-end/32152
9983         * gimplify.c (gimplify_omp_atomic_pipeline): Use correct
9984         types for comparison.
9985         * fold-const.c (fold_comparison): Call maybe_canonicalize_comparison
9986         with original typed arguments.
9987         * config/i386/i386.c (ix86_gimplify_va_arg): Fix type mismatches.
9988
9989 2007-05-30  Jakub Jelinek  <jakub@redhat.com>
9990
9991         PR tree-optimization/31769
9992         * except.c (duplicate_eh_regions): Clear prev_try if
9993         ERT_MUST_NOT_THROW region is inside of ERT_TRY region.
9994
9995 2007-05-30  Zdenek Dvorak  <dvorakz@suse.cz>
9996
9997         * tree-scalar-evolution.c (scev_const_prop): Do not create labels.
9998         * tree-ssa-sink.c (statement_sink_location): Return basic block and
9999         bsi of the location where statements should be inserted.
10000         (sink_code_in_bb): Take bsi from statement_sink_location.
10001         * lambda-code.c (lambda_loopnest_to_gcc_loopnest): Use bsi_after_labels
10002         instead of bsi_start.
10003         * tree-profile.c (tree_gen_ic_func_profiler): Pass BSI_NEW_STMT to
10004         bsi_insert_after.
10005         * tree-cfg.c (bsi_move_after): Pass BSI_NEW_STMT to bsi_insert_after.
10006         (bsi_move_before): Document inconsistency with bsi_move_after.
10007         (tree_redirect_edge_and_branch): Do not create labels if not necessary.
10008
10009 2007-05-30 Uros Bizjak <ubizjak@gmail.com>
10010
10011         * config/i386/i386.h (TARGET_ABM): New define.
10012         (TARGET_POPCNT): Ditto.
10013         (TARGET_64BIT, TARGET_MMX, TARGET_3DNOW, TARGET_3DNOW_A, TARGET_SSE*):
10014         New temporary defines to redefine from OPTION_ISA_* defines.
10015         (MASK_64BIT, MASK_MMX, MASK_3DNOW, MASK_3DNOW_A, MASK_SSE*):
10016         New temporary defines to redefine from OPTION_MASK_ISA_* defines.
10017         (ix86_isa_flags): New extern int declaration.
10018         (TARGET_SUBTARGET_DEFAULT): New define.
10019         (TARGET_SUBTARGET_ISA_DEFAULT): Ditto.
10020         (TARGET_SUBTARGET32_DEFAULT): Ditto.
10021         (TARGET_SUBTARGET32_ISA_DEFAULT): Ditto.
10022         (TARGET_SUBTARGET64_ISA_DEFAULT): Ditto.
10023         * config/i386/unix.h: Undef TARGET_SUBTARGET_DEFAULT before define.
10024         * config/i386/darwin.h: Change TARGET_64BIT define to
10025         OPTION_ISA_64BIT.
10026
10027         * config/i386/i386.opt (m3dnowa): Define as undocumented option
10028         using existing "ix86_isa_flags" varible.
10029         (m32, m64): Use existing "ix86_isa_flags" variable.
10030         (mmmx, m3dnow): Ditto.
10031         (msse, msse2, msse3, mssse3, msse4.1, msse4a): Ditto.
10032         (mabm): Define as non-negative option using "x86_abm" variable.
10033         (mpopcnt): Define as non-negative option using "x86_popcnt" variable.
10034
10035         * config/i386/i386.c (ix86_arch_features) [X86_ARCH_CMOVE]:
10036         Rewrite feature test bitmap.
10037         (ix86_isa_flags): New initialized global int varible.
10038         (ix86_isa_flags_explicit): New static int variable.
10039         (ix86_handle_option): Set "ix86_isa_flags_explicit" when mmmx, m3dnow,
10040         msse, msse2, msse3, msse4.1 and msse4a option is processed.  Change
10041         i86_isa_flags and ix86_isa_flags_explicit, not target_flags and
10042         target_flags_explicit.
10043         (override_options): Remove "target_enable" and "target_disable" fields
10044         from "struct ptt". Update processor_target_table accordingly. Remove
10045         PTA_PREFETCH_SSE from processor_alias_table entry if PTE_SSE is
10046         defined and rearrange PTA_* bits.  Use "ix86_isa_flags" instead of
10047         "target_flags" and "ix86_isa_flags_explicit" instead of
10048         "target_flags_explicit" when masked with MASK_64BIT, MASK_MMX,
10049         MASK_3DNOW, MASK_3DNOW_A or MASK_SSE*.  Set "x86_abm" to true when
10050         PTA_ABM is set in processor_alias_table flags entry.  Set "x86_popcnt"
10051         to true when either of PTA_POPCNT or PTA_ABM is set in
10052         processor_alias_table flags entry.  Set "x86_prefetch_sse" to true
10053         when either of PTA_PREFETCH_SSE or PTA_SSE is set in
10054         processor_alias_table flags entry.  Remove handling of
10055         "target_enable" and "target_disable" fields of processor_target_table.
10056         Mask "target_flags" with TARGET_SUBTARGET32_DEFAULT for 32-bit
10057         targets or with TARGET_SUBTARGET64_DEFAULT for 64-bit targets.
10058         Mask "ix86_isa_flags" with TARGET_SUBTARGET32_ISA_DEFAULT for 32-bit
10059         targets or with TARGET_SUBTARGET64_ISA_DEFAULT for 64-bit targets.
10060         (def_builtin): Mask "mask" variable with "ix86_isa_flags", not
10061         "target_flags".
10062         (TARGET_DEFAULT_TARGET_FLAGS): Do not include TARGET_64BIT_DEFAULT.
10063
10064 2007-05-29  David Daney  <ddaney@avtrex.com>
10065
10066         PR gcc/31975
10067         * config/mips/mips.c (mips_output_mi_thunk): Emit
10068         NOTE_INSN_PROLOGUE_END at beginning of the thunk.
10069
10070 2007-05-29  Hui-May Chang  <hm.chang@apple.com>
10071         * config/i386/i386.c (ix86_function_regparm): Added checking of
10072         ix86_force_align_arg_pointer to determine the number of
10073         register parameters.
10074
10075 2007-05-29  Zdenek Dvorak  <dvorakz@suse.cz>
10076
10077         * tree-vectorizer.h (DR_MISALIGNMENT): Cast aux to integer.
10078         (SET_DR_MISALIGNMENT): New.
10079         * tree-vect-analyze.c (vect_compute_data_ref_alignment,
10080         vect_update_misalignment_for_peel, vect_enhance_data_refs_alignment):
10081         Use SET_DR_MISALIGNMENT.
10082         * tree-predcom.c (split_data_refs_to_components): Cast dr->aux from
10083         pointer.
10084         * tree-data-ref.c (create_data_ref, compute_all_dependences,
10085         find_loop_nest): Export.
10086         * tree-data-ref.h (struct data_reference): Change aux field to pointer.
10087         (create_data_ref, compute_all_dependences, find_loop_nest): Declare.
10088         * tree-ssa-loop-prefetch.c: Include tree-data-ref.h.
10089         (L1_CACHE_SIZE_BYTES, L2_CACHE_SIZE_BYTES, NONTEMPORAL_FRACTION):
10090         New macros.
10091         (struct mem_ref): Add field reuse_distance.
10092         (find_or_create_group, record_ref): Use XNEW instead of xcalloc.
10093         Initialize reuse_distance field.
10094         (issue_prefetch_ref): Select temporality of prefetch according to
10095         reuse_distance.
10096         (volume_of_references, volume_of_dist_vector, add_subscript_strides,
10097         self_reuse_distance, determine_loop_nest_reuse): New functions.
10098         (loop_prefetch_arrays): Call determine_loop_nest_reuse.
10099         (tree_ssa_prefetch_arrays): Dump L2 cache size.
10100         * Makefile.in (tree-ssa-loop-prefetch.o): Add TREE_DATA_REF_H
10101         dependency.
10102
10103 2007-05-29  Daniel Berlin  <dberlin@dberlin.org>
10104
10105         * tree-ssa-alias.c: Add aliasing overview.
10106
10107 2007-05-29  Zuxy Meng  <zuxy.meng@gmail.com>
10108             Danny Smith  <dannysmith@users.sourceforge.net>
10109
10110         PR target/29498
10111         * config/i386/t-crtfm: Compile crtfastmath.o with
10112         -minline-all-stringops.
10113         * config/i386/cygwin.h (ENDFILE_SPECS): Add crtfastmath.o.
10114         * config/i386/mingw32.h (ENDFILE_SPECS): Add crtfastmath.o.
10115
10116 2007-05-28  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
10117
10118         * doc/md.texi: Document constraints on HP PA-RISC.
10119
10120         * pa/constraints.md: New file.
10121         * pa.md: Include constraints.md.
10122         * pa.c (cint_ok_for_move): Avoid using CONST_OK_FOR_LETTER_P.
10123         (integer_store_memory_operand, ldil_cint_p): New functions.
10124         * pa-protos.h (integer_store_memory_operand, ldil_cint_p): Declare.
10125         * pa.h (CONST_OK_FOR_LETTER_P, CONST_DOUBLE_OK_FOR_LETTER_P,
10126         IS_RELOADING_PSEUDO_P, EXTRA_CONSTRAINT): Remove.
10127         * pa32-regs.h (REG_CLASS_FROM_LETTER): Remove.
10128         * pa64-regs.h (REG_CLASS_FROM_LETTER): Remove.
10129
10130 2007-05-28  Andrew Pinski  <Andrew_pinski@playstation.sony.com>
10131
10132         PR c/31339
10133         * c-typeck.c (build_unary_op <case PREINCREMENT_EXPR,
10134         case POSTINCREMENT_EXPR, case PREDECREMENT_EXPR,
10135         case POSTDECREMENT_EXPR>): Return the error_mark_node
10136         if either the real or imaginary parts would an
10137         error_mark_node.
10138
10139 2007-05-28  Daniel Berlin  <dberlin@dberlin.org>
10140
10141         * tree-ssa-dce.c (eliminate_unnecessary_stmts): Release LHS SSA
10142         name when we remove it from a call.
10143
10144 2007-05-28  Kazu Hirata  <kazu@codesourcery.com>
10145
10146         * targhooks.c (default_narrow_bitfield): Remove.
10147         * targhooks.h: Remove the prototype for
10148         default_narrow_bitfield.
10149
10150         * langhooks-def.h: Remove the prototype for
10151         hook_get_alias_set_0.
10152         * langhooks.c (hook_get_alias_set_0): Remove.
10153
10154         * global.c (EXECUTE_IF_CONFLICT): Remove.
10155
10156 2007-05-28  Andrew Pinski  <andrew_pinski@playstation.sony.com>
10157
10158         PR tree-opt/32100
10159         * fold-const.c (tree_expr_nonnegative_warnv_p): Don't
10160         return true when truth_value_p is true and the type
10161         is of signed:1.
10162
10163 2007-05-28  Gerald Pfeifer  <gerald@pfeifer.com>
10164
10165         * doc/install.texi (Prerequisites): We no longer require Autoconf
10166         2.13 for the top-level.
10167
10168 2007-05-28  Uros Bizjak  <ubizjak@gmail.com>
10169
10170         * target/i386/i386.c (ix86_expand_vector_move): Expand unaligned
10171         memory access via x86_expand_vector_move_misalign() only for
10172         TImode values on 32-bit targets.
10173
10174 2007-05-28  Razya Ladelsky  <razya@il.ibm.com>
10175
10176         * matrix-reorg.c: New file. Implement matrix flattening and
10177         transposing optimization.
10178         * tree-pass.h: Add matrix reorg pass.
10179         * common.opt: Add fipa-mreorg flag.
10180         * Makefile.in: Add matrix-reorg.c.
10181         * passes.c: Add matrix reorg pass.
10182         * varpool.c (add_new_static_var): New function.
10183         * cgraph.h (add_new_static_var): Declare.
10184
10185 2007-05-27  Eric Christopher  <echristo@apple.com>
10186
10187         * config/rs6000/rs6000.c (rs6000_emit_prologue): Update
10188         sp_offset depending on stack size. Save r12 depending
10189         on registers we're saving later.
10190         (rs6000_emit_epilogue): Update sp_offset depending only
10191         on stack size.
10192
10193 2007-05-27  Zdenek Dvorak  <dvorakz@suse.cz>
10194
10195         * tree-vrp.c (execute_vrp): Do not check whether current_loops == NULL.
10196         * tree-chrec.c (evolution_function_is_invariant_rec_p): Ditto.
10197         * ifcvt.c (if_convert): Ditto.
10198         * tree-ssa-threadupdate.c (thread_block): Ditto.
10199         (thread_through_all_blocks): Ditto.  Assert that loops were analysed.
10200         * tree-ssa-loop-manip.c (rewrite_into_loop_closed_ssa,
10201         verify_loop_closed_ssa): Check number_of_loops instead of
10202         current_loops.
10203         * predict.c (tree_estimate_probability): Ditto.
10204         * tree-if-conv.c (main_tree_if_conversion): Ditto.
10205         * tree-ssa-loop-ch.c (copy_loop_headers): Ditto.
10206         * modulo-sched.c (sms_schedule): Ditto.
10207         * tree-scalar-evolution.c (scev_const_prop): Ditto.
10208         (scev_finalize): Do not do anything if scev analysis was not
10209         initialized.
10210         * cfgloopanal.c (mark_irreducible_loops): Do not check whether
10211         current_loops == NULL.
10212         (mark_loop_exit_edges): Check number_of_loops instead of current_loops.
10213         * loop-init.c (loop_optimizer_init): Do not free current_loops when
10214         there are no loops.
10215         (loop_optimizer_finalize): Assert that loops were analyzed.
10216         (rtl_move_loop_invariants, rtl_unswitch, rtl_unroll_and_peel_loops,
10217         rtl_doloop): Check number_of_loops instead of current_loops.
10218         * tree-ssa-loop.c (tree_loop_optimizer_init): Do not check whether
10219         current_loops == NULL.
10220         (tree_ssa_loop_init, tree_ssa_loop_im, tree_ssa_loop_unswitch,
10221         gate_tree_vectorize tree_linear_transform, check_data_deps,
10222         tree_ssa_loop_ivcanon, tree_ssa_empty_loop, tree_ssa_loop_bounds,
10223         tree_complete_unroll, tree_ssa_loop_prefetch, tree_ssa_loop_ivopts):
10224         Check number_of_loops instead of current_loops.
10225         (tree_ssa_loop_done): Do not check whether current_loops == NULL.
10226         * tree-ssa-pre.c (fini_pre): Do not take do_fre argument.  Always
10227         free loops if available.
10228         (execute_pre): Do not pass do_fre to fini_pre.
10229
10230 2007-05-27  Tobias Burnus  <burnus@net-b.de>
10231
10232         PR middle-end/32083
10233         * real.c (mpfr_from_real): Fix sign of -Inf.
10234
10235 2007-05-27  H.J. Lu  <hongjiu.lu@intel.com>
10236
10237         * tree-vect-transform.c (vectorizable_conversion): Initialize
10238         tree_code variables to ERROR_MARK.
10239         (vectorizable_type_demotion): Likewise.
10240         (vectorizable_type_promotion): Likewise.
10241
10242 2007-05-26  Uros Bizjak  <ubizjak@gmail.com>
10243
10244         PR target/32065
10245         * config/i386/i386.md (movti): Handle push operands via
10246         ix86_expand_push().
10247
10248 2007-05-26  Kazu Hirata  <kazu@codesourcery.com>
10249
10250         * basic-block.h: Remove the prototype for merge_seq_blocks.
10251         * cfgcleanup.c (merge_seq_blocks): Remove.
10252
10253         * tree-flow.h: Remove the prototype for is_aliased_with.
10254         * tree-ssa-alias.c (is_aliased_with): Remove.
10255
10256 2007-05-26  H.J. Lu  <hongjiu.lu@intel.com>
10257
10258         * config/i386/i386-protos.h (ix86_expand_sse4_unpack): New.
10259
10260         * config/i386/i386.c (ix86_expand_sse4_unpack): New.
10261
10262         * config/i386/sse.md (vec_unpacku_hi_v16qi): Call
10263         ix86_expand_sse4_unpack if SSE4.1 is enabled.
10264         (vec_unpacks_hi_v16qi): Likewise.
10265         (vec_unpacku_lo_v16qi): Likewise.
10266         (vec_unpacks_lo_v16qi): Likewise.
10267         (vec_unpacku_hi_v8hi): Likewise.
10268         (vec_unpacks_hi_v8hi): Likewise.
10269         (vec_unpacku_lo_v8hi): Likewise.
10270         (vec_unpacks_lo_v8hi): Likewise.
10271         (vec_unpacku_hi_v4si): Likewise.
10272         (vec_unpacks_hi_v4si): Likewise.
10273         (vec_unpacku_lo_v4si): Likewise.
10274         (vec_unpacks_lo_v4si): Likewise.
10275
10276 2007-05-26  Kazu Hirata  <kazu@codesourcery.com>
10277
10278         * c-typeck.c, config/arm/arm.c, config/darwin.c,
10279         config/sh/symbian.c, gcc.c, ipa-cp.c, ipa-inline.c, loop-iv.c,
10280         omega.c, tree-ssa-loop-niter.c, treestruct.def: Fix typos and
10281         follow spelling conventions in various
10282         warning/error/diagnostic messages.
10283
10284         * config/i386/i386.c, config/pa/pa.c, config/spu/spu.c,
10285         df-problems.c, df-scan.c, domwalk.c, ebitmap.c, ebitmap.h,
10286         fold-const.c, gcc.c, ipa-type-escape.c, omega.c, omega.h,
10287         tree-ssa-coalesce.c, tree-ssa-live.c, tree-ssa-structalias.c,
10288         tree-vrp.c: Fix comment typos.  Follow spelling conventions.
10289         * doc/tm.texi: Follow spelling conventions.
10290
10291 2007-05-25  Andrew Pinski  <andrew_pinski@playstation.sony.com>
10292
10293         PR tree-opt/32090
10294         * tree-ssa-forwprop.c
10295         (forward_propagate_addr_into_variable_array_index): Remove
10296         the lhs argument.  Use the type of def_rhs instead of lhs.
10297         (forward_propagate_addr_expr_1): Update use of
10298         forward_propagate_addr_into_variable_array_index.
10299
10300 2007-05-25  Sandra Loosemore  <sandra@codesourcery.com>
10301             Nigel Stephens  <nigel@mips.com>
10302
10303         * config/mips/mips.c (mips_attribute_table): Add "near" and "far"
10304         function attributes, "far" being an alias for "long_call".
10305         (TARGET_COMP_TYPE_ATTRIBUTES): Define as mips_comp_type_attributes.
10306         (mips_near_type_p, mips_far_type_p): New.
10307         (mips_comp_type_attributes): New function to check that attributes
10308         attached to a function type are compatible.
10309         (mips_output_mi_thunk): Test SYMBOL_REF_LONG_CALL_P() rather than
10310         TARGET_LONG_CALLS when deciding whether we can do a direct sibcall
10311         to the target function of the thunk.
10312         (mips_encode_section_info): Check for "near" and "far" function
10313         attributes, and always set the SYMBOL_FLAG_LONG_CALL bit explicitly.
10314
10315         * config/mips/predicates.md (const_call_insn_operand): Test only
10316         SYMBOL_REF_LONG_CALL_P() and not TARGET_LONG_CALLS.
10317
10318         * doc/extend.texi (Function Attributes): Document MIPS "near" and
10319         "far" attributes.
10320
10321         * testsuite/gcc.target/mips/near-far-1.c:  New test case.
10322         * testsuite/gcc.target/mips/near-far-2.c:  New test case.
10323         * testsuite/gcc.target/mips/near-far-3.c:  New test case.
10324         * testsuite/gcc.target/mips/near-far-4.c:  New test case.
10325
10326 2007-05-25  Eric Christopher  <echristo@apple.com>
10327
10328         * config.gcc: Add i386/t-fprules-softfp64 and soft-fp/t-softfp
10329         to x86-darwin configurations.
10330         * config/i386/t-darwin: Add softfp support.
10331         * config/i386/t-darwin64: Ditto.
10332         * config/i386/sfp-machine.h: If mach then don't use
10333         aliasing, emit a stub to call.
10334
10335 2007-05-25  Kazu Hirata  <kazu@codesourcery.com>
10336
10337         * cfglayout.c, cgraphunit.c, config/avr/avr.c, fold-const.c,
10338         haifa-sched.c, optabs.h, tree-affine.c, tree-data-ref.c,
10339         tree-predcom.c, tree-ssa-alias-warnings.c,
10340         tree-ssa-forwprop.c, tree-vect-analyze.c, tree-vrp.c: Fix
10341         comment typos.  Follow spelling conventions.
10342         * doc/cpp.texi, doc/invoke.texi: Fix typos.
10343
10344 2007-05-26  Uros Bizjak  <ubizjak@gmail.com>
10345
10346         PR target/32065
10347         * target/i386/i386.c (ix86_expand_vector_move): Force SUBREGs of
10348         constants into memory.  Expand unaligned memory references for
10349         SSE modes via x86_expand_vector_move_misalign() function.
10350
10351 2007-05-25  Uros Bizjak  <ubizjak@gmail.com>
10352
10353         * config/i386/sse.md (*vec_extractv2di_1_sse2): Do not calculate
10354         "memory" attribute for "sseishft" type insn without operands[2].
10355
10356 2007-05-25  Dirk Mueller  <dmueller@suse.de>
10357             Marcus Meissner <meissner@suse.de>
10358
10359         * doc/extend.texi (alloc_size): New attribute.
10360         * c-common.c (handle_alloc_size_attribute): New.
10361         * tree-object-size.c (alloc_object_size): Use alloc_size
10362         attribute, if available.
10363
10364 2007-05-25  H.J. Lu  <hongjiu.lu@intel.com>
10365
10366         * config/i386/i386.c (__builtin_ia32_vec_ext_v2df): Mark it
10367         with MASK_SSE2.
10368         (__builtin_ia32_vec_ext_v2di): Likewise.
10369         (__builtin_ia32_vec_ext_v4si): Likewise.
10370         (__builtin_ia32_vec_ext_v8hi): Likewise.
10371         (__builtin_ia32_vec_ext_v16qi): Likewise.
10372         (__builtin_ia32_vec_set_v8hi): Likewise.
10373
10374 2007-05-25  H.J. Lu  <hongjiu.lu@intel.com>
10375
10376         * config/i386/sse.md (*vec_extractv2di_1_sse2): Correct shift.
10377
10378 2007-05-25  Richard Sandiford  <richard@codesourcery.com>
10379
10380         * config/arm/arm-protos.h (arm_encode_call_attribute): Delete.
10381         (arm_is_longcall_p): Rename to...
10382         (arm_is_long_call_p): ...this.  Take a single tree argument and
10383         return a bool.
10384         * config/arm/arm.h (CALL_SHORT, CALL_LONG, CALL_NORMAL): Delete.
10385         (CUMULATIVE_ARGS): Remove call_cookie.
10386         (SHORT_CALL_FLAG_CHAR, LONG_CALL_FLAG_CHAR, ENCODED_SHORT_CALL_ATTR_P)
10387         (ENCODED_LONG_CALL_ATTR_P): Delete.
10388         (ARM_NAME_ENCODING_LENGTHS): Remove SHORT_CALL_FLAG_CHAR and
10389         LONG_CALL_FLAG_CHAR cases.
10390         (ARM_DECLARE_FUNCTION_SIZE): Delete.
10391         * config/arm/elf.h (ASM_DECLARE_FUNCTION_SIZE): Don't use
10392         ARM_DECLARE_FUNCTION_SIZE.
10393         * config/arm/arm.c (arm_init_cumulative_args): Don't set call_cookie.
10394         (arm_function_arg): Return const0_rtx for VOIDmode arguments.
10395         (arm_encode_call_attribute, current_file_function_operand): Delete.
10396         (arm_function_in_section_p): New function.
10397         (arm_is_longcall_p): Rename to...
10398         (arm_is_long_call_p): ...this.  Take the target function as a single
10399         argument and return a bool.  Do not rely on call cookies.  Check
10400         whether the target symbol is in the same section as the current
10401         function, not just the same compilation unit.
10402         (arm_function_ok_for_sibcall): Use arm_is_long_call_p.
10403         (arm_encode_section_info): Don't encode a call type.
10404         * config/arm/arm.md (call, call_value): Update calls to
10405         arm_is_long(_)call_p.  Simplify logic.
10406         (*call_symbol, *call_value_symbol, *call_insn, *call_value_insn):
10407         Update calls to arm_is_long(_)call_p.
10408
10409 2007-05-25  Richard Guenther  <rguenther@suse.de>
10410
10411         PR tree-optimization/31982
10412         * tree-ssa-forwprop.c
10413         (forward_propagate_addr_into_variable_array_index): Handle arrays
10414         with element size one.
10415
10416 2007-05-24  Andrew Pinski  <andrew_pinski@playstation.sony.com>
10417
10418         * config/spu/spu.md (smulsi3_highpart): Unshare the rtl chain.
10419         (umulsi3_highpart): Likewise.
10420
10421 2007-05-24  Ian Lance Taylor  <iant@google.com>
10422
10423         PR rtl-optimization/32069
10424         * regclass.c (regclass): Don't crash if the entry in regno_reg_rtx
10425         is NULL.
10426
10427 2007-05-24  Ollie Wild  <aaw@google.com>
10428
10429         * doc/cpp.texi (Common Predefined Macros): Add __COUNTER__
10430         description.
10431
10432 2007-05-24  Richard Sandiford  <rsandifo@nildram.co.uk>
10433
10434         * postreload-gcse.c (reg_changed_after_insn_p): New function.
10435         (oprs_unchanged_p): Use it to check all registers in a REG.
10436         (record_opr_changes): Look for clobbers in CALL_INSN_FUNCTION_USAGE.
10437         (reg_set_between_after_reload_p): Delete.
10438         (reg_used_between_after_reload_p): Likewise.
10439         (reg_set_or_used_since_bb_start): Likewise.
10440         (eliminate_partially_redundant_load): Use reg_changed_after_insn_p
10441         and reg_used_between_p instead of reg_set_or_used_since_bb_start.
10442         Use reg_set_between_p instead of reg_set_between_after_reload_p.
10443         * rtlanal.c (reg_set_p): Check whether REG overlaps
10444         regs_invalidated_by_call, rather than just checking the
10445         membership of REGNO (REG).
10446
10447 2007-05-24  Zdenek Dvorak  <dvorakz@suse.cz>
10448
10449         * doc/passes.texi: Document predictive commoning.
10450         * doc/invoke.texi (-fpredictive-commoning): Document.
10451         * opts.c (decode_options): Enable flag_predictive_commoning on -O3.
10452         * tree-ssa-loop-im.c (get_lsm_tmp_name): Export.  Allow
10453         adding indices to the generated name.
10454         (schedule_sm): Pass 0 to get_lsm_tmp_name.
10455         * tree-ssa-loop-niter.c (stmt_dominates_stmt_p): Export.
10456         * tree-pretty-print.c (op_symbol_1): Renamed to ...
10457         (op_symbol_code): ... and exported.
10458         (dump_omp_clause, op_symbol): Use op_symbol_code
10459         instead of op_symbol_1.
10460         * tree-pass.h (pass_predcom): Declare.
10461         * timevar.def (TV_PREDCOM): New timevar.
10462         * tree-ssa-loop.c (run_tree_predictive_commoning,
10463         gate_tree_predictive_commoning, pass_predcom): New.
10464         * tree-data-ref.c (find_data_references_in_loop): Find the
10465         references in dominance order.
10466         (canonicalize_base_object_address): Ensure that the result has
10467         pointer type.
10468         (dr_analyze_innermost): Export.
10469         (create_data_ref): Code to fail for references with invariant
10470         address moved ...
10471         (find_data_references_in_stmt): ... here.
10472         * tree-data-ref.h (dr_analyze_innermost): Declare.
10473         * tree-affine.c: Include tree-gimple.h and hashtab.h.
10474         (aff_combination_find_elt, name_expansion_hash,
10475         name_expansion_eq, tree_to_aff_combination_expand,
10476         double_int_constant_multiple_p, aff_combination_constant_multiple_p):
10477         New functions.
10478         * tree-affine.h (aff_combination_constant_multiple_p,
10479         tree_to_aff_combination_expand): Declare.
10480         * tree-predcom.c: New file.
10481         * common.opt (fpredictive-commoning): New option.
10482         * tree-flow.h (op_symbol_code, tree_predictive_commoning,
10483         stmt_dominates_stmt_p, get_lsm_tmp_name): Declare.
10484         * Makefile.in (tree-predcom.o): Add.
10485         (tree-affine.o): Add TREE_GIMPLE_H dependency.
10486         * passes.c (init_optimization_passes):  Add dceloop after
10487         copy propagation in loop optimizer.  Add predictive commoning
10488         to loop optimizer passes.
10489
10490 2007-05-24  H.J. Lu  <hongjiu.lu@intel.com>
10491
10492         * target-def.h (TARGET_MANGLE_DECL_ASSEMBLER_NAME): Correct
10493         default hook.
10494
10495 2007-05-24  Jan Hubicka  <jh@suse.cz>
10496
10497         * gengenrtl.c (gendecl, gendef): Output the gens annotated for
10498         statistics.
10499         (genheader): Include statistics.h.
10500
10501         * doc/invoke.texi (-fdump-unnumbered): Update docs when line number
10502         notes are gone.
10503         * print-rtl.c (flag_dump_unnumbered): Update comments.
10504         (print_rtl): Fix my previous change.
10505         * emit-rtl.c (emit_note_before, emit_note_after): Clear out note
10506         specific data.
10507
10508 2007-05-24  Zdenek Dvorak  <dvorakz@suse.cz>
10509
10510         PR middle-end/32018
10511         * tree-ssa-threadupdate.c (thread_through_loop_header): Use
10512         set_loop_copy.
10513         (thread_through_all_blocks): Call initialize_original_copy_tables
10514         and free_original_copy_tables.
10515         * cfgloopmanip.c (duplicate_loop, duplicate_loop_to_header_edge):
10516         Use set_loop_copy.
10517         * tree-cfg.c (tree_duplicate_sese_region): Ditto.
10518         * cfghooks.c (duplicate_block): Use get_loop_copy.
10519         * cfg.c: Include cfgloop.h.
10520         (loop_copy): New hash table.
10521         (initialize_original_copy_tables): Initialize loop_copy table.
10522         (free_original_copy_tables): Free loop_copy table.
10523         (copy_original_table_clear, copy_original_table_set,
10524         set_loop_copy, get_loop_copy): New functions.
10525         (set_bb_original, set_bb_copy): Use copy_original_table_set.
10526         * cfgloop.h (struct loop): Remove copy field.
10527         * Makefile.in (cfg.o): Add CFGLOOP_H dependency.
10528         * basic-block.h (set_loop_copy, get_loop_copy): Declare.
10529
10530 2007-05-24  H.J. Lu  <hongjiu.lu@intel.com>
10531
10532         * config/i386/i386.c (ix86_handle_option): Handle SSE4.1 for
10533         -msse/-msse2/-msse3.
10534
10535 2007-05-24  H.J. Lu  <hongjiu.lu@intel.com>
10536
10537         * config/i386/i386.c (ix86_init_mmx_sse_builtins): Mark
10538         __builtin_ia32_vec_set_v2di with MASK_64BIT.
10539
10540 2007-05-24  Danny Smith  <dannysmith@users.sourceforge.net>
10541
10542         PR target/27067
10543         * doc/tm.texi (TARGET_MANGLE_DECL_ASSEMBLER_NAME): Document.
10544         * targhooks.h (default_mangle_decl_assembler_name): Declare
10545         default hook.
10546         * targhooks.c (default_mangle_decl_assembler_name): Define
10547         default hook.
10548         * target-def.h (TARGET_MANGLE_DECL_ASSEMBLER_NAME) New. Set to
10549         default hook.
10550         * target.h (struct gcc_target): Add mangle_decl_assembler_name field.
10551         * langhooks.c (lhd_set_decl_assembler_name): Call
10552         targetm.mangle_decl_assembler_name for names with global scope.
10553
10554         * config/i386/cygming.h (TARGET_MANGLE_DECL_ASSEMBLER_NAME) Override
10555         default.
10556         (ASM_OUTPUT_DEF_FROM_DECLS): Simplify to use DECL_ASSEMBLER_NAME.
10557         * config/i386/i386-protos.h (i386_pe_mangle_decl_assembler_name):
10558         Declare.
10559         * config/i386/winnt.c (i386_pe_maybe_mangle_decl_assembler_name):
10560         New. Factored out of i386_pe_encode_section_info.
10561         (gen_stdcall_or_fastcall_suffix): Get name identifier as argument.
10562         Move check for prior decoration of stdcall
10563         symbols to i386_pe_encode_section_info.
10564         (i386_pe_encode_section_info): Adjust call to
10565         gen_stdcall_or_fastcall_suffix.  Use
10566         i386_pe_maybe_mangle_decl_assembler_name, if needed.
10567         (i386_pe_mangle_decl_assembler_name): New. Wrap
10568         i386_pe_maybe_mangle_decl_assembler_name.
10569
10570 2007-05-16  Rafael Avila de Espindola  <espindola@google.com>
10571
10572         * c-common.c (c_common_signed_or_unsigned_type): Delay the check for
10573         INTEGRAL_TYPE_P and TYPE_UNSIGNED.
10574         * langhooks.c (get_signed_or_unsigned_type): Don't check for
10575         INTEGRAL_TYPE_P or TYPE_UNSIGNED.
10576         (lhd_signed_or_unsigned_type): Check for INTEGRAL_TYPE_P and
10577         TYPE_UNSIGNED.
10578
10579 2007-05-23  Sandra Loosemore  <sandra@codesourcery.com>
10580             Nigel Stephens  <nigel@mips.com>
10581             Richard Sandiford  <richard@codesourcery.com>
10582
10583         Fix up MIPS16 hard float and add support for complex.
10584
10585         * config/mips/mips.h (TARGET_HARD_FLOAT_ABI): New.
10586         (TARGET_SOFT_FLOAT_ABI): New.
10587         (TARGET_CPU_CPP_BUILTINS): Define __mips_hard_float and
10588         __mips_soft_float to reflect the ABI in use, not whether the
10589         FPU is directly accessible (e.g., in MIPS16 mode).
10590         (UNITS_PER_HWFPVALUE): Use TARGET_SOFT_FLOAT_ABI.
10591         (UNITS_PER_FPVALUE): Likewise.
10592
10593         * config/mips/mips.c (mips_expand_call): Remove redundant
10594         TARGET_MIPS16 check.
10595         (mips_arg_regno): New.
10596         (function_arg_advance): When setting bits in cum->fp_code for
10597         MIPS16, don't subtract 1 from cum->arg_number, since it is now
10598         zero-based.
10599         (function_arg): Use mips_arg_regno.
10600         (mips_return_mode_in_fpr_p): New.
10601         (mips16_call_stub_mode_suffix): New.
10602         (mips16_cfun_returns_in_fpr_p): New.
10603         (mips_save_reg_p): Use mips16_cfun_returns_in_fpr_p.
10604         (mips_output_function_prologue): Test mips16_hard_float, not
10605         !TARGET_SOFT_FLOAT, to decide when a function stub is required.
10606         (mips_expand_epilogue): Call MIPS16 helper routines to copy
10607         return value into a floating-point register.
10608         (mips_can_use_return_insn): Use mips16_cfun_returns_in_fpr_p.
10609         (mips_function_value): Rewrite to use mips_return_mode_in_fpr_p.
10610         (mips16_fp_args): Handle MIPS32r2 ISA which supports
10611         TARGET_FLOAT64, and use mfhc1/mthc1 to copy the most significant
10612         word of double arguments from or to the high bits of 64-bit
10613         floating point registers.
10614         (build_mips16_function_stub): Fill in DECL_RESULT for stubdecl.
10615         (mips16_fpret_double): New helper function.
10616         (build_mips16_call_stub): Use mips16_return_mode_in_fpr_p.  Add
10617         support for complex modes.  Fill in DECL_RESULT for stubdecl.
10618         (mips_init_libfuncs): Remove redundant TARGET_MIPS16 check.
10619
10620         * config/mips/mips16.S
10621         (RET, ARG1, ARG2): New.
10622         (MERGE_GPRf, MERGE_GPRt): New.
10623         (DELAYt, DELAYf): New.
10624         (MOVE_SF_BYTE0, MOVE_SI_BYTE0): New.
10625         (MOVE_SF_BYTE4, MOVE_SF_BYTE8): New.
10626         (MOVE_DF_BYTE0, MOVE_DF_BYTE8): New.
10627         (MOVE_SF_RET, MOVE_SC_RET, MOVE_DF_RET, MOVE_DC_RET, MOVE_SI_RET): New.
10628         (SFOP): Renamed to...
10629         (OPSF3): This, and macro-ified.  Updated all uses.
10630         (SFOP2): Renamed to...
10631         (OPSF2): This, and macro-ified.  Updated all uses.
10632         (SFCMP): Renamed to...
10633         (CMPSF): This, and macro-ified.  Updated all uses.
10634         (SFREVCMP): Renamed to...
10635         (REVCMPSF): This, and macro-ified.  Updated all uses.
10636         (__mips16_floatsisf, __mips16_fix_truncsfsi): Macro-ified.
10637         (LDDBL1, LDDBL2, RETDBL): Deleted.
10638         (DFOP): Renamed to...
10639         (OPDF3): This, and macro-ified.  Updated all uses.
10640         (DFOP2): Renamed to...
10641         (OPDF2): This, and macro-ified.  Updated all uses.
10642         (__mips16_extendsfdf2, __mips16_truncdfsf2): Macro-ified.
10643         (DFCMP): Renamed to...
10644         (CMPDF): This, and macro-ified.  Updated all uses.
10645         (DFREVCMP): Renamed to...
10646         (REVCMPDF): This, and macro-ified.  Updated all uses.
10647         (__mips16_floatsidf, __mips16_fix_truncdfsi): Macro-ified.
10648         (RET_FUNCTION): New.
10649         (__mips16_ret_sf, __mips16_ret_df): Macro-ified.
10650         (__mips16_ret_sc, __mips16_ret_dc): New.
10651         (STUB_ARGS_0, STUB_ARGS_1, STUB_ARGS_5, STUB_ARGS_9, STUB_ARGS_2,
10652         STUB_ARGS_6, STUB_ARGS_10): New.
10653         (CALL_STUB_NO_RET): New.
10654         (__mips16_call_stub_1): Macro-ified.
10655         (__mips16_call_stub_5): Macro-ified.
10656         (__mips16_call_stub_2): Macro-ified.
10657         (__mips16_call_stub_6): Macro-ified.
10658         (__mips16_call_stub_9): Macro-ified.
10659         (__mips16_call_stub_10): Macro-ified.
10660         (CALL_STUB_RET): New.
10661         (__mips16_call_stub_sf_0): Macro-ified.
10662         (__mips16_call_stub_sf_1): Macro-ified.
10663         (__mips16_call_stub_sf_5): Macro-ified.
10664         (__mips16_call_stub_sf_2): Macro-ified.
10665         (__mips16_call_stub_sf_6): Macro-ified.
10666         (__mips16_call_stub_sf_9): Macro-ified.
10667         (__mips16_call_stub_sf_10): Macro-ified.
10668         (__mips16_call_stub_df_0): Macro-ified.
10669         (__mips16_call_stub_df_1): Macro-ified.
10670         (__mips16_call_stub_df_5): Macro-ified.
10671         (__mips16_call_stub_df_2): Macro-ified.
10672         (__mips16_call_stub_df_6): Macro-ified.
10673         (__mips16_call_stub_df_9): Macro-ified.
10674         (__mips16_call_stub_df_10): Macro-ified.
10675         (__mips16_call_stub_sc_0): New.
10676         (__mips16_call_stub_sc_1): New.
10677         (__mips16_call_stub_sc_5): New.
10678         (__mips16_call_stub_sc_2): New.
10679         (__mips16_call_stub_sc_6): New.
10680         (__mips16_call_stub_sc_9): New.
10681         (__mips16_call_stub_sc_10): New.
10682         (__mips16_call_stub_dc_0): New.
10683         (__mips16_call_stub_dc_1): New.
10684         (__mips16_call_stub_dc_5): New.
10685         (__mips16_call_stub_dc_2): New.
10686         (__mips16_call_stub_dc_6): New.
10687         (__mips16_call_stub_dc_9): New.
10688         (__mips16_call_stub_dc_10): New.
10689
10690         * config/mips/t-elf (LIB1ASMFUNCS): Add MIPS16 floating-point stubs.
10691         * config/mips/t-isa3264 (LIB1ASMFUNCS): Likewise.
10692         * config/mips/t-r2900 (LIB1ASMFUNCS): Likewise.
10693
10694 2007-05-23  Ian Lance Taylor  <iant@google.com>
10695
10696         * doc/invoke.texi (Invoking GCC): Document that the order of the
10697         -l option matters.
10698
10699 2007-05-23  Chen Liqin  <liqin@sunnorth.com.cn>
10700
10701         PR target/30987
10702         * config/score/misc.md (bitclr_c, bitset_c, bittgl_c): Remove.
10703         * config/score/predicate.md (const_pow2, const_npow2): Remove.
10704         * config/score/score.h (ASM_OUTPUT_EXTERNAL): Add ASM_OUTPUT_EXTERNAL
10705         undef.
10706
10707         PR target/30474
10708         * config/score/score.c (score_print_operand): Make sure that only
10709         lower bits are used.
10710
10711 2007-05-22  Ian Lance Taylor  <iant@google.com>
10712
10713         * tree-vrp.c (avoid_overflow_infinity): New static function,
10714         broken out of set_value_range_to_value.
10715         (set_value_range_to_value): Call avoid_overflow_infinity.
10716         (extract_range_from_assert): Likewise.
10717
10718 2007-05-22  Andrew Pinski  <andrew_pinski@playstation.sony.com>
10719
10720         PR middle-end/31095
10721          * builtins.c (expand_builtin_memmove_args): Strip nops that don't
10722         change the type before looking for a COMPOUND_EXPR.
10723
10724 2007-05-22  Ian Lance Taylor  <iant@google.com>
10725
10726         * lower-subreg.c (decompose_multiword_subregs): If we change an
10727         insn, call remove_retval_note on it.
10728
10729 2007-05-22  Richard Sandiford  <rsandifo@nildram.co.uk>
10730
10731         * regs.h (end_hard_regno): New function.
10732         (END_HARD_REGNO, END_REGNO): New macros.
10733         (add_to_hard_reg_set): New function.
10734         (remove_from_hard_reg_set): Likewise.
10735         (in_hard_reg_set_p): Likewise.
10736         (overlaps_hard_reg_set_p): Likewise.
10737         * bt-load.c (find_btr_reference): Use overlaps_hard_reg_set_p.
10738         (note_btr_set): Use END_HARD_REGNO.
10739         * caller-save.c (setup_save_areas): Use end_hard_regno.
10740         (mark_set_regs): Use END_HARD_REGNO.
10741         (add_stored_regs): Use end_hard_regno.
10742         (mark_referenced_regs): Use add_to_hard_reg_set.
10743         * combine.c (update_table_tick): Use END_REGNO.
10744         (record_value_for_reg): Likewise.
10745         (record_dead_and_set_regs): Likewise.
10746         (get_last_value_validate): Likewise.
10747         (use_crosses_set_p): Likewise.
10748         (reg_dead_at_p_1): Likewise.
10749         (reg_dead_at_p): Likewise.
10750         (mark_used_regs_combine): Use add_to_hard_reg_set.
10751         (move_deaths): Use END_HARD_REGNO.
10752         (reg_bitfield_target_p): Use end_hard_regno.
10753         (distribute_notes): Use END_HARD_REGNO.
10754         * cse.c (mention_regs): Use END_REGNO.
10755         (insert): Use add_to_hard_reg_set.
10756         (invalidate): Use END_HARD_REGNO.
10757         (invalidate_for_call): Likewise.
10758         (exp_equiv_p): Use END_REGNO.
10759         (cse_insn): Likewise.
10760         * cselib.c (cselib_invalidate_regno): Use end_hard_regno.
10761         * df-problems.c (df_urec_mark_reg_change): Use END_HARD_REGNO.
10762         * df-scan.c (df_ref_record): Use END_HARD_REGNO.
10763         * function.c (keep_stack_depressed): Use end_hard_regno.
10764         * global.c (global_alloc): Use end_hard_regno.
10765         (global_conflicts): Use add_to_hard_reg_set instead of
10766         mark_reg_live_nc.
10767         (find_reg): Likewise.
10768         (mark_reg_store): Likewise.
10769         (mark_reg_conflicts): Likewise.
10770         (mark_reg_death): Use remove_from_hard_reg_set.
10771         (mark_reg_live_nc): Delete.
10772         (set_preference): Use end_hard_regno.
10773         * local-alloc.c (mark_life): Use add_to_hard_reg_set and
10774         remove_from_hard_reg_set.
10775         (post_mark_life): Use add_to_hard_reg_set.
10776         * mode-switching.c (reg_dies): Use remove_from_hard_reg_set.
10777         (reg_becomes_live): Use add_to_hard_reg_set.
10778         * recog.c (reg_fits_class_p): Use in_hard_reg_set_p.
10779         (peep2_find_free_register): Use add_to_hard_reg_set.
10780         * reg-stack.c (convert_regs_exit): Use END_HARD_REGNO.
10781         * regclass.c (record_reg_classes): Use in_hard_reg_set_p.
10782         * regrename.c (note_sets): Use add_to_hard_reg_set.
10783         (clear_dead_regs): Use remove_from_hard_reg_set.
10784         (regrename_optimize): Use add_to_hard_reg_set.
10785         (find_oldest_value_reg): Use in_hard_reg_set_p.
10786         * reload.c (push_reload): Use in_hard_reg_set_p and end_hard_regno.
10787         (hard_reg_set_here_p): Use end_hard_regno.
10788         (decompose): Likewise.
10789         (reg_overlap_mentioned_for_reload_p): Use END_HARD_REGNO.
10790         (find_equiv_reg): Use in_hard_reg_set_p and end_hard_regno.
10791         * reload1.c (compute_use_by_pseudos): Use add_to_hard_reg_set.
10792         (mark_home_live): Use end_hard_regno.
10793         (spill_hard_reg): Likewise.
10794         (clear_reload_reg_in_use): Likewise.
10795         * reorg.c (delete_prior_computation): Use END_REGNO.
10796         * resource.c (update_live_status): Use END_HARD_REGNO.
10797         (mark_referenced_resources): Use add_to_hard_reg_set.
10798         (mark_set_resources): Likewise.
10799         (mark_target_live_regs): Likewise.  Use remove_from_hard_reg_set.
10800         * rtlanal.c (refers_to_regno_p): Use END_REGNO.
10801         (reg_overlap_mentioned_p): Likewise.
10802         (dead_or_set_p): Likewise.  Use an exclusive upper loop bound.
10803         (covers_regno_no_parallel_p): Use END_REGNO.
10804         (find_regno_note): Likewise.
10805         (find_reg_fusage): Use END_HARD_REGNO.
10806         * stmt.c (decl_overlaps_hard_reg_set_p): Use overlaps_hard_reg_set_p.
10807         * var-tracking.c (emit_note_insn_var_location): Use end_hard_regno.
10808
10809 2007-05-22  Richard Sandiford  <rsandifo@nildram.co.uk>
10810
10811         * mode-switching.c (reg_dies): Change type of second argument to
10812         "HARD_REG_SET *".
10813         (optimize_mode_switching): Update accordingly.
10814
10815 2007-05-22  Richard Sandiford  <richard@codesourcery.com>
10816
10817         * hard-reg-set.h (GO_IF_HARD_REG_SUBSET, GO_IF_HARD_REG_EQUAL): Delete
10818         in favor of...
10819         (hard_reg_subset_p, hard_reg_sets_equal_p, hard_reg_sets_intersect_p)
10820         (hard_reg_set_empty_p): ...these new functions.
10821         * bt-load.c (choose_btr): Use hard_reg_subset_p instead of
10822         GO_IF_HARD_REG_SUBSET.
10823         * cfgcleanup.c (old_insns_match_p): Use hard_reg_sets_equal_p
10824         instead of GO_IF_HARD_REG_EQUAL.
10825         * df-problems.c (df_urec_local_compute): Use hard_reg_set_empty_p
10826         instead of GO_IF_HARD_REG_EQUAL.
10827         * global.c (find_reg): Use hard_reg_set_empty_p instead of
10828         GO_IF_HARD_REG_SUBSET.
10829         (modify_reg_pav): Use hard_reg_set_empty_p instead of
10830         GO_IF_HARD_REG_EQUAL.
10831         * local-alloc.c (find_free_reg): Use hard_reg_subset_p instead
10832         of GO_IF_HARD_REG_SUBSET.
10833         * reg-stack.c (change_stack, convert_regs_1): Use hard_reg_sets_equal_p
10834         instead of GO_IF_HARD_REG_EQUAL.
10835         * regclass.c (init_reg_sets_1, reg_scan_mark_refs): Use
10836         hard_reg_subset_p instead of GO_IF_HARD_REG_SUBSET.
10837         (reg_classes_intersect_p): Use hard_reg_sets_intersect_p instead
10838         of GO_IF_HARD_REG_SUBSET,
10839         * reload1.c (finish_spills): Use hard_reg_subset_p instead of
10840         GO_IF_HARD_REG_SUBSET.
10841         * struct-equiv.c (death_notes_match_p): Use hard_reg_sets_equal_p
10842         instead of GO_IF_HARD_REG_EQUAL.
10843         * config/sh/sh.c (push_regs, calc_live_regs): Use
10844         hard_reg_sets_intersect_p instead of hard_regs_intersect_p.
10845         (hard_regs_intersect_p): Delete.
10846
10847 2007-05-22  Janis Johnson  <janis187@us.ibm.com>
10848
10849         * doc/sourcebuild.texi (Test Directives) Add dg-message.
10850
10851 2007-05-22  H.J. Lu  <hongjiu.lu@intel.com>
10852             Richard Henderson  <rth@redhat.com>
10853
10854         * config.gcc (i[34567]86-*-*): Add smmintrin.h to
10855         extra_headers.
10856         (x86_64-*-*): Likewise.
10857
10858         * i386/i386-modes.def (V2QI): New.
10859
10860         * config/i386/i386.c (ix86_handle_option): Handle SSE4.1 and
10861         SSE4A.
10862         (override_options): Support SSE4.1.
10863         (IX86_BUILTIN_BLENDPD): New for SSE4.1.
10864         (IX86_BUILTIN_BLENDPS): Likewise.
10865         (IX86_BUILTIN_BLENDVPD): Likewise.
10866         (IX86_BUILTIN_BLENDVPS): Likewise.
10867         (IX86_BUILTIN_PBLENDVB128): Likewise.
10868         (IX86_BUILTIN_PBLENDW128): Likewise.
10869         (IX86_BUILTIN_DPPD): Likewise.
10870         (IX86_BUILTIN_DPPS): Likewise.
10871         (IX86_BUILTIN_INSERTPS128): Likewise.
10872         (IX86_BUILTIN_MOVNTDQA): Likewise.
10873         (IX86_BUILTIN_MPSADBW128): Likewise.
10874         (IX86_BUILTIN_PACKUSDW128): Likewise.
10875         (IX86_BUILTIN_PCMPEQQ): Likewise.
10876         (IX86_BUILTIN_PHMINPOSUW128): Likewise.
10877         (IX86_BUILTIN_PMAXSB128): Likewise.
10878         (IX86_BUILTIN_PMAXSD128): Likewise.
10879         (IX86_BUILTIN_PMAXUD128): Likewise.
10880         (IX86_BUILTIN_PMAXUW128): Likewise.
10881         (IX86_BUILTIN_PMINSB128): Likewise.
10882         (IX86_BUILTIN_PMINSD128): Likewise.
10883         (IX86_BUILTIN_PMINUD128): Likewise.
10884         (IX86_BUILTIN_PMINUW128): Likewise.
10885         (IX86_BUILTIN_PMOVSXBW128): Likewise.
10886         (IX86_BUILTIN_PMOVSXBD128): Likewise.
10887         (IX86_BUILTIN_PMOVSXBQ128): Likewise.
10888         (IX86_BUILTIN_PMOVSXWD128): Likewise.
10889         (IX86_BUILTIN_PMOVSXWQ128): Likewise.
10890         (IX86_BUILTIN_PMOVSXDQ128): Likewise.
10891         (IX86_BUILTIN_PMOVZXBW128): Likewise.
10892         (IX86_BUILTIN_PMOVZXBD128): Likewise.
10893         (IX86_BUILTIN_PMOVZXBQ128): Likewise.
10894         (IX86_BUILTIN_PMOVZXWD128): Likewise.
10895         (IX86_BUILTIN_PMOVZXWQ128): Likewise.
10896         (IX86_BUILTIN_PMOVZXDQ128): Likewise.
10897         (IX86_BUILTIN_PMULDQ128): Likewise.
10898         (IX86_BUILTIN_PMULLD128): Likewise.
10899         (IX86_BUILTIN_ROUNDPD): Likewise.
10900         (IX86_BUILTIN_ROUNDPS): Likewise.
10901         (IX86_BUILTIN_ROUNDSD): Likewise.
10902         (IX86_BUILTIN_ROUNDSS): Likewise.
10903         (IX86_BUILTIN_PTESTZ): Likewise.
10904         (IX86_BUILTIN_PTESTC): Likewise.
10905         (IX86_BUILTIN_PTESTNZC): Likewise.
10906         (IX86_BUILTIN_VEC_EXT_V16QI): Likewise.
10907         (IX86_BUILTIN_VEC_SET_V2DI): Likewise.
10908         (IX86_BUILTIN_VEC_SET_V4SF): Likewise.
10909         (IX86_BUILTIN_VEC_SET_V4SI): Likewise.
10910         (IX86_BUILTIN_VEC_SET_V16QI): Likewise.
10911         (bdesc_ptest): New.
10912         (bdesc_sse_3arg): Likewise.
10913         (bdesc_2arg): Likewise.
10914         (bdesc_1arg): Likewise.
10915         (ix86_init_mmx_sse_builtins): Support SSE4.1.  Handle SSE builtins
10916         with 3 args.
10917         (ix86_expand_sse_4_operands_builtin): New.
10918         (ix86_expand_unop_builtin): Support 2 arg builtins with a constant
10919         smaller than 8 bits as the 2nd arg.
10920         (ix86_expand_sse_ptest): New.
10921         (ix86_expand_builtin): Support SSE4.1. Support 3 arg SSE builtins.
10922         (ix86_expand_vector_set): Support SSE4.1.
10923         (ix86_expand_vector_extract): Likewise.
10924
10925         * config/i386/i386.h (TARGET_CPU_CPP_BUILTINS): Define
10926         __SSE4_1__ for -msse4.1.
10927
10928         * config/i386/i386.md (UNSPEC_BLENDV): New for SSE4.1.
10929         (UNSPEC_INSERTPS): Likewise.
10930         (UNSPEC_DP): Likewise.
10931         (UNSPEC_MOVNTDQA): Likewise.
10932         (UNSPEC_MPSADBW): Likewise.
10933         (UNSPEC_PHMINPOSUW): Likewise.
10934         (UNSPEC_PTEST): Likewise.
10935         (UNSPEC_ROUNDP): Likewise.
10936         (UNSPEC_ROUNDS): Likewise.
10937
10938         * config/i386/i386.opt (msse4.1): New for SSE4.1.
10939
10940         * config/i386/predicates.md (const_pow2_1_to_2_operand): New.
10941         (const_pow2_1_to_32768_operand): Likewise.
10942
10943         * config/i386/smmintrin.h: New. The SSE4.1 intrinsic header
10944         file.
10945
10946         * config/i386/sse.md (*vec_setv4sf_sse4_1): New pattern for
10947         SSE4.1.
10948         (sse4_1_insertps): Likewise.
10949         (*sse4_1_extractps): Likewise.
10950         (sse4_1_ptest): Likewise.
10951         (sse4_1_mulv2siv2di3): Likewise.
10952         (*sse4_1_mulv4si3): Likewise.
10953         (*sse4_1_smax<mode>3): Likewise.
10954         (*sse4_1_umax<mode>3): Likewise.
10955         (*sse4_1_smin<mode>3): Likewise.
10956         (*sse4_1_umin<mode>3): Likewise.
10957         (sse4_1_eqv2di3): Likewise.
10958         (*sse4_1_pinsrb): Likewise.
10959         (*sse4_1_pinsrd): Likewise.
10960         (*sse4_1_pinsrq): Likewise.
10961         (*sse4_1_pextrb): Likewise.
10962         (*sse4_1_pextrb_memory): Likewise.
10963         (*sse4_1_pextrw_memory): Likewise.
10964         (*sse4_1_pextrq): Likewise.
10965         (sse4_1_blendpd): Likewise.
10966         (sse4_1_blendps): Likewise.
10967         (sse4_1_blendvpd): Likewise.
10968         (sse4_1_blendvps): Likewise.
10969         (sse4_1_dppd): Likewise.
10970         (sse4_1_dpps): Likewise.
10971         (sse4_1_movntdqa): Likewise.
10972         (sse4_1_mpsadbw): Likewise.
10973         (sse4_1_packusdw): Likewise.
10974         (sse4_1_pblendvb): Likewise.
10975         (sse4_1_pblendw): Likewise.
10976         (sse4_1_phminposuw): Likewise.
10977         (sse4_1_extendv8qiv8hi2): Likewise.
10978         (*sse4_1_extendv8qiv8hi2): Likewise.
10979         (sse4_1_extendv4qiv4si2): Likewise.
10980         (*sse4_1_extendv4qiv4si2): Likewise.
10981         (sse4_1_extendv2qiv2di2): Likewise.
10982         (*sse4_1_extendv2qiv2di2): Likewise.
10983         (sse4_1_extendv4hiv4si2): Likewise.
10984         (*sse4_1_extendv4hiv4si2): Likewise.
10985         (sse4_1_extendv2hiv2di2): Likewise.
10986         (*sse4_1_extendv2hiv2di2): Likewise.
10987         (sse4_1_extendv2siv2di2): Likewise.
10988         (*sse4_1_extendv2siv2di2): Likewise.
10989         (sse4_1_zero_extendv8qiv8hi2): Likewise.
10990         (*sse4_1_zero_extendv8qiv8hi2): Likewise.
10991         (sse4_1_zero_extendv4qiv4si2): Likewise.
10992         (*sse4_1_zero_extendv4qiv4si2): Likewise.
10993         (sse4_1_zero_extendv2qiv2di2): Likewise.
10994         (*sse4_1_zero_extendv2qiv2di2): Likewise.
10995         (sse4_1_zero_extendv4hiv4si2): Likewise.
10996         (*sse4_1_zero_extendv4hiv4si2): Likewise.
10997         (sse4_1_zero_extendv2hiv2di2): Likewise.
10998         (*sse4_1_zero_extendv2hiv2di2): Likewise.
10999         (sse4_1_zero_extendv2siv2di2): Likewise.
11000         (*sse4_1_zero_extendv2siv2di2): Likewise.
11001         (sse4_1_roundpd): Likewise.
11002         (sse4_1_roundps): Likewise.
11003         (sse4_1_roundsd): Likewise.
11004         (sse4_1_roundss): Likewise.
11005         (mulv4si3): Don't expand for SSE4.1.
11006         (smax<mode>3): Likewise.
11007         (umaxv4si3): Likewise.
11008         (uminv16qi3): Likewise.
11009         (umin<mode>3): Likewise.
11010         (umaxv8hi3): Rewrite.  Only enabled for SSE4.1.
11011
11012         * doc/extend.texi: Document SSE4.1 built-in functions.
11013
11014         * doc/invoke.texi: Document -msse4.1.
11015
11016 2007-05-22  Nathan Sidwell  <nathan@codesourcery.com>
11017
11018         * config/m68k/linux.h (ASM_SPEC): Add asm_pcrel_spec.
11019         * config/m68k/m68k-none.h (ASM_SPEC): Don't override here.
11020         * config/m68k/m68k.h (ASM_PCREL_SPEC): New.
11021         (ASM_SPEC): Add asm_pcrel_spec.
11022         (EXTRA_SPECS): Add asm_pcrel_spec.
11023
11024 2007-05-21  David Daney  <ddaney@avtrex.com>
11025
11026         * doc/install.texi (Building a cross compiler): Add requirements
11027         for Java cross compiler.
11028
11029 2007-05-21  Andrew Pinski  <andrew_pinski@playstation.sony.com>
11030
11031         PR middle-end/31995
11032         * tree-chrec.c (evolution_function_is_affine_multivariate_p):
11033         Add loopno argument.  Use evolution_function_is_invariant_rec_p
11034         instead of evolution_function_is_constant_p.
11035         Update calls to evolution_function_is_affine_multivariate_p.
11036         * tree-chrec.h (evolution_function_is_affine_multivariate_p):
11037         Add loopno argument.
11038         * tree-scalar-evolution.c (gather_chrec_stats): Call
11039         evolution_function_is_affine_multivariate_p with a loop
11040         number of 0.
11041         * tree-data-ref.c (analyze_miv_subscript): Likewise.
11042         (analyze_overlapping_iterations): Likewise.
11043         (access_functions_are_affine_or_constant_p): Likewise.
11044         (build_classic_dist_vector_1): If the access functions
11045         are equal, don't do anything.
11046
11047 2007-05-21  Paolo Bonzini  <bonzini@gnu.org>
11048             Paolo Carlini  <pcarlini@suse.de>
11049             Uros Bizjak  <ubizjak@gmail.com>
11050
11051         * c-cppbuiltin.c (c_cpp_builtins): Define
11052         __GCC_HAVE_SYNC_COMPARE_AND_SWAP_1, __GCC_HAVE_SYNC_COMPARE_AND_SWAP_2,
11053         __GCC_HAVE_SYNC_COMPARE_AND_SWAP_4, __GCC_HAVE_SYNC_COMPARE_AND_SWAP_8,
11054         __GCC_HAVE_SYNC_COMPARE_AND_SWAP_16, if appropriate.
11055         * doc/cpp.texi ([Standard Predefined Macros]): Document.
11056
11057 2007-05-21  Mike Stump  <mrs@apple.com>
11058
11059         * config/darwin.h (LINK_COMMAND_SPEC): Add .cxx/.cp for dsymutil
11060         handling as well.
11061         * config/darwin9.h (LINK_COMMAND_SPEC): Likewise.
11062
11063 2007-05-21  Uros Bizjak  <ubizjak@gmail.com>
11064
11065         * config/i386/tmmintrin.h (_mm_alignr_epi8): Provide macro
11066         implementation if __OPTIMIZE__ is not defined.
11067         (_mm_alignr_pi8): Ditto.
11068         * config/i386/ammintrin.h (_mm_extracti_si64): Ditto.
11069         (_mm_inserti_si64): Ditto.
11070         * config/i386/emmintrin.h (_mm_shuffle_pd): Ditto.
11071         (_mm_slli_epi16): Ditto.
11072         (_mm_slli_epi32): Ditto.
11073         (_mm_slli_epi64): Ditto.
11074         (_mm_srai_epi16): Ditto.
11075         (_mm_srai_epi32): Ditto.
11076         (_mm_srli_si128): Ditto.
11077         (_mm_slli_si128): Ditto.
11078         (_mm_srli_epi16): Ditto.
11079         (_mm_srli_epi32): Ditto.
11080         (_mm_srli_epi64): Ditto.
11081         (_mm_extract_epi16): Ditto.
11082         (_mm_insert_epi16): Ditto.
11083         (_mm_shufflehi_epi16): Ditto.
11084         (_mm_shufflelo_epi16): Ditto.
11085         (_mm_shuffle_epi32): Ditto.
11086         * config/i386/xmmintrin.h (_mm_extract_pi16): Ditto.
11087         (_m_pextrw): Ditto.
11088         (_mm_insert_pi16): Ditto.
11089         (_m_pinsrw): Ditto.
11090         (_mm_shuffle_pi16): Ditto.
11091         (_m_pshufw): Ditto.
11092         (_mm_shufle_ps): Ditto.
11093         (_mm_prefetch): Ditto.
11094
11095 2007-05-21  Andreas Krebbel  <krebbel1@de.ibm.com>
11096
11097         * defaults.h (IBM_FLOAT_FORMAT): Macro definition removed.
11098         * doc/tm.texi (IBM_FLOAT_FORMAT): Documentation entry removed.
11099         * real.c (encode_i370_single, decode_i370_single,
11100         encode_i370_double, decode_i370_double): Functions removed.
11101         (i370_single_format, i370_double_format): Initializations removed.
11102         (real_maxval, round_for_format, exact_real_truncate, significand_size):
11103         Consider the log2_b field to always be one.
11104         (ieee_single_format, mips_single_format, coldfire_single_format,
11105         ieee_double_format, mips_double_format, coldfire_double_format,
11106         ieee_extended_motorola_format, ieee_extended_intel_96_format,
11107         ieee_extended_intel_128_format, ieee_extended_intel_96_round_53_format,
11108         ibm_extended_format, mips_extended_format, ieee_quad_format,
11109         mips_quad_format, vax_f_format, vax_d_format, vax_g_format,
11110         decimal_single_format, decimal_double_format, decimal_quad_format,
11111         c4x_single_format, c4x_extended_format, real_internal_format): Remove
11112         initialization of log2_b.
11113         * real.h (i370_single_format, i370_double_format): Declarations
11114         removed.
11115         * c-cppbuiltin.c (builtin_define_float_constants): Consider the log2_b
11116         field to always be one.
11117
11118 2007-05-21  Andreas Schwab  <schwab@suse.de>
11119
11120         * config/ia64/ia64.c (emit_predicate_relation_info): Fix use of
11121         NOTE_INSN_BASIC_BLOCK_P.
11122         (process_for_unwind_directive): Likewise.
11123
11124 2007-05-21  Nathan Sidwell  <nathan@codesourcery.com>
11125
11126         * builtins.c (expand_builtin_setjmp_setup): Update comment.
11127         * function.h (struct function): Move va_list_gpr_size,
11128         va_list_fpr_size, function_frequency to front of bitfields.  Add
11129         calls_unwind_init.
11130         (current_function_calls_unwind_init): New.
11131         * except.c (expand_builtin_unwind_init): Set
11132         current_function_calls_unwind_init not
11133         current_function_has_nonlocal_label.
11134         * reload1.c (has_nonexceptional_receiver): New.
11135         (reload): Use it and current_function_calls_unwind_init to
11136         determine whether call-saved regs must be saved.
11137
11138 2007-05-20  Jan Hubicka  <jh@suse.cz>
11139
11140         * gengtype.c (adjust_field_rtx_def): Use NOTE_KIND instead of
11141         NOTE_LINE_NUMBER; use NOTE_INSN_BASIC_BLOCK_P when possible.
11142         * ddg.c (create_ddg): LIkewise.
11143         * final.c (final): Remove hunk moving line number notes around since
11144         they are no longer present at this stage.
11145         (final_scan_insn): Use NOTE_KIND instead of
11146         NOTE_LINE_NUMBER; use NOTE_INSN_BASIC_BLOCK_P when possible.
11147         (output_asm_label): Likewise.
11148         * reorg.c (dbr_schedule): Likewise.
11149         * haifa-sched.c (unlink_other_notes): Likewise.
11150         * mode-switching.c (optimize_mode_switching): Likewise.
11151         * graph.c (start_bb): Likewise.
11152         * rtl.def (NOTE): Update description.
11153         * jump.c (squeeze_notes): Delete.
11154         (mark_jump_label): Use NOTE_KIND instead of NOTE_LINE_NUMBER; use
11155         NOTE_INSN_BASIC_BLOCK_P when possible.
11156         * ifcvt.c (dead_or_predicable): Remove call of squeeze_notes.
11157         * dwarf2out.c (gen_label_die): Use NOTE_KIND instead of
11158         NOTE_LINE_NUMBER; use NOTE_INSN_BASIC_BLOCK_P when possible.
11159         (dwarf2out_var_location): Likewise.
11160         * cfgbuild.c (make_edges): Likewise.
11161         (find_basic_blocks_1): Likewise.
11162         * function.c (reorder_blocks_1): Likewise.
11163         (epilogue_done): Likewise.
11164         (reposition_prologue_and_epilogue_notes): Likewise.
11165         * print-rtl.c (print_rtx): Likewise; drop code for printing
11166         line number notes.
11167         (print_rtl): Likewise.
11168         (print_rtl_single): Likewise.
11169         * gcse.c (insert_insn_start_bb): Likewise.
11170         * alias.c (init_alias_analysis): Likewise.
11171         * calls.c (fixup_tail_calls): Likewise.
11172         * except.c (sjlj_emit_function_enter): Likewise.
11173         * emit-rtl.c (add_insn_after): Likeiwse.
11174         (emit_label_before): Likewise.
11175         (emit_label_after): Likewise.
11176         (emit_note_before, emit_note_after, emit_note): Update
11177         parameter to be enum insn_note; do not deal with source
11178         files.
11179         * cfgcleanup.c (merge_blocks_move_predecessor_nojumps):
11180         Use NOTE_KIND instead of NOTE_LINE_NUMBER; use NOTE_INSN_BASIC_BLOCK_P
11181         when possible.
11182         (merge_blocks_move_successor_nojumps): Simplify now when
11183         we don't have BLOCK notes.
11184         (try_optimize_cfg): Likewise.
11185         * cfglayout.c (skip_insns_after_block): Likewise.
11186         (record_effective_endpoints): Likewise.
11187         (duplicate_insn_chain): Likewise.
11188         * varasm.c (output_constant_pool_1): Likewise.
11189         * sched-deps.c (sched_analyze): Likewise.
11190         * rtl.c (NOTE_INSN_MAX_isnt_negative_adjust_NOTE_INSN_BIAS):
11191         Exterminate.
11192         (note_insn_name): Simplify now when NOTE_INSN_BIAS is gone.
11193         * rtl.h (NOTE_SOURCE_LOCATION, NOTE_EXPANDED_LOCATION): Exterminate.
11194         (SET_INSN_DELETED): Simplify.
11195         (NOTE_LINE_NUMBER): Exterminate.
11196         (NOTE_LINE_KIND): New.
11197         (NOTE_INSN_BASIC_BLOCK_P): Update.
11198         (enum insn_note): Simplify.
11199         (GET_NOTE_INSN_NAME) Simplify.
11200         (emit_note_before, emit_note_after, emit_note): Update prototype.
11201         (squeeze_notes): Remove.
11202         * sched-int.h (NOTE_NOT_BB_P): Update.
11203         * resource.c (mark_target_live_regs): Update.
11204         * sched-rgn.c (debug_dependencies): Update.
11205         * sched-vis.c (print_insn): Update.
11206         * config/alpha/alpha.c (alpha_handle_trap_shadows): Update.
11207         * config/i386/i386.c (ix86_output_function_epilogue): Update.
11208         * config/sh/sh.c (sh_adjust_unroll_max): Function dead since gcc 4.0.0.
11209         (TARGET_ADJUST_UNROLL_MAX): Likewise.
11210         (split_branches): Update.
11211         (sh_optimize_target_register_callee_saved): Remove hunk dead since gcc
11212         4.0.0.
11213         (sh_adjust_unroll_max): Exterminate.
11214         * config/c4x/c4x.c (c4x_reorg): Use SET_INSN_DELETED.
11215         * config/m68hc11/m68hc11.c (m68hc11_check_z_replacement): Likewise.
11216         (m68hc11_reorg): Likewise.
11217         * config/ia64/ia64.c (emit_insn_group_barriers): Update.
11218         (emit_predicate_relation_info): Update.
11219         (process_for_unwind_directive): Update.
11220         * config/rs6000/rs6000.c (rs6000_output_function_epilogue): Update.
11221         (output_call): Update.
11222         * config/pa/pa.c (output_lbranch): Update.
11223         (output_millicode_call): Update.
11224         (output_call): Update.
11225         (pa_combine_instructions): Update.
11226         * config/mips/mips.c (mips16_gp_pseudo_reg): Update.
11227         * config/bfin/bfin.c (gen_one_bundle): Update.
11228         * cfgrtl.c (can_delete_note_p): Update.
11229         (delete_insn): Update.
11230         (rtl_merge_blocks): Update.
11231         (commit_one_edge_insertion): Update.
11232         (rtl_verify_flow_info): Update.
11233         * stmt.c (expand_case): Do not call squeeze_notes.
11234
11235 2007-05-20  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
11236
11237         PR middle-end/7651
11238         PR c++/11856
11239         PR c/12963
11240         PR c/23587
11241         PR other/29694
11242         * c.opt (Wtype-limits): New.
11243         * doc/invoke.texi (Wtype-limits): Document it.
11244         (Wextra): Enabled by -Wextra.
11245         * c-opts.c (c_common_post_options): Enabled by -Wextra.
11246         * c-common.c (shorten_compare): Warn with Wtype-limits.
11247
11248 2007-05-20  Uros Bizjak  <ubizjak@gmail.com>
11249
11250         * config/i386/tmmintrin.h (_mm_alignr_epi32): Implement as always
11251         inlined function, not as a macro.
11252         (_mm_alignr_pi8): Ditto.
11253         * config/i386/ammintrin.h (_mm_extracti_si64): Ditto.
11254         (_mm_inserti_si64): Ditto.
11255         * config/i386/emmintrin.h (_mm_shuffle_pd): Ditto.
11256         (_mm_extract_epi16): Ditto.
11257         (_mm_insert_epi16): Ditto.
11258         (_mm_shufflehi_epi16): Ditto.
11259         (_mm_shufflelo_epi16): Ditto.
11260         (_mm_shuffle_epi32): Ditto.
11261         * config/i386/xmmintrin.h (_mm_set_ss): Use 0.0f for float constant.
11262         * config/386/mm3dnow.h: Add __attribute__((__always_inline__)) to
11263         all functions.
11264         (_m_from_float): Add __extension__ to conversion.  Use 0.0f for
11265         float constant.
11266         (_m_to_float): Use C89 compatible assignment.
11267
11268 2007-05-20  Martin Michlmayr  <tbm@cyrius.com>
11269
11270         PR target/32007
11271         * config/arm/lib1funcs.asm: Define __ARM_ARCH__ on v2/v3 machines.
11272
11273 2007-05-20  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
11274
11275         PR middle-end/7651
11276         * doc/invoke.texi (Wreturn-type): Complete description.
11277         (Wextra): Delete item about return-type warning.
11278         * c-decl.c: Delete redundant Wextra warning.
11279
11280 2007-05-20  Uros Bizjak  <ubizjak@gmail.com>
11281
11282         PR target/31585
11283         * config/i386/pmmintrin.h: Do not include xmmintrin.h
11284         * config/i386/xmmintrin.h (_mm_extract_pi16): Implement as always
11285         inlined function, not as a macro.
11286         (_mm_prefetch): Ditto.
11287         (_m_pextrw): Ditto.
11288         (_mm_insert_pi16): Ditto.
11289         (_m_pinsrw): Ditto.
11290         (_mm_shuffle_pi16): Ditto.  Add const to __N argument.
11291         (_m_pshufw): Ditto. Add const to __N argument.
11292         (_mm_shufle_ps): Ditto.  Add const to __mask argument.
11293         * config/i386/emmintrin.h (_mm_slli_epi16): Add const to __B argument.
11294         (_mm_slli_epi32): Ditto.
11295         (_mm_srli_si128): Implement as always inlined function, not as a
11296         macro.  Add __inline to function declaration.
11297         (_mm_slli_si128): Ditto.
11298
11299 2007-05-19  Uros Bizjak  <ubizjak@gmail.com>
11300
11301         * config/i386/sfp-machine.h (FP_EX_INVALID, FP_EX_DENORM,
11302         FP_EXP_DIVZERO, FP_EX_OVERFLOW, FP_EX_UNDERFLOW, FP_EX_INEXACT):
11303         New constants.
11304         (struct fenv): New structure.
11305         (FP_HANDLE_EXCEPTIONS): New define.
11306         (FP_RND_NEAREST, FP_RND_ZERO, FP_RND_PINF, FP_RND_MINF): New constants.
11307         (_FP_DECL_EXP): New define.
11308         (FP_INIT_ROUNDMODE): New define.
11309         (FP_ROUNDMODE): New define.
11310
11311 2007-05-19  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
11312
11313         * doc/invoke.texi (Warning Options): Add -Wconversion-sign.
11314         (Wconversion): Update description.
11315         (Wconversion-sign): New.
11316         * c.opt (Wconversion-sign): New.
11317         * c-opts.c (c_common_post_options): Uninitialized Wconversion-sign
11318         means disabled for C++. Otherwise, take the status of Wconversion.
11319         * c-common.c (conversion_warning): Warn with either Wconversion or
11320         Wconversion-sign.
11321         (warnings_for_convert_and_check): Conditions are already checked by
11322         conversion_warning.
11323         (convert_and_check): Don't check warnings if the conversion failed.
11324
11325 2007-05-19 Andy Hutchinson <HutchinsonAndy@netscape.net>
11326            Anatoly Sokolov <aesok@dol.ru>
11327
11328         * config/avr/avr-protos.h (expand_prologue, expand_epilogue,
11329         avr_epilogue_uses) : Add declaration.
11330         * config/avr/predicates.md (avr_sp_immediate_operand): New predicate.
11331         * config/avr/constraints.md (R): New constraint.
11332         config/avr/avr.md (SREG_ADDR, UNSPEC_SEI, UNSPEC_CLI,
11333         UNSPECV_PROLOGUE_SAVES, UNSPECV_EPILOGUE_RESTORES): New constants.
11334         (*pop1, *pop2, *pop3, *pop4, *pop5): Combine into ...
11335         (*addhi3_sp_R_pc2, *addhi3_sp_R_pc3): ... these patterns.
11336         (*movhi_sp, popqi, pophi, enable_interrupt, disable_interrupt,
11337         call_prologue_saves, epilogue_restores, return_from_epilogue,
11338         return_from_main_epilogue, return_from_interrupt_epilogue,
11339         return_from_naked_epilogue, prologue, epilogue): New patterns.
11340         (jump): Handle symbol reference.
11341         * config/avr/avr.c (out_adj_frame_ptr, out_set_stack_ptr,
11342         avr_output_function_prologue, avr_output_function_epilogue): Remove
11343         functions.
11344         (avr_init_machine_status, expand_prologue, expand_epilogue,
11345         avr_asm_function_end_prologue, avr_epilogue_uses,
11346         avr_asm_function_begin_epilogue): New functions.
11347         (prologue_size, epilogue_size, jump_tables_size): Remove global
11348         variables.
11349         (TARGET_ASM_FUNCTION_PROLOGUE, TARGET_ASM_FUNCTION_EPILOGUE): Remove.
11350         (TARGET_ASM_FUNCTION_END_PROLOGUE): Define.
11351         (TARGET_ASM_FUNCTION_BEGIN_EPILOGUE): Define.
11352         (avr_override_options): Initialise init_machine_status.
11353         (output_movhi): Handle all stack pointer loads.
11354         (out_movqi_r_mr, out_movqi_mr_r): Handle SREG_ADDR address.
11355         (avr_output_addr_vec_elt): Do not use variable jump_tables_size.
11356         * config/avr/avr.h (AVR_2_BYTE_PC, AVR_3_BYTE_PC): New.
11357         (EPILOGUE_USES) Redefine.
11358         (machine_function) Declare.
11359
11360 2007-05-19  Richard Sandiford  <richard@codesourcery.com>
11361
11362         * config/mips/mips.c (mips_offset_within_alignment_p): Tweak comment.
11363         Use a single return statement.
11364
11365 2007-05-19  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
11366
11367         PR middle-end/30250
11368         * builtins.c (do_mpfr_lgamma_r): New.
11369         (fold_builtin_2): Handle builtin gamma_r/lgamma_r.
11370         * tree.h (CASE_FLT_FN_REENT): New.
11371
11372 2007-05-18  Geoffrey Keating  <geoffk@apple.com>
11373
11374         * dwarf2out.c (print_die): Use '%ld' not '%lu' to print a 'long'.
11375         (output_die): Use 'unsigned long' with %x.
11376         * sched-vis.c (print_value): Use 'unsigned HOST_WIDE_INT' and
11377         HOST_WIDE_INT_PRINT_HEX to print HOST_WIDE_INT.
11378         * tree-dump.c (dump_pointer): Use 'unsigned long' for %lx.
11379
11380         * unwind-dw2.c (uw_identify_context): Use the CFA, not the IP.
11381
11382 2007-05-18  H.J. Lu  <hongjiu.lu@intel.com>
11383
11384         PR target/31989
11385         PR target/31681
11386         PR target/31666
11387         * config/i386/i386.c (init_cumulative_args): Set maybe_vaarg to
11388         true if function has no argument.
11389
11390 2007-05-18  DJ Delorie  <dj@redhat.com>
11391
11392         * config/mips/mips.c (mips_offset_within_alignment_p): New.
11393         (mips_symbolic_constant_p): Call it for TPREL and DTPREL symbols.
11394
11395 2007-05-18  Uros Bizjak  <ubizjak@gmail.com>
11396
11397         * longlong.h (__x86_64__): Add definitions for add_ssaaaa,
11398         sub_ddmmss, umul_ppmm, udiv_qrnnd, count_leading_zeros and
11399         count_trailing_zeros.
11400         (__i386__): Implement count_leading_zeros using __builtin_clz().
11401         Implement count_trailing_zeros usign __builtin_ctz().
11402
11403 2007-05-18  Richard Sandiford  <richard@codesourcery.com>
11404
11405         * config/i386/vxworks.h (ASM_PREFERRED_EH_DATA_FORMAT): Undefine.
11406
11407 2007-05-18  Uros Bizjak  <ubizjak@gmail.com>
11408
11409         PR middle-end/31344
11410         * expr.c (emit_move_change_mode): Change mode of push operands here.
11411
11412 2007-05-17  Ian Lance Taylor  <iant@google.com>
11413
11414         PR tree-optimization/31953
11415         * tree-vrp.c (set_value_range_to_value): Add equiv parameter.
11416         Change all callers.
11417         (set_value_range_to_null): Call set_value_range_to_value.
11418         (extract_range_from_comparison): Likewise.
11419
11420 2007-05-17  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
11421
11422         * toplev.c (print_version): Output GMP/MPFR version info.
11423
11424         * builtins.c (CASE_MATHFN_REENT): New macro.
11425         (mathfn_built_in): Use it.
11426         * builtins.def (BUILT_IN_GAMMA_R, BUILT_IN_GAMMAF_R,
11427         BUILT_IN_GAMMAL_R, BUILT_IN_LGAMMA_R, BUILT_IN_LGAMMAF_R,
11428         BUILT_IN_LGAMMAL_R): New.
11429         * doc/extend.texi: Document new builtins.
11430
11431         PR middle-end/31796
11432         * builtins.c (do_mpfr_remquo): New.
11433         (fold_builtin_2): Handle BUILT_IN_DREM/BUILT_IN_REMAINDER.
11434         (fold_builtin_3): Handle BUILT_IN_REMQUO.
11435
11436         PR middle-end/30251
11437         * builtins.c (fold_builtin_1): Handle y0, y1.
11438         (fold_builtin_2): Handle yn.
11439
11440         PR middle-end/30251
11441         * builtins.c (do_mpfr_bessel_n): New.
11442         (fold_builtin_1): Handle BUILT_IN_J0 and BUILT_IN_J1.
11443         (fold_builtin_2): Handle BUILT_IN_JN.
11444
11445 2007-05-17  Danny Smith  <dannysmith@users.sourceforge.net>
11446
11447         PR target/31965
11448         * config/i386/mingw32.h (_INTEGRAL_MAX_BITS): Define builtin as
11449         TYPE_PRECISION (intmax_type_node).
11450
11451 2007-05-17  Steve Ellcey  <sje@cup.hp.com>
11452
11453         PR target/31850
11454         * reload.c (subst_reloads): Remove checking.
11455
11456 2007-05-17  Eric Botcazou  <ebotcazou@libertysurf.fr>
11457
11458         PR rtl-optimization/31691
11459         * combine.c (simplify_set): Build a new src pattern instead of
11460         substituting its operands in the COMPARE case.
11461
11462 2007-05-17  Zdenek Dvorak  <dvorakz@suse.cz>
11463
11464         * tree-vrp.c (finalize_jump_threads): Do not care about dominance info.
11465         (execute_vrp): Preserve loops through jump threading.
11466         * tree-ssa-threadupdate.c (thread_single_edge,
11467         dbds_continue_enumeration_p, determine_bb_domination_status,
11468         thread_through_loop_header): New functions.
11469         (create_edge_and_update_destination_phis,
11470         create_edge_and_update_destination_phis): Set loops for the new blocks.
11471         (prune_undesirable_thread_requests): Removed.
11472         (redirect_edges): Do not pretend that redirect_edge_and_branch can
11473         create new blocks.
11474         (thread_block): Do not call prune_undesirable_thread_requests.
11475         Update loops.
11476         (mark_threaded_blocks): Select edges to thread here.
11477         (thread_through_all_blocks): Take may_peel_loop_headers argument.
11478         Thread edges through loop headers independently.
11479         * cfgloopmanip.c (create_preheader, mfb_keep_just): Export.
11480         * tree-pass.h (TODO_mark_first_instance): New.
11481         (first_pass_instance): Declare.
11482         * cfghooks.c (duplicate_block): Put the block to the original loop
11483         if copy is not specified.
11484         * tree-ssa-dom.c (tree_ssa_dominator_optimize): Preserve loops through
11485         jump threading.  Pass may_peel_loop_headers to
11486         thread_through_all_blocks according to first_pass_instance.
11487         * cfgloop.h (create_preheader): Declare.
11488         * tree-flow.h (thread_through_all_blocks): Declaration changed.
11489         * basic-block.h (mfb_keep_just, mfb_kj_edge): Declare.
11490         * passes.c (first_pass_instance): New variable.
11491         (next_pass_1): Set TODO_mark_first_instance.
11492         (execute_todo): Set first_pass_instance.
11493
11494 2007-05-17  Uros Bizjak  <ubizjak@gmail.com>
11495
11496         PR tree-optimization/24659
11497         * optabs.h (enum optab_index): Add OTI_vec_unpacks_float_hi,
11498         OTI_vec_unpacks_float_lo, OTI_vec_unpacku_float_hi,
11499         OTI_vec_unpacku_float_lo, OTI_vec_pack_sfix_trunc and
11500         OTI_vec_pack_ufix_trunc.
11501         (vec_unpacks_float_hi_optab): Define new macro.
11502         (vec_unpacks_float_lo_optab): Ditto.
11503         (vec_unpacku_float_hi_optab): Ditto.
11504         (vec_unpacku_float_lo_optab): Ditto.
11505         (vec_pack_sfix_trunc_optab): Ditto.
11506         (vec_pack_ufix_trunc_optab): Ditto.
11507         * genopinit.c (optabs): Implement vec_unpack[s|u]_[hi|lo]_optab
11508         and vec_pack_[s|u]fix_trunc_optab using
11509         vec_unpack[s|u]_[hi\lo]_* and vec_pack_[u|s]fix_trunc_* patterns
11510         * tree-vectorizer.c (supportable_widening_operation): Handle
11511         FLOAT_EXPR and CONVERT_EXPR.  Update comment.
11512         (supportable_narrowing_operation): New function.
11513         * tree-vectorizer.h (supportable_narrowing_operation): Prototype.
11514         * tree-vect-transform.c (vectorizable_conversion): Handle
11515         (nunits_in == nunits_out / 2) and (nunits_out == nunits_in / 2) cases.
11516         (vect_gen_widened_results_half): Move before vectorizable_conversion.
11517         (vectorizable_type_demotion): Call supportable_narrowing_operation()
11518         to check for target support.
11519         * optabs.c (optab_for_tree_code) Return vec_unpack[s|u]_float_hi_optab
11520         for VEC_UNPACK_FLOAT_HI_EXPR, vec_unpack[s|u]_float_lo_optab
11521         for VEC_UNPACK_FLOAT_LO_EXPR and vec_pack_[u|s]fix_trunc_optab
11522         for VEC_PACK_FIX_TRUNC_EXPR.
11523         (expand_binop): Special case mode of the result for
11524         vec_pack_[u|s]fix_trunc_optab.
11525         (init_optabs): Initialize vec_unpack[s|u]_[hi|lo]_optab and
11526         vec_pack_[u|s]fix_trunc_optab.
11527
11528         * tree.def (VEC_UNPACK_FLOAT_HI_EXPR, VEC_UNPACK_FLOAT_LO_EXPR,
11529         VEC_PACK_FIX_TRUNC_EXPR): New tree codes.
11530         * tree-pretty-print.c (dump_generic_node): Handle
11531         VEC_UNPACK_FLOAT_HI_EXPR, VEC_UNPACK_FLOAT_LO_EXPR and
11532         VEC_PACK_FIX_TRUNC_EXPR.
11533         (op_prio): Ditto.
11534         * expr.c (expand_expr_real_1): Ditto.
11535         * tree-inline.c (estimate_num_insns_1): Ditto.
11536         * tree-vect-generic.c (expand_vector_operations_1): Ditto.
11537
11538         * config/i386/sse.md (vec_unpacks_float_hi_v8hi): New expander.
11539         (vec_unpacks_float_lo_v8hi): Ditto.
11540         (vec_unpacku_float_hi_v8hi): Ditto.
11541         (vec_unpacku_float_lo_v8hi): Ditto.
11542         (vec_unpacks_float_hi_v4si): Ditto.
11543         (vec_unpacks_float_lo_v4si): Ditto.
11544         (vec_pack_sfix_trunc_v2df): Ditto.
11545
11546         * doc/c-tree.texi (Expression trees) [VEC_UNPACK_FLOAT_HI_EXPR]:
11547         Document.
11548         [VEC_UNPACK_FLOAT_LO_EXPR]: Ditto.
11549         [VEC_PACK_FIX_TRUNC_EXPR]: Ditto.
11550         * doc/md.texi (Standard Names) [vec_pack_sfix_trunc]: Document.
11551         [vec_pack_ufix_trunc]: Ditto.
11552         [vec_unpacks_float_hi]: Ditto.
11553         [vec_unpacks_float_lo]: Ditto.
11554         [vec_unpacku_float_hi]: Ditto.
11555         [vec_unpacku_float_lo]: Ditto.
11556
11557 2007-05-16  Uros Bizjak  <ubizjak@gmail.com>
11558
11559         * soft-fp/README: Update for new files.
11560         * soft-fp/floattisf.c: New file.
11561         * soft-fp/floattidf.c: New file.
11562         * soft-fp/floattitf.c: New file.
11563         * soft-fp/floatuntisf.c: New file.
11564         * soft-fp/floatuntidf.c: New file.
11565         * soft-fp/floatuntitf.c: New file.
11566         * soft-fp/fixsfti.c: New file.
11567         * soft-fp/fixdfti.c: New file.
11568         * soft-fp/fixtfti.c: New file.
11569         * soft-fp/fixunssfti.c: New file.
11570         * soft-fp/fixunsdfti.c: New file.
11571         * soft-fp/fixunstfti.c: New file.
11572         * soft-fp/extendxftf.c: New file.
11573         * soft-fp/trunctfxf.c: New file.
11574
11575         * libgcc-std.ver (__extendxftf2): Added to GCC_4.3.0 section.
11576         (__trunctfxf2): Ditto.
11577
11578         * config/i386/libgcc-x86_64-glibc.ver (__addtf3, __divtf3, __eqtf2,
11579         __extenddftf2, __extendsftf2, __fixtfdi, __fixtfsi, __fixtfti,
11580         __fixunstfdi, __fixunstfsi, __fixunstfti, __floatditf, __floatsitf,
11581         __floattitf, __floatunditf, __floatunsitf, __floatuntitf, __getf2,
11582         __letf2, __multf3, __negtf2, __subtf3, __trunctfdf2, __trunctfsf2,
11583         __unordtf2): Exclude and add to GCC_4.3.0 section for x86_64 targets.
11584
11585         * config/i386/t-fprules-softfp64: New file.
11586         * config/i386/sfp-machine.h: New file.
11587         * config.gcc (x86_64-*-linux*, x86_64-*-kfreebsd*-gnu,
11588         x86_64-*-knetbsd*-gnu): Add i386/t-fprules-softfp64
11589         and soft-fp/t-softfp to tmake_file.
11590         (i[34567]86-*-linux*, i[34567]86-*-kfreebsd*-gnu,
11591         i[34567]86-*-knetbsd*-gnu): Ditto for --enable-targets=all.
11592
11593         * config/i386/t-linux64 (softfp_wrap_start): New.
11594         (softfp_wrap_end): New.
11595         * config/i386/i386.c (ix86_scalar_mode_supported): TFmode is
11596         supported for TARGET_64BIT.
11597
11598 2007-05-16  Rafael Avila de Espindola  <espindola@google.com>
11599
11600         * c-common.c (c_common_signed_or_unsigned_type): Emulate
11601         c_common_unsigned_type behavior.
11602
11603 2007-05-16  Paolo Bonzini  <bonzini@gnu.org>
11604
11605         * config/i386/i386.c (legitimize_tls_address): Mark __tls_get_addr
11606         calls as pure.
11607
11608 2007-05-16  Eric Christopher  <echristo@apple.com>
11609
11610         * config/rs6000/rs6000.c (rs6000_emit_prologue): Move altivec register
11611         saving after stack push. Set sp_offset whenever we push.
11612         (rs6000_emit_epilogue): Move altivec register restore before
11613         stack push.
11614
11615 2007-05-16  Richard Sandiford  <richard@codesourcery.com>
11616
11617         * configure.ac: Allow sysroots to be relocated under $prefix as
11618         well as $exec_prefix.
11619         * configure: Regenerate.
11620
11621 2007-05-16  Richard Sandiford  <richard@codesourcery.com>
11622
11623         Revert:
11624
11625         2007-05-12  Richard Sandiford  <richard@codesourcery.com>
11626
11627         * configure.ac (gcc_gxx_include_dir): Use $(libsubdir_to_prefix).
11628         (gcc_tooldir): Likewise.
11629         * configure: Regenerate.
11630         * Makefile.in (libsubdir_to_prefix): New variable, based on the
11631         old configure.ac gcc_tooldir setting.
11632         (prefix_to_exec_prefix): New variable.
11633         (DRIVER_DEFINES): Use $(libsubdir_to_prefix)$(prefix_to_exec_prefix)
11634         rather than $(unlibsubdir)/../ to derive TOOLDIR_BASE_PREFIX.
11635
11636 2007-05-14  Janis Johnson  <janis187@us.ibm.com>
11637
11638         * c-typeck.c (build_binary_op): Return early for error.
11639
11640 2007-05-15  Zdenek Dvorak  <dvorakz@suse.cz>
11641
11642         * tree-ssa-loop-niter.c (record_estimate): Use GGC_NEW to allocate
11643         struct nb_iter_bound.
11644         (free_numbers_of_iterations_estimates_loop): Use ggc_free.
11645         * gengtype.c (open_base_files): Add cfhloop.h to the list of includes.
11646         * cfgloopmanip.c (place_new_loop): Vector larray is gc-allocated.
11647         * tree-scalar-evolution.c: Include gt-tree-scalar-evolution.h.
11648         (struct scev_info_str, scalar_evolution_info): Add GTY markers.
11649         (new_scev_info_str): Use GGC_NEW to allocate struct scev_info_str.
11650         (del_scev_info): Use ggc_free.
11651         (scev_initialize): Allocate scalar_evolution_info in gc memory.
11652         * loop-init.c: Include ggc.h.
11653         (loop_optimizer_init): Use GGC_CNEW to allocate struct loops.
11654         (loop_optimizer_finalize): Use ggc_free.
11655         * tree-ssa-loop.c (pass_tree_unswitch, pass_vectorize,
11656         pass_linear_transfom, pass_empty_loop, pass_complete_unroll,
11657         pass_iv_optimize): Add TODO_ggc_collect.
11658         * function.h (struct function): Remove skip marker from
11659         x_current_loops.
11660         * cfgloop.c: Include ggc.h.
11661         (flow_loops_free, flow_loop_free): Free the loop descriptions in gc
11662         memory.
11663         (establish_preds): Vector superloops is gc allocated.
11664         (alloc_loop): Allocate loop using GGC_CNEW.  Allocate head of
11665         loop->exits list.
11666         (flow_loops_find): Vector larray is gc allocated.
11667         (loop_exit_free): Use ggc_free.
11668         (rescan_loop_exit): Use GGC_NEW to allocate struct loop_exit.  Reflect
11669         that head of exits list is now not a part of struct loop.
11670         (record_loop_exits): Allocate exits table in gc memory.
11671         (get_loop_exit_edges, verify_loop_structure, single_exit): Reflect
11672         that head of exits list is now not a part of struct loop.
11673         * cfgloop.h (struct lpt_decision, struct nb_iter_bound,
11674         struct loop_exit): Add GTY marker.
11675         (struct loop): Add GTY marker.  Make superloops vector gc allocated.
11676         Add skip marker to aux field.  Make head of exits list a separate
11677         object.
11678         (struct loops): Add GTY marker.  Make larray vector gc allocated.
11679         Add param marker to exits table.
11680         (get_loops): Type changed.
11681         * Makefile.in (tree-scalar-evolution.o): Add
11682         gt-tree-scalar-evolution.h dependency.
11683         (cfgloop.o, loop-init.o): Add ggc.h dependency.
11684         (GTFILES): Add cfgloop.h and tree-scalar-evolution.c.
11685         * basic-block.h (struct basic_block_def): Remove skip marker from
11686         loop_father field.
11687
11688 2007-05-14  Uros Bizjak  <ubizjak@gmail.com>
11689
11690         * builtins.c (expand_builtin_mathfn): Use EXPAND_NORMAL instead
11691         of 0 in the call to expand_expr().
11692         (expand_builtin_mathfn_3): Ditto.
11693         (expand_builtin_interclass_mathfn): Ditto.
11694         (expand_builtin_cexpi): Ditto.
11695         (expand_builtin_int_roundingfn): Ditto.
11696         (expand_builtin_int_roundingfn_2): Ditto.
11697         (expand_builtin_pow): Ditto.
11698         (expand_builtin_powi): Ditto.
11699         (expand_builtin_bswap): Ditto.
11700         (expand_builtin_unop): Ditto.
11701         (expand_builtin_fabs): Ditto.
11702         (get_builtin_sync_mem): Use NULL_RTX instead of NULL in
11703         the call to expand_expr().
11704         (expand_builtin_sync_operation): Ditto.
11705         (expand_builtin_compare_and_swap): Ditto.
11706         (expand_builtin_lock_test_and_set): Ditto.
11707         * except.c (expand_builtin_eh_return_data_regno): Use EXPAND_NORMAL
11708         instead of 0 in the call to expand_expr().
11709         (expand_builtin_extract_return_addr): Ditto.
11710         (expand_builtin_eh_return): Ditto.
11711         (expand_eh_return): Ditto.
11712         * explow.c (expr_size): Ditto.
11713         * expr.c (optimize_bitfield_assignment_op): Ditto.
11714         (expand_assignement): Ditto.
11715         (store_expr): Ditto.
11716         (store_field): Ditto.
11717         (expand_expr_addr_expr_1): Use NULL_RTX instead of NULL in
11718         the call to expand_expr().
11719         (expand_expr_real_1) [COMPLEX_CST]: Use EXPAND_NORMAL instead of 0
11720         in the call to expand_expr().
11721         [CONSTRUCTOR, PLUS_EXPR, MINUS_EXPR, NEGATE_EXPR, ABS_EXPR,
11722         BIT_NOT_EXPR, LSHIFT_EXPR, LT_EXPR, TRUTH_NOT_EXPR]: Ditto.
11723         [VEC_UNPACK_HI_EXPR, VEC_UNPACK_LO]: Use expand_normal() instead
11724         of expand_expr().
11725         * optabs.c (expand_vec_shift_expr): Ditto.
11726         (expand_vec_cond_expr): Ditto.
11727         (vector_compare_rtx): Use EXPAND_STACK_PARM instead of 1 in the
11728         call to expand_expr().
11729         * stmt.c (expand_return): Use EXPAND_NORMAL instead of 0
11730         in the call to expand_expr().
11731
11732 2007-05-14  Dave Korn  <dave.korn@artimi.com>
11733
11734         * genautomata.c (gen_regexp_el):  Allocate correct size for regexp.
11735
11736 2007-05-14  Rafael Avila de Espindola  <espindola@google.com>
11737
11738         * c-common.c (warnings_for_convert_and_check): Use unsigned_type_for
11739         instead of c_common_unsigned_type.
11740         (c_common_unsigned_type): Remove.
11741         (shorten_compare): Use c_common_signed_or_unsigned_type instead of
11742         c_common_unsigned_type.
11743         (c_common_nodes_and_builtins): Use unsigned_type_for instead of
11744         c_common_unsigned_type.
11745         * c-common.h (c_common_unsigned_type): Remove.
11746         * c-decl.c (grokdeclarator): Use unsigned_type_for instead of
11747         c_common_unsigned_type.
11748         * c-format.c (check_format_types): Use unsigned_type_for instead of
11749         c_common_unsigned_type.
11750         * c-objc-common.h (LANG_HOOKS_UNSIGNED_TYPE): Remove.
11751         * c-typeck.c (convert_for_assignment): Use unsigned_type_for instead
11752         of c_common_unsigned_type.
11753         * convert.c (convert_to_integer): Use unsigned_type_for instead of
11754         lang_hooks.types.unsigned_type.
11755         * expmed.c (make_tree): Use unsigned_type_for instead of
11756         lang_hooks.types.unsigned_type.
11757         * fold-const.c (fold_negate_expr): Use unsigned_type_for instead of
11758         lang_hooks.types.unsigned_type.
11759         (build_range_check): Likewise.
11760         (fold_unary): Likewise.
11761         (fold_binary): Likewise.
11762         (fold_ternary): Likewise.
11763         * langhooks-def.h (LANG_HOOKS_UNSIGNED_TYPE): Remove.
11764         * langhooks.h (lang_hooks_for_types): Remove unsigned_type.
11765         * tree.c (get_unsigned_type): New.
11766         (unsigned_type_for): Use get_unsigned_type instead of
11767         lang_hooks.types.unsigned_type.
11768
11769 2007-05-14  Kazu Hirata  <kazu@codesourcery.com>
11770
11771         * config/m68k/m68k-protos.h: Rename m68k_interrupt_function_p
11772         to m68k_get_function_kind.  Update its prototype.
11773         * config/m68k/m68k.c (m68k_attribute_table): Add an entry for
11774         interrupt_thread.
11775         (m68k_interrupt_function_p): Return enum m68k_function_type
11776         instead of bool.  Rename to m68k_get_function_kind.
11777         (m68k_handle_fndecl_attribute): Reject interrupt_thread if the
11778         target is not fido.
11779         (m68k_compute_frame_layout): Don't mark any register for save
11780         if an interrupt_thread attribute is specified.
11781         (m68k_hard_regno_rename_ok): Update a use of
11782         m68k_interrupt_function_p.
11783         * config/m68k/m68k.h (EPILOGUE_USES): Update a use of
11784         m68k_interrupt_function_p.
11785         (m68k_function_type): New.
11786         * config/m68k/m68k.md (*return): Output a 'sleep' instruction
11787         for a function with an interrupt_thread attribute.
11788         * doc/extend.texi: Document the interrupt_thread attribute.
11789
11790 2007-05-13  Daniel Berlin  <dberlin@dberlin.org>
11791
11792         Fix PR tree-optimization/31911
11793         * tree-ssa-pre.c (phi_translate): Make sure to cache results even
11794         if they didn't change the expression.
11795
11796 2007-05-13  Zdenek Dvorak  <dvorakz@suse.cz>
11797
11798         * tree-scalar-evolution.c (resolve_mixers): Exported.
11799         * tree-scalar-evolution.h (resolve_mixers): Declare.
11800         * tree-data-ref.c (object_analysis, ptr_decl_may_alias_p,
11801         ptr_ptr_may_alias_p, may_alias_p, record_ptr_differ_p,
11802         record_record_differ_p, record_array_differ_p, array_ptr_differ_p,
11803         base_object_differ_p, base_addr_differ_p, analyze_array_indexes,
11804         init_array_ref, init_pointer_ref, analyze_indirect_ref,
11805         strip_conversion, analyze_offset_expr, address_analysis,
11806         object_analysis, analyze_offset): Removed.
11807         (dr_analyze_innermost, dr_analyze_indices, dr_analyze_alias,
11808         split_constant_offset, canonicalize_base_object_address,
11809         object_address_invariant_in_loop_p, disjoint_objects_p,
11810         dr_may_alias_p, dr_address_invariant_p): New functions.
11811         (create_data_ref): Use dr_analyze_innermost, dr_analyze_indices
11812         and dr_analyze_alias.
11813         (initialize_data_dependence_relation): Use dr_may_alias_p
11814         and object_address_invariant_in_loop_p.
11815         (compute_self_dependence): Handle the case when
11816         DDR_ARE_DEPENDENT (ddr) is chrec_dont_know.
11817         (find_data_references_in_stmt): Restrict the analysis of data
11818         references to the given loop nest.
11819         (find_data_references_in_loop): Made static.  Pass loop nest to
11820         find_data_references_in_stmt.
11821         (compute_data_dependences_for_loop): Use DR_VOPS.
11822         (free_data_ref): Free DR_VOPS.
11823         * tree-data-ref.h (struct first_location_in_loop): Replaced by ...
11824         (struct innermost_loop_behavior): ... new.
11825         (struct base_object_info): Replaced by ...
11826         (struct indices): ... new.
11827         (struct dr_alias): New.
11828         (enum data_ref_type): Removed.
11829         (struct data_reference): Consist of struct innermost_loop_behavior,
11830         struct indices and struct dr_alias.
11831         (DR_SET_ACCESS_FNS, DR_FREE_ACCESS_FNS): Removed.
11832         (DR_MEMTAG): Renamed to ...
11833         (DR_SYMBOL_TAG): ... this.
11834         (find_data_references_in_loop): Declaration removed.
11835         * tree-vect-analyze.c (vect_compute_data_ref_alignment): Use DR_INIT
11836         instead of DR_OFFSET_MISALIGNMENT.  DR_ALIGNED_TO is never NULL.
11837         (vect_analyze_data_refs): Use DR_SYMBOL_TAG instead of DR_MEMTAG.
11838         * tree-vect-transform.c (vect_create_data_ref_ptr): Ditto.
11839
11840 2007-05-13  Revital Eres  <eres@il.ibm.com>
11841
11842         * tree-ssa-dse.c (get_use_of_stmt_lhs): New function
11843         which walks virtual def-use chains to find redundant stores.
11844         (dse_optimize_stmt): Call it.
11845
11846 2007-05-12  Steven Bosscher  <steven@gcc.gnu.org>
11847
11848         * gcse.c (gcse_main): Do jump bypassing in CPROP2.
11849         * passes.c (init_optimization_passes): Move pass_jump_bypass
11850         after loop2.
11851
11852         * basic-block.h (bb_has_eh_pred): Fix style issue.
11853
11854 2007-05-12  Steven Bosscher  <steven@gcc.gnu.org>
11855
11856         PR rtl-optimization/31848
11857         * loop-invariant.c (move_invariant_reg): If we move an insn
11858         with a REG_EQUAL note, and that insn is not always executed,
11859         remove the REG_EQUAL note.
11860
11861 2007-05-12  Richard Guenther  <rguenther@suse.de>
11862
11863         PR tree-optimization/31797
11864         * tree-ssa-forwprop.c (forward_propagate_addr_expr): Do not
11865         propagate into a stmt that has volatile ops.
11866
11867 2007-05-12  Richard Sandiford  <richard@codesourcery.com>
11868
11869         * configure.ac (gcc_gxx_include_dir): Use $(libsubdir_to_prefix).
11870         (gcc_tooldir): Likewise.
11871         * configure: Regenerate.
11872         * Makefile.in (libsubdir_to_prefix): New variable, based on the
11873         old configure.ac gcc_tooldir setting.
11874         (prefix_to_exec_prefix): New variable.
11875         (DRIVER_DEFINES): Use $(libsubdir_to_prefix)$(prefix_to_exec_prefix)
11876         rather than $(unlibsubdir)/../ to derive TOOLDIR_BASE_PREFIX.
11877
11878 2007-05-11  Silvius Rus  <rus@google.com>
11879
11880         * Makefile.in (OBJS-common): Add tree-ssa-alias-warnings.o.
11881         * c-common.c (strict_aliasing_warning): Modify -Wstrict-aliasing logic.
11882         * c-common.h (strict_aliasing_warning): Change return type.
11883         * c-opts.c (c_common_handle_option): Add call to set_Wstrict_aliasing.
11884         * c-typeck.c (build_indirect_ref): Add call to strict_aliasing_warning.
11885         (build_c_cast): Condition call to strict_aliasing_warning.
11886         * doc/invoke.texi: Update description of -Wstrict-aliasing[=n].
11887         * flags.h (set_Wstrict_aliasing): Declare.
11888         * opts.c (set_Wstrict_alising): Define, add call to.
11889         * tree-flow.h (strict_aliasing_warning_backend): Declare.
11890         * tree-ssa-alias-warnings.c: New file.
11891         * tree-ssa-alias.c (compute_may_aliases): Add call to
11892         strict_aliasing_warning_backend.
11893
11894 2007-05-11  Zdenek Dvorak  <dvorakz@suse.cz>
11895
11896         * tree-loop-linear.c (gather_interchange_stats, try_interchange_loops):
11897         Use loop_depth and loop_outer accessor functions.
11898         * tree-ssa-loop-im.c (outermost_invariant_loop, set_level,
11899         determine_invariantness_stmt, move_computations_stmt): Ditto.
11900         * cfgloopmanip.c (fix_bb_placement, fix_loop_placement, remove_path,
11901         add_loop, loopify, unloop, fix_loop_structure): Ditto.
11902         * tree-ssa-loop-manip.c (find_uses_to_rename_use): Ditto.
11903         * tree-scalar-evolution.c (interpret_loop_phi,
11904         compute_scalar_evolution_in_loop, analyze_scalar_evolution_in_loop,
11905         instantiate_parameters_1, scev_const_prop): Ditto.
11906         * cfghooks.c (make_forwarder_block): Ditto.
11907         * cfgloopanal.c (mark_irreducible_loops, mark_loop_exit_edges): Ditto.
11908         * modulo-sched.c (loop_canon_p): Ditto.
11909         * tree-vectorizer.c (slpeel_tree_duplicate_loop_to_edge_cfg,
11910         slpeel_can_duplicate_loop_p): Ditto.
11911         * lambda-code.c (invariant_in_loop_and_outer_loops): Ditto.
11912         * tree-cfg.c (tree_duplicate_sese_region): Ditto.
11913         * cfgloop.c (flow_loop_dump, flow_loop_nodes_find, rescan_loop_exit,
11914         cancel_loop, verify_loop_structure): Ditto.
11915         (flow_loop_nested_p, superloop_at_depth, flow_loop_free,
11916         add_bb_to_loop, remove_bb_from_loops, find_common_loop): Use the
11917         superloops vector instead of "pred" array.
11918         (establish_preds): Take father loop as an argument.  Initialize the
11919         superloops vector.
11920         (flow_loop_tree_node_add): Pass father loop to establish_preds.
11921         Do not initialize loop->outer.
11922         (flow_loop_tree_node_remove): Truncate the superloops vector.
11923         * cfgloop.h (struct loop): Removed field "outer", fields "depth" and
11924         "pred" merged to "superloops" vector.
11925         (loop_depth, loop_outer): New.
11926         (fel_init): Use loop_outer.
11927
11928 2007-05-11  Jan Hubicka  <jh@suse.cz>
11929
11930         * cgraphunit.c: Include gt-cgraphunit.h
11931         (static_ctors, static_dtors): New static vars.
11932         (record_cdtor_fn, build_cdtor, cgraph_build_cdtor_fns): New functions,
11933         based on implementation in c-common.c
11934         (cgraph_finalize_function): Call record_cdtor_fn.
11935         (cgraph_optimize): Call cgraph_build_cdtor_fns.
11936         * decl.c (finish_function): Do not call c_record_cdtor_fn.
11937         (c_write_global_declarations): Do not call c_build_cdtor_fns.
11938         * c-common.c (static_ctors, static_dtors, c_record_cdtor_fn,
11939         build_cdtor, c_build_cdtor_fns): Remove.
11940         * c-common.h (static_ctors, static_dtors, c_record_cdtor_fn,
11941         c_build_cdtor_fns): Remove prototype.
11942
11943 2007-05-11  Paolo Carlini  <pcarlini@suse.de>
11944
11945         PR other/31852
11946         * builtin-types.def: Add BT_FN_PTR_CONST_PTR_INT_SIZE.
11947         * builtins.def: Add BUILT_IN_MEMCHR, use the latter.
11948         * builtins.c (fold_builtin_memchr): New.
11949         (expand_builtin_memchr): Call the latter.
11950         (expand_builtin, fold_builtin_3): Deal with BUILT_IN_MEMCHR.
11951         * doc/extend.texi ([Other built-in functions provided by GCC]):
11952         Document memchr.
11953
11954 2007-05-11  Andreas Krebbel  <krebbel1@de.ibm.com>
11955
11956         * config/s390/s390.md (GPR0_REGNUM, FPR0_REGNUM, FPR2_REGNUM,
11957         PFPO_CONVERT, PFPO_OP_TYPE_SF, PFPO_OP_TYPE_DF, PFPO_OP_TYPE_TF,
11958         PFPO_OP_TYPE_SD, PFPO_OP_TYPE_DD, PFPO_OP_TYPE_TD, PFPO_OP0_TYPE_SHIFT,
11959         PFPO_OP1_TYPE_SHIFT): Constants added.
11960         (DFP_ALL): Mode macro defined.
11961         ("*trunc<BFP:mode><DFP_ALL:mode>2", "*trunc<DFP_ALL:mode><BFP:mode>2",
11962         "*extend<BFP:mode><DFP_ALL:mode>2", "*extend<DFP_ALL:mode><BFP:mode>2"):
11963         Insn definitions added.
11964         ("trunc<BFP:mode><DFP_ALL:mode>2", "trunc<DFP_ALL:mode><BFP:mode>2",
11965         "extend<BFP:mode><DFP_ALL:mode>2", "extend<DFP_ALL:mode><BFP:mode>2"):
11966         Expanders added.
11967
11968 2007-05-10  Zdenek Dvorak  <dvorakz@suse.cz>
11969
11970         PR tree-optimization/31885
11971         * tree-chrec.c (chrec_contains_undetermined): Do not consider
11972         NULL_TREE to be undetermined.
11973         (automatically_generated_chrec_p): Return false for NULL.
11974
11975 2007-05-08  Bernd Schmidt  <bernd.schmidt@analog.com>
11976
11977         * config/bfin/bfin.h (MOVE_RATIO): Define.
11978
11979 2007-05-10  Richard Sandiford  <richard@codesourcery.com>
11980
11981         * config.gcc (sparc-wrs-vxworks): New target.
11982         * config/sparc/vxworks.h, config/sparc/t-vxworks: New files.
11983         * config/sparc/sparc-protos.h (sparc_emit_call_insn): Declare.
11984         * config/sparc/sparc.h: Include vxworks-dummy.h.
11985         (PRINT_OPERAND_ADDRESS): Extend SYMBOL_REF handling to
11986         include LABEL_REFs too.
11987         * config/sparc/sparc.c (sparc_expand_move): Don't assume that
11988         _GLOBAL_OFFSET_TABLE_ - label_ref is a link-time constant on
11989         VxWorks.
11990         (legitimize_pic_address): Handle LABEL_REFs like SYMBOL_REFs
11991         on VxWorks.
11992         (load_pic_register): Use gen_vxworks_load_got for VxWorks.
11993         (sparc_emit_call_insn): New function.
11994         (sparc_function_ok_for_sibcall): Restrict sibcalls to locally-binding
11995         functions when generating VxWorks PIC.
11996         * config/sparc/sparc.md (vxworks_load_got): New pattern.
11997         (call, call_value): Use sparc_emit_call_insn instead of
11998         emit_call_insn.
11999
12000 2007-05-09  Bob Wilson  <bob.wilson@acm.org>
12001
12002         * config/xtensa/xtensa.c (xtensa_output_literal): Don't use #if.
12003
12004 2007-05-09  Bob Wilson  <bob.wilson@acm.org>
12005
12006         * config/xtensa/xtensa.c (xtensa_output_literal): Mask out high bits
12007         for floating-point values if HOST_BITS_PER_LONG > 32.  Use
12008         split_double instead of operand_subword.
12009
12010 2007-05-08  Bernd Schmidt  <bernd.schmidt@analog.com>
12011
12012         * config/bfin/bfin.h (LOCAL_ALIGNMENT): Define.
12013         * config/bfin/bfin.c (bfin_local_alignment): New function.
12014         * config/bfin/bfin-protos.h (bfin_local_alignment): Declare it.
12015
12016 2007-05-08  Chao-ying Fu  <fu@mips.com>
12017
12018         * doc/md.texi (msub@var{m}@var{n}4, usub@var{m}@var{n}4): Document.
12019         * optabs.h (OTI_smsub_widen, OTI_umsub_widen): New optab_indexes.
12020         (smsub_widen_optab, umsub_widen_optab): Define.
12021         * optabs.c (init_optabs): Initialize smsub_widen_optab and
12022         umsub_widen_optab.
12023         * genopinit.c (optabs): Fill in smsub_widen_optab and
12024         umsub_widen_optab.
12025         * expr.c (expand_expr_real_1): Try to use smsub_widen_optab
12026         and umsub_widen_optab to implement multiply-subtract sequences.
12027         * config/mips/mips.md (*msac<u>_di): Rename to...
12028         (<u>msubsidi4): ...this.  Extend condition to include
12029         GENERATE_MADD_MSUB and TARGET_DSPR2.  Change the constraint
12030         of operand 0 to "ka" and use the three-operand form of msub<u>
12031         for TARGET_DSPR2.
12032         * config/mips/mips-dspr2.md (mips_msub, mips_msubu): Convert
12033         to define_expands.
12034
12035 2007-05-08  Kaz Kojima  <kkojima@gcc.gnu.org>
12036
12037         PR rtl-optimization/28011
12038         * reload.c (push_reload): Set dont_share if IN appears in OUT
12039         also when IN is a PLUS rtx.
12040         (reg_overlap_mentioned_for_reload_p): Return true if X and IN
12041         are same PLUS rtx.
12042
12043 2007-05-08  Kazu Hirata  <kazu@codesourcery.com>
12044
12045         * emit-rtl.c (unshare_all_rtl_1): Don't copy DECL_RTL.  Don't
12046         call unshare_all_decls.
12047         (unshare_all_rtl): Adjust the call to unshare_all_rtl_1.
12048         (unshare_all_decls): Remove.
12049
12050 2007-05-08  Simon Martin  <simartin@users.sourceforge.net>
12051
12052         PR 31847
12053         * tree-dump.c (dump_options): Don't use TDF_DIAGNOSTIC in "*-all" tree
12054         dumps.
12055
12056 2007-05-08  Sandra Loosemore  <sandra@codesourcery.com>
12057             Nigel Stephens  <nigel@mips.com>
12058
12059         * config/mips/mips.h (MAX_FPRS_PER_FMT): Renamed from FP_INC.
12060         Update comments and all uses.
12061         (MIN_FPRS_PER_FMT): Define.
12062         * config/mips/mips.c (function_arg): Fix to correctly handle
12063         the -mips32r2 -mfp64 -mabi=32 case.
12064         (override_options): Enable use of odd-numbered registers for
12065         SFmode values on MIPS32.
12066         (mips_save_reg_p): Save whole floating-point register pair if
12067         either half is used.
12068         (compute_frame_size): Fix comment.
12069
12070 2007-05-08  Jie Zhang  <jie.zhang@analog.com>
12071
12072         * config/bfin/bfin-protos.h (bfin_expand_epilogue): Add a third
12073         argument of type bool.
12074         * config/bfin/bfin.c (add_to_reg): Add epilogue_p as a fourth
12075         argument. Safely select temporary P register according to it.
12076         (do_link): Change call site of add_to_reg accordingly.
12077         (do_unlink): Add epilogue_p as a fourth argument and pass it
12078         to add_to_reg.
12079         (expand_interrupt_handler_epilogue): Change call of do_unlink
12080         accordingly.
12081         (bfin_expand_prologue): Add a third argument sibcall_p.
12082         * config/bfin/bfin.md (epilogue): Change call of
12083         bfin_expand_epilogue accordingly.
12084         (sibcall_epilogue): Likewise.
12085         (eh_return_internal): Likewise.
12086
12087         * config/bfin/bfin-protos.h (enum bfin_cpu): Add
12088         BFIN_CPU_BF534, BFIN_CPU_BF536 and BFIN_CPU_BF561.
12089         * config/bfin/bfin.c (bfin_handle_option): Handle
12090         -mcpu=bf534, -mcpu=bf536 and -mcpu=bf561.
12091         * config/bfin/bfin.h (TARGET_CPU_CPP_BUILTINS):
12092         Support bf534, bf536 and bf561.
12093         * doc/invoke.texi (Blackfin Options): Document -mcpu and -msim.
12094
12095 2007-05-08  Uros Bizjak  <ubizjak@gmail.com>
12096
12097         PR target/31854
12098         * config/i386/i386.c (ix86_function_regparm): Process local
12099         functions only when TREE_CODE (decl) equals FUNCTION_DECL.
12100
12101 2007-05-07  Mike Stump  <mrs@apple.com>
12102
12103         * doc/invoke.texi (Warning Options): Document that -Wempty-body
12104         also checks for and while statements in C++.
12105
12106 2007-05-07  Nathan Froyd  <froydnj@codesourcery.com>
12107
12108         * gcc.c (at_file_supplied): New variable.
12109         (main): Set it if we expanded argv.
12110         (do_spec_1): Pass an @-file to the linker if we were called with
12111         an @-file argument and HAVE_GNU_LD.
12112         * collect2.c (at_file_supplied): New variable.
12113         (response_file): New variable.
12114         (collect_exit): Unlink response_file if necessary.
12115         (handler): Likewise.
12116         (do_wait): Likewise.
12117         (main): Set at_file_supplied if we expanded argv.
12118         (collect_execute): Pass an @-file to subprocesses if we were called
12119         with an @-file argument.
12120         * configure.ac: Add define for HAVE_GNU_LD.
12121         * configure: Regenerate.
12122         * config.in: Regenerate.
12123
12124 2007-05-07  Naveen.H.S  <naveen.hs@kpitcummins.com>
12125
12126         * config/m32c/muldiv.md (mulhisi3_c): Limit the mode of the 2nd
12127         operand to HI mode.
12128         (mulsi3): New.
12129         (divsi3): New.
12130         (udivsi3): New.
12131
12132 2007-05-07  Jayant Sonar  <jayants@kpitcummins.com>
12133
12134         * config/m32c/m32c.c (SYMBOL_FLAG_FUNCVEC_FUNCTION): Define.
12135         (TARGET_ENCODE_SECTION_INFO): Re-define.
12136         (m32c_encode_section_info): New
12137         (function_vector_handler): New
12138         (current_function_special_page_vector): New
12139         (m32c_special_page_vector_p): New.
12140         * config/m32c/m32c-protos.h (m32c_special_page_vector_p):
12141         Prototype.
12142         * config/m32c/jump.md: Added instruction JSRS for functions
12143         with attribute "function_vector".
12144         * doc/extend.texi (function_vector): Added description
12145         for M16C, M32C targets.
12146
12147 2007-05-07  DJ Delorie  <dj@redhat.com>
12148
12149         PR 31794
12150         * config/m32c/shift.md (ashlpsi3_i, ashrpsi3_i, ashlpsi3,
12151         ashrpsi3, lshrpsi3): Update shift count constraint.
12152
12153 2007-05-07  Danny Smith  <dannysmith@users.sourceforge.net>
12154             Nathan Froyd  <froydnj@codesourcery.com>
12155
12156         PR 22133
12157         * c-incpath.c (add_path): Strip trailing path separators.
12158
12159 2007-05-07  Eric Botcazou  <ebotcazou@adacore.com>
12160
12161         * tree-ssa-dom.c (tree_ssa_dominator_optimize): Reset cfg_altered.
12162         Free dominance info before purging EH edges.
12163         (eliminate_degenerate_phis): Likewise.
12164         (propagate_rhs_into_lhs): Set cfg_altered to true instead of 1.
12165
12166 2007-05-07  Jan Hubicka  <jh@suse.cz>
12167
12168         * gimplify.c (gimplify_expr): Do not crash when folding
12169         (void *)(int)&a + 4.
12170
12171 2007-05-07  Francois-Xavier Coudert  <fxcoudert@gcc.gnu.org>
12172
12173         PR driver/31694
12174         * c-opts.c (lang_fortran): Make it non static.
12175         * c-common.h (lang_fortran): New prototype.
12176         * c-cppbuiltin.c (c_cpp_builtins): Create a __GFORTRAN__ if the
12177         -lang-fortran option was passed by the driver.
12178
12179 2007-05-06  Eric Botcazou  <ebotcazou@adacore.com>
12180
12181         * timevar.c (timevar_print): Test ENABLE_ASSERT_CHECKING instead
12182         of ASSERT_CHECKING.  Tweak message.
12183
12184 2007-05-06  Revital Eres  <eres@il.ibm.com>
12185
12186         PR 30957
12187         * loop-unroll.c (insert_var_expansion_initialization):
12188         Initialize the expansions with -zero instead of +zero.
12189
12190 2007-05-05  Aurelien Jarno  <aurelien@aurel32.net>
12191
12192         * config/pa/pa.md: Split tgd_load, tld_load and tie_load
12193         into pic and non-pic versions. Mark r19 as used for
12194         tgd_load_pic, tld_load_pic and tie_load_pic. Mark r27 as used
12195         for tgd_load, tld_load and tie_load .
12196         * config/pa/pa.c (legitimize_tls_address): Emit pic or non-pic
12197         version of tgd_load, tld_load and tie_load depending on the
12198         value of flag_pic.
12199
12200 2007-05-04  Ulrich Drepper  <drepper@redhat.com>
12201             Jakub Jelinek  <jakub@redhat.com>
12202
12203         * crtstuff.c (HIDDEN_DTOR_LIST_END): New macro.
12204         (__do_global_dtors_aux): Use more paranoid loop to run
12205         destructors if HIDDEN_DTOR_LIST_END.
12206         (__DTOR_END__): Export as a hidden symbol when HIDDEN_DTOR_LIST_END.
12207
12208 2007-05-04  Jakub Jelinek  <jakub@redhat.com>
12209
12210         * varasm.c (align_variable): Don't increase alignment for
12211         DECL_THREAD_LOCAL_P variables above BITS_PER_WORD through
12212         DATA_ALIGNMENT or CONSTANT_ALIGNMENT.
12213
12214 2007-05-04  Josh Conner  <jconner@apple.com>
12215
12216         * basic-block.h (cdi_direction): Assign values to all enumeration
12217         constants.
12218         (dom_computed): Remove.
12219         (dom_info_state): New.
12220         (set_dom_info_availability): New.
12221         * tree-ssa-loop-im.c (determine_invariantness): Initialize
12222         walk_data.dom_direction.
12223         * cfghooks.c (delete_basic_block): Use dom_info_available_p()
12224         instead of dom_computed[].
12225         (split_edge): Likewise.
12226         (create_basic_block): Likewise.
12227         (merge_blocks): Likewise.
12228         * ifcvt.c (find_if_header): Likewise.
12229         * tree-cfgcleanup.c (cleanup_tree_cfg): Likewise.
12230         * tree-ssa-dce.c (remove_dead_stmt): Likewise.
12231         * tree-ssa.c (verify_ssa): Likewise.
12232         * tree-cfg.c (tree_verify_flow_info): Likewise.
12233         (remove_edge_and_dominated_blocks): Likewise.
12234         * dominance.c (dom_computed): Make static.
12235         (calc_dfs_tree_nonrec): Change third param to a bool.
12236         (calc_dfs_tree): Change second param to a bool.
12237         (calc_idioms): Change second param to a bool.  Use
12238         dom_convert_dir_to_idx.
12239         (init_dom_info): Validate dir before using.
12240         (dom_convert_dir_to_idx): New.
12241         (calculate_dominance_info): Use dom_convert_dir_to_idx.  New
12242         variable 'reverse' used for calling calc_dfs_tree and calc_idoms.
12243         (free_dominance_info): Use dom_convert_dir_to_idx.
12244         (get_immediate_dominator): Likewise.
12245         (set_immediate_dominator): Likewise.
12246         (get_dominated_by): Likewise.
12247         (redirect_immediate_dominators): Likewise.
12248         (nearest_common_denominator): Likewise.
12249         (dominated_by_p): Likewise.
12250         (bb_dom_dfs_in): Likewise.
12251         (bb_dom_dfs_out): Likewise.
12252         (recount_dominator): Likewise.
12253         (iterate_fix_dominators): Likewise.
12254         (add_to_dominance_info): Likewise.
12255         (delete_from_dominance_info): Likewise.
12256         (first_dom_son): Likewise.
12257         (next_dom_son): Likewise.
12258         (dom_info_available_p): Likewise.
12259         (dom_info_state): New.
12260         (set_dom_info_availability): New.
12261
12262 2007-05-04  Andreas Krebbel  <krebbel1@de.ibm.com>
12263
12264         * config/s390/s390.md ("fix_trunc<mode>di2", "fix_trunc<mode>si2"):
12265         Expander removed.
12266         ("fix_trunc<DSF:mode><GPR:mode>2"): Expander added.
12267
12268 2007-05-04  Bob Wilson  <bob.wilson@acm.org>
12269
12270         * config/xtensa/xtensa.md (adddi3, adddi_carry): Delete.
12271         (subdi3, subdi_carry): Delete.
12272
12273 2007-05-04  Jan Hubicka  <jh@suse.cz>
12274             Richard Guenther  <rguenther@suse.de>
12275
12276         * opts.c (decode_options): Do not fiddle with inlining
12277         parameters in case of optimizing for size.
12278         * ipa-inline.c (cgraph_decide_recursive_inlining): When optimizing
12279         for size do nothing.
12280         (cgraph_decide_inlining_of_small_function): When optimizing for
12281         size never inline functions increasing caller size.
12282         (cgraph_early_inlining): Inline for size when optimizing for size.
12283
12284 2007-05-04  Bernd Schmidt  <bernd.schmidt@analog.com>
12285
12286         * config/bfin/bfin.md (<optab>di3): Now a define_expand which expands
12287         logical operations piecewise.
12288         (<optab>di_zesidi_di, <optab>di_sesidi_di, negdi2, one_cmpldi2,
12289         zero_extendsidi2, subdi_di_zesidi, subdi_zesidi_di, subdi_di_sesidi,
12290         subdi_sesidi_di): Delete.
12291         (add_with_carry): Produce carry in CC instead of a DREG to shorten
12292         the generated sequence.  Allow three-reg add in constraints.  Rewrite
12293         the rtl expression for carry to avoid zero_extend of a constant.
12294         (sub_with_carry): New pattern.
12295         (adddi3, subdi3): Change into define_expand.  For subtract, generate a
12296         different sequence not involving jumps.
12297         (notbi): Now a named pattern.
12298
12299 2007-05-04  Bradley Lucier  <lucier@math.purdue.edu>
12300
12301         * doc/invoke.texi (i386 and x86-64 Options) [-mpc32, -mpc64, -mpc80]:
12302         Add the note about a significant loss of accuracy of some
12303         mathematical routines when these options are used.
12304
12305 2007-05-04  Maxim Kuvyrkov  <mkuvyrkov@ispras.ru>
12306
12307         * haifa-sched.c (rtx_vec_t): New typedef.
12308         (contributes_to_priority_p): Extract piece of priority () into new
12309         static function.
12310         (priority): Use the function.  Add assertion.
12311         (rank_for_schedule, set_priorities): Add assertion to check that
12312         insn's priority is initialized.
12313         (clear_priorities, calc_priorities): Change signature.  Make it update
12314         all relevant insns.  Update all callers ('add_to_speculative_block ()'
12315         and 'create_block_check_twin ()').
12316         * sched-int.h (struct haifa_insn_data): Remove field 'priority_known'.
12317         Add new field 'priority_status'.
12318         (INSN_PRIORITY_STATUS): New macro.
12319         (INSN_PRIORITY_KNOWN): Change to use INSN_PRIORITY_STATUS.
12320
12321 2007-05-04  Maxim Kuvyrkov  <mkuvyrkov@ispras.ru>
12322
12323         * sched-ebb.c (debug_ebb_dependencies): New static function.
12324         (init_ready_list): Use it.
12325
12326         * sched-rgn.c (debug_dependencies): Split into 'debug_dependencies ()'
12327         with changed signature and 'debug_rgn_dependencies ()'.
12328         (debug_rgn_dependencies): New static function.
12329         (init_ready_list): Use it.
12330
12331         * sched-int.h (debug_dependencies): Declare.
12332
12333 2007-05-04  Andreas Krebbel  <krebbel1@de.ibm.com>
12334
12335         * libgcc-std.ver (__ffssi2): Added to GCC_4.3.0 section.
12336
12337 2007-05-04  Dirk Mueller  <dmueller@suse.de>
12338
12339         * c.opt(Wmain,ffreestanding): Enable for C++,ObjC++.
12340
12341 2007-05-03  Jan Hubicka  <jh@suse.cz>
12342
12343         * fold-const.c (fold_unary): Convert (T1)(X op Y) into
12344         ((T1)X op (T1)Y), for pointer type in more cases than before.
12345
12346         * gimplify.c (gimplify_expr): Fold (void *)&a + 4.
12347
12348         * tree-object-size.c (plus_expr_object_size): When operand size is
12349         unknown, return unknown.
12350
12351 2007-05-03  Dirk Mueller  <dmueller@suse.de>
12352
12353         * doc/invoke.texi (-m386,-m486,-mpentium,-mpentiumpro): Remove.
12354
12355         * config/i386/i386.h (CC1_CPU_SPEC): Remove handling for deprecated
12356         options.
12357
12358         * config/i386/i386.opt (m386,m486,mpentium,mpentiumpro): Remove.
12359
12360 2007-05-03  Janis Johnson  <janis187@us.ibm.com>
12361
12362         * doc/sourcebuild.texi (Test Directives) Clarify dg-excess-errors.
12363
12364 2007-05-03  Joseph Myers  <joseph@codesourcery.com>
12365
12366         * config/soft-fp/double.h, config/soft-fp/extended.h,
12367         config/soft-fp/floatundidf.c, config/soft-fp/floatundisf.c,
12368         config/soft-fp/floatunsidf.c, config/soft-fp/floatunsisf.c,
12369         config/soft-fp/op-2.h, config/soft-fp/op-4.h,
12370         config/soft-fp/op-common.h, config/soft-fp/quad.h: Update from
12371         glibc CVS.
12372
12373 2007-05-03  Ian Lance Taylor  <iant@google.com>
12374
12375         * config/rs6000/rs6000.c (rs6000_override_options): Don't set
12376         MASK_PPC_GFXOPT for 8540 or 8548.
12377
12378 2007-05-03  Uros Bizjak  <ubizjak@gmail.com>
12379
12380         * tree-vect-transform.c (vect_update_inits_of_drs): Use
12381         vect_print_dump_info() to output debug information.
12382
12383 2007-05-03  Uros Bizjak  <ubizjak@gmail.com>
12384
12385         PR target/31768
12386         * config/i386/i386.c (print_operand) ['z']: Output 'w' for
12387         operands of size 2 when operand is not MEM_P.
12388
12389 2007-05-03  Zdenek Dvorak  <dvorakz@suse.cz>
12390
12391         PR tree-optimization/30565
12392         * lambda-code.c (perfect_nestify): Fix updating of dominators.
12393
12394 2007-05-03  Bernd Schmidt  <bernd.schmidt@analog.com>
12395
12396         * config/bfin/bfin.md (addpdi3, us_truncpdisi2): New patterns.
12397         (umulsi3_highpart): Use them.
12398         * config/bfin/lib1funcs.asm (__umulsi3_highpart): Use unsigned move
12399         for final accumulator to D regisster tranfser.
12400
12401 2007-05-03  Dorit Nuzman  <dorit@il.ibm.com>
12402
12403         PR tree-optimization/31699
12404         * tree-vect-analyze.c (vect_update_misalignment_for_peel): Remove
12405         wrong code.
12406         (vect_enhance_data_refs_alignment): Compute peel amount using
12407         TYPE_VECTOR_SUBPARTS instead of vf.
12408         * tree-vect-transform.c (vect_gen_niters_for_prolog_loop): Likewise.
12409
12410 2007-05-02  Brooks Moses  <brooks.moses@codesourcery.com>
12411
12412         PR bootstrap/31776
12413         * system.h: Remove inclusion of double-int.h
12414         * tree.h: Include double-int.h
12415         * gengtype.c: Likewise
12416         * cfgloop.h: Likewise
12417         * Makefile.in: Adjust dependencies on double-int.h
12418
12419 2007-05-02  Eric Christopher  <echristo@apple.com>
12420
12421         * config/darwin.h (TARGET_OPTION_TRANSLATE_TABLE): Translate
12422         -shared to -Zdynamiclib.
12423
12424 2007-05-02  Seongbae Park  <seongbae.park@gmail.com>
12425
12426         PR c++/31663
12427         * c-common.c (strip_pointer_or_array_types): New function.
12428         * c-common.h (strip_pointer_or_array_types): New function declaration.
12429
12430 2007-05-03  Zdenek Dvorak  <dvorakz@suse.cz>
12431
12432         PR tree-optimization/31771
12433         * tree-cfg.c (move_block_to_fn): Assign bb to the correct index.
12434
12435 2007-05-02  Paul Brook  <paul@codesourcery.com>
12436
12437         * config/arm/bpabi.S (aeabi_lcmp): Fix result on overflow.
12438
12439 2007-05-02  Andrew Pinski  <andrew_pinski@playstation.sony.com>
12440
12441         PR middle-end/29715
12442         * fold-const.c (fold_comparision): Remove the "foo++ == CONST"
12443         transformation.
12444
12445 2007-05-02  Nick Clifton  <nickc@redhat.com>
12446
12447         * config/frv/predicates.md (symbolic_operand): Accept CONSTs.
12448
12449 2007-05-02  Richard Guenther  <rguenther@suse.de>
12450
12451         PR tree-optimization/31146
12452         * tree-ssa-forwprop.c (forward_propagate_addr_expr_1): New
12453         argument, single_use_p.  If we have a single use that is
12454         a conversion to the definition rhs type, propagate that rhs.
12455         (forward_propagate_addr_expr): Pass single_use_p argument
12456         to forward_propagate_addr_expr_1.
12457
12458 2007-05-01  H.J. Lu  <hongjiu.lu@intel.com>
12459
12460         * config/i386/i386.c (ix86_expand_sse_comi): Remove unused
12461         variable.
12462
12463 2007-05-01  Dwarakanath Rajagopal <dwarak.rajagopal@amd.com>
12464
12465         * doc/invoke.texi: Fix typo, 'AMD Family 10h core' instead of
12466         'AMD Family 10 core'.
12467
12468 2007-05-01  Dwarakanath Rajagopal <dwarak.rajagopal@amd.com>
12469
12470         * config/i386/i386.c (override_options): Accept k8-sse3, opteron-sse3
12471         and athlon64-sse3 as improved versions of k8, opteron and athlon64
12472         with SSE3 instruction set support.
12473         * doc/invoke.texi: Likewise.
12474
12475 2007-05-01  Dwarakanath Rajagopal <dwarak.rajagopal@amd.com>
12476
12477         * config/i386/i386.c (override_options): Tuning 32-byte loop
12478         alignment for amdfam10 architecture. Increasing the max loop
12479         alignment to 24 bytes.
12480
12481 2007-05-01  Kazu Hirata  <kazu@codesourcery.com>
12482
12483         * config/m68k/constraints.md: New.
12484         * config/m68k/m68k.h (REG_CLASS_FROM_LETTER,
12485         CONST_OK_FOR_LETTER_P, CONST_DOUBLE_OK_FOR_LETTER_P,
12486         EXTRA_CONSTRAINT): Remove.
12487         * config/m68k/m68k.md: Include constraints.md.
12488         * expr.c (expand_expr_real_1): Copy DECL_RTL before using it.
12489
12490 2007-05-01  Ian Lance Taylor  <iant@google.com>
12491
12492         PR tree-optimization/31739
12493         * tree-vrp.c (vrp_val_is_max): New static function.
12494         (vrp_val_is_min): New static function.
12495         (set_value_range_to_value): Use TYPE_{MAX,MIN}_VALUE rather than
12496         copying the node.
12497         (set_value_range): Use vrp_val_is_{max,min}.
12498         (extract_range_from_assert): Likewise.
12499         (extract_range_from_binary_expr): Likewise.
12500         (extract_range_from_unary_expr): Likewise.
12501         (dump_value_range, vrp_meet): Likewise.
12502         (vrp_visit_phi_node): Likewise.
12503         * tree.c (build_distinct_type_copy): Revert change of 2007-04-27.
12504
12505 2007-05-01  Mark Mitchell  <mark@codesourcery.com>
12506
12507         * config/i386/gmon-sol2.c (size_t): New type.
12508         (intptr_t): Likewise.
12509         (s_textsize): Declare as size_t.
12510         (sbrk): Declare.
12511         (monstartup): Use size_t for sizes.
12512         (_mcount): Save and restore registers.
12513         (internal_mcount): Pass 0 as the first argument to monstartup
12514         in 64-bit mode.
12515         (moncontrol): Convert pointer to appropriately sized integer
12516         before passing to profil.
12517
12518 2007-05-01  Joseph Myers  <joseph@codesourcery.com>
12519
12520         * config/rs6000/darwin-ldouble.c (__gcc_qunord): Define if
12521         __NO_FPRS__, not just if _SOFT_DOUBLE.
12522         * config/rs6000/libgcc-ppc-glibc.ver (__gcc_qunord): Likewise.
12523         * config/rs6000/rs6000.c (rs6000_init_libfuncs): Use __gcc_qunord
12524         also for E500 double.
12525         * config/rs6000/rs6000.md (buneq, bunge, bungt, bunle, bunlt,
12526         suneq, sunge, sungt, sunle, sunlt): Disable for (TARGET_HARD_FLOAT
12527         && !TARGET_FPRS).
12528
12529 2007-05-01  Richard Guenther  <rguenther@suse.de>
12530
12531         * tree-ssa-loop-manip.c (ip_normal_pos): Check if last stmt
12532         is NULL.
12533
12534 2007-05-01  Joseph Myers  <joseph@codesourcery.com>
12535
12536         * config/rs6000/libgcc-ppc-glibc.ver (__gcc_qgt): Fix typo.
12537
12538 2007-05-01  Jan Hubicka  <jh@suse.cz>
12539
12540         * tree-vectorize.c (vect_is_simple_use): gimple_min_invariant is
12541         invariant.
12542
12543 2007-05-01  Jan Hubicka  <jh@suse.cz>
12544
12545         * tree.h (maybe_fold_offset_to_component_ref): Remove.
12546         (maybe_fold_offset_to_reference): Declare.
12547         * fold-const.c (fold_unary): Do not fold
12548         (type *)&A into &A->field_of_type_and_offset_0
12549         * tree-ssa-ccp.c (maybe_fold_offset_to_array_ref): When base type
12550         size is unknown, give up.
12551         (maybe_fold_offset_to_component_ref): Ignore firelds with unknown
12552         offsets.
12553         (maybe_fold_offset_to_reference): New.
12554         (maybe_fold_stmt_indirect): Use it.
12555         (fold_stmt_r): Fold (type *)&A+offset into A->field_if_type_and_offset.
12556         * gimplify.c (gimplify_conversion): Canonicalize conversions to
12557         field references.
12558         (gimplify_expr): Likewise for plus_expr.
12559
12560 2007-05-01  Zdenek Dvorak  <dvorakz@suse.cz>
12561
12562         * tree-ssa-loop-ivopts.c (rewrite_use_nonlinear_expr): Use
12563         bsi_after_labels.  Always insert statements before bsi.
12564         * tree-vect-transform.c (vect_create_epilog_for_reduction): Ditto.
12565         * predict.c (apply_return_prediction): Check for empty blocks.
12566         * cfgexpand.c (lab_rtx_for_bb): New variable.
12567         (label_rtx_for_bb): Do not create new tree labels.
12568         (expand_gimple_basic_block): Add labels recorded in lab_rtx_for_bb.
12569         (tree_expand_cfg): Initialize lab_rtx_for_bb.
12570         * tree-cfg.c (build_tree_cfg): Call cleanup_dead_labels after
12571         creating edges.
12572         (label_for_bb): Add field used.
12573         (update_eh_label, main_block_label): Mark the label used.
12574         (cleanup_dead_labels): Remove unused labels.
12575
12576 2007-05-01  Richard Guenther  <rguenther@suse.de>
12577
12578         * tree-vrp.c (set_value_range): Do not allocate equiv bitmap
12579         if it is not about to be set.
12580         (get_value_range): Do not pre-allocate equiv bitmap.
12581         (update_value_range): No need to clear equiv field.
12582         (add_equivalence): Change prototype to get bitmap pointer.
12583         Allocate bitmap here if it is not already.
12584         (extract_range_from_assert): Do not allocate bitmap here.
12585         Update callers to add_equivalence.
12586         (extract_range_from_ssa_name): Likewise.
12587         (get_vr_for_comparison): New static helper.
12588         (compare_name_with_value): Handle NULL equiv bitmap by
12589         peeling the first iteration of the comparison loop.
12590         Use get_vr_for_comparison.
12591         (compare_names): Handle NULL equiv bitmaps by using fake
12592         ones.  Use get_vr_for_comparison.
12593
12594 2007-04-30  Brooks Moses  <brooks.moses@codesourcery.com>
12595
12596         * double-int.c (mpz_set_double_int): Moved from
12597         tree-ssa-loop-niter.c.
12598         (mpz_get_double_int): Likewise; also, add option to wrap
12599         out-of-range integers.
12600         * double-int.h: New prototypes for above.
12601         * tree.c (get_static_type_bounds): Moved from
12602         tree-ssa-loop-niter.c; now returns TYPE_MIN_VALUE and
12603         TYPE_MAX_VALUE if they exist..
12604         * tree.h: New prototype for above.
12605         * tree-ssa-loop-niter.c: Adjust mpz_to_double_int and
12606         get_type_bounds calls.
12607         (mpz_set_double_int): Move to double-int.c.
12608         (get_type_bounds): Move to tree.c, rename to
12609         get_static_type_bounds.
12610         (mpz_to_double_int): Move to double-int.c, rename to
12611         mpz_get_double_int.
12612
12613 2007-04-30  Bob Wilson  <bob.wilson@acm.org>
12614
12615         * config/xtensa/lib1funcs.asm (__umodsi3, __modsi3): Rearrange so that
12616         DIV0 exception can fall through to a normal return.
12617
12618 2007-04-30  Alexandre Oliva  <aoliva@redhat.com>
12619
12620         PR middle-end/22156
12621         Temporarily revert:
12622         2007-04-06  Andreas Tobler  <a.tobler@schweiz.org>
12623         * tree-sra.c (sra_build_elt_assignment): Initialize min/maxshift.
12624         2007-04-05  Alexandre Oliva  <aoliva@redhat.com>
12625         * tree-sra.c (try_instantiate_multiple_fields): Needlessly
12626         initialize align to silence bogus warning.
12627         2007-04-05  Alexandre Oliva  <aoliva@redhat.com>
12628         * tree-sra.c (struct sra_elt): Add in_bitfld_block.  Remove
12629         all_no_warning.
12630         (struct sra_walk_fns): Remove use_all parameter from use.
12631         (sra_hash_tree): Handle BIT_FIELD_REFs.
12632         (sra_elt_hash): Don't hash bitfld blocks.
12633         (sra_elt_eq): Skip them in parent compares as well.  Handle
12634         BIT_FIELD_REFs.
12635         (sra_walk_expr): Don't maintain or pass down use_all_p.
12636         (scan_use): Remove use_all parameter.
12637         (scalarize_use): Likewise.  Re-expand assignment to
12638         BIT_FIELD_REF of gimple_reg.  De-scalarize before input or
12639         output, and re-scalarize after output.  Don't mark anything
12640         for no warning.
12641         (scalarize_ldst): Adjust.
12642         (scalarize_walk_gimple_modify_statement): Likewise.
12643         (build_element_name_1): Handle BIT_FIELD_REFs.
12644         (instantiate_element): Don't warn for any element whose parent
12645         is used as a whole.
12646         (instantiate_missing_elements_1): Return the sra_elt.
12647         (canon_type_for_field): New.
12648         (try_instantiate_multiple_fields): New.
12649         (instantiate_missing_elemnts): Use them.
12650         (mark_no_warning): Removed.
12651         (generate_one_element_ref): Handle BIT_FIELD_REFs.
12652         (REPLDUP, sra_build_elt_assignment): New.
12653         (generate_copy_inout): Use them.
12654         (generate_element_copy): Likewise.  Handle bitfld differences.
12655         (generate_element_zero): Don't recurse for blocks.  Use
12656         sra_build_elt_assignment.
12657         (generate_one_element_int): Take elt instead of var.  Use
12658         sra_build_elt_assignment.
12659         (generate_element_init_1): Adjust.
12660         (scalarize_use, scalarize_copy): Use REPLDUP.
12661         (scalarize_ldst): Move assert before dereference.
12662         (dump_sra_elt_name): Handle BIT_FIELD_REFs.
12663
12664 2007-04-30  Andrew Pinski  <andrew_pinski@playstation.sony.com>
12665
12666         PR C++/31721
12667         * tree.c (reconstruct_complex_type): Reconstruct a reference
12668         correctly.
12669         Also use the same mode for the pointer as the old pointer type.
12670
12671 2007-04-30  Francois-Xavier Coudert  <coudert@clipper.ens.fr>
12672
12673         * doc/trouble.texi (Interoperation): Remove note about Ultrix
12674         Fortran compiler.
12675
12676 2007-04-29  Zdenek Dvorak  <dvorakz@suse.cz>
12677
12678         PR rtl-optimization/31676
12679         * df-scan.c (record_nonlocal_goto_receiver_defs): New function.
12680         (df_refs_record): Call it.
12681
12682 2007-04-29  Bernd Schmidt  <bernd.schmidt@analog.com>
12683
12684         * rtl.def (SS_ABS): New code.
12685         * config/bfin/bfin.c (print_operand): New modifier 'v'.
12686         (enum bfin_builtins): Add BFIN_BUILTIN_SUM_2X16, BFIN_BUILTIN_ABS_1x32,
12687         BFIN_BUILTIN_ROUND_1x32, BFIN_BUILTIN_MULT_1x32x32,
12688         BFIN_BUILTIN_MULT_1x32x32NS, BFIN_BUILTIN_SSASHIFT_1x32.
12689         (bfin_init_builtins): Define them.
12690         (bdesc_1arg, bdesc_2arg): Add some of them here, ...
12691         (bfin_expand_builtin): ... and handle the others here.
12692         * config/bfin/bfin.md (ssabssi2, ssroundsi2, ssashiftsi3,
12693         flag_mul_macv2hi_parts_acconly_andcc0): New patterns.
12694         (ss_absv2hi2): Renamed from absv2hi; use ss_abs code.
12695         (ssashiftv2hi3, ssashifthi3, lshiftv2hi3, lshifthi3): Shift count
12696         operand is only HImode.
12697
12698 2007-04-29  Steven Bosscher  <steven@gcc.gnu.org>
12699
12700         * regclass.c (scan_one_insn): Remove splitting of
12701         two address insns.
12702
12703 2007-04-28  Sandra Loosemore  <sandra@codesourcery.com>
12704             Nigel Stephens  <nigel@mips.com>
12705
12706         * config/mips/mips.h (SLOW_BYTE_ACCESS): Turn off for MIPS16.
12707
12708 2007-04-28  Jan Hubicka  <jh@suse.cz>
12709
12710         * config/alpha/alpha.c (alpha_output_mi_thunk_osf): Use
12711         insn_locators_alloc instead of insn_locators_initialize;
12712         call reset_block_changes.
12713         * config/sparc/sparc.c (sparc_output_mi_thunk): Likewise.
12714         * config/sh/sh.c (sparc_output_mi_thunk): Likewise.
12715         * config/is64/ia64.c (ia64_output_mi_thunk): Likewise.
12716         * config/rs6000/rs6000.c (rs6000_output_mi_thunk): Likewise.
12717         * config/score/score.c (th_output_mi_thunk): Likewise.
12718         * config/mips/mips.c (mips_output_mi_thunk): Likewise.
12719         * cfglyaout.c (set_curr_insn_source_location, set_curr_insn_block):
12720         tolerate uninitialized locator info.
12721
12722         Re-apply:
12723         * function.c (init_function_start): Don't init line number info.
12724         (expand_function_end): Update.
12725         (reset_block_changes, record_block_change, finalize_block_changes,
12726         check_block_change, free_block_changes): Kill.
12727         * function.h (reset_block_changes, record_block_change,
12728         finalize_block_changes, check_block_change, free_block_changes):
12729         Remove prototypes.
12730         (struct function): Remove ib_boundaries_block.
12731         * emit-rtl.c (make_insn_raw, make_jump_insn_raw, make_call_insn_raw):
12732         Use curr_insn_locator to initialize locator.
12733         (emit_line_note): Remove.
12734         * cfgexpand.c (expand_gimple_cond_expr): Update.
12735         (construct_exit_block): Likewise.
12736         (tree_expand_cfg): Initialize/finalize locators.
12737         * expr.c (expand_expr_real): Update.
12738         * cfglayout.c (line_locators_locs, line_locators_lines,
12739         file_locators_locs, file_locators_files): Remove.
12740         (set_block_levels): Move to cfgexpand.c.
12741         (insn_locators_initialize): Remove.
12742         (pass_insn_locators_initialize): Remove.
12743         (locations_locators_locs, locations_locators_vals): New static vars.
12744         (curr_location, last_location, curr_block, last_block, curr_rtl_loc):
12745         Likewise.
12746         (insn_locators_alloc, insn_locators_finalize,
12747         set_curr_insn_source_location, set_curr_insn_block, curr_insn_locator):
12748         New functions.
12749         (locator_location): New.
12750         (locator_line, locator_file): Rewrite.
12751         * rtl.h (emit_line_note): Kill.
12752         (insn_locators_alloc, insn_locators_finalize,
12753         set_curr_insn_source_location, set_curr_insn_block, curr_insn_locator):
12754         Declare.
12755         * tree-inline.c (initialize_cfun): Do not initialize
12756         ib_boundaries_block.
12757         * passes.c (pass_insn_locators_initialize): Remove.
12758
12759 2007-04-28  Zdenek Dvorak  <dvorakz@suse.cz>
12760
12761         * tree-cfg.c (move_block_to_fn): Release bb from dominance
12762         info.  Update last_basic_block correctly.
12763
12764 2007-04-27  Kaz Kojima  <kkojima@gcc.gnu.org>
12765
12766         PR target/31701
12767         * config/sh/sh.c (output_stack_adjust): Avoid using the frame
12768         register itself to hold the offset constant.  Tell flow the use
12769         of r4 and r5 when they are used.
12770
12771 2007-04-27  Richard Guenther  <rguenther@suse.de>
12772
12773         * tree-ssa-forwprop.c (forward_propagate_into_cond): Keep track
12774         if we simplified anything.
12775         (tree_ssa_forward_propagate_single_use_vars): Defer overflow
12776         warnings until we did a simplification and the stmt was not
12777         marked as TREE_NO_WARNING.
12778
12779 2007-04-27  Mike Stump  <mrs@apple.com>
12780
12781         * config/rs6000/darwin.h (ALWAYS_PUSH_CONSTS_USING_REGS_P): Remove.
12782
12783 2007-04-27  Ian Lance Taylor  <iant@google.com>
12784
12785         PR middle-end/31710
12786         * tree.c (build_distinct_type_copy): If TYPE_MIN_VALUE or
12787         TYPE_MAX_VALUE exist, convert them to the new type.
12788
12789 2007-04-27  Zdenek Dvorak  <dvorakz@suse.cz>
12790
12791         * tree-cfgcleanup.c (cleanup_tree_cfg): Verify dominance info
12792         if it claims to be available.
12793         * tree-ssa-dce.c (remove_dead_stmt): Mark cfg as altered when
12794         edge is redirected.
12795         (perform_tree_ssa_dce): Always free postdominators.
12796
12797 2007-04-27  Richard Henderson  <rth@redhat.com>
12798
12799         * config/alpha/predicates.md (aligned_memory_operand): Mark
12800         as define_special_predicate.
12801         (unaligned_memory_operand, normal_memory_operand): Likewise.
12802         (reg_or_unaligned_mem_operand): Remove.
12803         (any_memory_operand): Match the documentation and check for
12804         non-renumbered pseudos during reload.
12805         * config/alpha/alpha.c (alpha_secondary_reload): Rename from
12806         alpha_secondary_reload_class, update to new interface, make static.
12807         Handle CQImode like HImode.  Remove FP subreg check.
12808         (alpha_expand_mov): Use replace_equiv_address.
12809         (alpha_expand_mov_nobwx): Use any_memory_operand.
12810         (TARGET_SECONDARY_RELOAD): New.
12811         * config/alpha/alpha.h (SECONDARY_INPUT_RELOAD_CLASS): Remove.
12812         (SECONDARY_OUTPUT_RELOAD_CLASS): Remove.
12813         * config/alpha/sync.md (I12MODE, I48MODE, modesuffix): Move ...
12814         * config/alpha/alpha.md: ... here.
12815         (RELOAD12, reloadmode): New.
12816         (movcqi): New.
12817         (reload_in<RELOAD12>): Macro-ize from reload_inqi, reload_inhi.
12818         Don't handle the aligned case here.
12819         (reload_out<RELOAD12>): Macro-ize from reload_outqi, reload_outhi.
12820         (reload_in<I12MODE>_aligned): Macro-ize from reload_inqi_help,
12821         reload_inhi_help.  Don't expect a scratch register.
12822         (reload_out<I12MODE>_aligned): Macro-ize from reload_outqi_help,
12823         reload_outhi_help.
12824         * config/alpha/alpha-protos.h (alpha_secondary_reload_class): Remove.
12825
12826 2007-04-27  Richard Guenther  <rguenther@suse.de>
12827
12828         * tree-ssa-forwprop.c (get_prop_dest_stmt): Fix comment typo.
12829
12830 2007-04-27  Richard Guenther  <rguenther@suse.de>
12831
12832         PR tree-optimization/30965
12833         PR tree-optimization/30978
12834         * Makefile.in (tree-ssa-forwprop.o): Depend on $(FLAGS_H).
12835         * tree-ssa-forwprop.c (forward_propagate_into_cond_1): Remove.
12836         (find_equivalent_equality_comparison): Likewise.
12837         (simplify_cond): Likewise.
12838         (get_prop_source_stmt): New helper.
12839         (get_prop_dest_stmt): Likewise.
12840         (can_propagate_from): Likewise.
12841         (remove_prop_source_from_use): Likewise.
12842         (combine_cond_expr_cond): Likewise.
12843         (forward_propagate_comparison): New function.
12844         (forward_propagate_into_cond): Rewrite to use fold for
12845         tree combining.
12846         (tree_ssa_forward_propagate_single_use_vars): Call
12847         forward_propagate_comparison to propagate comparisons.
12848
12849 2007-04-27  Richard Guenther  <rguenther@suse.de>
12850
12851         PR tree-optimization/31715
12852         * tree-ssa-ccp.c (maybe_fold_offset_to_array_ref): Make
12853         sure to do computation on the offset in an appropriate
12854         signed type.
12855
12856 2007-04-27  Richard Sandiford  <richard@codesourcery.com>
12857
12858         * reload.h (elimination_target_reg_p): Declare.
12859         * reload.c (find_reloads): Don't apply the reg_rtx move
12860         optimization if the SET_DEST satisfies elimination_target_reg_p.
12861         * reload1.c (elimination_target_reg_p): New function.
12862         (gen_reload): In the move/add2 fallback, make sure that op0
12863         does not overlap the destination register.
12864
12865 2007-04-27  Zdenek Dvorak  <dvorakz@suse.cz>
12866
12867         * tree-ssa-loop-im.c (determine_invariantness_stmt): Attempt to
12868         transform only GIMPLE_MODIFY_STMTs.
12869         * tree-complex.c (expand_complex_operations_1): Ditto.
12870         (expand_complex_div_wide): Do not create gotos in COND_EXPR branches.
12871         * tree-ssa-loop-manip.c (build_if_stmt): Removed.
12872         (tree_transform_and_unroll_loop): Do not create gotos in COND_EXPR
12873         branches.
12874         * value-prof.c (tree_divmod_fixed_value, tree_mod_pow2,
12875         tree_mod_subtract, tree_ic, tree_stringop_fixed_value): Ditto.
12876         * omp-low.c (expand_parallel_call, expand_omp_for_generic,
12877         expand_omp_for_static_chunk, expand_omp_for_static_nochunk): Ditto.
12878         * tree-vectorizer.c (slpeel_make_loop_iterate_ntimes,
12879         slpeel_add_loop_guard): Ditto.
12880         * tree-mudflap.c (mf_build_check_statement_for): Ditto.
12881         * lambda-code.c (perfect_nestify): Ditto.
12882         * tree-iterator.c (tsi_split_statement_list_before): Fix splitting
12883         before the first statement.
12884         * tree-optimize.c (execute_free_datastructures): Fix comments.
12885         (execute_free_cfg_annotations): Do not call disband_implicit_edges.
12886         * tree-flow.h (disband_implicit_edges): Declaration removed.
12887         * tree-cfg.c (make_cond_expr_edges): Remove gotos from COND_EXPR
12888         branches.
12889         (cleanup_dead_labels, tree_redirect_edge_and_branch): Handle
12890         COND_EXPRs without gotos.
12891         (disband_implicit_edges, has_label_p): Removed.
12892         (tree_verify_flow_info): Verify that COND_EXPR branches are empty.
12893         (tree_lv_add_condition_to_bb): Do not create gotos in COND_EXPR
12894         branches.
12895         * tree.c (build3_stat): Mark COND_EXPRs used as statements as having
12896         side effects.
12897         * tree-pretty-print.c (dump_implicit_edges): Dump implicit edges
12898         also for COND_EXPRs.
12899         * cfgexpand.c (label_rtx_for_bb): New function.
12900         (expand_gimple_cond_expr): Do not expect gotos in COND_EXPR branches.
12901         Use label_rtx_for_bb to find the labels.
12902         (expand_gimple_basic_block): Remove RETURN_EXPR at the end of the
12903         last block.  Detect fallthru edges.
12904
12905 2007-04-26  Ian Lance Taylor  <iant@google.com>
12906
12907         PR target/28675
12908         * reload.c (find_reloads_subreg_address): If the address was valid
12909         in the original mode but not in the new mode, reload the whole
12910         address.
12911
12912 2007-04-27  Zdenek Dvorak  <dvorakz@suse.cz>
12913
12914         * tree-cfgcleanup.c (cfgcleanup_altered_bbs): New global variable.
12915         (remove_fallthru_edge): Use remove_edge_and_dominated_blocks.
12916         (cleanup_control_expr_graph): Do not invalidate dominance info.
12917         Record altered blocks.
12918         (cleanup_control_flow, cleanup_forwarder_blocks): Removed.
12919         (cleanup_control_flow_bb, split_bbs_on_noreturn_calls,
12920         cleanup_tree_cfg_bb): New functions.
12921         (remove_forwarder_block): Do not maintain the worklist of blocks.
12922         Record altered blocks.
12923         (cleanup_tree_cfg_1): Iterate over cfgcleanup_altered_bbs,
12924         not over whole cfg.
12925         (cleanup_tree_cfg): Do not iterate cleanup_tree_cfg_1.  Only call
12926         delete_unreachable_blocks if dominators are not available.
12927         * tree-inline.c (optimize_inline_calls): Free dominance information
12928         earlier.
12929         * tree-flow.h (remove_edge_and_dominated_blocks,
12930         cfgcleanup_altered_bbs): Altered.
12931         * tree-cfg.c (replace_uses_by, tree_merge_blocks): Record altered
12932         blocks.
12933         (get_all_dominated_blocks, remove_edge_and_dominated_blocks): New
12934         functions.
12935         (tree_purge_dead_eh_edges): Use remove_edge_and_dominated_blocks,
12936         do not invalidate dominators.
12937
12938 2007-04-26  Anatoly Sokolov <aesok@post.ru>
12939
12940         * config/avr/avr.c (avr_mcu_types): Add support for ATmega8HVA and
12941         ATmega16HVA devices. Move AT90USB82 device to 'avr5' architecture.
12942         * config/avr/avr.h (LINK_SPEC, CRT_BINUTILS_SPECS): (Ditto.).
12943         * config/avr/t-avr (MULTILIB_MATCHES): (Ditto.).
12944
12945 2007-04-26  Steve Ellcey  <sje@cup.hp.com>
12946
12947         * config/ia64/ia64.md (ip_value):  Fix itanium_class attribute.
12948
12949 2007-04-26  Richard Guenther  <rguenther@suse.de>
12950
12951         PR tree-optimization/31703
12952         * tree-ssa-loop-im.c (rewrite_bittest): Make sure to use
12953         the right type for the target of the bittest.
12954
12955 2007-04-26  Richard Sandiford  <richard@codesourcery.com>
12956
12957         * config/i386/vx-common.h (RETURN_IN_MEMORY): Use
12958         ix86_sol10_return_in_memory.
12959
12960 2007-04-26  Richard Sandiford  <richard@codesourcery.com>
12961
12962         * config/i386/i386.c (ix86_sol10_return_in_memory): Remove unused
12963         variables.
12964
12965 2007-04-26  Jakub Jelinek  <jakub@redhat.com>
12966
12967         PR c++/31598
12968         * tree-inline.c (copy_body_r): Don't touch TREE_TYPE of OMP_CLAUSE.
12969
12970         PR tree-optimization/30558
12971         * tree-eh.c (lower_eh_filter): If EH_FILTER_MUST_NOT_THROW
12972         clear this_state.prev_try.
12973
12974 2007-04-26  Richard Sandiford  <richard@codesourcery.com>
12975             Mark Mitchell  <mark@codesourcery.com>
12976
12977         * config/i386/i386-protos.h (ix86_sol10_return_in_memory): Declare.
12978         * config/i386/i386.c (ix86_sol10_return_in_memory): New function.
12979         * config/i386/sol2-10.h (RETURN_IN_MEMORY): Use it.
12980
12981 2007-04-26  Richard Sandiford  <richard@codesourcery.com>
12982
12983         PR driver/31107
12984         * doc/invoke.texi (%:print-asm-header): Document.
12985         * gcc.c (asm_options): Use %:print-asm-header() for --target-help
12986         and -ftarget-help.
12987         (static_spec_functions): Add print-asm-header.
12988         (main): Print a banner before the --target-help linker options.
12989         (print_asm_header_spec_function): New function.
12990
12991 2007-04-25  Kaz Kojima  <kkojima@gcc.gnu.org>
12992
12993         PR target/31403
12994         * config/sh/sh.md (movsi_ie): Fix length for TARGET_SH2A.
12995         (movsf_ie): Likewise.
12996
12997 2007-04-25  Paolo Carlini  <pcarlini@suse.de>
12998
12999         * doc/extend.texi ([Type Traits]): Adjust per N2255.
13000
13001 2007-04-25  Bob Wilson  <bob.wilson@acm.org>
13002
13003         * config/xtensa/lib1funcs.asm (__udivsi3, __divsi3): Throw an
13004         exception for divide-by-zero.
13005         (__umodsi3, __modsi3): Likewise.
13006
13007 2007-04-25  Dirk Mueller  <dmueller@suse.de>
13008
13009         * c-typeck.c (build_compound_expr): Annotate warning()
13010         call with OPT_Wunused_value.
13011         * tree-ssa.c (warn_uninit): Annotate warning with
13012         OPT_Wunintialized.
13013         * c-common.c (handle_sentinel_attribute): Annotate warning
13014         call with OPT_Wattributes.
13015
13016 2007-04-25  Thiemo Seufer  <ths@mips.com>
13017
13018         * config/mips/mips.opt (mdmx, mmt, mno-mdmx): New options.
13019         (mips16): Fix typo.
13020         * config/mips/mips.h (ASM_SPEC): Pass -mmt/-mno-mt and -mdmx/-mno-mdmx
13021         on to the assembler.  Improve handling of -mno-mips16.  Add handling
13022         of -mno-mips3d, -mno-dsp, -mno-dspr2.
13023         * doc/invoke.texi (MIPS Options): Whitespace cleanup.  Fix wrong use
13024         of @itemx.  Document -mno-dsp, -mno-dspr2, -mno-paired-single, -mdmx,
13025         -mno-mdmx, -mno-mips3d, -mmt and -mno-mt.
13026
13027 2007-04-25  Danny Smith  <dannysmith.users.sourceforge.net>
13028
13029         PR target/31680
13030         * config/i386/winnt.c (i386_pe_file_end): Strip only
13031         USER_LABEL_PREFIX when writing export name.
13032
13033 2007-04-25  Richard Sandiford  <richard@codesourcery.com>
13034
13035         * config.gcc (sh-wrs-vxworks): Don't include dbxelf.h.  Include
13036         sh/elf.h, vx-common.h and vxworks.h.
13037         * config/sh/sh.h: Include config/vxworks-dummy.h.
13038         (SUBTARGET_OVERRIDE_OPTIONS): Define.
13039         (OVERRIDE_OPTIONS): Use it.
13040         * config/sh/sh.md (GOTaddr2picreg): Add suport for VxWorks RTPs.
13041         (vxworks_picreg): New pattern.
13042         * config/sh/vxworks.h (TARGET_OS_CPP_BUILTINS): Use
13043         VXWORKS_OS_CPP_BUILTINS.
13044         (LIB_SPEC, LINK_SPEC, STARTFILE_SPEC, ENDFILE_SPEC): Redefine
13045         to their VXWORKS_* equivalents.
13046         (SUBTARGET_OVERRIDE_OPTIONS, SUBTARGET_CPP_SPEC): Define.
13047         (SUBTARGET_LINK_EMUL_SUFFIX, FUNCTION_PROFILER): Define.
13048         * config/sh/lib1funcs.asm (NO_FPSCR_VALUES): Define for VxWorks PIC.
13049         (set_fpscr, ic_invalidate): Add VxWorks PIC sequences.
13050         * config/sh/t-vxworks (MULTILIB_OPTIONS): Add m4a, -mrtp and
13051         -mrtp/-fPIC multilibs.
13052         (MULTILIB_EXCEPTIONS): Generalize globs accordingly.
13053         (MULTILIB_MATCHES, EXTRA_MULTILIB_PARTS): Define.
13054         (MULTILIB_OSDIRNAMES): Delete.
13055
13056 2007-04-25  Anatoly Sokolov <aesok@post.ru>
13057
13058         PR target/18989
13059         * config/avr/avr.h (ASM_OUTPUT_ALIGN): Redefine.
13060
13061 2007-04-24  Brooks Moses  <brooks.moses@codesourcery.com>
13062
13063         * real.c (mpfr_from_real): Handle Inf and NaN, and allow the
13064         rounding mode to be specified by the caller.
13065         (real_to_mpfr) Likewise.
13066         * real.h: Update mpfr_from_real, mpfr_to_real prototypes to
13067         include new arguments.
13068         * builtins.c: Update mpfr_from_real, mpfr_to_real calls.
13069
13070 2007-04-24  Ian Lance Taylor  <iant@google.com>
13071
13072         PR tree-optimization/31605
13073         * tree-vrp.c (set_value_range): Check that min and max are not
13074         both overflow infinities.
13075         (set_value_range_to_value): New static function.
13076         (extract_range_from_binary_expr): Call set_value_range_to_value.
13077         (extract_range_from_cond_expr): Likewise.
13078         (extract_range_from_expr): Likewise.
13079         (extract_range_from_unary_expr): Likewise.  Don't create a range
13080         which overflows on both sides.
13081         (vrp_meet): Check for a useless range.
13082         (vrp_visit_phi_node): If we see a constant which looks like an
13083         overflow infinity, turn off the TREE_OVERFLOW flag.
13084
13085 2007-04-24  Ian Lance Taylor  <iant@google.com>
13086
13087         * flow.c (elim_reg_cond): Handle a comparison of a subreg.
13088
13089 2007-04-24  Simon Martin  <simartin@users.sourceforge.net>
13090
13091         PR diagnostic/25923
13092         * tree-pass.h (TDF_DIAGNOSTIC): New dump control to specify that a
13093         diagnostic message is being built.
13094         * tree-pretty-print.c (dump_generic_node): Only write the
13095         formatted text into BUFFER's stream if we are not building a
13096         diagnostic message.
13097         * toplev.c (default_tree_printer): Pass TDF_DIAGNOSTIC to
13098         dump_generic_node.
13099         * Makefile.in (toplev.o): Depend on tree-pass.h.
13100
13101 2007-04-24  Ian Lance Taylor  <iant@google.com>
13102
13103         PR tree-optimization/31602
13104         * tree-ssa-loop-ch.c (copy_loop_headers): Set TREE_NO_WARNING for
13105         conditionals in the copied loop header.
13106         * tree-cfg.c (fold_cond_expr_cond): Don't issue undefined overflow
13107         warnings if TREE_NO_WARNING is set.
13108         * doc/invoke.texi (Warning Options): Clarify that
13109         -Wstrict-overflow does not warn about loops.
13110
13111 2007-04-24  Janis Johnson  <janis187@us.ibm.com>
13112
13113         * config/rs6000/rs6000.c (function_arg_advance): For 32-bit ELF ABI,
13114         expand on the comment about _Decimal128 arguments and check the
13115         integer result of the modulus operation; for 64-bit ELF ABI, ensure
13116         that _Decimal128 argument uses even/odd register pair.
13117         (function_arg): Ditto.
13118
13119 2007-04-24  Hui-May Chang <hm.chang@apple.com>
13120
13121         * reload1.c (merge_assigned_reloads) : Do not merge a RELOAD_OTHER
13122         instruction with a RELOAD_FOR_OPERAND_ADDRESS instruction.
13123
13124 2007-04-24  Richard Guenther  <rguenther@suse.de>
13125             Olga Golovanevsky  <olga@il.ibm.com>
13126
13127         * fold-const.c (multiple_of_p): Check for bottom
13128         to be zero.
13129
13130 2007-04-24  Richard Henderson  <rth@redhat.com>
13131
13132         * libgcc2.h (AVOID_FP_TYPE_CONVERSION): Rename from
13133         IS_IBM_EXTENDED.  Also define in terms of WIDEST_HARDWARE_FP_SIZE.
13134         * libgcc2.c (__floatdisf): Avoid double-word arithmetic when
13135         looking for non-zero bits shifted out.  Avoid a recursive call
13136         when constructing the scalar.
13137         (__floatundisf): Likewise.
13138
13139 2007-04-24  Nathan Froyd  <froydnj@codesourcery.com>
13140
13141         * dwarf2out.c (field_byte_offset): Move the existing logic
13142         under the control of PCC_BITFIELD_TYPE_MATTERS and just use
13143         the bit offset of the field if !PCC_BITFIELD_TYPE_MATTERS.
13144
13145 2007-04-24  Andreas Krebbel  <krebbel1@de.ibm.com>
13146
13147         PR target/31641
13148         * config/s390/s390.c (s390_expand_setmem): Don't ICE for constant
13149         length argument of 0 for memset.
13150         (s390_expand_movmem, s390_expand_setmem, s390_expand_cmpmem): Use
13151         unsigned shift instead of the signed variant.
13152
13153 2007-04-24  Andreas Krebbel  <krebbel1@de.ibm.com>
13154
13155         * config/s390/s390.md ("*cmp<mode>_ccs_0_ibm", "*cmp<mode>_ccs_ibm",
13156         "fix_trunc<BFP:mode><GPR:mode>2_ieee", "fix_truncdfsi2_ibm",
13157         "floatsidf2_ibm", "floatsisf2", "truncdfsf2_ieee", "truncdfsf2_ibm",
13158         "*trunctfdf2_ieee", "*trunctfdf2_ibm", "*trunctfsf2_ieee",
13159         "*trunctfsf2_ibm", "extendsfdf2_ieee", "extendsfdf2_ibm",
13160         "*extenddftf2_ieee", "*extenddftf2_ibm", "*extendsftf2_ieee",
13161         "*extendsftf2_ibm", "*add<mode>3", "*add<mode>3_ibm", "*sub<mode>3_ibm",
13162         "*mul<mode>3", "*mul<mode>3_ibm", "*div<mode>3", "*div<mode>3_ibm",
13163         "*neg<mode>2_ibm", "*abs<mode>2_ibm"): Insn definitions removed.
13164         ("fix_trunc<BFP:mode><GPR:mode>2_bfp", "floatsi<mode>2",
13165         "truncdfsf2", "trunctf<mode>2", "add<mode>3", "sub<mode>3",
13166         "mul<mode>3", "div<mode>3"): Insn definitions added.
13167         ("fixuns_trunc<BFP:mode><GPR:mode>2", "fix_trunc<mode>di2",
13168         "fix_trunc<mode>si2"): gen_fix_trunc<BFP:mode><GPR:mode>2_ieee renamed
13169         to gen_fix_trunc<BFP:mode><GPR:mode>2_bfp.
13170         ("fix_truncdfsi2", "floatsitf2", "truncdfsf2", "trunctfdf2",
13171         "trunctfsf2", "extendsfdf2", "extenddftf2", "extendsftf2", "add<mode>3",
13172         "sub<mode>3", "mul<mode>3", "div<mode>3"): Expander removed.
13173         ("fix_trunc<mode>si2", "extend<DSF:mode><BFP:mode>2"): Expander added.
13174         * config/s390/s390.h (TARGET_IBM_FLOAT, TARGET_IEEE_FLOAT,
13175         TARGET_FLOAT_FORMAT): Macro definitions removed.
13176         (FP_REGNO_P): No special case for !TARGET_IEEE_FLOAT anymore.
13177         * config/s390/s390.c (struct processor_costs, z900_cost, z990_cost,
13178         z9_109_cost): Remove fields for hexfloat instructions: dxr, ddr and der.
13179         (s390_rtx_costs): Remove !TARGET_IEEE_FLOAT special branches.
13180         (s390_gen_rtx_const_DI): Function removed.
13181         * config/s390/s390-protos.h (s390_gen_rtx_const_DI): Prototype removed.
13182
13183 2007-04-24  Richard Sandiford  <richard@codesourcery.com>
13184
13185         * optabs.c (set_conv_libfunc): Prefer libgcc2's __ffsMM2 functions
13186         over an external ffs function.
13187
13188 2007-04-24  Chao-ying Fu  <fu@mips.com>
13189             Richard Sandiford  <richard@nildram.co.uk>
13190
13191         * doc/md.texi (madd@var{m}@var{n}4, umadd@var{m}@var{n}4): Document.
13192         * optabs.h (OTI_smadd_widen, OTI_umadd_widen): New optab_indexes.
13193         (smadd_widen_optab, umadd_widen_optab): Define.
13194         * optabs.c (init_optabs): Initialize smadd_widen_optab and
13195         umadd_widen_optab.
13196         * genopinit.c (optabs): Fill in smadd_widen_optab and
13197         umadd_widen_optab.
13198         * expr.c (expand_expr_real_1): Try to use smadd_widen_optab
13199         and umadd_widen_optab to implement multiply-add sequences.
13200         * config/mips/mips.md (*<su>mul_acc_di): Rename to...
13201         (<u>maddsidi4): ...this.  Extend condition to include
13202         GENERATE_MADD_MSUB and TARGET_DSPR2.  Change the constraint
13203         of operand 0 to "ka" and use the three-operand form of madd<u>
13204         for TARGET_DSPR2.
13205         * config/mips/mips-dspr2.md (mips_madd, mips_maddu): Convert
13206         to define_expands.
13207         * config/mips/constraints.md (ka): New register constraint.
13208
13209 2007-04-24  Jan Hubicka  <j@suse.cz>
13210
13211         Revert:
13212
13213         2007-04-23  Jan Hubicka  <jh@suse.cz>
13214         * function.c (init_function_start): Don't init line number info.
13215         (expand_function_end): Update.
13216         (reset_block_changes, record_block_change, finalize_block_changes,
13217         check_block_change, free_block_changes): Kill.
13218         * function.h (reset_block_changes, record_block_change,
13219         finalize_block_changes, check_block_change, free_block_changes):
13220         Remove prototypes.
13221         (struct function): Remove ib_boundaries_block.
13222         * emit-rtl.c (make_insn_raw, make_jump_insn_raw, make_call_insn_raw):
13223         Use curr_insn_locator to initialize locator.
13224         (emit_line_note): Remove.
13225         * cfgexpand.c (expand_gimple_cond_expr): Update.
13226         (construct_exit_block): Likewise.
13227         (tree_expand_cfg): Initialize/finalize locators.
13228         * expr.c (expand_expr_real): Update.
13229         * cfglayout.c (line_locators_locs, line_locators_lines,
13230         file_locators_locs, file_locators_files): Remove.
13231         (set_block_levels): Move to cfgexpand.c.
13232         (insn_locators_initialize): Remove.
13233         (pass_insn_locators_initialize): Remove.
13234         (locations_locators_locs, locations_locators_vals): New static vars.
13235         (curr_location, last_location, curr_block, last_block, curr_rtl_loc):
13236         Likewise.
13237         (insn_locators_alloc, insn_locators_finalize,
13238         set_curr_insn_source_location, set_curr_insn_block, curr_insn_locator):
13239         New functions.
13240         (locator_location): New.
13241         (locator_line, locator_file): Rewrite.
13242         * rtl.h (emit_line_note): Kill.
13243         (insn_locators_alloc, insn_locators_finalize,
13244         set_curr_insn_source_location, set_curr_insn_block, curr_insn_locator):
13245         Declare.
13246         * tree-inline.c (initialize_cfun): Do not initialize
13247         ib_boundaries_block.
13248         * passes.c (pass_insn_locators_initialize): Remove.
13249
13250 2007-04-24  Daniel Franke  <franke.daniel@gmail.com>
13251
13252         * doc/invoke.texi: Removed leading '-' from option index entries.
13253
13254 2007-04-23  Zdenek Dvorak  <dvorakz@suse.cz>
13255
13256         * tree-phinodes.c (reserve_phi_args_for_new_edge, remove_phi_node):
13257         Use phi_nodes_ptr.
13258         (create_phi_node): Use set_phi_nodes.
13259         * omp-low.c (expand_omp_parallel): Use bb_stmt_list.
13260         * tree-if-conv.c (process_phi_nodes): Use set_phi_nodes.
13261         (combine_blocks):  Use bb_stmt_list and set_bb_stmt_list.
13262         * tree-flow-inline.h (phi_nodes, set_phi_nodes,
13263         (bsi_start, bsi_last): Use bb_stmt_list.
13264         (phi_nodes_ptr, bb_stmt_list, set_bb_stmt_list): New functions.
13265         * cfgexpand.c (expand_gimple_basic_block): Use bb_stmt_list.
13266         Traverse the statements using tsi iterator.
13267         * basic-block.h (struct basic_block_def): Fields stmt_list
13268         and phi_nodes moved to ...
13269         (struct tree_bb_info): ... new structure.
13270         * tree-cfg.c (create_bb): Allocate il.tree.  Use set_bb_stmt_list.
13271         (tree_merge_blocks): Use bb_stmt_list and set_bb_stmt_list.
13272         (remove_bb): Handle blocks with NULL stmt list.  Clear il.tree field.
13273         (tree_verify_flow_info): Verify that il.tree is not set for
13274         entry and exit block.
13275         (tree_split_block): Use set_bb_stmt_list.
13276
13277 2007-04-23  Mike Stump  <mrs@apple.com>
13278
13279         * config/i386/i386.c (ix86_tune_features
13280         [X86_TUNE_DEEP_BRANCH_PREDICTION]: Prefer call over thunks on
13281         nocona and core2.
13282
13283 2007-04-23  H.J. Lu  <hongjiu.lu@intel.com>
13284
13285         * config/i386/i386.md (prefix_extra): New attribute.
13286         (length): Add prefix_extra.
13287
13288         * onfig/i386/sse.md (sse2_movdqu): Set prefix_data16.
13289         (sse2_movntv2di): Likewise.
13290         (sse2_cvtps2dq): Likewise.
13291         (sse2_cvtpd2pi): Likewise.
13292         (sse2_cvttpd2pi): Likewise.
13293         (*sse2_cvtpd2ps): Likewise.
13294         (*add<mode>3): Likewise.
13295         (sse2_ssadd<mode>3): Likewise.
13296         (sse2_usadd<mode>3): Likewise.
13297         (*sub<mode>3): Likewise.
13298         (sse2_sssub<mode>3): Likewise.
13299         (sse2_ussub<mode>3): Likewise.
13300         (*mulv8hi3): Likewise.
13301         (*smulv8hi3_highpart): Likewise.
13302         (*umulv8hi3_highpart): Likewise.
13303         (sse2_umulv2siv2di3): Likewise.
13304         (sse2_pmaddwd): Likewise.
13305         (ashr<mode>3): Likewise.
13306         (lshr<mode>3): Likewise.
13307         (ashl<mode>3): Likewise.
13308         (sse2_ashlti3): Likewise.
13309         (sse2_lshrti3): Likewise.
13310         (*umaxv16qi3): Likewise.
13311         (*smaxv8hi3): Likewise.
13312         (*uminv16qi3): Likewise.
13313         (*sminv8hi3): Likewise.
13314         (sse2_eq<mode>3): Likewise.
13315         (sse2_gt<mode>3): Likewise.
13316         (*and<mode>3): Likewise.
13317         (sse2_nand<mode>3): Likewise.
13318         (*ior<mode>3): Likewise.
13319         (*xor<mode>3): Likewise.
13320         (sse2_packsswb): Likewise.
13321         (sse2_packssdw): Likewise.
13322         (sse2_packuswb): Likewise.
13323         (sse2_punpckhbw): Likewise.
13324         (sse2_punpcklbw): Likewise.
13325         (sse2_punpckhwd): Likewise.
13326         (sse2_punpcklwd): Likewise.
13327         (sse2_punpckhdq): Likewise.
13328         (sse2_punpckldq): Likewise.
13329         (sse2_punpckhqdq): Likewise.
13330         (sse2_punpcklqdq): Likewise.
13331         (*sse2_pinsrw): Likewise.
13332         (*sse2_pextrw): Likewise.
13333         (sse2_pshufd_1): Likewise.
13334         (sse2_uavgv16qi3): Likewise.
13335         (sse2_uavgv8hi3): Likewise.
13336         (sse2_psadbw): Likewise.
13337         (sse2_pmovmskb): Likewise.
13338         (*sse2_maskmovdqu): Likewise.
13339         (*sse2_maskmovdqu_rex64): Likewise.
13340         (sse4a_extrqi): Likewise.
13341         (sse4a_extrq): Likewise.
13342         (sse3_lddqu): Set prefix_rep.
13343         (sse3_addsubv4sf3): Likewise.
13344         (sse3_haddv4sf3): Likewise.
13345         (sse3_hsubv4sf3): Likewise.
13346         (sse_cvtss2si): Likewise.
13347         (sse_cvtss2si_2): Likewise.
13348         (sse_cvtss2siq): Likewise.
13349         (sse_cvtss2siq_2): Likewise.
13350         (sse_cvttss2si): Likewise.
13351         (sse_cvttss2siq): Likewise.
13352         (sse2_cvttps2dq): Likewise.
13353         (sse3_movshdup): Likewise.
13354         (sse3_movsldup): Likewise.
13355         (sse2_cvtsd2si): Likewise.
13356         (sse2_cvtsd2si_2): Likewise.
13357         (sse2_cvtsd2siq): Likewise.
13358         (sse2_cvtsd2siq_2): Likewise.
13359         (sse2_cvttsd2si): Likewise.
13360         (sse2_cvttsd2siq): Likewise.
13361         (*sse2_cvtpd2dq): Likewise.
13362         (*sse2_cvttpd2dq): Likewise.
13363         (sse2_pshuflw_1): Likewise.
13364         (sse2_pshufhw_1): Likewise.
13365         (sse4a_insertqi): Likewise.
13366         (sse4a_insertq): Likewise.
13367         (ssse3_phaddwv8hi3): Set prefix_data16 and prefix_extra.
13368         (ssse3_phadddv4si3): Likewise.
13369         (ssse3_phaddswv8hi3): Likewise.
13370         (ssse3_phsubwv8hi3): Likewise.
13371         (ssse3_phsubdv4si3): Likewise.
13372         (ssse3_phsubswv8hi3): Likewise.
13373         (ssse3_pmaddubswv8hi3): Likewise.
13374         (ssse3_pmulhrswv8hi3): Likewise.
13375         (ssse3_pshufbv16qi3): Likewise.
13376         (ssse3_psign<mode>3): Likewise.
13377         (ssse3_palignrti): Likewise.
13378         (abs<mode>2): Likewise.
13379         (ssse3_phaddwv4hi3): Set prefix_extra.
13380         (ssse3_phadddv2si3): Likewise.
13381         (ssse3_phaddswv4hi3): Likewise.
13382         (ssse3_phsubwv4hi3): Likewise.
13383         (ssse3_phsubdv2si3): Likewise.
13384         (ssse3_phsubswv4hi3): Likewise.
13385         (ssse3_pmaddubswv4hi3): Likewise.
13386         (ssse3_pmulhrswv4hi3): Likewise.
13387         (ssse3_pshufbv8qi3): Likewise.
13388         (ssse3_psign<mode>3): Likewise.
13389         (ssse3_palignrdi): Likewise.
13390         (abs<mode>2): Likewise.
13391         (sse2_cvtdq2ps): Set mode to V4SF instead of V2DF.
13392         (*vec_dupv2df): Set mode to V2DF instead of V4SF.
13393         (sse2_pmovmskb): Set mode to SI instead of V2DF.
13394
13395 2007-04-23  Nick Clifton  <nickc@redhat.com>
13396
13397         * params.def: Fix formatting of emacs local variables.
13398
13399 2007-04-23  H.J. Lu  <hongjiu.lu@intel.com>
13400
13401         * config/i386/sse.md (sse2_stored): Don't split to inter-unit
13402         move if inter-unit move isn't allowed.
13403         Don't split moving the first element of V2DI to DI to inter-unit
13404         move if inter-unit move isn't allowed.
13405
13406 2007-04-23  Richard Guenther  <rguenther@suse.de>
13407
13408         * tree-ssa-sink.c (execute_sink_code): Calculate CDI_DOMINATORS
13409         and CDI_POST_DOMINATORS separately.
13410
13411 2007-04-23  Nick Clifton  <nickc@redhat.com>
13412
13413         * c.opt (Wformat-contains-nul): Add warning attribute.
13414
13415 2007-04-23  Jan Hubicka  <jh@suse.cz>
13416
13417         * function.c (init_function_start): Don't init line number info.
13418         (expand_function_end): Update.
13419         (reset_block_changes, record_block_change, finalize_block_changes,
13420         check_block_change, free_block_changes): Kill.
13421         * function.h (reset_block_changes, record_block_change,
13422         finalize_block_changes, check_block_change, free_block_changes):
13423         Remove prototypes.
13424         (struct function): Remove ib_boundaries_block.
13425         * emit-rtl.c (make_insn_raw, make_jump_insn_raw, make_call_insn_raw):
13426         Use curr_insn_locator to initialize locator.
13427         (emit_line_note): Remove.
13428         * cfgexpand.c (expand_gimple_cond_expr): Update.
13429         (construct_exit_block): Likewise.
13430         (tree_expand_cfg): Initialize/finalize locators.
13431         * expr.c (expand_expr_real): Update.
13432         * cfglayout.c (line_locators_locs, line_locators_lines,
13433         file_locators_locs, file_locators_files): Remove.
13434         (set_block_levels): Move to cfgexpand.c.
13435         (insn_locators_initialize): Remove.
13436         (pass_insn_locators_initialize): Remove.
13437         (locations_locators_locs, locations_locators_vals): New static vars.
13438         (curr_location, last_location, curr_block, last_block, curr_rtl_loc):
13439         Likewise.
13440         (insn_locators_alloc, insn_locators_finalize,
13441         set_curr_insn_source_location, set_curr_insn_block, curr_insn_locator):
13442         New functions.
13443         (locator_location): New.
13444         (locator_line, locator_file): Rewrite.
13445         * rtl.h (emit_line_note): Kill.
13446         (insn_locators_alloc, insn_locators_finalize,
13447         set_curr_insn_source_location, set_curr_insn_block, curr_insn_locator):
13448         Declare.
13449         * tree-inline.c (initialize_cfun): Do not initialize
13450         ib_boundaries_block.
13451         * passes.c (pass_insn_locators_initialize): Remove.
13452
13453 2007-04-22  Andrew Pinski  <andrew_pinski@playstation.sony.com>
13454
13455         PR middle-end/31448
13456         * expr.c (reduce_to_bit_field_precision): Handle
13457         CONST_INT rtx's.
13458
13459 2007-04-22  Uros Bizjak  <ubizjak@gmail.com>
13460
13461         PR tree-optimization/24659
13462         * optabs.h (enum optab_index) [OTI_vec_unpacks_hi,
13463         OTI_vec_unpacks_lo]: Update comment to mention floating point operands.
13464         (vec_pack_trunc_optab): Rename from vec_pack_mod_optab.
13465         * genopinit.c (optabs): Rename vec_pack_mod_optab
13466         to vec_pack_trunc_optab.
13467         * tree-vect-transform.c (vectorizable_type_demotion): Do not fail
13468         early for scalar floating point operands for NOP_EXPR.
13469         (vectorizable_type_promotion): Ditto.
13470         * optabs.c (optab_for_tree_code) [VEC_PACK_TRUNC_EXPR]: Return
13471         vec_pack_trunc_optab.
13472         (expand_binop): Rename vec_float_trunc_optab to vec_pack_mod_optab.
13473
13474         * tree.def (VEC_PACK_TRUNC_EXPR): Rename from VEC_PACK_MOD_EXPR.
13475         * tree-pretty-print.c (dump_generic_node) [VEC_PACK_TRUNC_EXPR]:
13476         Rename from VEC_PACK_MOD_EXPR.
13477         (op_prio) [VEC_PACK_TRUNC_EXPR]: Ditto.
13478         * expr.c (expand_expr_real_1): Ditto.
13479         * tree-inline.c (estimate_num_insns_1): Ditto.
13480         * tree-vect-generic.c (expand_vector_operations_1): Ditto.
13481
13482         * config/i386/sse.md (vec_unpacks_hi_v4sf): New expander.
13483         (vec_unpacks_lo_v4sf): Ditto.
13484         (vec_pack_trunc_v2df): Ditto.
13485         (vec_pack_trunc_v8hi): Rename from vec_pack_mod_v8hi.
13486         (vec_pack_trunc_v4si): Rename from vec_pack_mod_v4si.
13487         (vec_pack_trunc_v2di): Rename from vec_pack_mod_v2di.
13488
13489         * config/rs6000/altivec.md (vec_pack_trunc_v8hi): Rename from
13490         vec_pack_mod_v8hi.
13491         (vec_pack_trunc_v4si): Rename from vec_pack_mod_v4si.
13492
13493         * doc/c-tree.texi (Expression trees) [VEC_PACK_TRUNC_EXPR]:
13494         Rename from VEC_PACK_MOD_EXPR.  This expression also represent
13495         packing of floating point operands.
13496         [VEC_UNPACK_HI_EXPR, VEC_UNPACK_LO_EXPR]: These expression also
13497         represent unpacking of floating point operands.
13498         * doc/md.texi (Standard Names) [vec_pack_trunc]: Update documentation.
13499         [vec_unpacks_hi]: Ditto.
13500         [vec_unpacks_lo]: Ditto.
13501
13502 2007-04-22  Jan Hubicka  <jh@suse.cz>
13503
13504         * final.c (rest_of_handle_final): Call
13505         targetm.asm_out.constructor/targetm.asm_out.destructor
13506         * cgraphunit.c (cgraph_build_static_cdtor): Don't do it here; set
13507         proper priority via decl_*_priority_insert.
13508         * c-common.c (c_expand_body): Likewise.
13509
13510 2007-04-22  Richard Guenther  <rguenther@suse.de>
13511
13512         PR tree-optimization/29789
13513         * tree-ssa-loop-im.c (stmt_cost): Adjust cost of shifts.
13514         (rewrite_reciprocal): New helper split out from
13515         determine_invariantness_stmt.
13516         (rewrite_bittest): Likewise.
13517         (determine_invariantness_stmt): Rewrite (A >> B) & 1 to
13518         A & (1 << B) if (1 << B) is loop invariant but (A >> B)
13519         is not.
13520
13521 2007-04-22  Revital Eres  <eres@il.ibm.com>
13522
13523         * loop-unroll.c (var_to_expand): New field to support also
13524         insns of the form x = something + x.
13525         (analyze_insn_to_expand_var): Use it.
13526         (expand_var_during_unrolling): Likewise.
13527
13528 2007-04-21  Zdenek Dvorak  <dvorakz@suse.cz>
13529
13530         * predict.c: Include pointer-set.h.
13531         (bb_predictions): New variable.
13532         (tree_predicted_by_p, tree_predict_edge,
13533         remove_predictions_associated_with_edge): Use bb_predictions map
13534         instead of bb->predictions.
13535         (clear_bb_predictions, assert_is_empty): New functions.
13536         (combine_predictions_for_bb): Use bb_predictions map.  Call
13537         clear_bb_predictions.
13538         (tree_estimate_probability): Create and free bb_predictions map.
13539         * Makefile.in (predict.o): Add pointer-set.h dependency.
13540         * basic-block.h (struct basic_block_def): Remove predictions
13541         field.
13542         * cfgrtl.c (rtl_verify_flow_info_1): Do not check bb->predictions.
13543
13544 2007-04-21  Kaz Kojima  <kkojima@gcc.gnu.org>
13545
13546         PR target/31480
13547         * config/sh/sh.md (length): Check if prev_nonnote_insn (insn)
13548         is null.
13549
13550 2007-04-21  Andrew Pinski  <andrew_pinski@playstation.sony.com>
13551
13552         * timevar.c (timevar_print): Change reference of --disable-checking to
13553         --enable-checking=release.  Also warn if assert checking is disabled.
13554
13555 2007-04-21  Andrew Pinski  <andrew_pinski@playstation.sony.com>
13556
13557         PR C/30265
13558         * c-gimplifier.c (gimplify_compound_literal_expr): Mark the
13559         decl as addressable if the compound literal was marked as
13560         addressable.
13561         Mark the decl as a gimple register if it is a complex or
13562         vector decl and does not live in memory.
13563
13564 2007-04-21  Andrew Pinski  <andrew_pinski@playstation.sony.com>
13565
13566         * tree.h (GIMPLE_TUPLE_P): Also true for PHI_NODEs.
13567         (GENERIC_NEXT): New function macro.
13568         (PHI_CHAIN): Use phi_node's new chain variable.
13569         (tree_phi_node): Change tree_common to tree_base
13570         and add the chain field.
13571         * tree-phinodes.c (make_phi_node): Don't set
13572         TREE_TYPE on the new node.
13573         * c-decl.c (lang_tree_node): Use GENERIC_NEXT
13574         instead of checking GIMPLE_TUPLE_P in chain_next.
13575         * tree-vect-transform.c
13576         (get_initial_def_for_induction): Look at
13577         PHI_RESULT_TREE for the type of the phi node.
13578         (update_vuses_to_preheader): Use PHI_CHAIN
13579         instead of TREE_CHAIN on the phi node.
13580         * tree-ssa-structalias.c (compute_points_to_sets):
13581         Likewise.
13582         (ipa_pta_execute): Likewise.
13583
13584 2007-04-21  Richard Guenther  <rguenther@suse.de>
13585
13586         PR middle-end/31136
13587         * fold-const.c (fold_unary): Call fold_convert_const on the
13588         original tree.
13589
13590 2007-04-21  Alexandre Oliva  <aoliva@redhat.com>
13591
13592         * gcse.c (store_killed_in_insn): Handle PARALLELs.
13593         (store_killed_in_pat): New.
13594
13595 2007-04-20  Richard Henderson  <rth@redhat.com>
13596
13597         PR target/31628
13598         * config/i386/i386.c (type_has_variadic_args_p): Look for any
13599         TREE_LIST with a void_type_node value, not void_list_node exactly.
13600
13601 2007-04-21  Douglas Gregor  <doug.gregor@gmail.com>
13602
13603         * doc/standards.texi: Re-arrange into language-specific
13604         subsections. Add a C++ section, documenting which standards we
13605         support.
13606
13607 2007-04-21  Zdenek Dvorak  <dvorakz@suse.cz>
13608
13609         * tree-ssa-structalias.c (delete_points_to_sets): Free graph->complex.
13610         * tree-ssa-operands.c (finalize_ssa_vuse_ops): Free new_ops.
13611
13612 2007-04-20  Daniel Jacobowitz  <dan@codesourcery.com>
13613
13614         * config/rs6000/sysv4.h (STARTFILE_DEFAULT_SPEC): Include
13615         ecrti.o and crtbegin.o.
13616         (LIB_DEFAULT_SPEC): Include -lc.
13617         (ENDFILE_DEFAULT_SPEC): Include crtend.o and ecrtn.o.
13618
13619 2007-04-20  Richard Henderson  <rth@redhat.com>
13620
13621         PR target/28623
13622         * config/alpha/alpha.c (get_unaligned_address): Remove extra_offset
13623         argument; update all callers.
13624         (get_unaligned_offset): New.
13625         * config/alpha/alpha.md (extendqidi2, extendhidi2): Don't use
13626         get_unaligned_address, just pass on the address directly.
13627         (unaligned_extendqidi): Use gen_lowpart instead of open-coding
13628         the subreg in the helper patterns.
13629         (unaligned_extendqidi_le): Use get_unaligned_offset.
13630         (unaligned_extendqidi_be, unaligned_extendhidi_le): Likewise.
13631         (unaligned_extendhidi_be): Likewise.
13632         (unaligned_extendhidi): Tidy.
13633         * config/alpha/alpha-protos.h: Update.
13634
13635 2007-04-20  Richard Henderson  <rth@redhat.com>
13636
13637         * config/alpha/alpha.h (CPP_SPEC, CPP_SUBTARGET_SPEC): Remove.
13638         (EXTRA_SPECS, SUBTARGET_EXTRA_SPECS): Remove.
13639         * config/alpha/linux.h (CPP_SPEC): Undef before redefine.
13640         * config/alpha/linux-elf.h (EXTRA_SPECS): Rename SUBTARGET_EXTRA_SPECS.
13641         * config/alpha/freebsd.h (EXTRA_SPECS): Rename SUBTARGET_EXTRA_SPECS.
13642         (CPP_SPEC): Don't include %(cpp_subtarget).
13643         * config/alpha/netbsd.h (CPP_SPEC): Rename CPP_SUBTARGET_SPEC.
13644         (EXTRA_SPECS): Rename SUBTARGET_EXTRA_SPECS.
13645         * config/alpha/osf.h (CPP_SPEC, EXTRA_SPECS): Similarly.
13646
13647 2007-04-20  Jakub Jelinek  <jakub@redhat.com>
13648
13649         * config/i386/i386.c (bdesc_2arg): Use ORDERED rather than UNORDERED
13650         for __builtin_ia32_cmpordss.
13651
13652         PR tree-optimization/31632
13653         * fold-const.c (fold_binary): Use op0 and op1 instead of arg0
13654         and arg1 for optimizations of comparison against min/max values.
13655         Fold arg0 to arg1's type for optimizations of comparison against
13656         min+1 and max-1 values.
13657
13658 2007-04-19  Bernd Schmidt  <bernd.schmidt@analog.com>
13659
13660         * reload.c (combine_reloads): When trying to use a dying register,
13661         check whether it's uninitialized and don't use if so.
13662
13663 2007-04-19  Brooks Moses  <brooks.moses@codesourcery.com>
13664
13665         * fold-const.c: Remove prototypes for native_encode_expr and
13666         native_interpret_expr.
13667         (native_encode_expr): Make non-static.
13668         (native_interpret_expr): Likewise.
13669         * tree.h: Add prototypes for the above.
13670
13671 2007-04-19  Joseph Myers  <joseph@codesourcery.com>
13672
13673         * config/rs6000/spe.md (*frob_tf_ti, *frob_ti_tf, *frob_ti_tf_2,
13674         *mov_si<mode>_e500_subreg0, *mov_si<mode>_e500_subreg0_2,
13675         *mov_sitf_e500_subreg8, *mov_sitf_e500_subreg8_2, spe_extenddftf2,
13676         spe_fix_trunctfsi2_internal, spe_negtf2_internal, cmptfeq_gpr,
13677         tsttfeq_gpr, cmptfgt_gpr, tsttfgt_gpr, cmptflt_gpr, tsttflt_gpr):
13678         Add length attributes.
13679
13680 2007-04-19  Janis Johnson  <janis187@us.ibm.com>
13681
13682         * ginclude/float.h: Check that __STDC_WANT_DEC_FP__ is defined,
13683         not that it is 1.
13684
13685         * c-cppbuiltin.c (c_cpp_builtins): Remove definition of
13686         __STDC_WANT_DEC_FP__.
13687
13688 2007-04-19  Joseph Myers  <joseph@codesourcery.com>
13689
13690         * configure.ac: Allow both powerpc*-*-linux* and powerpc*-*-gnu*
13691         for long double compatibility.
13692         * configure: Regenerate.
13693
13694 2007-04-19  Eric Botcazou  <ebotcazou@libertysurf.fr>
13695
13696         PR rtl-optimization/29841
13697         * cfgbuild.c (control_flow_insn_p): Return TRUE for unconditional
13698         trap instructions.
13699         * sched-deps.c (sched_analyze_insn): Prevent all non-jump instructions
13700         that may cause control flow transfer from being moved.
13701
13702 2007-04-18  Jan Hubicka  <jh@suse.cz>
13703
13704         * fold-const.c (div_if_zero_remainder): Do signed divide for pointer
13705         types.
13706
13707 2007-04-18  Eric Christopher  <echristo@apple.com>
13708
13709         * config/rs6000/darwin.md (load_macho_picbase): Use link register
13710         only. Update operands.
13711         * config/rs6000/rs6000.c (rs6000_emit_prologue): Update caller.
13712         * config/rs6000/rs6000.md (builtin_setjmp_receiver): Ditto. Move from
13713         link register to pic register.
13714
13715 2007-04-18  Dirk Mueller  <dmueller@suse.de>
13716
13717         PR diagnostic/31227
13718         * tree-vrp.c (search_for_addr_array): New.
13719         (check_array_bounds): Suppress warning about
13720         address taken of array refs if its not de-referenced.
13721
13722 2007-04-18  Dorit Nuzman  <dorit@il.ibm.com>
13723
13724         * tree-vectorizer.c (destroy_loop_vec_info): Set loop->aux to NULL.
13725         * tree-vect-analyze.c (vect_analyze_loop_form): Set loop->aux.
13726
13727         * tree-vectorizer.h (NITERS_KNOWN_P): New.
13728         * tree-vect-analyze.c (vect_analyze_loop_form): Call NITERS_KNOWN_P
13729         instead of LOOP_VINFO_INT_NITERS to avoid having to geneate loop_info.
13730
13731         * tree-vect-analyze.c (vect_determine_vectorization_factor): Add
13732         dump print.
13733         (vect_analyze_operations): Fix indenetation.  Fix a comment.  Fix a
13734         print message.
13735         (vect_analyze_scalar_cycles): Fix indentation.
13736         (vect_enhance_data_refs_alignment): Fix check in case of peeling.
13737         (vect_mark_relevant): Include phis in relevance analysis.
13738
13739         * tree-vect-transform.c (vect_transform_loop): Add an assert.
13740
13741 2007-04-18  Anatoly Sokolov <aesok@post.ru>
13742
13743         * config/avr/avr.c (ptrreg_to_str): Replace error() with
13744         output_operand_lossage().
13745
13746 2007-04-18  Dorit Nuzman  <dorit@il.ibm.com>
13747
13748         * tree-vect-transform.c (get_initial_def_for_reduction): Clean away
13749         the unused code for reduction without adjust-in-epilog to simplify the
13750         function.
13751
13752 2007-04-18  Wolfgang Gellerich  <gellerich@de.ibm.com>
13753
13754         * config/s390/s390.h (S390_TDC_POSITIVE_ZERO): New constant.
13755         (S390_TDC_NEGATIVE_ZERO): New constant.
13756         (S390_TDC_POSITIVE_NORMALIZED_NUMBER): New constant.
13757         (S390_TDC_NEGATIVE_NORMALIZED_NUMBER): New constant.
13758         (S390_TDC_POSITIVE_DENORMALIZED_NUMBER): New constant.
13759         (S390_TDC_NEGATIVE_DENORMALIZED_NUMBER): New constant.
13760         (S390_TDC_POSITIVE_INFINITY): New constant.
13761         (S390_TDC_NEGATIVE_INFINITY): New constant.
13762         (S390_TDC_POSITIVE_QUIET_NAN): New constant.
13763         (S390_TDC_NEGATIVE_QUIET_NAN): New constant.
13764         (S390_TDC_POSITIVE_SIGNALING_NAN): New constant.
13765         (S390_TDC_NEGATIVE_SIGNALING_NAN): New constant.
13766         (S390_TDC_INFINITY): New constant.
13767         * config/s390/s390.c (s390_canonicalize_comparison): Renamed
13768         UNSPEC_CMPINT to UNSPEC_CCU_TO_INT, added a UNSPEC_CCU_TO_INT-like
13769         optimization for UNSPEC_CCZ_TO_INT.
13770         * config/s390/s390.md ("*TDC_insn_<mode>"): New insn.
13771         ("*ccz_to_int"): New insn.
13772         ("isinf<mode>2"): New insn.
13773         (UNSPEC_CMPINT): Renamed to UNSPEC_CCU_TO_INT.
13774         (UNSPEC_CCU_TO_INT): New constant, replaces UNSPEC_CMPINT.
13775         (UNSPEC_CCZ_TO_INT): New constant.
13776
13777 2007-04-18  Richard Guenther  <rguenther@suse.de>
13778
13779         PR tree-optimization/19431
13780         PR tree-optimization/21463
13781         * tree-pass.h (pass_phiprop): Declare.
13782         * passes.c (init_optimization_passes): New phiprop pass.
13783         * tree-ssa-forwprop.c (struct phiprop_d): New structure.
13784         (phivn_valid_p): New helper function.
13785         (phiprop_insert_phi): Likewise.
13786         (propagate_with_phi): Likewise.
13787         (tree_ssa_phiprop): New propagator propagating loads
13788         through phi nodes if profitable.
13789
13790 2007-04-18  Dorit Nuzman  <dorit@il.ibm.com>
13791
13792         * tree-vect-analyze.c (process_use): New function.
13793         (vect_mark_stmts_to_be_vectorized): Factor out code to process_use.
13794         Check phis in all bbs.
13795         * tree-vectorizer.c (vect_is_simple_use): Remove a no longer relavant
13796         assert.
13797
13798 2007-04-18  Bernd Schmidt  <bernd.schmidt@analog.com>
13799
13800         * reload1.c (eliminte_regs_in_insn): Use REG_EQUIV notes the same way
13801         we use REG_EQUAL.
13802
13803 2007-04-17  Anatoly Sokolov <aesok@post.ru>
13804
13805         PR target/30483
13806         * config/avr/avr.c (ptrreg_to_str): Replace gcc_unreachable() with
13807         error().
13808
13809 2007-04-17  H.J. Lu  <hongjiu.lu@intel.com>
13810
13811         * config/i386/sse.md (sse_vmaddv4sf3): Use register_operand
13812         on "0".
13813         (sse_vmmulv4sf3): Likewise.
13814         (sse2_vmaddv2df3): Likewise.
13815         (sse2_vmmulv2df3): Likewise.
13816
13817 2007-04-17  Zdenek Dvorak  <dvorakz@suse.cz>
13818
13819         PR rtl-optimization/31360
13820         * cfgloopanal.c (target_small_cost, target_pres_cost): Removed.
13821         (target_reg_cost): New.
13822         (init_set_costs): Initialize target_reg_cost.  Add comments
13823         regarding the rationale of the costs.
13824         (global_cost_for_size): Renamed to...
13825         (estimate_reg_pressure_cost): ... and simplify.  Decrease importance
13826         of register pressure.
13827         * tree-ssa-loop-ivopts.c (ivopts_global_cost_for_size): Use
13828         estimate_reg_pressure_cost.  Add number of ivs.
13829         (determine_set_costs): Dump target_reg_cost.
13830         * loop-invariant.c (gain_for_invariant):  Use
13831         estimate_reg_pressure_cost.  Removed n_inv_uses argument.
13832         (best_gain_for_invariant, find_invariants_to_move): Remove
13833         n_inv_uses.
13834         * cfgloop.h (target_small_cost, target_pres_cost): Removed.
13835         (target_reg_cost): Declare.
13836         (global_cost_for_size): Declaration removed.
13837         (estimate_reg_pressure_cost): Declare.
13838
13839 2007-04-17  Peter Bergner  <bergner@vnet.ibm.com>
13840
13841         * config/rs6000/rs6000.c (rs6000_hard_regno_mode_ok): Force TDmode
13842         regnos into even/odd register pairs.
13843         * config/rs6000/rs6000.h [SLOW_UNALIGNED_ACCESS]: Treat DDmode and
13844         TDmode similar to the other floating point modes.
13845         [SECONDARY_MEMORY_NEEDED]: Treat DDmode similar to DFmode.
13846         * config/rs6000/dfp.md (negdd2, absdd2, negtd2, abstd2): New
13847         define_expand's.
13848         (negdd2_fpr, absdd2_fpr, nabsdd2_fpr, negtd2_fpr, abstd2_fpr,
13849         nabstd2_fpr, movdd_hardfloat64_mfpgpr): New define_insn's.
13850         (movdd_hardfloat64): Use TARGET_MFPGPR.
13851
13852 2007-04-17  Bernd Schmidt  <bernd.schmidt@analog.com>
13853
13854         * reload1.c (delete_output_reload): Don't count output in n_inherited.
13855
13856         Revert
13857         2005-01-05  Richard Henderson  <rth@redhat.com>
13858         PR rtl-opt/10692
13859         * reload1.c (do_input_reload): Restrict the optimization deleteing
13860         a previous output reload to RELOAD_FOR_INPUT.
13861
13862 2007-04-17  Dorit Nuzman  <dorit@il.ibm.com>
13863
13864         * tree-vectorizer.h (stmt_vec_info_type): Add enum value
13865         induc_vec_info_type.
13866         (vectorizable_induction): New function declaration.
13867         * tree-vect-transform.c (get_initial_def_for_induction): No need to
13868         check if already vectorized.  Find first place in BB where new stmts
13869         can be inserted.  Takes only one argument.
13870         (vectorizable_induction): New function.
13871         (vect_transform_stmt): Add case for induc_vec_info_type to call
13872         vectorizable_induction.
13873         (vect_transform_loop): Consider phis for vectorization.
13874         * tree-vect-analyze.c (vect_determine_vectorization_factor): Simplify
13875         condition.
13876         (analyze_operations): Call vectorizable_induction when analyzing phis.
13877         Fix comment.
13878         (vect_mark_stmts_to_be_vectorized): Remove redundant checks.
13879         (vect_mark_relevant): Include phis in relevance analysis.
13880         (vect_mark_stmts_to_be_vectorize): Likewise.
13881         * tree-vect-patterns.c (widened_name_p): Remove obsolete asserts.
13882
13883 2007-04-16  Lawrence Crowl  <crowl@google.com>
13884
13885         * doc/invoke.texi (Debugging Options): Add documentation for the
13886         -femit-struct-debug options -femit-struct-debug-baseonly,
13887         -femit-struct-debug-reduced, and
13888         -femit-struct-debug-detailed[=...].
13889
13890         * c-opts.c (c_common_handle_option): Add
13891         OPT_femit_struct_debug_baseonly, OPT_femit_struct_debug_reduced,
13892         and OPT_femit_struct_debug_detailed_.
13893         * c.opt: Add specifications for
13894         -femit-struct-debug-baseonly, -femit-struct-debug-reduced,
13895         and -femit-struct-debug-detailed[=...].
13896         * opts.c (set_struct_debug_option): Parse the
13897         -femit-struct-debug-... options.
13898         * opts.c (matches_main_base, main_input_basename,
13899         main_input_baselength, base_of_path, matches_main_base): Add
13900         variables and functions to compare header base name to compilation
13901         unit base name.
13902         * opts.c (should_emit_struct_debug): Add to determine to emit a
13903         structure based on the option.
13904         (dump_struct_debug) Also disabled function to debug this
13905         function.
13906         * opts.c (handle_options): Save the base name of the
13907         compilation unit.
13908
13909         * langhooks-def.h (LANG_HOOKS_GENERIC_TYPE_P): Define.
13910         (LANG_HOOKS_FOR_TYPES_INITIALIZER): Add.
13911         This hook indicates if a type is generic.  Set it by default
13912         to "never generic".
13913         * langhooks.h (struct lang_hooks_for_types): Add a new hook
13914         to determine if a struct type is generic or not.
13915         * cp/cp-tree.h (class_tmpl_impl_spec_p): Declare a C++ hook.
13916         * cp/tree.c (class_tmpl_impl_spec_p): Implement the C++ hook.
13917         * cp/cp-lang.c (LANG_HOOKS_GENERIC_TYPE_P): Override null C hook
13918         with live C++ hook.
13919
13920         * flags.h (enum debug_info_usage): Add an enumeration to describe
13921         a program's use of a structure type.
13922         * dwarf2out.c (gen_struct_or_union_type_die): Add a new parameter
13923         to indicate the program's usage of the type.  Filter structs based
13924         on the -femit-struct-debug-... specification.
13925         (gen_type_die): Split into two routines, gen_type_die and
13926         gen_type_die_with_usage.  gen_type_die is now a wrapper
13927         that assumes direct usage.
13928         (gen_type_die_with_usage): Replace calls to gen_type_die
13929         with gen_type_die_with_usage adding the program usage of
13930         the referenced type.
13931         (dwarf2out_imported_module_or_decl): Suppress struct debug
13932         information using should_emit_struct_debug when appropriate.
13933
13934 2007-04-16  Ian Lance Taylor  <iant@google.com>
13935
13936         PR tree-optimization/31522
13937         * tree-vrp.c (vr_phi_edge_counts): New static variable.
13938         (vrp_initialize): Allocate vr_phi_edge_counts.
13939         (vrp_visit_phi_node): Don't push to infinity if we saw a new
13940         executable edge.  Drop test for all constants.
13941         (vrp_finalize): Free vrp_phi_edge_counts.
13942
13943         * doc/cpp.texi (Common Predefined Macros): Clarify description of
13944         __GNUC_GNU_INLINE__ and __GNUC_STDC_INLINE__.
13945
13946         * tree-ssa-propagate.c (cfg_blocks_add): Insert blocks with fewer
13947         predecessors at head rather than tail.
13948
13949 2007-04-16  Matthias Klose  <doko@debian.org>
13950
13951         * config/alpha/linux.h (CPP_SPEC): Define.
13952         * config/arm/linux-gas.h (SUBTARGET_CPP_SPEC): Extend.
13953
13954 2007-04-16  Aldy Hernandez  <aldyh@redhat.com>
13955
13956         * function.h: Remove sequence_stack extern declaration.
13957
13958 2007-04-16  Kazu Hirata  <kazu@codesourcery.com>
13959
13960         * config/m68k/m68k.h (LONG_DOUBLE_TYPE_SIZE): Change to 64 on
13961         TARGET_FIDOA.
13962         (LIBGCC2_LONG_DOUBLE_TYPE_SIZE): Change to 64 if __mfido__ is
13963         defined.
13964
13965 2007-04-16  Anatoly Sokolov <aesok@post.ru>
13966
13967         * config/avr/avr.c (avr_arch_types): Rearranging  array.
13968         (enum avr_arch): Add.
13969         (avr_mcu_types): Use avr_arch enumeration constants instead of
13970         numbers.
13971         * config/avr/avr.h (LINK_SPEC): Simplify.
13972
13973 2007-04-16  Kazu Hirata  <kazu@codesourcery.com>
13974
13975         * config/m68k/m68k.c (m68k_libcall_value,
13976         m68k_function_value): Use macros for register names more.
13977
13978         * config/m68k/m68k.h (FRAME_POINTER_REGNUM): Use A6_REG
13979         instead.
13980         (M68K_REGNAME): Use A6_REG.
13981         * config/m68k/m68k.md (FP_REG): Rename to A6_REG.
13982
13983 2007-04-16  Maxim Kuvyrkov  <mkuvyrkov@ispras.ru>
13984
13985         PR middle-end/28071
13986         * sched-int.h (struct deps): Split field 'pending_lists_length' into
13987         'pending_read_list_length' and 'pending_write_list_length'.  Update
13988         comment.
13989         * sched-deps.c (add_insn_mem_dependence): Change signature.  Update
13990         to handle two length counters instead of one.  Update all uses.
13991         (flush_pending_lists, sched_analyze_1, init_deps): Update to handle
13992         two length counters instead of one.
13993         * sched-rgn.c (propagate_deps): Update to handle two length counters
13994         instead of one.
13995
13996 2007-04-16  H.J. Lu  <hongjiu.lu@intel.com>
13997
13998         PR target/31582
13999         * config/i386/i386.c (ix86_expand_vec_set_builtin): Make a
14000         copy of source, pass it to ix86_expand_vector_set and return
14001         it as target.
14002
14003 2007-04-16  David Ung  <davidu@mips.com>
14004             Joseph Myers  <joseph@codesourcery.com>
14005
14006         * config/mips/mips.h (PROCESSOR_74KC, PROCESSOR_74KF,
14007         PROCESSOR_74KX, TUNE_74K, GENERATE_MADD_MSUB): Define.
14008         * config/mips/mips.c (mips_cpu_info_table, mips_rtx_cost_data):
14009         Add 74K processor information.
14010         * config/mips/mips.md: Include 74k.md.
14011         (cpu): Add 74kc,74kf,74kx.
14012         (ISA_HAS_MADD_MSUB): Change to GENERATE_MADD_MSUB throughout.
14013         * config/mips/74k.md: New.
14014         * doc/invoke.texi (MIPS Options): Document 74K support.
14015
14016 2007-04-16  Dorit Nuzman  <dorit@il.ibm.com>
14017
14018         * tree-vect-analyze.c (vect_analyze_operations): Reorganize calls to
14019         vectorizable_* functions.
14020         * tree-vect-transform.c (vectorizable_call): Add check for
14021         STMT_VINFO_RELEVANT_P, STMT_VINFO_DEF_TYPE and STMT_VINFO_LIVE_P.
14022         (vectorizable_store): likewise.
14023         (vectorizable_conversion): Add check for STMT_VINFO_DEF_TYPE.
14024         Add comments.
14025         (vectorizable_operation, vectorizable_type_demotion): Likewise.
14026         (vectorizable_type_promotion, vectorizable_load): Likewise.
14027         (vectorizable_live_operation, vectorizable_condition): Likewise.
14028         (vectorizable_assignment): Add check for STMT_VINFO_DEF_TYPE and
14029         STMT_VINFO_LIVE_P.
14030         (vect_transform_stmt): Reorganize calls to vectorizable_* functions.
14031
14032 2007-04-15  Kazu Hirata  <kazu@codesourcery.com>
14033
14034         * config/m68k/linux.h (FUNCTION_VALUE_REGNO_P): Use macros for
14035         register numbers more.
14036         * config/m68k/m68k.h (STACK_POINTER_REGNUM,
14037         FRAME_POINTER_REGNUM, STATIC_CHAIN_REGNUM,
14038         M68K_STRUCT_VALUE_REGNUM, FUNCTION_VALUE, LIBCALL_VALUE,
14039         FUNCTION_VALUE_REGNO_P): Likewise.
14040         * config/m68k/m68kelf.h (M68K_STRUCT_VALUE_REGNUM,
14041         STATIC_CHAIN_REGNUM): Likewise.
14042         * config/m68k/m68kemb.h (FUNCTION_VALUE_REGNO_P): Likewise.
14043         * config/m68k/netbsd-elf.h (M68K_STRUCT_VALUE_REGNUM,
14044         STATIC_CHAIN_REGNUM, FUNCTION_VALUE_REGNO_P): Likewise.
14045         * config/m68k/m68k.md (FP_REG): New.
14046
14047 2007-04-15  Kazu Hirata  <kazu@codesourcery.com>
14048
14049         * config/m68k/m68k.h (PREFERRED_STACK_BOUNDARY): Prefer 32-bit
14050         alignment on fido.
14051
14052 2007-04-15  Kazu Hirata  <kazu@codesourcery.com>
14053
14054         * config/i386/i386.c, config/s390/s390.c, config/s390/s390.md,
14055         tree-ssa-loop-niter.c, tree-ssa-structalias.c, tree-vrp.c: Fix
14056         comment typos.
14057
14058 2007-04-11  Zdenek Dvorak  <dvorakz@suse.cz>
14059
14060         * tree-ssa-loop-prefetch.c (loop_prefetch_arrays): Ignore
14061         cold loops.
14062
14063 2007-04-14  Andrew Pinski  <andrew_pinski@playstation.sony.com>
14064
14065         PR c/31520
14066         * c-decl.c (finish_decl): Grab the type of the decl after the call
14067         to store_init_value.
14068
14069 2007-04-14  Steven Bosscher  <steven@gcc.gnu.org>
14070
14071         * common.opt (fforward-propagate): Fix "Optimization" annotation.
14072
14073 2007-04-14  Jakub Jelinek  <jakub@redhat.com>
14074
14075         PR c++/25874
14076         * omp-low.c (expand_omp_parallel): If child_cfun->cfg, free
14077         dominators, post dominators and cleanup cfg before returning.
14078
14079 2007-04-14  Bernd Schmidt  <bernd.schmidt@analog.com>
14080
14081         * config/bfin/bfin.h (MODES_TIEABLE_P): Allow more modes to be tied.
14082         * config/bfin/bfin.md (movsi_insn): Delete two unused alternatives.
14083
14084 2007-04-14  Kazu Hirata  <kazu@codesourcery.com>
14085
14086         * config.gcc: Recognize fido.
14087         * config/m68k/m68k-devices.def (fidoa): New.
14088         * config/m68k/m68k.h (TARGET_CPU_CPP_BUILTINS): Define
14089         __mfido__.
14090         (FL_FIDOA, TARGET_FIDOA): New.
14091         * config/m68k/m68k.opt (mfidoa): New.
14092
14093 2007-04-13  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
14094
14095         PR middle-end/31322
14096         * dwarf2out.c (output_call_frame_info): Call assemble_external_libcall
14097         when a personality function is used.
14098
14099 2007-04-13  Bob Wilson  <bob.wilson@acm.org>
14100
14101         * config/xtensa/xtensa.c (xtensa_expand_builtin): Use CALL_EXPR_FN.
14102
14103 2007-04-13  Mike Stump  <mrs@apple.com>
14104
14105         * config/darwin-c.c (handle_c_option): Handle -fapple-kext here so
14106         we can...
14107         * config/darwin.opt (fapple-kext): Make C++ only.
14108         * config/darwin.c (darwin_override_options): Remove code to ensure
14109         -fapple-kext is given for C++ only.
14110
14111 2007-04-13  Richard Sandiford  <richard@codesourcery.com>
14112
14113         * config/mips/vxworks.h (SUBTARGET_OVERRIDE_OPTIONS): Define.
14114         * config/mips/mips.c (override_options): Call
14115         SUBTARGET_OVERRIDE_OPTIONS, if defined.
14116
14117 2007-04-13  H.J. Lu  <hongjiu.lu@intel.com>
14118
14119         * config/i386/i386.opt (msvr3-shlib): Removed.
14120
14121         * doc/invoke.texi: Remove -msvr3-shlib.
14122
14123 2007-04-13  H.J. Lu  <hongjiu.lu@intel.com>
14124
14125         * config/i386/i386.opt (mpopcnt): Replace "popcount" instruction
14126         with "popcnt" instruction.
14127
14128 2007-04-13  Richard Guenther  <rguenther@suse.de>
14129
14130         PR tree-optimization/21258
14131         * tree-vrp.c (compare_case_labels): New helper.
14132         (find_switch_asserts): New function.
14133         (find_assert_locations): Call it for SWITCH_EXPRs.
14134
14135 2007-04-13  Uros Bizjak  <ubizjak@gmail.com>
14136
14137         * config/i386/i386.h (X87_FLOAT_MODE_P): Check for TARGET_80387.
14138         * config/i386/i386.md (*cmpfp0): Remove check for TARGET_80387, this
14139         check is now implied in X87_FLOAT_MODE_P.
14140         (*cmpfp_u, *cmpfp_<mode>, *cmpfp_i_i387): Ditto.
14141         (*cmpfp_iu_387, fix_trunc<mode>_fisttp_i386_1): Ditto.
14142         (fix_trunc<mode>_i386_fisttp): Ditto.
14143         (fix_trunc<mode>_i387_fisttp_with_temp): Ditto.
14144         (*fix_trunc<mode>_i387_1, fix_truncdi_i387): Ditto.
14145         (fix_truncdi_i387_with_temp, fix_trunc<mode>_i387): Ditto.
14146         (fix_trunc<mode>_i387_with_temp, *fp_jcc_1_387): Ditto.
14147         (*fp_jcc_2_387, *fp_jcc_5_387, *fp_jcc_6_387): Ditto.
14148         (*fp_jcc_7_387, *fp_jcc_8<mode>_387): Ditto.
14149         (unnamed_splitters): Ditto.
14150         * config/i386/i386.c (function_value_32): Generate FIRST_FLOAT_REG
14151         for X87_FLOAT_MODE_P mode.  Override FIRST_FLOAT_REG with
14152         FIRST_SSE_REG for local functions when SSE math is enabled or
14153         for functions with sseregparm attribute.
14154         (standard_80387_constant_p): Return -1 if mode is not
14155         X87_FLOAT_MODE_P.
14156         (ix86_cc_mode): Assert that scalar mode is not DECIMAL_FLOAT_MODE_P.
14157         (ix86_expand_compare): Ditto.
14158         (ix86_expand_carry_flag_compare): Ditto.
14159         (ix86_expand_int_movcc): Check for SCALAR_FLOAT_MODE_P instead
14160         of FLOAT_MODE_P for cmp_mode and assert that cmp_mode is not
14161         DECIMAL_FLOAT_MODE_P.
14162         (ix86_preferred_output_reload_class): Use X87_FLOAT_MODE_P instead
14163         of SCALAR_FLOAT_MODE_P.
14164         (ix86_rtx_costs) [PLUS] Remove FLOAT_MODE_P and fall through to ...
14165         [MINUS]: ... here.  Add SSE_FLOAT_MODE_P and X87_FLOAT_MODE_P
14166         checks before FLOAT_MODE_P.
14167         [MULT]: Add SSE_FLOAT_MODE_P and X87_FLOAT_MODE_P checks
14168         before FLOAT_MODE_P.
14169         [DIV]: Ditto.
14170         [NEG]: Ditto.
14171         [ABS]: Ditto.
14172         [SQRT]: Ditto.
14173         [FLOAT_EXTEND]: Use SSE_FLOAT_MODE_P.
14174
14175 2007-04-12  Paolo Bonzini  <bonzini@gnu.org>
14176             Charles Wilson  <libtool@cwilson.fastmail.fm>
14177
14178         * Makefile.in (stamp-as, stamp-collect-ld, stamp-nm): Remove.
14179         (libgcc.mvars): Don't depend on them.
14180         * configure.ac (as, collect-ld, nm): Create from exec-tool.in.
14181         * exec-tool.in: New.
14182
14183 2007-04-12  Brooks Moses  <brooks.moses@codesourcery.com>
14184
14185         * doc/invoke.text (--help): Document --help=common.
14186
14187 2007-04-12  Thomas Neumann  <tneumann@users.sourceforge.net>
14188
14189         * stub-objc.c (objc_build_keyword_decl): Avoid C++ keywords.
14190
14191 2007-04-12  Richard Sandiford  <richard@codesourcery.com>
14192
14193         * Makefile.in (insn-emit.o): Depend on $(INTEGRATE_H).
14194         * genemit.c (main): Emit #include "integrate.h".
14195         * config/mips/mips-protos.h (SYMBOL_HALF): New mips_symbol_type.
14196         (LOADGP_RTP): New mips_loadgp_style.
14197         * config/mips/mips.h: Include config/vxworks-dummy.h.
14198         (TARGET_RTP_PIC): New macro.
14199         (TARGET_USE_GOT): Return true for TARGET_RTP_PIC.
14200         (TARGET_USE_PIC_FN_ADDR_REG): Return true for TARGET_VXWORKS_RTP.
14201         (ASM_OUTPUT_ADDR_DIFF_ELT): Emit function-relative case tables
14202         for TARGET_RTP_PIC.
14203         * config/mips/vxworks.h (SUBTARGET_ASM_SPEC): Define.  Pass down
14204         -mvxworks-pic when using -mrtp and a PIC option.
14205         * config/mips/mips.c (mips_classify_symbol): Return SYMBOL_GOT_DISP
14206         for RTP PIC.
14207         (mips_symbolic_constant_p, mips_symbolic_address_p)
14208         (mips_symbol_insns): Handle SYMBOL_HALF.
14209         (override_options): Warn about -G and -mrtp being used together.
14210         Initialize mips_lo_relocs[SYMBOL_HALF].
14211         (mips_current_loadgp_style): Return LOADGP_RTP for RTP PIC.
14212         (mips_emit_loadgp): Handle LOADGP_RTP.
14213         (mips_in_small_data_p): Return false for TARGET_VXWORKS_RTP.
14214         * config/mips/mips.md (loadgp_rtp): New insn and splitter.
14215         (tablejump): Handle function-relative case table entries if
14216         TARGET_RTP_PIC.
14217         * config/mips/predicates.md (symbol_ref_operand): New predicate.
14218
14219 2007-04-12  Richard Sandiford  <richard@codesourcery.com>
14220
14221         * config/mips/mips.md (load_call<mode>): Allow any general register.
14222         destination.
14223         (sibcall_value_internal, sibcall_value_multiple_internal)
14224         (call_value_internal, call_value_split, call_value_multiple_internal)
14225         (call_value_multiple_split): Remove constraints from operand 0.
14226
14227 2007-04-12  Richard Sandiford  <richard@codesourcery.com>
14228
14229         * config/mips/mips-protos.h: In comments, refer to loadgp_absolute
14230         rather than loadgp_noshared.
14231         * config/mips/mips.c (mips_emit_loadgp): Use gen_loadgp_absolute
14232         instead of gen_loadgp_noshared.  Use gen_loadgp_newabi instead of
14233         gen_loadgp.
14234         * config/mips/mips.md (loadgp): Rename to...
14235         (loadgp_newabi): ...this.
14236         (loadgp_noshared): Rename to...
14237         (loadgp_absolute): ...this.
14238
14239 2007-04-12  Richard Sandiford  <richard@codesourcery.com>
14240
14241         * config/mips/mips.c (mips_ok_for_lazy_binding_p): Always return
14242         false for locally-binding symbols.
14243         (mips_dangerous_for_la25_p): Check mips_global_symbol_p.
14244
14245 2007-04-12  Richard Sandiford  <richard@codesourcery.com>
14246
14247         * config/mips/mips-protos.h (SYMBOL_GOT_LOCAL): Rename to...
14248         (SYMBOL_GOT_PAGE_OFST): ...this.
14249         (SYMBOL_GOT_GLOBAL): Rename to...
14250         (SYMBOL_GOT_DISP): ...this.
14251         (SYMBOL_GOTOFF_GLOBAL): Rename to...
14252         (SYMBOL_GOTOFF_DISP): ...this.  Update comments accordingly.
14253         * config/mips/mips.c (mips_global_symbol_p): New function.
14254         (mips_symbol_binds_local_p): Likewise.
14255         (mips_classify_symbol): Rename SYMBOL_GOT_GLOBAL to SYMBOL_GOT_DISP
14256         and SYMBOL_GOT_LOCAL to SYMBOL_GOT_PAGE_OFST.  Use
14257         mips_global_symbol_p and mips_symbol_binds_local_p.
14258         (mips_symbolic_constant_p, mips_symbolic_address_p, mips_symbol_insns)
14259         (override_options): Rename SYMBOL_GOT_GLOBAL to SYMBOL_GOT_DISP,
14260         SYMBOL_GOT_LOCAL to SYMBOL_GOT_PAGE_OFST and SYMBOL_GOTOFF_GLOBAL to
14261         SYMBOL_GOTOFF_DISP.
14262         (mips_ok_for_lazy_binding_p): New function.
14263         (mips_load_call_address, mips_expand_call): Use it.
14264         (mips_dangerous_for_la25_p): Likewise.
14265         * config/mips/mips.md (*xgot_hi<mode>, *xgot_lo<mode>)
14266         (*got_disp<mode>): Use got_disp_operand instead of
14267         global_got_operand.  Use SYMBOL_GOTOFF_DISP instead of
14268         SYMBOL_GOTOFF_GLOBAL.
14269         (*got_page<mode>): Use got_page_ofst_operand instead of
14270         local_got_operand.
14271         * config/mips/predicates.md (const_call_insn_operand): Use
14272         SYMBOL_GOT_DISP instead of SYMBOL_GOT_GLOBAL.
14273         (global_got_operand): Rename to...
14274         (got_disp_operand): ...this and use SYMBOL_GOT_DISP instead of
14275         SYMBOL_GOT_GLOBAL.
14276         (local_got_operand): Rename to...
14277         (got_page_ofst_operand): ...this and use SYMBOL_GOT_PAGE_OFST instead
14278         of SYMBOL_GOT_LOCAL.
14279
14280 2007-04-12  Richard Sandiford  <richard@codesourcery.com>
14281
14282         * config/mips/mips.h (TARGET_SPLIT_CALLS): Check
14283         TARGET_CALL_CLOBBERED_GP.
14284         (TARGET_SIBCALLS): Check TARGET_USE_GOT instead of TARGET_ABICALLS.
14285         (TARGET_USE_GOT, TARGET_CALL_CLOBBERED_GP): New macros.
14286         (TARGET_CALL_SAVED_GP, TARGET_USE_PIC_FN_ADDR_REG): Likewise.
14287         (STARTING_FRAME_OFFSET): Check TARGET_CALL_CLOBBERED_GP instead
14288         of TARGET_ABICALLS && !TARGET_NEWABI.
14289         (MIPS_CALL): Check TARGET_USE_GOT instead of TARGET_ABICALLS.
14290         * config/mips/mips.c (mips_load_call_address): Check
14291         TARGET_CALL_SAVED_GP instead of TARGET_NEWABI.
14292         (mips_global_pointer): Check TARGET_USE_GOT instead of TARGET_ABICALLS.
14293         Check TARGET_CALL_SAVED_GP instead of TARGET_NEWABI.
14294         (mips_save_reg_p): Check TARGET_CALL_SAVED_GP instead of
14295         TARGET_ABICALLS && TARGET_NEWABI.
14296         (mips_current_loadgp_style): Check TARGET_USE_GOT instead of
14297         TARGET_ABICALLS.
14298         (mips_expand_prologue): Check TARGET_OLDABI instead of !TARGET_NEWABI.
14299         (mips_expand_epilogue): Check TARGET_CALL_SAVED_GP instead of
14300         TARGET_ABICALLS && TARGET_NEWABI.
14301         (mips_output_mi_thunk): Check TARGET_USE_GOT instead of
14302         TARGET_ABICALLS.  Check TARGET_CALL_SAVED_GP instead of
14303         TARGET_NEWABI.  Use TARGET_USE_PIC_FN_ADDR_REG to decide
14304         whether indirect calls must use $25.
14305         (mips_extra_live_on_entry): Check TARGET_GOT instead of
14306         TARGET_ABICALLS.
14307         * config/mips/mips.md (jal_macro): Check flag_pic and
14308         TARGET_CALL_CLOBBERED_GP instead of TARGET_ABICALLS and TARGET_NEWABI.
14309         (builtin_setjmp_setup, builtin_longjmp): Check TARGET_USE_GOT
14310         instead of TARGET_ABICALLS.
14311         (exception_receiver): Check TARGET_CALL_CLOBBERED_GP instead of
14312         TARGET_ABICALLS && TARGET_OLDABI.
14313         (load_call<mode>): Check TARGET_USE_GOT instead of TARGET_ABICALLS.
14314         (sibcall): In the comment above the define_insn, mention
14315         TARGET_USE_PIC_FN_ADDR_REG instead of TARGET_ABICALLS.
14316         * config/mips/constraints.md (c): Check TARGET_USE_PIC_FN_ADDR_REG
14317         instead of TARGET_ABICALLS.
14318
14319 2007-04-12  Bernd Schmidt  <bernd.schmidt@analog.com>
14320
14321         * doc/md.texi (Blackfin family constraints): Document PA and PB.
14322         * config/bfin/bfin.h (CONST_OK_FOR_P): Handle PA and PB.
14323         (MACFLAGS_MATCH_P): New macro.
14324         * config/bfin/bfin.c (print_operand): Handle MACFLAG_IS_M.
14325         (bfin_secondary_reload): Treat EVEN_AREGS and ODD_AREGS like AREGS.
14326         * config/bfin/bfin.md (MACFLAG_IS_M): New constant.  Renumber some of
14327         the other MACFLAG constants.
14328         (sum_of_accumulators, lshrpdi3, ashrpdi3): New patterns.
14329         (flag_machi): Tighten constraints.  Renumber some of the operands.
14330         (flag_machi_acconly): Tighten constraints.  Correct operand numbers in
14331         output template.
14332         (flag_machi_parts_acconly): New pattern.
14333         (flag_macinithi): Tighten constraints.  Allow any accumulator to be
14334         used.
14335         (flag_macinit1hi): Tighten constraints.
14336         (flag_mul_macv2hi_parts_acconly): New pattern.
14337
14338         * config/bfin/lib1funcs.asm (___umulsi3_highpart, __smulsi3_highpart):
14339         Use a more efficient implementation.
14340         * config/bfin/bfin.md (umulsi3_highpart, smulsi3_highpart): Emit
14341         inline sequences when not optimizing for size.
14342
14343         * config/bfin/bfin.md (movhi_low2high, movhi_high2high, movhi_low2low,
14344         movhi_high2low): Delete, merge functionality into...
14345         (packv2hi): ... this pattern.
14346
14347         2007-02-11  Jie Zhang  <jie.zhang@analog.com>
14348         * config/bfin/bfin.opt (msim): New option.
14349         (mcpu=): New option.
14350         * config/bfin/bfin-protos.h (enum bfin_cpu): New.
14351         (bfin_cpu_t): Typedef of enum bfin_cpu.
14352         (bfin_cpu_type): New declaration.
14353         * config/bfin/elf.h (STARTFILE_SPEC): Add support for
14354         -msim and -mcpu= options.
14355         (LIB_SPEC): Likewise.
14356         * config/bfin/bfin.c (bfin_cpu_type): Define.
14357         (bfin_handle_option): Handle -mcpu= option.
14358         * config/bfin/bfin.h (DEFAULT_CPU_TYPE): Define as BFIN_CPU_BF532.
14359         (TARGET_CPU_CPP_BUILTINS): Define __ADSPBF531__, __ADSPBF532__,
14360         __ADSPBF533__ or __ADSPBF537__ according to the cpu type.
14361
14362 2007-04-12  Richard Sandiford  <richard@codesourcery.com>
14363
14364         * config.gcc (*-*-vxworks*): Don't add to tm_files in this stanza.
14365         (arm-wrs-vxworks, mips-wrs-vxworks, powerpc-wrs-vxworks)
14366         (powerpc-wrs-vxworksae): Use ${tm_file}.
14367         (i[4567]86-wrs-vxworks, i[4567]86-wrs-vxworksae): Add svr4.h
14368         after elfos.h.  Remove i386/sysv4.h and add i386/vx-common.h.
14369         * config/i386/vx-common.h: New file.
14370
14371 2007-04-12  Richard Sandiford  <richard@codesourcery.com>
14372
14373         * config/vxworks.h (VXWORKS_STARTFILE_SPEC): Use -l:crt0.o instead
14374         of crt0.o%s.
14375
14376 2007-04-12  Andreas Krebbel  <krebbel1@de.ibm.com>
14377
14378         * config/s390/s390.md ("trunctddd2"): Use TDmode for the target of
14379         ldxtr.
14380
14381 2007-04-12  Douglas Gregor  <doug.gregor@gmail.com>
14382
14383         PR c++/31078
14384         PR c++/31103
14385         * c-common.c (c_build_qualified_type): Set canonical type
14386         appropriately.
14387
14388 2007-04-12  Richard Guenther  <rguenther@suse.de>
14389
14390         * tree-pretty-print.c (dump_generic_node): Print ARRAY_REF
14391         lower bound and element size if lower bound is not zero
14392         or either of the ARRAY_REF operands is set.
14393
14394 2007-04-12  Richard Guenther  <rguenther@suse.de>
14395
14396         PR tree-optimization/24689
14397         PR tree-optimization/31307
14398         * fold-const.c (operand_equal_p): Compare INTEGER_CST array
14399         indices by value.
14400         * gimplify.c (canonicalize_addr_expr): To be consistent with
14401         gimplify_compound_lval only set operands two and three of
14402         ARRAY_REFs if they are not gimple_min_invariant.  This makes
14403         it never at this place.
14404         * tree-ssa-ccp.c (maybe_fold_offset_to_array_ref): Likewise.
14405
14406 2007-04-11  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
14407
14408         * pa.c (pa_som_asm_init_sections): Ensure that cfun->machine is not
14409         null before emitting a .nsubspa directive.
14410
14411 2007-04-11  Diego Novillo  <dnovillo@redhat.com>
14412
14413         * tree-ssa-alias.c (dump_mem_ref_stats): Do not call
14414         need_to_partition_p if there are no memory statements in the
14415         function.
14416
14417 2007-04-11  Zdenek Dvorak  <dvorakz@suse.cz>
14418
14419         * tree-data-ref.c (chrec_steps_divide_constant_p): Removed.
14420         (gcd_of_steps_may_divide_p): New function.
14421         (analyze_miv_subscript): Use gcd_of_steps_may_divide_p.
14422
14423 2007-04-11  Bernd Schmidt  <bernd.schmidt@analog.com>
14424
14425         * reload.c (find_reloads_toplev, find_reloads_address,
14426         find_reloads_address_1, find_reloads_subreg_address): Use rtx_equal_p,
14427         not a pointer equality test, to decide if we need to call
14428         push_reg_equiv_alt_mem.
14429
14430 2007-04-11  Sebastian Pop  <sebastian.pop@inria.fr>
14431
14432         * tree-data-ref.c (affine_function_zero_p, constant_access_functions,
14433         insert_innermost_unit_dist_vector, add_distance_for_zero_overlaps):
14434         New.
14435         (build_classic_dist_vector): Call add_distance_for_zero_overlaps.
14436
14437 2007-04-11  Zdenek Dvorak  <dvorakz@suse.cz>
14438
14439         * tree-data-ref.c (add_multivariate_self_dist): Force the distance
14440         vector to be positive.
14441
14442 2007-04-11  Diego Novillo  <dnovillo@redhat.com>
14443
14444         PR 30735
14445         PR 31090
14446         * doc/invoke.texi: Document --params max-aliased-vops and
14447         avg-aliased-vops.
14448         * tree-ssa-operands.h (get_mpt_for, dump_memory_partitions,
14449         debug_memory_partitions): Move to tree-flow.h
14450         * params.h (AVG_ALIASED_VOPS): Define.
14451         * tree-ssa-alias.c (struct mp_info_def): Remove.  Update all
14452         users.
14453         (mp_info_t): Likewise.
14454         (get_mem_sym_stats_for): New.
14455         (set_memory_partition): Move from tree-flow-inline.h.
14456         (mark_non_addressable): Only clear the set of symbols for the
14457         partition if it exists.
14458         (dump_memory_partitions): Move from tree-ssa-operands.c
14459         (debug_memory_partitions): Likewise.
14460         (need_to_partition_p): New.
14461         (dump_mem_ref_stats): New.
14462         (debug_mem_ref_stats): New.
14463         (dump_mem_sym_stats): New.
14464         (debug_mem_sym_stats): New.
14465         (update_mem_sym_stats_from_stmt): New.
14466         (compare_mp_info_entries): New.
14467         (mp_info_cmp): Call it.
14468         (sort_mp_info): Change argument to a list of mem_sym_stats_t
14469         objects.
14470         (get_mpt_for): Move from tree-ssa-operands.c.
14471         (find_partition_for): New.
14472         (create_partition_for): Remove.
14473         (estimate_vop_reduction): New.
14474         (update_reference_counts): New.
14475         (build_mp_info): New.
14476         (compute_memory_partitions): Refactor.
14477         Document new heuristic.
14478         Call build_mp_info, update_reference_counts,
14479         find_partition_for and estimate_vop_reduction.
14480         (compute_may_aliases): Populate virtual operands before
14481         calling debugging dumps.
14482         (delete_mem_sym_stats): New.
14483         (delete_mem_ref_stats): New.
14484         (init_mem_ref_stats): New.
14485         (init_alias_info): Call it.
14486         (maybe_create_global_var): Remove alias_info argument.
14487         Get number of call sites and number of pure/const call sites
14488         from gimple_mem_ref_stats().
14489         (dump_alias_info): Call dump_memory_partitions first.
14490         (dump_points_to_info_for): Show how many times a pointer has
14491         been dereferenced.
14492         * opts.c (decode_options): For -O2 set --param
14493         max-aliased-vops to 500.
14494         For -O3 set --param max-aliased-vops to 1000 and --param
14495         avg-aliased-vops to 3.
14496         * fortran/options.c (gfc_init_options): Remove assignment to
14497         MAX_ALIASED_VOPS.
14498         * tree-flow-inline.h (gimple_mem_ref_stats): New.
14499         * tree-dfa.c (dump_variable): Dump memory reference
14500         statistics.
14501         Dump NO_ALIAS* settings.
14502         (referenced_var_lookup): Tidy.
14503         (mem_sym_stats): New.
14504         * tree-ssa-copy.c (may_propagate_copy): Return true if DEST
14505         and ORIG are different SSA names for a memory partition.
14506         * tree-ssa.c (delete_tree_ssa): Call delete_mem_ref_stats.
14507         * tree-flow.h (struct mem_sym_stats_d): Define.
14508         (mem_sym_stats_t): Define.
14509         (struct mem_ref_stats_d): Define.
14510         (struct gimple_df): Add field mem_ref_stats.
14511         (enum noalias_state): Define.
14512         (struct var_ann_d): Add bitfield noalias_state.
14513         (mem_sym_stats, delete_mem_ref_stats, dump_mem_ref_stats,
14514         debug_mem_ref_stats, debug_memory_partitions,
14515         debug_mem_sym_stats): Declare.
14516         * tree-ssa-structalias.c (update_alias_info): Update call
14517         sites, pure/const call sites and asm sites in structure
14518         returned by gimple_mem_ref_stats.
14519         Remove local variable IS_POTENTIAL_DEREF.
14520         Increase NUM_DEREFS if the memory expression is a potential
14521         dereference.
14522         Call update_mem_sym_stats_from_stmt.
14523         If the memory references memory, call
14524         update_mem_sym_stats_from_stmt for all the direct memory
14525         symbol references found.
14526         (intra_create_variable_infos): Set noalias_state field for
14527         pointer arguments according to the value of
14528         flag_argument_noalias.
14529         * tree-ssa-structalias.h (struct alias_info): Remove fields
14530         num_calls_found and num_pure_const_calls_found.
14531         (update_mem_sym_stats_from_stmt): Declare.
14532         * params.def (PARAM_MAX_ALIASED_VOPS): Change description.
14533         Set default value to 100.
14534         (PARAM_AVG_ALIASED_VOPS): Define.
14535
14536 2007-04-11  Richard Guenther  <rguenther@suse.de>
14537
14538         PR middle-end/31530
14539         * simplify-rtx.c (simplify_binary_operation_1): Do not simplify
14540         a * -b + c as c - a * b if we honor sign dependent rounding.
14541
14542 2007-04-11  Bernd Schmidt  <bernd.schmidt@analog.com>
14543
14544         * config/bfin/bfin-protos.h (bfin_expand_movmem): Renamed from
14545         bfin_expand_strmov.
14546         * config/bfin/bfin.c (bfin_expand_prologue, bfin_delegitimize_address,
14547         bfin_function_ok_for_sibcall, split_load_immediate): Remove unused
14548         variables.
14549         (initialize_trampoline): Don't use old-style function definition.
14550         (bfin_secondary_reload): Mark IN_P argument as unused.
14551
14552 2007-04-10  Sebastian Pop  <sebastian.pop@inria.fr>
14553
14554         PR tree-optimization/31343
14555         * tree-chrec.h (chrec_zerop): Moved before build_polynomial_chrec.
14556         (build_polynomial_chrec): Return a scalar when the evolution is zero.
14557         * testsuite/gcc.dg/vect/pr31343.c: New.
14558
14559 2007-04-10  Eric Christopher  <echristo@apple.com>
14560
14561         * config/i386/i386.h (X87_FLOAT_MODE_P): New.
14562         * config/i386/i386.md (*cmpfp0): Use.
14563         (*cmpfp_u, *cmpfp_<mode>, *cmpfp_i_i387): Ditto.
14564         (*cmpfp_iu_387, fix_trunc<mode>_fisttp_i386_1): Ditto.
14565         (fix_trunc<mode>_i386_fisttp): Ditto.
14566         (fix_trunc<mode>_i387_fisttp_with_temp): Ditto.
14567         (*fix_trunc<mode>_i387_1, fix_truncdi_i387): Ditto.
14568         (fix_truncdi_i387_with_temp, fix_trunc<mode>_i387): Ditto.
14569         (fix_trunc<mode>_i387_with_temp, *fp_jcc_1_387): Ditto.
14570         (*fp_jcc_2_387, *fp_jcc_5_387, *fp_jcc_6_387): Ditto.
14571         (*fp_jcc_7_387, *fp_jcc_8<mode>_387): Ditto.
14572         (unnamed_splitters): Ditto.
14573         * config/i386/i386.c (output_fix_trunc): Assert that
14574         we're not being passed a TFmode operand.
14575
14576 2007-04-10  Zdenek Dvorak  <dvorakz@suse.cz>
14577
14578         PR tree-optimization/31526
14579         * tree-inline.c (copy_cfg_body): Use last_basic_block instead of
14580         n_basic_blocks to find newly added blocks.
14581
14582 2007-04-10  Uros Bizjak  <ubizjak@gmail.com>
14583
14584         * config/i386/i386.md (fix_trunc<mode>di_sse): Remove "x" from "xm"
14585         alternative.
14586         (fix_trunc<mode>si_sse): Ditto.
14587         (*floatsisf2_mixed, *floatsisf2_sse): Ditto.
14588         (*floatsidf2_mixed, *floatsidf2_sse): Ditto.
14589         (*floatdisf2_mixed, *floatdisf2_sse): Ditto.
14590         (*floatdidf2_mixed, *floatdidf2_sse): Ditto.
14591         (floathi<mode>2): Rename from floathisf2 and floathidf2. Macroize
14592         expander using SSEMODEF mode macro.
14593         (floatsi<mode>2): Rename from floatsisf2 and floashidf2. Macroize
14594         expander using SSEMODEF mode macro.
14595         (*floathi<mode>2_i387): Rename from *floathisf2_i387 and
14596         *floathidf2_i387. Macroize insn using X87MODEF12 mode macro.
14597         (*floatsi<mode>2_i387): Rename from *floatsisf2_i387 and
14598         *floatsidf2_i387. Macroize insn using X87MODEF12 mode macro.
14599         (*floatdi<mode>2_i387): Rename from *floatdisf2_i387 and
14600         *floatdidf2_i387. Macroize insn using X87MODEF12 mode macro.
14601         (float<mode>xf2): Rename from floathixf2, floatsixf2 and floatdixf2.
14602         Macroize insn using X87MODEF mode macro.
14603
14604 2007-04-09  H.J. Lu  <hongjiu.lu@intel.com>
14605
14606         * config/i386/sse.md (sse2_pinsrw): Removed.
14607         (sse2_pextrw): Renamed to ...
14608         (*sse2_pextrw): This.
14609
14610 2007-04-09  Jan Hubicka  <jh@suse.cz>
14611
14612         PR target/27869
14613         * config/i386/sse.md
14614         (sse_vmaddv4sf3, sse_vmmulv4sf3): Remove '%' modifier.
14615         (sse_vmsmaxv4sf3_finite, sse_vmsminv4sf3_finite): Remove.
14616         (sse2_vmaddv2df3, sse2_vmmulv2df3): Remove '%' modifier.
14617         (sse2_vmsmaxv2df3_finite, sse2_vmsminv2df3_finite): Remove.
14618
14619 2007-04-09  Jan Hubicka  <jh@suse.cz>
14620
14621         * tree-ssa-ccp (maybe_fold_offset_to_component_ref): Recurse into
14622         multiple fields of union.
14623
14624 2007-04-09  Zdenek Dvorak  <dvorakz@suse.cz>
14625
14626         * cfgloopmanip.c (create_preheader): Do not use loop_preheader_edge.
14627         (create_preheaders): Check that loops are available.
14628         (fix_loop_structure): Clean up, improve comments.
14629         * tree-ssa-loop-manip.c (rewrite_into_loop_closed_ssa):
14630         Check that loops are available.  Set LOOP_CLOSED_SSA to the loops
14631         state flags.
14632         * tree-scalar-evolution.c (scev_finalize): Clear scalar_evolution_info.
14633         * predict.c (tree_estimate_probability): Do not call
14634         calculate_dominance_info.  Call create_preheaders.
14635         * tree-cfgcleanup.c (cleanup_tree_cfg_loop): Only call
14636         rewrite_into_loop_closed_ssa if LOOP_CLOSED_SSA is set in loops state
14637         flags.
14638         * cfgloop.c (loop_preheader_edge): Assert that loops have preheaders.
14639         * cfgloop.h (LOOP_CLOSED_SSA): New constant.
14640         * tree-cfg.c (tree_split_edge): Make an assert more precise.
14641         * tree-ssa-threadedge.c (thread_across_edge): Comment the function
14642         arguments.
14643
14644 2007-04-08  Jan Hubicka  <jh@suse.cz>
14645
14646         * tree.h (maybe_fold_offset_to_component_ref): Declare.
14647         * tree-ssa-ccp.c (maybe_fold_offset_to_component_ref): Export.
14648         * fold-const.c (fold_unary): Use it.
14649
14650 2007-04-08  Andrew Pinski  <andrew_pinski@playstation.sony.com>
14651
14652         * varasm.c (assemble_variable): Remove call to
14653         lang_hooks.decls.prepare_assemble_variable.
14654         * langhooks-def.h (LANG_HOOKS_PREPARE_ASSEMBLE_VARIABLE): Kill.
14655         (LANG_HOOKS_DECLS): Remove LANG_HOOKS_PREPARE_ASSEMBLE_VARIABLE.
14656         * langhooks.h (lang_hooks_for_decls): Remove
14657         prepare_assemble_variable.
14658
14659 2007-04-08  Mike Stump  <mrs@apple.com>
14660
14661         * config/i386/i386.c: Use inc/dec on Core2.
14662
14663 2007-04-08  Steven Bosscher  <steven@gcc.gnu.org>
14664
14665         * langhooks.c (lhd_tree_inlining_add_pending_fn_decls,
14666         lhd_tree_inlining_anon_aggr_type_p, lhd_tree_inlining_start_inlining,
14667         lhd_tree_inlining_end_inlining): Remove.
14668         * langhooks.h (struct lang_hooks_for_tree_inlining): Remove then
14669         add_pending_fn_decls, anon_aggr_type_p, start_inlining, and
14670         end_inlining hooks.
14671         * langhooks-def.h (lhd_tree_inlining_add_pending_fn_decls,
14672         lhd_tree_inlining_anon_aggr_type_p, lhd_tree_inlining_start_inlining,
14673         lhd_tree_inlining_end_inlining): Remove prototypes.
14674         (LANG_HOOKS_TREE_INLINING_ADD_PENDING_FN_DECLS,
14675         LANG_HOOKS_TREE_INLINING_ANON_AGGR_TYPE_P,
14676         LANG_HOOKS_TREE_INLINING_START_INLINING,
14677         LANG_HOOKS_TREE_INLINING_END_INLINING): Remove.
14678
14679         * c-objc-common.h (LANG_HOOKS_TREE_INLINING_ANON_AGGR_TYPE_P): Do
14680         not set it.
14681
14682 2007-04-08  Anatoly Sokolov <aesok@post.ru>
14683
14684         PR target/29932
14685         * config/avr/predicates.md (io_address_operand): Delete predicate.
14686         (low_io_address_operand): Don't use 'mode' argument.
14687         (higth_io_address_operand): Rename ...
14688         (high_io_address_operand): ... to this. Don't use 'mode' argument.
14689         * config/avr/avr.md (*sbix_branch_tmp, *sbix_branch_tmp_bit7): Adjust
14690         for above change.
14691
14692 2007-04-07  Daniel Berlin  <dberlin@dberlin.org>
14693
14694         Revert change removing staticp.
14695
14696 2007-04-07  Anatoly Sokolov <aesok@post.ru>
14697
14698         PR target/30289
14699         * config/avr/avr.md (*clrmemqi, *clrmemhi): Mark operand 4 as
14700         earlyclobber.
14701
14702 2007-04-07  Bruce Korb  <bkorb@gnu.org>
14703
14704         * c.opt: Add -Wformat-contains-nul.
14705         * c-format.c (set_Wformat):  Set warn_format_contains_nul to the
14706           -Wformat setting.
14707         (check_format_info_main): Check OPT_Wformat_contains_nul before emitting
14708         the NUL byte warning.
14709
14710 2007-04-07  H.J. Lu  <hongjiu.lu@intel.com>
14711
14712         * config/i386/i386.c (ix86_handle_option): Handle SSSE3.
14713
14714 2007-04-06  Daniel Berlin  <dberlin@dberlin.org>
14715
14716         * tree.c (staticp): No longer use staticp langhook.
14717         * langhooks.c (lhd_staticp): Removed.
14718         * langhooks.h (struct lang_hooks): Remove staticp.
14719         * c-common.c (c_staticp): Remove.
14720         * c-common.h (c_staticp): Ditto.
14721         * langhooks-defs.h (lhd_staticp): Ditto.
14722         (LHD_HOOKS_STATICP): Ditto
14723         * tree.h (gcc_assert_lowered): New macro.
14724
14725 2007-04-06  Zdenek Dvorak  <dvorakz@suse.cz>
14726
14727         * tree-ssa-loop-niter.c (idx_infer_loop_bounds): Add and use
14728         argument "reliable".
14729         (infer_loop_bounds_from_ref, infer_loop_bounds_from_array):
14730         Add argument "reliable".  Propagate it through calls.
14731         (infer_loop_bounds_from_undefined):  Derive number of iterations
14732         estimates from references in blocks that do not dominate loop latch.
14733         (gcov_type_to_double_int): New function.
14734         (estimate_numbers_of_iterations_loop): Use gcov_type_to_double_int
14735         and expected_loop_iterations_unbounded.
14736         * cfgloopanal.c (expected_loop_iterations_unbounded): New function.
14737         (expected_loop_iterations): Use expected_loop_iterations_unbounded.
14738         * tree-data-ref.c (estimated_loop_iterations): Export.
14739         (get_references_in_stmt): Fix -- do not return addresses of local
14740         objects.
14741         * cfgloop.h (expected_loop_iterations_unbounded,
14742         estimated_loop_iterations): Declare.
14743
14744 2007-04-06  Andreas Tobler  <a.tobler@schweiz.org>
14745
14746         * tree-sra.c (sra_build_elt_assignment): Initialize min/maxshift.
14747
14748 2007-04-06  Uros Bizjak  <ubizjak@gmail.com>
14749
14750         * config/i386/i386.md (extend<mode>xf2): Rename from extendsfxf2
14751         and extenddfxf2. Macroize expander using X87MODEF12 mode macro.
14752         (*truncdfsf_mixed, *truncdfsf_i387, *truncdfsf2_i387_1):
14753         Use output_387_reg_move().
14754         (*truncxf<mode>2): Rename from *truncxfsf2 and truncxfdf2. Macroize
14755         expander using X87MODEF12 mode macro.
14756         (*truncxfsf2_mixed): Combine alternatives, ignore "r" alternative when
14757         choosing register preferences.  Use output_387_reg_move().
14758         (*truncxfdf2_mixed): Combine alternatives, use "r" alternative
14759         instead of "x".  Use output_387_reg_move().
14760         (*truncxf<mode>2_i387_noop): Rename from *truncxfsf2_i387_noop and
14761         *truncxfdf2_i387_noop.  Macroize insn using X87MODEF12 mode macro.
14762         (*truncxf<mode>2_i387): Rename from *truncxfsf2_i387 and
14763         *truncxfdf2_i387.  Macroize insn using X87MODEF12 mode macro.
14764         Use output_387_reg_move().
14765         (*truncxf?f_mixed splitter): Macroize splitter using X87MODEF12
14766         mode macro.
14767         (*truncxf?f_i387 splitter): Ditto.
14768
14769 2007-04-06  Daniel Berlin  <dberlin@dberlin.org>
14770
14771         * langhooks-def.h (LANG_HOOKS_INITIALIZER): Remove
14772         LANG_HOOKS_SAFE_FROM_P.
14773         * expr.c (safe_from_p): Remove langhook call.
14774         * langhooks.h (lang_hooks): Remove safe_from_p.
14775         (lhd_safe_from_p): Remove prototype.
14776         * langhooks.c (lhd_safe_from_p): Remove.
14777
14778 2007-04-06  Jan Hubicka  <jh@suse.cz>
14779
14780         * cgraphunit.c (decide_is_function_needed): Do not keep always_inline
14781         functions.
14782
14783 2007-04-06  Uros Bizjak  <ubizjak@gmail.com>
14784
14785         * config/i386/i386.c (output_387_reg_move): Handle memory operand[0].
14786         * config/i386/i386.md (*movsf_1, *movdf_nointeger,
14787         *movdf_integer_rex64, *movdf_integer, *movxf_nointeger,
14788         *movxf_integer): Use output_387_reg_move() for x87 reg->mem
14789         alternative.
14790         (*extendsfdf2_mixed, *extendsfdf2_i387, *extendsfxf2_i387,
14791         *extenddfxf2_i387, *truncdfsf_fast_mixed): Ditto.
14792
14793 2007-04-05  Richard Henderson  <rth@redhat.com>
14794
14795         * config/alpha/alpha.c (print_operand) [+]: Remove.
14796         (alpha_end_function): Print nop if call at end of function.
14797         * config/alpha/alpha.h (PRINT_OPERAND_PUNCT_VALID_P): Remove +.
14798         * config/alpha/alpha.md (UNSPEC_LDGP1): New.
14799         (call_osf_1_er_noreturn, call_value_osf_1_er_noreturn): New.
14800         (call_osf_2_er_nogp, call_value_osf_2_er_nogp): New.
14801         (call_osf_2_er, call_value_osf_2_er): Merge the ldgp highpart into
14802         the call pattern. Update peepholes to match.
14803
14804 2007-04-05  Janis Johnson  <janis187@us.ibm.com>
14805
14806         * doc/extend.texi (Other Builtins): Add decimal float variants
14807         of signbit.
14808         * builtins.def: Ditto.
14809         * builtins.c (expand_builtin): Ditto.
14810
14811 2007-04-05  Uros Bizjak  <ubizjak@gmail.com>
14812             H.J. Lu  <hongjiu.lu@intel.com>
14813
14814         PR target/31478
14815         * config/i386/sse.md (sse2_umulv2siv2di3): Use V4SImode instead
14816         of V8HImode when calling ix86_binary_operator_ok.
14817         (sse2_pmaddwd): Call ix86_binary_operator_ok.
14818         (sdot_prodv8hi): Operands 1 and 2 must be register.
14819
14820 2007-04-05  Alexandre Oliva  <aoliva@redhat.com>
14821
14822         * tree-sra.c (try_instantiate_multiple_fields): Needlessly
14823         initialize align to silence bogus warning.
14824
14825 2007-04-05  Alexandre Oliva  <aoliva@redhat.com>
14826
14827         PR middle-end/22156
14828         * tree-sra.c (struct sra_elt): Add in_bitfld_block.  Remove
14829         all_no_warning.
14830         (struct sra_walk_fns): Remove use_all parameter from use.
14831         (sra_hash_tree): Handle BIT_FIELD_REFs.
14832         (sra_elt_hash): Don't hash bitfld blocks.
14833         (sra_elt_eq): Skip them in parent compares as well.  Handle
14834         BIT_FIELD_REFs.
14835         (sra_walk_expr): Don't maintain or pass down use_all_p.
14836         (scan_use): Remove use_all parameter.
14837         (scalarize_use): Likewise.  Re-expand assignment to
14838         BIT_FIELD_REF of gimple_reg.  De-scalarize before input or
14839         output, and re-scalarize after output.  Don't mark anything
14840         for no warning.
14841         (scalarize_ldst): Adjust.
14842         (scalarize_walk_gimple_modify_statement): Likewise.
14843         (build_element_name_1): Handle BIT_FIELD_REFs.
14844         (instantiate_element): Don't warn for any element whose parent
14845         is used as a whole.
14846         (instantiate_missing_elements_1): Return the sra_elt.
14847         (canon_type_for_field): New.
14848         (try_instantiate_multiple_fields): New.
14849         (instantiate_missing_elemnts): Use them.
14850         (mark_no_warning): Removed.
14851         (generate_one_element_ref): Handle BIT_FIELD_REFs.
14852         (REPLDUP, sra_build_elt_assignment): New.
14853         (generate_copy_inout): Use them.
14854         (generate_element_copy): Likewise.  Handle bitfld differences.
14855         (generate_element_zero): Don't recurse for blocks.  Use
14856         sra_build_elt_assignment.
14857         (generate_one_element_int): Take elt instead of var.  Use
14858         sra_build_elt_assignment.
14859         (generate_element_init_1): Adjust.
14860         (scalarize_use, scalarize_copy): Use REPLDUP.
14861         (scalarize_ldst): Move assert before dereference.
14862         (dump_sra_elt_name): Handle BIT_FIELD_REFs.
14863
14864 2007-04-05  Steven Bosscher  <steven@gcc.gnu.org>
14865
14866         * regmove.c: Fix unused variable warnings due to previous commit.
14867
14868 2007-04-05  Steven Bosscher  <steven@gcc.gnu.org>
14869
14870         * regmove.c (STACK_GROWS_DOWNWARD): Don't boolean-ize.
14871         (regmove_bb_head): Remove.
14872         (copy_src_to_dest): Don't update regmove_bb_head and BB_HEAD.
14873         (regmove_optimize): Don't do unnecessary CFG fixes for non-existing
14874         problems with fixup_match_1.
14875         Don't initialize/free regmove_bb_head.
14876
14877         (reg_is_remote_constant_p): If an insn is in the same basic block
14878         but not before INSN, consider it remote, too.
14879
14880 2007-04-05  Anatoly Sokolov <aesok@post.ru>
14881
14882         PR target/25448
14883         * config/avr/avr.c (avr_handle_fndecl_attribute): Use the
14884         DECL_ASSEMBLER_NAME, not the DECL_NAME.
14885
14886 2007-04-05  H.J. Lu  <hongjiu.lu@intel.com>
14887
14888         * config/i386/i386.h (TARGET_CPU_CPP_BUILTINS): Reformat.
14889         (CONDITIONAL_REGISTER_USAGE): Likewise.
14890
14891 2007-04-04  Richard Henderson  <rth@redhat.com>
14892
14893         * config/alpha/lib1funcs.asm: Remove unused file.
14894
14895 2007-04-04  Brooks Moses  <brooks.moses@codesourcery.com>
14896
14897         PR other/31356
14898         * opts.c (print_specific_help): Fix --help=<language>
14899         header line.
14900         (common_handle_option): Support --help=common.
14901
14902 2007-04-04  Brooks Moses  <brooks.moses@codesourcery.com>
14903
14904         PR other/31353
14905         * gcc.c (main): Do not run the linker if
14906         print_subprocess_help indicates that it shouldn't be
14907         run.
14908
14909 2007-04-04  Brooks Moses  <brooks.moses@codesourcery.com>
14910
14911         PR doc/31355
14912         * doc/invoke.texi (--help=): Document <languages> value, fix
14913         formatting in tables of values.
14914
14915 2007-04-04  Danny Smith  <dannysmith.users.sourceforge.net>
14916
14917         * config/i386/winnt-cxx.c (i386_pe_type_dllimport_p): Don't ignore
14918         dllimport attribute of virtual methods.
14919
14920 2007-04-04  Chen Liqin  <liqin@sunnorth.com.cn>
14921
14922         * config/score/crti.asm: Change _bss_start to __bss_start.
14923         * config/score/score.h (CONDITIONAL_REGISTER_USAGE): Added.
14924         (OUTGOING_REG_PARM_STACK_SPACE) update.
14925         * config/score/score.opt: add options to make backend support
14926         score5, score5u, score7 and score7d.
14927         * config/score/score.md: Likewise.
14928         * config/score/misc.md: Likewise.
14929         * config/score/mac.md: Likewise.
14930         * doc/invoke.texi: Likewise.
14931         * doc/md.texi: update constraints define.
14932
14933 2007-04-03  Richard Henderson  <rth@redhat.com>
14934
14935         * expr.c (store_expr): If get_signed_or_unsigned_type doesn't yield
14936         an appropriate type, use the mode instead.
14937
14938 2007-04-03  Richard Sandiford  <richard@codesourcery.com>
14939
14940         * config.gcc (mips-wrs-vxworks): Add vx-common.h to tm_file.
14941         Set the default --with-arch setting to mips2.
14942         * config/mips/t-vxworks (MULTILIB_OPTIONS, MULTILIB_MATCHES)
14943         (MULTILIB_EXCEPTIONS): Redefine with new multilibs.
14944         (MULTILIB_OSDIRNAMES): Delete.
14945         (MULTILIB_DIRNAMES): Define.
14946         * config/mips/vxworks.h (LINK_SPEC): Add VXWORKS_LINK_SPEC.
14947         (LIB_SPEC, STARTFILE_SPEC, ENDFILE_SPEC): Define.
14948         (TARGET_OS_CPP_BUILTINS): Incorporate old SUBTARGET_CPP_SPEC
14949         definitions, except for _WRS_R3K_EXC_SUPPORT.  Call
14950         VXWORKS_OS_CPP_BUILTINS.
14951         (SUBTARGET_CPP_SPEC): Redefine to VXWORKS_ADDITIONAL_CPP_SPEC.
14952         (MIPS_DEBUGGING_INFO): Undefine.
14953         (FUNCTION_PROFILER): Define to VXWORKS_FUNCTION_PROFILER.
14954
14955 2007-04-03  Jakub Jelinek  <jakub@redhat.com>
14956
14957         PR middle-end/30704
14958         * fold-const.c (native_encode_real): Encode real.c provided longs
14959         as a series of 32-bit native integers.
14960         (native_interpret_real): Interpret buffer as a series of 32-bit
14961         native integers.
14962
14963 2007-04-03  Richard Guenther  <rguenther@suse.de>
14964
14965         * genpreds.c (write_insn_constraint_len): Write function
14966         optimized for CONSTRAINT_LEN implementation.
14967         (write_tm_preds_h): Output insn_constraint_len inline and
14968         use it for CONSTRAINT_LEN.
14969         (write_insn_preds_c): Don't output insn_constraint_len.
14970         * doc/md.texi (define_register_constraint): Document multi-letter
14971         constraints shall have the same length if they start with the same
14972         letter.
14973
14974 2007-04-03  Uros Bizjak  <ubizjak@gmail.com>
14975
14976         PR target/31175
14977         * config/i386/i386.md (isinf<mode>2): Expand only when
14978         TARGET_C99_FUNCTIONS is set.
14979
14980 2007-04-03  Uros Bizjak  <ubizjak@gmail.com>
14981
14982         * config.gcc (i[34567]86-*-linux*): Add i386/t-crtpc to tm-file.
14983         (x86_64-*-linux*): Ditto.
14984         * config/i386/i386.opt (mpc): New option.
14985         * config/i386/i386.c (overrride_options): Handle
14986         ix87_precision_string.
14987         * config/i386/crtprec.c: New file.
14988         * config/i386/t-crtpc: Ditto.
14989         * config/i386/linux.h (ENDFILE_SPEC): Add handling of -mpc32, -mpc64
14990         and -mpc80 options.
14991         * config/i386/linux64.h (ENDFILE_SPEC): Ditto.
14992         * config/i386/t-linux64 (EXTRA_MULTILIB_PARTS): Add
14993         crtprec32.o, crtprec64.o and crtprec80.o.
14994
14995         * doc/invoke.texi (Machine Dependent Options): Add -mpc32, -mpc64
14996         and -mpc80 options.
14997         (i386 and x86-64 Options): Document -mpc32, -mpc64 and -mpc80 options.
14998
14999 2007-04-02  Eric Christopher  <echristo@apple.com>
15000
15001         * doc/invoke.texi (i386 and x86-64 Options): Document -m64
15002         limitations on darwin.
15003
15004 2007-04-02  Anatoly Sokolov <aesok@post.ru>
15005
15006         PR target/31137
15007         * config/avr/avr.c (avr_rtx_costs): Add missing 'break' statements.
15008
15009 2007-04-02  Dave Korn  <dave.korn@artimi.com>
15010
15011         * doc/tm.texi (FUNCTION_MODE): Update and extend documentation.
15012
15013 2007-04-02  Dave Korn  <dave.korn@artimi.com>
15014
15015         * libgcc2.h (exception_descriptor): Don't forward-declare.
15016         (__get_eh_table_language, __get_eh_table_version): Delete
15017         prototypes of long-dead functions.
15018
15019 2007-04-01  Daniel Berlin  <dberlin@dberlin.org>
15020
15021         * ebitmap.h: New file
15022         * ebitmap.c: New file
15023         * Makefile.in (ebitmap.o): New target.
15024
15025 2007-04-01  Jan Hubicka  <jh@suse.cz>
15026
15027         * emit-rtl.c (emit_insn_before_setloc): Do not ICE when asked to emit
15028         before very first instruction.
15029
15030 2007-04-01  Jan Hubicka  <jh@suse.cz>
15031
15032         * ggc-page.c (ggc_print_statistics): Fix formatting string to avoid
15033         waring on 64bit hosts.
15034         * bitmap.h: Fix typo in bitmap_head_def.
15035
15036 2007-04-01  Steven Bosscher  <steven@gcc.gnu.org>
15037
15038         PR rtl-optimization/31391
15039         * cfgcleanup.c (try_optimize_cfg): If a removed label is turned
15040         into a DELETED_LABEL note, and the label is in an empty basic
15041         block, update BB_END as well as BB_HEAD.
15042
15043 2007-04-01  Richard Henderson  <rth@redhat.com>
15044
15045         PR tree-optimization/31169
15046         * tree-vrp.c (extract_range_from_binary_expr) <RSHIFT_EXPR>: Drop
15047         to varying if the range is outside [0,  prec-1].
15048
15049 2007-04-01  Richard Sandiford  <richard@codesourcery.com>
15050
15051         PR target/31388
15052         * config/mips/mips.md (load_const_gp): New insn.
15053         * config/mips/mips.c (mips_split_symbol): Avoid using or creating
15054         the MIPS16 GP pseudo register if no_new_pseudos.
15055         (mips16_gp_pseudo_reg): Use gen_load_const_gp.
15056
15057 2007-03-31  Andrew Pinski  <andrew_pinski@playstation.sony.com>
15058
15059         PR target/31364
15060         * config/rs6000/rs6000.md (call): Convert to LR hard reg for
15061         secureplt.
15062         (call_value): Likewise.
15063
15064 2007-03-31  Wolfgang Bangerth  <bangerth@dealii.org>
15065             Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
15066
15067         PR 14737
15068         * doc/invoke.texi: (optimization options): Reword description
15069         of -ffast-math. Document its primary purpose.
15070
15071 2007-03-31  Richard Guenther  <rguenther@suse.de>
15072
15073         * omp-low.c (splay-tree.h): Include.
15074         (lookup_decl): Replace splay-tree usage by pointer-map.
15075         (maybe_lookup_decl): Likewise.
15076         (new_omp_context): Likewise.
15077         (delete_omp_context): Likewise.
15078         * gimplify.c (splay-tree.h): Include.
15079         * tree-inline.c (insert_decl_map): Replace splay-tree usage by
15080         pointer-map.
15081         (remap_ssa_name): Likewise.
15082         (remap_decl): Likewise.
15083         (remap_type_1): Likewise.
15084         (remap_type): Likewise.
15085         (copy_body_r): Likewise.
15086         (expand_call_inline): Likewise.
15087         (clone_body): Likewise.
15088         (copy_tree_r): Likewise.
15089         (remap_save_expr): Likewise.
15090         (unsave_r): Likewise.
15091         (unsave_expr_now): Likewise.
15092         (tree_function_versioning): Likewise.
15093         (build_duplicate_type): Likewise.
15094         * tree-inline.h (pointer-set.h): Include instead of splay-tree.h.
15095         (struct copy_body_data): Replace splay-tree by pointer-map.
15096         * Makefile.in (TREE_INLINE_H): Depend on pointer-map.h,
15097         not $(SPLAY_TREE_H).
15098         (gimplify.o): Depend on $(SPLAY_TREE_H).
15099         (omp-low.p): Likewise.
15100
15101 2007-03-31  Anatoly Sokolov <aesok@post.ru>
15102
15103         * config/avr/predicates.md (even_register_operand,
15104         odd_register_operand): New predicates.
15105         * config/avr/avr.md (movw peephole2): New.
15106         (movw_r peephole2): New.
15107
15108 2007-03-30  Rafael Avila de Espindola  <espindola@google.com>
15109
15110         * tree.h (get_signed_or_unsigned_type): New.
15111         * fold-const.c (operand_equal_for_comparison_p): Use
15112         get_signed_or_unsigned_type instead of
15113         lang_hooks.types.signed_or_unsigned_type.
15114         * expr.c (store_expr): Ditto.
15115         * langhooks.c (get_signed_or_unsigned_type): New.
15116         (lhd_signed_or_unsigned_type): New.
15117         * langhooks.h (lhd_signed_or_unsigned_type): New.
15118         * langhooks-def.h (LANG_HOOKS_SIGNED_OR_UNSIGNED_TYPE): Define.
15119
15120 2007-03-30  Richard Henderson  <rth@redhat.com>
15121
15122         * tree-ssa-loop-ivopts.c: Include target.h.
15123         (produce_memory_decl_rtl): Pass the rtx through encode_section_info.
15124         (get_address_cost): Force SYMBOL_FLAG_LOCAL set.
15125         (force_expr_to_var_cost): Use produce_memory_decl_rtl.
15126         * Makefile.in (tree-ssa-loop-ivopts.o): Depend on TARGET_H.
15127
15128 2007-03-30  Richard Henderson  <rth@redhat.com>
15129             Kai Tietz  <kai.tietz@onevision.com>
15130
15131         * config/i386/cygming.h (DWARF2_DEBUGGING_INFO): Enable by
15132         default for 64-bit.
15133         (PREFERRED_DEBUGGING_TYPE): Prefer dwarf2 for 64-bit.
15134         (TARGET_64BIT_MS_ABI): New.
15135         (DBX_REGISTER_NUMBER): Handle 64-bit.
15136         (SIZE_TYPE, PTRDIFF_TYPE): Use long long for 64-bit.
15137         (LONG_TYPE_SIZE): Force to 32.
15138         (REG_PARM_STACK_SPACE): New.
15139         (OUTGOING_REG_PARM_STACK_SPACE): New.
15140         (REGPARM_MAX, SSE_REGPARM_MAX): New.
15141         (HANDLE_PRAGMA_PUSH_POP_MACRO): New.
15142         (STACK_BOUNDARY): Use 128 for 64-bit.
15143         * config/i386/cygwin.asm: Use push/ret to preserve call stack.
15144         Add 64-bit implementation.
15145         * config/i386/gthr-win32.c (__gthr_win32_key_create): Mark dtor
15146         argument unused.
15147         * config/i386/i386.c (x86_64_ms_abi_int_parameter_registers): New.
15148         (override_options): Set ix86_cmodel for TARGET_64BIT_MS_ABI.
15149         Warn for -mregparm, -mrtd in 64-bit mode; force ix86_regparm
15150         for 64-bit; use TARGET_SUBTARGET64_DEFAULT.
15151         (ix86_handle_cconv_attribute): Don't warn when ignoring if
15152         TARGET_64BIT_MS_ABI.
15153         (ix86_function_arg_regno_p): Handle TARGET_64BIT_MS_ABI.
15154         (ix86_pass_by_reference): Likewise.
15155         (ix86_function_value_regno_p): Likewise.
15156         (ix86_build_builtin_va_list): Likewise.
15157         (ix86_va_start, ix86_gimplify_va_arg): Likewise.
15158         (function_arg_advance_ms_64): New.
15159         (function_arg_advance): Call it.
15160         (function_arg_ms_64): New.
15161         (function_arg): Call it.
15162         (function_value_ms_64): New.
15163         (ix86_function_value_1): Call it.
15164         (return_in_memory_ms_64): New.
15165         (ix86_return_in_memory): Call it.
15166         (setup_incoming_varargs_ms_64): New.
15167         (ix86_setup_incoming_varargs): Call it.
15168         (ix86_expand_prologue): Handle 64-bit stack probing.
15169         (legitimize_pic_address): Handle TARGET_64BIT_MS_ABI.
15170         (output_pic_addr_const): Likewise.
15171         (x86_this_parameter): Likewise.
15172         (x86_output_mi_thunk): Likewise.
15173         (x86_function_profiler): Likewise.
15174         (TARGET_STRICT_ARGUMENT_NAMING): New.
15175         * config/i386/i386.h (TARGET_SUBTARGET64_DEFAULT): New.
15176         (TARGET_64BIT_MS_ABI): New.
15177         (CONDITIONAL_REGISTER_USAGE): Handle TARGET_64BIT_MS_ABI.
15178         * config/i386/i386.md (allocate_stack_worker): Remove.
15179         (allocate_stack_worker_32): Rename from allocate_stack_worker_1;
15180         describe the clobber of eax without a match_scratch.
15181         (allocate_stack_worker_postreload): Remove.
15182         (allocate_stack_worker_64): Rename from allocate_stack_worker_rex64;
15183         describe the clobbers of rax, r10, r11 properly; use __chkstk symbol.
15184         (allocate_stack_worker_rex64_postreload): Remove.
15185         (allocate_stack): Handle 64-bit.
15186         * config/i386/i386elf (TARGET_SUBTARGET_DEFAULT): Remove.
15187         * config/i386/mingw32.h (TARGET_VERSION): Set correctly for 64-bit.
15188         (EXTRA_OS_CPP_BUILTINS): Handle 64-bit.
15189         (STANDARD_INCLUDE_DIR): Handle TARGET_64BIT_DEFAULT.
15190         (STANDARD_STARTFILE_PREFIX_1): Likewise.
15191         * config/i386/unix.h (TARGET_SUBTARGET64_DEFAULT): New.
15192         * config.build (x86_64-*-mingw*): New host.
15193         * config.host (x86_64-*-mingw*): New host.
15194         * config.gcc (x86_64-*-mingw*): New target.
15195         * gthr-win32.h (__gthread_key_create): Mark dtor unused.
15196
15197 2007-03-30  Richard Henderson  <rth@redhat.com>
15198             Kai Tietz  <kai.tietz@onevision.com>
15199
15200         * c-pragma.c (struct def_pragma_macro_value): New.
15201         (struct def_pragma_macro): New.
15202         (pushed_macro_table): New.
15203         (dpm_hash, dpm_eq): New.
15204         (handle_pragma_push_macro, handle_pragma_pop_macro): New.
15205         (init_pragma): Install them.
15206         * doc/tm.texi (HANDLE_PRAGMA_PUSH_POP_MACRO): New.
15207
15208 2007-03-30  Anatoly Sokolov <aesok@post.ru>
15209
15210         * config/avr/avr.c (avr_override_options): Clear
15211         'flag_delete_null_pointer_checks'.
15212
15213 2007-03-30  Paolo Carlini  <pcarlini@suse.de>
15214
15215         PR c++/26099
15216         * c-common.h (enum rid): Add RID_HAS_NOTHROW_ASSIGN,
15217         RID_HAS_NOTHROW_CONSTRUCTOR, RID_HAS_NOTHROW_COPY,
15218         RID_HAS_TRIVIAL_ASSIGN, RID_HAS_TRIVIAL_CONSTRUCTOR,
15219         RID_HAS_TRIVIAL_COPY, RID_HAS_TRIVIAL_DESTRUCTOR,
15220         RID_HAS_VIRTUAL_DESTRUCTOR, RID_IS_ABSTRACT, RID_IS_BASE_OF,
15221         RID_IS_CONVERTIBLE_TO, RID_IS_CLASS, RID_IS_EMPTY, RID_IS_ENUM,
15222         RID_IS_POD, RID_IS_POLYMORPHIC, RID_IS_UNION, as
15223         C++ extensions.
15224         * doc/extend.texi (Extensions to the C++ Language): Add Type Traits.
15225
15226 2007-03-30  Steven Bosscher  <steven@gcc.gnu.org>
15227
15228         * regmove.c: Move all of pass_stack_adjustments from here...
15229         * combine-stack-adj.c: ...to this new file.
15230         * Makefile.in: Add rules for combine-stack-adj.o.
15231
15232 2007-03-30  Zdenek Dvorak  <dvorakz@suse.cz>
15233
15234         PR tree-optimization/31383
15235         * tree-data-ref.c (affine_function_equal_p): Do not require the
15236         vectors to have the same length.
15237
15238 2007-03-30  Jan Hubicka  <jh@suse.cz>
15239
15240         PR middle-end/30700
15241         * dwarf2out.c (reference_to_unused): Ask cgraph for functions
15242         availablility; add more sanity checking; ask varpool only about
15243         VAR_DECL.
15244
15245 2007-03-29  Richard Henderson  <rth@redhat.com>
15246
15247         * unwind-generic.h (_sleb128_t, _uleb128_t): Don't use HAVE_LONG_LONG
15248         to decide, but __SIZEOF_LONG_LONG__.
15249
15250 2007-03-29  Richard Henderson  <rth@redhat.com>
15251
15252         * emutls.c (struct __emutls_array): New.
15253         (emutls_destroy): Use it instead of casting element 0 from void*.
15254         (__emutls_get_address): Likewise.
15255
15256 2007-03-29  Richard Henderson  <rth@redhat.com>
15257
15258         * varasm.c (initializer_constant_valid_p): Don't deny
15259         DECL_DLLIMPORT_P on functions.
15260
15261         * config/i386/cygming.h: Remove function declarations.
15262         (SUBTARGET_ENCODE_SECTION_INFO): Don't undef first.
15263         (ASM_OUTPUT_LABELREF): Remove.
15264         (COMMON_ASM_OP): Remove.
15265         (ASM_OUTPUT_COMMON): Remove.
15266         (ASM_OUTPUT_ALIGNED_DECL_COMMON): New.
15267         (ASM_DECLARE_OBJECT_NAME): Use i386_pe_maybe_record_exported_symbol.
15268         (ASM_DECLARE_FUNCTION_NAME): Likewise.
15269         * config/i386/i386-interix.h (SUBTARGET_ENCODE_SECTION_INFO):
15270         Rename from TARGET_ENCODE_SECTION_INFO.
15271         * config/i386/netware.h: Likewise.
15272         * config/i386/i386-protos.h: Update.
15273         * config/i386/i386.c (ix86_function_ok_for_sibcall): Turn ifdef
15274         of TARGET_DLLIMPORT_DECL_ATTRIBUTES into straight if.
15275         (legitimate_constant_p): Reject dllimports.
15276         (dllimport_map, get_dllimport_decl): New.
15277         (legitimize_dllimport_symbol): New.
15278         (legitimize_address, ix86_expand_move): Use it.
15279         (TARGET_BINDS_LOCAL_P): Redefine for TARGET_DLLIMPORT_DECL_ATTRIBUTES.
15280         * config/i386/i386.h (DLL_IMPORT_EXPORT_PREFIX): Remove.
15281         (SYMBOL_FLAG_DLLIMPORT, SYMBOL_REF_DLLIMPORT_P): New.
15282         (SYMBOL_FLAG_DLLEXPORT, SYMBOL_REF_DLLEXPORT_P): New.
15283         * config/i386/predicates.md (constant_call_address_operand): Only
15284         accept symbols; reject dllimport_p symbols.
15285         * config/i386/uwin.h (ASM_DECLARE_FUNCTION_NAME): Use
15286         i386_pe_maybe_record_exported_symbol.
15287         * config/i386/winnt.c (DLL_IMPORT_PREFIX, DLL_EXPORT_PREFIX): Remove.
15288         (i386_pe_determine_dllexport_p): Rename from i386_pe_dllexport_p.
15289         (i386_pe_determine_dllimport_p): Rename from i386_pe_dllimport_p;
15290         trust the setting of DECL_DLLIMPORT_P.
15291         (i386_pe_dllexport_name_p, i386_pe_dllimport_name_p): Remove.
15292         (i386_pe_mark_dllexport, i386_pe_mark_dllimport): Remove.
15293         (gen_stdcall_or_fastcall_suffix): Return NULL if no change required;
15294         tidy the argument scanning loop.
15295         (i386_pe_encode_section_info): Set SYMBOL_FLAG_DLLIMPORT and
15296         SYMBOL_FLAG_DLLEXPORT in SYMBOL_REF_FLAGS.
15297         (i386_pe_strip_name_encoding): Remove.
15298         (i386_pe_binds_local_p): New.
15299         (i386_pe_strip_name_encoding_full): Use default_strip_name_encoding.
15300         (i386_pe_output_labelref): Remove.
15301         (i386_pe_asm_output_aligned_decl_common): New.
15302         (i386_pe_maybe_record_exported_symbol): Rename from
15303         i386_pe_record_exported_symbol; check for dllexported symbols.
15304
15305 2007-03-29  Zack Weinberg  <zack@mrtock.ucsd.edu>
15306
15307         * gengtype.c (oprintf): Mostly revert changes from 2007-03-26;
15308         add comment explaining why vsnprintf cannot be used.
15309
15310 2007-03-29  Douglas Gregor  <doug.gregor@gmail.com>
15311
15312         PR tree-optimization/30666
15313         * tree.c (build_complex_type): When creating type names for DWARF2
15314         debug info, create TYPE_DECLs for TYPE_NAME instead of
15315         IDENTIFIER_NODEs.
15316         (build_common_tree_nodes_2): Use build_complex_type when building
15317         predefined complex types, to preserve canonical types.
15318
15319 2007-03-29  Steven Bosscher  <steven@gcc.gnu.org>
15320
15321         * ifcvt.c (struct noce_if_info): Add then_else_reversed field.
15322         (noce_get_alt_condition): Look at it to determine whether to
15323         reverse the condition or not.
15324         (noce_get_condition): Substitute the truth for lies.
15325         (noce_find_if_block): Set the then_else_reversed field.
15326
15327 2007-03-29  Lars Poeschel <larsi@wh2.tu-dresden.de>
15328
15329         * config/fr30/fr30.md (movdi): Do not accept immediates as the
15330         destination of this insn.
15331         * config/fr30/fr30.c (fr30_move_double): Use emit_move_insn rather
15332         than calling gen_rtx_SET directly.  Use r0 to hold the value of
15333         'address + 4' rather than a stack based temporary which can be
15334         mis-optimized away.
15335
15336 2007-03-29  Andreas Krebbel  <krebbel1@de.ibm.com>
15337
15338         * config/s390/s390.c (s390_secondary_input_reload_class,
15339         s390_secondary_output_reload_class): Functions removed.
15340         (s390_secondary_reload): New function.
15341         (TARGET_SECONDARY_RELOAD): Target macro defined.
15342         * config/s390/s390.h (SECONDARY_INPUT_RELOAD_CLASS,
15343         SECONDARY_OUTPUT_RELOAD_CLASS): Macro definitions removed.
15344         * config/s390/s390.md ("reload_outti", "reload_outdi",
15345         "reload_indi", "reload_insi", "reload_out<mode>", "reload_in<mode>",
15346         "reload_out<mode>"): Expanders removed.
15347         ("reload<mode>_plus", "reload<mode>_nonoffmem_in",
15348         "reload<mode>_nonoffmem_out"): Expanders added.
15349
15350 2007-03-29  Andreas Krebbel  <krebbel1@de.ibm.com>
15351
15352         * regmove.c (optimize_reg_copy_1): Don't perform DEST->SRC repair
15353         action if SRC->DEST replacement failed anyway.
15354
15355 2007-03-28  Mike Stump  <mrs@apple.com>
15356
15357         * config/darwin9.h (ASM_OUTPUT_ALIGNED_COMMON): Add.
15358         * config/darwin.h (MAX_OFILE_ALIGNMENT): Fix.
15359         * config/rs6000/darwin.h (ASM_OUTPUT_ALIGNED_COMMON): Removed #undef.
15360
15361 2007-03-28  Dwarakanath Rajagopal  <dwarak.rajagopal@amd.com>
15362
15363         * config.gcc: Accept barcelona as a variant of amdfam10.
15364         * config/i386/i386.c (override_options): Likewise.
15365         * doc/invoke.texi: Likewise.
15366
15367 2007-03-28  Eric Botcazou  <ebotcazou@adacore.com>
15368
15369         * tree-dfa.c (get_ref_base_and_extent): Do not expect positive
15370         offsets for BIT_FIELD_REF and COMPONENT_REF.
15371
15372 2007-03-28  Richard Guenther  <rguenther@suse.de>
15373
15374         * tree.c (is_global_var): Move ...
15375         * tree-flow-inline.h (is_global_var): ... here.
15376         * tree.h (is_global_var): Remove declaration.
15377
15378 2007-03-28  Uros Bizjak  <ubizjak@gmail.com>
15379
15380         * config/i386/i386.h (X86_TUNE_PROMOTE_HIMODE_IMUL): New tuning
15381         option.
15382         (TARGET_TUNE_PROMOTE_HIMODE_IMUL): New define. Use new tuning option.
15383         * config/i386/i386.c (ix86_tune_features): Initialize new
15384         tuning option.
15385         * config/i386/predicates.md (promotable_binary_operator): Use
15386         TARGET_TUNE_PROMOTE_HIMODE_IMUL.
15387
15388 2007-03-28  Grigory Zagorodnev <grigory_zagorodnev@linux.intel.com>
15389
15390         PR target/31380
15391         * config/i386/sse.md (uminv16qi3): Use UMIN instead of UMAX.
15392
15393 2007-03-28  Lars Poeschel <larsi@wh2.tu-dresden.de>
15394
15395         * config/fr30/fr30.md (movsi_internal): Change destination
15396         constraint from m to V and add m to the end.
15397
15398 2007-03-28  Christian Bruel  <christian.bruel@st.com>
15399
15400         * config/sh/sh.md (movsi_i): Fix type attribute.
15401
15402 2007-03-28  Christian Bruel  <christian.bruel@st.com>
15403
15404         * config/sh/sh.md (movsi_ie): Fix memory constraints attribute length.
15405         (movsf_ie): Likewise.
15406
15407 2007-03-28  Christian Bruel  <christian.bruel@st.com>
15408
15409         * config.gcc: Add sh4-300 to multilib.
15410         * config/sh/t-mlib-sh4-300: New file.
15411
15412 2007-03-28  Andreas Krebbel  <krebbel1@de.ibm.com>
15413
15414         * config/s390/s390.md ("fix_trunc<mode>di2"): New expander.
15415         ("fix_trunc<DFP:mode>di2_dfp"): New insn definition renamed from
15416         fix_trunc<mode>di2.
15417         ("fixuns_truncdddi2", "fixuns_trunctddi2"): Use
15418         fix_trunc<DFP:mode>di2_dfp instead of fix_trunc<mode>di2.
15419         ("fix_truncdfsi2", "fix_truncsfsi2", "fixuns_truncdddi2",
15420         "fixuns_trunctddi2"): Whitespace fix.
15421
15422 2007-03-28  Kaz Kojima  <kkojima@gcc.gnu.org>
15423
15424         * config/sh/sh.h (CALL_COOKIE_RET_TRAMP_SHIFT): Move after
15425         the definition of struct sh_args.
15426         (CALL_COOKIE_RET_TRAMP, CALL_COOKIE_STACKSEQ_SHIFT,
15427         CALL_COOKIE_INT_REG_GET): Likewise.
15428
15429 2007-03-28  Steven Bosscher  <steven@gcc.gnu.org>
15430
15431         * ifcvt.c (cond_exec_find_if_block): Return FALSE if no
15432         transformations are applied successfully.
15433
15434 2007-03-27  Douglas Gregor  <doug.gregor@gmail.com>
15435
15436         * tree.c (tree_contains_struct): Permit 512 tree codes.
15437         * tree.h (tree_contains_struct): Ditto.
15438         (MAX_TREE_CODES): Ditto.
15439         (struct tree_base): Make CODE 16 bits, instead of 8 bits. Add
15440         SPARE member to store remaining padding bits.
15441
15442 2007-03-27  Anatoly Sokolov <aesok@post.ru>
15443
15444         * config/avr/avr.c (avr_mcu_types): Move at90usb82 device to 'avr4'
15445         architecture.
15446
15447 2007-03-27  Janis Johnson  <janis187@us.ibm.com>
15448
15449         * configure.ac: Fix assembler test for powerpc*-linux decimal float.
15450         * configure: Regenerate.
15451
15452         * configure: Regenerate using the correct version of autoconf.
15453
15454 2007-03-27  Anatoly Sokolov  <aesok@post.ru>
15455
15456         * config/avr/avr.c (avr_hard_regno_mode_ok): Disallow QImode in stack
15457         pointer regs.
15458         * config/avr/avr.h (REGISTER_NAMES): Rename "__SPL__" and "__SPH__"
15459         regs to "__SP_L__" and "__SP_H__".
15460
15461 2007-03-27  Richard Guenther  <rguenther@suse.de>
15462
15463         * tree-dfa.c (get_ref_base_and_extent): Replace bit_offset and
15464         computations with it with a HOST_WIDE_INT variable.
15465
15466 2007-03-26  Mike Stump  <mrs@apple.com>
15467
15468         * config/rs6000/darwin.h (DARWIN_MINVERSION_SPEC): Add
15469         objective-c-header, objective-c++-header and objc++-cpp-output
15470         support.
15471         * config/i386/darwin.h (DARWIN_MINVERSION_SPEC): Likewise.
15472
15473 2007-03-26  Richard Henderson  <rth@redhat.com>
15474
15475         PR target/31361
15476         * config/i386/i386.c (IX86_BUILTIN_PSLLDQ128, IX86_BUILTIN_PSLLW128,
15477         IX86_BUILTIN_PSLLD128, IX86_BUILTIN_PSLLQ128, IX86_BUILTIN_PSRAW128,
15478         IX86_BUILTIN_PSRAD128, IX86_BUILTIN_PSRLW128, IX86_BUILTIN_PSRLD128,
15479         IX86_BUILTIN_PSRLQ128): New.
15480         (ix86_init_mmx_sse_builtins): Add them.
15481         (ix86_expand_builtin): Expand them.
15482         * config/i386/sse.md (ashr<mode>3, lshr<mode>3, ashl<mode>3): Make
15483         operand 2 be TImode.
15484         * config/i386/emmintrin.h (_mm_slli_epi64, _mm_srai_epi16,
15485         _mm_srai_epi32, _mm_srli_epi16, _mm_srli_epi32,
15486         _mm_srli_epi64): Mark __B const.
15487         (_mm_srli_si128, _mm_srli_si128): Fix disabled inline versions.
15488         (_mm_sll_epi16, _mm_sll_epi32, _mm_sll_epi64, _mm_sra_epi16,
15489         _mm_sra_epi32, _mm_srl_epi16, _mm_srl_epi32, _mm_srl_epi64): Use
15490         new two-vector shift builtins.
15491
15492 2007-03-26  Ian Lance Taylor  <iant@google.com>
15493
15494         PR tree-optimization/31345
15495         * tree-vrp.c (extract_range_from_binary_expr): Turn ranges like
15496         [+INF, +INF(OVF)] into VARYING.
15497
15498 2007-03-26  Zack Weinberg  <zackw@panix.com>
15499
15500         * gengtype-parse.c: New file.
15501         * gengtype-yacc.y: Delete.
15502         * gengtype-lex.l: Don't include gengtype-yacc.h.
15503         Define YY_DECL and yyterminate appropriately for recursive
15504         descent parser.  yylval is now a string out-parameter to yylex.
15505         (HWS, EOID): New shorthand.
15506         (IWORD): Add a couple more types.
15507         (yylex): Add a setup stanza.  Remove the complex rules for
15508         detecting GTY'ed types and typedefs; replace with simple
15509         keyword detectors.  Adjust everything for the changed
15510         definition of yylval.  Ignore all pp-directives, not just #define.
15511         (yyerror): Delete.
15512         (parse_file): Rename yybegin; do not call yyparse.
15513         (yyend): New.
15514         * gengtype.c (xasprintf): Export again.
15515         (this_file): New.  Use everywhere __FILE__ was being used.
15516         (get_lang_bitmap): Special case types defined in gengtype.c.
15517         (do_typedef, new_structure): Suppress definition of certain types.
15518         (new_structure): Improve diagnostics of duplicate definitions.
15519         Make sure location_s is associated with input.h.
15520         (nreverse_pairs, define_location_structures): New functions.
15521         (main): Improve tagging of kludge types.  Remove old kludges
15522         for input.h types; use define_location_structures.
15523         * gengtype.h: Update prototypes.  Define token codes here.
15524         * Makefile.in: Remove all references to gengtype-yacc.
15525         Add rules for gengtype-parse.o.  Adjust rules for gengtype-lex.o
15526         and gengtype.
15527         * bitmap.h (struct bitmap_head_def): Coalesce definitions,
15528         add GTY((skip)) to the field that's only conditionally there.
15529         * doc/install.texi: Document that Bison is no longer required
15530         unless building treelang.
15531
15532         * gengtype.c: Don't include gtyp-gen.h.
15533         (srcdir): Declare here.
15534         (base_files, lang_dir_names): Allocate dynamically.
15535         (gt_files, num_gt_files, num_lang_dirs): New globals.
15536         (measure_input_list, read_input_line, read_input_list)
15537         (set_lang_bitmap): New functions.
15538         (get_base_file_bitmap): Rename get_lang_bitmap and drastically
15539         simplify, relying on read_input_list to set up the bitmaps.
15540         (main): Arguments are no longer unused.  Check for correct number
15541         of command line arguments, set srcdir and srcdir_len, then call
15542         read_input_list, before doing anything else.  No need to worry
15543         about duplicates in main loop.
15544         * configure.ac: Simplify the calculation of all_gtfiles.
15545         Put language tags in there.  Don't set or substitute
15546         all_gtfiles_files_langs or all_gtfiles_files_frags.
15547         * Makefile.in: Revamp the way gengtype is invoked, now that it
15548         takes a file on its command line with a much simpler format.
15549         Remove or replace with gtyp-input.list all references to gtyp-gen.h.
15550         (GTFILES): Remove duplicates and C source files.
15551         * c-config-lang.in, cp/config-lang.in, objc/config-lang.in
15552         * objcp/config-lang.in: Add c-pragma.h to gtfiles.
15553         * configure: Regenerate.
15554
15555         * gengtype.h: Remove all type definitions to gengtype.c; leave
15556         only definitions of options_p, type_p, and pair_p as opaque
15557         pointers.  Update prototypes.
15558         * gengtype.c: Many type definitions moved here from gengtype.h.
15559         Consolidate type definitions at the top of the file.
15560         (xvasprintf): Delete.
15561         (xasprintf): Make static.
15562         (create_nested_pointer_option): Add 'next' parameter.
15563         (create_field_all, create_field_at): New functions.
15564         (create_field): Now a thin wrapper around create_field_all.
15565         (create_optional_field): Rename create_optional_field_ and add
15566         line argument.  Original name is now a macro which supplies
15567         __LINE__.
15568         (oprintf): Use vsnprintf directly.
15569         (close_output_files): Use fatal rather than perror/exit.
15570         (note_def_vec, note_def_vec_alloc): Use create_field_at.
15571         (main): Set progname.  Don't use exit.
15572         * gengtype-yacc.y (struct_fields): Use create_field_at.
15573         (option, optionseqopt): Delete.
15574         (optionseq): Consolidate productions from option here so we
15575         can use the first argument to create_option.
15576
15577         * gengtype-lex.l: Distinguish unions from structures in the
15578         token type.  Don't call find_structure; return the tag as a string.
15579         * gengtype-yacc.y: Add new token types ENT_TYPEDEF_UNION and
15580         ENT_UNION.  Type of these, ENT_TYPEDEF_STRUCT, and ENT_STRUCT is
15581         string.  Reorganize typedef_struct production accordingly.
15582         Use create_nested_ptr_option.
15583         * gengtype.c (create_nested_ptr_option): New function.
15584         * gengtype.h: Declare it.
15585
15586         * gengtype.h (struct type): Replace 'sc' with boolean, scalar_is_char.
15587         (string_type): Don't declare.
15588         (do_scalar_typedef): Declare.
15589         (create_scalar_type): Update prototype.
15590         * gengtype.c (string_type): Make static.
15591         (scalar_nonchar, scalar_char): New.
15592         (do_scalar_typedef): Export.  Always use scalar_nonchar for the type.
15593         (resolve_typedef): Use scalar_nonchar for error recovery.
15594         (create_scalar_type): Remove name_len field.  Return scalar_char
15595         or scalar_nonchar as appropriate.
15596         (adjust_field_type): Look at scalar_is_char boolean to decide whether
15597         to use string_type.
15598         (throughout): Use scalar_nonchar instead of calling
15599         create_scalar_type, whenever possible.
15600         (main): Initialize scalar_char and scalar_nonchar before calling
15601         gen_rtx_next.
15602         * gengtype-lex.l: Adjust for removal of second argument to
15603         create_scalar_type.  Use yylval.s instead of yylval.t when
15604         returning SCALAR.
15605         * gengtype-yacc.y: Type of SCALAR is string.  Call
15606         create_scalar_type from type:SCALAR rule.  Adjust for removal of
15607         second argument to create_scalar_type.
15608
15609         * vec.h: Remove all #if IN_GENGTYPE blocks.
15610         Add comment saying that changes may require adjustments to gengtype.
15611         * gengtype.c: Don't include coretypes.h or tm.h.
15612         Add comment to inclusion of errors.h.
15613         (note_def_vec, note_def_vec_alloc): New functions.
15614         * gengtype.h: Declare new functions.
15615         * gengtype-lex.l: Don't include coretypes.h.
15616         (YY_INPUT, macro_input, push_macro_expansion, mangle_macro_name):
15617         Delete.
15618         (update_lineno): Remove unnecessary prototype.
15619         (DEF_VEC_* rules): Simplify using note_def_vec / note_def_vec_alloc.
15620         (VEC rule): Just return VEC_TOKEN.
15621         * gengtype-yacc.y (VEC_TOKEN): New token type.
15622         (type): Add a production for VEC(a,b).
15623         * Makefile.in: Update dependencies.
15624
15625         * gengtype-lex.l: Remove rules for parsing pointer-to-function
15626         typedefs that use the old PARAMS macro.
15627
15628         * gengtype-lex.l: Remove all rules and states relating to yacc
15629         input files.
15630         * gengtype-yacc.y: Similarly.
15631         * gengtype.c (note_yacc_type): Delete function.
15632         * gengtype.h: Update prototypes.
15633
15634 2007-03-26  Joseph Myers  <joseph@codesourcery.com>
15635
15636         * tree-pretty-print.c (dump_generic_node): Report precision of
15637         unnamed integer types.
15638
15639 2007-03-26  Steven Bosscher  <steven@gcc.gnu.org>
15640
15641         * ifcvt.c (noce_try_store_flag_constants): Don't check
15642         no_new_pseudos here.
15643         (noce_try_store_flag_constants): Don't check no_new_pseudos.
15644         (noce_try_addcc, noce_try_store_flag_mask, noce_try_cmove_arith,
15645         noce_try_cmove_arith, noce_try_minmax, noce_try_abs,
15646         noce_try_sign_mask): Likewise.
15647         (if_convert): Check no_new_pseudos here.
15648
15649         (cond_exec_process_if_block, noce_process_if_block, find_if_block):
15650         Remove prototypes.
15651         (struct noce_if_info): Add then_bb, else_bb, join_bb members.
15652         (noce_get_condition): Handle new then_else_reversed argument.
15653         (noce_init_if_info): Remove, fold into noce_find_if_block.
15654         (noce_process_if_block): Take a struct noce_if_info as the
15655         argument.  Don't set up one based on ce_if_info.  Update pointer
15656         references accordingly.
15657         (cond_move_process_if_block): Likewise.
15658         (process_if_block): Removed.
15659         (find_if_block): Removed.  Move functionality two new functions,
15660         noce_find_if_block and cond_exec_find_if_block.
15661         (noce_find_if_block): New function.  Be aware of IF-THEN-JOIN
15662         blocks and the symmetric IF-ELSE-JOIN case.
15663         (cond_exec_find_if_block): Also new function mostly based on old
15664         find_if_block and process_if_block.
15665         (find_if_header): Replace find_if_block call with separately
15666         guarded calls to noce_find_if_block and cond_exec_find_if_block.
15667         (find_cond_trap): Update noce_get_condition call.
15668         (dead_or_predicable): Likewise.
15669
15670 2007-03-26  Jakub Jelinek  <jakub@redhat.com>
15671
15672         * config/i386/i386.c (IX86_BUILTIN_CMPNEPD, IX86_BUILTIN_CMPNESD):
15673         Remove.
15674         (IX86_BUILTIN_PSLLW128, IX86_BUILTIN_PSLLD128, IX86_BUILTIN_PSLLQ128,
15675         IX86_BUILTIN_PSRAW128, IX86_BUILTIN_PSRAD128, IX86_BUILTIN_PSRLW128,
15676         IX86_BUILTIN_PSRLD128, IX86_BUILTIN_PSRLQ128): Remove.
15677         (ix86_init_mmx_sse_builtins): Remove v8hi_ftype_v8hi_v2di and
15678         v4si_ftype_v4si_v2di.  Remove __builtin_ia32_psllw128,
15679         __builtin_ia32_pslld128, __builtin_ia32_psllq128,
15680         __builtin_ia32_psrlw128, __builtin_ia32_psrld128,
15681         __builtin_ia32_psrlq128, __builtin_ia32_psraw128 and
15682         __builtin_ia32_psrad128 builtins.
15683
15684 2007-03-26  Uros Bizjak  <ubizjak@gmail.com>
15685
15686         * reg-stack.c (replace_reg): Use IN_RANGE macro in gcc_assert().
15687         * config/i386/constraints.md
15688         (define_constraint "I"): Use IN_RANGE macro.
15689         (define_constraint "J"): Ditto.
15690         (define_constraint "K"): Ditto.
15691         (define_constraint "M"): Ditto.
15692         (define_constraint "N"): Ditto.
15693         (define_constraint "O"): Ditto.
15694         * config/i386/predicates.md
15695         (define_predicate "register_no_elim_operand"): Use IN_RANGE macro.
15696         (define_predicate "const_0_to_3_operand"): Ditto.
15697         (define_predicate "const_0_to_7_operand"): Ditto.
15698         (define_predicate "const_0_to_15_operand"): Ditto.
15699         (define_predicate "const_0_to_63_operand"): Ditto.
15700         (define_predicate "const_0_to_255_operand"): Ditto.
15701         (define_predicate "const_1_to_31_operand"): Ditto.
15702         (define_predicate "const_2_to_3_operand"): Ditto.
15703         (define_predicate "const_4_to_7_operand"): Ditto.
15704
15705 2007-03-25  David Edelsohn  <edelsohn@gnu.org>
15706
15707         * config/rs6000/rs6000.c (rs6000_emit_prologue): Always clobber LR
15708         in SImode for save_world.
15709         * config/rs6000/altivec.md (save_world, restore_world): Convert to
15710         LR hard reg.
15711
15712 2007-03-25  Dorit Nuzman  <dorit@il.ibm.com>
15713
15714         PR tree-optimization/30784
15715         * fold-const.c (fold_ternary): Handle CONSTRUCTOR in case
15716         BIT_FIELD_REF.
15717
15718 2007-03-25  Revital Eres  <eres@il.ibm.com>
15719
15720         * tree-if-conv.c (if_convertible_gimple_modify_stmt_p):
15721           Fold movement_possibility function into it.
15722
15723 2007-03-25  David Edelsohn  <edelsohn@gnu.org>
15724
15725         * config/rs6000/darwin.md (load_macho_picbase): Ignore operand 0.
15726         (load_macho_picbase_{si,di}): Convert to LR hard reg.
15727         (call_indirect_nonlocal_darwin64): Same.
15728         (call_nonlocal_darwin64): Same.
15729         (call_value_indirect_nonlocal_darwin64): Same.
15730         (call_value_nonlocal_darwin64): Same.
15731         (sibcall_nonlocal_darwin64): Same.
15732         (sibcall_value_nonlocal_darwin64): Same.
15733         (sibcall_symbolic_64): Same.
15734         (sibcall_value_symbolic_64): Same.
15735         * config/rs6000/rs6000.c (rs6000_legitimize_tls_address): Remove
15736         LR pseudo.
15737         (rs6000_emit_load_toc_table): Same.
15738         * config/rs6000/altivec.md (restore_world): Convert to LR hard reg.
15739         * config/rs6000/rs6000.md (mulh_call): Convert to LR hard reg.
15740         (mull_call): Same.
15741         (divss_call): Same.
15742         (divus_call): Same.
15743         (quoss_call): Same.
15744         (quous_call): Same.
15745         (load_toc_v4_pic_si): Same
15746         (load_toc_v4_PIC_1): Same.
15747         (load_toc_v4_PIC_1b): Same.
15748         (call_indirect_aix{32,64}): Same.
15749         (call_value_indirect_aix{32,64}): Same.
15750         (call): Same.
15751         (call_value): Same.
15752         (call_local{32,64}): Same.
15753         (call_value_local{32,64}): Same.
15754         (call_indirect_nonlocal_aix{32,64}): Same.
15755         (call_nonlocal_aix{32,64}): Same.
15756         (call_value_indirect_nonlocal_aix{32,64}): Same.
15757         (call_value_nonlocal_aix{32,64}): Same.
15758         (call_indirect_nonlocal_sysv<mode>): Same.
15759         (call_nonlocal_sysv<mode>): Same.
15760         (call_value_indirect_nonlocal_sysv<mode>): Same.
15761         (call_value_nonlocal_sysv<mode>): Same.
15762         (sibcall): Same.
15763         (sibcall_local{32,64}): Same.
15764         (sibcall_value_local{32,64}): Same.
15765         (sibcall_nonlocal_aix{32,64}): Same.
15766         (sibcall_value_nonlocal_aix{32,64}): Same.
15767         (sibcall_nonlocal_sysv<mode>): Same.
15768         (sibcall_value): Same.
15769         (sibcall_value_nonlocal_sysv<mode>): Same.
15770
15771 2007-03-24  Paul Brook  <paul@codesourcery.com>
15772
15773         * config/arm/lib1funcs.asm (div0): Use ARM_FUNC_START and do_push.
15774         * config/arm/linux-eabi.h: Remove legacy syscall hack.
15775
15776 2007-03-24  Richard Henderson  <rth@redhat.com>
15777
15778         * config/ia64/constraints.md: New file.
15779         * config/ia64/predicates.md: Replace CONST_OK_FOR_? with
15780         satisfies_constraint_?.
15781         * config/ia64/ia64.c (ia64_move_ok, ia64_legitimate_constant_p,
15782         ia64_reload_gp, spill_restore_mem, ia64_expand_prologue,
15783         ia64_expand_epilogue, ia64_split_return_addr_rtx, ia64_rtx_costs,
15784         ia64_output_mi_thunk): Likewise.
15785         (ia64_const_ok_for_letter_p): Remove.
15786         (ia64_const_double_ok_for_letter_p): Remove.
15787         (ia64_extra_constraint): Remove.
15788         * config/ia64/ia64.h (REG_CLASS_FROM_LETTER): Remove.
15789         (CONST_OK_FOR_I, CONST_OK_FOR_J, CONST_OK_FOR_K, CONST_OK_FOR_L,
15790         CONST_OK_FOR_M, CONST_OK_FOR_N, CONST_OK_FOR_O, CONST_OK_FOR_P,
15791         CONST_OK_FOR_LETTER_P, CONST_DOUBLE_OK_FOR_G,
15792         CONST_DOUBLE_OK_FOR_LETTER_P, EXTRA_CONSTRAINT,
15793         EXTRA_MEMORY_CONSTRAINT): Remove.
15794         * config/ia64/ia64.md: Include constriants.md.  Replace
15795         CONST_OK_FOR_? with satisfies_constraint_?.
15796
15797 2007-03-23  Michael Meissner  <michael.meissner@amd.com>
15798             H.J. Lu  <hongjiu.lu@intel.com>
15799
15800         * config/dfp-bit.h (DPD_BID_NAME): New macro to give either the
15801         DPD or BID name.
15802         (name macros): Use DPD_BID_NAME to convert names properly.
15803
15804         * optabs.c (DECIMAL_PREFIX): Prefix string to use for the current
15805         decimal floating point format.
15806         (init_floating_libfuncs): Change decimal functions so that they
15807         have a "bid_" prefix if the decimal system uses the BID format,
15808         and "dpd_" prefix if the decimal system uses the DPD format.
15809         (init_interclass_conv_libfuncs): Ditto.
15810         (init_intraclass_conv_libfuncs): Ditto.
15811
15812         * config.in (ENABLE_DECIMAL_BID_FORMAT): New macro to say we are
15813         using the BID format.
15814
15815         * configure.ac (ENABLE_DECIMAL_BID_FORMAT): Set to 1/0 to say
15816         whether we are using the BID decimal format.
15817         * configure: Regenerate.
15818
15819         * c-cppbuiltin.c (c_cpp_builtins): Define __STDC_WANT_DEC_FP__ if
15820         the compiler has decimal floating point enabled.  Define
15821         __DECIMAL_BID_FORMAT__ if BID decimal floating point is used
15822         instead of DPD.
15823
15824         * config.in (ENABLE_DECIMAL_BID_FORMAT): New macro to say we are
15825         using the BID format.
15826
15827         * configure.ac (ENABLE_DECIMAL_BID_FORMAT): Set to 1/0 to say
15828         whether we are using the BID decimal format.
15829         * configure: Regenerate.
15830
15831         * c-cppbuiltin.c (c_cpp_builtins): Define __STDC_WANT_DEC_FP__ if
15832         the compiler has decimal floating point enabled.  Define
15833         __DECIMAL_BID_FORMAT__ if BID decimal floating point is used
15834         instead of DPD.
15835
15836         * doc/install.texi (--enable-decimal-float): Document BID and DPD
15837         options, and that it is enabled for i386/x86_64 systems.
15838
15839         * Makefile.in (enable_decimal_float): New.
15840         (DECNUMFMT): New.
15841         (DECNUMINC): Add  -I$(DECNUMFMT).
15842         (DECNUM_H): Mov decimal32.h, decimal64.h and decimal128.h
15843         to $(DECNUMFMT) from $(DECNUM).
15844
15845         * configure.ac: Support * --enable-decimal-float={no,yes,bid,dpd}.
15846         Substitute enable_decimal_float.
15847         * configure: Regenerated.
15848
15849         PR other/30529
15850         * config/dfp-bit.c (__dec_byte_swap): Use uint32_t instead of
15851         unsigned long.
15852
15853         * configure.ac: Enable decimal float for x86_64-*-linux*.
15854         * configure: Regenerated.
15855
15856         PR other/30530
15857         * dfp.c (decimal_real_arithmetic): Use decimal128FlipSign and
15858         decimal128ClearSign to flip and clear the sign bit in decimal128.
15859         (decimal_real_maxval): Set decimal128SetSign to set the sign
15860         bit in decimal128.
15861
15862 2007-03-23  Ian Lance Taylor  <iant@google.com>
15863
15864         * fold-const.c (fold_binary): Correct warning for X - c >= X.
15865
15866 2007-03-23  Ian Lance Taylor  <iant@google.com>
15867
15868         * tree-dump.c (dump_files): Correct comment.
15869
15870 2007-03-23  Ian Lance Taylor  <iant@google.com>
15871
15872         * tree-vrp.c (operand_less_p): Ignore fold overflow warnings.
15873
15874 2007-03-23  Steven Bosscher  <steven@gcc.gnu.org>
15875
15876         * tracer.c (tracer): Don't take FLAGS argument.  Assert we are
15877         in cfglayout mode.  Don't go into and out of cfglayout mode.
15878         Link the blocks in the order of the constructed traces.
15879         (rest_of_handle_tracer): Adjust call to tracer.
15880         * loop-init.c (rtl_loop_init): Assert we are in cfglayout mode.
15881         Don't go into cfglayout mode.
15882         (rtl_loop_done): Don't go out of cfglayout mode.
15883         * cfglayout.c (relink_block_chain): New function, split out from...
15884         (fixup_reorder_chain): ...here.  Remove redundant checking.
15885         (cfg_layout_finalize): Don't clear the header, footer, and aux
15886         fields here, move the code to do so to relink_block_chain.  Likewise
15887         for free_original_copy_tables.
15888         * rtl.h (tracer): Update prototype.
15889         * bb-reorder.c (reorder_basic_blocks): Don't take FLAGS argument.
15890         Assert we are in cfglayout mode.  Don't go into and out of cfglayout
15891         mode.  Use relink_block_chain to serialize the CFG according to the
15892         new basic block order.  Move targetm.cannot_modify_jumps_p check from
15893         here...
15894         (gate_handle_reorder_blocks): ...to here.
15895         (duplicate_computed_gotos): Move targetm.cannot_modify_jumps_p check
15896         from here...
15897         (gate_duplicate_computed_gotos): ...to here.
15898         (rest_of_handle_reorder_blocks): Don't see if anything has changed,
15899         something always changes when going into and out of cfglayout mode.
15900         Perform an expensive cfg cleanup while going into cfglayout mode.
15901         Always update liveness information on HAVE_conditional_execution
15902         targets.  Reserialize the basic blocks and go out of cfglayout mode.
15903         * reg-stack.c: Include cfglayout.h.
15904         (rest_of_handle_stack_regs): Go into and out of cfglayout mode around
15905         the call to reorder_basic_blocks.
15906         * basic-block.h (reorder_basic_blocks): Update prototype.
15907         (relink_block_chain): New prototype.
15908         * passes.c (pass_outof_cfg_layout_mode): Move after cse2.
15909
15910 2007-03-23  Joseph Myers  <joseph@codesourcery.com>
15911
15912         * config/mips/mips.md (type, hazard, *movdi_32bit,
15913         *movdi_gp32_fp64, *movdi_64bit, *movsi_internal, movcc,
15914         *movhi_internal, *movqi_internal, *movsf_hardfloat,
15915         *movdf_hardfloat_64bit, *movdf_hardfloat_32bit, *movdf_softfloat,
15916         movv2sf_hardfloat_64bit, load_df_low, load_df_high, store_df_high,
15917         mthc1, mfhc1): Change xfer instruction type to mfc and mtc, as
15918         applicable.
15919         (movcc): Change first xfer to multi.
15920         * config/mips/24k.md, config/mips/4100.md, config/mips/4300.md,
15921         config/mips/5000.md, config/mips/5400.md, config/mips/5500.md,
15922         config/mips/5k.md, config/mips/7000.md, config/mips/9000.md,
15923         config/mips/generic.md: Change reservations using "xfer" to use
15924         "mfc,mtc".
15925         * config/mips/sb1.md (ir_sb1_mtxfer): Use "mtc" instead of
15926         using match_operand.
15927         (ir_sb1_mfxfer): Use "mfc" instead of using match_operand.
15928         * config/mips/sr71k.md (ir_sr70_xfer_from): Use "mfc" instead of
15929         examining mode.
15930         (ir_sr70_xfer_to): Use "mtc" instead of examining mode.
15931
15932 2007-03-22  Richard Henderson  <rth@redhat.com>
15933
15934         * config/i386/i386.c: Remove unnecessary function declarations.
15935         Move targetm definition, and all related macros, to the end of
15936         the file.  Resort some functions to put definitions before uses.
15937         (ix86_attribute_table): Make static.  Move to end of file.
15938         (ix86_gimplify_va_arg): Make static.
15939
15940 2007-03-22  Richard Henderson  <rth@redhat.com>
15941
15942         * config/i386/i386.c (ix86_function_regparm): Early exit for 64-bit;
15943         don't increase local_regparm with force_align_arg_pointer check.
15944         (ix86_function_sseregparm): Assert 32-bit.
15945         (type_has_variadic_args_p): New.
15946         (ix86_return_pops_args): Early exit for 64-bit.  Reindent; use
15947         type_has_variadic_args_p.
15948         (ix86_function_arg_regno_p): Use == 0 instead of ! test for eax.
15949         (init_cumulative_args): Remove TARGET_DEBUG_ARG.  Remove zero_cum;
15950         use memset instead.  Do maybe_vaarg check first; skip attribute
15951         tests if true; skip attribute tests for 64-bit.
15952         (construct_container): Remove TARGET_DEBUG_ARG.
15953         (function_arg_advance_32, function_arg_advance_64): Split out ...
15954         (function_arg_advance): ... from here.
15955         (function_arg_32, function_arg_64): Split out ...
15956         (function_arg): ... from here.
15957         (ix86_pass_by_reference): Tidy.
15958         (ix86_function_value_regno_p): Rearrange w/ switch on regno.
15959         (function_value_32): New, from parts of ix86_function_value
15960         and ix86_value_regno.
15961         (function_value_64): New, from parts of ix86_function_value
15962         and ix86_libcall_value.
15963         (ix86_function_value_1): New.
15964         (ix86_function_value, ix86_libcall_value): Use it.
15965         (return_in_memory_32, return_in_memory_64): Split out ...
15966         (ix86_return_in_memory): ... from here.
15967         (ix86_struct_value_rtx): Skip for 64-bit.
15968         (ix86_libcall_value, ix86_value_regno): Remove.
15969         (setup_incoming_varargs_64): Split out ...
15970         (ix86_setup_incoming_varargs): ... from here.
15971         (ix86_va_start): Remove TARGET_DEBUG_ARG.
15972         (legitimate_address_p, legitimize_address): Remove TARGET_DEBUG_ADDR.
15973         * config/i386/i386-protos.h (ix86_function_value): Remove.
15974         * config/i386/i386.opt (TARGET_DEBUG_ADDR, TARGET_DEBUG_ARG): Remove.
15975
15976 2007-03-22  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
15977
15978         PR other/23572
15979         * c-lex.c (interpret_float): On overflow, emit pedantic warning if
15980         infinities not supported, otherwise emit warning if -Woverflow. On
15981         underflow, emit warning if -Woverflow.
15982         * real.c (real_from_string): Return -1 if underflow, +1 if overflow
15983         and 0 otherwise.
15984         * real.h (real_from_string): Update declaration
15985
15986 2007-03-22  Kai Tietz  <kai.tietz@onevision.com>
15987             Richard Henderson  <rth@redhat.com>
15988
15989         * defaults.h (OUTGOING_REG_PARM_STACK_SPACE): Provide default.
15990         * calls.c (compute_argument_block_size, expand_call,
15991         emit_library_call_value_1): Don't ifdef OUTGOING_REG_PARM_STACK_SPACE.
15992         * expr.c (block_move_libcall_safe_for_call_parm): Likewise.
15993         * function.c (STACK_DYNAMIC_OFFSET): Likewise.
15994         * doc/tm.texi (OUTGOING_REG_PARM_STACK_SPACE): Update.
15995         * config/alpha/unicosmk.h, config/bfin/bfin.h, config/iq2000/iq2000.h,
15996         config/mips/mips.h, config/mn10300/mn10300.h, config/mt/mt.h,
15997         config/pa/pa.h, config/rs6000/rs6000.h, config/score/score.h,
15998         config/spu/spu.h, config/v850/v850.h (OUTGOING_REG_PARM_STACK_SPACE):
15999         Set to 1.
16000
16001 2007-03-22  Joseph Myers  <joseph@codesourcery.com>
16002
16003         * c-incpath.c (add_sysroot_to_chain): New.
16004         (merge_include_chains): Add sysroot argument.  Call
16005         add_sysroot_to_chain if sysrooted.
16006         (register_include_chains): Update call to merge_include_chains.
16007         * doc/cppopts.texi: Document use of '=' in include directory
16008         arguments.
16009
16010 2007-03-22  Uros Bizjak  <ubizjak@gmail.com>
16011
16012         * config/i386/i386.md (cmp<mode>): Rename from cmpsf and cmpdf.
16013         Macroize expander using SSEMODEF mode macro.  Use SSE_FLOAT_MODE_P.
16014         (*cmpfp_<mode>): Rename from *cmpfp_sf and *cmpfp_df. Macroize
16015         insn pattern using X87MODEF12 mode macro.
16016
16017 2007-03-21  Seongbae Park <seongbae.park@gmail.com>
16018
16019         * regmove.c (regmove_optimize): Use reg_mentioned_p
16020         instead of reg_overlap_mentioned_p for DST.
16021
16022 2007-03-21  Mike Stump  <mrs@apple.com>
16023
16024         * c.opt: Fixup for Objective-C/C++.
16025
16026 2007-03-21  Steve Ellcey  <sje@cup.hp.com>
16027
16028         * explow.c (convert_memory_address): Fold memory reference when
16029         POINTERS_EXTEND_UNSIGNED < 0
16030
16031 2007-03-21  Richard Henderson  <rth@redhat.com>
16032
16033         PR target/31245
16034         * config/i386/emmintrin.h (__m128i, __m128d): Mark may_alias.
16035         * config/i386/mmintrin.h (__m64): Likewise.
16036         * config/i386/xmmintrin.h (__m128): Likewise.
16037
16038 2007-03-21  Richard Sandiford  <richard@codesourcery.com>
16039
16040         * config/vxworks.h (VXWORKS_ADDITIONAL_CPP_SPEC): Remove -D options.
16041         (VXWORKS_OS_CPP_BUILTINS): Define.
16042         * config/i386/vxworks.h (VXWORKS_CPU_DEFINE): Fold into...
16043         (TARGET_OS_CPP_BUILTINS): ...here.  Use VXWORKS_OS_CPP_BUILTINS.
16044
16045 2007-03-21  Richard Sandiford  <richard@codesourcery.com>
16046
16047         * rtl.h (constant_pool_reference_p): Delete.
16048         (find_constant_src): Declare.
16049         * rtlanal.c (find_constant_src): New function.
16050         * simplify-rtx.c (constant_pool_reference_p): Delete.
16051         * config/i386/i386.md: Use find_constant_src instead of
16052         constant_pool_reference_p/avoid_constant_pool_reference pairs.
16053
16054 2007-03-21  Richard Sandiford  <richard@codesourcery.com>
16055
16056         * doc/invoke.texi (-fpie, -fPIE): Document __pie__ and __PIE__.
16057         * c-cppbuiltin.c (c_cpp_builtins): Define them.
16058
16059 2007-03-20  Mark Mitchell  <mark@codesourcery.com>
16060
16061         * config/arm/elf.h (TARGET_ASM_DESTRUCTOR): Define.
16062         * config/arm/arm.c (arm_elf_asm_cdtor): New function.
16063         (arm_elf_asm_constructor): Use it.
16064         (arm_elf_asm_destructor): New function.
16065
16066 2007-03-20  Bernd Schmidt  <bernd.schmidt@analog.com>
16067
16068         * jump.c (mark_jump_label): Treat SEQUENCE specially.
16069
16070 2007-03-20  Nathan Sidwell  <nathan@codesourcery.com>
16071
16072         * config/vxlib.c (tls_delete_hook): Use TCB for kernel tasks.
16073
16074 2007-03-19  Andrew Haley  <aph@redhat.com>
16075
16076         PR tree-optimization/31264
16077         * tree-vrp.c (register_edge_assert_for_1): Don't look though
16078         VIEW_CONVERT_EXPRs.
16079
16080 2007-03-19  Paolo Bonzini  <bonzini@gnu.org>
16081
16082         PR rtl-optimization/30907
16083         * fwprop.c (forward_propagate_into): Never propagate inside a loop.
16084         (fwprop_init): Always call loop_optimizer_initialize.
16085         (fwprop_done): Always call loop_optimizer_finalize.
16086         (fwprop): We always have loop info now.
16087         (gate_fwprop_addr): Remove.
16088         (pass_fwprop_addr): Use gate_fwprop as gate.
16089
16090         PR rtl-optimization/30841
16091         * df-problems.c (df_ru_local_compute, df_rd_local_compute,
16092         df_chain_alloc): Call df_reorganize_refs unconditionally.
16093         * df-scan.c (df_rescan_blocks, df_reorganize_refs): Change
16094         refs_organized to refs_organized_size.
16095         (df_ref_create_structure): Use refs_organized_size instead of
16096         bitmap_size if refs had been organized, and keep refs_organized_size
16097         up-to-date.
16098         * df.h (struct df_ref_info): Change refs_organized to
16099         refs_organized_size.
16100         (DF_DEFS_SIZE, DF_USES_SIZE): Use refs_organized_size instead of
16101         bitmap_size.
16102
16103 2007-03-19  Mark Mitchell  <mark@codesourcery.com>
16104
16105         * except.c (output_function_exception_table): Do not reference the
16106         EH personality routine for functions that do not require an
16107         exception table.
16108
16109 2007-03-20  Jakub Jelinek  <jakub@redhat.com>
16110
16111         PR c/30762
16112         * c-typeck.c (convert_for_assignment): Call comptypes for
16113         RECORD_TYPE or UNION_TYPE.
16114
16115         PR inline-asm/30505
16116         * reload1.c (reload): Do invalid ASM checking after
16117         cleanup_subreg_operands.
16118
16119 2007-03-19  Jeff Law  <law@redhat.com>
16120
16121         * tree-cfg.c (find_taken_edge): Tighten conditions for
16122         optimizing computed gotos.
16123
16124 2007-03-19  Michael Matz  <matz@suse.de>
16125
16126         * builtins.c (expand_builtin_sync_operation,
16127         expand_builtin_compare_and_swap,
16128         expand_builtin_lock_test_and_set): Care for extending CONST_INTs
16129         correctly.
16130
16131         * config/i386/sync.md (sync_double_compare_and_swapdi_pic,
16132         sync_double_compare_and_swap_ccdi_pic): Use "SD" as constraint
16133         for operand 3.
16134
16135 2007-03-19  Andreas Krebbel  <krebbel1@de.ibm.com>
16136
16137         * doc/tm.texi: Add brackets around the return type of
16138         TARGET_SECONDARY_RELOAD.
16139
16140 2007-03-19  Andrew Pinski  <andrew_pinski@playstation.sony.com>
16141         Richard Guenther  <rguenther@suse.de>
16142
16143         PR tree-optimization/31254
16144         * tree-ssa-forwprop.c (forward_propagate_addr_expr_1):
16145         Use handled_component_p () where appropriate.  Continue
16146         propagating into the rhs if we propagated into an INDIRECT_REF
16147         on the lhs.
16148
16149 2007-03-19  Andreas Krebbel  <krebbel1@de.ibm.com>
16150
16151         * config/s390/s390.md (op_type attribute): RRR instruction type added.
16152         (FP, DFP, SD_SF, DD_DF, TD_TF): New mode macros.
16153         (xde, xdee): Mode attributes adjusted to support DFP modes.
16154         (RRer, f0, op1, Rf, bt, bfp, HALF_TMODE): New mode attributes added.
16155         ("cmp<mode>", "*cmp<mode>_css_0", "*cmp<mode>_ccs", TF move splitters,
16156         DF move splitters, "floatdi<mode>2", "add<mode>3", "*add<mode>3",
16157         "*add<mode>3_cc", "*add<mode>3_cconly", "sub<mode>3", "*sub<mode>3",
16158         "*sub<mode>3_cc", "*sub<mode>3_cconly", "mul<mode>3", "*mul<mode>3",
16159         "div<mode>3", "*div<mode>3", "*neg<mode>2_nocc", "*abs<mode>2_nocc",
16160         "*negabs<mode>2_nocc", "copysign<mode>3"): Adjusted to support DFP
16161         numbers.
16162         ("*movtf_64", "*movtf_31", "*movdf_64dfp", "*movdf_64", "*movdf_31",
16163         "movsf"): Insn definitions removed.
16164         ("*mov<mode>_64", "*mov<mode>_31", "mov<mode>", "*mov<mode>_64dfp",
16165         "*mov<mode>_64", "*mov<mode>_31", "fix_trunc<DFP:mode>di2",
16166         "trunctddd2", "truncddsd2", "extendddtd2", "extendsddd2"): Insn
16167         definitions added.
16168         ("fixuns_truncdddi2", "fixuns_trunctddi2", "mov<mode>",
16169         "reload_in<mode>", "reload_out<mode>"): Expander added.
16170         ("movtf", "movdf", "reload_outtf", "reload_outdf", "reload_intf"):
16171         Expander removed.
16172
16173 2007-03-19  Andreas Krebbel  <krebbel1@de.ibm.com>
16174
16175         * config/s390/s390.md: Only non-functional changes.  Renamed
16176         FPR mode macro to BFP all over the file.
16177
16178 2007-03-19  Andreas Krebbel  <krebbel1@de.ibm.com>
16179
16180         * config/s390/s390.md (UNSPEC_COPYSIGN): New constant.
16181         (op_type attribute): RRF instruction type added.
16182         (fT0): New mode attribute.
16183         ("*movdi_64dfp", "*movdf_64dfp", "*neg<mode>2_nocc", "*abs<mode>2_nocc",
16184         "*negabs<mode>2_nocc", "copysign<mode>3"): Insn definitions added.
16185         * config/s390/s390.h (SECONDARY_MEMORY_NEEDED): Due to a new
16186         instruction no secondary memory is needed when moving DFmode values
16187         between GPRs and FPRs.
16188
16189 2007-03-19  Andreas Krebbel  <krebbel1@de.ibm.com>
16190
16191         * config/s390/s390.opt ("mhard-float", "msoft-float"): Bit value
16192         inverted and documentation adjusted.
16193         ("mhard-dfp", "msoft-dfp"): New options.
16194         * config/s390/s390.c (s390_handle_arch_option): New architecture
16195         switch: z9-ec.
16196         (override_options): Sanity checks for the new options added.
16197         * config.gcc: New architecture switch: z9-ec.
16198         * config/s390/s390.h (processor_flags): PF_DFP added.
16199         (TARGET_CPU_DFP, TARGET_DFP): Macro definitions added.
16200         (TARGET_DEFAULT): Due to the s390.opt changes hard float is enabled
16201         when the bit is NOT set so remove it from the defaults.
16202
16203 2007-03-19  Andreas Krebbel  <krebbel1@de.ibm.com>
16204
16205         * genemit.c (main): Print include statement for dfp.h.
16206         * dfp.h (decimal_real_arithmetic): Hide prototype if tree_code enum
16207         is not available.
16208
16209 2007-03-19  Hans-Peter Nilsson  <hp@axis.com>
16210
16211         * config/cris/t-elfmulti (EXTRA_MULTILIB_PARTS): Do not define here.
16212
16213 2007-03-19  Kaz Kojima  <kkojima@gcc.gnu.org>
16214
16215         PR target/31022
16216         * config/sh/sh.c (sh_adjust_cost): Use the result of single_set
16217         instead of PATTERN.
16218
16219 2007-03-18  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
16220
16221         * pa.c (output_deferred_plabels, output_bb, output_millicode_call,
16222         attr_length_call, output_call, output_indirect_call): Cleanup
16223         formatting of targetm calls.
16224
16225 2007-03-19  Hans-Peter Nilsson  <hp@axis.com>
16226
16227         * config/cris/cris.h (HANDLE_PRAGMA_PACK_PUSH_POP): Define to 1.
16228
16229 2007-03-18  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
16230
16231         * pa.md: Add fpstore_load and store_fpload instruction types.  Provide
16232         reservation, bypass and anti-bypass descriptions for these
16233         instructions.  Update move patterns.
16234         * pa.c (hppa_fpstore_bypass_p): Check for both TYPE_FPSTORE_LOAD and
16235         TYPE_FPSTORE.
16236
16237 2007-03-18  Dorit Nuzman  <dorit@il.ibm.com>
16238
16239         * tree-vect-transform.c (get_initial_def_for_induction): Replace
16240         GET_MODE_NUNITS with TYPE_VECTOR_SUBPARTS.
16241         (get_initial_def_for_reduction): Likewise.
16242
16243 2007-03-16  Daniel Berlin  <dberlin@dberlin.org>
16244
16245         Fix PR tree-optimization/29922
16246         * tree-ssa-pre.c (bb_bitmap_sets): Remove RVUSE_* members.
16247         (get_representative): Removed.
16248         (value_dies_in_block_x): Update for rvuse removal.
16249         (valid_in_sets): Update for renaming of vuses_dies_in_block_x.
16250         (compute_antic_aux): Handle when PHI nodes appear in
16251         non-single-successors.
16252         (dump_bitmap_of_names): Removed.
16253         (compute_antic_safe): Renamed and removed rvuse calculation.
16254         Calculate only antic safe.
16255         (insert_into_preds_of_block): Remove assert.
16256         (execute_pre): Update for renamed functions.
16257         (defer_or_phi_translate_block): New function.
16258
16259 2007-03-17  Kazu Hirata  <kazu@codesourcery.com>
16260
16261         * config/arm/arm.c, config/arm/thumb2.md, config/m68k/m68k.c,
16262         config/spu/spu.c, omega.h, passes.c, predict.c: Fix comment
16263         typos.
16264         * doc/cpp.texi, doc/extend.texi, doc/invoke.texi: Fix typos.
16265         Follow spelling conventions.
16266
16267         * tree-data-ref.h: Remove the prototype for analyze_array.
16268
16269 2007-03-17  Dorit Nuzman  <dorit@il.ibm.com>
16270
16271         PR tree-optimization/31041
16272         * tree-vect-transform.c (get_initial_def_for_induction): Call
16273         force_gimple_operand.
16274
16275 2007-03-17  Olga Golovanevsky  <olga@il.ibm.com>
16276
16277         * ipa-type-escape.c (look_for_casts) : Revert code to use
16278         handled_component_p due to ada test a-numaux.adb.
16279
16280 2007-03-17  Kazu Hirata  <kazu@codesourcery.com>
16281
16282         * final.c (final_scan_insn): Alter the condition of a
16283         conditional trap if we have nonstandard CC.
16284
16285 2007-03-16  Alexandre Oliva  <aoliva@redhat.com>
16286
16287         * configure.ac: Remove excess quoting from asm line 0 test.
16288         * configure: Rebuilt.
16289
16290 2007-03-16  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
16291
16292         * doc/invoke.texi (-Wconversion): Document warnings specific to C++.
16293         * c-common.c (convert_and_check): Move warning logic to...
16294         (warnings_for_convert_and_check): ...here. Define.
16295         * c-common.h (warnings_for_convert_and_check): Declare.
16296
16297 2007-03-16  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
16298
16299         * pa.c (attr_length_call): Partially revert change of 2007-03-09.
16300         (output_call): Likewise.
16301
16302 2007-03-16  Richard Sandiford  <richard@codesourcery.com>
16303
16304         * config/vxworks.h (SUPPORTS_INIT_PRIORITY): Define.
16305
16306 2007-03-16  Richard Sandiford  <richard@codesourcery.com>
16307
16308         * config/vx-common.h (WINT_TYPE, WINT_TYPE_SIZE): Define.
16309
16310 2007-03-16  Uros Bizjak  <ubizjak@gmail.com>
16311
16312         * config/i386/i386.c (override_options): Add PTA_NO_SAHF to k8,
16313         opteron, athlon-64 and athlon-fx processor_alias_table entries.
16314
16315 2007-03-16  Sebastian Pop  <sebastian.pop@inria.fr>
16316
16317         PR tree-optimization/31183
16318         * tree-loop-linear.c (gather_interchange_stats, try_interchange_loops):
16319         Use double_int instead of unsigned int for representing access_strides.
16320         * testsuite/gcc.dg/tree-ssa/pr31183.c: New.
16321
16322 2007-03-16  Richard Guenther  <rguenther@suse.de>
16323
16324         PR tree-optimization/31146
16325         * tree-ssa-forwprop.c (forward_propagate_addr_expr_1): Restructure
16326         to allow recursion of forward_propagate_addr_expr.
16327         (forward_propagate_addr_into_variable_array_index): Likewise.
16328         (forward_propagate_addr_expr): Likewise.
16329         (tree_ssa_forward_propagate_single_use_vars): Likewise.
16330         (forward_propagate_addr_expr_1): Recurse on simple copies
16331         instead of propagating into them.  Do so for useless conversions
16332         as well.
16333         (forward_propagate_addr_expr): Clean up unused statements after
16334         recursion.
16335
16336 2007-03-16  Richard Guenther  <rguenther@suse.de>
16337
16338         * builtins.c (expand_builtin_cexpi): Use the right argument
16339         for the expansion via cexp.
16340
16341 2007-03-16  Alexandre Oliva  <aoliva@redhat.com>
16342
16343         * configure.ac: Don't require ELF binutils to tolerate # 0 "".
16344         * configure: Rebuilt.
16345
16346 2007-03-16  Alexandre Oliva  <aoliva@redhat.com>
16347
16348         PR debug/29906
16349         * dwarf2out.c (force_type_die): Adjust comment.
16350         (dwarf2out_imported_module_or_decl): Handle base AT_import types.
16351
16352 2007-03-15  DJ Delorie  <dj@redhat.com>
16353
16354         * config/frv/predicates.md (minmax_operator): Don't check operands
16355         here.
16356
16357 2007-03-15  Zdenek Dvorak  <dvorakz@suse.cz>
16358
16359         * tree-ssa-loop-niter.c (record_estimate): Add "upper" argument.
16360         Update constant estimates of number of iterations.
16361         (record_nonwrapping_iv): Add "upper" argument.  "data_size_bounds_p"
16362         argument renamed to "realistic".
16363         (compute_estimated_nb_iterations): Removed.
16364         (record_niter_bound): New function.
16365         (idx_infer_loop_bounds): For possible but unlikely tail arrays,
16366         call record_nonwrapping_iv with upper = false.
16367         (infer_loop_bounds_from_signedness): Pass upper argument to
16368         record_nonwrapping_iv.
16369         (estimate_numbers_of_iterations_loop): Do not call
16370         compute_estimated_nb_iterations.  Record estimate based on profile
16371         information.  Initialize the constant estimates of number of
16372         iterations.
16373         * tree-data-ref.c (estimated_loop_iterations): Return the recorded
16374         estimates.
16375         * tree-ssa-loop-prefetch.c (loop_prefetch_arrays): Add dump when
16376         number of iterations is too small.
16377         * cfgloop.h (struct nb_iter_bound): Remove "realistic" field.
16378         (EST_NOT_AVAILABLE): Removed.
16379         (struct loop): Replace estimated_nb_iterations by any_upper_bound,
16380         nb_iterations_upper_bound, any_estimate and nb_iterations_estimate
16381         fields.
16382
16383 2007-03-15  Zdenek Dvorak  <dvorakz@suse.cz>
16384
16385         * tree-ssa-loop-niter.c (refine_bounds_using_guard, bound_difference):
16386         Handle NE_EXPR guards.
16387
16388 2007-03-15  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
16389
16390         PR c++/24924
16391         * c-opts.c (c_common_post_options): Handle C++ post-processing here.
16392         Set also -pedantic-errors by default for the  preprocessor unless
16393         -fpermissive is given.
16394
16395 2007-03-15  Richard Guenther  <rguenther@suse.de>
16396
16397         PR middle-end/29719
16398         PR middle-end/31161
16399         * builtins.c (expand_builtin_cexpi): As a fallback if we
16400         don't have builtins for sincos or cexp create a function
16401         declaration for cexp and expand to a call to that.
16402         (expand_builtin_int_roundingfn): Always fall
16403         back to floor/ceil and its variants even if they may be
16404         not available.
16405
16406 2007-03-15  Steven Bosscher  <steven@gcc.gnu.org>
16407
16408         PR middle-end/31159
16409         * cfglayout.c (fixup_reorder_chain): Postpone deleting dead
16410         jump tables, move the call to delete_dead_jumptables from here...
16411         (cfg_layout_finalize): ...to here.  But rebuild jump labels first.
16412         * cfgrtl.c (cfg_layout_can_merge_blocks_p): When not optimizing,
16413         don't allow merging of blocks that try_redirect_by_replacing_jump
16414         also does not handle when not optimizing.
16415
16416 2007-03-15  Uros Bizjak  <ubizjak@gmail.com>
16417             Francois-Xavier Coudert  <coudert@clipper.ens.fr>
16418
16419         * config/i386/i386.md (x86_sahf_1): Correctly handle
16420         HAVE_AS_IX86_SAHF.
16421
16422 2007-03-15  Uros Bizjak  <ubizjak@gmail.com>
16423
16424         PR target/31167
16425         * config/i386/i386.md (*addti3_1, *addti3_1 splitter): Use
16426         x86_64_general_operand as operand[2] predicate.  Remove "iF"
16427         from operand constraints and use "e" constraint instead.
16428         (*subti3_1, *subti3_1 splitter): Ditto.
16429         (*negti2_1, *negti2_1 splitter): Use nonimmediate_operand as
16430         operand[1] predicate.
16431
16432 2007-03-14  Sebastian Pop  <sebastian.pop@inria.fr>
16433
16434         * tree-loop-linear.c (gather_interchange_stats): For multidimensional
16435         arrays, multiply the access strides by the size of the sub-array.
16436         * testsuite/gcc.dg/tree-ssa/ltrans-5.c: New.
16437
16438 2007-03-14  Uros Bizjak  <ubizjak@gmail.com>
16439
16440         * configure.ac (HAVE_AS_IX86_SAHF): On x86 targets check whether
16441         the configured assembler supports the sahf mnemonic.
16442         * configure: Regenerate.
16443         * config.in: Regenerate.
16444
16445         * config/i386/i386.md (x86_sahf_1): Depending on HAVE_AS_IX86_SAHF,
16446         emit "sahf" or ".byte\t0x9e" as asm template.
16447
16448 2007-03-14  Michael Meissner  <michael.meissner@amd.com>
16449
16450         PR 31018
16451         * config/i386/i386.h (X86_TUNE_SHORTEN_X87_SSE): New tuning
16452         option to replace hard coded TARGET_xxx in md file.
16453         (X86_TUNE_AVOID_VECTOR_DECODE): Ditto.
16454         (X86_TUNE_SLOW_IMUL_IMM32_MEM): Ditto.
16455         (X86_TUNE_SLOW_IMUL_IMM8): Ditto.
16456         (X86_TUNE_MOVE_M1_VIA_OR): Ditto.
16457         (X86_TUNE_NOT_UNPAIRABLE): Ditto.
16458         (X86_TUNE_NOT_VECTORMODE): Ditto.
16459         (TUNE_SHORTEN_X87_SSE): Use new tuning option.
16460         (TUNE_AVOID_VECTOR_DECODE): Ditto.
16461         (TUNE_SLOW_IMUL_IMM32_MEM): Ditto.
16462         (TUNE_SLOW_IMUL_IMM8): Ditto.
16463         (TUNE_MOVE_M1_VIA_OR): Ditto.
16464         (TUNE_NOT_UNPAIRABLE): Ditto.
16465         (TUNE_NOT_VECTORMODE): Ditto.
16466
16467         * config/i386/i386.c (ix86_tune_features): Fill in new tuning
16468         options.
16469
16470         * config/i386/i386.md (fix_trunc?f?1_sse peephole2): Use new
16471         tuning options instead of hard coded TARGET_xxx.
16472         (fix ssemode peephole2's): Ditto.
16473         (imul peephole2's): Ditto.
16474         (movsi_or): Ditto.
16475         (movdi_or_rex64): Ditto.
16476         (move peephole2): Ditto.
16477         (not peephole2's): Ditto.
16478
16479 2007-03-14  Dirk Mueller  <dmueller@suse.de>
16480
16481         * c-common.h (empty_body_warning): Rename to empty_if_body_warning.
16482         * c-common.c (empty_if_body_warning): Rephrase diagnostic message.
16483         * c-parser.c (c_parser_if_body): Always add an empty statement in case
16484         of empty body.
16485         * c-parser.c (c_parser_do_statement): Warn about empty body in
16486         do/while statement.
16487         * c-typeck (c_finish_if_stmt): Call empty_if_body_warning.
16488         * doc/invoke.texi (-Wempty-body): Update documentation.
16489
16490 2007-03-14  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
16491
16492         PR c/21438
16493         * c-common.h (warn_for_div_by_zero): Declare.
16494         * c-common.c (warn_for_div_by_zero): Define.
16495         * c-typeck.c (build_binary_op): Call warn_for_div_zero instead of
16496         warning.
16497
16498 2007-03-14  Richard Sandiford  <richard@codesourcery.com>
16499
16500         * Makefile.in (PREPROCESSOR_DEFINES): Add directory terminators
16501         to PREFIX and STANDARD_PREFIX.
16502
16503 2007-03-14  Richard Sandiford  <richard@codesourcery.com>
16504             Phil Edwards  <phil@codesourcery.com>
16505
16506         * gthr-vxworks.h: Add an extern "C" wrapper for C++.
16507         (__gthread_once_t): Remove busy field for RTPs.
16508         (__GTHREAD_ONCE_INIT): Update accordingly.
16509
16510 2007-03-14  Richard Sandiford  <richard@codesourcery.com>
16511
16512         * doc/invoke.texi: Document VxWorks options.
16513
16514 2007-03-14  Uros Bizjak  <ubizjak@gmail.com>
16515
16516         * doc/invoke.texi (i386 and x86-64 Options): Clarify -msahf option.
16517
16518 2007-03-13  Seongbae Park <seongbae.park@gmail.com>
16519
16520         PR tree-optimization/30590
16521         * tree-nrv.c (tree_nrv): Check for the partial update of the
16522         return value.
16523
16524 2007-03-13  Alexandre Oliva  <aoliva@redhat.com>
16525
16526         * flags.h (flag_random_seed): Remove declaration, in favor of...
16527         * toplev.h (get_random_seed, set_random_seed): ... these.
16528         * tree.c (get_file_function_name): Use the former.
16529         * opts.c (common_handle_option): Use the latter.
16530         * toplev.c
16531
16532 2007-03-13  Steven Bosscher  <steven@gcc.gnu.org>
16533
16534         PR middle-end/31127
16535         * cse.c (cse_find_path): Do not bail out if a basic block that
16536         we already visited now becomes part of a path that starts at a
16537         different basic block.  Just disallow this, to make sure we
16538         visit each basic block at most once.
16539
16540 2007-03-13  Jan Hubicka  <jh@suse.cz>
16541
16542         * ipa-inline.c (cgraph_maybe_hot_edge_p): Look for hot/cold
16543         attributes, when profile esitmate is present, calls with very low
16544         frequency are cold.
16545
16546 2007-03-13  Zdenek Dvorak  <dvorakz@suse.cz>
16547
16548         PR tree-optimization/30730
16549         PR tree-optimization/26900
16550         * tree-ssa-loop-niter.c: Include gmp.h.
16551         (bounds): New type.
16552         (mpz_set_double_int, get_type_bounds, mpz_to_double_int,
16553         split_to_var_and_offset, determine_value_range,
16554         bound_difference_of_offsetted_base, refine_bounds_using_guard,
16555         bound_difference, bounds_add, bounds_negate,
16556         number_of_iterations_ne_max, dump_affine_iv): New functions.
16557         (number_of_iterations_ne, number_of_iterations_lt_to_ne,
16558         assert_loop_rolls_lt, assert_loop_rolls_le): Use bounds on the
16559         difference of initial and final value of control iv to validate
16560         results.
16561         (number_of_iterations_cond): Add loop parameter.  Determine bounds
16562         on the difference of the extremes of the control iv.  Add dumps.
16563         (expand_simple_operations): Handle phi nodes.
16564         (simplify_using_initial_conditions): Do not record used conditions.
16565         (number_of_iterations_exit): Pass loop to number_of_iterations_cond.
16566         Do not set additional_info.
16567         (implies_nonnegative_p, implies_ge_p): Removed.
16568         (derive_constant_upper_bound): Do not use parameter `additional'.
16569         (record_estimate): Parameter `additional' removed.  Parameter
16570         `i_bound' added.  Do not call derive_constant_upper_bound.
16571         (record_nonwrapping_iv): Use derive_constant_upper_bound to
16572         bound the number of iterations estimate.
16573         (estimate_numbers_of_iterations_loop): Pass the estimate from
16574         the number of iterations analysis to record_estimate.
16575         * tree.h (multiple_of_p): Declare.
16576         * tree-scalar-evolution.c (expression_expensive_p): Removed.
16577         (scev_const_prop): Do not check expression_expensive_p.
16578         * fold-const.c (multiple_of_p): Exported.
16579         * double-int.c (double_int_mask): Exported.
16580         * double-int.h (double_int_mask): Declare.
16581         * tree-flow.h (struct tree_niter_desc): Removed additional_info
16582         field.  Added max field.
16583
16584 2007-03-13  David Taylor  <taylor@candd.org>
16585
16586         PR driver/12448:
16587         * gcc.c (cpp_unique_options): If -MT or -MQ is seen, don't pass
16588         default -MQ.
16589
16590 2007-03-13  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
16591
16592         PR target/31123
16593         * pa.md (vdepi_ior): Don't allow zero length deposit.  Likewise for
16594         two unamed patterns.
16595
16596 2007-03-13  Uros Bizjak  <ubizjak@gmail.com>
16597
16598         * config/i386/i386.opt (mcx16, msahf): New options.
16599         * config/i386/i386.c (x86_cmpxchg16b, x86_sahf): Remove.
16600         (ix86_tune_features) [X86_TUNE_USE_SAHF]: Enable for m_GENERIC.
16601
16602         * config/i386/driver-i386.c (bit_LAHF_LM): New define.
16603         (host_detect_local_cpu): Detect cx16 and lahf_lm cpuid bits.
16604         Output -mcx16 and -msahf options when corresponding bit is set.
16605
16606         * doc/invoke.texi (i386 and x86-64 Options): Document -mcx16
16607         and -msahf options.
16608
16609 2007-03-13  Alexandre Oliva  <aoliva@redhat.com>
16610
16611         * configure.ac: Test for assembler tolerance to # 0 "".
16612         * configure, config.in: Rebuilt.
16613         * final.c (final_scan_insn): Emit it if HAVE_AS_LINE_ZERO.
16614
16615 2007-03-13  Geoffrey Keating  <geoffk@apple.com>
16616
16617         * doc/invoke.texi (Spec Files): Update for '%{,' spec.
16618
16619         * config/rs6000/darwin-fallback.c: Compile file only on powerpc.
16620         (handle_syscall): Handle direct system calls.
16621         * config/rs6000/darwin.h (HAS_MD_FALLBACK_FRAME_STATE_FOR): Delete.
16622
16623 2007-03-12  Brooks Moses  <brooks.moses@codesourcery.com>
16624
16625         * doc/invoke.texi: Fix cpp.info cross-reference.
16626         * doc/passes.texi: Fix gcc.info cross-reference.
16627
16628 2007-03-12  Zdenek Dvorak  <dvorakz@suse.cz>
16629
16630         PR tree-optimization/30835
16631         * lambda-code.c (can_convert_to_perfect_nest): Check whether
16632         bb_for_stmt is not NULL before accessing it.
16633
16634 2007-03-12  Joseph Myers  <joseph@codesourcery.com>
16635
16636         * gcc.c (main): Handle target_sysroot_hdrs_suffix being NULL for
16637         some multilibs.
16638
16639 2007-03-12  Brooks Moses  <brooks.moses@codesourcery.com>
16640
16641         PR 30635
16642         * doc/install.texi: Document --enable-stage1-languages
16643
16644 2007-03-12  Steven Bosscher  <steven@gcc.gnu.org>
16645
16646         * tree-pass.h (pass_into_cfg_layout_mode,
16647         pass_outof_cfg_layout_mode): Declare.
16648         * cfglayout.c (into_cfg_layout_mode, outof_cfg_layout_mode,
16649         pass_into_cfg_layout_mode, pass_outof_cfg_layout_mode): New.
16650         * passes.c (pass_into_cfg_layout_mode): Schedule before jump2.
16651         (pass_outof_cfg_layout_mode): Schedule after pass_rtl_ifcvt.
16652
16653 2007-03-12  Seongbae Park <seongbae.park@gmail.com>
16654
16655         * c-decl.c (warn_variable_length_array): New function.
16656         Refactored from grokdeclarator to handle warn_vla
16657         and handle unnamed array case.
16658         (grokdeclarator): Refactored VLA warning case.
16659         * c.opt (Wvla): New flag.
16660         * doc/invoke.texi (Wvla): New warning.
16661
16662 2007-03-12  Richard Henderson  <rth@redhat.com>
16663
16664         * config/alpha/alpha.c (alpha_elf_section_type_flags): New.
16665         (TARGET_SECTION_TYPE_FLAGS): New.
16666
16667 2007-03-12  Richard Henderson  <rth@redhat.com>
16668
16669         * config/darwin.c (machopic_reloc_rw_mask): New.
16670         * config/darwin-protos.h (machopic_reloc_rw_mask): Declare.
16671         * config/darwin.h (TARGET_ASM_RELOC_RW_MASK): New.
16672
16673 2007-03-12  Mark Mitchell  <mark@codesourcery.com>
16674
16675         * cppdefault.c (cpp_EXEC_PREFIX): New variable.
16676         * cppdefault.h (cpp_PREFIX): Document.
16677         (cpp_PREFIX_len): Likewise.
16678         (cpp_EXEC_PREFIX): New variable.
16679         * Makefile.in (PREPROCESSOR_DEFINES): Add STANDARD_EXEC_PREFIX.
16680         * c-incpath.c (add_standard_paths): Correct logic for relocating
16681         paths within prefix.
16682
16683 2007-03-12  Uros Bizjak  <ubizjak@gmail.com>
16684
16685         * config/i386/i386.md (fixuns_trunc<mode>hi2): Implement from
16686         fixuns_truncsfhi2 and fixuns_truncdfhi2 using SSEMODEF
16687         mode macro.
16688         (fix_trunc<mode>di_sse): Implement from fix_truncsfdi_sse and
16689         fix_truncdfdi_sse using SSEMODEF mode macro.
16690         (fix_trunc<mode>si_sse): Implement from fix_truncsfsi_sse and
16691         fix_truncdfsi_sse using SSEMODEF mode macro.
16692         (fix_trunc?f?i_sse peephole2): Implement using SSEMODEF mode macro.
16693         (fix_trunc?f?i_sse K8 peephole2): Fix register constraint.
16694
16695 2007-03-12  Richard Sandiford  <richard@codesourcery.com>
16696
16697         * config.gcc (i[4567]86-wrs-vxworks, i[4567]86-wrs-vxworksae): Add
16698         elfos.h to tm_file.
16699
16700 2007-03-12  Olga Golovanevsky  <olga@il.ibm.com>
16701
16702         * tree.h : Add multiple_of_p declaration.
16703         * fold-const.c (multiple_of_p): Make multiple_of_p public.
16704         * ipa-type-escape.c (results_of_malloc): Redundant.
16705         (visited_stmts): New. Visited stmt for walk_use_def_chains.
16706         (cast_type): Extended with new members.
16707         (check_cast): Returns cast_type.
16708         (cast): New structure for data of walk_use_def_chains.
16709         (is_malloc_result, is_cast_from_non_pointer_1,
16710         is_cast_from_non_pointer,
16711         is_array_access_through_pointer_and_index): New functions.
16712         (look_for_casts): Returns cast types.
16713         (check_call): Returns void.
16714         (okay_pointer_operation): Use support of pointer plus index,
16715         pointer plus constant and allow all multiplications.
16716
16717 2007-03-11  Richard Guenther  <rguenther@suse.de>
16718
16719         PR tree-optimization/31115
16720         * tree-vrp.c (extract_range_from_binary_expr): Make sure
16721         the shift count is positive and non-anti-range for RSHIFT_EXPR.
16722         A shift count of zero is not special as with *_DIV_EXPR.
16723         (vrp_int_const_binop): Handle RSHIFT_EXPR for determining overflow
16724         direction.
16725
16726 2007-03-11  Ian Lance Taylor  <iant@google.com>
16727
16728         * tree-vrp.c (vrp_int_const_binop): Handle PLUS_EXPR and
16729         the *_DIV_EXPR codes correctly with overflow infinities.
16730
16731 2007-03-11  Ira Rosen  <irar@il.ibm.com>
16732
16733         * tree-data-ref.c (analyze_offset): Add a return value (bool) to
16734         indicate success/failure of the analysis. Add negation to subtrahend
16735         in case of subtraction. Fail if both operands contain constants.
16736         (create_data_ref): Fail if analyze_offset fails.
16737
16738 2007-03-11  Uros Bizjak  <ubizjak@gmail.com>
16739
16740         * config/i386/i386.md (frndintxf2): Rename to ...
16741         (rintxf2): ... this. Remove expander having same name.
16742         (rintsf2, rintdf2): Implement using SSEMODEF macro.
16743         (roundsf2, rounddf2): Ditto.
16744         (lrint<mode>di2, lrint<mode>si2): Implement using SSEMODEI24 macro.
16745         (lround<mode>di2, lround<mode>si2): Ditto.
16746
16747 2007-03-11  Steven Bosscher  <steven@gcc.gnu.org>
16748
16749         * lower-subreg.c: Include except.h.
16750         (decompose_multiword_subregs): Verify that the only control flow
16751         insns we can split are loads to multi-words pseudos.
16752         Handle breaking such blocks after splitting, instead of calling
16753         find_many_sub_basic_blocks.
16754
16755         * loop-unroll.c (split_edge_and_insert): Don't set BB_SUPERBLOCK
16756         on the new basic block.  Add a lengthy comment explaining why we
16757         thought this was necessary.
16758         * cfglayout.c (cfg_layout_finalize): Don't break superblocks.
16759
16760 2007-03-10  Mark Mitchell  <mark@codesourcery.com>
16761
16762         PR c++/30924
16763         * tree.c (walk_type_fields): Recurse into the element type of
16764         ARRAY_TYPEs if there is a pointer set.
16765
16766 2007-03-10  Dirk Mueller  <dmueller@suse.de>
16767
16768         * c-common.c (warn_logical_operator): Fix condition.
16769
16770 2007-03-10  Tobias Schl�ter  <tobi@gcc.gnu.org>
16771
16772         * config/i386/darwin.h (DARWIN_MINVERSION_SPEC): Add missing
16773         quotation mark.
16774         * config/darwin.c (machopic_select_section): Remove superfluous
16775         argument in call to categorize_decl_for_section.  Remove unused
16776         variable shlib.
16777
16778 2007-03-10  Joseph Myers  <joseph@codesourcery.com>
16779
16780         * configure.ac (glibc_header_dir): Set using with_build_sysroot if
16781         defined.
16782         * configure: Regenerate.
16783
16784 2007-03-10  Uros Bizjak  <ubizjak@gmail.com>
16785
16786         PR target/31101
16787         * config/i386/i386.md (UNSPEC_C2_FLAG): New constant.
16788         (fpremxf4_i387, fprem1xf4_i387): Use UNSPEC_C2_FLAG.
16789         (fmodxf3, fmod<mode>3, remainderxf3, remainder<mode>3):
16790         Add LABEL_NUSES to emitted label.
16791         * config/i386/i386.c (ix86_emit_fp_unordered_jump): Add
16792         branch probability value to emitted jump insn.
16793         * reg-stack.c (subst_stack_regs_pat)[UNSPEC]: Handle UNSPEC_C2_FLAG.
16794         Do not check life information and do not re-arrange input operands
16795         for UNSPEC_FSCALE_EXP, UNSPEC_FPREM_U and UNSPEC_FPREM1_U.
16796
16797 2007-03-10  Kaz Kojima  <kkojima@gcc.gnu.org>
16798
16799         * config/sh/sh.c (sh_insn_length_adjustment): Adjust for
16800         the change of decode_asm_operands.
16801
16802 2007-03-10  Kaz Kojima  <kkojima@gcc.gnu.org>
16803
16804         * mode-switching.c (create_pre_exit): Skip blockage insn.
16805
16806 2007-03-09  Diego Novillo  <dnovillo@redhat.com>
16807
16808         * tree-pass.h (TODO_update_smt_usage): Remove.
16809         Update all users.
16810         * tree-ssa-forwprop.c (forward_propagate_addr_expr_1): Remove
16811         argument SOME.
16812         Update all users.
16813
16814 2007-03-09  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
16815
16816         * pa.c (attr_length_call): Revise condition for long
16817         pc-relative branch.
16818         (output_call): Use "LONG_PIC_SDIFF" instruction sequence for long
16819         local calls on the SOM target.  Don't use "LONG_PIC_PCREL" call
16820         sequence on SOM target.
16821
16822 2007-03-09  Geoffrey Keating  <geoffk@apple.com>
16823
16824         * gcc.c: Document %{, in big comment at top.
16825         (input_suffix_matches): Remove special handling for .s and
16826         .S.
16827         (input_spec_matches): New.
16828         (handle_braces): Handle %{,.
16829         (validate_switches): ',' indicates a value which is not a switch.
16830         * config/alpha/osf.h (ASM_FINAL_SPEC): Use %{, rather than %{.
16831         to detect assembler input.
16832         * config/i386/sol2.h (CPP_SPEC): Likewise.
16833         * config/rs6000/sysv4.h (ASM_SPEC): Likewise.
16834         * config/rs6000/vxworks.h (ASM_SPEC): Likewise.
16835         * config/rs6000/lynx.h (ASM_SPEC): Likewise.
16836         * config/rs6000/linux64.h (ASM_SPEC_COMMON): Likewise.
16837         * config/i386/darwin.h (DARWIN_MINVERSION_SPEC): Objective-C plus
16838         -m64 causes deployment target to default to 10.5.
16839         * config/rs6000/darwin.h (DARWIN_MINVERSION_SPEC): Likewise.
16840
16841 2007-03-09  Richard Henderson  <rth@redhat.com>
16842
16843         PR target/26090
16844         * target.h (targetm.asm.out.reloc_rw_mask): New.
16845         * target-def.h (TARGET_ASM_RELOC_RW_MASK): New.
16846         (TARGET_ASM_OUT): Use it.
16847         * targhooks.c, targhooks.h (default_reloc_rw_mask): New.
16848         * varasm.c (categorize_decl_for_section): Remove shlib argument;
16849         use the new reloc_rw_mask target hook instead.
16850         (default_section_type_flags_1): Merge into...
16851         (default_section_type_flags): ... here.
16852         (decl_readonly_section_1): Merge into...
16853         (decl_readonly_section): ... here.
16854         (default_elf_select_section_1): Merge into...
16855         (default_elf_select_section): ... here.
16856         (default_unique_section_1): Merge into...
16857         (default_unique_section): ... here.
16858         (compute_reloc_for_rtx_1, compute_reloc_for_rtx): New.
16859         (default_select_rtx_section): Use it.
16860         (default_elf_select_rtx_section): Likewise.
16861         * output.h: Update to match.
16862         * doc/tm.texi (TARGET_ASM_RELOC_RW_MASK): New.
16863         * config/alpha/alpha.c (alpha_elf_reloc_rw_mask): New.
16864         (TARGET_ASM_RELOC_RW_MASK): New.
16865         * config/i386/i386.c (x86_64_elf_select_section): Adjust call
16866         to categorize_decl_for_section.
16867         (x86_64_elf_unique_section): Likewise.
16868         * config/ia64/hpux.h (TARGET_ASM_SELECT_SECTION,
16869         TARGET_ASM_UNIQUE_SECTION, TARGET_ASM_SELECT_RTX_SECTION): Remove.
16870         (TARGET_ASM_RELOC_RW_MASK): New.
16871         * config/ia64/ia64.c (ia64_rwreloc_select_section,
16872         ia64_rwreloc_unique_section, ia64_rwreloc_select_rtx_section): Remove.
16873         (ia64_hpux_reloc_rw_mask, ia64_reloc_rw_mask): New.
16874         (TARGET_RWRELOC): Remove.
16875         (ia64_section_type_flags): Adjust call to default_section_type_flags.
16876         * config/ia64/sysv4.h (TARGET_ASM_RELOC_RW_MASK): New.
16877         * config/rs6000/rs6000.c (rs6000_elf_section_type_flags): Remove.
16878         (rs6000_elf_select_section, rs6000_elf_unique_section): Remove.
16879         (rs6000_elf_reloc_rw_mask, rs6000_xcoff_reloc_rw_mask): New.
16880         (rs6000_xcoff_select_section): Use decl_readonly_section.
16881         (rs6000_xcoff_section_type_flags): Use default_section_type_flags.
16882         * config/rs6000/sysv4.h (TARGET_ASM_RELOC_RW_MASK): New.
16883         (TARGET_ASM_SELECT_SECTION, TARGET_ASM_UNIQUE_SECTION): Remove.
16884         (TARGET_SECTION_TYPE_FLAGS): Remove.
16885         * config/rs6000/xcoff.h (TARGET_ASM_RELOC_RW_MASK): New.
16886
16887 2007-03-09  Roger Sayle  <roger@eyesopen.com>
16888
16889         * fold-const.c (fold_comparison): Remove compile-time evaluation of
16890         complex constant equality/inequality comparisons for here.
16891         (fold_binary) <EQ_EXPR>: Simplify complex comparisons that are
16892         known at compile-time or can be simplified to a scalar comparison.
16893         (fold_relational_const): Move compile-time evaluation of complex
16894         constant equality/inequality comparisons to here.
16895
16896 2007-03-09  Alexandre Oliva  <aoliva@redhat.com>
16897
16898         PR rtl-optimization/30643
16899         * cse.c (cse_insn): Recompute dest_hash after insert_regs for
16900         dest_addr_elt.
16901         (fold_rtx): Recurse, like before 2006-11-03.
16902
16903 2007-03-09  DJ Delorie  <dj@redhat.com>
16904
16905         * config/m32c/t-m32c (m32c-pragma.o): Add TM_H dependency to
16906         m32c-pragma.o.
16907
16908 2007-03-09  Aldy Hernandez  <aldyh@redhat.com>
16909
16910         PR tree-optimization/30375
16911         * tree-ssa-dse.c (dse_possible_dead_store_p): Do not eliminate if
16912         LHS of statements is not the same.
16913         * testsuite/gcc.dg/tree-ssa/ssa-dse-10.c: New.
16914
16915 2007-03-09  Chao-ying Fu  <fu@mips.com>
16916
16917         * doc/extend.texi (MIPS DSP Built-in Functions): Document the DSP
16918         REV 2.
16919         * doc/invoke.texi (-mdspr2): Document new option.
16920         * config/mips/mips.md (UNSPEC_ABSQ_S_QB .. UNSPEC_DPSQX_SA_W_PH):
16921         New unspec for DSP REV 2.
16922         (<u>mulsidi3_32bit_internal): Check if !TARGET_DSPR2, because
16923         these instructions are extended in DSP REV 2.
16924         (mips-dspr2.md): Include.
16925         * config/mips/mips.opt (mdspr2): New option.
16926         * config/mips/mips.c (mips_function_type): Add MIPS_V4QI_FTYPE_V4QI,
16927         MIPS_SI_FTYPE_SI_SI_SI, MIPS_DI_FTYPE_DI_USI_USI, MIPS_DI_FTYPE_SI_SI,
16928         MIPS_DI_FTYPE_USI_USI, MIPS_V2HI_FTYPE_SI_SI_SI.
16929         (override_options): Check TARGET_DSPR2 to enable MASK_DSP.
16930         (CODE_FOR_mips_mul_ph): Define it to CODE_FOR_mulv2hi3.
16931         (dsp_bdesc): Add DSP REV 2 builtins.  Remove 32-bit only DSP builtins.
16932         (dsp_32only_bdesc): New description table for 32-bit only DSP REV 1
16933         and 2 builtins.
16934         (bdesc_map): Add one field of unsupported_target_flags.
16935         (bdesc_arrays):  Update entries to have extra fields.  Add
16936         dsp_32only_bdesc.
16937         (mips_init_builtins): Initialize new function types.
16938         Check unsupported_target_fileds to filter out builtins.
16939         * config/mips/mips.h (TARGET_CPU_CPP_BUILTINS): Define __mips_dspr2 if
16940         TARGET_DSPR2.
16941         (ASM_SPEC): Pass mdspr2 to the assembler.
16942         * config/mips/mips-dspr2.md: New file.
16943
16944 2007-03-09  Sa Liu  <saliu@de.ibm.com>
16945
16946         * config/rs6000/altivec.md: Fix vcond patterns using if_then_else.
16947
16948 2007-03-09  Ian Lance Taylor  <iant@google.com>
16949
16950         * opts.c (common_handle_option): Treat -Wstrict-overflow (with no
16951         argument) like -Wstrict-overflow=2.
16952         * doc/invoke.texi (Warning Options): Update documentation.
16953
16954 2007-03-09  Dirk Mueller  <dmueller@suse.de>
16955
16956         PR c++/17946
16957         * doc/invoke.texi (-Wlogical-op): Document.
16958         * common.opt (-Wlogical-op): New.
16959         * c-common.h (warn_logical_operator): Declare.
16960         * c-common.c (warn_logical_operator): Define.
16961         * c-typeck.c (parser_build_binary_op): Call
16962         warn_logical_operator.
16963
16964 2007-03-09  Alexandre Oliva  <aoliva@redhat.com>
16965
16966         * rtl.h (gen_rtx_ASM_INPUT): Use "" instead of NULL file name.
16967         * final.c (final_scan_insn): Test for non-"" file name.
16968
16969 2007-03-09  Sebastian Pop  <sebastian.pop@inria.fr>
16970
16971         * doc/loop.texi: Document the Omega linear constraints solver.
16972         * doc/invoke.texi: Document -fcheck-data-deps, omega-max-vars,
16973         omega-max-geqs, omega-max-eqs, omega-max-wild-cards,
16974         omega-hash-table-size, omega-max-keys, and
16975         omega-eliminate-redundant-constraints.
16976         * tree-pass.h (pass_check_data_deps): Declared.
16977         * omega.c: New.
16978         * omega.h: New.
16979         * timevar.def (TV_CHECK_DATA_DEPS): Declared.
16980         * tree-ssa-loop.c (check_data_deps, gate_check_data_deps,
16981         pass_check_data_deps): New.
16982         * tree-data-ref.c (init_data_ref): Remove declaration.
16983         (dump_data_dependence_relation): Dump DDR_INNER_LOOP.
16984         (analyze_array): Renamed init_array_ref, move up initializations.
16985         (init_data_ref): Renamed init_pointer_ref.  Moved before its call.
16986         Removed arguments that are set to NULL.
16987         (analyze_indirect_ref): Correct indentation, correct call to
16988         init_pointer_ref.
16989         (object_analysis): Call init_array_ref instead of analyze_array.
16990         (initialize_data_dependence_relation): Initialize DDR_INNER_LOOP.
16991         (access_functions_are_affine_or_constant_p): Use DR_ACCESS_FNS instead
16992         of DR_ACCESS_FNS_ADDR.
16993         (init_omega_eq_with_af, omega_extract_distance_vectors,
16994         omega_setup_subscript, init_omega_for_ddr_1, init_omega_for_ddr,
16995         ddr_consistent_p): New.
16996         (compute_affine_dependence): Check consistency of ddrs when
16997         flag_check_data_deps is passed.
16998         (analyze_all_data_dependences): Uncomment.
16999         (tree_check_data_deps): New.
17000         * tree-data-ref.h: Include omega.h.
17001         (DR_ACCESS_FNS_ADDR): Removed.
17002         (data_dependence_relation): Add inner_loop.
17003         (DDR_INNER_LOOP): New.
17004         * common.opt (fcheck-data-deps): New.
17005         * tree-flow.h (tree_check_data_deps): Declare.
17006         * Makefile.in (TREE_DATA_REF_H): Depend on omega.h.
17007         (OBJS-common): Depend on omega.o.
17008         (omega.o): Define.
17009         * passes.c (pass_check_data_deps): Scheduled.
17010         * params.def (PARAM_OMEGA_MAX_VARS, PARAM_OMEGA_MAX_GEQS,
17011         PARAM_OMEGA_MAX_EQS, PARAM_OMEGA_MAX_WILD_CARDS,
17012         PARAM_OMEGA_HASH_TABLE_SIZE, PARAM_OMEGA_MAX_KEYS,
17013         PARAM_VECT_MAX_VERSION_CHECKS,
17014         PARAM_OMEGA_ELIMINATE_REDUNDANT_CONSTRAINTS): New.
17015
17016 2007-03-09  Richard Guenther  <rguenther@suse.de>
17017
17018         PR tree-optimization/30904
17019         PR middle-end/31058
17020         * tree-vrp.c (extract_range_from_binary_expr): Handle RSHIFT_EXPR
17021         the same way as *_DIV_EXPR.
17022
17023 2007-03-09  Alexandre Oliva  <aoliva@redhat.com>
17024
17025         * recog.c (decode_asm_operands): No mixed declarations and code.
17026
17027 2007-03-09  Alexandre Oliva  <aoliva@redhat.com>
17028
17029         * rtl.def (ASM_INPUT): Add location.
17030         * rtl.h (ASM_INPUT_SOURCE_LOCATION): New.
17031         (ASM_INPUT_SOURCE_FILE, ASM_INPUT_SOURCE_LINE): New.
17032         (decode_asm_operands): Add loc operand.
17033         (gen_rtx_ASM_INPUT, gen_rtx_ASM_INPUT_loc): Define.
17034         * stmt.c (expand_asm): Rename to...
17035         (expand_asm_loc): ... this.  Add locus argument.  Pass it on to
17036         gen_rtx_ASM_INPUT_loc.
17037         (expand_asm_expr): Adjust.
17038         * recog.c (decode_asm_operands): Add loc operand.
17039         (check_asm_operands, extract_insn): Adjust.
17040         * reload1.c (maybe_fix_stack_asms): Likewise.
17041         * final.c (asm_insn_count): Likewise.
17042         (final_scan_insn): Output # line before and after asm.
17043
17044 2007-03-09  Daniel Berlin  <dberlin@dberlin.org>
17045
17046         * tree-ssa-structalias.c (variable_info): Remove
17047         finished_solution.
17048         (new_var_info): Ditto.
17049         (shared_bitmap_info_t): New structure.
17050         (shared_bitmap_table): New variable.
17051         (shared_bitmap_hash): New function.
17052         (shared_bitmap_eq): Ditto
17053         (shared_bitmap_lookup): Ditto.
17054         (shared_bitmap_add): Ditto.
17055         (merge_smts_into): Change to take bitmap directly.
17056         (find_what_p_points_to): Rewrite to use shared bitmap hashtable.
17057         (init_alias_vars): Init shared bitmap hashtable.
17058         (delete_points_to_sets): Delete shared bitmap hashtable.
17059         * tree-ssa-operands.c (add_virtual_operand): Partially revert the
17060         is_aliased removal as a change that was still necessary was
17061         deleted.
17062
17063 2007-03-09  Uros Bizjak  <ubizjak@gmail.com>
17064
17065         * config/i386/i386.h (override_options): Conditionally disable
17066         x86_sahf for 64bit targets only.
17067
17068 2007-03-08  Andrew Pinski  <andrew_pinski@playstation.sony.com>
17069
17070         PR C/31072
17071         * c-decl.c (merge_decls): Don't call make_var_volatile.
17072         * varasm.c (make_var_volatile): Remove.
17073         * output.h (make_var_volatile): Remove.
17074
17075 2007-03-08  Zdenek Dvorak  <dvorakz@suse.cz>
17076
17077         PR tree-optimization/31085
17078         * tree-ssa-address.c (create_mem_ref): Fix test of type of base.
17079
17080 2007-03-08  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
17081
17082         * builtins.def (lceil, lceilf, lceill, lfloor, lfloorf, lfloorl,
17083         llceil, llceilf, llceill, llfloor, llfloorf, llfloorl): Mark with
17084         ATTR_CONST_NOTHROW_LIST.
17085
17086         * fold-const.c (tree_expr_nonnegative_warnv_p): Handle
17087         FIX_TRUNC_EXPR.
17088
17089 2007-03-08  Diego Novillo  <dnovillo@redhat.com>
17090
17091         * doc/tree-ssa.texi: Remove documentation for V_MUST_DEF.
17092
17093 2007-03-08  Geoffrey Keating  <geoffk@apple.com>
17094
17095         PR 31013
17096         * gccspec.c (lang_specific_driver): Do nothing when NEXT_OBJC_RUNTIME
17097         is declared.
17098         * config/darwin.h (REAL_LIBGCC_SPEC): When -fgnu-runtime is
17099         passed, use shared libgcc.
17100
17101 2007-03-08  Roger Sayle  <roger@eyesopen.com>
17102
17103         * tree-eh.c (do_return_redirection): Call build_gimple_modify_stmt
17104         instead of calling build2 with a GIMPLE_MODIFY_STMT.
17105         (honor_protect_cleanup_actions, lower_try_finally_switch):
17106         Likewise.
17107         * tree-if-conv.c (replace_phi_with_cond_gimple_modify_stmt,
17108         ifc_temp_var): Likewise.
17109         * tree-inline.c (setup_one_parameter): Likewise.
17110         * tree-mudflap.c (mf_decl_cache_locals,
17111         mf_build_check_statement_for): Likewise.
17112         * tree-nested.c (init_tmp_var, save_tmp_var,
17113         finalize_nesting_tree_1): Likewise.
17114         * tree-outof-ssa.c (insert_copy_on_edge,
17115         insert_backedge_copies): Likewise.
17116         * tree-profile.c (tree_gen_edge_profiler,
17117         tree_gen_ic_profiler): Likewise.
17118         * tree-scalar-evolution.c (scev_const_prop): Likewise.
17119         * tree-sra.c (sra_build_assignment): Likewise.
17120         * tree-ssa-loop-im.c (determine_invariantness_stmt): Likewise.
17121         * tree-ssa-math-opts.c (insert_reciprocals,
17122         execute_cse_sincos_1): Likewise.
17123         * tree-tailcall.c (adjust_accumulator_values,
17124         adjust_return_value): Likewise.
17125         * tree-vect-patterns.c (vect_pattern_recog_1): Likewise.
17126         * tree-vect-transform.c (vect_create_data_ref_ptr,
17127         bump_vector_ptr, vect_init_vector, get_initial_def_for_induction,
17128         vect_create_epilog_for_reduction, vectorizable_reduction,
17129         vectorizable_call, vectorizable_conversion,
17130         vectorizable_assignment, vectorizable_operation,
17131         vectorizable_type_demotion, vect_gen_widened_results_half,
17132         vect_permute_store_chain, vectorizable_store,
17133         vect_setup_realignment, vect_permute_load_chain,
17134         vectorizable_load, vectorizable_condition,
17135         vect_create_cond_for_align_checks): Likewise.
17136         * tree-vrp.c (build_assert_expr_for): Likewise.
17137
17138 2007-03-08  Ian Lance Taylor  <iant@google.com>
17139
17140         * tree-vrp.c: Include "intl.h".
17141         (usable_range_p): New static function.
17142         (compare_values_warnv): Don't test TYPE_OVERFLOW_UNDEFINED for
17143         overflowed values, juts set *strict_overflow_p.
17144         (compare_values): Only return -2 if one of the operands is not a
17145         constant.
17146         (compare_ranges): Call usable_range_p.
17147         (compare_range_with_value): Likewise.
17148         (vrp_evaluate_conditional_warnv): Rename from
17149         vrp_evaluate_conditional.  Make static.  Change all callers.
17150         (vrp_evaluate_conditional): New function.
17151         (simplify_div_or_mod_using_ranges): Issue warning about reliance
17152         on signed overflow.
17153         (simplify_abs_using_ranges): Likewise.
17154         (simplify_stmt_for_jump_threading): Add within_stmt parameter.
17155         * tree-ssa-dom.c (simplify_stmt_for_jump_threading): Add
17156         within_stmt parameter.
17157         * tree-ssa-propagate.c (fold_predicate_in): Update call to
17158         vrp_evaluate_conditional.
17159         * tree-ssa-threadedge.c
17160         (record_temporary_equivalences_from_stmts_at_dest): Change
17161         simplify parameter to take a second tree parameter.
17162         (simplify_control_stmt_condition): Likewise.
17163         (thread_across_edge): Likewise.
17164         * tree-flow.h (vrp_evaluate_conditional): Update declaration.
17165         (thread_across_edge): Likewise.
17166         * Makefile.in (tree-vrp.o): Depend upon intl.h.
17167
17168 2007-03-08  Uros Bizjak  <ubizjak@gmail.com>
17169
17170         * config/i386/i386.h (TARGET_SAHF): New define.
17171         * config/i386/i386.c (ix86_tune_features) [X86_TUNE_USE_SAHF]:
17172         Also enable for m_K8, m_AMDFAM10 and m_CORE2.
17173         (x86_sahf): New global variable.
17174         (override_options): Add PTA_NO_SAHF to pta_flags enum.  Recode
17175         pta_flags masks using shifts.  Add PTA_NO_SAHF to x86_64 and
17176         nocona processor flags.  Set x86_sahf when PTA_NO_SAHF is not set
17177         in processor flags.  Do not unconditionally disable TARGET_USE_SAHF
17178         for 64-bit.
17179         (ix86_fp_comparison_sahf_cost): Return high value for !TARGET_SAHF.
17180         (ix86_expand_fp_compare): Check for TARGET_CMOVE or TARGET_SAHF
17181         when expanding fcomi/sahf based tests.
17182         (ix86_emit_fp_unordered_jump): Check for TARGET_SAHF when
17183         expanding sahf based alternative. Emit sahf based sequence when
17184         optimizing for code size.
17185         * config/i386/i386.md (x86_sahf_1): Do not disable for
17186         TARGET_64BIT, enable for TARGET_SAHF.
17187
17188 2007-03-08  Martin Michlmayr  <tbm@cyrius.com>
17189
17190         * tree-ssa-coalesce.c (fail_abnormal_edge_coalesce): Remove
17191         spurious whitespace from error message.
17192
17193 2007-03-08  Volker Reichelt  <reichelt@netcologne.de>
17194
17195         PR c++/30852
17196         * c-common.c (fold_offsetof_1): Handle COMPOUND_EXPR.
17197
17198 2007-03-08  Alexandre Oliva  <aoliva@redhat.com>
17199
17200         * c-decl.c (grokdeclarator): Disable warnings for anonymous
17201         bitfields.
17202         * tree-sra.c (instantiate_element): Propagate disabled warnings
17203         from the element itself to the created variable.
17204
17205 2007-03-07  Richard Henderson  <rth@redhat.com>
17206
17207         PR target/30848
17208         * reg-stack.c (emit_swap_insn): If a malformed asm was seen,
17209         silently fix up the stack in the case of a missing register.
17210
17211 2007-03-07  Paul Brook  <paul@codesourcery.com>
17212
17213         * config/arm/libunwind.S: Add .arch/.object_arch for armv4 builds.
17214
17215 2007-03-07  Joseph Myers  <joseph@codesourcery.com>
17216
17217         * config/arm/unwind-arm.c (struct wmmxd_regs, struct wmmxc_regs):
17218         New.
17219         (phase1_vrs): Use them.
17220         (DEMAND_SAVE_WMMXD, DEMAND_SAVE_WMMXC): New.
17221         (__gnu_Unwind_Save_WMMXD, __gnu_Unwind_Restore_WMMXD,
17222         __gnu_Unwind_Save_WMMXC, __gnu_Unwind_Restore_WMMXC): Declare.
17223         (restore_non_core_regs): Call __gnu_Unwind_Restore_WMMXD and
17224         __gnu_Unwind_Restore_WMMXC if required.
17225         (_Unwind_VRS_Pop): Implement iWMMXt support.
17226         * config/arm/libunwind.S (gnu_Unwind_Restore_WMMXD,
17227         gnu_Unwind_Save_WMMXD, gnu_Unwind_Restore_WMMXC,
17228         gnu_Unwind_Save_WMMXC): Define.
17229
17230 2007-03-07  Richard Sandiford  <richard@codesourcery.com>
17231
17232         * config/vxworks.h (vxworks_override_options): Declare.
17233         (VXWORKS_OVERRIDE_OPTIONS): Use it.
17234         * config/vxworks.c: Include target.h and toplev.h.
17235         (vxworks_override_options): New function.
17236         * config/t-vxworks (vxworks.o): Depend on $(TARGET_H) and toplev.h.
17237
17238 2007-03-07  Andreas Krebbel  <krebbel1@de.ibm.com>
17239
17240         * config/s390/s390.c (override_options): Don't emit an error when
17241         -mstack-size is used without providing -mstack-guard.
17242         (s390_emit_prologue): Choose stack_guard value automatically if not
17243         provided via command line.
17244         * doc/invoke.texi: Adjust description of -mstack-guard and
17245         -mstack-size.
17246
17247 2007-03-07  Richard Sandiford  <richard@codesourcery.com>
17248
17249         * config/i386/i386.c (output_set_got): Add a GOT initialization
17250         sequence for VxWorks PIC.
17251         (legitimate_pic_address_disp_p): Allow UNSPEC_GOT wrappers
17252         around labels as well as symbols.  Use gotoff_operand instead
17253         of local_symbolic_operand.
17254         (legitimize_pic_address): Use gotoff_operand instead of
17255         local_symbolic_operand.  Use @GOT accesses for labels as
17256         well as symbols.
17257         (ix86_output_addr_diff_elt): Use PC-relative rather than
17258         GP-relative offsets for VxWorks PIC.
17259         (ix86_expand_move): Pass NULL_RTX to legitimize_pic_address unless
17260         no_new_pseudos.  Check whether the returned register is op0.
17261         * config/i386/i386.md (tablejump): Use PC-relative rather than
17262         GP-relative offsets for VxWorks PIC.
17263         * config/i386/predicates.md (gotoff_operand): New predicate.
17264
17265 2007-03-06  Richard Sandiford  <richard@codesourcery.com>
17266
17267         * config/vxworks.h (VXWORKS_GOTT_BASE, VXWORKS_GOTT_INDEX): Undefine
17268         before defining.
17269         * config/vxworks-dummy.h: New file.
17270         * config/i386/i386.h: Include it.
17271
17272 2007-03-07  Alexandre Oliva  <aoliva@redhat.com>
17273
17274         * dwarf2out.c (is_inlined_entry_point): New
17275         (add_high_low_attributes): Emit DW_AT_entry_pc along with
17276         DW_AT_ranges if the first subblock is the entry point.
17277
17278 2007-03-06  David Daney  <ddaney@avtrex.com>
17279
17280         * doc/install.texi (mips-*-*): Change recommended binutils
17281         version.
17282
17283 2007-03-06  Anatoly Sokolov <aesok@post.ru>
17284
17285         * config/avr/avr.c (avr_mcu_types): Add support for ATmega325P,
17286         ATmega3250P, ATmega329P, ATmega3290P, AT90USB82 and AT90USB162
17287         devices.
17288         * config/avr/avr.h (LINK_SPEC, CRT_BINUTILS_SPECS): (Ditto.).
17289         * config/avr/t-avr (MULTILIB_MATCHES): (Ditto.).
17290
17291 2007-03-06  Jan Hubicka  <jh@suse.cz>
17292
17293         * errors.h (warning, error, fatal, internal_error): Mark as cold.
17294         * predict.c (maybe_hot_bb): Cold functions are never hot; hot
17295         functions are hot.
17296         (probably_cold_bb_p): Cold functions are cold.
17297         (probably_never_executed_bb_p): Cold functions are cold.
17298         (tree_bb_level_predictions): Predict calls to cold functions as not
17299         taken.
17300         (compute_function_frequency): Check hot/cold attributes.
17301         * function.h (function_frequency): Update comments.
17302         * predict.def (PRED_COLD_FUNCTION): Predict cold function.
17303         * c-common.c (handle_hot_attribute, handle_cold_attribute): New.
17304         (c_common_att): Add cold and hot.
17305
17306         * doc/extend.texi (hot,cold attributes): Document.
17307
17308 2007-03-06  Andrew Haley  <aph@redhat.com>
17309
17310         * function.c (expand_function_end): Move blockage to just after we
17311         emit the label for the naked return from the function.
17312
17313 2007-03-06  Richard Sandiford  <richard@codesourcery.com>
17314
17315         * config/i386/att.h (ASM_OUTPUT_ASCII, ASM_OUTPUT_SKIP): Undefine
17316         before redefining.
17317
17318 2007-03-06  Jan Hubicka  <jh@suse.cz>
17319
17320         * reg-stack.c (reg_to_stack): Large models don't allow NAN to be
17321         loaded for constant large models.  Non-large 64bit PIC can do.
17322         * i386.h (CASE_VECTOR_MODE): Large PIC cases are 64bit.
17323         * cmodel.h: Add LARGE PIC.
17324         * i386.md (UNSPEC_PLTOFF): New.
17325         (UNSPEC_SET_RIP, UNSPEC_SET_GOT_OFFSET): New; renumber other
17326         unspecs as needed.
17327         (*call_1_rex64): Disable for large models.
17328         (*call_1_rex64_large): New.
17329         (*call_value_1_rex64): Disable for large models.
17330         (*call_value_1_rex64_large): New.
17331         (set_rip_rex4): New.
17332         (set_got_offset_rex64): New.
17333         * predicates.md (constant_call_address_operand): For large model
17334         constant calls are not possible.
17335         * i386-protos.h (construct_plt_address): Declare.
17336         * i386.c (override_options): Accept large models.
17337         (ix86_expand_prologue): Expand large PIC GOT pointer load.
17338         (legitimate_constant_p): Add new UNSPECs.
17339         (legitimate_pic_operand_p): Likewise.
17340         (legitimate_pic_address_disp_p): Disallow local symbols for large PICs.
17341         (legitimize_pic_address): Do easy RIP relative way for TLS only for
17342         non-large model.
17343         (output_pic_addr_const): Add PLTOFF.
17344         (ix86_output_addr_diff_elt): Output 64bit tables when needed.
17345         (ix86_expand_move): Legitimize pic address when in PIC mode.
17346         (construct_plt_address): New function.
17347         (ix86_expand_call): Offload the address to register and use GOT
17348         pointer for large model.
17349         * invoke.texi (mcmodel=large): Update documentation.
17350
17351 2007-03-06  Richard Henderson  <rth@redhat.com>
17352
17353         * config/i386/i386.c (x86_use_leave, x86_push_memory,
17354         x86_zero_extend_with_and, x86_movx, x86_double_with_add,
17355         x86_use_bit_test, x86_unroll_strlen, x86_deep_branch,
17356         x86_branch_hints, x86_use_sahf, x86_partial_reg_stall,
17357         x86_partial_flag_reg_stall, x86_use_himode_fiop, x86_use_simode_fiop,
17358         x86_use_mov0, x86_use_cltd, x86_read_modify_write, x86_read_modify,
17359         x86_split_long_moves, x86_promote_QImode, x86_fast_prefix,
17360         x86_single_stringop, x86_qimode_math, x86_promote_qi_regs,
17361         x86_himode_math, x86_promote_hi_regs, x86_sub_esp_4, x86_sub_esp_8,
17362         x86_add_esp_4, x86_add_esp_8, x86_integer_DFmode_moves,
17363         x86_partial_reg_dependency, x86_memory_mismatch_stall,
17364         x86_prologue_using_move, x86_epilogue_using_move, x86_shift1,
17365         x86_sse_partial_reg_dependency, x86_sse_split_regs,
17366         x86_sse_unaligned_move_optimal, x86_sse_typeless_stores,
17367         x86_sse_load0_by_pxor, x86_use_ffreep, x86_use_incdec,
17368         x86_inter_unit_moves, x86_ext_80387_constants, x86_four_jump_limit,
17369         x86_schedule, x86_use_bt, x86_pad_returns,
17370         x86_use_xchgb): Merge into ...
17371         (ix86_tune_features): ... here.  New array.
17372         (x86_cmove, x86_cmpxchg, x86_cmpxchg8b, x86_xadd,
17373         x86_bswap): Merge into ...
17374         (ix86_arch_features): ... here.  New array.
17375         (x86_3dnow_a): Remove.
17376         (x86_accumulate_outgoing_args): Make static.
17377         (x86_arch_always_fancy_math_387): Make static.
17378         (ix86_tune_mask, ix86_arch_mask): Move ...
17379         (override_options): ... to local variables here.  Apply the
17380         appropriate mask to each element of ix86_arch_features and
17381         ix86_tune_features.  Adjust TARGET_CMOVE and TARGET_USE_SAHF
17382         as were done in the old macros.
17383         (standard_80387_constant_p): Use TARGET_EXT_80387_CONSTANTS.
17384         * config/i386/i386.h (x86_use_leave, x86_push_memory,
17385         x86_zero_extend_with_and, x86_use_bit_test, x86_cmove, x86_deep_branch,
17386         x86_branch_hints, x86_unroll_strlen, x86_double_with_add,
17387         x86_partial_reg_stall, x86_movx, x86_use_himode_fiop,
17388         x86_use_simode_fiop, x86_use_mov0, x86_use_cltd, x86_use_xchgb,
17389         x86_read_modify_write, x86_read_modify, x86_split_long_moves,
17390         x86_promote_QImode, x86_single_stringop, x86_fast_prefix,
17391         x86_himode_math, x86_qimode_math, x86_promote_qi_regs,
17392         x86_promote_hi_regs, x86_integer_DFmode_moves, x86_add_esp_4,
17393         x86_add_esp_8, x86_sub_esp_4, x86_sub_esp_8,
17394         x86_partial_reg_dependency, x86_memory_mismatch_stall,
17395         x86_accumulate_outgoing_args, x86_prologue_using_move,
17396         x86_epilogue_using_move, x86_decompose_lea,
17397         x86_arch_always_fancy_math_387, x86_shift1,
17398         x86_sse_partial_reg_dependency, x86_sse_split_regs,
17399         x86_sse_unaligned_move_optimal, x86_sse_typeless_stores,
17400         x86_sse_load0_by_pxor, x86_use_ffreep, x86_inter_unit_moves,
17401         x86_schedule, x86_use_bt, x86_cmpxchg, x86_cmpxchg8b, x86_xadd,
17402         x86_use_incdec, x86_pad_returns, x86_bswap,
17403         x86_partial_flag_reg_stall): Remove.
17404         (enum ix86_tune_indices): New.
17405         (ix86_tune_features): New.
17406         (TARGET_USE_LEAVE, TARGET_PUSH_MEMORY, TARGET_ZERO_EXTEND_WITH_AND,
17407         TARGET_USE_BIT_TEST, TARGET_UNROLL_STRLEN,
17408         TARGET_DEEP_BRANCH_PREDICTION, TARGET_BRANCH_PREDICTION_HINTS,
17409         TARGET_DOUBLE_WITH_ADD, TARGET_USE_SAHF, TARGET_MOVX,
17410         TARGET_PARTIAL_REG_STALL, TARGET_PARTIAL_FLAG_REG_STALL,
17411         TARGET_USE_HIMODE_FIOP, TARGET_USE_SIMODE_FIOP, TARGET_USE_MOV0,
17412         TARGET_USE_CLTD, TARGET_USE_XCHGB, TARGET_SPLIT_LONG_MOVES,
17413         TARGET_READ_MODIFY_WRITE, TARGET_READ_MODIFY, TARGET_PROMOTE_QImode,
17414         TARGET_FAST_PREFIX, TARGET_SINGLE_STRINGOP, TARGET_QIMODE_MATH,
17415         TARGET_HIMODE_MATH, TARGET_PROMOTE_QI_REGS, TARGET_PROMOTE_HI_REGS,
17416         TARGET_ADD_ESP_4, TARGET_ADD_ESP_8, TARGET_SUB_ESP_4,
17417         TARGET_SUB_ESP_8, TARGET_INTEGER_DFMODE_MOVES,
17418         TARGET_PARTIAL_REG_DEPENDENCY, TARGET_SSE_PARTIAL_REG_DEPENDENCY,
17419         TARGET_SSE_UNALIGNED_MOVE_OPTIMAL, TARGET_SSE_SPLIT_REGS,
17420         TARGET_SSE_TYPELESS_STORES, TARGET_SSE_LOAD0_BY_PXOR,
17421         TARGET_MEMORY_MISMATCH_STALL, TARGET_PROLOGUE_USING_MOVE,
17422         TARGET_EPILOGUE_USING_MOVE, TARGET_SHIFT1, TARGET_USE_FFREEP,
17423         TARGET_INTER_UNIT_MOVES, TARGET_FOUR_JUMP_LIMIT, TARGET_SCHEDULE,
17424         TARGET_USE_BT, TARGET_USE_INCDEC, TARGET_PAD_RETURNS,
17425         TARGET_EXT_80387_CONSTANTS): Use it.
17426         (enum ix86_arch_indices): New.
17427         (ix86_arch_features): New.
17428         (TARGET_CMOVE, TARGET_CMPXCHG, TARGET_CMPXCHG8B, TARGET_XADD,
17429         TARGET_BSWAP): Use it.
17430         (ix86_tune_mask, ix86_arch_mask): Remove.
17431
17432 2007-03-06  Joseph Myers  <joseph@codesourcery.com>
17433
17434         PR bootstrap/31020
17435         * configure.ac (CROSS_SYSTEM_HEADER_DIR, build_system_header_dir):
17436         Define using $${sysroot_headers_suffix}.
17437         * configure: Regenerate.
17438         * cppdefault.c (cpp_include_defaults): Make FIXED_INCLUDE_DIR a
17439         multilib-suffixed directory if SYSROOT_HEADERS_SUFFIX_SPEC
17440         defined.
17441         * doc/invoke.texi (-print-sysroot-headers-suffix): Document.
17442         * gcc.c (print_sysroot_headers_suffix): New.
17443         (option_map): Include --print-sysroot-headers-suffix.
17444         (display_help): Mention -print-sysroot-headers-suffix.
17445         (process_command): Handle -print-sysroot-headers-suffix.
17446         (do_spec_1): Append multilib directory to include-fixed path if
17447         sysroot suffixes in use.
17448         (main): Handle -print-sysroot-headers-suffix.
17449         * Makefile.in (start.encap): Don't depend on xlimits.h
17450         (xlimits.h): Remove.
17451         (stmp-int-hdrs): Don't depend on xlimits.h.  Inline generation of
17452         limits.h for each multilib in fixinc_list.
17453         (fixinc_list, s-fixinc_list): New.
17454         (stmp-fixinc): Depend on fixinc_list.  If not copying headers,
17455         generate them for each multilib in fixinc_list.
17456         (stmp-fixproto): Use include-fixed.  Run fixproto for each
17457         multilib in fixinc_list.
17458         (mostlyclean): Don't remove xlimits.h.
17459         (clean): Remove include-fixed.
17460         (real-install-headers-tar, real-install-headers-cpio,
17461         real-install-headers-cp): Don't copy include, only include-fixed.
17462         (install-mkheaders): Depend on fixinc_list.  Don't depend on
17463         xlimits.h.  Save limits.h files for each multilib in fixinc_list.
17464         Always save mkinstalldirs.  Preserve ${sysroot_headers_suffix} in
17465         SYSTEM_HEADER_DIR setting in mkheaders.conf.
17466
17467 2007-03-06  Jan Hubicka  <jh@suse.cz>
17468
17469         * regstack.c (reg_to_stack): When in 64bit PIC mode, we still can load
17470         NANs easilly.
17471
17472 2007-03-06  Richard Sandiford  <richard@codesourcery.com>
17473
17474         * configure.ac: Allow tm_file to contain build-directory files.
17475         * configure: Regenerate.
17476         * config.gcc (m68k-*-uclinux*): Add ./sysroot-suffix.h to tm_file.
17477         * config/m68k/t-uclinux (sysroot-suffix.h): New target.
17478         * config/m68k/print-sysroot-suffix.sh: New file.
17479
17480 2007-03-06  Richard Sandiford  <richard@codesourcery.com>
17481
17482         * config/m68k/m68k.h (PIC_OFFSET_TABLE_REGNUM): Use the REGNO
17483         of pic_offset_table_rtx if reload_completed.
17484         (CONDITIONAL_REGISTER_USAGE): Use PIC_REG instead of
17485         PIC_OFFSET_TABLE_REGNUM.
17486         * config/m68k/m68k.c (TARGET_ASM_CAN_OUTPUT_MI_THUNK): Always
17487         return true.
17488         (m68k_save_reg): Use PIC_REG instead of PIC_OFFSET_TABLE_REGNO.
17489         (m68k_output_mi_thunk): Rewrite to use RTL.  Honor vcall_offset.
17490
17491 2007-03-06  Richard Sandiford  <richard@codesourcery.com>
17492
17493         * config/m68k/m68k.c (m68k_save_reg): Save the PIC register in
17494         functions that call eh_return.
17495
17496 2007-03-06  Richard Sandiford  <richard@codesourcery.com>
17497
17498         * config/m68k/m68k.c (m68k_save_reg): Save the PIC register in
17499         functions that need a constant pool.
17500
17501 2007-03-06  Richard Sandiford  <richard@codesourcery.com>
17502
17503         PR target/28181
17504         * config/m68k/m68k-protos.h (m68k_secondary_reload_class): Declare.
17505         (m68k_preferred_reload_class): Likewise.
17506         * config/m68k/m68k.h (HARD_REGNO_MODE_OK): Remove duplicated comment.
17507         (SECONDARY_RELOAD_CLASS): Define.
17508         (PREFERRED_RELOAD_CLASS): Use m68k_preferred_reload_class.
17509         (LIMIT_RELOAD_CLASS): Delete.
17510         * config/m68k/m68k.c (m68k_regno_mode_ok): Don't prevent address
17511         registers from storing bytes.
17512         (m68k_secondary_reload_class): New function.
17513         (m68k_preferred_reload_class): Likewise.
17514
17515 2007-03-06  Richard Sandiford  <richard@codesourcery.com>
17516
17517         * config/m68k/m68k.c (m68k_save_reg): Remove special case for
17518         leaf functions.
17519         (m68k_expand_prologue): Likewise.
17520
17521 2007-03-06  Richard Sandiford  <richard@codesourcery.com>
17522
17523         * config/m68k/m68k-protos.h (output_sibcall): Declare.
17524         (mips_expand_epilogue): Add a bool parameter.
17525         (m68k_legitimize_sibcall_address): Declare.
17526         * config/m68k/m68k.c (TARGET_FUNCTION_OK_FOR_SIBCALL): Define.
17527         (m68k_expand_epilogue): Add a parameter to select between sibling
17528         and normal epilogues.  Only generate a return for the latter.
17529         (m68k_ok_for_sibcall_p): New function.
17530         (m68k_legitimize_sibcall_address, output_sibcall): New functions.
17531         * config/m68k/m68k.md (sibcall, *sibcall): New patterns.
17532         (sibcall_value, *sibcall_value): Likewise.
17533         (*call, *call_value): Require !SIBLING_CALL_P.
17534         (epilogue): Update call to m68k_expand_epilogue.
17535         (sibcall_epilogue): New pattern.
17536         * config/m68k/predicates.md (const_call_operand): Say that this
17537         predicate applies to sibling calls too.
17538         (sibcall_operand): New predicate.
17539
17540 2007-03-06  Richard Sandiford  <richard@codesourcery.com>
17541
17542         * config/m68k/m68k.md (movsf_cf_soft): Provide the same non-mov3q
17543         alternatives as movsi_cf.
17544         (movsf_cf_hard): Add commentary.
17545
17546 2007-03-06  Kazu Hirata  <kazu@codesourcery.com>
17547             Richard Sandiford  <richard@codesourcery.com>
17548
17549         * config/m68k/m68k-protos.h (m68k_interrupt_function_p): Declare.
17550         (m68k_movem_pattern_p, m68k_output_movem): Likewise.
17551         (m68k_expand_prologue, m68k_expand_epilogue): Likewise.
17552         * config/m68k/m68k.h (EPILOGUE_USES): Define.  Treat all registers
17553         as being live on exit from an interrupt function.
17554         (PRINT_OPERAND_PUNCT_VALID_P): Return true for '?'.
17555         * config/m68k/m68k.c (MIN_MOVEM_REGS, MIN_FMOVEM_REGS): New macros.
17556         (m68k_frame): Remove reg_rev_mask and fpu_rev_mask.
17557         (TARGET_ASM_FUNCTION_PROLOGUE, TARGET_ASM_FUNCTION_EPILOGUE): Delete.
17558         (m68k_interrupt_function_p): Globalize.
17559         (m68k_compute_frame_layout): Remove reverse mask code.
17560         (m68k_emit_movem, m68k_set_frame_related): New functions.
17561         (m68k_output_function_prologue): Delete in favor of...
17562         (m68k_expand_prologue): ...this new function.
17563         (m68k_output_function_epilogue): Delete in favor of...
17564         (m68k_expand_epilogue): ...this new function.
17565         (m68k_split_offset, m68k_movem_pattern_p, m68k_output_movem): New
17566         functions.
17567         (print_operand): Handle %?.
17568         * config/m68k/m68k.md (UNSPEC_SIN, UNSPEC_COS): Remove excess space.
17569         (UNSPEC_GOT, A1_REG, PIC_REG, FP0_REG): New constants.
17570         (prologue, epilogue): New patterns.
17571         (return): Turn into a define_expand.
17572         (*return): New pattern, derived from old "return" pattern.  Use rte
17573         rather than rts for interrupt functions.  Only use rtd if the pop
17574         count is nonzero.
17575         (*m68k_store_multiple, *m68k_store_multiple_automod): New patterns.
17576         (*m68k_load_multiple, *m68k_load_multiple_automod): Likewise.
17577         (link, *link, unlink, *unlink, load_got): Likewise.
17578
17579 2007-03-06  Richard Sandiford  <richard@codesourcery.com>
17580
17581         PR target/23482
17582         PR target/17114
17583         * config/m68k/m68k-protos.h (m68k_legitimate_base_reg_p): Declare.
17584         (m68k_legitimate_index_reg_p, m68k_legitimate_address_p): Likewise.
17585         (m68k_matches_q_p, m68k_matches_u_p): Likewise.
17586         * config/m68k/m68k.h (EXTRA_CONSTRAINT): Use m68k_matches_q_p
17587         and m68k_matches_u_p.
17588         (PCREL_GENERAL_OPERAND_OK, LEGITIMATE_BASE_REG_P): Delete.
17589         (INDIRECTABLE_1_ADDRESS_P, GO_IF_NONINDEXED_ADDRESS): Delete.
17590         (GO_IF_INDEXABLE_BASE, GO_IF_INDEXING, GO_IF_INDEXED_ADDRESS): Delete.
17591         (LEGITIMATE_INDEX_REG_P, LEGITIMATE_INDEX_P): Delete.
17592         (GO_IF_COLDFIRE_FPU_LEGITIMATE_ADDRESS): Delete.
17593         (REG_STRICT_P): New macro.
17594         (LEGITIMATE_PIC_OPERAND_P): Use REG_STRICT_P rather than
17595         PCREL_GENERAL_OPERAND_OK.
17596         (REG_OK_FOR_BASE_P): Merge definitions.  Use REG_STRICT_P and
17597         m68k_legitimate_base_reg_p.
17598         (REG_MODE_OK_FOR_INDEX_P): Likewise m68k_legitimate_index_reg_p.
17599         (GO_IF_LEGITIMATE_ADDRESS): Likewise m68k_legitimate_address_p.
17600         (PIC_CASE_VECTOR_ADDRESS): Update comment.
17601         * config/m68k/m68k.c (m68k_address): New structure.
17602         (m68k_legitimate_base_reg_p, m68k_legitimate_index_reg_p)
17603         (m68k_decompose_index, m68k_legitimate_constant_address_p)
17604         (m68k_jump_table_ref_p, m68k_decompose_address)
17605         (m68k_legitimate_address_p, m68k_legitimate_mem_p, m68k_matches_q_p)
17606         (m68k_matches_u_p): New functions.
17607         (print_operand_address): Rewrite to use m68k_decompose_index.
17608
17609 2007-03-05  David Taylor  <dtaylor@emc.com>
17610
17611         * gcc.c: Correct copyright date in --version output.
17612
17613 2007-03-05  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
17614
17615         * pa.md: In unamed move patterns, disparge copies between general
17616         and floating point registers using '?' modifier.  Don't include 'f'
17617         constraint for register preferences in DImode, SImode, HImode and
17618         QImode patterns.  Likewise for 'r' in DFmode and SFmode patterns.
17619         Remove constraints for copies between general and floating registers
17620         in soft-float DFmode pattern.
17621         (movdf): Fail if operand1 is a CONST_DOUBLE and operand0 is a hard
17622         floating register.
17623         (movsf): Likewise.
17624
17625 2007-03-05  Mike Stump  <mrs@apple.com>
17626
17627         * c-common.c (targetcm): Add.
17628         * c-opts.c (c_common_handle_option): Handle language specific
17629         target options.
17630         * opts.c (handle_option): Verify language for target options, if
17631         any are given.
17632         * opth-gen.awk: Add CL_LANG_ALL.
17633         * target-def.h (TARGET_HANDLE_C_OPTION): Add.
17634         (TARGETCM_INITIALIZER): Add.
17635         * target.h (struct gcc_targetcm): Add.
17636         (targetcm): Add.
17637         * targhooks.c (default_handle_c_option): Add.
17638         * targhooks.h (default_handle_c_option): Add.
17639         * doc/tm.texi (TARGET_HANDLE_C_OPTION): Add.
17640
17641         * config/darwin.opt (iframework): Add.
17642         * config/darwin.h (TARGET_HAS_TARGETCM): Add.
17643         * config/darwin-c.c (handle_c_option): Add.
17644         (TARGET_HANDLE_C_OPTION): Add.
17645         (targetcm): Add.
17646         * doc/invoke.texi (Darwin Options): Add -iframework.
17647
17648 2007-03-05  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
17649
17650         * convert.c (convert_to_integer): Fix nearbyint/rint -> *lrint
17651         conversion.
17652
17653 2007-03-05  Ian Lance Taylor  <iant@google.com>
17654
17655         * c.opt (fgnu89-inline): New option.
17656         * c-opts.c (c_common_post_options): Set default value for
17657         flag_gnu89_inline.
17658         * c-decl.c (WANT_C99_INLINE_SEMANTICS): Remove.
17659         (pop_scope): Check flag_gnu89_inline rather than flag_isoc99 for
17660         inline functions.
17661         (diagnose_mismatched_decls, merge_decls, start_decl): Likewise.
17662         (grokdeclarator, start_function): Likewise.
17663         * c-cppbuiltin.c (c_cpp_builtins): Define either
17664         __GNUC_GNU_INLINE__ or __GNUC_STDC_INLINE__.
17665         * doc/invoke.texi (Option Summary): Mention -fgnu89-inline.
17666         (C Dialect Options): Document -fgnu89-inline.
17667         * doc/extend.texi (Function Attributes): Explain what the
17668         gnu_inline attribute does.
17669         * doc/cpp.texi (Common Predefined Macros): Document
17670         __GNUC_GNU_INLINE__ and __GNUC_STDC_INLINE__.
17671
17672 2007-03-05  Ian Lance Taylor  <iant@google.com>
17673
17674         PR tree-optimization/31034
17675         * tree-vrp.c (extract_range_from_assert): Don't try to handle a
17676         half-range if the other side is an overflow infinity.
17677
17678 2007-03-05  Bernd Schmidt  <bernd.schmidt@analog.com>
17679
17680         * config.gcc (bfin*-uclinux*): Use t-bfin-uclinux.
17681         (bfin*-linux-uclibc*): New configuration.
17682         * config/linux.h (LINK_GCC_C_SEQUENCE_SPEC): Undefined before
17683         defining.
17684         * config/bfin/linux.h: New file.
17685         * config/bfin/libgcc-bfin.ver: New file.
17686         * config/bfin/t-bfin-uclinux: New file.
17687         * config/bfin/t-bfin-linux: New file.
17688         * config/bfin/uclinux.h (LINUX_TARGET_OS_CPP_BUILTINS): New macro.
17689         (TARGET_OS_CPP_BUILTINS): New macro.
17690
17691 2007-03-05  Richard Guenther  <rguenther@suse.de>
17692
17693         * fold-const.c (fold_binary): Remove duplicate folding
17694         of comparison of non-null ADDR_EXPR against null.
17695
17696 2007-03-05  Richard Guenther  <rguenther@suse.de>
17697             Dorit Nuzman  <dorit@il.ibm.com>
17698
17699         PR tree-optimization/26420
17700         * tree-vectorizer.c (vectorize_loops): Bail out early if there
17701         are no loops in the function.  Only print the number of
17702         vectorized loops if it is greater than zero or we are supposed
17703         to print information about unvectorized loops.
17704
17705 2007-03-05  Revital Eres  <eres@il.ibm.com>
17706
17707         * gcc.dg/var-expand1.c: New test.
17708         * loop-unroll.c (analyze_insn_to_expand_var): Add dump info
17709         when an accumulator is expanded.
17710
17711 2007-03-04  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
17712
17713         PR other/30465
17714         * c-common.c (convert_and_check): Don't give warnings for
17715         conversion if 'expr' already overflowed.
17716
17717 2007-03-04  Roger Sayle  <roger@eyesopen.com>
17718
17719         PR middle-end/30744
17720         * fold-const.c (fold_comparison): Enforce type consistency when
17721         transforming ~X op ~Y to Y op X, and ~X op C to X op' ~C.
17722
17723 2007-03-04  Zdenek Dvorak  <dvorakz@suse.cz>
17724
17725         * tree-ssa-address.c (create_mem_ref): Do not put an expression
17726         containing a cast to the base of TARGET_MEM_REF.
17727
17728 2007-03-04  Martin Michlmayr  <tbm@cyrius.com>
17729
17730         * tree.c (tree_contains_struct_check_failed): Remove spurious
17731         whitespace from error message.
17732
17733 2007-03-04 Andrew Pinski <andrew_pinski@playstation.sony.com>
17734
17735         PR target/30406
17736         * config/rs6000/rs6000.c (rs6000_function_value): Look at bit size
17737         instead of precision.
17738
17739 2007-03-04  Roman Zippel <zippel@linux-m68k.org>
17740             Nathan Sidwell  <nathan@codesourcery.com>
17741
17742         * emit-rtl.c (find_auto_inc): New.
17743         (try_split): recreate REG_INC notes,
17744         Use regular for loops rather than whiles.
17745
17746 2007-03-03  Andreas Schwab  <schwab@suse.de>
17747
17748         * configure.ac (HAVE_AS_REL16): Move test back to correct place.
17749         * configure: Regenerate.
17750
17751 2007-03-03  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
17752
17753         * builtins.def (ATTR_MATHFN_FPROUNDING): Rely on
17754         flag_rounding_math, not flag_unsafe_math_optimizations.
17755
17756         * c-pretty-print.c (pp_c_direct_abstract_declarator): Use
17757         fold_build2.
17758         * config/alpha/alpha.c (alpha_fold_builtin_zapnot,
17759         alpha_fold_vector_minmax): Likewise.
17760         * config/i386/i386.c (ix86_gimplify_va_arg): Likewise.
17761         * config/sparc/sparc.c (sparc_gimplify_va_arg): Likewise.
17762
17763 2007-03-02  Eric Botcazou  <ebotcazou@adacore.com>
17764
17765         * tree-sra.c (sra_walk_fns) <ldst>: Document new restriction.
17766         (sra_walk_modify_expr) <rhs_elt>: Treat the reference as a use
17767         if the lhs has side-effects.
17768         <lhs_elt>: Treat the reference as a use if the rhs has side-effects.
17769
17770 2007-03-02  Uros Bizjak  <ubizjak@gmail.com>
17771
17772         * config/i386/i386.h (TUNEMASK): Remove define.
17773         (ARCHMASK): Remove define.
17774         (TARGET_*): Use ix86_tune_mask variable instead of TUNEMASK.
17775          Use ix86_arch_mask variable instead of ARCHMASK.
17776         * config/i386/i386.c (override_options): Ditto.
17777         (standard_80387_constant_p): Ditto.
17778
17779 2007-03-02  Ian Lance Taylor  <iant@google.com>
17780
17781         Used signed infinities in VRP.
17782         * tree-vrp.c (uses_overflow_infinity): New static function.
17783         (supports_overflow_infinity): New static function.
17784         (make_overflow_infinity): New static function.
17785         (negative_overflow_infinity): New static function.
17786         (positive_overflow_infinity): New static function.
17787         (is_negative_overflow_infinity): New static function.
17788         (is_positive_overflow_infinity): New static function.
17789         (is_overflow_infinity): New static function.
17790         (overflow_infinity_range_p): New static function.
17791         (compare_values_warnv): New function split out of compare_values.
17792         (compare_value): Call it.
17793         (set_value_range_to_nonnegative): Add overflow_infinity
17794         parameter.  Change caller.
17795         (vrp_expr_computes_nonnegative): Add strict_overflow_p parameter.
17796         Change callers.
17797         (vrp_expr_computes_nonzero): Likewise.
17798         (compare_ranges, compare_range_with_value): Likewise.
17799         (compare_name_with_value, compare_names): Likewise.
17800         (vrp_evaluate_conditional): Likewise.
17801         (set_value_range): Handle infinity
17802         (vrp_operand_equal_p, operand_less_p): Likewise.
17803         (extract_range_from_assert): Likewise.
17804         (vrp_int_const_binop): Likewise.
17805         (extract_range_from_binary_expr): Likewise.
17806         (extract_range_from_unary_expr): Likewise.
17807         (extract_range_from_comparison): Likewise.
17808         (extract_range_from_expr): Likewise.
17809         (dump_value_range): Likewise.
17810         (vrp_visit_cond_stmt, vrp_visit_phi_node): Likewise.
17811         (test_for_singularity): Likewise.
17812         (vrp_int_const_binop): Remove inline qualifier.
17813         (adjust_range_with_scev): Add comment.
17814         * tree-flow.h (vrp_evaluate_conditional): Update declaration.
17815
17816 2007-03-02  Diego Novillo  <dnovillo@redhat.com>
17817
17818         * tree-ssa-structalias.c (could_have_pointers): Tidy.
17819         (get_constraint_for): Likewise.
17820         (do_structure_copy): Likewise.
17821         (find_func_aliases): Fix references to MODIFY_EXPR.
17822         (intra_create_variable_infos): Tidy.
17823         * tree-ssa-operands.c (add_virtual_operand): Add argument
17824         IS_CALL_SITE.
17825         When adding members of alias sets, if IS_CALL_SITE is true and
17826         the symbol is not call-clobbered, skip it.
17827         Adjust all callers.
17828
17829 2007-03-02  Eric Botcazou  <ebotcazou@adacore.com>
17830
17831         * config/alpha/alpha.c (alpha_gp_save_rtx): Insert the insns at the
17832         entry by means of emit_insn_at_entry.
17833
17834 2007-03-02  Richard Henderson  <rth@redhat.com>
17835
17836         * expr.h (promoted_input_arg): Remove decl.
17837         * function.c (promoted_input_arg): Merge into ...
17838         * combine.c (setup_incoming_promotions): ... only caller.
17839         Rearrange to avoid double loop.
17840
17841 2007-03-02  Ben Elliston  <bje@au.ibm.com>
17842             Peter Bergner  <bergner@vnet.ibm.com>
17843             Janis Johnson  <janis187@us.ibm.com>
17844
17845         * config/rs6000/dfp.md: New file.
17846         * config/rs6000/rs6000.md: Include dfp.md.
17847         (add<mode>3_internal1): Disable for DECIMAL_FLOAT_MODE_P operands.
17848         * config/rs6000/rs6000.c (rs6000_hard_regno_mode_ok): Handle DDmode
17849         and TDmode decimal float modes in FP registers.
17850         (num_insns_constant): Likewise.
17851         (rs6000_legitimate_offset_address_p): Likewise.
17852         (rs6000_legitimize_address): Likewise.
17853         (rs6000_legitimize_reload_address): Likewise.
17854         (rs6000_legitimate_address): Likewise.
17855         (rs6000_emit_move): Likewise.
17856         (function_arg_boundary): Likewise.
17857         (function_arg_advance): Likewise.
17858         (rs6000_darwin64_record_arg_recurse): Likewise.
17859         (function_arg): Likewise.
17860         (rs6000_gimplify_va_arg): Likewise.
17861         (rs6000_split_multireg_move): Likewise.
17862         (rs6000_output_function_epilogue): Likewise.
17863         (rs6000_output_function_epilogue): Likewise.
17864         (rs6000_register_move_cost): Likewise.
17865         (rs6000_function_value): Likewise.
17866         (rs6000_libcall_value): Likewise.
17867
17868 2007-03-02  Richard Sandiford  <richard@codesourcery.com>
17869
17870         * config/t-vxworks (LIMITS_H_TEST): Define to true for VxWorks.
17871
17872 2007-03-02  Richard Sandiford  <richard@codesourcery.com>
17873
17874         * config/t-vxworks (LIBGCC2_INCLUDES): Pass -nostdinc.
17875         Use $MULTIDIR to choose between the kernel and RTP headers,
17876         and use $WIND_BASE and $WIND_USR to locate them.
17877
17878 2007-03-02  Uros Bizjak  <ubizjak@gmail.com>
17879
17880         * config/i386/i386.c (override_options): Put initialization of
17881         ix86_tune_mask and ix86_arch_mask to the correct place.
17882
17883 2007-03-02  Uros Bizjak  <ubizjak@gmail.com>
17884             Michael Meissner  <michael.meissner@amd.com>
17885
17886         PR target/31019
17887         * config/i386/i386.h (TUNEMASK): Redefine to use ix86_tune_mask.
17888         (ARCHMASK): Define.
17889         (TARGET_CMOVE): Use ARCHMASK.
17890         (TARGET_CMPXCHG): Ditto.
17891         (TARGET_CMPXCHG8B): Ditto.
17892         (TARGET_XADD): Ditto.
17893         (TARGET_BSWAP): Ditto.
17894         * config/i386/i386.c (ix86_tune_mask): New global variable.
17895         (ix86_arch_mask): Ditto.
17896         (override_options): Initialize ix86_tune_mask and
17897         ix86_arch_mask. Use ARCHMASK to clear MASK_NO_FANCY_MATH_387 in
17898         target_flags.
17899
17900 2007-03-02  Ben Elliston  <bje@au.ibm.com>
17901
17902         PR 30992
17903         * config/dfp-bit.c (DFP_TO_INT): Initialise qval with "1.".
17904
17905 2007-03-02  Joseph Myers  <joseph@codesourcery.com>
17906
17907         * target.h (init_dwarf_reg_sizes_extra): New target hook.
17908         * target-def.h (TARGET_INIT_DWARF_REG_SIZES_EXTRA): New default.
17909         * doc/tm.texi (TARGET_INIT_DWARF_REG_SIZES_EXTRA): Document.
17910         * dwarf2out.c (expand_builtin_init_dwarf_reg_sizes): Call this
17911         hook.
17912         * config/rs6000/rs6000.c (TARGET_INIT_DWARF_REG_SIZES_EXTRA,
17913         rs6000_init_dwarf_reg_sizes_extra): New.
17914         * config/rs6000/linux-unwind.h (ppc_fallback_frame_state): Support
17915         SPE register high parts.
17916
17917 2007-03-01  Brooks Moses  <brooks.moses@codesourcery.com>
17918
17919         * Makefile.in: Add install-pdf target as
17920         copied from automake v1.10 rules.
17921         * configure.ac: Add install-pdf to target list.
17922         * configure: Regenerate.
17923
17924 2007-03-01  Paul Brook  <paul@codesourcery.com>
17925
17926         * config/arm/arm.c (arm_legitimate_index_p): Limit iWMMXt addressing
17927         modes to LDRD for DImode.
17928         (output_move_double): Fixup out of range ldrd/strd.
17929         (vfp_secondary_reload_class): Rename...
17930         (coproc_secondary_reload_class): ... to this.  Add wb argument.
17931         * config/arm/arm.h (SECONDARY_OUTPUT_RELOAD_CLASS): Use
17932         coproc_secondary_reload_class for CLASS_IWMMXT.
17933         (SECONDARY_INPUT_RELOAD_CLASS): Ditto.
17934         * arm-protos.h (coproc_secondary_reload_class): Update prototype.
17935
17936 2007-03-01  Zdenek Dvorak  <dvorakz@suse.cz>
17937
17938         * tree-ssa-loop-prefetch.c (determine_unroll_factor):  Bound the
17939         unroll factor by the estimated number of iterations.
17940         (loop_prefetch_arrays): Do not prefetch in loops that iterate less
17941         than prefetch latency.
17942
17943         * config/i386/driver-i386.c (describe_cache, detect_caches_amd,
17944         decode_caches_intel, detect_caches_intel): New functions.
17945         (host_detect_local_cpu): Use detect_caches_amd and
17946         detect_caches_intel.
17947
17948 2007-03-01  Richard Henderson  <rth@redhat.com>
17949
17950         * expr.c (emit_move_complex_push): Export.
17951         (emit_move_complex_parts): Split out from ...
17952         (emit_move_complex): ... here.
17953         * expr.h (emit_move_complex_push, emit_move_complex_parts): Declare.
17954         * config/i386/i386.md (movcdi): New.
17955
17956 2007-03-01  Uros Bizjak  <ubizjak@gmail.com>
17957
17958         * config/i386/i386.c (ix86_modes_tieable_p): Fix typo, use also
17959         size of mode1 to check for tieable modes in MMX case.
17960
17961 2007-03-01  Richard Sandiford  <richard@codesourcery.com>
17962
17963         * Makefile.in (rtlanal.o): Depend on tree.h.
17964         * rtl.h (offset_within_section_p, split_const): Declare.
17965         * rtlanal.c: Include tree.h.
17966         (offset_within_block_p): New function, taken from
17967         mips_offset_within_object_p.
17968         (split_const): New function, taken from mips_split_const.
17969         * config/m68k/m68k-protos.h (m68k_illegitimate_symbolic_constant_p):
17970         Declare.
17971         * config/m68k/m68k.h (M68K_OFFSETS_MUST_BE_WITHIN_SECTIONS_P): Define.
17972         (CONSTANT_ADDRESS_P): Only accept legitimate constants.
17973         (LEGITIMATE_CONSTANT_P): Check m68k_illegitimate_symbolic_constant_p.
17974         * config/m68k/m68k.c (TARGET_CANNOT_FORCE_CONST_MEM): Define.
17975         (m68k_illegitimate_symbolic_constant_p): New function.
17976         * config/m68k/m68k.md (movsi): Remove misleading predicates.
17977         If M68K_OFFSETS_MUST_BE_WITHIN_SECTIONS_P and the source is a
17978         symbolic constant that might be outside the symbol's section,
17979         move the symbol first and then add the offset.
17980         * config/m68k/uclinux.h (M68K_OFFSETS_MUST_BE_WITHIN_SECTIONS_P):
17981         Override.
17982         * config/mips/mips.c (mips_split_const): Delete.
17983         (mips_offset_within_object_p): Delete.
17984         (mips_symbolic_constant_p): Use offset_within_section_p and
17985         split_const instead of mips_offset_within_object_p and
17986         mips_split_const.
17987         (mips_cannot_force_const_mem, mips_const_insns, mips_unspec_address)
17988         (mips_legitimize_const_move, print_operand_reloc)
17989         (mips_dangerous_for_la25_p): Use split_const instead of
17990         mips_split_const.
17991
17992 2007-02-28  Eric Christopher  <echristo@apple.com>
17993
17994         * Makefile.in (install-include-dir): Don't rm -rf include.
17995
17996 2007-02-28  Richard Guenther  <rguenther@suse.de>
17997
17998         PR middle-end/30364
17999         * fold-const.c (fold_binary): Do not associate expressions
18000         with more than one variable for integer types that do not wrap.
18001
18002 2007-02-28  Sandra Loosemore  <sandra@codesourcery.com>
18003
18004         * builtins.c (fold_builtin_call_list, fold_builtin_call_valist):
18005         Delete, and replace with...
18006         (fold_builtin_call_array): This.  Update callers to use it.
18007         * fold-const.c (fold_build_call_list): Delete, and replace with...
18008         (fold_build_call_array): This.
18009         (fold_build_call_list_initializer): Delete, and replace with...
18010         (fold_build_call_array_initializer): This.
18011         * tree.h: Update declarations to reflect above changes.
18012
18013         * c-typeck.c (build_function_call): Store converted arguments
18014         in a stack-allocated array instead of building a list.
18015         (convert_arguments): Store arguments in the array passed in as an
18016         argument, and return the actual number of arguments.
18017         * c-format.c: (check_function_format): Pass arguments in an
18018         array instead of a list.
18019         * c-common.c (check_function_nonnull): Likewise.
18020         (check_function_sentinel): Likewise.
18021         (check_function_arguments): Likewise.
18022         * c-common.h: Update declarations to reflect above changes.
18023
18024 2007-02-28  Jan Hubicka  <jh@suse.cz>
18025
18026         * predict.def (PRED_TREE_EARLY_RETURN, PRED_CONST_RETURN,
18027         PRED_NEGATIVE_RETURN): Update outcomes.
18028
18029 2007-02-28  Bernd Schmidt  <bernd.schmidt@analog.com>
18030
18031         * calls.c (emit_library_call_value_1): Handle partial registers
18032         correctly when building up CALL_INSN_FUNCTION_USAGE.
18033
18034 2007-02-27  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
18035
18036         * pa/predicates.md (move_src_operand): Allow zero for mode.
18037         * pa/pa.md: Fix constraints for zero CONST_DOUBLE in 64-bit DFmode
18038         move pattern.
18039
18040 2007-02-27  Uros Bizjak  <ubizjak@gmail.com>
18041
18042         PR target/30970
18043         * config/i386/sse.md (*mov<mode>_internal, *movv4sf_internal,
18044         *movv2df_internal): Enable pattern only for valid operand
18045         combinations.
18046         * config/i386/i386.c (ix86_modes_tieable_p): For SSE registers,
18047         tie only 128bit modes. For MMX registers, tie only 64bit modes.
18048
18049 2007-02-27  Mike Stump  <mrs@apple.com>
18050
18051         * config/darwin-crt3.c: Avoid compilation when compiling for a
18052         kext multilib.
18053
18054 2007-02-27  Joseph Myers  <joseph@codesourcery.com>
18055
18056         * Makefile.in (PREPROCESSOR_DEFINES, test-protoize-simple): Define
18057         FIXED_INCLUDE_DIR.
18058         (stmp-int-hdrs, stmp-fixinc, install-headers): Use include-fixed
18059         for fixed headers and limits.h.
18060         (install-include-dir, install-headers-tar, install-headers-cpio,
18061         install-headers-cp, real-install-headers-tar,
18062         real-install-headers-cpio, real-install-headers-cp): Handle
18063         include-fixed as well as include.
18064         (install-mkheaders): Don't install files that go only in include
18065         not include-fixed.
18066         * cppdefault.c (cpp_include_defaults): Separate FIXED_INCLUDE_DIR
18067         from GCC_INCLUDE_DIR.
18068         * gcc.c (process_command): Remove special -BstageN/ handling.
18069         (do_spec_1): Add include-fixed directories.
18070
18071 2007-02-27  Bernd Schmidt  <bernd.schmidt@analog.com>
18072
18073         * config/bfin/t-bfin-elf (LIB1ASMFUNCS): Add _umulsi3_highpart and
18074         _smulsi3_highpart.
18075         * config/bfin/lib1funcs.asm (___umulsi3_highpart, ___smulsi3_highpart):
18076         New functions.
18077         * config/bfin/bfin.md (smulsi3_highpart, umulsi3_highpart): New
18078         patterns.
18079
18080 2007-02-27  Mark Mitchell  <mark@codesourcery.com>
18081
18082         * c-common.c (get_priority): Add check for
18083         SUPPORTS_INIT_PRIORITY.
18084
18085 2007-02-27  Bernd Schmidt  <bernd.schmidt@analog.com>
18086
18087         * config/bfin/bfin.md (doloop_end): FAIL if counter reg isn't SImode.
18088
18089         * config/bfin/bfin.c: Include "cfglayout.h".
18090         (MAX_LSETUP_DISTANCE): New macro.
18091         (struct loop_info): New members incoming, incoming_src and
18092         incoming_dest.  Delete member predecessor.
18093         (length_for_loop): New function.
18094         (bfin_optimize_loop): Handle more different loop structures.
18095         (bfin_discover_loop): Rework detection of predecessor blocks by
18096         examining incoming edges.
18097         (bfin_discover_loops, bfin_free_loops): New functions, broken out of
18098         bfin_reorg_loops.
18099         (bfin_reorder_loops): New function.
18100         (bfin_reorg_loops): Use these three new functions.
18101
18102         * config/bfin/bfin.h (enum reg_class, REG_CLASS_NAMES,
18103         REG_CLASS_CONTENTS): Add D0REGS through D7REGS.
18104         (CONSTRAINT_LEN): Add entry for 'q'.
18105         (REG_CLASS_FROM_CONSTRAINT): Renamed from REG_CLASS_FROM_LETTER.
18106         Add 'q' constraints.
18107         (REGNO_REG_CLASS): For R0 through R7, return corresponding regclass.
18108         (CLASS_LIKELY_SPILLED_P): True for R0, R1 and R2.
18109
18110         * config/bfin/bfin.md (add_with_carry): New pattern.
18111         (s_or_u, su_optab, su_modifier): New code macros/attrs.
18112         (<su_optab>hisi_ll, <su_optab>hisi_lh, <su_optab>hisi_hl,
18113         <su_optab>hisi_hh): Renamed from mulhisi_xx patterns; macroized to
18114         support unsigned multiplies too.  Removed incorrect commutativity from
18115         operand 1 constraint where appropriate.
18116         (usmulhisi_ull, usmulhisi_ulh, usmulhisi_uhl, usmulhisi_uhh): New
18117         patterns.
18118         (<su_optab>hisi_ll_lh, <su_optab>hisi_ll_hl, <su_optab>hisi_ll_hh,
18119         <su_optab>hisi_lh_hl, <su_optab>hisi_lh_hh, <su_optab>hisi_hl_hh):
18120         New patterns.
18121         (usmulhisi_ll_lul, usmulhisi_ll_luh, usmulhisi_ll_hul,
18122         usmulhisi_ll_huh, usmulhisi_lh_lul, usmulhisi_lh_luh, usmulhisi_lh_hul,
18123         usmulhisi_lh_huh, usmulhisi_hl_lul, usmulhisi_hl_luh, usmulhisi_hl_hul,
18124         usmulhisi_hl_huh, usmulhisi_hh_lul, usmulhisi_hh_luh, usmulhisi_hh_hul,
18125         usmulhisi_hh_huh): New patterns.
18126
18127         * config/bfin/bfin.md (ssashiftv2hi3, ssashifthi3, lshiftv2hi3,
18128         lshifthi3): Fix output template to use half reg for operand 2.
18129
18130         * config/bfin/bfin.c (bfin_output_mi_thunk): Use R3 as scratch reg
18131         instead of R2.
18132
18133         * config/bfin/bfin.md (rotl16, rotlsi3, rotrsi3): New patterns.
18134
18135 2007-02-27  Andreas Schwab  <schwab@suse.de>
18136
18137         * Makefile.in (TEXI_GCCINSTALL_FILES): Add gcc-common.texi.
18138
18139 2007-02-27  Jan Hubicka  <jh@suse.cz>
18140
18141         * predict.c (last_basic_block_p): Remove.
18142         (tree_estimate_probability): Update return heuristic for commonized
18143         return blocks.
18144
18145 2007-02-26  Brooks Moses  <brooks.moses@codesourcery.com>
18146
18147         * Makefile.in (TEXI_GCCINSTALL_FILES): Add gcc-vers.texi dependency.
18148
18149 2007-02-26  Brooks Moses  <brooks.moses@codesourcery.com>
18150
18151         * doc/include/gcc-common.texi (versionsubtitle): New macro.
18152         * doc/cpp.texi: Standardize title page.
18153         * doc/cppinternals.texi: Likewise.
18154         * doc/gcc.texi: Standardize title page, remove version number
18155         from copyright page.
18156         * doc/gccint.texi: Likewise.
18157         * doc/install.texi: Standardize title page, add table of
18158         contents.
18159
18160 2007-02-26  Jan Hubicka  <jh@suse.cz>
18161
18162         * predict.def: Set outcomes according to more recent results.
18163         (PRED_LOOP_CONDITION, PRED_LOOP_PRECONDITIONING, PRED_LOOP_HEADER):
18164         Remove dead predictors.
18165         * predict.c (return_prediction): Fix pasto.
18166
18167 2007-02-27  Bernd Schmidt  <bernd.schmidt@analog.com>
18168
18169         * loop-iv.c (simplify_using_initial_values): Fix oversight in previous
18170         change; avoid a memory leak when returning early.
18171
18172 2007-02-26  Mark Mitchell  <mark@codesourcery.com>
18173
18174         * c-decl.c (static_ctors): Move to c-common.c.
18175         (static_dtors): Likewise.
18176         (finish_function): Use c_record_cdtor_fn.
18177         (build_cdtor): Move to c-common.c.
18178         (c_write_global_declarations): Use c_build_cdtor_fns.
18179         * c-common.h (static_ctors): Declare.
18180         (static_dtors): Likewise.
18181         (c_record_cdtor_fn): Likewise.
18182         (c_build_cdtor_fns): Likewise.
18183         * c-common.c (static_ctors): New variable.
18184         (static_dtors): Likewise.
18185         (c_record_cdtor_fn): New function.
18186         (build_cdtor): Move from c-decl.c
18187         (c_build_cdtor_fns): New function.
18188
18189         * output.h (assemble_addr_to_section): Declare.
18190         (get_cdtor_priority_section): Likewise.
18191         * varasm.c (assemble_addr_to_section): New function.
18192         (get_cdtor_priority_section): Likewise.
18193         (default_named_section_asm_out_destructor): Use them.
18194         (destor_dtor_section_asm_out_destructor): Likewise.
18195         (default_named_section_asm_out_constructor): Likewise.
18196         (default_ctor_section_asm_out_constructor): Likewise.
18197         * config.gcc (*-*-vxworks*): Include vxworks.o.
18198         * config/t-vxworks (vxworks.o): New target.
18199         * config/vxworks.h (ALWAYS_NUMBER_CTORS_SECTIONS): Remove.
18200         (TARGET_ASM_CONSTRUCTOR): Define.
18201         (TARGET_ASM_DESTRUCTOR): Likewise.
18202         (vxworks_asm_out_constructor): Declare.
18203         (vxworks_asm_out_destructor): Likewise.
18204
18205         * c-common.c (get_priority): Check that we have not just an
18206         INTEGER_CST, but an integer constant with integeral type.
18207
18208 2007-02-25  Uros Bizjak  <ubizjak@gmail.com>
18209
18210         PR tree-optimization/30938
18211         * tree-vect-transform.c (vectorizable_call): Fix off-by-one error:
18212         use &dt[nargs-1] instead of &dt[nargs] in the call to
18213         vect_is_simple_use().
18214
18215 2007-02-25  Ulrich Weigand  <uweigand@de.ibm.com>
18216
18217         * reload.c (find_reloads_address_1): Handle PLUS expressions resulting
18218         from register elimination as PRE_MODIFY / POST_MODIFY increments.
18219         Do not attempt to handle MEM inside auto-inc expressions.
18220         * reload1.c (eliminate_regs_1): Do not attempt to handle elimination
18221         of a register modified by an auto-inc expression.  However, do handle
18222         elimination of a register used as PRE_MODIFY / POST_MODIFY increment.
18223         (elimination_effects): Prohibit elimination of a register modified
18224         by an auto-inc expression.  Disable register elimination rules whose
18225         target register is modified by an auto-inc expression with variable
18226         increment.
18227
18228 2007-02-25  Zdenek Dvorak  <dvorakz@suse.cz>
18229
18230         * tree-ssa-loop-niter.c (compute_estimated_nb_iterations): Fix
18231         off-by-one error.
18232         (array_at_struct_end_p): New function.
18233         (idx_infer_loop_bounds): Use it.
18234         (estimate_numbers_of_iterations_loop): Export.
18235         * predict.c (predict_loops): Use estimated_loop_iterations_int.
18236         Do not use PRED_LOOP_EXIT on exits predicted by # of iterations.
18237         (tree_estimate_probability): Call record_loop_exits.
18238         * tree-data-ref.c (get_number_of_iters_for_loop): Replaced by ...
18239         (estimated_loop_iterations, estimated_loop_iterations_int,
18240         estimated_loop_iterations_tree): New functions.
18241         (analyze_siv_subscript_cst_affine,
18242         compute_overlap_steps_for_affine_1_2,
18243         analyze_subscript_affine_affine): Use estimated_loop_iterations_int.
18244         (analyze_miv_subscript): Use estimated_loop_iterations_tree.
18245         * predict.def (PRED_LOOP_ITERATIONS): Update comment.
18246         (PRED_LOOP_ITERATIONS_GUESSED): New.
18247         * cfgloop.c (record_loop_exits): Do nothing if there are no loops.
18248         * cfgloop.h (estimate_numbers_of_iterations_loop,
18249         estimated_loop_iterations_int): Declare.
18250
18251 2007-02-25  Mark Mitchell  <mark@codesourcery.com>
18252
18253         * doc/extend.texi: Document optional priority argument to
18254         constructors and destructors.
18255         * tree.c (init_priority_for_decl): Adjust GTY markers.
18256         (init_ttree): Use priority-info hash functions for
18257         init_priority_for_decl.
18258         (tree_map_eq): Rename to ...
18259         (tree_map_base_eq): ... this.
18260         (tree_map_marked_p): Rename to ...
18261         (tree_map_base_marked_p): ... this.
18262         (tree_map_base_hash): New function.
18263         (decl_init_priority_lookup): Rework.
18264         (decl_fini_priority_lookup): New function.
18265         (decl_priority_info): New function.
18266         (decl_init_priority_insert): Use it.
18267         (decl_fini_priority_insert): Likewise.
18268         (decl_restrict_base_lookup): Adjust for refactoring of tree_map
18269         hierarchy.
18270         (decl_restrict_base_insert): Likewise.
18271         (decl_debug_expr_insert): Likewise.
18272         (decl_value_expr_lookup): Likewise.
18273         (decl_value_expr_insert): Likewise.
18274         * tree.h (priority_type): New type.
18275         (decl_init_priority_lookup): Use priority_type.
18276         (decl_fini_priority_lookup): New function.
18277         (decl_init_priority_insert): Use priority_type.
18278         (decl_fini_priority_insert): New function.
18279         (DECL_HAS_INIT_PRIORITY): Tweak comments.
18280         (DECL_INIT_PRIORITY): Likewise.
18281         (SET_DECL_INIT_PRIORITY): Add comment.
18282         (DECL_FINI_PRIORITY): New macro.
18283         (SET_DECL_FINI_PRIORITY): Likewise.
18284         (DEFAULT_INIT_PRIORITY): Document.
18285         (MAX_INIT_PRIORITY): Likewise.
18286         (MAX_RESERVED_INIT_PRIORITY): Likewise.
18287         (tree_map_base): New type.
18288         (tree_map_base_eq): New function.
18289         (tree_map_base_hash): Likewise.
18290         (tree_map_base_marked_p): Likewise.
18291         (tree_map): Inherit from tree_map_base.
18292         (tree_map_eq): Make it a macro.
18293         (tree_map_marked_p): Likewise.
18294         (tree_int_map): Inherit from tree_map_base.
18295         (tree_int_map_eq): Make it a macro.
18296         (tree_int_map_hash): Likewise.
18297         (tree_int_map_marked_p): Likewise.
18298         (tree_priority_map): New type.
18299         (tree_priority_map_eq): New macro.
18300         (tree_priority_map_hash): Likewise.
18301         (tree_priority_map_marked_p): Likewise.
18302         * varasm.c (emults_decl): Adjust for refactoring of tree_map
18303         hierarchy.
18304         (emutls_common_1): Likewise.
18305         * lambda-code.c (replace_uses_equiv_to_x_with_y): Likewise.
18306         * tree-ssa-structalias.c (heapvar_lookup): Adjust for refactoring
18307         of tree_map hierarchy.
18308         * tree-cfg.c (move_stmt_r): Likewise.
18309         (new_label_mapper): Likewise.
18310         * c-tree.h (c_expand_body): Move to ...
18311         * c-common.h (c_expand_body): ... here.
18312         * c-decl.c (c_expand_body): Move to ...
18313         * c-common.c (c_expand_body): ... here.
18314         (c_common_attribute_table): Allow 1 argument for the constructor
18315         and destructor attributes.
18316         (get_priority): New function.
18317         (handle_constructor_attribute): Set DECL_INIT_PRIORITY.
18318         (handle_destructor_attribute): Set DECL_FINI_PRIORITY.
18319
18320 2007-02-24  Jan Hubicka  <jh@suse.cz>
18321
18322         PR middle-end/30509
18323         * tree-inline.c (copy_bb): Produce exact copy of EH info when
18324         copying for inlining.
18325
18326 2007-02-24  Uros Bizjak  <ubizjak@gmail.com>
18327             Jan Hubicka  <jh@suse.cz>
18328
18329         PR target/30778
18330         * i386.c (counter_mode): New function.
18331         (expand_set_or_movmem_via_loop): Use it.
18332         (expand_movmem_epilogue): Likewise; fix pasto.
18333         (ix86_expand_movmem): Do emit guard even for constant counts.
18334         (ix86_expand_setmem): Likewise.
18335
18336 2007-02-25  Nick Clifton  <nickc@redhat.com>
18337
18338         * config/frv/frv.h (ASM_OUTPUT_CASE_LABEL): Delete.
18339         (JUMP_TABLES_IN_TEXT_SECTION): Define.
18340
18341 2007-02-24  Uros Bizjak  <ubizjak@gmail.com>
18342
18343         PR target/30770
18344         * config/i386/i386.md (expand_movmem_epilogue): Fix typo, mask
18345         count argument with 0x10, not with 0x16.
18346         (expand_setmem_epilogue): Ditto.
18347
18348 2007-02-24  Mike Stump  <mrs@apple.com>
18349
18350         * config/i386/i386.c (output_pic_addr_const): Stubify optimized
18351         symbols.
18352
18353 2007-02-24  Richard Guenther  <rguenther@suse.de>
18354
18355         PR middle-end/30951
18356         * fold-const.c (fold_binary): Fold x +- CST op x for
18357         EQ_EXPR and NE_EXPR.
18358
18359 2007-02-24  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
18360
18361         * pa.md (muldi3): Force subregs to registers in 64-bit expander.
18362
18363 2007-02-24  Jan Hubicka  <jh@suse.cz>
18364
18365         * cgraphunit.c (decide_is_function_needed): Honor
18366         -fkeep-inline-functions.
18367
18368 2007-02-24  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
18369
18370         * builtins.c (fold_builtin_modf): New.
18371         (fold_builtin_2): Use it.
18372
18373 2007-02-24  Bernd Schmidt  <bernd.schmidt@analog.com>
18374
18375         * loop-iv.c (implies_p): Detect additional cases where A implies B.
18376         (determine_max_iter): Take additional LOOP arg; all callers changed.
18377         Lose broken logic dealing with PLUS.  Try to limit the upper bound by
18378         one using simplifications.
18379         (simplify_using_initial_values): Return if the expression becomes
18380         invalid due to altered regs.
18381
18382 2007-02-23  DJ Delorie  <dj@redhat.com>
18383
18384         * doc/tm.h (BIGGEST_ALIGNMENT): Clarify the purpose of this macro.
18385
18386 2007-02-23  Mike Stump  <mrs@apple.com>
18387
18388         * tlink.c (scan_linker_output): Parse linker messages from
18389         darwin9's linker better.
18390
18391 2007-02-23  Steve Ellcey  <sje@cup.hp.com>
18392
18393         PR debug/29614
18394         * varpool.c (varpool_assemble_pending_decls):  Set
18395         varpool_last_needed_node to null.
18396
18397 2007-02-23  DJ Delorie  <dj@redhat.com>
18398
18399         * config/i386/i386.c (ix86_data_alignment): Don't specify an
18400         alignment bigger than the object file can handle.
18401
18402 2007-02-23  Uros Bizjak  <ubizjak@gmail.com>
18403
18404         PR target/30825
18405         * config/i386/i386.md (*movdi_1_rex64, zero_extendsidi2_32,
18406         zero_extendsidi2_rex64): Penalize MMX register<->memory moves.
18407         (*movsf_1): Penalize MMX moves.
18408
18409 2007-02-23  Bernd Schmidt  <bernd.schmidt@analog.com>
18410
18411         * config/bfin/bfin.md (doloop_end): Fail for loops that can iterate
18412         2^32-1 or more times unless flag_unsafe_loop_optimizations.
18413
18414         * loop-iv.c (determine_max_iter): Moved in front of its sole user.
18415
18416 2007-02-23  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
18417
18418         * builtins.c (fold_builtin_logb, fold_builtin_significand): New.
18419         (fold_builtin_1): Use them.
18420         * fold-const.c (tree_expr_nonnegative_warnv_p): Handle
18421         BUILT_IN_SIGNIFICAND.
18422
18423 2007-02-23  H.J. Lu  <hongjiu.lu@intel.com>
18424
18425         * config/i386/i386.c (bdesc_1arg): Initialize
18426         IX86_BUILTIN_MOVSHDUP and IX86_BUILTIN_MOVSLDUP with
18427         "__builtin_ia32_movshdup" and "__builtin_ia32_movsldup".
18428         (ix86_init_mmx_sse_builtins): Remove IX86_BUILTIN_MOVSHDUP
18429         and IX86_BUILTIN_MOVSLDUP.
18430
18431 2007-02-22  Paolo Bonzini  <bonzini@gnu.org>
18432
18433         PR rtl-optimization/30841
18434         * fwprop.c (propagate_rtx_1): Accept a VOIDmode replacement address.
18435
18436 2007-02-22  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
18437
18438         * builtins.c (fold_builtin_frexp): New.
18439         (fold_builtin_2): Use it.
18440
18441 2007-02-22  Mark Mitchell  <mark@codesourcery.com>
18442
18443         * doc/invoke.texi (Spec Files): Document getenv spec function.
18444
18445         * gcc.c (getenv_spec_function): New function.
18446         (static_spec_functions): Add it.
18447         * config/vxworks.h (VXWORKS_TARGET_DIR): Remove.
18448         (VXWORKS_ADDITIONAL_CPP_SPEC): Use getenv to find the VxWorks
18449         header files.
18450
18451 2007-02-22  Michael Matz  <matz@suse.de
18452
18453         PR c++/29433
18454         * dwarf2out.c (add_AT_string): Call ggc_strdup once per string.
18455         (type_tag): Use lang_hooks.dwarf_name instead of DECL_NAME.
18456
18457 2007-02-22  Ian Lance Taylor  <iant@google.com>
18458
18459         PR debug/30898
18460         * dwarf2out.c (concatn_mem_loc_descriptor): New static function.
18461         (mem_loc_descriptor): Call it.
18462
18463 2007-02-22  Zdenek Dvorak  <dvorakz@suse.cz>
18464             Ira Rosen  <irar@il.ibm.com>
18465
18466         * tree-data-ref.c (ptr_ptr_may_alias_p): Take alias sets into account.
18467
18468 2007-02-22  Ira Rosen  <irar@il.ibm.com>
18469
18470         PR tree-optimization/30843
18471         * tree-vect-transform.c (vect_transform_loop): Remove strided scalar
18472         stores only after all the group is vectorized.
18473
18474 2007-02-22  Dorit Nuzman  <dorit@il.ibm.com>
18475
18476         PR tree-optimization/30858
18477         * tree-vectorizer.c (vect_is_simple_reduction): Check that the stmts
18478         in the reduction cycle have a single use in the loop.
18479         * tree-vectorizer.h (relevant): Add documentation.
18480
18481 2007-02-20  Mike Stump  <mrs@apple.com>
18482
18483         * configure.ac (powerpc*-*-darwin*): #include <sys/cdefs.h>.
18484         * configure: Regenerate.
18485
18486 2007-02-21  Trevor Smigiel  <trevor_smigiel@playstation.sony.com>
18487
18488         Change the defaults of some parameters and options.
18489         * config/spu/spu-protos.h (spu_optimization_options): Declare.
18490         * config/spu/spu.c (spu_optimization_options): Add.
18491         (spu_override_options): Change params in spu_optimization_options.
18492         * config/spu/spu.h (OPTIMIZATION_OPTIONS): Define.
18493
18494         Register 127 is only 16 byte aligned when used as a frame pointer.
18495         * config/spu/spu-protos.h (spu_init_expanders): Declare.
18496         * config/spu/spu.c (spu_expand_prologue): Set REGNO_POINTER_ALIGN for
18497         HARD_FRAME_POINTER_REGNUM.
18498         (spu_legitimate_address):  Use regno_aligned_for_reload.
18499         (regno_aligned_for_load):  HARD_FRAME_POINTER_REGNUM is only 16 byte
18500         aligned when frame_pointer_needed is true.
18501         (spu_init_expanders): New.  Set alignment of HARD_FRAME_POINTER_REGNUM
18502         to 8 bits.
18503         * config/spu/spu.h (INIT_EXPANDERS): Define.
18504
18505         Make sure shift and rotate instructions have valid immediate operands.
18506         * config/spu/predicates.md (spu_shift_operand): Remove.
18507         * config/spu/spu.c (print_operand): Add [efghEFGH] modifiers.
18508         * config/spu/constraints.md (W, O): Extend range.
18509         * config/spu/spu.md (umask, nmask): Define.
18510         (ashl<mode>3, ashldi3, ashlti3_imm, shlqbybi_ti, shlqbi_ti, shlqby_ti,
18511         lshr<mode>3, rotm_<mode>, lshr<mode>3_imm, rotqmbybi_<mode>,
18512         rotqmbi_<mode>, rotqmby_<mode>, ashr<mode>3, rotma_<mode>,
18513         rotl<mode>3, rotlti3, rotqbybi_ti, rotqby_ti, rotqbi_ti): Use
18514         spu_nonmem_operand instead of spu_shift_operands.  Use new modifiers.
18515         (lshr<mode>3_reg):  Fix rtl description.
18516
18517         Make sure mulhisi immediate operands are valid.
18518         * config/spu/predicates.md (imm_K_operand): Add.
18519         * config/spu/spu.md (mulhisi3_imm, umulhisi3_imm): Use imm_K_operand.
18520
18521         Generate constants using fsmbi and andi.
18522         * config/spu/spu.c (enum immediate_class): Add IC_FSMBI2.
18523         (print_operand, spu_split_immediate, classify_immediate,
18524         fsmbi_const_p): Handle IC_FSMBI2.
18525
18526         Correctly handle a CONST_VECTOR containing symbols.
18527         * config/spu/spu.c (print_operand): Handle HIGH correctly.
18528         (spu_split_immediate): Split CONST_VECTORs with -mlarge-mem.
18529         (immediate_load_p): Allow symbols that use 2 instructions to create.
18530         (classify_immediate, spu_builtin_splats):  Don't accept a CONST_VECTOR
18531         with symbols when flag_pic is set.
18532         (const_vector_immediate_p): New.
18533         (logical_immediate_p, iohl_immediate_p, arith_immediate_p): Don't
18534         accept a CONST_VECTOR with symbols.
18535         (spu_legitimate_constant_p): Use const_vector_immediate_p.  Don't
18536         accept a CONST_VECTOR with symbols when flag_pic is set.  Handle HIGH
18537         correctly.
18538         * config/spu/spu.md (high, low): Delete.
18539         (low_<mode>): Define.
18540
18541         Remove INTRmode and INTR_REGNUM, which didn't work.
18542         * config/spu/spu.c (spu_conditional_register_usage): Remove reference
18543         of INTR_REGNUM.
18544         * config/spu/spu-builtins.md (spu_idisable, spu_ienable, set_intr,
18545         set_intr_pic, set_intr_cc, set_intr_cc_pic, set_intr_return, unnamed
18546         peephole2 pattern): Don't use INTR or 131.
18547         (movintrcc): Delete.
18548         * config/spu/spu.h (FIRST_PSEUDO_REGISTER, FIXED_REGISTERS,
18549         CALL_USED_REGISTERS, REGISTER_NAMES, INTR_REGNUM): Remove INTR_REGNUM.
18550         * config/spu/spu.md (UNSPEC_IDISABLE, UNSPEC_IENABLE): Remove.
18551         (UNSPEC_SET_INTR): Add.
18552         * config/spu/spu-modes.def (INTR): Remove.
18553
18554         More accurate warnings about run-time relocations.
18555         * config/spu/spu.c (reloc_diagnostic): Test in_section.
18556
18557         Correctly warn about immediate arguments to specific intrinsics.
18558         * config/spu/spu.c (spu_check_builtin_parm): Handle CONST_VECTORs.
18559         (spu_expand_builtin_1): Call spu_check_builtin_parm before checking
18560         the instruction predicate.
18561
18562         Fix tree check errors with latest update.
18563         * config/spu/spu.c (expand_builtin_args, spu_expand_builtin_1): Use
18564         CALL_EXPR_ARG.
18565         (spu_expand_builtin): Use CALL_EXPR_FN.
18566
18567         Add missing specific intrinsics.
18568         * config/spu/spu-builtins.def: Add si_bisled, si_bisledd and
18569         si_bislede.
18570         * config/spu/spu_internals.h: Ditto.
18571
18572         Fix incorrect operand modifiers.
18573         * config/spu/spu-builtins.md (spu_mpy, spu_mpyu):  Remove use of %H.
18574         * config/spu/spu.md (xor<mode>3):  Change %S to %J.
18575
18576         Optimize one case of zero_extend of a vec_select.
18577         * config/spu/spu.md (_vec_extractv8hi_ze):  Add.
18578
18579         Accept any immediate for hbr.
18580         * config/spu/spu.md (hbr):  Change s constraints to i.
18581
18582 2007-02-21  Paul Brook  <paul@codesourcery.com>
18583
18584         * config/arm/arm.c (thumb2_final_prescan_insn): Don't incrememnt
18585         condexec_count when skipping USE and CLOBBER.
18586
18587 2007-02-21  Nick Clifton  <nickc@redhat.com>
18588
18589         * common.opt (Warray-bounds): Add Warning attribute.
18590         (Wstrict-overflow, Wstrict-overflow=, Wcoverage-mismatch):
18591         Likewise.
18592         (fsized-zeroes): Add Optimization attribute.
18593         (fsplit-wide-types, ftree-scev-cprop): Likewise.
18594         * c.opt (Wc++0x-compat): Add Warning attribute.
18595
18596 2007-02-21  Ulrich Weigand  <uweigand@de.ibm.com>
18597
18598         PR middle-end/30761
18599         * reload1.c (eliminate_regs_in_insn): In the single_set special
18600         case, attempt to re-recognize the insn before falling back to
18601         having reload fix it up.
18602
18603 2007-02-20  Eric Christopher  <echristo@gmail.com>
18604
18605         * config/frv/frv.c (frv_read_argument): Take a tree and int argument.
18606         Rewrite accordingly.
18607         (frv_read_iacc_argument): Ditto.
18608         (frv_expand_set_builtin): Take a call instead of arglist, update for
18609         above changes.
18610         (frv_expand_unop_builtin): Ditto.
18611         (frv_expand_binop_builtin): Ditto.
18612         (frv_expand_cut_builtin): Ditto.
18613         (frv_expand_binopimm_builtin): Ditto.
18614         (frv_expand_voidbinop_builtin): Ditto.
18615         (frv_expand_int_void2arg): Ditto.
18616         (frv_expand_prefetches): Ditto.
18617         (frv_expand_voidtriop_builtin): Ditto.
18618         (frv_expand_voidaccop_builtin): Ditto.
18619         (frv_expand_load_builtin): Ditto.
18620         (frv_expand_store_builtin): Ditto.
18621         (frv_expand_mdpackh_builtin): Ditto.
18622         (frv_expand_mclracc_builtin): Ditto.
18623         (frv_expand_mrdacc_builtin): Ditto.
18624         (frv_expand_mwtacc_builtin): Ditto.
18625         (frv_expand_builtin): Remove usage of CALL_EXPR_ARGS, update
18626         calls for above.
18627
18628 2007-02-20  Janis Johnson  <janis187@us.ibm.com>
18629
18630         * doc/invoke.texi (RS/6000 and PowerPC Options): Add -mcmpb and -mdfp.
18631         * configure.ac (HAVE_GAS_CMPB): Check for assembler support of the
18632         cmpb instruction.
18633         (HAVE_GAS_DFP): Check for assembler support of decimal floating
18634         point instructions.
18635         * configure: Regenerate.
18636         * config.in: Regenerate.
18637         * config/rs6000/rs6000.opt (mcmpb, mdfp): New.
18638         * config/rs6000/rs6000.c (rs6000_override_options): Add CMPB and DFP
18639         masks to power6 and power6x and to POWERPC_MASKS.
18640         * config/rs6000/rs6000-c.c (rs6000_cpu_cpp_builtins): Define
18641         _ARCH_PWR6.
18642         * config/rs6000/rs6000.h: Check assembler support for CMPB and DFP.
18643         * config/rs6000/sysv4.opt (mprototype): Use variable, not mask.
18644         * config/rs6000/linux64.h (SUBSUBTARGET_OVERRIDE_OPTIONS):
18645         Access PROTOTYPE as variable, not mask.
18646
18647 2007-02-20  Steven Bosscher  <steven@gcc.gnu.org>
18648
18649         * rtl.h (remove_reg_equal_equiv_notes): New prototype.
18650         * rtlanal.c (remove_reg_equal_equiv_notes): New function.
18651         * combine.c (adjust_for_new_dest): Use it.
18652         * postreload.c (reload_combine): Likewise.
18653
18654 2007-02-20  Steven Bosscher  <steven@gcc.gnu.org>
18655
18656         * rtlanal.c (find_reg_equal_equiv_note): Do not find REG_EQ*
18657         notes on an insn with multiple sets, even if single_set returns
18658         non-NULL for that insn.
18659
18660 2007-02-20  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
18661
18662         * fold-const.c (tree_expr_nonnegative_warnv_p): Handle scalb,
18663         scalbn and scalbln.
18664
18665 2007-02-20  Geoffrey Keating  <geoffk@apple.com>
18666
18667         * config/darwin.h (LINK_SPEC): Default -mmacosx-version-min only
18668         if user didn't pass it.
18669         * config/i386/darwin.h (CC1_SPEC): Likewise.
18670         * config/rs6000/darwin.h (CC1_SPEC): Likewise.
18671         (DARWIN_MINVERSION_SPEC): Don't depend on user's setting of
18672         -mmacosx-version-min.
18673
18674 2007-02-20  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
18675             Uros Bizjak  <ubizjak@gmail.com>
18676
18677         * optabs.h (enum optab_index): Add new OTI_scalb.
18678         (scalb_optab): Define corresponding macro.
18679         * optabs.c (init_optabs): Initialize scalb_optab.
18680         * genopinit.c (optabs): Implement scalb_optab using scalb?f3
18681         patterns.
18682         * builtins.c (expand_builtin_mathfn_2, expand_builtin): Handle
18683         BUILT_IN_SCALB{,F,L}, BUILT_IN_SCALBN{,F,L} and BUILT_IN_SCALBLN{,F,L}.
18684         (expand_builtin): Expand BUILT_IN_SCALB{,F,L}, BUILT_IN_SCALBN{,F,L}
18685         and BUILT_IN_SCALBLN{,F,L} using expand_builtin_mathfn_2 if
18686         flag_unsafe_math_optimizations is set.
18687
18688         * config/i386/i386.md (scalbxf3, scalb<mode>3): New expanders
18689         to implement scalbf, scalb and scalbl built-ins as inline x87
18690         intrinsics.
18691
18692 2007-02-20  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
18693             DJ Delorie <dj@redhat.com>
18694
18695         PR other/30824
18696         * diagnostic.c (diagnostic_count_diagnostic): Move -Werror logic to...
18697         (diagnostic_report_diagnostic): ... here, and turn them into real
18698         errors. If warnings are inhibited, no need to do anything.
18699
18700 2007-02-20  Uros Bizjak  <ubizjak@gmail.com>
18701
18702         * config/i386/i386.md (expm1xf2): Reorder insn sequence for
18703         better code generation.
18704
18705 2007-02-20  Ben Elliston  <bje@au.ibm.com>
18706
18707         * config/m68hc11/m68hc11.h (OVERRIDE_OPTIONS): Remove extra ;.
18708
18709 2007-02-20  Kazu Hirata  <kazu@codesourcery.com>
18710
18711         * config/alpha/alpha.c, config/alpha/alpha.md,
18712         config/alpha/lib1funcs.asm, config/alpha/vms-crt0-64.c,
18713         config/alpha/vms-psxcrt0-64.c, config/arc/arc.c,
18714         config/arc/arc.h, config/arm/arm.c, config/arm/arm.md,
18715         config/arm/lib1funcs.asm: Follow spelling conventions.
18716
18717         * config/c4x/c4x.md, config/cris/cris.c, config/crx/crx.c,
18718         config/fr30/fr30.md, config/i386/i386.h,
18719         config/iq2000/iq2000.h, config/iq2000/predicates.md,
18720         config/pa/milli64.S, config/pa/pa.c, config/pa/pa.h,
18721         config/pa/pa.md, config/pa/pa32-regs.h, config/pa/pa64-regs.h,
18722         config/pdp11/pdp11.c, config/pdp11/pdp11.h,
18723         config/rs6000/altivec.md, config/rs6000/rs6000.c,
18724         config/s390/s390-modes.def, config/sparc/netbsd-elf.h,
18725         config/sparc/sparc.c, config/sparc/sparc.h,
18726         config/sparc/sparc.md, config/spu/constraints.md,
18727         config/spu/spu.c, config/stormy16/stormy16.md: Follow spelling
18728         conventions.
18729
18730 2007-02-20  Alan Modra  <amodra@bigpond.net.au>
18731
18732         PR target/29943
18733         * varasm.c (use_blocks_for_decl_p): Return false for decls with
18734         alias attribute.
18735
18736 2007-02-19  Kazu Hirata  <kazu@codesourcery.com>
18737
18738         * doc/invoke.texi (-ftree-lrs): Remove.
18739
18740 2007-02-19  Diego Novillo  <dnovillo@redhat.com>
18741
18742         * tree-ssa-pre.c (create_value_expr_from): Initialize POOL to
18743         NULL.
18744
18745 2007-02-19  Lee Millward  <lee.millward@codesourcery.com>
18746
18747         * config/ia64/ia64.c (ia64_expand_builtin): Use the
18748         new CALL_EXPR_FN macro for retrieving the function
18749         declaration of the input expression.
18750
18751 2007-02-19  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
18752
18753         * c.opt (Waddress): New.
18754         * common.opt (Walways-true): Delete.
18755         (Wstring-literal-comparison): Delete.
18756         * doc/invoke.texi (Warning Options): Delete -Walways-true and
18757         -Wstring-literal-comparison. Add -Waddress.
18758         (Waddress): New.
18759         (Walways-true): Delete.
18760         (Wstring-literal-comparison): Delete.
18761         * doc/extend.texi (#pragma GCC diagnostic): Use -Wformat
18762         consistently instead of -Walways-true in example.
18763         * c-opts.c (c_common_handle_option): -Waddress is enabled by -Wall.
18764         * c-typeck.c (parser_build_binary_op): Replace
18765         -Wstring-literal-comparison and -Walways-true with -Waddress.
18766         * c-common.c (c_common_truthvalue_conversion): Replace -Walways-true
18767         with -Waddress.
18768
18769 2007-02-19  Eric Botcazou  <ebotcazou@adacore.com>
18770
18771         * tree-cfg.c (dump_function_to_file): Be prepared for functions
18772         without DECL_STRUCT_FUNCTION initialized.
18773
18774 2007-02-19  Eric Botcazou  <ebotcazou@adacore.com>
18775
18776         * gimplify.c (gimplify_init_ctor_preeval_1): Detect potential overlap
18777         due to calls to functions taking pointers as parameters.
18778
18779 2007-02-19  Richard Henderson  <rth@redhat.com>
18780
18781         PR debug/29558
18782         * var-tracking.c (track_expr_p): Disallow AGGREGATE_TYPE_P
18783         in memory.
18784
18785 2007-02-19  Andreas Krebbel  <krebbel1@de.ibm.com>
18786
18787         * config/s390/s390.c (s390_call_saved_register_used,
18788         s390_function_ok_for_sibcall): Adjust the way CALL_EXPR arguments are
18789         accessed to the new scheme.
18790
18791 2007-02-19  Jan-Benedict Glaw  <jbglaw@lug-owl.de>
18792
18793         * config/cris/cris.c (cris_movem_load_rest_p, cris_store_multiple_op_p)
18794         (cris_print_index, cris_print_operand, cris_print_operand_address)
18795         (cris_reload_address_legitimized, cris_rtx_costs, cris_address_cost)
18796         (cris_side_effect_mode_ok, cris_valid_pic_const, cris_split_movdx)
18797         (cris_expand_pic_call_address): Use xxx_P predicate macros instead of
18798         GET_CODE () == xxx.
18799         * config/cris/cris.h (SECONDARY_RELOAD_CLASS, EXTRA_CONSTRAINT_Q,
18800         EXTRA_CONSTRAINT_T, BDAP_INDEX_P, BIAP_INDEX_P, SIMPLE_ADDRESS_P,
18801         GO_IF_LEGITIMATE_ADDRESS): Ditto.
18802         * config/cris/cris.md (define_insns: *btst, movdi, *mov_side<mode>)
18803         (*mov_sidesisf, *mov_side<mode>_mem, *mov_sidesisf_mem)
18804         (*clear_side<mode>, movsi, *movsi_internal, *ext_sideqihi)
18805         (*ext_side<mode>si, *op_side<mode>, *op_swap_side<mode>, addsi3)
18806         (*extopqihi_side, *extop<mode>si_side, *extopqihi_swap_side)
18807         (*extop<mode>si_swap_side, addi_mul, *addi,andsi3, andhi3, ashl<mode>3)
18808         (uminsi3, call, call_value): Ditto.
18809         (define_split: indir_to_reg_split, unnamed): Ditto.
18810
18811 2007-02-19  Dorit Nuzman  <dorit@il.ibm.com>
18812
18813         PR tree-optimization/30975
18814         * tree-vect-trasnform.c (vect_get_vec_def_for_stmt_copy): Remove
18815         wrong assert.
18816
18817 2007-02-18  Eric Christopher  <echristo@gmail.com>
18818
18819         * mips.c (mips_prepare_builtin_arg): Add argnum parameter.
18820         Remove use of arglist.
18821         (mips_expand_builtin): Remove use of arglist, pass in expr.
18822         (mips_expand_builtin_direct): Rewrite handling for arglist removal.
18823         (mips_expand_builtin_movtf): Ditto.
18824         (mips_expand_builtin_compare): Ditto.
18825
18826 2007-02-19  Alexandre Oliva  <aoliva@redhat.com>
18827
18828         * tree-sra.c (sra_build_assignment): Replace assertion
18829         checking with a comment explaining why it can't be done.
18830
18831 2007-02-18  Sandra Loosemore  <sandra@codesourcery.com>
18832
18833         PR middle-end/30833
18834         * tree-dump.c (dequeue_and_dump): Add tcc_vl_exp case missed
18835         during CALL_EXPR representation conversion.
18836         * tree-ssa-propagate.c (set_rhs): Likewise.
18837
18838 2007-02-19  Alexandre Oliva  <aoliva@redhat.com>
18839
18840         * tree-sra.c (sra_build_assignment): Disable assertion checking
18841         for now.
18842
18843 2007-02-18  Roger Sayle  <roger@eyesopen.com>
18844
18845         * function.c (gimplify_parameters): Call build_gimple_modify_stmt
18846         instead of calling build2 with a GIMPLE_MODIFY_STMT.
18847         * gimple-low.c (lower_function_body, lower_builtin_setjmp):
18848         Likewise.
18849         * gimplify.c (build_stack_save_restore, gimplify_return_expr,
18850         gimplify_decl_expr,  gimplify_self_mod_expr, gimplify_cond_expr,
18851         gimplify_init_ctor_eval_range, gimple_push_cleanup,
18852         gimplify_omp_for, gimplify_omp_atomic_pipeline,
18853         gimplify_omp_atomic_mutex, gimplify_expr, gimplify_one_sizepos,
18854         force_gimple_operand): Likewise.
18855         * ipa-cp.c (constant_val_insert): Likewise.
18856         * lambda-code.c (lbv_to_gcc_expression, lle_to_gcc_expression,
18857         lambda_loopnest_to_gcc_loopnest, replace_uses_equiv_to_x_with_y,
18858         perfect_nestify): Likewise.
18859         * langhooks.c (lhd_omp_assignment): Likewise.
18860         * omp-low.c (lower_rec_input_clauses, lower_reduction_clauses,
18861         lower_copyprivate_clauses, lower_send_clauses,
18862         lower_send_shared_vars, expand_parallel_call,
18863         expand_omp_for_generic, expand_omp_for_static_nochunk,
18864         expand_omp_for_static_chunk, expand_omp_sections,
18865         lower_omp_single_copy, lower_omp_for_lastprivate,
18866         lower_omp_parallel, init_tmp_var, save_tmp_var): Likewise.
18867         * value-prof.c (tree_divmod_fixed_value, tree_mod_pow2,
18868         tree_mod_subtract, tree_ic, tree_stringop_fixed_value):
18869         Likewise.
18870
18871 2007-02-19  Kazu Hirata  <kazu@codesourcery.com>
18872
18873         * config/sh/divtab.c, config/sh/sh.c, config/sh/sh.h,
18874         config/sh/sh.md: Follow spelling conventions.
18875
18876         * config/frv/frv.c, config/frv/frv.h, config/frv/frv.md,
18877         config/frv/predicates.md: Follow spelling conventions.
18878
18879         * config/m68k/linux-unwind.h: Fix a comment typo.
18880         * target.h: Follow spelling conventions.
18881
18882 2007-02-18  Roger Sayle  <roger@eyesopen.com>
18883
18884         PR rtl-optimization/28173
18885         * simplify-rtx.c (simplify_binary_operation_1) <IOR>:  Optimize
18886         (X & C1) | C2 as C2 when (C1 & C2) == C1 and X has no side-effects.
18887         Optimize (X & C1) | C2 as X | C2 when (C1 | C2) == ~0.
18888         Canonicalize (X & C1) | C2 as (X & (C1 & ~C2)) | C2.
18889         <AND>: Canonicalize (X | C1) & C2 as (X & C2) | (C1 & C2).
18890
18891 2007-02-18  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
18892
18893         * builtins.c (fold_builtin_load_exponent): New.
18894         (fold_builtin_2): Use it.
18895
18896 2007-02-18  Steven Bosscher  <steven@gcc.gnu.org>
18897
18898         PR rtl-optimization/30773
18899         * local-alloc.c (update_equiv_regs): Do not set reg_equiv_init
18900         if we fail to attach a REG_EQUIV note.
18901
18902 2007-02-18  David Edelsohn  <edelsohn@gnu.org>
18903             Roger Sayle  <roger@eyesopen.com>
18904
18905         * config/rs6000/rs6000.md (bswapsi2): New define_insn and splitter.
18906
18907 2007-02-18  Sandra Loosemore  <sandra@codesourcery.com>
18908
18909         * calls.c (initialize_argument_information): Pass original EXP
18910         and STRUCT_VALUE_ADDR_VALUE instead of a list of arguments.  Move
18911         code to split complex arguments here, as part of initializing the
18912         ARGS array.
18913         (expand_call): Remove code that builds a list of arguments and
18914         inserts implicit arguments into it.  Instead, just count how many
18915         implicit arguments there will be so we can determine the size of
18916         the ARGS array, and let initialize_argument_information do the work.
18917         (split_complex_values): Delete unused function.
18918
18919 2007-02-18  Eric Botcazou  <ebotcazou@adacore.com>
18920
18921         * tree-eh.c (tree_could_trap_p): Handle VIEW_CONVERT_EXPR.
18922
18923 2007-02-18  Eric Botcazou  <ebotcazou@adacore.com>
18924
18925         * calls.c (mem_overlaps_already_clobbered_arg_p): Return true
18926         for arg pointer based indexed addressing.
18927
18928 2007-02-18  Kazu Hirata  <kazu@codesourcery.com>
18929
18930         * config/ia64/ia64.h, config/ia64/ia64.md,
18931         config/ia64/predicates.md, config/ia64/sysv4.h: Follow
18932         spelling conventions.
18933
18934 2007-02-18  Roman Zippel <zippel@linux-m68k.org>
18935
18936         * config/m68k/m68k.c (split_di): New.
18937         * config/m68k/m68k-protos.h: Declare split_di.
18938         * config/m68k/m68k.md (extendsidi2*,ashldi3*,ashrdi3*,lshrdi3*):
18939           Improve predicate handling and split constant shifts.
18940
18941 2007-02-18  Roman Zippel <zippel@linux-m68k.org>
18942
18943         * config/m68k/m68k.md (extv,extzv,insv): disable dynamic
18944         parameter for register bitfield operations, general predicates
18945         cleanup
18946
18947 2007-02-18  Roman Zippel <zippel@linux-m68k.org>
18948
18949         * config/m68k/linux.h (MD_UNWIND_SUPPORT): Define.
18950         * config/m68k/linux-unwind.h: New file.
18951
18952 2007-02-18  Kazu Hirata  <kazu@codesourcery.com>
18953
18954         * cfgloop.c, config/alpha/alpha.c, config/bfin/bfin.c,
18955         config/i386/athlon.md, config/ia64/ia64.md,
18956         config/rs6000/rs6000.c, config/s390/s390.c, config/spu/spu.md,
18957         df-problems.c, df.h, fold-const.c, ipa-cp.c, ipa-inline.c,
18958         ipa-prop.h, see.c, struct-equiv.c, tree-inline.c,
18959         tree-ssa-loop-niter.c, tree-vect-analyze.c,
18960         tree-vect-transform.c: Fix comment typos.
18961
18962 2007-02-17  Kazu Hirata  <kazu@codesourcery.com>
18963
18964         * sched-deps.c (find_insn_list): Remove.
18965         * sched-int.h: Remove the prototype for find_insn_list.
18966
18967 2007-02-16  Geoffrey Keating  <geoffk@apple.com>
18968
18969         * config/darwin.h (LINK_SPEC): Always pass -macosx_version_min
18970         to linker.
18971         (DARWIN_EXTRA_SPECS): Add %(darwin_minversion).
18972         * config/rs6000/darwin.h (SUBTARGET_OVERRIDE_OPTIONS): Just call
18973         darwin_rs6000_override_options.
18974         (C_COMMON_OVERRIDE_OPTIONS): Expect
18975         darwin_macosx_version_min to be non-NULL always.
18976         (TARGET_C99_FUNCTIONS): Likewise.
18977         (CC1_SPEC): Always pass -mmacosx-version-min to cc1*.
18978         (DARWIN_MINVERSION_SPEC): New.
18979         * config/rs6000/rs6000.c (darwin_rs6000_override_options): New.
18980         * config/i386/darwin.h (CC1_SPEC): Always pass -mmacosx-version-min
18981         to cc1*.
18982         (DARWIN_MINVERSION_SPEC): New.
18983         * config/darwin.opt (mmacosx-version-min): Initialize to non-NULL
18984         value.
18985         * config/darwin-c.c (darwin_cpp_builtins): Expect
18986         darwin_macosx_version_min to be non-NULL always.
18987
18988         * config/rs6000/rs6000.c: Clean up trailing whitespace.
18989
18990 2007-02-16  Uros Bizjak  <ubizjak@gmail.com>
18991
18992         * config/i386/i386.h (x86_use_xchgb): New.
18993         (TARGET_USE_XCHGB): New macro.
18994         * config/i386/i386.c (x86_use_xchgb): Set for PENT4.
18995         * config/i386/i386.md (*rotlhi3_1 splitter, *rotrhi3_1 splitter):
18996         Split after reload into bswaphi for shifts of 8.
18997         (bswaphi_lowpart): Generate rolw insn for HImode byte swaps.
18998         (*bswaphi_lowpart_1): Generate xchgb for Q registers for TARGET_XCHGB
18999         or when optimizing for size.
19000
19001 2007-02-16  Richard Guenther  <rguenther@suse.de>
19002             Christian Bruel  <christian.bruel@st.com>
19003
19004         * fold-const.c (tree_swap_operands_p): Treat SSA_NAMEs like
19005         DECLs but prefer SSA_NAMEs over DECLs.
19006
19007 2007-02-16  Richard Guenther  <rguenther@suse.de>
19008
19009         * tree-flow-inline.h (single_imm_use_p): Remove.
19010         (zero_imm_uses_p): Likewise.
19011         * tree-ssa-coalesce.c (create_outofssa_var_map): Use has_single_use
19012         instead of single_imm_use_p.
19013         * tree-cfg.c (replace_uses_by): Use has_zero_use instead of
19014         zero_imm_uses_p.
19015
19016 2007-02-16  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
19017
19018         PR other/27843
19019         * Makefile.in (SYSTEM_HEADER_DIR): Use single quotes to avoid
19020         nested double- and backquotes.
19021
19022 2007-02-15  Roger Sayle  <roger@eyesopen.com>
19023
19024         PR middle-end/30391
19025         * tree.c (expr_align): Handle MODIFY_EXPR.  GIMPLE_MODIFY_STMT
19026         should be unreachable.
19027         (build2_stat): Allow construction of MODIFY_EXPR at any time.
19028         For the time being redirect GIMPLE_MODIFY_STMT to the new
19029         (renamed) build_gimple_modify_stmt_stat.
19030         (build2_gimple_stat): Rename to...
19031         (build_gimple_modify_stmt_stat): Now longer take a CODE argument.
19032         Always build a GIMPLE_MODIFY_STMT node.
19033         * tree.h (build2_gimple, build2_gimple_stat): Delete.
19034         (build_gimple_modify_stmt, build_gimple_modify_stmt_stat): New
19035         declarations.
19036
19037         * tree-cfg.c (factor_computed_gotos, tree_merge_blocks,
19038         gimplify_val): Use build_gimple_modify_stmt instead of build2_gimple.
19039         * tree-complex.c (set_component_ssa_name, expand_complex_move,
19040         expand_complex_div_wide): Likewise.
19041         * tree-ssa-dom.c (record_equivalences_from_stmt): Likewise.
19042         * tree-ssa-loop-im.c (schedule_sm): Likewise.
19043         * tree-ssa-loop-ivopts.c (rewrite_use_nonlinear_expr): Likewise.
19044         * tree-ssa-loop-manip.c (create_iv): Likewise.
19045         * tree-ssa-phiopt.c (conditional_replacement, minmax_replacement,
19046         abs_replacement): Likewise.
19047         * tree-ssa-pre.c (create_expression_by_pieces, poolify_modify_stmt,
19048         realify_fake_stores): Likewise.
19049
19050         * builtins.c (std_expand_builtin_va_start): Build a MODIFY_EXPR
19051         node rather than a GIMPLE_MODIFY_STMT node.
19052         (std_gimpify_va_arg_expr, expand_builtin_va_copy,
19053         fold_builtin_memset, fold_builtin_memory_op, do_mpfr_sincos):
19054         Likewise.
19055         (integer_valued_real_p): Handle MODIFY_EXPR, not GIMPLE_MODIFY_STMT.
19056         * expr.c (expand_expr_real_1): Handle both MODIFY_EXPR and
19057         GIMPLE_MODIFY_STMT.
19058
19059 2007-02-15  Andrew Pinski  <andrew_pinski@playstation.sony.com>
19060
19061         PR middle-end/30433
19062         * fold-const.c (fold_comparison): Add back the
19063         folding of constant complex comparisions.
19064
19065 2007-02-15  Andrew Pinski  <andrew_pinski@playstation.sony.com>
19066
19067         PR middle-end/30729
19068         * stmt.c (warn_if_unused_value): VA_ARG_EXPR has side
19069         effects unknown to this function, return early.
19070
19071 2007-02-15  Ian Lance Taylor  <iant@google.com>
19072
19073         * lower-subreg.c (move_eh_region_note): New static function.
19074         (resolve_simple_move): Call it.
19075         (decompose_multiword_subregs): Track blocks for which we resolve a
19076         simple move which is also a control flow insn.  Pass them to
19077         find_many_sub_basic_blocks.
19078         (pass_lower_subreg): Add TODO_verify_flow.
19079         (pass_lower_subreg2): Likewise.
19080
19081 2007-02-15  Sandra Loosemore  <sandra@codesourcery.com>
19082             Brooks Moses  <brooks.moses@codesourcery.com>
19083             Lee Millward  <lee.millward@codesourcery.com>
19084
19085         * tree.h (enum tree_code_class): Add tcc_vl_exp.
19086         (VL_EXP_CLASS_P): New.
19087         (TREE_OPERAND_CHECK): Use TREE_OPERAND_LENGTH instead of
19088         TREE_CODE_LENGTH.
19089         (TREE_OPERAND_CHECK_CODE): Likewise.
19090         (GIMPLE_STMT_OPERAND_CHECK): Likewise.
19091         (TREE_RTL_OPERAND_CHECK): Likewise.
19092         (tree_operand_check_failed): Make second parameter the whole tree
19093         instead of its code.  Fixed callers.
19094         (VL_EXP_CHECK): New.
19095         (TREE_OPERAND_LENGTH): New.
19096         (VL_EXP_OPERAND_LENGTH): New.
19097         (CALL_EXPR_FN): New.
19098         (CALL_EXPR_STATIC_CHAIN): New.
19099         (CALL_EXPR_ARGS): New.
19100         (CALL_EXPR_ARG): New.
19101         (call_expr_nargs): New.
19102         (CALL_EXPR_ARGP): New.
19103         (build_nt_call_list): Declare.
19104         (build_vl_exp_stat): Declare.
19105         (build_vl_exp): New.
19106         (build_call_list): Declare.
19107         (build_call_nary): Declare.
19108         (build_call_valist): Declare.
19109         (build_call_array): Declare.
19110         (call_expr_arg): Declare.
19111         (call_expr_argp): Declare.
19112         (call_expr_arglist): Declare.
19113         (fold_build_call_list): Declare.
19114         (fold_build_call_list_initializer): Declare.
19115         (fold_call_expr): Declare to replace fold_builtin.
19116         (fold_builtin_fputs): Update to agree with modified definition.
19117         (fold_builtin_strcpy): Likewise.
19118         (fold_builtin_strncpy): Likewise.
19119         (fold_builtin_memory_chk): Likewise.
19120         (fold_builtin_stxcpy_chk): Likewise.
19121         (fold_builtin_strncpy_chk): Likewise.
19122         (fold_builtin_next_arg): Likewise.
19123         (fold_build_call_expr): Declare.
19124         (fold_builtin_call_list): Declare.
19125         (fold_builtin_call_valist): Declare.
19126         (build_call_expr): Declare.
19127         (validate_arglist): Update to agree with modified definition.
19128         (tree_operand_length): New.
19129         (call_expr_arg_iterator): New.
19130         (init_call_expr_arg_iterator): New.
19131         (next_call_expr_arg): New.
19132         (first_call_expr_arg): New.
19133         (more_call_expr_args_p): New.
19134         (FOR_EACH_CALL_EXPR_ARG): New.
19135
19136         * tree.c (tree_code_class_string): Add entries for tcc_vl_exp
19137         and tcc_gimple_stmt.
19138         (tree_code_size): Update documentation.  Use sizeof (tree) rather
19139         than sizeof (char *).
19140         (tree_size): Likewise.  Add case for tcc_vl_exp.
19141         (tree_node_structure): Add case for tcc_vl_exp.
19142         (contains_placeholder_p): Likewise.
19143         (substitute_in_expr): Likewise.
19144         (substitute_placeholder_in_expr): Likewise.
19145         (stabilize_reference_1): Likewise.
19146         (build3_stat): Remove logic for CALL_EXPRs.  Replace with assertion
19147         to diagnose breakage of this interface for constructing CALL_EXPRs.
19148         (build_nt): Add similar assertion here.
19149         (build_nt_call_list): New.
19150         (simple_cst_equal) <CALL_EXPR>: Rewrite to use new accessors.
19151         (iterative_hash_expr): Use TREE_OPERAND_LENGTH instead of
19152         TREE_CODE_LENGTH.
19153         (get_callee_fndecl): Use new CALL_EXPR accessors.
19154         (tree_operand_check_failed): Change parameters to pass entire node
19155         instead of its code, so that we can call TREE_OPERAND_LENGTH on it.
19156         (process_call_operands): New.
19157         (build_vl_exp_stat): New.
19158         (build_call_list): New.
19159         (build_call_nary): New.
19160         (build_call_valist): New.
19161         (build_call_array): New.
19162         (walk_tree): Use TREE_OPERAND_LENGTH instead of TREE_CODE_LENGTH.
19163         (call_expr_arglist): New.
19164
19165         * tree.def (CALL_EXPR): Change representation of CALL_EXPRs to use
19166         tcc_vl_exp instead of a fixed-size tcc_expression.
19167
19168         * doc/c-tree.texi (CALL_EXPR): Document new representation and
19169         accessors for CALL_EXPRs.
19170         (AGGR_INIT_EXPR): Likewise.
19171
19172 2007-02-15  Sandra Loosemore  <sandra@codesourcery.com>
19173             Brooks Moses  <brooks.moses@codesourcery.com>
19174             Lee Millward  <lee.millward@codesourcery.com>
19175
19176         * builtins.c (c_strlen): Return NULL_TREE instead of 0.
19177         (expand_builtin_nonlocal_goto): Change parameter to be entire
19178         CALL_EXPR instead of an arglist.  Use new CALL_EXPR accessors.
19179         (expand_builtin_prefetch): Likewise.
19180         (expand_builtin_classify_type): Likewise.
19181         (mathfn_built_in): Return NULL_TREE instead of 0.
19182         (expand_errno_check): Use new CALL_EXPR accessors.
19183         (expand_builtin_mathfn): Use new CALL_EXPR accessors and constructors.
19184         Return NULL_RTX instead of 0.
19185         (expand_builtin_mathfn_2): Likewise.
19186         (expand_builtin_mathfn_3): Likewise.
19187         (expand_builtin_interclass_mathfn): Likewise.
19188         (expand_builtin_sincos): Likewise.
19189         (expand_builtin_cexpi): Likewise.
19190         (expand_builtin_int_roundingfn): Likewise.
19191         (expand_builtin_int_roundingfn_2): Likewise.
19192         (expand_builtin_pow): Likewise.
19193         (expand_builtin_powi): Likewise.
19194         (expand_builtin_strlen): Pass entire CALL_EXPR as parameter instead
19195         of arglist, fixing callers appropriately.  Use new CALL_EXPR
19196         accessors and constructors.  Return NULL_RTX instead of 0.
19197         (expand_builtin_strstr): Likewise.
19198         (expand_builtin_strchr): Likewise.
19199         (expand_builtin_strrchr): Likewise.
19200         (expand_builtin_strpbrk): Likewise.
19201         (expand_builtin_memcpy): Likewise.
19202         (expand_builtin_mempcpy): Likewise.
19203         (expand_builtin_mempcpy_args): New.
19204         (expand_builtin_memmove): Similarly to expand_builtin_mempcpy.
19205         (expand_builtin_memmove_args): New.
19206         (expand_builtin_bcopy): Similarly to expand_builtin_mempcpy.
19207         (expand_movstr): Likewise.
19208         (expand_builtin_strcpy): Likewise.
19209         (expand_builtin_strcpy_args): New.
19210         (expand_builtin_stpcpy): Similarly to expand_builtin_strcpy.
19211         (expand_builtin_strncpy): Likewise.
19212         (expand_builtin_memset): Likewise.
19213         (expand_builtin_memset_args): New.
19214         (expand_builtin_bzero): Similarly to expand_builtin_memset.
19215         (expand_builtin_memcmp): Likewise.
19216         (expand_builtin_strcmp): Likewise.
19217         (expand_builtin_strncmp): Likewise.
19218         (expand_builtin_strcat): Likewise.
19219         (expand_builtin_strncat): Likewise.
19220         (expand_builtin_strspn): Likewise.
19221         (expand_builtin_strcspn): Likewise.
19222         (expand_builtin_args_info): Likewise.
19223         (expand_builtin_va_start): Likewise.
19224         (gimplify_va_arg_expr): Likewise.
19225         (expand_builtin_va_end): Likewise.
19226         (expand_builtin_va_copy): Likewise.
19227         (expand_builtin_frame_address): Likewise.
19228         (expand_builtin_alloca): Likewise.
19229         (expand_builtin_bswap): Likewise.
19230         (expand_builtin_unop): Likewise.
19231         (expand_builtin_fputs): Likewise.
19232         (expand_builtin_expect): Likewise.
19233         (expand_builtin_fabs): Likewise.
19234         (expand_builtin_copysign): Likewise.
19235         (expand_builtin_printf): Likewise.
19236         (expand_builtin_fprintf): Likewise.
19237         (expand_builtin_sprintf): Likewise.
19238         (expand_builtin_init_trampoline): Likewise.
19239         (expand_builtin_signbit): Likewise.
19240         (expand_builtin_fork_or_exec): Likewise.
19241         (expand_builtin_sync_operation): Likewise.
19242         (expand_builtin_compare_and_swap): Likewise.
19243         (expand_builtin_lock_test_and_set): Likewise.
19244         (expand_builtin_lock_release): Likewise.
19245         (expand_builtin): Likewise.
19246         (builtin_mathfn_code): Likewise.
19247
19248         (fold_builtin_constant_p): Pass call arguments individually instead
19249         of as an arglist, fixing callers appropriately.  Use new CALL_EXPR
19250         accessors and constructors.  Return NULL_TREE instead of 0.
19251         (fold_builtin_expect): Likewise.
19252         (fold_builtin_classify_type): Likewise.
19253         (fold_builtin_strlen): Likewise.
19254         (fold_builtin_nan): Likewise.
19255         (integer_valued_real_p): Likewise.
19256         (fold_trunc_transparent_mathfn): Likewise.
19257         (fold_fixed_mathfn): Likewise.
19258         (fold_builtin_cabs): Likewise.
19259         (fold_builtin_sqrt): Likewise.
19260         (fold_builtin_cbrt): Likewise.
19261         (fold_builtin_cos): Likewise.
19262         (fold_builtin_cosh): Likewise.
19263         (fold_builtin_tan): Likewise.
19264         (fold_builtin_sincos): Likewise.
19265         (fold_builtin_cexp): Likewise.
19266         (fold_builtin_trunc): Likewise.
19267         (fold_builtin_floor): Likewise.
19268         (fold_builtin_ceil): Likewise.
19269         (fold_builtin_round): Likewise.
19270         (fold_builtin_int_roundingfn): Likewise.
19271         (fold_builtin_bitop): Likewise.
19272         (fold_builtin_bswap): Likewise.
19273         (fold_builtin_logarithm): Likewise.
19274         (fold_builtin_hypot): Likewise.
19275         (fold_builtin_pow): Likewise.
19276         (fold_builtin_powi): Likewise.
19277         (fold_builtin_exponent): Likewise.
19278         (fold_builtin_memset): Likewise.
19279         (fold_builtin_bzero): Likewise.
19280         (fold_builtin_memory_op): Likewise.
19281         (fold_builtin_bcopy): Deleted; call site changed to invoke
19282         fold_builtin_memory_op directly.
19283         (fold_builtin_strcpy): Similarly as for fold_builtin_memory_op.
19284         (fold_builtin_strncpy): Likewise.
19285         (fold_builtin_memcmp): Likewise.
19286         (fold_builtin_strcmp): Likewise.
19287         (fold_builtin_strncmp): Likewise.
19288         (fold_builtin_signbit): Likewise.
19289         (fold_builtin_copysign): Likewise.
19290         (fold_builtin_isascii): Likewise.
19291         (fold_builtin_toascii): Likewise.
19292         (fold_builtin_isdigit): Likewise.
19293         (fold_builtin_fabs): Likewise.
19294         (fold_builtin_abs): Likewise.
19295         (fold_builtin_fmin_fmax): Likewise.
19296         (fold_builtin_carg): Likewise.
19297         (fold_builtin_classify): Likewise.
19298         (fold_builtin_unordered_cmp): Likewise.
19299
19300         (fold_builtin_0, fold_builtin_2, fold_builtin_3, fold_builtin_4):
19301         New functions split out from fold_builtin_1.
19302         (fold_builtin_n): New.
19303         (fold_builtin_varargs): New.
19304         (fold_builtin): Deleted.  Most callers changed to use fold_call_expr
19305         instead.
19306         (fold_call_expr): New.
19307         (build_function_call_expr): Rewrite to use new helper function.
19308         (fold_builtin_call_list): New.
19309         (build_call_expr): New.
19310         (fold_builtin_call_valist): New.
19311         (rewrite_call_expr): New.
19312         (validate_arg): New.
19313         (validate_arglist): Change parameter to be entire CALL_EXPR instead
19314         of an arglist.  Change return type to bool.  Use new CALL_EXPR
19315         accessors.
19316
19317         (fold_builtin_strstr):  Pass call arguments individually instead
19318         of as an arglist, fixing callers appropriately.  Use new CALL_EXPR
19319         accessors and constructors.  Return NULL_TREE instead of 0.
19320         (fold_builtin_strchr): Likewise.
19321         (fold_builtin_strrchr): Likewise.
19322         (fold_builtin_strpbrk): Likewise.
19323         (fold_builtin_strcat): Likewise.
19324         (fold_builtin_strncat): Likewise.
19325         (fold_builtin_strspn): Likewise.
19326         (fold_builtin_strcspn): Likewise.
19327         (fold_builtin_fputs): Likewise.
19328         (fold_builtin_next_arg): Likewise.
19329         (fold_builtin_sprintf): Likewise.
19330
19331         (expand_builtin_object_size): Use new CALL_EXPR accessors.  Use
19332         NULL_RTX instead of 0.
19333         (expand_builtin_memory_chk): Likewise.
19334         (maybe_emit_chk_warning): Likewise.
19335         (maybe_emit_sprintf_chk_warning): Likewise.
19336
19337         (fold_builtin_object_size): Pass call arguments individually instead
19338         of as an arglist, fixing callers appropriately.  Use new CALL_EXPR
19339         accessors and constructors.  Return NULL_TREE instead of 0.
19340         (fold_builtin_memory_chk): Likewise.
19341         (fold_builtin_stxcpy_chk): Likewise.
19342         (fold_builtin_strncpy_chk): Likewise.
19343         (fold_builtin_strcat_chk): Likewise.
19344         (fold_builtin_strcat_chk): Likewise.
19345         (fold_builtin_strncat_chk): Likewise.
19346         (fold_builtin_sprintf_chk): Likewise.
19347         (fold_builtin_snprintf_chk): Likewise.
19348         (fold_builtin_printf): Likewise.
19349         (fold_builtin_vprintf): Likewise.
19350
19351         * fold-const.c (negate_expr_p): Use new CALL_EXPR accessors and
19352         constructors.
19353         (operand_equal_p): Add separate tcc_vl_exp/CALL_EXPR case.
19354         (make_range): Use TREE_OPERAND_LENGTH instead of TREE_CODE_LENGTH.
19355         (extract_muldiv_1): Add VL_EXP_CLASS_P case.
19356         (fold_mathfn_compare): Use new CALL_EXPR accessors and constructors.
19357         (fold_unary): Likewise.
19358         (fold_binary): Likewise.
19359         (fold_ternary): Remove CALL_EXPR case, since they are no longer
19360         ternary expressions.
19361         (fold): Add logic for tcc_vl_exp.
19362         (fold_checksum_tree):  Make it know about tcc_vl_exp.  Use
19363         TREE_OPERAND_LENGTH instead of TREE_CODE_LENGTH.
19364         (fold_build3_stat): Add assertion to flag broken interface for
19365         constructing CALL_EXPRs.
19366         (fold_build_call_list): New.
19367         (fold_build_call_list_initializer): New.
19368         (tree_expr_nonnegative_p): Use new CALL_EXPR accessors and
19369         constructors.
19370         (fold_strip_sign_ops): Likewise.
19371
19372 2007-02-15  Sandra Loosemore  <sandra@codesourcery.com>
19373             Brooks Moses  <brooks.moses@codesourcery.com>
19374             Lee Millward  <lee.millward@codesourcery.com>
19375
19376         * tree-dump.c (dequeue_and_dump) <CALL_EXPR>: Use new CALL_EXPR
19377         accessors and dump arguments explicitly.
19378
19379         * tree-pretty-print.c (do_niy): Use TREE_OPERAND_LENGTH instead of
19380         TREE_CODE_LENGTH.
19381         (dump_generic_node): Use new CALL_EXPR accessors and walk arguments
19382         explicitly.
19383         (print_call_name): Use new CALL_EXPR accessors.
19384
19385         * print-tree.c (print_node): Add case tcc_vl_exp.  Print
19386         CALL_EXPR arguments explicitly instead of as a list.  Use
19387         TREE_OPERAND_LENGTH instead of TREE_CODE_LENGTH.
19388
19389         * tree-vrp.c (stmt_interesting_for_vrp): Use new CALL_EXPR accessors.
19390         (vrp_visit_stmt): Likewise.
19391
19392         * tree-ssa-loop-im.c (outermost_invariant_loop_expr):  Make it
19393         know about tcc_vl_exp.  Use TREE_OPERAND_LENGTH instead of
19394         TREE_CODE_LENGTH.
19395         (force_move_till_expr): Likewise.
19396
19397         * targhooks.c (default_external_stack_protect_fail): Use
19398         build_call_expr instead of build_function_call_expr.
19399         (default_hidden_stack_protect_fail): Likewise.
19400
19401         * tree-complex.c (expand_complex_libcall): Use build_call_expr to
19402         build the call.
19403
19404         * cgraphbuild.c (build_cgraph_edges): Use new CALL_EXPR accessors
19405         and walk arguments explicitly.
19406
19407         * tree-ssa-loop-niter.c (simplify_replace_tree): Use
19408         TREE_OPERAND_LENGTH instead of TREE_CODE_LENGTH.
19409         (expand_simple_operations): Likewise.
19410         (infer_loop_bounds_from_array): Use new CALL_EXPR accessors.
19411
19412         * gengtype.c (adjust_field_tree_exp): Use TREE_OPERAND_LENGTH instead
19413         of TREE_CODE_LENGTH.
19414         (walk_type): Tweak walking of arrays not to blow up on CALL_EXPRs.
19415
19416         * optabs.c (expand_widen_pattern-expr): Use TREE_OPERAND_LENGTH
19417         instead of TREE_CODE_LENGTH.
19418
19419         * value_prof.c (tree_ic): Use new CALL_EXPR accessors.
19420         (tree_ic_transform): Likewise.
19421         (interesting_stringop_to_profile_p): Pass entire CALL_EXPR as
19422         parameter instead of arglist.  Fix callers.
19423         (tree_stringop_fixed_value): Use new CALL_EXPR accessors.
19424         (tree_stringops_transform): Likewise.
19425         (tree_indirect_call_to_profile): Likewise.
19426         (tree_stringops_values_to_profile): Likewise.
19427
19428         * tree-tailcall.c (find_tail_calls): Use new CALL_EXPR iterator.
19429         (eliminate_tail_call): Likewise.
19430
19431         * ipa-cp.c (ipcp_update_callgraph): Use new CALL_EXPR accessors.
19432
19433         * tree-scalar-evolution.c (chrec_contains_symbols_defined_in_loop):
19434         Use TREE_OPERAND_LENGTH and generalize to handle any number of
19435         operands.
19436         (instantiate_parameters_1): Can't handle tcc_vl_exp here.
19437
19438         * omp-low.c (build_omp_barrier): Use build_call_expr.
19439         (lower_rec_input_clauses): Likewise.
19440         (lower_reduction_clauses): Likewise.
19441         (expand_parallel_call): Likewise.
19442         (maybe_catch_exception): Likewise.
19443         (expand_omp_for_generic): Likewise.
19444         (expand_omp_for_static_nochunk): Likewise.
19445         (expand_omp_sections): Likewise.
19446         (lower_omp_single_simple): Likewise.
19447         (lower_omp_single_copy): Likewise.
19448         (lower_omp_master): Likewise.
19449         (lower_omp_ordered): Likewise.
19450         (lower_omp_critical): Likewise.
19451
19452         * ipa-reference.c (check-call): Use new CALL_EXPR iterator.
19453         (scan_for_static_refs): Create tcc_vl_exp case for CALL_EXPR.
19454
19455         * tree-gimple.c (is_gimple_call_addr): Fix doc.
19456         (recalculate_side_effects): Use TREE_OPERAND_LENGTH instead of
19457         TREE_CODE_LENGTH.  Add tcc_vl_exp case.
19458
19459         * tree-chrec.c (chrec_contains_symbols): Use TREE_OPERAND_LENGTH
19460         and generalize to handle any number of operands.
19461         (chrec_contains_undetermined): Likewise.
19462         (tree_contains_chrecs): Likewise.
19463         (evolution_function_is_invariant_rec_p): Use TREE_OPERAND_LENGTH.
19464
19465         * cgraphunit.c (update_call_expr): Use new CALL_EXPR accessors.
19466
19467         * tree-ssa-ccp.c (ccp_fold): Use new CALL_EXPR accessors.  Use
19468         fold_call_expr instead of fold_builtin.
19469         (ccp_fold_builtin): Likewise.  Update calls into builtins.c to
19470         match declarations there.
19471         (fold_stmt): Use new CALL_EXPR constructor and accessors.  Doc
19472         updates.
19473
19474         * tree-ssa-loop-ivopts.c (expr_invariant_in_loop_p): Use
19475         TREE_OPERAND_LENGTH instead of TREE_CODE_LENGTH.
19476
19477         * ipa-pure-const.c (check_call): Use new CALL_EXPR accessors.
19478         (scan_function): Add case tcc_vl_exp for CALL_EXPR.
19479
19480         * tree-stdarg.c (execute_optimize_stdarg): Use new CALL_EXPR
19481         accessors.
19482
19483         * tree-ssa-math-opts.c (execute_cse_sincos_1): Use build_call_expr.
19484         (execute_cse_sincos): Use new CALL_EXPR accessors.
19485
19486         * tree-ssa-alias.c (find_used_portions): Use new CALL_EXPR iterator.
19487
19488         * gimple-low.c (lower_function_body): Use build_call_expr.
19489         (lower_builtin_setjmp): Likewise.
19490
19491         * expr.c (emit_block_move_via_libcall): Use build_call_expr.
19492         (set_storage_via_libcall): Likewise.
19493         (safe_from_p): Add tcc_vl_exp case.  Use TREE_OPERAND_LENGTH
19494         instead of TREE_CODE_LENGTH.
19495         (expand_expr_real_1): Use new CALL_EXPR accessors.
19496
19497         * tree-browser.c (store_child_info): Use TREE_OPERAND_LENGTH and
19498         generalize to handle any number of operands.
19499         (TB_parent_eq): Likewise.
19500
19501         * predict.c (expr_expected_value): Use new CALL_EXPR accessors.
19502         (strip_builtin_expect): Likewise.
19503
19504         * function.c (gimplify_parameters): Use build_call_expr.
19505
19506         * tree-vectorizer.c (vect_is_simple_reduction): Use
19507         TREE_OPERAND_LENGTH instead of TREE_CODE_LENGTH.
19508
19509         * ipa-type-escape.c (check_call): Use new CALL_EXPR iterators.
19510         (scan_for_refs): Add case tcc_vl_exp for CALL_EXPR.
19511
19512         * tree-data-ref.c (get_references_in_stmt): Use new CALL_EXPR
19513         iterators.
19514
19515         * gimplify.c (build_stack_save_restore): Use build_call_expr.
19516         (gimplify_decl_expr): Likewise.
19517         (gimplify_call_expr): Use fold_call_expr instead of fold_builtin.
19518         Use new CALL_EXPR iterators.
19519         (gimplify_modify_expr_to_memcpy): Use build_call_expr.
19520         (gimplify_modify_expr_to_memset): Likewise.
19521         (gimplify_variable_sized_compare): Likewise.
19522         (gimplify_omp_atomic_fetch_op): Likewise.
19523         (gimplify_omp_atomic_pipeline): Likewise.
19524         (gimplify_omp_atomic_mutex): Likewise.
19525         (gimplify_function_tree): Likewise.
19526
19527         * calls.c (alloca_call_p): Use new CALL_EXPR accessors.
19528         (call_expr_flags): Likewise.
19529         (expand_call): Likewise.
19530
19531         * except.c (expand_builtin_eh_return_data_regno): Pass entire
19532         CALL_EXPR as parameter instead of arglist.  Use new CALL_EXPR
19533         accessors.
19534
19535         * coverage.c (create_coverage): Use build_call_expr.
19536
19537         * tree-ssa-pre.c (expression_node_pool, list_node_pool): Delete.
19538         (temp_call_expr_obstack): New.
19539         (pool_copy_list): Delete.
19540         (temp_copy_call_expr): New.
19541         (phi_translate): Add case tcc_vl_exp for CALL_EXPR.  Use new
19542         CALL_EXPR accessors.  Get rid of special goo for copying argument
19543         lists and use temp_copy_call_expr instead.
19544         (valid_in_sets): Add case tcc_vl_exp for CALL_EXPR.  Use new
19545         CALL_EXPR accessors.
19546         (create_expression_by_pieces): Likewise.  Use build_call_array
19547         to construct the result instead of fold_build3.
19548         (create_value_expr_from): Add tcc_vl_exp.  Delete special goo for
19549         dealing with argument lists.
19550         (init_pre): Remove references to expression_node_pool and
19551         list_node_pool.  Init temp_call_expr_obstack instead.
19552         (fini_pre): Remove references to expression_node_pool and
19553         list_node_pool.
19554
19555         * tree-sra.c (sra_walk_call_expr): Use new CALL_EXPR accessors
19556         and walk arguments explicitly instead of as a list.
19557
19558         * tree-mudflap.c (mf_build_check_statement_for): Use build_call_expr.
19559         (mx_register_decls): Likewise.
19560         (mudflap_register_call): Likewise.
19561         (mudflap_finish_file): Likewise.
19562
19563         * ipa-prop.c (ipa_callsite_compute_count): Use new CALL_EXPR accessors.
19564         (ipa_callsite_compute_param): Likewise.
19565
19566         * tree-vect-patterns.c (vect_recog_pow_pattern): Use new CALL_EXPR
19567         accessors and constructor.
19568
19569         * tree-nested.c (convert_nl_goto_reference): Use new CALL_EXPR
19570         accessors and constructor.
19571         (convert_tramp_reference): Likewise.
19572         (convert_call_expr): Likewise.
19573         (finalize_nesting_tree_1): Likewise.
19574
19575         * tree-ssa.c (tree_ssa_useless_type_conversion): Use new CALL_EXPR
19576         accessors.
19577
19578         * tree-ssa-loop-prefetch.c (issue_prefetch_ref): Use build_call_expr.
19579
19580         * tree-inline.c (initialize_inlined_parameters): Pass entire
19581         CALL_EXPR as parameter instead of arglist.  Use new CALL_EXPR
19582         accessors.
19583         (estimate_num_insns_1): Use new CALL_EXPR accessors.
19584         (expand_call_inline): Tidy up call to initialize_inlined_parameters.
19585
19586         * tree-vect-transform.c (vect_create_epilog_for_reduction):  Use
19587         TREE_OPERAND_LENGTH instead of TREE_CODE_LENGTH.
19588         (vectorizable_reduction): Likewise.
19589         (vectorizable_call): Use new CALL_EXPR iterators.
19590         (vectorizable_conversion): Use build_call_expr.
19591         (vectorizable_operation): Use TREE_OPERAND_LENGTH.
19592         (vect_gen_widened_results_half): Use build_call_expr.
19593         (vect_setup_realignment): Likewise.
19594         (vectorizable_live_operation): Use TREE_OPERAND_LENGTH.
19595
19596         * tree-object-size.c (alloc_object_size): Use new CALL_EXPR accessors.
19597         (pass_through_call): Likewise.
19598         (compute_object_sizes): Likewise.  Use fold_call_expr instead of
19599         fold_builtin.
19600
19601         * tree-profile.c (tree_gen_interval_profiler): Use build_call_expr.
19602         (tree_gen_pow2_profiler): Likewise.
19603         (tree_gen_one_value_profiler): Likewise.
19604         (tree_gen_ic_func_profiler): Likewise.
19605         (tree_gen_average_profiler): Likewise.
19606         (tree_gen_ior_profiler): Likewise.
19607
19608         * tree-ssa-structalias.c (get_constraint_for): Add case tcc_vl_exp.
19609         (find_func_aliases): Use new CALL_EXPR accessors.  Add case
19610         tcc_vl_exp.  Use TREE_OPERAND_LENGTH instead of TREE_CODE_LENGTH.
19611
19612         * tree-ssa-reassoc.c (get_rank): Use TREE_OPERAND_LENGTH instead
19613         of TREE_CODE_LENGTH.
19614
19615         * stmt.c (warn_if_unused_value): Use TREE_OPERAND_LENGTH instead
19616         of TREE_CODE_LENGTH.
19617
19618         * convert.c (convert_to_real): Use new CALL_EXPR accessors and
19619         constructor.
19620         (convert_to_integer): Likewise.
19621
19622         * tree-ssa-operands.c (get_call_expr_operands): Use new CALL_EXPR
19623         accessors.
19624
19625 2007-02-15  Sandra Loosemore  <sandra@codesourcery.com>
19626             Brooks Moses  <brooks.moses@codesourcery.com>
19627             Lee Millward  <lee.millward@codesourcery.com>
19628
19629         * config/alpha/alpha.c (alpha_expand_builtin): Use new CALL_EXPR
19630         accessors.
19631         * config/frv/frv.c (frv_expand_builtin): Likewise.
19632         * config/s390/s390.c (s390_expand_builtin): Likewise.
19633
19634         * config/sparc/sparc.c (sparc_gimplify_va_arg): Use build_call_expr.
19635         (sparc_expand_builtin): Use new CALL_EXPR accessors.
19636
19637         * config/i386/i386.c (ix86_function_ok_for_sibcall): Likewise.
19638         (ix86_expand_binop_builtin): Pass entire CALL_EXPR as parameter
19639         instead of arglist.  Use new CALL_EXPR accessors on it.  Fix callers.
19640         (ix86_expand_store_builtin): Likewise.
19641         (ix86_expand_unop_builtin): Likewise.
19642         (ix86_expand_unop1_builtin): Likewise.
19643         (ix86_expand_sse_compare): Likewise.
19644         (ix86_expand_sse_comi): Likewise.
19645         (ix86_expand_vec_init_builtin): Likewise.
19646         (ix86_expand_vec_ext_builtin): Likewise.
19647         (ix86_expand_vec_set_builtin): Likewise.
19648         (ix86_expand_builtin): Use new CALL_EXPR accessors.
19649
19650         * config/sh/sh.c (sh_expand_builtin): Use new CALL_EXPR accessors.
19651         * config/c4x/c4x.c (c4x_expand_builtin): Likewise.
19652
19653         * config/iq2000/iq2000.c (expand_one_builtin): Pass entire CALL_EXPR
19654         instead of arglist.  Use new CALL_EXPR accessors.  Fix callers.
19655         (iq2000_expand_builtin): Use new CALL_EXPR accessors.
19656
19657         * config/rs6000/rs6000-c.c (altivec_build_resolved_builtin): Use
19658         build_call_expr.
19659         * config/rs6000/rs6000.c (rs6000_gimplify_va_arg): Likewise.
19660         (rs6000_expand_unop_builtin): Pass entire CALL_EXPR instead of
19661         arglist.  Use new CALL_EXPR accessors.  Fix callers.
19662         (altivec_expand_abs_builtin): Likewise.
19663         (rs6000_expand_binop_builtin): Likewise.
19664         (altivec_expand_predicate_builtin): Likewise.
19665         (altivec_expand_lv_builtin): Likewise.
19666         (spe_expand_stv_builtin): Likewise.
19667         (altivec_expand_stv_builtin): Likewise.
19668         (rs6000_expand_ternop_builtin): Likewise.
19669         (altivec_expand_ld_builtin): Use new CALL_EXPR accessors.
19670         (altivec_expand_st_builtin): Likewise.
19671         (altivec_expand_dst_builtin): Likewise.
19672         (altivec_expand_vec_init_builtin): Pass entire CALL_EXPR instead of
19673         arglist.  Use new CALL_EXPR accessors.  Fix callers.
19674         (altivec_expand_vec_set_builtin): Likewise.
19675         (altivec_expand_vec_ext_builtin): Likewise.
19676         (altivec_expand_builtin): Use new CALL_EXPR accessors.
19677         (spe_expand_builtin): Likewise.
19678         (spe_expand_predicate_builtin): Pass entire CALL_EXPR instead of
19679         arglist.  Use new CALL_EXPR accessors.  Fix callers.
19680         (spe_expand_evsel_builtin): Likewise.
19681         (rs6000_expand_builtin): Use new CALL_EXPR accessors.  VCFUX and
19682         FCFSX cases must construct whole new CALL_EXPR, not just arglist.
19683
19684         * config/arm/arm.c (arm_expand_binop_builtin): Pass entire CALL_EXPR
19685         instead of arglist.  Use new CALL_EXPR accessors.  Fix callers.
19686         (arm_expand_unop_builtin): Likewise.
19687         (arm_expand_builtin): Use new CALL_EXPR accessors.
19688
19689         * config/mips/mips.c (mips_expand_builtin):  Use new CALL_EXPR
19690         accessors.
19691
19692         * config/bfin/bfin.c (bfin_expand_binop_builtin): Pass entire
19693         CALL_EXPR instead of arglist.  Use new CALL_EXPR accessors.
19694         Fix callers.
19695         (bfin_expand_unop_builtin): Likewise.
19696         (bfin_expand_builtin): Use new CALL_EXPR accessors.
19697
19698 2007-02-15  Sandra Loosemore  <sandra@codesourcery.com>
19699             Brooks Moses  <brooks.moses@codesourcery.com>
19700             Lee Millward  <lee.millward@codesourcery.com>
19701
19702         * c-semantics.c (build_stmt): Add internal diagnostic check.
19703
19704         * c-pretty-print.c (pp_c_postfix_expression): Use new CALL_EXPR
19705         accessors.  Print arguments explicitly instead of as a list.
19706
19707         * c-typeck.c (build_function_call): Use new CALL_EXPR constructors.
19708
19709         * c-omp.c (c_finish_omp_barrier): Use build_call_expr.
19710         (c_finish_omp_flish): Likewise.
19711
19712         * c-common.c (verify_tree): Use new CALL_EXPR accessors.  Traverse
19713         arguments explicitly instead of as a list.  Use TREE_OPERAND_LENGTH
19714         instead of TREE_CODE_LENGTH.
19715         (check_function_arguments_recurse): Use new CALL_EXPR accessors.
19716         (c_warn_unused_result): Likewise.
19717
19718 2007-02-15  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
19719
19720         PR c/26494
19721         * doc/invoke.texi (Warning Options): Remove
19722         -Werror-implicit-function-declaration.
19723         (Wimplicit-function-declaration): Update description.
19724         * opts.c (common_handle_option): Move handling of -Werror=* to...
19725         (enable_warning_as_error): ...here.
19726         * opts.h (enable_warning_as_error): Declare.
19727         * c-decl.c (implicit_decl_warning): Unless
19728         -Wno-implicit-function-declaration is given, emit a pedwarn if
19729         -std=c99 or emit a warning if -Wimplicit-function-declaration.
19730         * c.opt (Wimplicit-function-declaration): Replace
19731         mesg_implicit_function_declaration with
19732         warn_implicit_function_declaration.
19733         * c-opts.c (c_common_handle_option):
19734         -Werror-implicit-function-declaration is exactly equal as
19735         -Werror=implicit-function-declaration.
19736         (set_Wimplicit): Replace mesg_implicit_function_declaration with
19737         warn_implicit_function_declaration.
19738         (c_common_post_options): -Wimplict-function-declaration is enabled
19739         by default by -std=c99, otherwise is disabled by default.
19740         * c-objc-common.c (c_objc_common_init): Remove flawed logic.
19741
19742 2007-02-15  Eric Botcazou  <ebotcazou@adacore.com>
19743
19744         * gimplify.c (gimplify_modify_expr): During gimplification, attach a
19745         DECL on the rhs to a DECL on the lhs for debug info purposes if the
19746         former is ignored but not the latter.
19747
19748 2007-02-15  Eric Botcazou  <ebotcazou@adacore.com>
19749
19750         * expr.c (expand_expr_real_1) <normal_inner_ref>: If a temporary
19751         is made and the reference doesn't use the alias set of its type,
19752         do not create the temporary using that type.
19753
19754 2007-02-15  Aldy Hernandez  <aldyh@redhat.com>
19755
19756         * jump.c: Remove prototypes for delete_computation and
19757         delete_prior_computation.
19758
19759 2007-02-15  Paolo Bonzini  <bonzini@gnu.org>
19760
19761         * jump.c (get_label_after): Delete.
19762         (get_label_before, delete_computation, delete_jump,
19763         delete_prior_computation, follow_jumps): Move...
19764         * reorg.c (delete_computation, delete_prior_computation): ... here...
19765         (get_label_before, delete_jump): ... making these static ...
19766         (follow_jumps): ... and simplifying this since it only runs after
19767         reload.
19768         * rtl.h (get_label_after, get_label_before, delete_jump,
19769         follow_jumps): Delete prototypes.
19770
19771 2007-02-15  Paolo Bonzini  <bonzini@gnu.org>
19772
19773         * caller-save.c (save_call_clobbered_regs): Do not process sibcalls.
19774
19775 2007-02-15  Nick Clifton  <nickc@redhat.com>
19776
19777         * varasm.c (default_asm_output_anchor): Prepend * to . symbol in
19778         order to prevent it from being munged by the target.
19779
19780 2007-02-15  Uros Bizjak  <ubizjak@gmail.com>
19781
19782         * config/i386/i386.md: Remove misleading comment.
19783
19784 2007-02-15  Alexandre Oliva  <aoliva@redhat.com>
19785
19786         * config/frv/frv.md (reload_incc, reload_outcc, reload_incc_uns,
19787         reload_outcc_uns, reload_incc_nz, reload_outcc_nz): Remove
19788         invalid patterns.
19789
19790 2007-02-15  Alexandre Oliva  <aoliva@redhat.com>
19791
19792         * tree-sra.c (instantiate_missing_elements): Canonicalize
19793         bit-field types.
19794         (sra_build_assignment): New.
19795         (generate_copy_inout, generate_element_copy,
19796         generate_element_zero, generate_one_element_init): Use it.
19797
19798 2007-02-15  Alexandre Oliva  <aoliva@redhat.com>
19799
19800         * tree-sra.c (instantiate_missing_elements): Canonicalize
19801         bit-field types.
19802         (sra_build_assignment): New.
19803         (generate_copy_inout, generate_element_copy,
19804         generate_element_zero, generate_one_element_init): Use it.
19805
19806 2007-02-15  Alexandre Oliva  <aoliva@redhat.com>
19807
19808         * dwarf2out.c (dwarf2out_finish): Accept namespaces as context of
19809         limbo die nodes.
19810
19811 2007-02-14  Joseph Myers  <joseph@codesourcery.com>
19812
19813         * emit-rtl.c (set_mem_attributes_minus_bitpos): Treat complex
19814         types as aggregates not scalars.
19815         * function.c (assign_stack_temp_for_type): Likewise.
19816
19817 2007-02-14  Roger Sayle  <roger@eyesopen.com>
19818             Zdenek Dvorak  <dvorakz@suse.cz>
19819
19820         * tree-dump.c (dump_switch_p_1): Require exact match of the option
19821         name.
19822
19823 2007-02-14  Zdenek Dvorak  <dvorakz@suse.cz>
19824
19825         * passes.c (next_pass_1): Clear the next field of the copied
19826         pass structure.
19827
19828 2007-02-14  Richard Henderson  <rth@redhat.com>
19829
19830         * tree-sra.c (early_sra): New.
19831         (decl_can_be_decomposed_p): Deny va_list if early_sra.
19832         (tree_sra_early, pass_sra_early): New.
19833         * tree-pass.h (pass_sra_early): Declare.
19834         * passes.c (init_optimization_passes): Use it.
19835
19836 2007-02-14  Richard Guenther  <rguenther@suse.de>
19837
19838         * flags.h (issue_strict_overflow_warning): Convert to a macro.
19839
19840 2007-02-14  Dorit Nuzman  <dorit@il.ibm.com>
19841
19842          PR tree-optimization/30771
19843         * tree-vect-analyze.c (vect_determine_vectorization_factor): Traverse
19844         also phi nodes.
19845         (vect_analyze_operations): Induction phis can now be marked as
19846         used_in_loop.
19847         (vect_mark_stmts_to_be_vectorized): No special treatment for phis.
19848         Update documentation accordingly.
19849
19850 2007-02-14  Nick Clifton  <nickc@redhat.com>
19851
19852         * builtin-types.def (DEF_FUNCTION_TYPE_x): Do not imply that at
19853         most 3 arguments are supported.
19854         (DEF_FUNCTION_TYPE_VAR_5): Fix typo in its description.
19855
19856 2007-02-13  Seongbae Park <seongbae.park@gmail.com>
19857
19858         * bitmap.c (bitmap_and, bitmap_and_compl, bitmap_xor):
19859         Ensure dst->current is valid.
19860
19861 2007-02-13  Paul Brook  <paul@codesourcery.com>
19862
19863         * config.gcc: Add arm*-*-uclinux-*eabi.
19864         * config/arm/uclinux-elf.h (TARGET_OS_CPP_BUILTINS): Define.
19865         (SUBTARGET_EXTRA_LINK_SPEC): Define.
19866         (STARTFILE_SPEC, ENDFILE_SPEC): Remove broken -shared handling.
19867         (LINK_GCC_C_SEQUENCE_SPEC): Undef.
19868         (LINK_SPEC): Define.
19869         (LIB_SPEC): Define.
19870         * config/arm/arm.c (arm_override_options): Use r9 as EABI PIC
19871         register.
19872         * config/arm/uclinux-eabi.h: New file.
19873         * config/arm/linux-eabi.h (WCHAR_TYPE): Remove.
19874         * config/arm/linux-gas.h (WCHAR_TYPE): Use unsigned long on AAPCS
19875         based targets.
19876
19877 2007-02-13  Ian Lance Taylor  <iant@google.com>
19878
19879         * common.opt: Add Wstrict-overflow and Wstrict-overflow=.
19880         * flags.h (warn_strict_overflow): Declare.
19881         (enum warn_strict_overflow_code): Define.
19882         (issue_strict_overflow_warning): New static inline function.
19883         * opts.c (warn_strict_overflow): New variable.
19884         (common_handle_option): Handle OPT_Wstrict_overflow and
19885         OPT_Wstrict_overflow_.
19886         * c-opts.c (c_common_handle_option): Set warn_strict_overflow for
19887         OPT_Wall.
19888         * fold-const.c: Include intl.h.
19889         (fold_deferring_overflow_warnings): New static variable.
19890         (fold_deferred_overflow_warning): New static variable.
19891         (fold_deferred_overflow_code): New static variable.
19892         (fold_defer_overflow_warnings): New function.
19893         (fold_undefer_overflow_warnings): New function.
19894         (fold_undefer_and_ignore_overflow_warnings): New function.
19895         (fold_deferring_overflow_warnings_p): New function.
19896         (fold_overflow_warning): New static function.
19897         (make_range): Add strict_overflow_p parameter.  Change all
19898         callers.
19899         (extract_muldiv, extract_muldiv_1): Likewise.
19900         (fold_unary) [ABS_EXPR]: Check ABS_EXPR before calling
19901         tree_expr_nonnegative_p.
19902         (fold_negate_expr): Call fold_overflow_warning.
19903         (fold_range_test): Likewise.
19904         (fold_comparison): Likewise.
19905         (fold_binary): Likewise.  Call tree_expr_nonnegative_warnv_p
19906         instead of tree_expr_nonnegative_p.
19907         (tree_expr_nonnegative_warnv_p): Rename from
19908         tree_expr_nonnegative_p, add strict_overflow_p parameter.
19909         (tree_expr_nonnegative_p): New function.
19910         (tree_expr_nonzero_warnv_p): Rename from tree_expr_nonzero_p, add
19911         strict_overflow_p parameter.
19912         (tree_expr_nonzero_p): New function.
19913         * passes.c (verify_interpass_invariants): New static function.
19914         (execute_one_pass): Call it.
19915         * tree-ssa-loop-niter.c (expand_simple_operations): Ignore fold
19916         warnings.
19917         (number_of_iterations_exit, loop_niter_by_eval): Likewise.
19918         (estimate_numbers_of_iterations): Likewise.
19919         (scev_probably_wraps_p): Likewise.
19920         * tree-ssa-ccp.c: Include "toplev.h".
19921         (evaluate_stmt): Defer fold overflow warnings until we know we are
19922         going to optimize.
19923         (struct fold_stmt_r_data): Add stmt field.
19924         (fold_stmt_r): Defer fold overflow warnings until we know we
19925         optimized.
19926         (fold_stmt): Initialize stmt field of fold_stmt_r_data.
19927         (fold_stmt_inplace): Likewise.
19928         * tree-cfgcleanup.c: Include "toplev.h" rather than "errors.h".
19929         (cleanup_control_expr_graph): Defer fold overflow warnings until
19930         we know we are going to optimize.
19931         * tree-cfg.c (fold_cond_expr_cond): Likewise.
19932         * tree-ssa-threadedge.c (simplify_control_stmt_condition):
19933         Likewise.
19934         * tree-vrp.c (vrp_expr_computes_nonnegative): Call
19935         tree_expr_nonnegative_warnv_p instead of tree_expr_nonnegative_p.
19936         * tree-ssa-loop-manip.c (create_iv): Likewise.
19937         * c-typeck.c (build_conditional_expr): Likewise.
19938         (build_binary_op): Likewise.
19939         * tree-vrp.c (vrp_expr_computes_nonzero): Call
19940         tree_expr_nonzero_warnv_p instead of tree_expr_nonzero_p.
19941         (extract_range_from_unary_expr): Likewise.
19942         * simplify-rtx.c (simplify_const_relational_operation): Warn when
19943         assuming that signed overflow does not occur.
19944         * c-common.c (pointer_int_sum): Ignore fold overflow warnings.
19945         * tree.h (tree_expr_nonnegative_warnv_p): Declare.
19946         (fold_defer_overflow_warnings): Declare.
19947         (fold_undefer_overflow_warnings): Declare.
19948         (fold_undefer_and_ignore_overflow_warnings): Declare.
19949         (fold_deferring_overflow_warnings_p): Declare.
19950         (tree_expr_nonzero_warnv_p): Declare.
19951         * doc/invoke.texi (Option Summary): Add -Wstrict-overflow to list
19952         of warning options.
19953         (Warning Options): Document -Wstrict-overflow.
19954         * Makefile.in (tree-ssa-threadedge.o): Depend on toplev.h.
19955         (tree-ssa-ccp.o): Likewise.
19956         (tree-cfgcleanup.o): Change errors.h dependency to toplev.h.
19957         (fold-const.o): Depend on intl.h.
19958
19959 2007-02-13  Ian Lance Taylor  <iant@google.com>
19960
19961         PR middle-end/30751
19962         * lower-subreg.c (resolve_simple_move): Decompose subregs in
19963         addresses.
19964
19965 2007-02-13  Stuart Hastings  <stuart@apple.com>
19966
19967         * config/i386/i386.md (fixuns_truncdfhi2): Require SSE2.
19968
19969 2007-02-13  Richard Henderson  <rth@redhat.com>
19970
19971         * config/alpha/alpha.c (alpha_stdarg_optimize_hook): Strip
19972         handled_component_p before looking for the indirect_ref.
19973
19974 2007-02-13  Richard Henderson  <rth@redhat.com>
19975
19976         * config/i386/i386.md (bswapsi_1): Rename from bswapsi2,
19977         remove flags clobber.
19978         (bswapsi2): New expander, emit code for !TARGET_BSWAP.
19979         (bswaphi_lowpart): New.
19980         (bswapdi2): Rename from bswapdi2_rex, remove flags clobber,
19981         remove TARGET_BSWAP test.  Delete expander of the same name.
19982
19983         * optabs.c (widen_bswap, expand_doubleword_bswap): New.
19984         (expand_unop): Use them.
19985
19986 2007-02-13  Uros Bizjak  <ubizjak@gmail.com>
19987
19988         * config/i386/i386.md (cmpdi_ccno_1_rex64, *cmpsi_ccno_1,
19989         *cmphi_ccno_1, *cmpqi_ccno_1, *movsi_xor, *movstricthi_xor,
19990         *movstrictqi_xor, *movdi_xor_rex64, *ashldi3_1_rex64,
19991         *ashldi3_cmp_rex64, *ashldi3_cconly_rex64, ashlsi3, *ashlsi3_1_zext,
19992         *ashlsi3_cmp, *ashlsi3_cconly, *ashlsi3_cmp_zext, *ashlhi3_1_lea,
19993         *ashlhi3_1, *ashlhi3_cmp, *ashlhi3_cconly, *ashlqi3_1_lea,
19994         *ashlqi3_1, *ashlqi3_cmp, *ashlqi3_cconly): Remove equivalent
19995         assembler dialect choice from asm templates.
19996
19997 2007-02-12  Richard Henderson  <rth@redhat.com>
19998
19999         * config/i386/i386.md (fixuns_trunc<SSEMODEF>si_1): New insn.
20000         (fixuns_trunc<SSEMODEF>si2): Use it.
20001         * config/i386/sse.md (vec_setv4sf_0): Export.
20002         * config/i386/i386.c (ix86_build_const_vector): Export.
20003         (ix86_split_convert_uns_si_sse): Rename from
20004         ix86_expand_convert_uns_si_sse and rewrite as a splitter.
20005         * config/i386/i386-protos.h: Update.
20006
20007 2007-02-13  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
20008
20009         PR c/29521
20010         * c-typeck.c (c_finish_return): Improve warning message.
20011
20012 2007-02-12  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
20013
20014         * alias.c (find_symbolic_term): Delete unused function.
20015
20016 2007-02-12  Uros Bizjak  <ubizjak@gmail.com>
20017
20018         * config/i386/i386.md (paritydi2, paritysi2): New expanders.
20019         (paritydi2_cmp, paritydi2_cmp): New insn and split patterns.
20020         (*parityhi2_cmp, *parityqi2_cmp): New insn patterns.
20021
20022 2007-02-12  Eric Botcazou  <ebotcazou@adacore.com>
20023
20024         * tree.h (DECL_IGNORED_P): Document further effect for FUNCTION_DECL.
20025         * cgraphunit.c (cgraph_expand_function): If DECL_IGNORED_P is set on
20026         the function, temporarily point the debug interface to the null one.
20027
20028 2007-02-12  Eric Botcazou  <ebotcazou@adacore.com>
20029
20030         * dwarf2out.c (round_up_to_align): New static function.
20031         (field_byte_offset): Use it to round the offset.
20032
20033 2007-02-12  Richard Henderson  <rth@redhat.com>
20034
20035         * config/alpha/alpha.md (bswapsi2, bswapdi2): New.
20036         (inswl_const): Export.
20037
20038 2007-02-12  Richard Henderson  <rth@redhat.com>
20039
20040         * calls.c (emit_library_call_value_1): If PROMOTE_MODE modifed the
20041         result mode of the libcall, convert back to outmode.
20042
20043 2007-02-12  Roger Sayle  <roger@eyesopen.com>
20044
20045         * config/i386/i386.md (*bswapdi2_rex): Renamed from bswapdi2.
20046         (bswapdi2): New define_expand to implement 32-bit implementation.
20047
20048 2007-02-12  Nick Clifton  <nickc@redhat.com>
20049
20050         * doc/invoke.texi (Overall Options): Document --help=.
20051         * gcc.c (target_help_flag): Rename to print_subprocess_flag.
20052         (cc1_options): Pass --help= on to cc1.
20053         (display_help): Add description of --help=.
20054         (process_command): Add code to handle --help=.  Allow translated
20055         --help and --target-help switches to be passed on to compiler
20056         sub-process.
20057         (main): Remove unused if statement.
20058         * opts.c (columns): Remove.
20059         (LEFT_COLUMN): Define.
20060         (wrap_help): Add columns argument.
20061         (print_filtered_help): Change parameters to be an include bitmask,
20062         an exclude bitmask, an any bitmask and the column width.  Move the
20063         code to display the params list here.  Add code to display the
20064         status of options rather than their descriptions if the quiet flag
20065         is not active.
20066         (print_specific_help): Change parameters to be an include bitmask,
20067         an exclude bitmask and an any bitmask.  Move code to look up the
20068         column width here.  Decide upon the title for an options listing.
20069         (common_handle_options): Add code to handle --help=.  Adapt code
20070         for --help and --target-help to use the revised form of the
20071         print_specific_help function.
20072         (print_help): Delete.
20073         (print_param_help): Delete.
20074         (print_switch): Delete.
20075         * opts.h (cl_lang_count): Add prototype.
20076         (CL_PARAMS, CL_WARNING, CL_OPTIMIZATION, CL_MIN_OPTION_CLASS,
20077         CL_MAX_OPTION_CLASS): New defines.
20078         * optc-gen.awk: Add construction of cl_lang_count.
20079         * c.opt: Add Warning attribute to warning options and Optimization
20080         attribute to optimization options.
20081         * common.opt: Likewise.
20082         Add --help=.
20083         Add -fhelp and -ftarget-help as aliases for the transformed --help
20084         and --target-help options.
20085         * opt-functions.awk: Add code to handle Warning and Optimization
20086         attributes.
20087
20088 2007-02-12  Richard Henderson  <rth@redhat.com>
20089
20090         * config/alpha/constraints.md: New file.
20091         * config/alpha/alpha.c: Include tm-constrs.h.
20092         (alpha_const_ok_for_letter_p, alpha_const_double_ok_for_letter_p,
20093         alpha_extra_constraint): Remove.
20094         (alpha_emit_conditional_branch): Use satisfies_constraint_*.
20095         * config/alpha/alpha-protos.h: Update.
20096         * config/alpha/alpha.h (REG_CLASS_FROM_LETTER): Remove.
20097         (CONST_OK_FOR_LETTER_P, CONST_DOUBLE_OK_FOR_LETTER_P): Remove.
20098         (EXTRA_CONSTRAINT): Remove.
20099         * config/alpha/alpha.md: Include constraints.md.
20100         (adddi splitter): Use satisfies_constraint_*.
20101         * config/alpha/predicates.md (add_operand): Likewise.
20102         (sext_add_operand, addition_operation): Likewise.
20103
20104 2007-02-12  Dorit Nuzman  <dorit@il.ibm.com>
20105
20106         PR tree-optimization/29145
20107         * tree-data-ref.c (base_addr_differ_p): Make us more conservative
20108         in our handling of restrict qualified pointers.
20109
20110 2007-02-12  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
20111
20112         PR middle-end/7651
20113         * doc/invoke.texi (Wunused-value): Update description.
20114         (Wextra): Delete item.
20115         * opts.c (set_Wextra): Don't use the value of Wextra to set the
20116         value of Wunused-value.
20117         * c-typeck.c (c_process_expr_stmt): Don't check extra_warnings.
20118         (c_finish_stmt_expr): Don't check extra_warnings.
20119         (emit_side_effect_warnings): The caller is responsible to check
20120         warn_unused_value.
20121
20122 2007-02-11  Roger Sayle  <roger@eyesopen.com>
20123             Matt Thomas  <matt@3am-software.com>
20124
20125         * simplify-rtx.c (simplify_relational_operation_1): Correct typo.
20126
20127 2007-02-11  Roger Sayle  <roger@eyesopen.com>
20128
20129         * simplify-rtx.c (simplify_relational_operation_1): Optimize
20130         comparisons of POPCOUNT against zero.
20131         (simplify_const_relational_operation): Likewise.
20132
20133 2007-02-11  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
20134
20135         * doc/invoke.texi (Wextra): Delete outdated paragraph.
20136
20137 2007-02-11  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
20138
20139         * dwarf2out.c (root_type): Delete unused function.
20140
20141 2007-02-11  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
20142
20143         * genattrtab.c (contained_in_p): Delete unused function.
20144         (write_expr_attr_cache): Likewise.
20145
20146 2007-02-11  Jan Hubicka  <jh@suse.cz>
20147
20148         * ipa-inline.c (cgraph_edge_badness): Add "else" missing in the
20149         previous patch.
20150
20151 2007-02-11  Steven Bosscher  <steven@gcc.gnu.org>
20152
20153         * fwprop.c (try_fwprop_subst): Use set_unique_reg_note
20154         to add the REG_EQ* note.
20155         * see.c (see_merge_one_use_extension): Likewise.
20156         * local-alloc.c (update_equiv_regs): Likewise.  Also don't
20157         turn REG_EQUAL notes into REG_EQUIV notes if the target
20158         register may have more than one set.
20159         * function.c (assign_parm_setup_reg): Use set_unique_reg_note.
20160         * gcse.c (try_replace_reg): Likewise.
20161         * alias.c (init_alias_analysis): Use find_reg_equal_equiv_note.
20162         * calls.c (fixup_tail_calls): Likewise.  Abort if there is
20163         more than one REG_EQUIV note.
20164         * reload1.c (gen_reload): Use set_unique_reg_note.
20165
20166 2007-02-11  Uros Bizjak  <ubizjak@gmail.com>
20167
20168         * config/i386/i386.c (TARGET_VECTORIZE_BUILTIN_CONVERSION): Define.
20169         (ix86_builtin_conversion): New function.
20170
20171 2007-02-06  Mark Mitchell  <mark@codesourcery.com>
20172
20173         PR target/29487
20174         * tree.h (DECL_REPLACEABLE_P): New macro.
20175         * except.c (set_nothrow_function_flags): Likewise.
20176
20177 2007-02-11  Tehila Meyzels  <tehila@il.ibm.com>
20178             Ira Rosen  <irar@il.ibm.com>
20179             Dorit Nuzman  <dorit@il.ibm.com>
20180
20181         * doc/tm.texi (TARGET_VECTORIZE_BUILTIN_CONVERSION): New target hook.
20182         * targhooks.c (default_builtin_vectorized_conversion): New.
20183         * targhooks.h (default_builtin_vectorized_function): New declaration.
20184         * target.h (struct vectorize): Add builtin_conversion field.
20185         * tree-vectorizer.h (type_conversion_vec_info_type): New enum
20186         stmt_vec_info_type value.
20187         (vectorizable_conversion): New declaration.
20188         * tree-vect-analyze.c (vect_analyze_operations): Add
20189         vectorizable_conversion call.
20190         * target-def.h (TARGET_VECTORIZE_BUILTIN_CONVERSION): New.
20191         * tree-vect-transform.c (vectorizable_conversion): New function.
20192         (vect_transform_stmt): Add case for type_conversion_vec_info_type.
20193         * tree-vect-generic.c (expand_vector_operations_1): Consider correct
20194         mode.
20195         * config/rs6000/rs6000.c (rs6000_builtin_conversion): New.
20196         (TARGET_VECTORIZE_BUILTIN_CONVERSION): Defined.
20197         (rs6000_expand_builtin): Add handling a case of ALTIVEC_BUILTIN_VCFUX
20198         or ALTIVEC_BUILTIN_VCFSX.
20199
20200 2007-02-10  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
20201
20202         PR target/30634
20203         * pa.md (movdf): For 64-bit target, fail if operand 1 is a non-zero
20204         CONST_DOUBLE and operand 0 is a hard register.
20205         (movdi): For 64-bit target, remove code to force CONST_DOUBLE to
20206         memory.  Fail if operand 1 is a non-zero CONST_INT and operand 0
20207         is a hard floating-point register.
20208
20209 2007-02-10  Richard Henderson  <rth@redhat.com>
20210             Jakub Jelinek  <jakub@redhat.com>
20211             Alexandre Oliva  <aoliva@redhat.com>
20212
20213         * Makefile.in (libgcc-support, libgcc.mvars): Add emutls.c.
20214         * builtin-types.def (BT_WORD): Make unsigned.
20215         (BT_FN_VOID_PTR_WORD_WORD_PTR): New.
20216         * builtins.def (BUILT_IN_EMUTLS_GET_ADDRESS): New.
20217         (BUILT_IN_EMUTLS_REGISTER_COMMON): New.
20218         * c-decl.c (grokdeclarator): Don't error if !have_tls.
20219         * c-parser.c (c_parser_omp_threadprivate): Likewise.
20220         * dwarf2out.c (loc_descriptor_from_tree_1): Don't do anything for
20221         emulated tls.
20222         * expr.c (emutls_var_address): New.
20223         (expand_expr_real_1): Expand emulated tls.
20224         (expand_expr_addr_expr_1): Likewise.
20225         * libgcc-std.ver: Add __emutls_get_address, __emutls_register_common.
20226         * output.h (emutls_finish): Declare.
20227         * toplev.c (compile_file): Call it.
20228         * tree-ssa-address.c (gen_addr_rtx): Check for const-ness of the
20229         address before wrapping in CONST.
20230         * varasm.c (emutls_htab, emutls_object_type): New.
20231         (EMUTLS_VAR_PREFIX, EMUTLS_TMPL_PREFIX): New.
20232         (get_emutls_object_name, get_emutls_object_type): New.
20233         (get_emutls_init_templ_addr, emutls_decl): New.
20234         (emutls_common_1, emutls_finish): New.
20235         (assemble_variable): When emulating tls, swap decls; generate
20236         constructor for the emutls objects.
20237         (do_assemble_alias): When emulating tls, swap decl and target name.
20238         (default_encode_section_info): Don't add SYMBOL_FLAG_TLS_SHIFT
20239         for emulated tls.
20240         * varpool.c (decide_is_variable_needed): Look at force_output.
20241         Recurse for emulated tls.
20242         (cgraph_varpool_remove_unreferenced_decls): Remove checks redundant
20243         with decide_is_variable_needed.
20244         * emutls.c: New file.
20245         * config/sparc/sol2.h (ASM_DECLARE_OBJECT_NAME): Only emit
20246         tls_object for real tls.
20247
20248 2007-02-10  Kaz Kojima  <kkojima@gcc.gnu.org>
20249
20250         PR rtl-optimization/29599
20251         * reload1.c (eliminate_regs_in_insn): Take the destination
20252         mode into account when computing the offset.
20253
20254 2007-02-09  Stuart Hastings  <stuart@apple.com>
20255             Richard Henderson  <rth@redhat.com>
20256
20257         * config/i386/i386.h (TARGET_KEEPS_VECTOR_ALIGNED_STACK): New.
20258         * config/i386/darwin.h: (TARGET_KEEPS_VECTOR_ALIGNED_STACK): New.
20259         * config/i386/i386.md (fixuns_trunc<mode>si2, fixuns_truncsfhi2,
20260         fixuns_truncdfhi2): New.
20261         (fix_truncsfdi_sse): Call ix86_expand_convert_sign_didf_sse.
20262         (floatunsdidf2): Call ix86_expand_convert_uns_didf_sse.
20263         (floatunssisf2): Add call to ix86_expand_convert_uns_sisf_sse.
20264         (floatunssidf2): Allow nonimmediate source.
20265         * config/i386/sse.md (movdi_to_sse): New.
20266         (vec_concatv2di): Drop '*'.
20267         * config/i386/i386-protos.h (ix86_expand_convert_uns_si_sse,
20268         ix86_expand_convert_uns_didf_sse, ix86_expand_convert_uns_sidf_sse,
20269         ix86_expand_convert_uns_sisf_sse, ix86_expand_convert_sign_didf_sse):
20270         New.
20271         * config/i386/i386.c (ix86_expand_convert_uns_si_sse,
20272         ix86_expand_convert_uns_didf_sse, ix86_expand_convert_uns_sidf_sse,
20273         ix86_expand_convert_uns_sisf_sse, ix86_expand_convert_sign_didf_sse,
20274         ix86_build_const_vector, ix86_expand_vector_init_one_nonzero): New.
20275         (ix86_build_signbit_mask): Fix decl of v, refactor to call
20276         ix86_build_const_vector.
20277         (x86_emit_floatuns): Rewrite.
20278
20279 2007-02-10  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
20280
20281         * genautomata.c (longest_path_length): Delete unused function.
20282         (struct state): Delete unused longest_path_length.
20283         (UNDEFINED_LONGEST_PATH_LENGTH): Delete unused macro.
20284         (get_free_state): Delete unused.
20285
20286 2007-02-09  Jan Hubicka  <jh@suse.cz>
20287
20288         * params.def (PARAM_INLINE_UNIT_GROWTH): Set to 30.
20289         * doc/invoke.texi (inline-unit-growth): Update default value.
20290
20291         * Makefile.in (passes.o, ipa-inline.o): Add dependencies.
20292         * cgraphbuild.c (build_cgraph_edges): Compute frequencies.
20293         (rebuild_cgraph_edges): Likewise.
20294         * cgraph.c (cgraph_set_call_stmt): Add new argument frequency.
20295         (dump_cgraph_node): Dump frequencies.
20296         (cgraph_clone_edge): Add frequency scales.
20297         (cgraph_clone_node): Add freuqnecy.
20298         * cgraph.h (cgraph_edge): Add freuqnecy argument.
20299         (CGRAPH_FREQ_BASE, CGRAPH_FREQ_MAX): New constants.
20300         (cgraph_create_edge, cgraph_clone_edge, cgraph_clone_node): Update.
20301         * tree-pass.h (TODO_rebuild_frequencies): New constant.
20302         * cgraphunit.c (verify_cgraph_node): Verify frequencies.
20303         (cgraph_copy_node_for_versioning): Update call of cgraph_clone_edge.
20304         (save_inline_function_body): Likewise.
20305         * ipa-inline.c: inluce rtl.h
20306         (cgraph_clone_inlined_nods): Update call of cgraph_clone_node.
20307         (cgraph_edge_badness): Use frequencies.
20308         (cgraph_decide_recursive_inlining): Update clonning.
20309         (cgraph_decide_inlining_of_small_function): Dump frequency.
20310         * predict.c (estimate_bb_frequencies): Export.
20311         * predict.h (estimate_bb_frequencies): Declare.
20312         * tree-inline.c (copy_bb): Watch overflows.
20313         (expand_call_inline): Update call of cgraph_create_edge.
20314         (optimize_inline_calls): Use TODO flags to update frequnecies.
20315         * passes.h: Include predict.h
20316         (init_optimization_passes): Move profile ahead.
20317         (execute_function_todo): Handle TODO_rebuild_frequencies.
20318
20319 2007-02-09  Roger Sayle  <roger@eyesopen.com>
20320
20321         * config/alpha/alpha.c (emit_insxl): Force the first operand of
20322         the insbl or inswl pattern into a register.
20323
20324 2007-02-09  Roger Sayle  <roger@eyesopen.com>
20325
20326         * config/ia64/ia64.md (bswapdi2): New define_insn.
20327
20328 2007-02-09  Richard Henderson  <rth@redhat.com>
20329
20330         * config/i386/constraints.md (Ym): New constraint.
20331         * config/i386/i386.md (movsi_1): Change Y2 to Yi constraints.
20332         (movdi_1_rex64): Split sse and xmm general register moves from
20333         memory move alternatives.  Use conditional register constraints.
20334         (movsf_1, movdf_integer): Likewise.
20335         (zero_extendsidi2_32, zero_extendsidi2_rex64): Likewise.
20336         (movdf_integer_rex64): New.
20337         (pushsf_rex64): Fix output constraints.
20338         * config/i386/sse.md (sse2_loadld): Split rm alternative, use Yi.
20339         (sse2_stored): Likewise.
20340         (sse2_storeq_rex64): New.
20341         * config/i386/i386.c (x86_inter_unit_moves): Enable for not
20342         amd and not generic.
20343         (ix86_secondary_memory_needed): Don't bypass TARGET_INTER_UNIT_MOVES
20344         for optimize_size.  Remove SF/DFmode hack.
20345
20346 2007-02-09  Dwarakanath Rajagopal  <dwarak.rajagopal@amd.com>
20347
20348         * config/i386/driver-i386.c: Turn on -mtune=native for AMDFAM10.
20349         (bit_SSE4a): New.
20350
20351 2007-02-09  Nathan Sidwell  <nathan@codesourcery.com>
20352             Richard Sandiford  <richard@codesourcery.com>
20353
20354         * config.gcc (m68010-*-netbsdelf*, m68k*-*-netbsdelf*)
20355         (m68k*-*-openbsd*, m68k-*-linux*): Set default_cf_cpu.
20356         (m68k-*-aout*, m68k-*-coff*, m68k-*-uclinux*, m68k-*-rtems*): Add
20357         m68k/t-mlib to tmake_file.
20358         (m68020-*-elf*, m68k-*-elf*): Likewise.  Add t-m68kbare as well.
20359         (m68k*-*-*): Use --with-arch to pick a default for --with-cpu.
20360         (m680[012]0-*-*, m68k*-*-*): Add support for --with-arch.
20361         Allow it to be cf or m68k.  Set m68k_arch_family.  If that
20362         variable is not empty, add t-$m68k_arch_family to tmake_file.
20363         Add t-mlibs to tmake_file.
20364         * doc/install.texi: Document --with-arch=m68k and --with-arch=cf.
20365         * config/m68k/t-cf: New file.
20366         * config/m68k/t-m68k: Likewise.
20367         * config/m68k/t-mlibs: Likewise.
20368         * config/m68k/t-m68kbare (MULTILIB_OPTIONS, MULTILIB_DIRNAMES)
20369         (MULTILIB_MATCHES, MULTILIB_EXCEPTIONS): Delete.
20370         (M68K_MLIB_DIRNAMES, M68K_MLIB_OPTIONS): Define.
20371         * config/m68k/t-m68kelf (MULTILIB_OPTIONS, MULTILIB_DIRNAMES)
20372         (MULTILIB_MATCHES, MULTILIB_EXCEPTIONS, LIBGCC, INSTALL_LIBGCC):
20373         Delete.
20374         * config/m68k/t-openbsd (MULTILIB_OPTIONS, LIBGCC): Delete.
20375         (INSTALL_LIBGCC): Delete.
20376         (M68K_MLIB_DIRNAMES, M68K_MLIB_OPTIONS): Define.
20377         * config/m68k/t-rtems (MULTILIB_OPTIONS, MULTILIB_DIRNAMES)
20378         (MULTILIB_MATCHES, MULTILIB_EXCEPTIONS): Delete.
20379         (M68K_MLIB_CPU): Define.
20380         * config/m68k/t-uclinux (MULTILIB_OPTIONS, MULTILIB_DIRNAMES)
20381         (MULTILIB_MATCHES, MULTILIB_EXCEPTIONS): Delete.
20382         (M68K_MLIB_CPU, M68K_MLIB_OPTIONS, M68K_MLIB_DIRNAMES): Define.
20383
20384 2007-02-09  Zdenek Dvorak  <dvorakz@suse.cz>
20385             Richard Guenther  <rguenther@suse.de>
20386
20387         PR middle-end/23361
20388         * fold-const.c (fold_comparison): Handle obfuscated comparisons
20389         against INT_MIN/INT_MAX.
20390         * tree-ssa-loop-ivcanon.c (remove_empty_loop): Print to dump
20391         file if a loop is removed.
20392
20393 2007-02-09  Joseph Myers  <joseph@codesourcery.com>
20394
20395         * calls.c (store_one_arg): Pass correct alignment to
20396         emit_push_insn for non-BLKmode values.
20397         * expr.c (emit_push_insn): If STRICT_ALIGNMENT, copy to an
20398         unaligned stack slot via a suitably aligned slot.
20399
20400 2007-02-08  DJ Delorie  <dj@redhat.com>
20401
20402         * config/m32c/m32c.c (m32c_unpend_compare): Add default to silence
20403         warnings.
20404         (legal_subregs): Use unsigned char, make const.
20405         (m32c_illegal_subreg_p): Use ARRAY_SIZE.  Delete unused variables.
20406
20407 2007-02-08  Paul Brook  <paul@codesourcery.com>
20408
20409         * config/arm/lib1funcs.asm (RETLDM): Pop directly into PC when no
20410         special interworking needed.
20411
20412 2007-02-08  Harsha Jagasia  <harsha.jagasia@amd.com>
20413
20414         * config/i386/xmmintrin.h: Make inclusion of emmintrin.h
20415         conditional to __SSE2__.
20416         (Entries below should have been added to first ChangeLog
20417         entry for amdfam10 dated 2007-02-05)
20418         * config/i386/emmintrin.h: Generate #error if __SSE2__ is not
20419         defined.
20420         * config/i386/pmmintrin.h: Generate #error if __SSE3__ is not
20421         defined.
20422         * config/i386/tmmintrin.h: Generate #error if __SSSE3__ is not
20423         defined.
20424
20425 2007-02-08  DJ Delorie  <dj@redhat.com>
20426
20427         * config/m32c/m32c-protos.h (m32c_illegal_subreg_p): New.
20428         * config/m32c/m32c.c (legal_subregs): New.
20429         (m32c_illegal_subreg_p): New.
20430         * config/m32c/predicates.md (m32c_any_operand): Use it to reject
20431         unsupported subregs of hard regs.
20432
20433 2007-02-08  Jan Hubicka  <jh@suse.cz>
20434
20435         * tree-cfg.c (bsi_replace): Shortcut when replacing the statement with
20436         the same one; always update histograms.
20437
20438 2007-02-08  Diego Novillo  <dnovillo@redhat.com>
20439
20440         * passes.c (init_optimization_passes): Tidy comment.
20441
20442 2007-02-08  Roger Sayle  <roger@eyesopen.com>
20443
20444         * simplify-rtx.c (simplify_unary_operation_1) <POPCOUNT>: We can
20445         strip zero_extend, bswap and rotates from POCOUNT's argument.
20446         <PARITY>: Likewise, we can strip not, bswap, sign_extend,
20447         zero_extend and rotates from PARITY's argument.
20448         <BSWAP>: A byte-swap followed by a byte-swap is an identity.
20449         (simplify_const_unary_operation) <BSWAP>: Evaluate the byte-swap
20450         of an integer constant at compile-time.
20451
20452 2007-02-08  Diego Novillo  <dnovillo@redhat.com>
20453
20454         PR 30562
20455         * tree-flow.h (struct var_ann_d): Remove field 'is_used'.
20456         Update all users.
20457         * tree-ssa-alias.c (compute_is_aliased): Remove.  Update all
20458         users.
20459         (init_alias_info):
20460         * tree-ssa-live.c (remove_unused_locals): Do not remove
20461         TREE_ADDRESSABLE variables.
20462         * tree-ssa-structalias.c (compute_points_to_sets): Tidy.
20463         * tree-ssa-operands.c (add_virtual_operand): Remove argument
20464         FOR_CLOBBER.  Update all users.
20465         If VAR has an associated alias set, add a virtual operand for
20466         it if no alias is found to conflict with the memory reference.
20467
20468 2007-02-07  Jan Hubicka  <jh@suse.cz>
20469             Robert Kidd <rkidd@crhc.uiuc.edu>
20470
20471         * value-prof.c (visit_hist, free_hist): Return 1 instead of 0.
20472
20473 2007-02-07  Ian Lance Taylor  <iant@google.com>
20474
20475         * lower-subreg.c (simple_move): Reject PARTIAL_INT modes.
20476
20477 2007-02-07  Roger Sayle  <roger@eyesopen.com>
20478
20479         * config/rs6000/rs6000.md (ctz<mode>2, ffs<mode>2, popcount<mode>2,
20480         parity<mode>2, smulsi3_highpart, abstf2_internal, allocate_stack,
20481         tablejumpdi, movsi_to_cr_one): Remove constraints from
20482         define_expand's match_operands.
20483
20484 2007-02-07  Roger Sayle  <roger@eyesopen.com>
20485
20486         * global.c (compute_regsets): Move declatation of "i" inside of
20487         #ifdef ELIMINABLE_REGS to avoid unused variable bootstrap failure.
20488
20489 2007-02-07  Jakub Jelinek  <jakub@redhat.com>
20490
20491         PR c++/30703
20492         * gimplify.c (gimplify_scan_omp_clauses): Remove special casing
20493         of INDIRECT_REF <RESULT_DECL>.
20494
20495         * config/i386/i386.c (override_options): Set PTA_SSSE3 for core2.
20496
20497 2007-02-06  J"orn Rennecke  <joern.rennecke@arc.com>
20498             Kaz Kojima  <kkojima@gcc.gnu.org>
20499
20500         PR target/29746
20501         * config/sh/sh.c (expand_cbranchdi4): Use scratch register
20502         properly.
20503         (sh_initialize_trampoline): Add parentheses to avoid a warning.
20504
20505 2007-02-06  Zdenek Dvorak <dvorakz@suse.cz>
20506
20507         * doc/loop.texi: Document possibility not to perform disambiguation
20508         of loops with multiple latches.
20509         * cfgloopmanip.c (alp_enum_p): Removed.
20510         (add_loop): Handle subloops.  Use get_loop_body_with_size.
20511         (create_preheader): Do not allow ENTRY_BLOCK_PTR to be preheader.
20512         * cfghooks.c (redirect_edge_and_branch_force): Set dominator for
20513         the new forwarder block.
20514         (make_forwarder_block): Only call new_bb_cbk if it is not NULL.
20515         Handle the case latch is NULL.
20516         * tree-ssa-dom.c (tree_ssa_dominator_optimize): Avoid cfg
20517         modifications when marking loop exits.
20518         * ifcvt.c (if_convert): Ditto.  Mark loop exits even if cfg cannot
20519         be modified.
20520         * loop-init.c (loop_optimizer_init): Do not modify cfg.  Call
20521         disambiguate_loops_with_multiple_latches.
20522         * tree-cfgcleanup.c (cleanup_tree_cfg_loop): Calculate dominators
20523         before fix_loop_structure.
20524         * cfgloop.c: Include pointer-set.h and output.h.
20525         (canonicalize_loop_headers, HEADER_BLOCK, LATCH_EDGE,
20526         update_latch_info, mfb_keep_just, mfb_keep_nonlatch): Removed.
20527         (get_loop_latch_edges, find_subloop_latch_edge_by_profile,
20528         find_subloop_latch_edge_by_ivs, find_subloop_latch_edge,
20529         mfb_redirect_edges_in_set, form_subloop, merge_latch_edges,
20530         disambiguate_multiple_latches, get_loop_body_with_size,
20531         disambiguate_loops_with_multiple_latches): New functions.
20532         (flow_loop_dump): Dump multiple latch edges.
20533         (flow_loop_nodes_find): Handle loops with multiple latches.
20534         (flow_loops_find): Ditto. Do not call canonicalize_loop_headers.
20535         (glb_enum_p): Modified.
20536         (get_loop_body): Use get_loop_body_with_size.
20537         * cfgloop.h (LOOPS_HAVE_RECORDED_EXITS): New flag.
20538         (AVOID_CFG_MODIFICATIONS): New constant.
20539         (disambiguate_loops_with_multiple_latches, add_loop,
20540         get_loop_body_with_size): Declare.
20541         * Makefile.in (cfgloop.o): Add pointer-set.h and output.h.
20542
20543 2007-02-06  Seongbae Park <seongbae.park@gmail.com>
20544
20545         PR inline-asm/28686
20546         * global.c (compute_regsets): New function.
20547         (global_alloc): Refactored ELIMINABLE_REGSET
20548         and NO_GLOBAL_ALLOC_REGS computation out.
20549         (rest_of_handle_global_alloc): Call compute_regsets()
20550         for non-optimizing case.
20551
20552 2007-02-06  Richard Henderson  <rth@redhat.com>
20553
20554         * config/i386/constraints.md (Y2): Rename from Y.
20555         (Yi): New constraint.
20556         * config/i386/i386.md (movsi_1, movdi_2, pushdf_nointeger,
20557         pushdf_integer, movdf_nointeger, movdf_integer, zero_extendsidi2_32,
20558         zero_extendsidi2_rex64, truncxfdf2_mixed): Change Y constraints to Y2.
20559         (extendsfdf2_mixed, extendsfdf2_sse, truncdfsf_fast_mixed,
20560         truncdfsf_fast_sse, truncdfsf_mixed, fix_truncdfdi_sse,
20561         fix_truncdfsi_sse, floatsidf2_mixed, floatsidf2_sse,
20562         floatdidf2_mixed, floatdidf2_sse, absnegdf2_mixed,
20563         absnegdf2_sse, sse_setccdf, fop_df_comm_mixed, fop_df_comm_sse,
20564         fop_df_1_mixed, fop_df_1_sse): Change Y constraints to x.
20565         * config/i386/mmx.md (mov<MMXMODEI>_internal_rex64,
20566         mov<MMXMODEI>_internal, movv2sf_internal_rex64, movv2sf_internal,
20567         vec_extractv2si_1): Change Y constraints to Y2.
20568         * config/i386/sse.md (vec_setv4sf_0, vec_concatv2df, vec_dupv4si,
20569         vec_dupv2di, sse2_concatv2si, vec_concatv4si_1, vec_concatv2di):
20570         Change Y constraints to Y2.
20571         (sse2_loadld): Change Y constraints to x.
20572
20573 2007-02-06  Roger Sayle  <roger@eyesopen.com>
20574
20575         * config/rs6000/rs6000.md (popcount<mode>2): Rewrite.
20576         (parity<mode>2): New define_expand using rs6000_emit_parity.
20577         * config/rs6000/rs6000.c (rs6000_emit_popcount,
20578         rs6000_emit_parity): New functions.
20579         * config/rs6000/rs6000-protos.h (rs6000_emit_popcount,
20580         rs6000_emit_parity): Prototype here.
20581
20582 2007-02-06  Ian Lance Taylor  <iant@google.com>
20583
20584         * lower-subreg.c (simple_move_operand): Reject CONST.
20585         (resolve_clobber): Call validate_change rather than directly
20586         assigning to XEXP (pat, 0).
20587
20588 2006-02-06  Paolo Bonzini  <bonzini@gnu.org>
20589
20590         * Makefile.in (tree-ssa-loop-ivopts.o): Add pointer-set.h dependency.
20591         (tree-ssa-reassoc.o): Add pointer-set.h dependency.
20592         (tree-cfg.o): Remove hashtab.h dependency.
20593
20594         * tree-ssa-loop-ivopts.c: Include pointer-set.h.
20595         (struct ivopts_data): Change niters to pointer_map_t.
20596         (struct nfe_cache_elt, nfe_hash, nfe_eq): Delete.
20597         (niter_for_exit): Create pointer_map on demand.  Change for
20598         pointer_map API.
20599         (tree_ssa_iv_optimize_init): Initialize data->niters to NULL.
20600         (free_loop_data): Destroy data->niters if created and reset field.
20601         (tree_ssa_iv_optimize_finalize): Don't delete data->niters here.
20602         (tree_ssa_iv_optimize_loop): Check for presence of stale data.
20603
20604         * tree-ssa-reassoc.c: Include pointer-set.h.
20605         (bb_rank): Change to long *.
20606         (operand_rank): Change to pointer_map_t.
20607         (find_operand_rank): Return long, -1 if not found.  Declare as inline.
20608         (insert_operand_rank): Accept long.
20609         (operand_entry_hash, operand_entry_eq): Remove.
20610         (get_rank): Return long.  Adjust for changes above.
20611         (init_reassoc): Change rank type to long.  Adjust creation of bb_rank
20612         and operand_rank.
20613         (fini_reassoc): Delete operand_rank with pointer_map_destroy.
20614
20615         * tree-ssa-structalias.c (vi_for_tree): Change to pointer_map.
20616         (struct tree_vi, tree_vi_t, tree_vi_hash, tree_vi_eq): Delete.
20617         (insert_vi_for_tree): Rewrite for pointer_map API.  Assert argument
20618         is not NULL.
20619         (lookup_vi_for_tree): Rewrite for pointer_map API.  Return varinfo_t
20620         directly since it cannot be NULL.
20621         (get_vi_for_tree): Rewrite for pointer_map API.
20622         (find_what_p_points_to): Adjust for change to lookup_vi_for_tree.
20623         (init_alias_vars): Create vi_for_tree as pointer_map.
20624         (delete_points_to_sets): Delete vi_for_tree using pointer_map_destroy.
20625
20626         * tree-cfg.c: Don't include hashtab.h.
20627         (edge_to_cases): Declare as pointer_map.
20628         (struct edge_to_cases_elt, edge_to_cases_hash, edge_to_cases_eq):
20629         Delete.
20630         (edge_to_cases_cleanup): Rewrite as pointer_map_traverse callback.
20631         (start_recording_case_labels): Create edge_to_cases as pointer_map.
20632         (end_recoding_case_labels): Cleanup edge_to_cases manually before
20633         destroying it.
20634         (record_switch_edge): Delete.
20635         (get_cases_for_edge): Adjust for pointer_map API, inline
20636         record_switch_edge (rewritten for new API), remove goto.
20637
20638 2006-02-06  Paolo Bonzini  <bonzini@gnu.org>
20639
20640         * Makefile.in (tree-nested.o): Add pointer-set.h dependency.
20641         * tree-nested.c: Include pointer-set.h.
20642         (var_map_elt, var_map_eq, var_map_hash): Delete.
20643         (struct nesting_info): Remove GTY marker.  Change the two htab_t's
20644         to pointer_map_t's.
20645         (nesting_info_bitmap_obstack): New.
20646         (lookup_field_for_decl): Adjust for pointer_map API.
20647         (lookup_tramp_for_decl): Adjust for pointer_map API.
20648         (get_nonlocal_debug_decl): Adjust for pointer_map API.
20649         (get_local_debug_decl): Adjust for pointer_map API.
20650         (convert_nl_goto_reference): Adjust for pointer_map API.
20651         (convert_nl_goto_receiver): Adjust for pointer_map API.
20652         (create_nesting_tree): Create outside GGC space.  Create bitmap on
20653         the new obstack.  Create field_map and var_map as pointer_maps.
20654         (free_nesting_tree): Adjust for changes to create_nesting_tree.
20655         (root): Delete.
20656         (lower_nested_functions): Move root here, no need to NULL it.
20657         Initialize and release the obstack.
20658
20659 2007-02-06  Paolo Bonzini  <bonzini@gnu.org>
20660
20661         * tree.c (tree_int_map_hash, tree_int_map_eq, tree_int_map_marked_p):
20662         Remove prototypes and make them non-static.
20663         (struct tree_int_map): Remove.
20664         * tree.h (struct tree_int_map): Move here, turning TO into an
20665         unsigned int.
20666         (tree_int_map_hash, tree_int_map_eq, tree_int_map_marked_p): Declare.
20667
20668         * tree.h (TREE_COMPLEXITY): Remove.
20669         (struct tree_exp): Remove complexity field.
20670         * tree.c (build1_stat): Don't set it.
20671
20672 2007-02-06  Dorit Nuzman  <dorit@il.ibm.com>
20673             Victor Kaplansky  <victork@il.ibm.com>
20674
20675         * tree-vectorizer.c (vect_is_simple_use): Support induction.
20676         (vect_is_simple_reduction): Support reduction with induction as
20677         one of the operands.
20678         (vect_is_simple_iv_evolution): Fix formatting.
20679         * tree-vect-analyze.c (vect_mark_stmts_to_be_vectorized): Fix
20680         formatting.  Don't mark induction phis for vectorization.
20681         (vect_analyze_scalar_cycles): Analyze all inductions, then reductions.
20682         * tree-vect-transform.c (get_initial_def_for_induction): New function.
20683         (vect_get_vec_def_for_operand): Support induction.
20684         (vect_get_vec_def_for_stmt_copy): Fix formatting and add check for
20685         induction case.
20686         (vectorizable_reduction): Support reduction with induction as one of
20687         the operands.
20688         (vectorizable_type_demotion): Use def-type of stmt argument rather
20689         than dummy def-type.
20690
20691         * tree-ssa-loop.c (gate_scev_const_prop): Return the value of
20692         flag_tree_scev_cprop.
20693         * common.opt (tree-scev-cprop): New flag.
20694
20695         * tree-vect-transform.c (vect_create_destination_var): Use 'kind' in
20696         call to vect_get_new_vect_var.
20697
20698 2007-02-06  Ira Rosen  <irar@il.ibm.com>
20699
20700         * tree-vect-patterns.c (vect_recog_widen_mult_pattern): Check that
20701         vectype is not NULL.
20702         (vect_pattern_recog_1): Likewise.
20703
20704 2007-02-05  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
20705
20706         * fold-const.c (negate_expr_p): Handle CONJ_EXPR.
20707         (fold_negate_expr): Likewise.
20708
20709 2007-02-05  Alexandre Oliva  <aoliva@redhat.com>
20710
20711         PR debug/30189
20712         * dwarf2out.c (modified_type_die): Follow DECL_ORIGINAL_TYPE
20713         even if cv-qualification is the same.
20714
20715 2007-02-05  Geoffrey Keating  <geoffk@apple.com>
20716
20717         * config/rs6000/darwin-tramp.asm (__trampoline_setup): Call
20718         __enable_execute_stack on completion.
20719
20720 2007-02-05  Harsha Jagasia  <harsha.jagasia@amd.com>
20721
20722         * config/i386/athlon.md (athlon_fldxf_k8, athlon_fld_k8,
20723         athlon_fstxf_k8, athlon_fst_k8, athlon_fist, athlon_fmov,
20724         athlon_fadd_load, athlon_fadd_load_k8, athlon_fadd, athlon_fmul,
20725         athlon_fmul_load, athlon_fmul_load_k8, athlon_fsgn,
20726         athlon_fdiv_load, athlon_fdiv_load_k8, athlon_fdiv_k8,
20727         athlon_fpspc_load, athlon_fpspc, athlon_fcmov_load,
20728         athlon_fcmov_load_k8, athlon_fcmov_k8, athlon_fcomi_load_k8,
20729         athlon_fcomi, athlon_fcom_load_k8, athlon_fcom): Added amdfam10.
20730
20731 2007-02-05  Harsha Jagasia  <harsha.jagasia@amd.com>
20732
20733         * config/i386/i386.md (x86_sahf_1, cmpfp_i_mixed, cmpfp_i_sse,
20734         cmpfp_i_i387, cmpfp_iu_mixed, cmpfp_iu_sse, cmpfp_iu_387,
20735         swapsi, swaphi_1, swapqi_1, swapdi_rex64, fix_truncsfdi_sse,
20736         fix_truncdfdi_sse, fix_truncsfsi_sse, fix_truncdfsi_sse,
20737         x86_fldcw_1, floatsisf2_mixed, floatsisf2_sse, floatdisf2_mixed,
20738         floatdisf2_sse, floatsidf2_mixed, floatsidf2_sse,
20739         floatdidf2_mixed, floatdidf2_sse, muldi3_1_rex64, mulsi3_1,
20740         mulsi3_1_zext, mulhi3_1, mulqi3_1, umulqihi3_1, mulqihi3_insn,
20741         umulditi3_insn, umulsidi3_insn, mulditi3_insn, mulsidi3_insn,
20742         umuldi3_highpart_rex64, umulsi3_highpart_insn,
20743         umulsi3_highpart_zext, smuldi3_highpart_rex64,
20744         smulsi3_highpart_insn, smulsi3_highpart_zext, x86_64_shld,
20745         x86_shld_1, x86_64_shrd, sqrtsf2_mixed, sqrtsf2_sse,
20746         sqrtsf2_i387, sqrtdf2_mixed, sqrtdf2_sse, sqrtdf2_i387,
20747         sqrtextendsfdf2_i387, sqrtxf2, sqrtextendsfxf2_i387,
20748         sqrtextenddfxf2_i387): Added amdfam10_decode.
20749
20750         * config/i386/athlon.md (athlon_idirect_amdfam10,
20751         athlon_ivector_amdfam10, athlon_idirect_load_amdfam10,
20752         athlon_ivector_load_amdfam10, athlon_idirect_both_amdfam10,
20753         athlon_ivector_both_amdfam10, athlon_idirect_store_amdfam10,
20754         athlon_ivector_store_amdfam10): New define_insn_reservation.
20755         (athlon_idirect_loadmov, athlon_idirect_movstore): Added
20756         amdfam10.
20757
20758 2007-02-05  Harsha Jagasia  <harsha.jagasia@amd.com>
20759
20760         * config/i386/athlon.md (athlon_call_amdfam10,
20761         athlon_pop_amdfam10, athlon_lea_amdfam10): New
20762         define_insn_reservation.
20763         (athlon_branch, athlon_push, athlon_leave_k8, athlon_imul_k8,
20764         athlon_imul_k8_DI, athlon_imul_mem_k8, athlon_imul_mem_k8_DI,
20765         athlon_idiv, athlon_idiv_mem, athlon_str): Added amdfam10.
20766
20767 2007-02-05  Harsha Jagasia  <harsha.jagasia@amd.com>
20768
20769         * config/i386/athlon.md (athlon_sseld_amdfam10,
20770         athlon_mmxld_amdfam10, athlon_ssest_amdfam10,
20771         athlon_mmxssest_short_amdfam10): New define_insn_reservation.
20772
20773 2007-02-05  Harsha Jagasia  <harsha.jagasia@amd.com>
20774
20775         * config/i386/athlon.md (athlon_sseins_amdfam10): New
20776         define_insn_reservation.
20777         * config/i386/i386.md (sseins): Added sseins to define_attr type
20778         and define_attr unit.
20779         * config/i386/sse.md: Set type attribute to sseins for insertq
20780         and insertqi.
20781
20782 2007-02-05  Harsha Jagasia  <harsha.jagasia@amd.com>
20783
20784         * config/i386/athlon.md (sselog_load_amdfam10, sselog_amdfam10,
20785         ssecmpvector_load_amdfam10, ssecmpvector_amdfam10,
20786         ssecomi_load_amdfam10, ssecomi_amdfam10,
20787         sseaddvector_load_amdfam10, sseaddvector_amdfam10): New
20788         define_insn_reservation.
20789         (ssecmp_load_k8, ssecmp, sseadd_load_k8, seadd): Added amdfam10.
20790
20791 2007-02-05  Harsha Jagasia  <harsha.jagasia@amd.com>
20792
20793         * config/i386/athlon.md (cvtss2sd_load_amdfam10,
20794         cvtss2sd_amdfam10, cvtps2pd_load_amdfam10, cvtps2pd_amdfam10,
20795         cvtsi2sd_load_amdfam10, cvtsi2ss_load_amdfam10,
20796         cvtsi2sd_amdfam10, cvtsi2ss_amdfam10, cvtsd2ss_load_amdfam10,
20797         cvtsd2ss_amdfam10, cvtpd2ps_load_amdfam10, cvtpd2ps_amdfam10,
20798         cvtsX2si_load_amdfam10, cvtsX2si_amdfam10): New
20799         define_insn_reservation.
20800
20801         * config/i386/sse.md (cvtsi2ss, cvtsi2ssq, cvtss2si,
20802         cvtss2siq, cvttss2si, cvttss2siq, cvtsi2sd, cvtsi2sdq,
20803         cvtsd2si, cvtsd2siq, cvttsd2si, cvttsd2siq,
20804         cvtpd2dq, cvttpd2dq, cvtsd2ss, cvtss2sd,
20805         cvtpd2ps, cvtps2pd): Added amdfam10_decode attribute.
20806
20807 2007-02-05  Harsha Jagasia  <harsha.jagasia@amd.com>
20808
20809         * config/i386/athlon.md (athlon_ssedivvector_amdfam10,
20810         athlon_ssedivvector_load_amdfam10, athlon_ssemulvector_amdfam10,
20811         athlon_ssemulvector_load_amdfam10): New define_insn_reservation.
20812         (athlon_ssediv, athlon_ssediv_load_k8, athlon_ssemul,
20813         athlon_ssemul_load_k8): Added amdfam10.
20814
20815 2007-02-05  Harsha Jagasia  <harsha.jagasia@amd.com>
20816
20817         * config/i386/i386.h (TARGET_SSE_UNALIGNED_MOVE_OPTIMAL): New macro.
20818         (x86_sse_unaligned_move_optimal): New variable.
20819
20820         * config/i386/i386.c (x86_sse_unaligned_move_optimal): Enable for
20821         m_AMDFAM10.
20822         (ix86_expand_vector_move_misalign): Add code to generate movupd/movups
20823         for unaligned vector SSE double/single precision loads for AMDFAM10.
20824
20825 2007-02-05  Harsha Jagasia  <harsha.jagasia@amd.com>
20826
20827         * config/i386/i386.h (TARGET_AMDFAM10): New macro.
20828         (TARGET_CPU_CPP_BUILTINS): Add code for amdfam10.
20829         Define TARGET_CPU_DEFAULT_amdfam10.
20830         (TARGET_CPU_DEFAULT_NAMES): Add amdfam10.
20831         (processor_type): Add PROCESSOR_AMDFAM10.
20832
20833         * config/i386/i386.md: Add amdfam10 as a new cpu attribute to match
20834         processor_type in config/i386/i386.h.
20835         Enable imul peepholes for TARGET_AMDFAM10.
20836
20837         * config.gcc: Add support for --with-cpu option for amdfam10.
20838
20839         * config/i386/i386.c (amdfam10_cost): New variable.
20840         (m_AMDFAM10): New macro.
20841         (m_ATHLON_K8_AMDFAM10): New macro.
20842         (x86_use_leave, x86_push_memory, x86_movx, x86_unroll_strlen,
20843         x86_cmove, x86_3dnow_a, x86_deep_branch, x86_use_simode_fiop,
20844         x86_promote_QImode, x86_integer_DFmode_moves,
20845         x86_partial_reg_dependency, x86_memory_mismatch_stall,
20846         x86_accumulate_outgoing_args, x86_arch_always_fancy_math_387,
20847         x86_sse_partial_reg_dependency, x86_sse_typeless_stores,
20848         x86_use_ffreep, x86_use_incdec, x86_four_jump_limit,
20849         x86_schedule, x86_use_bt, x86_cmpxchg16b, x86_pad_returns):
20850         Enable/disable for amdfam10.
20851         (override_options): Add amdfam10_cost to processor_target_table.
20852         Set up PROCESSOR_AMDFAM10 for amdfam10 entry in
20853         processor_alias_table.
20854         (ix86_issue_rate): Add PROCESSOR_AMDFAM10.
20855         (ix86_adjust_cost): Add code for amdfam10.
20856
20857 2007-02-05  Harsha Jagasia  <harsha.jagasia@amd.com>
20858
20859         * config/i386/i386.opt: Add new Advanced Bit Manipulation (-mabm)
20860         instruction set feature flag. Add new (-mpopcnt) flag for popcnt
20861         instruction. Add new SSE4A (-msse4a) instruction set feature flag.
20862         * config/i386/i386.h: Add builtin definition for SSE4A.
20863         * config/i386/i386.md: Add support for ABM instructions
20864         (popcnt and lzcnt).
20865         * config/i386/sse.md: Add support for SSE4A instructions
20866         (movntss, movntsd, extrq, insertq).
20867         * config/i386/i386.c: Add support for ABM and SSE4A builtins.
20868         Add -march=amdfam10 flag.
20869         * config/i386/ammintrin.h: Add support for SSE4A intrinsics.
20870         * doc/invoke.texi: Add documentation on flags for sse4a, abm, popcnt
20871         and amdfam10.
20872         * doc/extend.texi: Add documentation for SSE4A builtins.
20873
20874 2007-02-05  Bob Wilson  <bob.wilson@acm.org>
20875
20876         * config/xtensa/xtensa.c (constantpool_mem_p): Skip over SUBREGs.
20877
20878 2007-02-05  Richard Guenther  <rguenther@suse.de>
20879
20880         * tree-vectorizer.h (vectorizable_function): Add argument type
20881         argument, change return type.
20882         * tree-vect-patterns.c (vect_recog_pow_pattern): Adjust caller.
20883         * tree-vect-transform.c (vectorizable_function): Handle extra
20884         argument, return vectorized function decl.
20885         (build_vectorized_function_call): Remove.
20886         (vectorizable_call): Handle calls with result and argument types
20887         differing.  Handle loop vectorization factor correctly.
20888         * targhooks.c (default_builtin_vectorized_function): Adjust for
20889         extra argument.
20890         * targhooks.h (default_builtin_vectorized_function): Likewise.
20891         * target.h (builtin_vectorized_function): Add argument type
20892         argument.
20893         * config/i386/i386.c (ix86_builtin_vectorized_function): Handle
20894         extra argument, allow vectorizing of lrintf.
20895         * doc/tm.texi (TARGET_VECTORIZE_BUILTIN_VECTORIZED_FUNCTION): Adjust
20896         documentation of target hook.
20897
20898 2007-02-05  Hans-Peter Nilsson  <hp@axis.com>
20899
20900         PR target/30665
20901         * config/cris/cris.md ("*andsi_movu", "*andsi_clear", "*andhi_movu")
20902         ("*andhi_clear", andu (casesi+45)): For size-changed operand where
20903         memory is allowed, require !side_effects_p, not just !MEM_VOLATILE_P.
20904
20905 2007-02-05  Roger Sayle  <roger@eyesopen.com>
20906
20907         * fold-const.c (fold_unary) <REAL_PART>: Test for availability of
20908         BUILT_IN_COS before simplifying REAL_PART(CEXPI)) to COS.
20909         <IMAG_PART>: Likewise, check for availability of BUILT_IN_SIN.
20910         * builtins.c (fold_builtin_sincos): Check for TARGET_C99_FUNCTIONS
20911         before canonicalizing sincos to cexpi.
20912         (fold_builtin_cexp): Likewise, for canonicalizing cexp to cexpi.
20913
20914 2007-02-05  Roger Sayle  <roger@eyesopen.com>
20915
20916         * config/alpha/alpha.c (alpha_add_builtins): New Helper function.
20917         Set TREE_READONLY and TREE_NOTHROW directly, not via attributes.
20918         (alpha_init_builtins): Use alpha_add_builtins to process tables.
20919
20920 2007-02-05  Roger Sayle  <roger@eyesopen.com>
20921
20922         * mips-tfile.c (initialize_init_file): Correct endianness test.
20923
20924 2007-02-05  Kazu Hirata  <kazu@codesourcery.com>
20925
20926         * config/m68k/m68k.md (pushdi-1, pushdi, movsi+1): Don't use
20927         the 'y' constraint.
20928
20929 2007-02-05  Richard Sandiford  <richard@codesourcery.com>
20930
20931         * dwarf2out.c (dwarf2out_frame_debug_expr): Record the register
20932         saves in a PARALLEL before the register assignments.
20933
20934 2007-02-05  Richard Sandiford  <richard@codesourcery.com>
20935
20936         * doc/tm.texi (DWARF_ALT_FRAME_RETURN_COLUMN): Do not require
20937         DWARF_FRAME_RETURN_COLUMN to be a general register.
20938         * dwarf2out.c (init_return_column_size): New function, split from...
20939         (expand_builtin_init_dwarf_reg_sizes): ...here.  Allow both
20940         DWARF_FRAME_RETURN_COLUMN and DWARF_ALT_FRAME_RETURN_COLUMN
20941         to be nongeneral registers.
20942         * config/m68k/m68k.h (DWARF_FRAME_REGNUM): Only map FP and
20943         integer registers.
20944         (DWARF_FRAME_REGISTERS, DWARF_FRAME_RETURN_COLUMN): Define.
20945         (DWARF_ALT_FRAME_RETURN_COLUMN): Define.
20946
20947 2007-02-04  Zdenek Dvorak <dvorakz@suse.cz>
20948
20949         * cfgcleanup.c (try_optimize_cfg): Avoid removing ENTRY_BLOCK_PTR.
20950
20951 2007-02-04  Zdenek Dvorak <dvorakz@suse.cz>
20952
20953         * cfgloopmanip.c (loop_delete_branch_edge): Removed.
20954         (remove_path): Use can_remove_branch_p and remove_branch instead
20955         of loop_delete_branch_edge.
20956         * tree-ssa-loop-manip.c (scale_dominated_blocks_in_loop): New function.
20957         (tree_transform_and_unroll_loop): Remove dead branches immediately.
20958         Update profile using scale_dominated_blocks_in_loop.
20959         * cfghooks.c (can_remove_branch_p, remove_branch): New functions.
20960         * cfghooks.h (struct cfg_hooks): Add can_remove_branch_p.
20961         (can_remove_branch_p, remove_branch): Declare.
20962         * tree-cfg.c (tree_can_remove_branch_p): New function.
20963         (tree_cfg_hooks): Add tree_can_remove_branch_p.
20964         * cfgrtl.c (rtl_can_remove_branch_p): New function.
20965         (rtl_cfg_hooks, cfg_layout_rtl_cfg_hook): Add rtl_can_remove_branch_p.
20966
20967 2007-02-05  Jan Hubicka  <jh@suse.cz>
20968
20969         PR middle-end/30696
20970         * ipa-inline.c (cgraph_clone_inlined_nodes): When there are unanalyzed
20971         nodes in cgraph, don't remove offline copy of the function.
20972
20973 2007-02-04  Jan Hubicka  <jh@suse.cz>
20974
20975         * tree-sra.c (sra_walk_expr): Add linebreaks. BITFIELD_REFs into
20976         vectors might cause maybe_lookup_element_for_expr to be called
20977         on non-sra-candidate.
20978
20979 2007-02-04  Kazu Hirata  <kazu@codesourcery.com>
20980
20981         * config/bfin/bfin-modes.def, config/bfin/bfin.c,
20982         config/bfin/bfin.md, config/bfin/predicates.md: Follow
20983         spelling conventions.
20984
20985 2007-02-04  Richard Guenther  <rguenther@suse.de>
20986
20987         PR middle-end/30636
20988         * fold-const.c (try_move_mult_to_index): Make sure to not
20989         overflow one dimension of a multi-dimensional array access.
20990
20991 2007-02-04  Jan Hubicka  <jh@suse.cz>
20992
20993         * passes.c (init_optimization_passes): Reindent.
20994
20995 2007-02-04  Jan Hubicka  <jh@suse.cz>
20996             Eric Botcazou  <ebotcazou@adacore.com>
20997
20998         * tree-optimize.c (has_abnormal_outgoing_edge_p): Move to...
20999         (execute_fixup_cfg): Break out the abnormal goto code.
21000         * tree-inline.c (has_abnormal_outgoing_edge_p): ...here.
21001         (make_nonlocal_label_edges): Move here from execute_fixup_cfg.
21002         (optimize_inline_calls): Call make_nonlocal_label_edges.
21003
21004 2007-02-04  Jan Hubicka  <jh@suse.cz>
21005
21006         * tree-ssa-copyrename.c (copy_rename_partition_coalesce): Return
21007         true when something was changed.
21008         (rename_ssa_copies): When something was changed, do
21009         TODO_remove_unused_locals.
21010         * tree-ssa-forwprop.c (tree_ssa_forward_propagate_single_use_value):
21011         add TODO_remove_unused_locals when instruction was removed.
21012
21013 2007-02-04  Jan Hubicka  <jh@suse.cz>
21014
21015         * ipa-inline.c (try_inline): Improve debug output; work on already
21016         inline edges too.
21017         (cgraph_decide_inlining_incrementally): Indent; improve debug output;
21018         call try_inline for already inlined edges too when flattening;
21019         inline also functions that make callee growth but overall unit size
21020         reduce.
21021
21022 2007-02-04  Kazu Hirata  <kazu@codesourcery.com>
21023
21024         * config/m32c/bitops.md, config/m32c/jump.md,
21025         config/m32c/m32c.c, config/m32c/m32c.h, config/m32r/m32r.c,
21026         config/m32r/m32r.h, config/m32r/m32r.md,
21027         config/m32r/predicates.md, config/m68hc11/larith.asm,
21028         config/m68hc11/m68hc11.c, config/m68hc11/m68hc11.h,
21029         config/m68k/m68k.h, config/mcore/mcore.md, config/mips/4k.md,
21030         config/mips/mips-protos.h, config/mips/mips.c,
21031         config/mips/mips.h, config/mips/mips.md, config/mips/mips16.S,
21032         config/mn10300/mn10300.h, config/mn10300/predicates.md,
21033         config/mt/mt.c, config/mt/mt.h, config/mt/mt.md: Follow
21034         spelling conventions.
21035
21036         * config/v850/v850.c, config/v850/v850.h, config/v850/v850.md:
21037         Follow spelling conventions.
21038
21039 2007-02-03  Douglas Gregor  <doug.gregor@gmail.com>
21040
21041         * c-opts.c (c_common_post_options): If C++0x mode is enabled, don't
21042         warn about C++0x compatibility.
21043
21044 2007-02-04  Kazu Hirata  <kazu@codesourcery.com>
21045
21046         * config/h8300/h8300.c, config/h8300/h8300.h,
21047         config/h8300/h8300.md: Follow spelling conventions.
21048
21049 2007-02-03  Uros Bizjak  <ubizjak@gmail.com>
21050
21051         PR middle-end/30667
21052         * combine.c (try_combine): Do not substitute source operand
21053         with constants wider than 2 * HOST_BITS_PER_WIDE_INT.
21054
21055 2007-02-03  Jan Hubicka  <jh@suse.cz>
21056
21057         PR gcov-profile/30650
21058         * value-prof.c (stringop_block_profile): Fix handling of size counter;
21059         do not divide by zero for never executed counters.
21060         (tree_find_values_to_profile): Fix counters.
21061         * gcov-ui.h (GCOV_COUNTER_AVERAGE, GCOV_COUNTER_IOR): Fix comments.
21062
21063 2007-02-03  Ian Lance Taylor  <iant@google.com>
21064
21065         * lower-subreg.c (simple_move_operand): New static function,
21066         broken out of simple_move.  Reject LABEL_REF, SYMBOL_REF, and HIGH
21067         operands.
21068         (simple_move): Call simple_move_operand.
21069         (find_decomposable_subregs): Add special handling of MEMs.
21070         (can_decompose_p): Rename from cannot_decompose_p.  Reverse
21071         meaning of return value.  If we see a hard register, test whether
21072         it can store a word_mode value.  Change all callers.
21073
21074 2007-02-03  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
21075
21076         * pa.md (addvdi3, addvsi3, subvdi3, subvsi3, negvdi2, negvsi2): New
21077         ftrapv insns and expanders.
21078         (subdi3): Change define_expand operand 1 to arith11_operand, and
21079         operand 2 to reg_or_0_operand.  Change constraints of 64-bit insn
21080         pattern to handle reg_or_0 operands.  Revise 32-bit insn pattern to
21081         handle 11-bit constants and reg_or_0 operands in operands 1 and 2,
21082         respectively.
21083
21084         PR middle-end/30174
21085         * varasm.c (notice_global_symbol): Treat global objects as weak when
21086         flag_shlib is true.
21087
21088 2007-02-03  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
21089
21090         * emit-rtl.c (dconstpi): Delete.
21091         (dconstsqrt2): New.
21092         (init_emit_once): Delete dconstpi and init dconstsqrt2.
21093         * real.h (dconstpi): Delete.
21094         (dconstsqrt2): New.
21095         * builtins.c (fold_builtin_cabs): Use dconstsqrt2.
21096         (fold_builtin_hypot): Likewise.
21097
21098 2007-02-03  Tom Tromey  <tromey@redhat.com>
21099
21100         PR driver/30246
21101         * gcc.c (cpp_unique_options): Any of -ggdb3, -gstabs3,
21102         -gcoff3, -gxcoff3, -gvms3 implies -dD.
21103
21104 2007-02-03  Kazu Hirata  <kazu@codesourcery.com>
21105
21106         * c-decl.c, config/avr/avr.c, config/avr/avr.h,
21107         config/m68k/m68k.c, config/m68k/netbsd-elf.h,
21108         config/mn10300/mn10300.c, config/pdp11/pdp11.h,
21109         config/rs6000/cell.md, config/rs6000/darwin.h,
21110         config/sh/sh.md, config/sh/sh4-300.md, config/spu/spu.c,
21111         config/spu/spu.md, cselib.c, expr.c, haifa-sched.c, hwint.h,
21112         jump.c, reload.c, sched-deps.c, sched-int.h, tree-inline.c,
21113         tree-profile.c, tree-ssa-live.h, tree-vrp.c: Fix comment
21114         typos.  Follow spelling conventions.
21115         * doc/invoke.texi: Follow spelling conventions.
21116
21117 2007-02-03  Roger Sayle  <roger@eyesopen.com>
21118
21119         * simplify-rtx.c (simplify_relational_operation_1): Implement some
21120         canonicalization transformations that attempt to simplify integer
21121         constant comparisons to become comparisons against zero.
21122
21123 2007-02-03  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
21124
21125         * builtins.c (fold_builtin_cabs): Fold cabs(x+xi) into
21126         fabs(x)*sqrt(2).
21127         * fold-const.c (fold_binary): Fix comment typos.  Fold complex
21128         (x,0)-(0,y) into (x,-y).  Likewise (0,y)-(x,0) into (-x,y).
21129
21130 2007-02-02  Mike Stump  <mrs@apple.com>
21131
21132         * config/darwin9.h (DARWIN_LINKER_GENERATES_ISLANDS): Add.
21133         * config/rs6000/rs6000.c (DARWIN_GENERATE_ISLANDS): Add.
21134         (output_call): Use DARWIN_GENERATE_ISLANDS to decide when to
21135         generate a branch island.
21136
21137 2007-02-02  Bob Wilson  <bob.wilson@acm.org>
21138
21139         * config/xtensa/xtensa.c (smalloffset_mem_p): Use BASE_REG_P.
21140         (xtensa_legitimate_address_p): New.
21141         (xtensa_legitimize_address): New.
21142         (xtensa_output_addr_const_extra): New.
21143         * config/xtensa/xtensa.h (REG_OK_STRICT_FLAG): Define.
21144         (BASE_REG_P): New.
21145         (REG_OK_FOR_BASE_P): Use BASE_REG_P.
21146         (GO_IF_LEGITIMATE_ADDRESS): Move code to xtensa_legitimate_address_p.
21147         (LEGITIMIZE_ADDRESS): Move code to xtensa_legitimize_address.
21148         (OUTPUT_ADDR_CONST_EXTRA): Move code to xtensa_output_addr_const_extra.
21149         * config/xtensa/xtensa-protos.h (xtensa_legitimate_address_p): New.
21150         (xtensa_legitimize_address): New.
21151         (xtensa_output_addr_const_extra): New.
21152
21153 2007-02-02  Steve Ellcey  <sje@cup.hp.com>
21154
21155         * config/ia64/ia64.c (ia64_print_operand): Fix compare strings.
21156
21157 2007-02-02  Ian Lance Taylor  <iant@google.com>
21158
21159         * expmed.c (expand_divmod): Add comment.
21160
21161 2007-02-02  Kazu Hirata  <kazu@codesourcery.com>
21162
21163         * emit-rtl.c (renumber_insns): Remove.
21164         * flags.h: Remove the extern for flag_renumber_insns.
21165         * rtl.h: Remove the prototype for renumber_insns.
21166         * toplev.c (flag_renumber_insns): Remove.
21167
21168 2007-02-02  Hui-May Chang  <hm.chang@apple.com>
21169
21170         Revert for x86 darwin:
21171         2005-06-19  Uros Bizjak  <uros@kss-loka.si>
21172
21173         * config/i386/i386.c (ix86_function_arg_regno_p): Put back the
21174         code before the following patch under TARGET_MACHO.
21175         (ix86_function_value_regno_p): Likewise.
21176
21177 2007-02-02  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
21178
21179         * fold-const.c (negate_expr_p, fold_negate_expr): Handle
21180         COMPLEX_EXPR.
21181
21182 2007-02-02  Maxim Kuvyrkov  <mkuvyrkov@ispras.ru>
21183
21184         PR target/29682
21185         * config/ia64/ia64.c (ia64_speculate_insn): Restrict to memory
21186         loads to general or fp registers.  Add comments.
21187         * config/ia64/ia64.md (reg_pred_prefix): Add comment.
21188
21189 2007-02-02  Paolo Bonzini  <bonzini@gnu.org>
21190
21191         * pointer-set.c (insert_aux): Only return insertion slot.
21192         (pointer_set_insert): Adjust.
21193         (pointer_set_traverse, struct pointer_map_t, pointer_map_create,
21194         pointer_map_destroy, pointer_map_insert, pointer_map_contains,
21195         pointer_map_traverse): New.
21196         * pointer-set.h (pointer_set_traverse, struct pointer_map_t,
21197         pointer_map_create,  pointer_map_destroy, pointer_map_insert,
21198         pointer_map_contains, pointer_map_traverse): Declare.
21199
21200 2007-02-02  Jakub Jelinek  <jakub@redhat.com>
21201
21202         PR middle-end/30473
21203         * builtins.c (fold_builtin_sprintf): Do not attempt to optimize
21204         sprintf (str, "%s").  Do not optimize sprintf (str, "nopercent", p++).
21205
21206 2007-02-02  Maxim Kuvyrkov  <mkuvyrkov@ispras.ru>
21207
21208         * sched-int.h (ds_to_dk, dk_to_ds): Declare functions.
21209
21210         (struct _dep): New type.
21211         (dep_t): New typedef.
21212         (DEP_PRO, DEP_CON, DEP_KIND): New access macros.
21213         (DEP_STATUS): New access macro.  The macro with the same name was
21214         renamed to DEP_LINK_STATUS.
21215         (dep_init): Declare function
21216
21217         (struct _dep_link): New type.
21218         (dep_link_t): New typedef.
21219         (DEP_LINK_NODE, DEP_LINK_NEXT, DEP_LINK_PREV_NEXTP): New access macros.
21220         (DEP_LINK_DEP, DEP_LINK_PRO, DEP_LINK_CON, DEP_LINK_KIND): New macros.
21221         (DEP_LINK_STATUS): New macro.
21222         (debug_dep_links): New debug function.
21223
21224         (struct _deps_list): New type.
21225         (deps_list_t): New typedef.
21226         (DEPS_LIST_FIRST): New access macro.
21227         (FOR_EACH_DEP_LINK): New cycle macro.
21228         (create_deps_list, free_deps_list, delete_deps_list): Declare
21229         functions.
21230         (deps_list_empty_p, debug_deps_list, add_back_dep_to_deps_list): Ditto.
21231         (find_link_by_pro_in_deps_list, find_link_by_con_in_deps_list): Ditto.
21232         (copy_deps_list_change_con): Ditto.
21233
21234         (move_dep_link): Declare function.
21235
21236         (struct _dep_node): New type.
21237         (dep_node_t): New typedef.
21238         (DEP_NODE_BACK, DEP_NODE_DEP, DEP_NODE_FORW): New access macros.
21239
21240         (struct haifa_insn_data.back_deps): New field to hold backward
21241         dependencies of the insn.
21242         (struct haifa_insn_data.depend): Rename to forw_deps.  Change its type
21243         to deps_list_t.
21244         (struct haifa_insn_data.resolved_deps): Rename to resolved_back_deps.
21245         Change its type to deps_list_t.
21246         (INSN_BACK_DEPS): New access macro to use instead of LOG_LINKS.
21247         (INSN_DEPEND): Rename to INSN_FORW_DEPS.
21248         (RESOLVED_DEPS): Rename to INSN_RESOLVED_BACK_DEPS.
21249
21250         (INSN_COST): Move to haifa-sched.c.  Use insn_cost () instead.
21251
21252         (DEP_STATUS): Rename to DEP_LINK_STATUS.  Fix typo in the comment.
21253
21254         (add_forw_dep, delete_back_forw_dep, insn_cost): Update declaration
21255         and all callers.
21256         (dep_cost): Declare.
21257
21258         * sched-deps.c (CHECK): New macro to (en/dis)able sanity checks.
21259         (ds_to_dk, dk_to_ds): New functions.
21260
21261         (init_dep_1): New static function.
21262         (init_dep): New function.
21263         (copy_dep): New static function.
21264
21265         (dep_link_consistent_p, attach_dep_link, add_to_deps_list): New static
21266         functions.
21267         (detach_dep_link): New static function.
21268         (move_dep_link): New function.
21269
21270         (dep_links_consistent_p, dump_dep_links): New static functions.
21271         (debug_dep_links): New debugging function.
21272
21273         (deps_obstack, dl_obstack, dn_obstack): New static variables.
21274
21275         (alloc_deps_list, init_deps_list): New static functions.
21276         (create_deps_list): New function.
21277         (clear_deps_list): New static function.
21278         (free_deps_list, delete_deps_list, deps_list_empty_p): New functions.
21279         (deps_list_consistent_p, dump_deps_list): New static functions.
21280         (debug_deps_list): New function.
21281         (add_back_dep_to_deps_list, find_link_by_pro_in_deps_list): New
21282         functions.
21283         (find_link_by_con_in_deps_list, copy_deps_list_change_con): Ditto.
21284
21285         (maybe_add_or_update_back_dep_1, add_or_update_back_dep_1): Update to
21286         use new scheduler dependencies lists.
21287         (add_back_dep, delete_all_dependences, fixup_sched_groups): Ditto.
21288         (sched_analyze): Ditto.  Initialize dependencies lists.
21289         (add_forw_dep, compute_forward_dependences): Update to use new
21290         scheduler dependencies lists.
21291
21292         (init_dependency_caches): Init deps_obstack.
21293         (free_dependency_caches): Free deps_obstack.
21294
21295         (adjust_add_sorted_back_dep, adjust_back_add_forw_dep): Update to use
21296         new scheduler dependencies lists.
21297         (delete_forw_dep, add_or_update_back_forw_dep): Ditto.
21298         (add_back_forw_dep, delete_back_forw_dep): Ditto.
21299
21300         * sched-rgn.c (set_spec_fed, find_conditional_protection, is_pfree):
21301         Update to use new scheduler dependencies lists.
21302         (is_conditionally_protected, is_prisky, add_branch_dependences): Ditto.
21303         (debug_dependencies): Ditto.
21304         (schedule_region): Update comments.
21305
21306         * sched-ebb.c (earliest_block_with_similiar_load): Update to use new
21307         scheduler dependencies lists.
21308         (schedule_ebb): Update comments.
21309
21310         * rtl.def (DEPS_LIST): Remove.
21311
21312         * lists.c (unused_deps_list): Remove.
21313         (free_list): Update assertions.
21314
21315         (alloc_DEPS_LIST, free_DEPS_LIST_list, free_DEPS_LIST_node): Remove.
21316         (remove_free_DEPS_LIST_elem, copy_DEPS_LIST_list): Ditto.
21317
21318         * rtl.h (free_DEPS_LIST_list, alloc_DEPS_LIST): Remove declarations.
21319         (remove_free_DEPS_LIST_elem, copy_DEPS_LIST_list): Ditto.
21320
21321         * haifa-sched.c (comments): Update.
21322         (insn_cost1): Remove.  Inline the code into insn_cost ().
21323         (insn_cost): Update to use new scheduler dependencies lists.  Move
21324         processing of the dependency cost to dep_cost ().
21325         (dep_cost): New function.  Use it instead of insn_cost () when
21326         evaluating cost of the dependency.  Use compatible interface to
21327         interact with the target.
21328         (priority): Update to use new scheduler dependencies lists.
21329         (rank_for_schedule): Ditto.  Optimize heuristic that prefers the insn
21330         with greater number of insns that depend on the insn.
21331         (schedule_insn): Update to use new scheduler dependencies lists.  Add
21332         code to free backward dependencies lists.  Inline and optimize code
21333         from resolve_dep () - see PR28071.
21334         (ok_for_early_queue_removal): Update to use new scheduler dependencies
21335         lists.  Update call to targetm.sched.is_costly_dependence hook.
21336
21337         (fix_inter_tick, try_ready, fix_tick_ready): Update to use new
21338         scheduler dependencies lists.
21339
21340         (resolve_dep): Remove.  Move the logic to schedule_insn ().
21341         (init_h_i_d): Initialize dependencies lists.
21342
21343         (process_insn_depend_be_in_spec): Rename to
21344         process_insn_forw_deps_be_in_spec.  Update to use new scheduler
21345         dependencies lists.
21346         (add_to_speculative_block, create_check_block_twin, fix_recovery_deps):
21347         Update to use new scheduler dependencies lists.
21348         (clear_priorities, calc_priorities, add_jump_dependencies): Ditto.
21349
21350         * ddg.c (create_ddg_dependence, create_ddg_dep_no_link): Update to use
21351         new scheduler dependencies lists.
21352         (build_intra_loop_deps): Ditto.
21353
21354         * target.h (struct _dep): Declare to use in
21355         gcc_target.sched.is_costly_dependence.
21356         (struct gcc_target.sched.adjust_cost): Fix typo.
21357         (struct gcc_target.sched.is_costly_dependence): Change signature to
21358         use single dep_t parameter instead of an equivalent triad.
21359         (struct gcc_target.sched.adjust_cost_2): Remove.
21360
21361         * target-def.h (TARGET_SCHED_ADJUST_COST_2): Remove.
21362
21363         * reg-notes.def (DEP_TRUE, DEP_OUTPUT, DEP_ANTI): Update comments.
21364
21365         * doc/tm.texi (TARGET_SCHED_IS_COSTLY_DEPENDENCE): Update
21366         documentation.
21367         (TARGET_SCHED_ADJUST_COST_2): Remove documentation.
21368
21369         * doc/rtl.texi (LOG_LINKS): Remove part about instruction scheduler.
21370         (REG_DEP_TRUE): Document.
21371
21372         * config/ia64/ia64.c (ia64_adjust_cost_2): Rename to ia64_adjust_cost.
21373         Change signature to correspond to the targetm.sched.adjust_cost hook.
21374         Update use in TARGET_SCHED_ADJUST_COST_2.
21375         (TARGET_SCHED_ADJUST_COST_2): Rename to TARGET_SCHED_ADJUST_COST.
21376         (ia64_dependencies_evaluation_hook, ia64_dfa_new_cycle): Update to use
21377         new scheduler dependencies lists.
21378         (ia64_gen_check): Ditto.
21379
21380         * config/mips/mips.c (vr4130_swap_insns_p): Update to use new
21381         scheduler dependencies lists.
21382
21383         * config/rs6000/rs6000.c (rs6000_is_costly_dependence): Change
21384         signature to correspond to the targetm.sched.is_costly_dependence hook.
21385         (is_costly_group): Update to use new scheduler dependencies lists.
21386
21387         * config/spu/spu.c (spu_sched_adjust_cost): Use insn_cost () function
21388         instead of INSN_COST () macro.
21389
21390 2007-02-01  Ian Lance Taylor  <iant@google.com>
21391
21392         * lower-subreg.c (resolve_clobber): Handle a subreg of a concatn.
21393
21394 2007-02-01  Guy Martin  <gmsoft@gentoo.org>
21395
21396         * pa.md (tp_load): Correct mfctl instruction syntax.
21397
21398 2007-02-01  Geoffrey Keating  <geoffk@apple.com>
21399
21400         * config/rs6000/rs6000.c (rs6000_stack_info): Correct
21401         altivec_padding_size calculation on AIX.  Improve comment, add
21402         assert to verify that it's right.
21403
21404         * config/rs6000/darwin.h (MD_UNWIND_SUPPORT): Don't define for
21405         64-bit.
21406
21407 2007-2-01  Seongbae Park  <seongbae.park@gmail.com>
21408
21409         PR inline-asm/28686
21410         * global.c (global_alloc): Add mising initialization of
21411         ELIMINABLE_REGSET.
21412
21413 2007-02-01  Roger Sayle  <roger@eyesopen.com>
21414
21415         * alias.c (init_alias_analysis): Correct whitespace.
21416         * bb-reorder.c (fix_edges_for_rarely_executed_code,
21417         partition_hot_cold_basic_blocks): Likewise.
21418         * builtins.c (expand_builtin_printf, expand_builtin_fprintf,
21419         expand_builtin_sprintf, fold_builtin_carg, fold_builtin_sprintf,
21420         maybe_emit_sprintf_chk_warning, fold_builtin_sprintf_chk,
21421         fold_builtin_snprintf_chk, fold_builtin_printf,
21422         fold_builtin_fprintf, do_mpfr_ckconv, do_mpfr_arg1, do_mpfr_arg2,
21423         do_mpfr_arg3, do_mpfr_sincos): Likewise.
21424         * cfgcleanup.c (cleanup_cfg): Likewise.
21425         * cfgexpand.c (tree_expand_cfg): Likewise.
21426         * fold-const.c (fold_binary) <RDIV_EXPR>: Likewise.
21427         * function.c (get_next_funcdef_no): Likewise.
21428         * gengtype.c (main): Likewise.
21429         * genmodes.c (main): Likewise.
21430         * gcse.c (bypass_conditional_jumps, print_ldst_list): Likewise.
21431         * haifa-sched.c (schedule_block, extend_h_i_d): Likewise.
21432         * ifcvt.c (noce_emit_move_insn): Likewise.
21433         * modulo-sched.c (generate_prolog_epilog, sms_schedule_by_order):
21434         Likewise.
21435         * stor-layout.c (get_best_mode): Likewise.
21436         * tree-ssa-loop-niter.c (get_val_for): Likewise.
21437         * tree-ssa-structalias.c (get_varinfo, get_varinfo_fc,
21438         scc_visit, do_ds_constraint, do_complex_constraint, label_visit,
21439         perform_var_substitution, solve_graph): Likewise.
21440         * tree-vrp.c (vrp_finalize): Likewise.
21441
21442 2007-02-01  Ian Lance Taylor  <iant@google.com>
21443
21444         * lower-subreg.c (simplify_gen_subreg_concatn): If we ask for the
21445         high part of a paradoxical subreg, return a constant zero.
21446
21447 2007-02-01  Zdenek Dvorak <dvorakz@suse.cz>
21448
21449         * toplev.c (lang_dependent_init): Call init_set_costs.
21450         * loop-init.c (loop_optimizer_init): Do not call init_set_costs.
21451
21452 2007-02-01  Richard Guenther  <rguenther@suse.de>
21453
21454         PR middle-end/30656
21455         * fold-const.c (fold_negate_expr): Allow negating a
21456         constant if overflow does not change.
21457
21458 2007-02-01  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
21459
21460         * doc/c-tree.texi (Expression trees): Improve markup.
21461         * doc/tm.texi (Register Classes, Addressing Modes)
21462         (Floating Point): Fix spacing after abbreviations.  Fix some
21463         typos.
21464
21465 2007-02-01  Ben Elliston  <bje@au.ibm.com>
21466
21467         * doc/invoke.texi: Replace "bugfix" with "bug fix" throughout.
21468         * doc/contrib.texi: Likewise.
21469         * doc/install.texi: Likewise.
21470
21471 2007-01-31  Richard Henderson  <rth@redhat.com>
21472             Ian Lance Taylor  <iant@google.com>
21473
21474         * lower-subreg.c: New file.
21475         * rtl.def (CONCATN): Define.
21476         * passes.c (init_optimization_passes): Add pass_lower_subreg and
21477         pass_lower_subreg2.
21478         * emit-rtl.c (update_reg_offset): New static function, broken out
21479         of gen_rtx_REG_offset.
21480         (gen_rtx_REG_offset): Call update_reg_offset.
21481         (gen_reg_rtx_offset): New function.
21482         * regclass.c: Revert patch of 2006-03-05, restoring
21483         reg_scan_update.
21484         (clear_reg_info_regno): New function.
21485         * dwarf2out.c (concatn_loc_descriptor): New static function.
21486         (loc_descriptor): Handle CONCATN.
21487         * common.opt (fsplit_wide_types): New option.
21488         * opts.c (decode_options): Set flag_split_wide_types when
21489         optimizing.
21490         * timevar.def (TV_LOWER_SUBREG): Define.
21491         * rtl.h (gen_reg_rtx_offset): Declare.
21492         (reg_scan_update): Declare.
21493         * regs.h (clear_reg_info_regno): Declare.
21494         * tree-pass.h (pass_lower_subreg): Declare.
21495         (pass_lower_subreg2): Declare.
21496         * doc/invoke.texi (Option Summary): List -fno-split-wide-types.
21497         (Optimize Options): Add -fsplit-wide-types to -O1 list.  Document
21498         -fsplit-wide-types.
21499         * doc/rtl.texi (Regs and Memory): Document concat and concatn.
21500         * Makefile.in (OBJS-common): Add lower-subreg.o.
21501         (lower-subreg.o): New target.
21502
21503 2007-01-31  Kazu Hirata  <kazu@codesourcery.com>
21504
21505         * config/sh/sh.h (HAVE_SECONDARY_RELOADS): Remove.
21506
21507 2007-01-31  Anatoly Sokolov <aesok@post.ru>
21508
21509         PR target/19087
21510         * config/avr/avr.c (DWARF2_ADDR_SIZE): Define.
21511
21512 2007-01-31  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
21513
21514         PR middle-end/29335
21515         * builtins.c (fold_builtin_sqrt): Use MPFR for constant args.
21516
21517 2007-01-31  Zdenek Dvorak <dvorakz@suse.cz>
21518
21519         * cfgloop.h: Include vec-prim.h.
21520         (enum li_flags): Remove LI_ONLY_OLD.
21521         (loop_iterator): Changed.
21522         (fel_next, fel_init): Iterate over loop tree.
21523         (FOR_EACH_LOOP_BREAK): New macro.
21524         * loop-unswitch.c (unswitch_loops): Do not pass LI_ONLY_OLD to
21525         FOR_EACH_LOOP.
21526         * tree-ssa-loop-unswitch.c (tree_ssa_unswitch_loops): Ditto.
21527         * modulo-sched.c (sms_schedule): Ditto.
21528         * tree-vectorizer.c (vectorize_loops): Ditto.
21529         * doc/loop.texi: Update information on loop numbering and behavior of
21530         FOR_EACH_LOOP wrto new loops.
21531         * tree-scalar-evolution.c (compute_overall_effect_of_inner_loop,
21532         add_to_evolution_1): Test nestedness of loops instead of comparing
21533         their numbers.
21534         * tree-chrec.c (chrec_fold_plus_poly_poly,
21535         chrec_fold_multiply_poly_poly, chrec_evaluate,
21536         hide_evolution_in_other_loops_than_loop, chrec_component_in_loop_num,
21537         reset_evolution_in_loop): Ditto.
21538         * Makefile.in (CFGLOOP_H): Add vecprim.h dependency.
21539
21540 2007-01-31  Dirk Mueller  <dmueller@suse.de>
21541
21542         * c-common.c (warn_about_parentheses): Separate warning about
21543         un-parenthized sequence of comparison operators from the one
21544         which is supposed to warn about x <= y <= z.
21545
21546 2007-01-31  Uros Bizjak  <ubizjak@gmail.com>
21547
21548         * optabs.h (enum optab_index): Add new OTI_isinf.
21549         (isinf_optab): Define corresponding macro.
21550         * optabs.c (init_optabs): Initialize isinf_optab.
21551         * genopinit.c (optabs): Implement isinf_optab using isinf?f2
21552         patterns.
21553         * builtins.c (mathfn_built_in): Handle BUILT_IN_ISINF{,F,L}.
21554         (expand_builtin_interclass_mathfn): Expand BUILT_IN_ISINF{,F,L}
21555         using isinf_optab.
21556         (expand_builtin): Expand BUILT_IN_ISINF{,F,L} using
21557         expand_builtin_interclass_mathfn.
21558         * reg_stack.c (subst_stack_regs_pat): Handle UNSPEC_FXAM.
21559         * config/i386/i386.md (UNSPEC_FXAM): New constant.
21560         (fxam<mode>2_i387): New insn pattern.
21561         (isinf<mode>2) New expander to implement isinf, isinff and isinfl
21562         built-in functions as x87 inline asm.
21563
21564 2007-01-31  Kazu Hirata  <kazu@codesourcery.com>
21565
21566         * config/arm/unwind-arm.h (_sleb128_t, _uleb128_t): New.
21567
21568 2007-01-30  Eric Christopher  <echristo@apple.com>
21569
21570         * config.gcc: Add geode.
21571
21572 2007-01-31  Kazu Hirata  <kazu@codesourcery.com>
21573
21574         * cgraphunit.c, config/arm/arm.c, config/m68k/m68k.c,
21575         ipa-inline.c, tree-profile.c, tree-ssa-live.c,
21576         tree-ssa-math-opts.c, tree-ssanames.c, tree-vect-analyze.c,
21577         value-prof.c: Fix comment typos.
21578
21579 2007-01-30  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
21580
21581         PR c++/24745
21582         * doc/invoke.texi (Wpointer-arith): Document warning.
21583
21584 2007-01-30  Janis Johnson  <janis187@us.ibm.com>
21585
21586         * doc/extend.texi (Decimal Floating Types): Remove decfloat.h from
21587         the list of discrepancies from the draft TR.
21588
21589 2007-01-30  Dirk Mueller  <dmueller@suse.de>
21590
21591         PR c++/30601
21592         * doc/invoke.texi (-Wreturn-type): Update description to
21593         match new behavior.
21594
21595 2007-01-30  Richard Sandiford  <richard@codesourcery.com>
21596
21597         * cfgrtl.c (try_redirect_by_replacing_jump): Check only_sets_cc0_p.
21598
21599 2007-01-30  Uros Bizjak  <ubizjak@gmail.com>
21600
21601         * builtins.c (expand_builtin_int_interclass_roundingfn): New function
21602         to handle optabs that operate on floating point input argument and
21603         output to integer output.
21604         (expand_builtin_mathfn) [BUILT_IN_ILOGB]: Move from here ...
21605         (expand_builtin_interclass_mathfn) [BUILT_IN_ILOGB]: ... to here.
21606         (expand_builtin): Expand BUILT_IN_ILOGB{,F,L} using
21607         expand_builtin_interclass_mathfn ().
21608         * config/i386/i386.md (fxtractxf3_i387): Rename from *fxtractxf3_i387.
21609         (ilogbsi2): Remove.
21610         (ilogbxf2, ilogb<mode>2): New expanders to implement ilogb, ilogbf and
21611         ilogbl built-in functions as x87 intrinsics.
21612
21613 2007-01-30  Richard Guenther  <rguenther@suse.de>
21614
21615         PR middle-end/27657
21616         * dwarf2out.c (reference_to_unused): Query varpool if the
21617         variable was output.
21618
21619 2007-01-30  Richard Guenther  <rguenther@suse.de>
21620
21621         PR middle-end/30313
21622         * passes.c (execute_one_pass): Reset in_gimple_form to not
21623         confuse non-unit-at-a-time mode.
21624
21625 2007-01-29  Roger Sayle  <roger@eyesopen.com>
21626             Richard Guenther  <rguenther@suse.de>
21627
21628         * fold-const.c (round_up): Make HIGH an unsigned HOST_WIDE_INT to
21629         avoid undefined behaviour on overflow.  Use force_fit_type_double
21630         to construct the constant with the specified TREE_OVERFLOW.
21631
21632 2007-01-29  Janis Johnson  <janis187@us.ibm.com>
21633
21634         * config/dfp-bit.c: Add parameterized support for fp exceptions.
21635         * config/dfp-bit.h: Ditto.
21636
21637 2007-01-29  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
21638
21639         * c-decl.c (pop_scope): Replace warnings with call to
21640         warn_for_unused_label.
21641         * c-common.h (warn_for_unused_label): Declare.
21642         * c-common.c (warn_for_unused_label): Define.
21643
21644 2007-01-29  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
21645
21646         * tree-optimize.c (update_inlined_to_pointers): Delete unused
21647         function.
21648
21649 2007-01-29  Janis Johnson  <janis187@us.ibm.com>
21650
21651         * Makefile.in (USER_H): Remove decfloat.h.
21652         * ginclude/decfloat.h: Delete, moving contents to ...
21653         * ginclude/float.h: Add support for decimal floating point,
21654         guarded by __STDC_WANT_DEC_FP__.
21655
21656 2007-01-29  Mike Stump  <mrs@apple.com>
21657
21658         * doc/gccint.texi (Top): Rename Loop Representation to Loop
21659         Analysis and Representation to resolve case insensitive conflict.
21660         * doc/loop.texi (Loop Analysis and Representation): Likewise.
21661
21662 2007-01-28  Daniel Berlin  <dberlin@dberlin.org>
21663
21664         * tree.h (struct tree_memory_tag): Add aliases member.
21665         (MTAG_ALIASES): New macro.
21666         * tree-ssa-alias.c (alias_bitmap_obstack): New variable.
21667         (add_may_alias): Remove pointer-set. Update for may_aliases being
21668         a bitmap.
21669         (mark_aliases_call_clobbered): Update for may_aliases being a
21670         bitmap.
21671         (compute_tag_properties): Ditto.
21672         (create_partition_for): Ditto.
21673         (compute_memory_partitions): Ditto.
21674         (dump_may_aliases_for): Ditto.
21675         (is_aliased_with): Ditto.
21676         (add_may_alias_for_new_tag): Ditto.
21677         (rewrite_alias_set_for): Rewrite for may_aliases being a bitmap.
21678         (compute_is_aliased): New function.
21679         (compute_may_aliases): Call compute_is_aliased).
21680         (init_alias_info): Initialize alias_bitmap_obstack.
21681         (union_alias_set_into): New function.
21682         (compute_flow_sensitive_aliasing): Use union_aliases_into.
21683         (have_common_aliases_p): Rewrite to take two bitmaps and use
21684         intersection.
21685         (compute_flow_insensitive_aliasing): Stop using pointer-sets.
21686         Update for bitmaps.
21687         (finalize_ref_all_pointers): Update for add_may_alias changes.
21688         (new_type_alias): Ditto.
21689         * tree-flow-inline.h (may_aliases): Return a bitmap.
21690         * tree-dfa.c (dump_variable): Check for MTAG_P'ness.
21691         * tree-ssa.c (verify_flow_insensitive_alias_info): Update for
21692         may_aliases being a bitmap.
21693         * tree-flow.h (struct var_ann_d): Remove may_aliases member.
21694         may_aliases now returns a bitmap.
21695         * tree-ssa-structalias.c (merge_smts_into): Update for may_aliases
21696         being a bitmap.
21697         * tree-ssa-operands.c (add_virtual_operand): Update for
21698         may_aliases being a bitmap.
21699
21700 2007-01-29  Daniel Berlin  <dberlin@dberlin.org>
21701
21702         PR tree-optimization/30630
21703         * tree-ssa-structalias.c (do_complex_constraint): Mark correct
21704         variable as changed.
21705
21706 2007-01-29  Simon Martin  <simartin@users.sourceforge.net>
21707
21708         PR c++/28266
21709         * gimplify.c (gimplify_target_expr): Make sure that the TARGET_EXPR is
21710         expanded only once even if an error occurs.
21711
21712 2007-01-29  Ben Elliston  <bje@au.ibm.com>
21713
21714         * gcov-io.h (__gcov_indirect_call_profiler): Declare.
21715         (__gcov_average_profiler): Likewise.
21716         (__gcov_ior_profiler): Likewise.
21717         (__gcov_merge_ior): Likewise.
21718
21719 2007-01-28  Jan Hubicka  <jh@suse.cz>
21720
21721         * builtins.c (expand_builtin_memset): Fix typo in my last patch.
21722         * value-prof.c (stringop_block_profile): Likewise.
21723
21724 2007-01-28  Jan Hubicka  <jh@suse.cz>
21725
21726         * expr.c (emit_block_move_via_movmem, emit_block_move_via_libcall):
21727         Add variant handling histograms; add wrapper.
21728         (clear_storage_via_libcall): Export.
21729         (emit_block_move_hints): Break out from ...; add histograms.
21730         (emit_block_move): ... this one.
21731         (clear_storage_hints): Break out from ...; add histograms.
21732         (clear_storage): ... this one.
21733         (set_storage_via_memset): Handle histogram.
21734         * expr.h (emit_block_move_via_libcall, emit_block_move_hints): Declare.
21735         (clear_storage_hints, clear_storage_via_libcall): Declare.
21736         (set_storage_via_setmem): Update prototype.
21737         * doc/md.texi (movmem, setmem): Document new arguments.
21738
21739         * value-prof.c (dump_histogram_value, tree_find_values_to_profile):
21740         Add new histograms.
21741         (stringop_block_profile): New global function.
21742         (tree_stringops_values_to_profile): Profile block size and alignment.
21743         * value-prof.h (enum hist_type): add HIST_TYPE_AVERAGE and
21744         HIST_TYPE_IOR.
21745         (struct profile_hooks): Add gen_average_profiler and gen_ior_profiler.
21746         (stringop_block_profile): Declare.
21747         * builtins.c: Include value-prof.h.
21748         (expand_builtin_memcpy, expand_builtin_memset): Pass block profile.
21749         * gcov-ui.h (GCOV_COUNTER_NAMES): Add new counter.
21750         (GCOV_COUNTER_AVERAGE, GCOV_COUNTER_IOR): New constants.
21751         (GCOV_COUNTERS, GCOV_LAST_VALUE_COUNTER): Update.
21752         * profile.c (instrument_values): Add new counters.
21753         * cfgexpand.c (expand_gimple_basic_block): Propagate histograms to
21754         calls.
21755         * tree-profile.c (tree_average_profiler_fn, tree_ior_profiler_fn): New.
21756         (tree_init_edge_profiler): Build new profilers.
21757         (tree_gen_average_profiler, tree_gen_ior_profiler): New.
21758         (pass_tree_profile): Add dump.
21759         (tree_profile_hooks): Update.
21760         * Makefile.in (LIBGCOV): Add new constants.
21761         * libgcov.c (__gcov_merge_ior, __gcov_average_profiler,
21762         __gcov_ior_profiler): New.
21763         * i386.md (movmem/setmem expanders): Add new optional arguments.
21764
21765 2007-01-28  David Edelsohn  <edelsohn@gnu.org>
21766
21767         * doc/md.texi (Standard Pattern Names): Document blockage pattern.
21768
21769 2007-01-28  Zdenek Dvorak <dvorakz@suse.cz>
21770
21771         * tree-ssa-loop-unswitch.c: Include tree-inline.h.
21772         (tree_unswitch_single_loop): Pass eni_size_weights to
21773         tree_num_loop_insns.
21774         * tree-ssa-loop-manip.c: Include tree-inline.h.
21775         (can_unroll_loop_p): Pass eni_size_weights to
21776         tree_num_loop_insns.
21777         * tree-ssa-loop-ch.c (should_duplicate_loop_header_p):
21778         Pass eni_size_weights to estimate_num_insns.
21779         * tree.h (init_inline_once): Export.
21780         * toplev.c (backend_init): Call init_inline_once.
21781         * cgraphunit.c (cgraph_process_new_functions,
21782         cgraph_analyze_function): Pass eni_inlining_weights to
21783         estimate_num_insns.
21784         * ipa-inline.c (compute_inline_parameters): Ditto.
21785         * tree-ssa-loop-ivcanon.c (tree_num_loop_insns): Pass weights
21786         to estimate_num_insns.
21787         (try_unroll_loop_completely): Pass eni_size_weights to
21788         tree_num_loop_insns.
21789         * tree-eh.c (decide_copy_try_finally): Pass eni_size_weights
21790         ot estimate_num_insns.
21791         * tree-ssa-loop-prefetch.c: Include tree-inline.h.
21792         (loop_prefetch_arrays): Pass eni_time_weights to tree_num_loop_insns.
21793         * tree-inline.c (eni_inlining_weights, eni_size_weights,
21794         eni_time_weights): New variables.
21795         (init_inline_once): Initialize them.
21796         (struct eni_data): Mew.
21797         (estimate_num_insns_1, estimate_num_insns): Use weights.
21798         * tree-inline.h (struct eni_weights_d): New.
21799         (eni_inlining_weights, eni_size_weights, eni_time_weights): Declare.
21800         (estimate_num_insns): Declaration changed.
21801         * cfgloop.h (tree_num_loop_insns): Declaration changed.
21802         * Makefile.in (tree-ssa-loop-unswitch.o, tree-ssa-loop-prefetch.o,
21803         tree-ssa-loop-manip.o): Add TREE_INLINE_H dependency.
21804
21805 2007-01-28  Zdenek Dvorak <dvorakz@suse.cz>
21806
21807         * tree-data-ref.c (conflict_fn): Assert that the number of affine
21808         relations in the conflict function is valid.
21809
21810 2007-01-27  Ian Lance Taylor  <iant@google.com>
21811
21812         * common.opt: Add fstrict-overflow.
21813         * opts.c (decode_options): Set flag_strict_overflow if -O2.
21814         * flags.h (TYPE_OVERFLOW_WRAPS): Define.
21815         (TYPE_OVERFLOW_UNDEFINED): Define.
21816         (TYPE_OVERFLOW_TRAPS): Define.  This replaces TYPE_TRAP_SIGNED.
21817         Replace all uses.
21818         * tree.h (TYPE_TRAP_SIGNED): Don't define.
21819         * fold-const.c (negate_expr_p): Use TYPE_OVERFLOW_UNDEFINED.
21820         (fold_negate_expr): Likewise.
21821         (make_range): Likewise.
21822         (extract_muldiv_1): Likewise.
21823         (maybe_canonicalize_comparison): Likewise.
21824         (fold_comparison): Likewise.
21825         (fold_binary): Likewise.
21826         (tree_expr_nonnegative_p): Likewise.
21827         (tree_expr_nonzero_p): Likewise.
21828         * tree-vrp.c (compare_values): Likewise.
21829         (extract_range_from_binary_expr): Likewise.
21830         (extract_range_from_unary_expr): Likewise.
21831         * tree-ssa-loop-niter.c (infer_loop_bounds_from_signedness):
21832         Likewise.
21833         (nowrap_type_p): Likewise.
21834         * tree-scalar-evolution.c (simple_iv): Likewise.
21835         * fold-const.c (negate_expr_p): Use TYPE_OVERFLOW_WRAPS.
21836         (build_range_check): Likewise.
21837         (extract_muldiv_1): Likewise.
21838         (fold_comparison): Likewise.
21839         * tree-vrp.c (vrp_int_const_binop): Likewise.
21840         (extract_range_from_unary_expr): Likewise.
21841         * convert.c (convert_to_integer): Likewise.
21842         * fold-const.c (fold_negate_expr): Use TYPE_OVERFLOW_TRAPS.
21843         (fold_comparison): Likewise.
21844         (fold_binary): Likewise.
21845         * optabs.c (optab_for_tree_code): Likewise.
21846         * tree-vectorizer.c (vect_is_simple_reduction): Likewise.
21847         * simplify-rtx.c (simplify_const_relational_operation): Check
21848         flag_strict_overflow and flag_trapv.
21849         (simplify_const_relational_operation): Likewise.
21850         * doc/invoke.texi (Option Summary): Mention -fstrict-overflow.
21851         (Optimize Options): Add -fstrict-overflow to -O2 list.  Document
21852         -fstrict-overflow.
21853
21854 2007-01-27  Roger Sayle  <roger@eyesopen.com>
21855
21856         * tree.c (tree_fold_gcd): Delete.
21857         * tree.h (tree_fold_gcd): Remove prototype.
21858         * tree-data-ref.c (tree_fold_divides_p): Don't use tree_fold_gcd to
21859         test whether one constant integer is a multiple of another.  Instead
21860         call int_const_binop with TRUNC_MOD_EXPR and test for a zero result.
21861         * fold-const.c (multiple_of_p):  We've determined both TOP and
21862         BOTTOM are integer constants so we can call int_const_binop directly
21863         instead of the more generic const_binop.
21864
21865 2007-01-27  Roger Sayle  <roger@eyesopen.com>
21866
21867         * fold-const.c (size_binop): In the fast-paths for X+0, 0+X, X-0 and
21868         1*X check that the constant hasn't overflowed, to preserve the
21869         TREE_OVERFLOW bit.
21870         (round_up): Provide an efficient implementation when rouding-up an
21871         INTEGER_CST to a power-of-two.
21872
21873 2007-01-28  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
21874
21875         * doc/sourcebuild.texi: Add comma for clarity.
21876         * doc/extend.texi: Fix some typos.
21877         * doc/passes.texi: Likewise.
21878         * doc/cppinternals.texi: Likewise.
21879         * doc/c-tree.texi: Likewise.
21880         * doc/tree-ssa.texi: Likewise.
21881         * doc/install.texi: Likewise.
21882
21883 2007-01-27  Jan Hubicka  <jh@suse.cz>
21884
21885         * tree-sra.c (sra_walk_function): Don't rely on aliases being build.
21886         (pass_sra): Do not require alias information.
21887         * passes.c (init_optimization_passes): Add SRA
21888
21889 2007-01-27  Steven Bosscher  <steven@gcc.gnu.org>
21890
21891         * tracer.c (rest_of_handle_tracer): We already cleaned
21892         up the CFG in tracer() so don't do it here again.
21893         * cfgcleanup.c (rest_of_handle_jump2): Don't repeat
21894         cleanup_cfg here, either.  And don't call renumber_insns.
21895
21896         * cfgrtl.c (rtl_verify_flow_info_1): Don't verify that BB_END
21897         and BB_HEAD are in the insn stream here.  Instead make sure
21898         that BB_INSN is valid on all insns.  Also, do check here that
21899         there are no pending branch predictions...
21900         (rtl_verify_flow_info): ...instead of doing it here.  Checks
21901         for BB_END and BB_HEAD moved from rtl_verify_flow_info_1 to
21902         here.
21903
21904 2007-01-26  Roger Sayle  <roger@eyesopen.com>
21905
21906         * config/i386/i386.c (ix86_swap_binary_operands_p): New helper
21907         function to simplify/factorize operand order canonicalization.
21908         (ix86_fixup_binary_operands): Reorganize using the above function.
21909         (ix86_binary_operator_ok): Likewise.
21910
21911 2007-01-27  Jakub Jelinek  <jakub@redhat.com>
21912
21913         * genattrtab.c (struct attr_value_list, insn_code_values): Move to
21914         file scope from optimize_attrs.
21915         (simplify_test_exp): If insn_code_values is not NULL, use it to speed
21916         up search.
21917         (optimize_attrs): Clear insn_code_values after freeing it.
21918
21919 2007-01-26  Zdenek Dvorak <dvorakz@suse.cz>
21920
21921         * tree-ssa-address.c (create_mem_ref): Remove ", bsi" from
21922         a parts.base assignment.
21923
21924 2007-01-26  Zdenek Dvorak <dvorakz@suse.cz>
21925
21926         * tree-data-ref.c (dump_subscript): Use dump_conflict_function.
21927         (compute_subscript_distance, initialize_data_dependence_relation,
21928         finalize_ddr_dependent, analyze_ziv_subscript,
21929         analyze_siv_subscript_cst_affine,
21930         compute_overlap_steps_for_affine_univar,
21931         compute_overlap_steps_for_affine_1_2, analyze_subscript_affine_affine,
21932         analyze_siv_subscript, analyze_miv_subscript,
21933         analyze_overlapping_iterations, subscript_dependence_tester_1,
21934         compute_self_dependence, free_dependence_relation): Work
21935         with affine_fn instead of chrecs.
21936         (dump_affine_function, dump_conflict_function, affine_function_equal_p,
21937         common_affine_function, affine_function_base,
21938         affine_function_constant_p, affine_fn_op, affine_fn_plus,
21939         affine_fn_minus, affine_fn_free, conflict_fn_not_known,
21940         conflict_fn_no_dependence, free_conflict_function, free_subscripts,
21941         conflict_fn, affine_fn_cst, affine_fn_univar): New functions.
21942         (all_chrecs_equal_p): Removed.
21943         * tree-data-ref.h (affine_fn, conflict_function): New types.
21944         (struct subscript): Change type of conflicting_iterations_in_a
21945         and conflicting_iterations_in_b.
21946
21947 2007-01-26  Steve Ellcey  <sje@cup.hp.com>
21948
21949         PR other/30182
21950         * config/pa/pa.h (TARGET_HPUX_11): New.
21951         * config/pa/pa-hpux11.h (TARGET_HPUX_11): New.
21952         * config/pa/pa.c (pa_init_builtins): Use TARGET_HPUX_11.
21953
21954 2007-01-26  Daniel Berlin  <dberlin@dberlin.org>
21955         Richard Guenther  <rguenther@suse.de>
21956
21957         * tree-ssa-structalias.c (solve_graph): Handle case
21958         we merged the variable to another.
21959
21960 2007-01-25  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
21961
21962         * builtins.c (fold_builtin_1): Treat ccos and ccosh as 'even'
21963         functions.
21964
21965         * fold-const.c (negate_mathfn_p): Treat casin, casinh, catan,
21966         catanh, cproj, csin, csinh, ctan and ctanh as 'odd' functions.
21967
21968 2007-01-25  DJ Delorie  <dj@redhat.com>
21969
21970         * config/m32c/m32c.c (m32c_cannot_change_mode_class): We don't
21971         allow changes to modes which don't fit in those registers.
21972
21973         * reload1.c (choose_reload_regs): Check for invalid subregs before
21974         computing their locations, not after.
21975
21976 2007-01-25  Geoffrey Keating  <geoffk@apple.com>
21977
21978         PR 25127
21979         * config/rs6000/rs6000.c (first_altivec_reg_to_save): On Darwin,
21980         save Altivec registers in an eh_return function.
21981         (compute_vrsave_mask): Likewise.
21982         (rs6000_stack_info): Correct AIX/Darwin stack alignment computation
21983         for saving Altivec registers.
21984         (rs6000_emit_prologue): Don't allocate stack twice in
21985         eh_return function.  Correct expected value of altivec_save_offset
21986         when using save_world.  Describe save of R0 to stack when using
21987         save_world.  Describe stack pointer adjustment when using
21988         save_world.  Remove duplicated eh_return parameter register saving.
21989         Update sp_offset variable after save_world.
21990         * config/rs6000/t-darwin (LIB2FUNCS_STATIC_EXTRA): Remove
21991         darwin-world.asm.
21992         (LIB2FUNCS_EXTRA): Add darwin-world.asm.
21993         * config/rs6000/darwin.h (SUBTARGET_OVERRIDE_OPTIONS): -m64
21994         implies Altivec.
21995
21996 2007-01-25  Steve Ellcey  <sje@cup.hp.com>
21997
21998         * config.gcc (ia64*-*-hpux*): Make posix threads the default.
21999
22000 2007-01-25  Steve Ellcey  <sje@cup.hp.com>
22001
22002         PR other/30182
22003         * config/pa/pa.c (pa_init_builtins): Set asm names for finite routines.
22004         * config/ia64/ia64.c (ia64_init_builtins):  Ditto.
22005
22006 2007-01-25  Richard Guenther  <rguenther@suse.de>
22007
22008         * doc/invoke.texi (-Wcoverage-mismatch): Document.
22009         * common.opt (-Wcoverage-mismatch): New warning option.
22010         * coverage.c (get_coverage_counts): Ignore coverage mismatch
22011         if -Wcoverage-mismatch is given.
22012
22013 2007-01-25  Razya Ladelsky  <razya@il.ibm.com>
22014
22015         * ipa-cp.c (ipcp_insert_stage, ipcp_driver): Support for SSA.
22016         (ipcp_driver): Change to static definition.
22017         Add dumping of the ifunctions.
22018         (constant_val_insert): Remove unused parameter. Support for SSA.
22019         (ipcp_propagate_const): Support for SSA.
22020         (ipcp_profile_bb_print): Print only analyzed nodes.
22021         (ipcp_replace_map_create): Remove support for Fortran constant
22022         for now.
22023         * ipa-prop.c (ipa_method_modify_stmt,
22024         ipa_callsite_compute_param): Support for SSA.
22025         * ipa-prop.h (ipcp_driver): Remove declaration.
22026         (IS_VALID_TREE_MAP_INDEX): Add define.
22027
22028 2007-01-24  Geoffrey Keating  <geoffk@apple.com>
22029
22030         * unwind-dw2.c (execute_stack_op): Handle DW_OP_swap.
22031
22032 2007-01-24  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
22033
22034         PR middle-end/30447
22035         * builtins.c (fold_builtin_cabs): Use MPFR to evaluate a
22036         constant argument to cabs and do it without checking for
22037         -funsafe-math-optimizations.
22038
22039 2007-01-24  Douglas Gregor  <dgregor@osl.iu.edu>
22040
22041         * c-common.h (RID_FIRST_CXX0X): New.
22042         (RID_LAST_CXX0X): New.
22043         * c-opts.c (c_common_handle_option): -Wc++0x-compat is triggered
22044         by -Wall.
22045         * c.opt (Wc++0x-compat): New.
22046         * doc/invoke.texi (-Wc++0x-compat): Document.
22047
22048 2007-01-24  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
22049
22050         * builtins.c (fold_builtin_carg): New.
22051         (fold_builtin_1): Use it.
22052
22053 2007-01-24  Jan Hubicka  <jh@suse.cz>
22054
22055         * ipa-inline.c (cgraph_decide_inlining): Initialize initial_insns.
22056
22057         * ipa-inline.c (initial_insns, max_insns): Delete.
22058         (compute_max_insns): New function.
22059         (cgraph_decide_inlining_of_small_function): Use it; take minimal
22060         amount of insns as base for code growth.
22061         (cgraph_decide_inlining): Make initial_insns local; do not compute
22062         max_insns.
22063         * params.def (PARAM_INLINE_UNIT_GROWTH): Set to 60.
22064         * doc/invoke.texi (inline-unit-growth): Update docs.
22065
22066 2007-01-24  Jakub Jelinek  <jakub@redhat.com>
22067
22068         * config/i386/i386.h (x86_cmpxchg16b): Remove const.
22069         (TARGET_CMPXCHG16B): Define to x86_cmpxchg16b.
22070         * config/i386/i386.c (x86_cmpxchg16b): Remove const.
22071         (override_options): Add PTA_CX16 flag.  Set x86_cmpxchg16b
22072         for CPUs that have PTA_CX16 set.
22073
22074         PR middle-end/27416
22075         * gimplify.c (omp_check_private): New function.
22076         (gimplify_scan_omp_clauses): Use it for
22077         firstprivate/lastprivate/reduction.
22078
22079         PR middle-end/30494
22080         * gimplify.c (omp_add_variable): Don't call omp_notice_variable
22081         on TYPE_SIZE_UNIT for GOVD_LOCAL VLAs.
22082
22083         PR middle-end/30421
22084         * omp-low.c (lower_omp_for_lastprivate): Add dlist argument.
22085         If lower_lastprivate_clauses emits some statements, append them
22086         to dlist rather than body_p and to body_p append an initializer.
22087         (lower_omp_for): Adjust caller.
22088
22089 2007-01-24  Steve Ellcey  <sje@cup.hp.com>
22090
22091         * target.h (globalize_decl_name): New.
22092         * target-def.h (TARGET_ASM_GLOBALIZE_DECL_NAME): New.
22093         * output.h (default_globalize_decl_name): New.
22094         * varasm.c (asm_output_bss): Use globalize_decl_name instead of
22095         globalize_label.
22096         (globalize_decl): Ditto.
22097         (default_globalize_decl_name): New.
22098         * config/ia64/ia64.c (ia64_globalize_decl_name): New.
22099         (ia64_handle_version_id_attribute): New.
22100         (TARGET_ASM_GLOBALIZE_DECL_NAME): New.
22101         (ia64_asm_output_external): Use globalize_decl_name instead
22102         of globalize_label.
22103         * doc/extend.texi (version_id): New pragma.
22104         * doc/tm.texi (ARGET_ASM_GLOBALIZE_DECL_NAME): New target hook.
22105
22106 2007-01-24  Andreas Krebbel  <krebbel1@de.ibm.com>
22107
22108         * unwind-dw2-fde.c (get_cie_encoding): Replaced _Unwind_Word with
22109         _uleb128_t and _Unwind_SWord with _sleb128_t.
22110         * unwind-dw2.c (extract_cie_info, execute_stack_op,
22111         execute_cfa_program, uw_frame_state_for, uw_update_context_1):
22112         Likewise.
22113         * unwind-c.c (parse_lsda_header, PERSONALITY_FUNCTION): Likewise.
22114         * unwind-pe.h (read_uleb128, read_sleb128,
22115         read_encoded_value_with_base): Likewise.
22116         * unwind-generic.h: Define _sleb128_t and _uleb128_t types.
22117
22118 2007-01-24  Richard Guenther  <rguenther@suse.de>
22119
22120         * builtins.c (expand_builtin_cexpi): Get the fndecl
22121         for cexp in the correct way.
22122
22123 2007-01-24  Jan Hubicka  <jh@suse.cz>
22124
22125         * tree-ssa-dce.c (eliminate_unnecesary_stmts): Remove dead LHS
22126         of calls.
22127
22128 2007-01-24  Andreas Krebbel  <krebbel1@de.ibm.com>
22129
22130         * c-cppbuiltin.c (builtin_define_type_sizeof): New function.
22131         (c_cpp_builtins): New builtin macros: __SIZEOF_INT__, __SIZEOF_LONG__,
22132         __SIZEOF_LONG_LONG__, __SIZEOF_SHORT__, __SIZEOF_POINTER__,
22133         __SIZEOF_FLOAT__, __SIZEOF_DOUBLE__, __SIZEOF_LONG_DOUBLE__,
22134         __SIZEOF_SIZE_T__, __SIZEOF_WCHAR_T__, __SIZEOF_WINT_T__ and
22135         __SIZEOF_PTRDIFF_T__.
22136         * doc/cpp.texi: Documentation for the new builtin macros added.
22137
22138 2007-01-24  Uros Bizjak  <ubizjak@gmail.com>
22139
22140         * config/i386/i386.md (tanxf2, tan<mode>2, atan<mode>2, log<mode>2,
22141         log10<mode>2, log2<mode>2, expxf2, exp10xf2, exp2xf2): Use op2
22142         instead of operands[2] to avoid access past the end of array.
22143
22144 2007-01-24  Richard Sandiford  <richard@codesourcery.com>
22145
22146         * reload1.c (emit_reload_insns): Pass the reload register
22147         for a non-spill output reload through forget_old_reloads_1.
22148
22149 2007-01-23  Joseph Myers  <joseph@codesourcery.com>
22150
22151         * config/rs6000/rs6000-c.c (rs6000_cpu_cpp_builtins): Define
22152         _SOFT_DOUBLE if doubles use software floating-point.
22153         * config/rs6000/libgcc-ppc-glibc.ver: Export additional long
22154         double functions if _SOFT_DOUBLE, not _SOFT_FLOAT.
22155         * config/rs6000/darwin-ldouble.c: Also compile functions for
22156         hard-float without FPRs.  Use fmsub function for all __NO_FPRS__
22157         cases.  Compile extra functions if _SOFT_DOUBLE, not _SOFT_FLOAT.
22158         * config/rs6000/linuxspe.h (SUBSUBTARGET_OVERRIDE_OPTIONS): Remove
22159         commented-out long double override.
22160         (CPP_LONGDOUBLE_DEFAULT_SPEC): Likewise.
22161         * config/rs6000/eabispe.h: Likewise.
22162         * config/rs6000/rs6000.c (rs6000_override_options): Don't override
22163         long double for non-SPE.
22164         (rs6000_handle_option): Likewise.
22165         (invalid_e500_subreg): Disallow more subregs involding DImode,
22166         DFmode, TImode or TFmode.
22167         (rs6000_legitimate_offset_address_p): Check TFmode offsets for
22168         E500 double.
22169         (legitimate_lo_sum_address_p): Also check for TFmode for E500
22170         double.
22171         (rs6000_legitimize_address): Also handle TFmode for E500 double.
22172         (rs6000_legitimize_reload_address): Also handle TFmode for E500
22173         double.
22174         (rs6000_legitimate_address): Also check for TFmode for E500
22175         double.
22176         (rs6000_emit_move): Use DFmode subregs of TFmode for E500 double.
22177         (spe_build_register_parallel): Handle TFmode and TCmode.
22178         (rs6000_spe_function_arg): Handle TFmode and TCmode for E500
22179         double.
22180         (function_arg): Handle TFmode and TCmode for E500 double.
22181         (rs6000_init_libfuncs): Initialize extra libfuncs for soft double
22182         in general.
22183         (print_operand): Handle TFmode and TImode for %y.
22184         (rs6000_generate_compare): Handle TFmode comparisons for E500
22185         double.
22186         (spe_func_has_64bit_regs_p): Check for TFmode for E500 double.
22187         (rs6000_function_value): Handle TFmode and TCmode for E500 double.
22188         (rs6000_libcall_value): Handle TFmode and TCmode for E500 double.
22189         * config/rs6000/rs6000.h (CANNOT_CHANGE_MODE_CLASS): Check for
22190         TFmode for E500 double.
22191         * config/rs6000/rs6000.md (FP): Allow TF for E500 double.
22192         (floatsidf2): Enable for E500 double.
22193         (movtf_softfloat): Use rs6000_nonimmediate_operand.
22194         (extenddftf2): Change to extenddftf2_fprs.
22195         (extenddftf2): Call gen_spe_extenddftf2 or gen_extenddftf2_fprs
22196         depending on TARGET_E500_DOUBLE.
22197         (extendsftf2): Enable for E500 double.
22198         (trunctfdf2): Enable for E500 double.
22199         (trunctfsf2): Change to trunctfsf2_fprs.
22200         (trunctfsf2): Call gen_spe_trunctfsf2 or gen_trunctfsf2_fprs
22201         depending on TARGET_E500_DOUBLE.
22202         (floatsitf2): Enable for E500 double.
22203         (fix_trunctfsi2): Change to fix_trunctfsi2_fprs.
22204         (fix_trunctfsi2): Call gen_spe_fix_trunctfsi2 or
22205         gen_fix_trunctfsi2_fprs depending on TARGET_E500_DOUBLE.
22206         (negtf2): Change to negtf2_internal.
22207         (negtf2): New expander.
22208         (abstf2): Enable for E500 double.  Call gen_spe_abstf2_tst,
22209         gen_spe_abstf2_cmp or gen_abstf2_internal depending on
22210         TARGET_E500_DOUBLE and flag_unsafe_math_optimizations.
22211         (movdi_internal32): Use rs6000_nonimmediate_operand.
22212         (unnamed splitter): Likewise.
22213         * config/rs6000/spe.md (CMPTFEQ_GPR, TSTTFEQ_GPR, CMPTFGT_GPR,
22214         TSTTFGT_GPR, CMPTFLT_GPR, TSTTFLT_GPR): New unspecs.
22215         (SPE64TF, DITI): New mode macros.
22216         (frob_df_di): Change to frob_<SPE64:mode>_<DITI:mode>; allow more
22217         modes.
22218         (frob_tf_ti): New.
22219         (frob_<mode>_di_2): New.
22220         (frob_tf_di_8_2): New.
22221         (frob_di_df): Change to frob_di_<mode>; allow more modes.
22222         (frob_ti_tf): New.
22223         (frob_di_df_2): Change to frob_<DITI:mode>_<SPE64:mode>_2; allow
22224         more modes.
22225         (frob_ti_<mode>_8_2): New.
22226         (frob_ti_tf_2): New.
22227         (mov_si<mode>_e500_subreg0, mov_si<mode>_e500_subreg0_2,
22228         mov_si<mode>_e500_subreg4, mov_si<mode>_e500_subreg4_2): Allow
22229         TFmode.
22230         (mov_sitf_e500_subreg8, mov_sitf_e500_subreg8_2,
22231         mov_sitf_e500_subreg12, mov_sitf_e500_subreg12_2): New.
22232         (spe_trunctfdf2_internal1, spe_trunctfsf2, spe_extenddftf2,
22233         spe_fix_trunctfsi2, spe_fix_trunctfsi2_internal,
22234         spe_negtf2_internal, spe_abstf2_cmp, spe_abstf2_tst): New.
22235         (cmptfeq_gpr, tsttfeq_gpr, cmptfgt_gpr, tsttfgt_gpr, cmptflt_gpr,
22236         tsttflt_gp): New.
22237
22238 2007-01-23  Ian Lance Taylor  <iant@google.com>
22239
22240         * Makefile.in (OBJS-common): Reformat, alphabetize, but put
22241         insn-*.o first.
22242         (OBJS-archive): Reformat, alphabetize.
22243         (OBJS): Change out_object_file to OBJS-md.
22244
22245 2007-01-23  Uros Bizjak  <ubizjak@gmail.com>
22246
22247         * config/i386/i386.md: Use REG_P, MEM_P, CONST_INT_P, LABEL_P,
22248         JUMP_P and CALL_P predicates where applicable.
22249         * config/i386/i386.c: Ditto.
22250         * config/i386/i386.md: Ditto.
22251         * config/i386/mmx.md: Ditto.
22252         * config/i386/predicates.md: Ditto.
22253
22254 2007-01-22  Andreas Schwab  <schwab@suse.de>
22255
22256         * config/m68k/m68k.h: Fix comment.
22257
22258 2007-01-22  Jan Hubicka  <jh@suse.cz>
22259
22260         * passes.c (init_optimization_passes): Do not rerun
22261         pass_early_warn_uninitialized.
22262
22263 2007-01-22  Richard Guenther  <rguenther@suse.de>
22264
22265         PR tree-optimization/30038
22266         * tree-ssa-math-opts.c (maybe_record_sincos): New static helper
22267         function.
22268         (execute_cse_sincos_1): Likewise.
22269         (execute_cse_sincos): Likewise.
22270         (gate_cse_sincos): Likewise.
22271         (pass_cse_sincos): New pass CSEing sin() and cos() calls using
22272         the cexpi() canonicalization of sincos().
22273         * tree-pass.h (pass_cse_sincos): Declare.
22274         * passes.c (init_optimization_passes): New pass pas_cse_sincos.
22275
22276 2007-01-21  Eric Botcazou  <ebotcazou@libertysurf.fr>
22277
22278         PR rtl-optimization/29329
22279         * combine.c (replaced_rhs_insn): Rename to i2mod.
22280         (replaced_rhs_value): Rename to i2mod_new_rhs.
22281         (i2mod_old_rhs): New global variable.
22282         (combine_instructions): Adjust for above change.  Save a copy of
22283         the old RHS into i2mod_old_rhs when the contents of a REG_EQUAL
22284         note are substituted in the second instruction.
22285         (distribute_notes) <REG_DEAD>: Adjust for above change.  Do not
22286         ditch the note if it pertains to the second eliminated register
22287         and this register is mentioned in i2mod_old_rhs.
22288
22289         Revert:
22290         2006-09-12  Eric Botcazou  <ebotcazou@libertysurf.fr>
22291
22292         * combine.c (distribute_notes) <REG_DEAD>: Do not consider SETs past
22293         the insn to which the note was originally attached.
22294
22295 2007-01-21  Jan Hubicka  <jh@suse.cz>
22296
22297         * ipa-inline.c (inlining_mode): Comment, move up.
22298         (cgraph_decide_inlining_incrementally): Do not perform inlining
22299         itself; fix handling of flattening of self recursive functions.
22300         (cgraph_find_cycles): Remove.
22301         (cgraph_flatten_node): Remove.
22302         (cgraph_decide_inlining): Use incremental inliner to handle flattening.
22303         (try_inline): New function.
22304         (cgraph_early_inlining): Update call of
22305         cgraph_decide_inlining_incrementally.  Apply inlining here.
22306         (apply_inline): Update call of cgraph_decide_inlining_incrementally.
22307
22308 2007-01-21  Dirk Mueller  <dmueller@suse.de>
22309
22310         PR bootstrap/30511
22311         * tree-vrp.c (check_array_bounds): do not warn
22312         about ADDR_EXPR's of ARRAY_REF's which are immediately
22313         used in binary expressions.
22314
22315 2007-01-21  Ira Rosen  <irar@il.ibm.com>
22316
22317         * tree-vectorizer.h (struct _stmt_vec_info): Add new field
22318         read_write_dep and macros for its access.
22319         * tree-vectorizer.c (new_stmt_vec_info): Initialize the new field.
22320         * tree-vect-analyze.c (vect_analyze_data_ref_dependence): Remove
22321         argument, call vect_check_interleaving for every independent pair of
22322         data-refs. Mark loads that access the same memory location as a store
22323         in the loop.
22324         (vect_check_dependences): Remove.
22325         (vect_analyze_data_ref_dependences): Remove  vect_check_dependences
22326         call, fix the call to vect_analyze_data_ref_dependence.
22327         (vect_analyze_data_ref_access): For statements that access the same
22328         data-ref, check that they are not stores; for loads, check that there
22329         is no store that access the same location.
22330
22331 2007-01-20  Roger Sayle  <roger@eyesopen.com>
22332             Joseph Myers  <joseph@codesourcery.com>
22333
22334         * doc/invoke.texi (-fdump-rtl-combine): Fix under/overfull hbox.
22335         (-fdump-rtl-stack): Likewise.
22336         (-fno-signed-zeros): Use @minus{} for a minus sign.  Correct typo.
22337         (-mcheck-zero-division, -mcpu): Fix under/overfull hbox.
22338         (-mpt-fixed): Use @minus{} for minus sign.
22339         (Using Precompiled Headers): Fix under/overfull hbox.
22340
22341 2007-01-20  Jan Hubicka  <jh@suse.cz>
22342
22343         * tree-flow.h (struct stmt_ann_d): Move references_memory to proper
22344         place within annotation.
22345
22346 2007-01-20  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
22347
22348         * pa.c (output_move_double): Change array size of xoperands to 4.
22349
22350 2007-01-20  Jan Hubicka  <jh@suse.cz>
22351
22352         * tree-tailcall.c (adjust_return_value): Do not use RESULT_DECL
22353         as temporary.
22354
22355 2007-01-19  Ian Lance Taylor  <iant@google.com>
22356
22357         * expmed.c (expand_divmod) [TRUNC_MOD_EXPR, TRUNC_DIV_EXPR]: Cast
22358         constant to unsigned HOST_WIDE_INT before negating.
22359
22360 2007-01-19  Ian Lance Taylor  <iant@google.com>
22361
22362         * tree-ssa-operands.h (struct vuse_vec_d): Change num_vuse field
22363         to unsigned.
22364         (VUSE_VECT_ELEMENT) [ENABLE_CHECKING]: Use unsigned comparison.
22365         (VUSE_ELEMENT_PTR) [ENABLE_CHECKING]: Likewise.
22366         (SET_VUSE_VECT_ELEMENT) [ENABLE_CHECKING]: Likewise.
22367         (SET_VUSE_ELEMENT_VAR) [ENABLE_CHECKING]: Likewise.
22368         (SET_VUSE_ELEMENT_PTR) [ENABLE_CHECKING]: Likewise.
22369         (realloc_vdef, realloc_vuse): Change second parameter to
22370         unsigned.
22371         (ssa_operand_iterator_d): Change vuse_index and mayuse_index
22372         fields to unsigned.
22373         * tree-ssa-operands.c (realloc_vop): Change num_elem parameter to
22374         unsigned. Change x and lim locals to unsigned.
22375         (realloc_vdef, realloc_vuse): Change num_elem parameter to
22376         unsigned.
22377         (finalize_ssa_vuse_ops): Change old_i local to unsigned.
22378         (copy_virtual_operands): Change i and n locals to unsigned.
22379
22380 2007-01-19  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
22381
22382         PR middle-end/29335
22383         * builtins.c (fold_builtin_1): Handle builtin fdim.
22384
22385 2007-01-20  Jan Hubicka  <jh@suse.cz>
22386
22387         * tree-ssa.c (init_tree_ssa): Do not call init_alias_heapvars.
22388         * tree-ssa-structalias.c (compute_points_to_sets): Do call
22389         init_alias_heapvars.
22390         (init_alias_heapvars): Initialize only when not already initialized.
22391         (delete_alias_heapvars): Set heapvar_for_stmt to NULL.
22392
22393 2007-01-19  Roger Sayle  <roger@eyesopen.com>
22394
22395         * common.opt (fsigned-zeros): New command line option.
22396         * flags.h (HONOR_SIGNED_ZEROS): Control via flag_signed_zeros instead
22397         of flag_unsafe_math_optimizations.
22398         * opts.c (set_fast_math_flags): The -ffast-math command line option
22399         implies -fno-signed-zeros.
22400         (fast_math_flags_set_p): Likewise.
22401
22402         * doc/invoke.texi: Document new -fno-signed-zeros option, and update
22403         the documentation of -ffast-math appropriately.  Wrap long lines.
22404
22405 2007-01-19  Steve Ellcey  <sje@cup.hp.com>
22406
22407         * system.h (ASM_MAKE_LABEL_LINKONCE): Poison.
22408         * varasm.c (globalize_decl): Remove ASM_MAKE_LABEL_LINKONCE ifdef.
22409
22410 2007-01-19  Tomas Bily  <tbily@suse.cz>
22411
22412         * cgraphunit.c (cgraph_finalize_function): Updating of pid
22413         * tree-profile.c:
22414         (tree_init_ic_make_global_vars): New function
22415         (tree_init_edge_profiler): call of tree_init_ic_make_global_vars
22416         (tree_gen_ic_profiler): New function
22417         (tree_gen_ic_func_profiler): New function
22418         (tree_profiling): Added calling of tree_gen_ic_func_profiler
22419         (tree_profile_hooks): Added hook for indirec/virtual calls
22420         * value-prof.c (tree_find_values_to_profile): New case for
22421         indirect calls
22422         (tree_values_to_profile): Call for determining indirect/virtual
22423         counters
22424         (tree_indirect_call_to_profile): New function
22425         (tree_ic_transform): New function
22426         (tree_ic): New function
22427         (find_func_by_pid): New function
22428         (init_pid_map): New function
22429         (tree_value_profile_transformations): Added check for
22430         indirect/virtual call transformation
22431         * value-prof.h (enum hist_type): New counter type for
22432         indirect/virtual calls
22433         (profile_hooks): Added new hook for profiling indirect/virtual
22434         calls
22435         * profile.c (instrument_values): New case for indirect/virtual
22436         call added
22437         * gcov-io.h (GCOV_LAST_VALUE_COUNTER): Changed to 6
22438         (GCOV_COUNTER_V_INDIR): New counter type
22439         (GCOV_COUNTER_NAMES): New name of counter "indirect" added
22440         (GCOV_MERGE_FUNCTIONS): New merge function for indirect/virtual
22441         call added
22442         * cgraph.c: Definition of cgraph_max_pid
22443         (cgraph_create_node): Default init of pid attribute
22444         * cgraph.h: Declaration of cgraph_max_pid
22445         (struct cgraph_node): Added pid attribute
22446         * libgcov.c (__gcov_indirect_call_profiler): New function
22447         (__gcov_one_value_profiler_body): New function
22448         (__gcov_one_value_profiler): Body was moved to
22449         __gcov_one_value_profiler_body and calls it
22450
22451 2007-01-19  Basile Starynkevitch  <basile@starynkevitch.net>
22452
22453         * doc/gty.texi (Options): Document the mark_hook option to GTY.
22454         * gengtype.c (write_types_data, write_func_for_structure,
22455         write_types, ggc_wtd, pch_wtd): Add skip_hooks to
22456         write_types_data, ggc_wtd, pch_wtd for processing mark_hook.
22457         (walk_type, write_func_for_structure): Generate the mark_hook if
22458         needed.
22459
22460 2007-01-19  Jan Hubicka  <jh@suse.cz>
22461
22462         * ipa-inline.c (cgraph_decide_inlining_incrementally): Instead of
22463         'early' argument take inlining mode argument specifying whether to
22464         inline for size/speeed or all functions; add support for flattening;
22465         improve dumpting.
22466         (cgraph_early_inlining): Update call of decide_inlining_incrementally.
22467
22468 2007-01-19  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
22469
22470         PR c++/17947
22471         * toplev.c (warn_deprecated_use): Use %qD instead of %qs to print
22472         the name of the declared identifier.
22473
22474 2007-01-19  Dirk Mueller  <dmueller@suse.de>
22475
22476         * config/i386.h (CONDITIONAL_REGISTER_USAGE): Store
22477         result of PIC_OFFSET_TABLE_REGNUM in temporary variable to avoid
22478         duplicate evaluation.
22479
22480 2007-01-19  Uros Bizjak  <ubizjak@gmail.com>
22481
22482         * config/i386/i386.md (acos<mode>2): Rename from acossf2 and acosdf2.
22483         Macroize expander using X87MODEF12 mode macro.  Extend operand 1
22484         to XFMode, use acosxf2 and truncate result to requested mode.
22485         Use SSE_FLOAT_MODE_P to disable patterns for SSE math.
22486         (asin<mode>2): Similarly, with asin expanders.
22487         (*fscalexf4_i387): Rename from *fscalexf4.
22488         (expNcorexf3): New expander.
22489         (expxf2, exp10xf2, exp2xf2): Use expNcorexf3 expander.
22490         (exp<mode>2): Rename from expsf2 and expdf2. Macroize expander using
22491         X87MODEF12 mode macro.  Extend operand 1 to XFMode, use expxf2 and
22492         truncate result to requested mode. Use SSE_FLOAT_MODE_P to disable
22493         patterns for SSE math.
22494         (exp10<mode>2): Similarly, with exp10 expanders.
22495         (exp2<mode>2): Similarly, with exp2 expanders.
22496         (expm1<mode>2): Similarly, with expm1 expanders.
22497         (ldexp<mode>3): Similarly, with ldexp expanders.
22498         (log<mode>2, log10<mode>2, log2<mode>2, log1p<mode>2, logb<mode>2):
22499         Use gen_truncxf<mode>2_i387_noop to truncate result.
22500
22501 2007-01-19  Richard Sandiford  <richard@codesourcery.com>
22502
22503         * config/m68k/m68k.h (PREFERRED_STACK_BOUNDARY): Define to 32
22504         for ColdFire targets.
22505
22506 2007-01-19  Nathan Sidwell  <nathan@codesourcery.com>
22507             Richard Sandiford  <richard@codesourcery.com>
22508
22509         * config/m68k/m68k.h (M68K_STATIC_CHAIN_REG_NAME): New macro.
22510         (INITIALIZE_TRAMPOLINE): Use STATIC_CHAIN_REGNUM.
22511         (__transfer_from_trampoline): Use M68K_STATIC_CHAIN_REG_NAME.
22512         * config/m68k/m68kelf.h (STATIC_CHAIN_REGNUM): Override.
22513         (M68K_STATIC_CHAIN_REG_NAME): Likewise.
22514         * config/m68k/netbsd-elf.h (M68K_STATIC_CHAIN_REG_NAME): Likewise.
22515
22516 2007-01-19  Richard Sandiford  <richard@codesourcery.com>
22517
22518         * config/m68k/m68k.md (adddi_dilshr32): Rename to...
22519         (*adddi_dilshr32): ...this.  Fix formatting.  Remove commented-out
22520         non-canonical pattern.  Restrict to !TARGET_COLDFIRE.
22521         (*adddi_dilshr32_cf): New pattern.
22522         (adddi3, subdi3): Remove first alternatives.
22523
22524 2007-01-19  Richard Sandiford  <richard@codesourcery.com>
22525
22526         * config/m68k/m68k.c (notice_update_cc): If an SFmode move is
22527         implemented using move.l, do not use its cc result for floating-point
22528         comparisons.
22529
22530 2007-01-19  Richard Sandiford  <richard@codesourcery.com>
22531
22532         * config/m68k/m68k.h (EXTRA_CONSTRAINT): Stop the 'T' constraint
22533         from accepting 's' constraints if flag_pic.
22534
22535 2007-01-19  Richard Sandiford  <richard@codesourcery.com>
22536
22537         * config/m68k/m68k.md (bordered, bunordered, buneq, bunge, bungt)
22538         (bunle, bunlt, bltgt, bordered_rev, bunordered_rev, buneq_rev)
22539         (bunge_rev, bungt_rev, bunle_rev, bunlt_rev, bltgt_rev): Change
22540         condition from TARGET_68881 to TARGET_HARD_FLOAT.
22541
22542 2007-01-19  Sandra Loosemore  <sandra@codesourcery.com>
22543
22544         * longlong.h (count_leading_zeros, COUNT_LEADING_ZEROS_0): Add
22545         ColdFire alternatives.
22546         * config/m68k/m68k.h (CLZ_DEFINED_VALUE_AT_ZERO): New macro.
22547         * config/m68k/m68k.md (clzsi2):  Define for ColdFire
22548         architectures that support ff1 instruction.
22549
22550 2007-01-19  Richard Sandiford  <richard@codesourcery.com>
22551             Julian Brown  <julian@codesourcery.com>
22552
22553         * config/m68k/m68k.h (CONST_OK_FOR_LETTER_P): Add an 'R' case.
22554         * config/m68k/m68k.md (*movsi_cfv4): Fold into...
22555         (*movsi_cf): ...here.  Remove unnecessary 'R' from 'Rg'.
22556         Add commentary.
22557
22558 2007-01-19  Richard Sandiford  <richard@codesourcery.com>
22559
22560         * config/m68k/m68k-protos.h (valid_mov3q_const): Take a HOST_WIDE_INT
22561         and return a bool.
22562         (output_move_const_into_data_reg, output_move_simode_const): Delete.
22563         * config/m68k/m68k.c (const_method, const_int_cost): Take a
22564         HOST_WIDE_INT instead of an rtx.
22565         (m68k_rtx_costs): Update call accordingly.
22566         (output_move_const_into_data_reg): Likewise.  Fix formatting.
22567         (valid_mov3q_const): Take a HOST_WIDE_INT instead of an rtx.
22568         Return a bool.
22569         (output_move_simode_const): Update calls after above changes.
22570         Rework to use automatic variables and predicates like MEM_P.
22571         * config/m68k/m68k.md (pushexthisi_const): Update call to
22572         valid_mov3q_const.
22573
22574 2007-01-19  Dirk Mueller  <dmueller@suse.de>
22575
22576         * tree-ssa-alias.c (perform_var_substitution): Fix typo
22577         in dump_flags test.
22578
22579 2007-01-19  Richard Guenther  <rguenther@suse.de>
22580
22581         * builtins.c (expand_builtin_cexpi): Fall back to expanding
22582         via cexp in case sincos is not available.
22583
22584 2007-01-19  Richard Guenther  <rguenther@suse.de>
22585
22586         * doc/tm.texi (TARGET_HAS_SINCOS): Document new target macro.
22587         * defaults.h (TARGET_HAS_SINCOS): Default to off.
22588         * config/linux.h (TARGET_HAS_SINCOS): Set to on if we have glibc.
22589         * config/alpha/linux.h (TARGET_HAS_SINCOS): Likewise.
22590         * config/sparc/linux.h (TARGET_HAS_SINCOS): Likewise.
22591         * config/sparc/linux64.h (TARGET_HAS_SINCOS): Likewise.
22592         * config/rs6000/linux.h (TARGET_HAS_SINCOS): Likewise.
22593         * config/rs6000/linux64.h (TARGET_HAS_SINCOS): Likewise.
22594
22595 2007-01-19  Uros Bizjak  <ubizjak@gmail.com>
22596
22597         * config/i386/i386.md (*fpatanxf3_i387, fpatan_extend<mode>xf3_i387):
22598         New insn patterns.
22599         (atan2sf3_1, atan2df3_1, atan2xf3_1): Remove insn patterns.
22600         (atan2xf3): Directly generate RTL pattern.
22601         (atan2<mode>3): Rename from atan2sf3 and atan2df3 and macroize insn
22602         patterns using X87MODEF12 mode macro.  Use fpatan_extend<mode>xf3_i387
22603         and truncate result to requested mode.  Use SSE_FLOAT_MODE_P to
22604         disable patterns for SSE math.
22605         (atan<mode>2): Rename from atansf2 and atandf2 and macroize insn
22606         patterns using X87MODEF12 mode macro.  Use fpatan_extend<mode>xf3_i387
22607         and truncate result to requested mode.  Use SSE_FLOAT_MODE_P to
22608         disable patterns for SSE math.
22609
22610 2007-01-19  Alexandre Oliva  <aoliva@redhat.com>
22611
22612         * libgcc-std.ver: Fix typo in %inherit for GCC_4.3.0.
22613
22614 2007-01-18  Roger Sayle  <roger@eyesopen.com>
22615
22616         * fold-const.c (fold_unary) <VIEW_CONVERT_EXPR>: Optimize away a
22617         VIEW_CONVERT_EXPR to the same type as it's operand.
22618
22619 2007-01-18  David Edelsohn  <edelsohn@gnu.org>
22620
22621         * config/rs6000/darwin-ldouble.c: Only build _SOFT_FLOAT if
22622         configured for long double 128.
22623
22624 2007-01-18  Mike Stump  <mrs@apple.com>
22625
22626         * config/rs6000/rs6000.c (rs6000_emit_vector_compare): Fix build
22627         error.
22628
22629 2007-01-18  Michael Meissner  <michael.meissner@amd.com>
22630
22631         * i386.c (ix86_compute_frame_layout): Make fprintf's in #if 0 code
22632         type correct.
22633
22634 2007-01-18  Jan Hubicka  <jh@suse.cz>
22635
22636         * tree-ssa-operands.c (vop_free_bucket_size): Never return value
22637         greater than NUM_VOP_FREE_BUCKETS.
22638
22639 2007-01-18  Daniel Berlin  <dberlin@dberlin.org>
22640
22641         * tree-ssa-structalias.c: Update comments.
22642         (ptabitmap_obstack): Removed.
22643         (pta_obstack): New.
22644         (oldpta_obstack): Ditto.
22645         (stats): Add a few members.
22646         (struct variable_info): Remove node, complex, address_taken, and
22647         indirect_target members. Add oldsolution member.
22648         (new_var_info): Do not initialize removed members.
22649         (constraint_expr_type): Remove INCLUDES.
22650         (constraint_graph): Add size, implicit_preds, rep,
22651         indirect_cycles, eq_rep, label, direct_nodes, and complex members.
22652         (FIRST_REF_NODE): New macro.
22653         (LAST_REF_NODE): Ditto.
22654         (FIRST_ADDR_NODE): Ditto.
22655         (find): New function.
22656         (unite): Ditto.
22657         (dump_constraint): Do not handle INCLUDES.
22658         (insert_into_complex): Do not insert duplicate constraints.
22659         (condense_varmap_nodes): Renamed and rewritten into ...
22660         (merge_node_constraints): This. Also fix bug in handling of
22661         offseted copy constraints.
22662         (clear_edges_for_node): No longer need to deal with preds at all,
22663         or removing associated preds/succs.
22664         (merge_graph_nodes): Deal with indirect_cycles.
22665         Don't deal with predecessors.
22666         (add_implicit_graph_edge): New function.
22667         (add_pred_graph_edge): Ditto.
22668         (add_graph_edge): Don't deal with predecessors.
22669         (build_constraint_graph): Removed.
22670         (build_pred_graph): New function.
22671         (build_succ_graph): Ditto.
22672         (struct scc_info): Removed in_component. Added roots, dfs, and
22673         node_mapping. Remove visited_index, unification_queue.
22674         (scc_visit): Deal with union-find we do now.
22675         Deal with cycles with REF nodes.
22676         (collapse_nodes): Renamed and rewritten to ...
22677         (unify_nodes): This.
22678         (process_unification_queue): Removed.
22679         (topo_visit): Cleanup
22680         (do_da_constraint): Use find.
22681         (do_sd_constraint): Ditto.
22682         (do_ds_constraint): Ditto.
22683         (do_complex_constraint): Ditto.
22684         (init_scc_info): Update for removed and added members.
22685         (find_and_collapse_graph_cycles): Renamed and rewritten into ...
22686         (find_indirect_cycles): This.
22687         (equivalence_class): New variable.
22688         (label_visit): New function.
22689         (perform_variable_substitution): Rewritten.
22690         (free_var_substitution_info): New function.
22691         (find_equivalent_node): Ditto.
22692         (move_complex_constraints): Ditto.
22693         (eliminate_indirect_cycles): Ditto.
22694         (solve_graph): Only propagate changed bits.
22695         Use indirect cycle elimination.
22696         Use find.
22697         (tree_id_t): Rename to tree_vi_t, delete id member, add vi member.
22698         (tree_id_eq): Renamed to ...
22699         (tree_vi_eq): This. Update for member change
22700         (insert_id_for_tree): Renamed and rewritten to ...
22701         (insert_vi_for_tree): This.
22702         (lookup_id_for_tree): Renamed and rewritten to ...
22703         (lookup_vi_for_tree): This.
22704         (get_id_for_tree): Renamed and rewritten to ...
22705         (get_vi_for_tree): Ditto.
22706         (get_constraint_exp_from_ssa_var): Update to use get_vi_for_tree.
22707         (process_constraint): Don't handle INCLUDES.
22708         Remove special ADDRESSOF case.
22709         (find_func_aliases): Rewrite to use vi functions instead of id
22710         ones.
22711         (create_function_info_for): Ditto.
22712         (create_variable_info_for): Ditto.
22713         (intra_create_variable_infos): Ditto.
22714         (merge_smts_into): Ditto.
22715         (find_what_p_points_to): Ditto.
22716         (init_base_vars): Ditto.
22717         (init_alias_vars): Ditto.
22718         (remove_preds_and_fake_succs): New function.
22719         (dump_sa_points_to_info): Dump new stats.
22720         (dump_solution_for_var): Use find.
22721         (set_used_smts): Fix formatting.
22722         (compute_points_to_sets): Updated for new functions.
22723         (ipa_pta_execute): Ditto.
22724
22725 2007-01-18  Kazu Hirata  <kazu@codesourcery.com>
22726             Richard Sandiford  <richard@codesourcery.com>
22727
22728         * doc/tm.texi (TARGET_FUNCTION_VALUE): Expand documentation of
22729         parallels.
22730         * calls.c (expand_call): If the return value is a PARALLEL,
22731         extract its first member.
22732         * config/m68k/linux.h (FUNCTION_EXTRA_EPILOGUE): Remove.
22733         * config/m68k/m68k.c (m68k_output_function_epilogue): Don't
22734         use FUNCTION_EXTRA_EPILOGUE.
22735         (m68k_function_value): Return a PARALLEL if the return value
22736         is of a pointer type.
22737         * config/m68k/netbsd-elf.h (current_function_returns_pointer)
22738         (FUNCTION_EXTRA_EPILOGUE): Remove.
22739         * config/m68k/m68k.md (D0_REG): New constant.
22740
22741 2007-01-18  Kazu Hirata  <kazu@codesourcery.com>
22742
22743         * config/m68k/m68k.c (m68k_output_function_epilogue): Don't
22744         output a NOP for empty epilogues.
22745
22746 2007-01-18  Richard Sandiford  <richard@codesourcery.com>
22747
22748         * config/m68k/m68k.c (m68k_use_return_insn): Update comments
22749         before function.  Extend register save check to include all
22750         registers, not just integer ones.
22751
22752 2007-01-18  Kazu Hirata  <kazu@codesourcery.com>
22753
22754         * config/m68k/m68k-protos.h (use_return_insn): Rename to...
22755         (m68k_use_return_insn): ...this.
22756         * config/m68k/m68k.h (USE_RETURN_INSN): Delete.
22757         * config/m68k/m68k.c (use_return_insn): Rename to...
22758         (m68k_use_return_insn): ...this.
22759         * config/m68k/m68k.md (return): Use m68k_use_return_insn instead
22760         of USE_RETURN_INSN.
22761
22762 2007-01-18  Nathan Sidwell  <nathan@codesourcery.com>
22763
22764         * config/m68k/fpgnulib.c (__truncdfsf2): Implement round to
22765         nearest even, fix denormal rounding overflow.
22766
22767 2007-01-18  Richard Sandiford  <richard@codesourcery.com>
22768
22769         * config/m68k/m68k.md (movsf_cf_hard): Use fsmove instead of
22770         f%$smove and f%$move.
22771         (movdf_cf_hard): Use fdmove for cases 0 and 3 and fmove for case 1.
22772         (extendsfdf2_cf): Use fdmove instead of f%&move.
22773         (truncdfsf2_cf): Use fsmove instead of f%$smove.
22774         (add<mode>3_cf, sub<mode>3_cf): Use <FP:prec> instead of <FP:round>.
22775
22776 2007-01-18  Richard Sandiford  <richard@codesourcery.com>
22777
22778         * config/m68k/m68k.md (movdf_cf_hard): Use output_move_double for
22779         GPR<-GPR moves.
22780
22781 2007-01-18  Richard Sandiford  <richard@codesourcery.com>
22782
22783         * real.h (real_format): Add a canonical_nan_lsbs_set field.
22784         (coldfire_single_format): Declare.
22785         (coldfire_double_format): Likewise.
22786         * real.c (encode_ieee_single): Use canonical_nan_lsbs_set instead
22787         of qnan_msb_set to determine the lower bits of a canonical
22788         NaN significand.
22789         (encode_ieee_double): Likewise.
22790         (encode_ieee_quad): Likewise.
22791         (ieee_single_format): Initialize canonical_nan_lsbs_set.
22792         (mips_single_format): Likewise.
22793         (ieee_double_format): Likewise.
22794         (mips_double_format): Likewise.
22795         (ieee_extended_motorola_format): Likewise.
22796         (ieee_extended_intel_96_format): Likewise.
22797         (ieee_extended_intel_128_format): Likewise.
22798         (ieee_extended_intel_96_round_53_format): Likewise.
22799         (ibm_extended_format): Likewise.
22800         (mips_extended_format): Likewise.
22801         (ieee_quad_format): Likewise.
22802         (mips_quad_format): Likewise.
22803         (vax_f_format): Likewise.
22804         (vax_d_format): Likewise.
22805         (vax_g_format): Likewise.
22806         (i370_single_format): Likewise.
22807         (i370_double_format): Likewise.
22808         (decimal_single_format): Likewise.
22809         (decimal_double_format): Likewise.
22810         (decimal_quad_format): Likewise.
22811         (c4x_single_format): Likewise.
22812         (c4x_extended_format): Likewise.
22813         (real_internal_format): Likewise.
22814         (coldfire_single_format): New real_format.
22815         (coldfire_double_format): Likewise.
22816         * config/pdp11/pdp11.c (pdp11_f_format): Initialize
22817         canonical_nan_lsbs_set.
22818         (pdp11_d_format): Likewise.
22819         * config/m68k/m68k.c (override_options): Override REAL_FORMAT_MODE
22820         if TARGET_COLDFIRE_CPU.
22821
22822 2007-01-18  Richard Sandiford  <richard@codesourcery.com>
22823
22824         * config/m68k/m68k-protos.h (m68k_output_pic_call): Delete.
22825         (output_call, m68k_legitimize_call_address): Declare.
22826         * config/m68k/m68k.h (EXTRA_CONSTRAINT): Remove unnecessary
22827         parenthesees.  Add support for a 'W' constraint.
22828         (LEGITIMATE_PIC_OPERAND_P): Remove SYMBOL_REF_FLAG handling.
22829         (PRINT_OPERAND_PUNCT_VALID_P): Remove comment about 'o'.
22830         (m68k_symbolic_call, m68k_symbolic_jump): Declare.
22831         * config/m68k/m68k.c (m68k_symbolic_call, m68k_symbolic_jump): New
22832         variables.
22833         (override_options): Initialize them.  Do not set flag_no_function_cse
22834         for TARGET_ID_SHARED_LIBRARY.
22835         (m68k_output_pic_call): Delete.
22836         (m68k_legitimize_call_address): New function.
22837         (print_operand): Remove the %o prefix.  Handle the %p prefix.
22838         (output_call): New function.
22839         (m68k_output_mi_thunk): Use m68k_symbolic_jump.  Always load the
22840         target address from the GOT if symbolic jumps are not allowed.
22841         * config/m68k/m68k.md (call, general_operand): Do not set
22842         SYMBOL_REF_FLAG.  Use m68k_legitimize_call_address instead.
22843         Merge separate flag_pic and !flag_pic define_insns into...
22844         (*call, *call_value): ...these new patterns.  Match the address
22845         rather than the containing MEM and require it to be a call_operand.
22846         Use output_call to generate the asm template.
22847         * config/m68k/predicates.md (const_call_operand): New predicate.
22848         (call_operand): Likewise.
22849
22850 2007-01-18  Nathan Sidwell  <nathan@codesourcery.com>
22851
22852         * config/m68k/m68k.h (REGISTER_MOVE_COST): Simplify definition.
22853         (STACK_GROWS_DOWNWARD): Define to 1.
22854         (FUNCTION_VALUE, LIBCALL_VALUE, FUNCTION_VALUE_REGNO_P): Equivocate
22855         comments, emphasizing that these values are only defaults.
22856         * config/m68k/linux.h (LINK_SPEC): Fix formatting in #undef.
22857         * config/m68k/m68k.c (const_method): Remove trailing whitespace.
22858
22859 2007-01-18  Richard Sandiford  <richard@codesourcery.com>
22860
22861         * config/m68k/m68k.md (cmpsi): Remove outdated flag_pic handling.
22862
22863 2007-01-18  Kazu Hirata  <kazu@codesourcery.com>
22864             Richard Sandiford  <richard@codesourcery.com>
22865
22866         * config/m68k/m68k.h (DATA_REGNO_P, ADDRESS_REGNO_P, INT_REGNO_P)
22867         (FP_REGNO_P): New macros.
22868         (REGNO_OK_FOR_INDEX_P, REGNO_OK_FOR_BASE_P, REGNO_OK_FOR_DATA_P)
22869         (REGNO_OK_FOR_FP_P, REG_OK_FOR_INDEX_P, REG_OK_FOR_BASE_P): Use them.
22870         (EH_RETURN_STACKADJ_RTX): Use A0_REG.
22871         * config/m68k/m68k.c (m68k_regno_mode_ok): Use the new REGNO macros.
22872
22873 2007-01-18  Nathan Sidwell  <nathan@codesourcery.com>
22874
22875         * config.gcc (m68k-*-aout*, m68k-*-coff*, m68020-*-elf*, m68k-*-elf*)
22876         (m68k-*-uclinuxoldabi, m68k-*-uclinux*, m68k-*-rtems*): Add t-floatlib
22877         to $tmake_file.
22878         * config/m68k/t-floatlib: New file, extracting common code from...
22879         * config/m68k/t-m68kbare, config/m68k/t-m68kelf,
22880         * config/m68k/t-uclinux: Here.
22881         * config/m68k/fpgnulib.c: Do not compile extendeed precision
22882         routines on ColdFire targets.
22883
22884 2007-01-18  Nathan Sidwell  <nathan@codesourcery.com>
22885
22886         * config.gcc (m68k-*-aout*, m68k-*-coff*, m68020-*-elf*, m68k-*-elf*)
22887         (m68010-*-netbsdelf*, m68k*-*-netbsdelf*, m68k*-*-openbsd*)
22888         (m68k-*-uclinuxoldabi, m68k-*-uclinux*, m68k-*-linux*)
22889         (m68k-*-rtems*): Use tm_file rather than m68k/m68k.h and
22890         explicitly set MOTOROLA to 1.
22891         * config/m68k/m68k.h (MOTOROLA): Simplify definition accordingly.
22892
22893 2007-01-18  Richard Sandiford  <richard@codesourcery.com>
22894             Nathan Sidwell  <nathan@codesourcery.com>
22895
22896         * config/m68k/m68k.h (PCC_STATIC_STRUCT_RETURN): Delete.
22897         (ASM_OUTPUT_REG_PUSH, ASM_OUTPUT_REG_POP): Add MOTOROLA cases.
22898         * config/m68k/coff.h (REGISTER_PREFIX_MD): Delete.
22899         * config/m68k/m68020-elf.h (LIB_SPEC): Delete.
22900         * config/m68k/m68k-none.h (CC1_SPEC, CPP_SUBTARGET_SPEC): Delete.
22901         * config/m68k/m68kelf.h (IMMEDIATE_PREFIX, REGISTER_PREFIX_MD)
22902         (ASM_OUTPUT_REG_PUSH, ASM_OUTPUT_REG_POP): Delete.
22903         (NO_DOLLAR_IN_LABEL, PCC_STATIC_STRUCT_RETURN): Don't undefine.
22904         (BSS_ASM_OP, ASM_OUTPUT_SKIP, ASM_OUTPUT_ASCII): Delete.
22905         * config/m68k/m68kemb.h (PCC_STATIC_STRUCT_RETURN): Don't undefine.
22906         * config/m68k/linux.h (SIZE_TYPE, PTRDIFF_TYPE, WCHAR_TYPE)
22907         (WCHAR_TYPE_SIZE, TARGET_OBJFMT_CPP_BUILTINS): Delete.
22908         (TARGET_OS_CPP_BUILTINS): Don't define mc68000 and mc68020 here.
22909         (DBX_REGISTER_NUMBER): Delete.
22910         * config/m68k/netbsd-elf.h (IMMEDIATE_PREFIX): Delete.
22911         (PCC_STATIC_STRUCT_RETURN): Don't undefine.
22912         * config/m68k/openbsd.h (PCC_STATIC_STRUCT_RETURN): Define.
22913
22914 2007-01-18  Richard Sandiford  <richard@codesourcery.com>
22915
22916         * config.gcc (m68k-*-uclinux*): Add flat.h to $tm_file.
22917         * config/flat.h: New file.
22918         * crtstuff.c (USE_PT_GNU_EH_FRAME): Don't define if
22919         OBJECT_FORMAT_FLAT.
22920         * config/m68k/m68k.h (ASM_PREFERRED_EH_DATA_FORMAT): Do not use
22921         indirect references for -msep-data or -mid-shared-library.
22922         Do not use PC-relative code addresses either.
22923         * config/m68k/m68k.c (override_options): Restrict -fPIC error
22924         to -mpcrel.
22925         * config/m68k/uclinux.h (STARTFILE_SPEC): Define.  Use Scrt1.o
22926         for shared libraries and crt1.o for executables.  Use crti.o and
22927         crtbegin.o.
22928         (ENDFILE_SPEC): Use crtend.o and crtn.o.
22929         (LIB_SPEC): Suppress -Rlibc.gdb if -static-libc is given.
22930         Do not add -elf2flt or -shared-lib-id options here.
22931         (LINK_SPEC): Define.  Pass -elf2flt if no -elf2flt option is given.
22932         Pass -shared-lib-id if -mid-shared-library, taking the library
22933         identifier from -mshared-library-id if given, otherwise
22934         defaulting to 0.
22935         (EH_FRAME_IN_DATA_SECTION): Do not undefine.
22936         (INIT_SECTION_ASM_OP, FINI_SECTION_ASM_OP): Likewise.
22937         (TARGET_OS_CPP_BUILTINS): Define __GXX_MERGED_TYPEINFO_NAMES=0
22938         and __GXX_TYPEINFO_EQUALITY_INLINE=0 if -mid-shared-library.
22939         (DRIVER_SELF_SPECS): Map unadorned PIC options to -msep-data.
22940         * config/m68k/t-uclinux (EXTRA_MULTILIB_PARTS): Add crtbegin.o
22941         and crtend.o.
22942         * config/m68k/lb1sf68.asm (PICCALL): Use an lea and pc-relative
22943         jump sequence for ISA A and ISA A+.
22944         (PICJUMP): Likewise.
22945
22946 2007-01-18  Richard Sandiford  <richard@codesourcery.com>
22947
22948         * config.gcc (m68k-*-uclinux*): Base the port on the common
22949         and m68k GNU/Linux files rather than on the generic ELF ones.
22950         * config/m68k/uclinux.h (TARGET_VERSION): Override.
22951         (TARGET_OS_CPP_BUILTINS): Use LINUX_TARGET_OS_CPP_BUILTINS.
22952
22953 2007-01-18  Julian Brown  <julian@codesourcery.com>
22954             Richard Sandiford  <richard@codesourcery.com>
22955
22956         * config/m68k/m68k.h (LONG_DOUBLE_TYPE_SIZE): Make 64-bit on ColdFire.
22957         (LIBGCC2_LONG_DOUBLE_TYPE_SIZE): Likewise.
22958         * config/m68k/netbsd-elf.h (LIBGCC2_LONG_DOUBLE_TYPE_SIZE): Undefine
22959         before redefining.
22960         * config/m68k/uclinux-oldabi.h (LONG_DOUBLE_TYPE_SIZE): Redefine to
22961         80 unconditionally.
22962         (LIBGCC2_LONG_DOUBLE_TYPE_SIZE): Likewise.
22963
22964 2007-01-18  Richard Sandiford  <richard@codesourcery.com>
22965
22966         * doc/install.texi: Document m68k-uclinuxoldabi.
22967         * config.gcc (m68k-*-uclinuxoldabi): New configuration.
22968         * config/m68k/uclinux-oldabi.h: New file, copied from
22969         config/m68k/uclinux.h.
22970
22971 2007-01-18  Kaz Kojima  <kkojima@rr.iij4u.or.jp>
22972
22973         * config/m32r/m32r-protos.h (m32r_expand_epilogue): Declare it.
22974         * config/m32r/m32r.c (m32r_setup_incoming_varargs): Use gen_frame_mem.
22975         (m32r_compute_frame_size): Use unsigned for regno.
22976         (m32r_reload_lr): Use gen_frame_mem.
22977         (pop): New.
22978         (m32r_output_function_epilogue): Don't output the function epilogue
22979         textually here.
22980         (m32r_expand_epilogue): New.
22981         (direct_return): Return false if the function has the interrupt
22982         attribute.
22983         (m32r_hard_regno_rename_ok): Remove code for the textual epilogue.
22984         * config/m32r/m32r.md (epilogue): New expander.
22985         (return_lr, return_rte): New insns.
22986         (return): Make it expander.
22987         (return_normal): New expander.
22988
22989 2007-01-18  Josh Conner  <jconner@apple.com>
22990
22991         PR target/30485
22992         * config/rs6000/rs6000.c (rs6000_emit_vector_compare): Add
22993         support for UNLE, UNLT, UNGE, and UNGT.
22994
22995 2007-01-18  Jan Hubicka  <jh@suse.cz>
22996
22997         * tree-vrp.c (finalize_jump_threads): Do not call cleanup_cfg by hand.
22998         * tree-tailcall (add_virtual_phis): Likewise.
22999         (optimize_tail_call): Return TODOs.
23000         (execute_tail_calls): Return TODOs.
23001         * tree-ssa-ccp (execute_fold_all_builtins): Do cleanup_cfg via TODO.
23002         * tree-cfgcleanup.c (cleanup_tree_cfg_loop): Return if something
23003         changed.
23004         * tree-ssa-forwprop.c (tree_ssa_forward_propagate_single_use_value):
23005         Cleanup cfg using TODO.
23006         * tree-flow.h (cleanup_tree_cfg_loop): Update prototype.
23007         * passes.c (execute_function_todo): When cleanup did something, remove
23008         unused locals.
23009         * tree-cfg.c (pass_build_cfg): Add cleanup_cfg TODO.
23010         (make_edges): Don't cleanup_cfg.
23011
23012 2007-01-18  Uros Bizjak  <ubizjak@gmail.com>
23013
23014         * reg-stack.c (subst_stack_regs_pat) [UNSPEC_SINCOS_COS,
23015         UNSPEC_XTRACT_FRACT]: Use generic code for instructions that
23016         operate on the top of stack.
23017         [UNSPEC_SINCOS_SIN, UNSPEC_XTRACT_EXP, UNSPEC_TAN]: Rewrite
23018         register handling of instructions that output to the second
23019         stack slot.
23020         [UNSPEC_TAN_ONE, UNSPEC_TAN_TAN]: Remove.
23021         (move_for_stack_reg): Special-case check for dead destination
23022         stack slot for constant load of 1.0 inside UNSPEC_TAN.
23023
23024         * config/i386/i386.md (UNSPEC_TAN): New constant.
23025         (UNSPEC_TAN_ONE, UNSPEC_TAN_TAN): Remove.
23026         (fptanxf4_i387, fptan_extend<mode>xf4_i387): New patterns
23027         to correctly model move of constant 1.0 to top stack slot.
23028         (*tandf3_1, *tansf3_1, *tanxf3_1): Remove insn patterns.
23029         (unnamed peephole2 pattern): Remove corresponding peephole2
23030         pattern that optimizes tan insn and loading of constant 1.0.
23031         (tanxf2): Use fptanxf4_i387.
23032         (tan<mode>2): Rename from tansf2 and tandf2 and macroize insn
23033         patterns using X87MODEF12 mode macro.  Use fptan_extend<mode>xf4_i387
23034         and truncate result to requested mode.  Use SSE_FLOAT_MODE_P to
23035         disable patterns for SSE math.
23036         (sincos<mode>3): Use truncxf<mode>2_i387_noop for truncation.
23037         (fyl2x_extend<mode>xf3_i387): Use X87MODEF12 for operand 1.
23038
23039 2007-01-18  Dirk Mueller  <dmueller@suse.de>
23040             Richard Guenther <rguenther@suse.de>
23041
23042         PR diagnostic/8268
23043         * doc/invoke.texi (Warray-bounds): Document -Warray-bounds.
23044         * common.opt (Warray-bounds): Add new warning option.
23045         * c-opts.c (c_common_handle_option): Define -Warray-bounds
23046         if -Wall is given.
23047         * Makefile.in: make tree-vrp.o depend on toplev.h
23048         * tree-vrp.c (vrp_finalize): Call check_array_refs if -Warray-bounds
23049         is enabled.
23050         (check_array_refs, check_array_bounds, check_array_ref): New.
23051
23052 2007-01-18  Jan Hubicka  <jh@suse.cz>
23053
23054         * tree-ssa-ccp.c (ccp_finalize): Return if something changed.
23055         (execute_ssa_ccp): Return flags conditionally.
23056         * tree-ssa-propagate.c (substitue_and_fold): Return if something was
23057         changed.
23058         * tree-ssa-propagate.h (substitute_and_fold): Update prototype.
23059
23060 2007-01-18  Steven Bosscher  <steven@gcc.gnu.org>
23061
23062         * cfgcleanup.c (cleanup_cfg): Detect cfglayout mode and set
23063         the CLEANUP_CFGLAYOUT flag when in cfglayout mode.
23064
23065         * Makefile.c (GTFILES): Add cfglayout.h.
23066         * gengtype.c (open_base_files): Likewise.
23067         * cfglayout.c (cfg_layout_function_footer,
23068         cfg_layout_function_header) Reindent to make gengtype happy.
23069         * cfglayout.h (cfg_layout_function_footer,
23070         cfg_layout_function_header): Add GTY(()) marker.
23071
23072         * ifcvt.c (noce_try_sign_mask): Make sure INSN_B is non-null.
23073
23074 2007-01-18  Ben Elliston  <bje@au.ibm.com>
23075
23076         * genautomata.c (write_automata): Include xstrerror output in the
23077         error message if writing the DFA description file fails.
23078
23079 2007-01-17  H.J. Lu  <hongjiu.lu@intel.com>
23080
23081         * config/mips/mips-protos.h (mips_output_external): Make it
23082         return void.
23083         * config/mips/iris.h (TARGET_ASM_EXTERNAL_LIBCALL): Removed.
23084         * config/mips/mips.c (irix_output_external_libcall): Likewise.
23085         (extern_list): Likewise.
23086         (extern_head): Likewise.
23087         (TARGET_ASM_FILE_END): Likewise.
23088         (mips_file_end): Likewise.
23089         (mips_output_external): Rewritten.
23090
23091 2007-01-18  Ben Elliston  <bje@au.ibm.com>
23092
23093         * genpreds.c (write_insn_preds_c): Only write out the function
23094         body for regclass_for_constraint if we have register constraints.
23095
23096 2007-01-17  Tom Tromey  <tromey@redhat.com>
23097
23098         * doc/sourcebuild.texi (libgcj Tests): Use sourceware.org.
23099         * doc/install.texi (Testing): Use sourceware.org.
23100         (Binaries): Likewise.
23101         (Specific): Likewise.
23102         * doc/contrib.texi (Contributors): Use sourceware.org.
23103
23104 2007-01-17  Anatoly Sokolov <aesok@post.ru>
23105
23106         * config/avr/avr.h (AVR_HAVE_LPMX): New macro.
23107         (AVR_ENHANCED): Rename to ...
23108         (AVR_HAVE_MUL): ... new.
23109         (avr_enhanced_p): Rename to ...
23110         (avr_have_mul_p): ... new.
23111         (TARGET_CPU_CPP_BUILTINS): Use 'avr_have_mul_p' instead of
23112         'avr_enhanced_p' for "__AVR_ENHANCED__". Define "__AVR_HAVE_MUL__".
23113         * config/avr/avr.c (avr_enhanced_p): Rename to ...
23114         (avr_have_mul_p): ... new.
23115         (base_arch_s): Rename 'enhanced' to 'have_mul'.
23116         (avr_override_options): Use 'avr_have_mul_p' and 'have_mul' instead of
23117         'avr_enhanced_p' and 'enhanced'.
23118         (ashlhi3_out, ashrhi3_out, lshrhi3_out, avr_rtx_costs): Use
23119         AVR_HAVE_MUL instead of AVR_ENHANCED.
23120         * avr.md (*tablejump_enh): Use AVR_HAVE_LPMX instead of AVR_ENHANCED.
23121         (mulqi3, *mulqi3_enh, *mulqi3_call, mulqihi3, umulqihi3, mulhi3,
23122         *mulhi3_enh, *mulhi3_call, mulsi3, *mulsi3_call): Use AVR_HAVE_MUL
23123         instead of AVR_ENHANCED.
23124         (*tablejump_enh): Use AVR_HAVE_LPMX instead of AVR_ENHANCED.
23125         * libgcc.S: Use __AVR_HAVE_MUL__ instead of __AVR_ENHANCED__.
23126         (__tablejump__): Use __AVR_HAVE_LPMX__ instead of __AVR_ENHANCED__.
23127
23128 2007-01-17  Ian Lance Taylor  <iant@google.com>
23129
23130         * vec.h (VEC_reserve_exact): Define.
23131         (vec_gc_p_reserve_exact): Declare.
23132         (vec_gc_o_reserve_exact): Declare.
23133         (vec_heap_p_reserve_exact): Declare.
23134         (vec_heap_o_reserve_exact): Declare.
23135         (VEC_OP (T,A,reserve_exact)): New static inline function, three
23136         versions.
23137         (VEC_OP (T,A,reserve)) [all versions]: Remove handling of
23138         negative parameter.
23139         (VEC_OP (T,A,alloc)) [all versions]: Call ...reserve_exact.
23140         (VEC_OP (T,A,copy)) [all versions]: Likewise.
23141         (VEC_OP (T,a,safe_grow)) [all versions]: Likewise.
23142         * vec.c (calculate_allocation): Add exact parameter.  Change all
23143         callers.
23144         (vec_gc_o_reserve_1): New static function, from vec_gc_o_reserve.
23145         (vec_gc_p_reserve, vec_gc_o_reserve): Call vec_gc_o_reserve_1.
23146         (vec_gc_p_reserve_exact, vec_gc_o_reserve_exact): New functions.
23147         (vec_heap_o_reserve_1): New static function, from vec_heap_o_reserve.
23148         (vec_heap_p_reserve, vec_heap_o_reserve): Call vec_heap_o_reserve_1.
23149         (vec_heap_p_reserve_exact): New function.
23150         (vec_heap_o_reserve_exact): New function.
23151
23152 2007-01-17  Jan Hubicka  <jh@suse.cz>
23153
23154         * ipa-type-escape.c (look_for_casts): Revamp using handled_component_p.
23155
23156 2007-01-17  Eric Christopher  <echristo@apple.com>
23157
23158         * config.gcc: Support core2 processor.
23159
23160 2007-01-16  Jan Hubicka  <jh@suse.cz>
23161
23162         * tree-ssanames.c (release_dead_ssa_names): Instead of ggc_freeing
23163         the names, just unlink the chain so we don't crash on dangling
23164         pointers
23165         to dead SSA names.
23166
23167 2007-01-16  Jan Hubicka  <jh@suse.cz>
23168
23169         * cgraph.h (cgraph_decide_inlining_incrementally): Kill.
23170         * tree-pass.h: Reorder to make IPA passes appear toegher.
23171         (pass_early_inline, pass_inline_parameters, pass_apply_inline):
23172         Declare.
23173         * cgraphunit.c (cgraph_finalize_function): Do not compute inling
23174         parameters, do not call early inliner.
23175         * ipa-inline.c: Update comments.  Include tree-flow.h
23176         (cgraph_decide_inlining): Do not compute inlining parameters.
23177         (cgraph_decide_inlining_incrementally): Return TODOs; assume to
23178         be called with function context set up.
23179         (pass_ipa_inline): Remove unreachable functions before pass.
23180         (cgraph_early_inlining): Simplify assuming to be called from the
23181         PM as local pass.
23182         (pass_early_inline): New pass.
23183         (cgraph_gate_ipa_early_inlining): New gate.
23184         (pass_ipa_early_inline): Turn into simple wrapper.
23185         (compute_inline_parameters): New function.
23186         (gate_inline_passes): New gate.
23187         (pass_inline_parameters): New pass.
23188         (apply_inline): Move here from tree-optimize.c
23189         (pass_apply_inline): New pass.
23190         * ipa.c (cgraph_remove_unreachable_nodes): Verify cgraph after
23191         transforming.
23192         * tree-inline.c (optimize_inline_calls): Return TODOs rather than
23193         doing them by hand.
23194         (tree_function_versioning): Do not allocate dummy struct function.
23195         * tree-inline.h (optimize_inline_calls): Update prototype.
23196         * tree-optimize.c (execute_fixup_cfg): Export.
23197         (pass_fixup_cfg): Remove
23198         (tree_rest_of_compilation): Do not apply inlines.
23199         * tree-flow.h (execute_fixup_cfg): Declare.
23200         * Makefile.in (gt-passes.c): New.
23201         * passes.c: Include gt-passes.h
23202         (init_optimization_passes): New passes.
23203         (nnodes, order): New static vars.
23204         (do_per_function_toporder): New function.
23205         (execute_one_pass): Dump current pass here.
23206         (execute_ipa_pass_list): Don't dump current pass here.
23207
23208 2007-01-16  Janis Johnson  <janis187@us.ibm.com>
23209
23210         * config/dfp-bit.c (dfp_compare_op): Return separate value for NaN.
23211         (DFP_NE, DFP_LE, DFP_GE): Return false for NaN.
23212
23213 2007-01-16  David Edelsohn  <edelsohn@gnu.org>
23214
23215         * config/rs6000/darwin-ldouble.c: Build file for SOFT_FLOAT.
23216         (strong_alias): Define.
23217         (__gcc_qmul): Provide non-FMA for soft-float.
23218         (__gcc_qdiv): Same.
23219         (__gcc_qneg): New.
23220         (__gcc_qeq): New.
23221         (__gcc_qle): New.
23222         (__gcc_qge): New.
23223         (__gcc_qunord): New.
23224         (__gcc_stoq): New.
23225         (__gcc_dtoq): New.
23226         (__gcc_qtos): New.
23227         (__gcc_qtod): New.
23228         (__gcc_qtoi): New.
23229         (__gcc_qtou): New.
23230         (__gcc_itoq): New.
23231         (__gcc_utoq): New.
23232         (fmsub): New.
23233         * config/rs6000/rs6000.c (rs6000_init_libfuncs): Initialize
23234         soft-float functions.
23235         * config/rs6000/libgcc-ppc-glibc.ver: Version soft-float symbols.
23236         * config/rs6000/sysv4.h (SUBTARGET_OVERRIDE_OPTIONS): Do not warn
23237         about long double soft float.
23238
23239 2007-01-16  Dorit Nuzman  <dorit@il.ibm.com>
23240             Tehila Meyzels  <tehila@il.ibm.com>
23241
23242         * tree-vectorizer.h (is_pattern_stmt_p): New.
23243         * tree-vect-analyze.c (vect_determine_vectorization_factor): Fix
23244         formatting (tabs instead of spaces). Cleanup and clarify setting
23245         of STMT_VINFO_VECTYPE. Call is_pattern_stmt_p.
23246         * tree-vect-transform.c (vect_get_vec_def_for_operand): Fix typo.
23247         (vectorizable_type_demotion): Check that types are integral.
23248         (vectorizable_type_promotion): Likewise.
23249         (vectorizable_store): Fix typo.  Eliminate new-line at end of
23250         comments.
23251
23252 2007-01-16  Jan Hubicka  <jh@suse.cz>
23253
23254         * tree-ssanames.c (release_dead_ssa_names): Remove invalidated
23255         cgraph edges too.
23256
23257 2007-01-15  Eric Christopher  <echristo@apple.com>
23258
23259         * ifcvt.c: Include vec.h, vecprim.h.
23260         (check_cond_move_block): New argument regs.
23261         Reorganize. Add registers used to regs.
23262         (cond_move_process_if_block): Use regs set above as
23263         loop bounds.
23264
23265 2007-01-15  Eric Christopher  <echristo@apple.com>
23266
23267         * config/darwin.h: Update copyright.
23268         (TARGET_OPTION_TRANSLATE_TABLE): Add umbrella.
23269         (LINK_COMMAND_SPEC): Add -u.
23270         (LINK_SPEC): Fix umbrella for above.
23271
23272 2007-01-15  Joseph S. Myers  <joseph@codesourcery.com>
23273
23274         * config/soft-fp/op-common.h, config/soft-fp/op-4.h: Update from
23275         glibc CVS.
23276
23277 2007-01-15  Tom Tromey  <tromey@redhat.com>
23278
23279         * doc/sourcebuild.texi (libgcj Tests): Don't mention jacks.
23280         * doc/install.texi (Testing): Don't mention jacks.
23281         (Configuration): Document --enable-java-maintainer-mode.  Move
23282         --with-java-home to libgcj-specific section.  Document
23283         --with-ecj-jar.
23284         (Prerequisites): Mention --enable-java-maintainer-mode, ecj1.
23285
23286 2007-01-15  Jan Hubicka  <jh@suse.cz>
23287
23288         * tree-ssa-dce.c (DCE_TODOs): New.
23289         (propagate_necessity): Return if something changed.
23290         (eliminate_unnecessary_stmts): Likewise.
23291         (perform_tree_ssa_dce): Return TODO flags when needed.
23292         (pass_dce, pass_dce_loop, pass_cd_dce): Remove TODO flags.
23293
23294 2007-01-15  Uros Bizjak  <ubizjak@gmail.com>
23295
23296         * config/i386/i386.md (fyl2xxf3_i387): Rename from fyl2x_xf3.
23297         (fyl2x_extend<mode>xf3_i387): New insn pattern.
23298         (log<mode>2): Rename from logsf2 and logdf2 and macroize insn
23299         patterns using X87MODEF12 mode macro.  Extend operand 1
23300         to XFmode. Use SSE_FLOAT_MODE_P to disable patterns for SSE math.
23301         (log10<mode>2): Ditto.
23302         (log2<mode>2): Ditto.
23303         (log1p<mode>2): Ditto.
23304         (logb<mode>2): Ditto.
23305         (fyl2xp1xf3_i387): Rename from fyl2xp1_xf3.
23306         (fyl2xp1_extend<mode>xf3_i387): New insn pattern.
23307         (*fxtractxf3_i387): Rename from *fxtractxf3.
23308         (fxtract_extend<mode>xf3_i387): New insn pattern.
23309         (ilogbsi2): Use match_dup 3, not match_operand:XF 3.
23310         * config/i386/i386.c (ix86_emit_i387_log1p): Use gen_fyl2xp1xf3_i387()
23311         and gen_fyl2xxf3_i387().
23312
23313 2007-01-14  Zdenek Dvorak <dvorakz@suse.cz>
23314
23315         * loop-unswitch.c (unswitch_loop): Do not call fix_loop_placement.
23316         * cfgloopmanip.c (fix_loop_placement): Made static.  Use
23317         get_loop_exit_edges.  Changed return type to bool.
23318         * cfgloop.h (fix_loop_placement): Declaration removed.
23319
23320 2007-01-14  Dorit Nuzman  <dorit@il.ibm.com>
23321
23322         * param.h (MIN_VECT_LOOP_BOUND): New.
23323         * params.def (MIN_VECT_LOOP_BOUND): New.
23324         * tree-vectorizer.c (slpeel_tree_peel_loop_to_edge): Takes another
23325         argument - minimum threshold for number of iterations.
23326         * tree-vectorizer.h (slpeel_tree_peel_loop_to_edge): Add another
23327         argument to declaration.
23328         * tree-vect-analyze.c (vect_analyze_operations): Check value of
23329         MIN_VECT_LOOP_BOUND.
23330         * tree-vect-transform.c (vect_do_peeling_for_loop_bound): Call
23331         slpeel_tree_peel_loop_to_edge with additional argument.
23332         (vect_do_peeling_for_alignment): Likewise.
23333         * doc/invoke.texi (min-vect-loop-bound): Document new param option.
23334
23335 2007-01-14  Uros Bizjak  <ubizjak@gmail.com>
23336
23337         PR target/30413
23338         * config/i386/i386.c (print_operand) ['z']: Output 'b' for
23339         operands of size 1.
23340
23341 2007-01-14  Jan Hubicka  <jh@suse.cz>
23342
23343         * tree-dfa.c (remove_referenced_var): New function.
23344         * tree-ssa-live.c (remove_unused_locals): Walk referenced vars and
23345         prune referenced vars list too.
23346         * tree-flow.h (remove_referenced_var): Declare.
23347
23348 2007-01-14  Jan Hubicka  <jh@suse.cz>
23349
23350         * tree-eh.c (add_stmt_to_eh_region_fn): Do not add call_exprs
23351         separately.
23352         (remove_stmt_from_eh_region_fn): Do not remove call_exprs.
23353         (verify_eh_throw_stmt_node, verify_eh_throw_table_statements): Kill.
23354         * except.h (verify_eh_throw_table_statements): Kill prototype.
23355         * cfgexpand.c (expand_gimple_basic_block): Propagate Eh regions
23356         into call exrepssions.
23357         * tree-optimize.c (execute_free_cfg_annotatiosn): Do not call
23358         eh trhow verifier.
23359         * tree-cfg.c: Include pointer-set.h.
23360         (verify_node_sharing): Work on pointer set.
23361         (verify_eh_throw_stmt_node): New.
23362         (verify_stmts): Use pointers sets, verify throw_stmt.
23363
23364 2007-01-13  Zdenek Dvorak <dvorakz@suse.cz>
23365
23366         * ipa-reference.c (analyze_function): Consider also addresses taken
23367         in phi nodes.
23368
23369 2007-01-12  Roger Sayle  <roger@eyesopen.com>
23370
23371         * c-typeck.c (null_pointer_constant_p): Replace use of
23372         TREE_CONSTANT_OVERFLOW with TREE_OVERFLOW.
23373         (build_c_cast): Likewise.
23374
23375 2007-01-12  Roger Sayle  <roger@eyesopen.com>
23376
23377         * tree.h (force_fit_type_double): Remove unused final argument.
23378         * c-common.c (constant_expression_warning): Replace use of
23379         TREE_CONSTANT_OVERFLOW with TREE_OVERFLOW.
23380         (convert_and_check): Likewise.
23381         (shorten_compare): Update call to force_fit_type_double.
23382         (c_common_truthvalue_conversion) <INTEGER_CST>: Use integer_zerop.
23383         * convert.c (convert_to_pointer): Update call to
23384         force_fit_type_double.
23385         * fold-const.c (force_fit_type_double): Remove overflowed_const
23386         argument.
23387         (int_const_binop, fold_convert_const_int_from_int,
23388         fold_convert_const_int_from_real, fold_div_compare,
23389         fold_sign_changed_comparison, fold_unary, fold_negate_const,
23390         fold_abs_const, fold_not_const): Remove the final argument from
23391         calls to force_fit_type_double.
23392
23393 2007-01-12  Andrew Pinski  <andrew_pinski@playstation.sony.com>
23394
23395         * configure.ac: Set insn to "nop" for spu-*-* also.
23396         * configure: Regenerate.
23397
23398 2007-01-12  Olga Golovanevsky  <olga@il.ibm.com>
23399
23400         * builtins.def : Add BUILT_IN_FREE.
23401
23402 2007-01-12  Jan Hubicka  <jh@suse.cz>
23403
23404         PR tree-optimization/30443
23405         * tree-inline.c (tree_function_versioning): Do not optimize when
23406         cloning for inlining.
23407
23408 2007-01-12  Zdenek Dvorak <dvorakz@suse.cz>
23409
23410         * doc/loop.texi: Document recording of loop exits.
23411         * cfgloopmanip.c (loopify, duplicate_loop): Use alloc_loop.
23412         (update_single_exits_after_duplication,
23413         update_single_exit_for_duplicated_loop,
23414         update_single_exit_for_duplicated_loops): Removed.
23415         (duplicate_loop_to_header_edge): Do not call
23416         update_single_exits_after_duplication and
23417         update_single_exit_for_duplicated_loops.
23418         (loop_version): Do not update single_exit information.
23419         (fix_loop_structure): Use record_loop_exits instead of
23420         mark_single_exit_loops.
23421         * tree-ssa-loop-manip.c (tree_transform_and_unroll_loop): Update
23422         the lists of loop exits.
23423         * cfghooks.c (redirect_edge_and_branch, redirect_edge_and_branch_force,
23424         split_edge, merge_blocks): Update the lists of loop exits.
23425         * modulo-sched.c (sms_schedule): Pass LOOPS_HAVE_RECORDED_EXITS to
23426         loop_optimizer_init.
23427         * loop-init.c (loop_optimizer_init): Call record_loop_exits instead
23428         of mark_single_exit_loops.
23429         (loop_optimizer_finalize): Call release_recorded_exits.
23430         * tree-ssa-loop.c (tree_loop_optimizer_init): Pass
23431         LOOPS_HAVE_RECORDED_EXITS to loop_optimizer_init.
23432         * tree-vectorizer.c (slpeel_tree_duplicate_loop_to_edge_cfg): Do not
23433         update single exit information.
23434         * lambda-code.c (perfect_nestify): Ditto.
23435         * cfgloop.c (flow_loop_free): Destroy the list of exits of the loop.
23436         (mark_single_exit_loops): Removed.
23437         (alloc_loop, loop_exit_hash, loop_exit_eq, loop_exit_free,
23438         get_exit_descriptions, rescan_loop_exit, record_loop_exits,
23439         dump_recorded_exit, dump_recorded_exits, release_recorded_exits): New
23440         functions.
23441         (get_loop_exit_edges, single_exit): Use recorded exit lists.
23442         (add_bb_to_loop, remove_bb_from_loops): Update the lists of loop exits.
23443         (verify_loop_structure): Verify consistency of the exit lists.
23444         (flow_loops_find): Use alloc_loop.  Initialize exits hash.
23445         (set_single_exit): Removed.
23446         * cfgloop.h (struct loop_exit): New function.
23447         (struct loop): single_exit_ field replaced by exits field.
23448         (LOOPS_HAVE_MARKED_SINGLE_EXITS): Replaced by
23449         LOOPS_HAVE_RECORDED_EXITS.
23450         (struct loops): Added exits hash.
23451         (mark_single_exit_loops, set_single_exit): Declaration removed.
23452         (release_recorded_exits, record_loop_exits, rescan_loop_exit): Declare.
23453
23454 2007-01-12  Richard Sandiford  <richard@codesourcery.com>
23455
23456         * doc/invoke.texi: Avoid use of @headitem.
23457
23458 2007-01-12  Richard Sandiford  <richard@codesourcery.com>
23459
23460         * cse.c (cse_insn): Move HAVE_CC0 code after declarations.
23461
23462 2007-01-12  Richard Sandiford  <richard@codesourcery.com>
23463
23464         * doc/install.texi: Fix m68k-*-* anchor and add m68k-*-* to the
23465         list of targets.
23466
23467 2007-01-12  Nathan Sidwell  <nathan@codesourcery.com>
23468             Richard Sandiford  <richard@codesourcery.com>
23469
23470         * doc/invoke.texi: Document -mno-bitfield, -mno-rtd and -mno-short.
23471         * config/m68k/m68k.opt: Resort options.
23472         (mbitfield, mrtd, mshort): Remove RejectNegative properties.
23473
23474 2007-01-12  Nathan Sidwell  <nathan@codesourcery.com>
23475             Richard Sandiford  <richard@codesourcery.com>
23476
23477         * doc/invoke.texi: Document the macros that are defined by
23478         m68k's -mtune and -mhard-float options.
23479         * config/m68k/m68k-protos.h (m68k_cpp_cpu_ident) Declare.
23480         (m68k_cpp_cpu_family): Likewise.
23481         * config/m68k/m68k.h (TARGET_CPU_CPP_BUILTINS): Add a full set
23482         of __ucfv*__ macros.  Define __mcffpu__ if generating code for
23483         ColdFire FPUs.  Define __mcf_cpu_* and __mcf_family_* macros.
23484         * config/m68k/m68k.c (m68k_cpp_cpu_ident): New function.
23485         (m68k_cpp_cpu_family): Likewise.
23486
23487 2007-01-12  Richard Sandiford  <richard@codesourcery.com>
23488
23489         * config/m68k/m68k.h (TARGET_CPU_CPP_BUILTINS): Treat all mc68*
23490         macros besides mc68000 as tuning macros.  Use a switch statement
23491         to set them and mcpu32.
23492
23493 2007-01-12  Julian Brown  <julian@codesourcery.com>
23494
23495         * config/m68k/m68k.h: Use TARGET_68040 instead of TARGET_68040_ONLY.
23496         (TARGET_68040_ONLY): Rename to...
23497         (TARGET_68040): ...this.
23498         * config/m68k/m68k.c: Use TARGET_68040 instead of TARGET_68040_ONLY.
23499         * config/m68k/m68k.md: Likewise.
23500
23501 2007-01-12  Julian Brown  <julian@codesourcery.com>
23502             Nathan Sidwell  <nathan@codesourcery.com>
23503             Richard Sandiford  <richard@codesourcery.com>
23504
23505         * config.gcc (m680[012]0-*-*, m68k*-*-*): Set m68k_cpu_ident to
23506         the -mcpu= argument associated with the --with-cpu setting.
23507         Define M68K_DEFAULT_TUNE to the default -mtune= option,
23508         if different from the one implied by the -mcpu setting.
23509         Accept --with-cpu=FOO if FOO is listed in m68k-devices.def,
23510         using mcpu=FOO as the default CPU option.  Set target_cpu_default2.
23511         * doc/invoke.texi: Mention ColdFire in the introduction to the
23512         m68k options.  Document the new -march, -mcpu, -mtune, -mdiv,
23513         -mno-div and -mhard-float options.  Make -m68881 a synonym for
23514         -mhard-float.  Document the previously-undocumented -m5206e,
23515         -m528x, -m5307 and -m5407 options.  Tweak the existing option
23516         documentation for consistency.
23517         * doc/install.texi: Mention new --with-cpu arguments.
23518         * config/m68k/m68k.h (OPTION_DEFAULT_SPECS): Only use the
23519         default CPU if neither -mcpu nor -march are specified.
23520         (ASM_CPU_SPEC): Pass down -mcpu and -march options.
23521         (TARGET_CPU_CPP_BUILTINS): Set __mcfisa*__ macros from
23522         TARGET_ISA*.  Set the legacy __mcf*__ cpu macros in the same way,
23523         using m68k_tune to decide between families that implement the
23524         same ISA.  Use m68k_tune to set __mcfv4e__.
23525         (FL_BITFIELD, FL_68881, FL_COLDFIRE, FL_CF_HWDIV, FL_CF_MAC)
23526         (FL_CF_EMAC, FL_CF_EMAC_B, FL_CF_USP, FL_CF_FPU, FL_ISA_68000)
23527         (FL_ISA_68010, FL_ISA_68020, FL_ISA_68040, FL_ISA_A, FL_ISA_B)
23528         (FL_ISA_C, FL_ISA_MMU): New macros.
23529         (MASK_COLDFIRE): Delete.
23530         (TARGET_68010, TARGET_68020, TARGET_68040_ONLY, TARGET_COLDFIRE)
23531         (TARGET_ISAB): Redefine in terms of m68k_cpu_flags.
23532         (TARGET_68881, TARGET_COLDFIRE_FPU): Redefine in terms of m68k_fpu.
23533         (TARGET_HARD_FLOAT): Do not define here.
23534         (TARGET_ISAAPLUS, TARGET_ISAC): New macros.
23535         (TUNE_68000): New macro.
23536         (TUNE_68000_10): Redefine in terms of TUNE_68000 and TUNE_68010.
23537         (TUNE_68010, TUNE_68030, TUNE_68040, TUNE_68060, TUNE_CPU32)
23538         (TUNE_CFV2): Redefine in terms of m68k_tune.
23539         (uarch_type, target_device, fpu_type): New enums.
23540         (m68k_cpu, m68k_tune, m68k_fpu, m68k_cpu_flags): Declare.
23541         * config/m68k/m68k.c (TARGET_DEFAULT): Remove MASK_68881.
23542         (FL_FOR_isa_00, FL_FOR_isa_10, FL_FOR_isa_20, FL_FOR_isa_40)
23543         (FL_FOR_isa_cpu32, FL_FOR_isa_a, FL_FOR_isa_aplus, FL_FOR_isa_b)
23544         (FL_FOR_isa_c): New macros.
23545         (m68k_isa): New enum.
23546         (m68k_target_selection): New structure.
23547         (all_devices, all_isas, all_microarchs): New tables.
23548         (m68k_cpu_entry, m68k_arch_entry, m68k_tune_entry, m68k_cpu)
23549         (m68k_tune, m68k_fpu, m68k_cpu_flags): New variables.
23550         (MASK_ALL_CPU_BITS): Delete.
23551         (m68k_find_selection): New function.
23552         (m68k_handle_option): Handle -mcpu=, -march= and -mtune=.
23553         Map the legacy target options to a combination of the new ones.
23554         (override_options): Set m68k_cpu, m68k_tune, m68k_fpu and
23555         m68k_cpu_flags.  Handle M68K_DEFAULT_TUNE.  Use m68k_cpu_flags
23556         to derive default MASK_BITFIELD, MASK_CF_HWDIV and MASK_HARD_FLOAT
23557         settings.
23558         * config/m68k/m68k.opt (m5200, m5206e, m528x, m5307, m5407, mcfv4e)
23559         (m68010, m68020, m68020-40, m68020-60, m68030, m68040): Remove Mask
23560         properties.
23561         (m68881, msoft-float): Change mask from 68881 to HARD_FLOAT.
23562         (march=, mcpu=, mdiv, mhard-float, mtune=): New options.
23563         * config/m68k/m68k-devices.def: New file.
23564
23565 2007-01-12  Richard Sandiford  <richard@codesourcery.com>
23566             Nathan Sidwell  <nathan@codesourcery.com>
23567
23568         * config/m68k/m68k.h (ASM_CPU_SPEC, ASM_SPEC, EXTRA_SPECS)
23569         (SUBTARGET_EXTRA_SPECS): New macros.
23570         * config/m68k/linux.h (ASM_SPEC): Remove CPU flags;
23571         use %(asm_cpu_spec) instead.
23572         * config/m68k/m68k-none.h (ASM_SPEC): Likewise.
23573         * config/m68k/openbsd.h (ASM_SPEC): Likewise.
23574         * config/m68k/netbsd-elf.h (ASM_SPEC): Likewise.
23575         (EXTRA_SPECS): Rename to...
23576         (SUBTARGET_EXTRA_SPECS): ...this.
23577
23578 2007-01-12  Nathan Sidwell  <nathan@codesourcery.com>
23579             Richard Sandiford  <richard@codesourcery.com>
23580             Julian Brown  <julian@codesourcery.com>
23581
23582         * config.gcc (m68k-*-aout*, m68k-*-coff*, m68020-*-elf*, m68k-*-elf*)
23583         (m68k-*-uclinux*, m68k-*-linux*, m68k-*-rtems*): Set default_m68k_cpu
23584         to the configuration's default CPU.
23585         (m68010-*-netbsdelf*, m68k*-*-netbsdelf*, m68k*-*-openbsd*): Likewise.
23586         Remove default masks.
23587         (m680[012]0-*-*): Set the default with_cpu to the first part of
23588         the target name.
23589         (m68k*-*-*): Set the default with_cpu to m$default_m68k_cpu.
23590         (m68k*-*-linux): Extend the --with-cpu handling to...
23591         (m680[012]0-*-*, m68k*-*-*): ...these configurations.  Allow m68000
23592         and m68010.  Don't set target_cpu_default2.
23593         * doc/install.texi: Document --with-cpu for m68k.
23594         * config/m68k/m68k.h (OPTION_DEFAULT_SPECS): Define.
23595         * config/m68k/m68k-none.h (TARGET_CPU_DEFAULT, M68K_CPU_m68k)
23596         (M68K_CPU_m68000, M68K_CPU_m68010, M68K_CPU_m68020, M68K_CPU_m68030)
23597         (M68K_CPU_m68040, M68K_CPU_m68302, M68K_CPU_m68332, TARGET_DEFAULT)
23598         (ASM_CPU_DEFAULT_SPEC, CC1_CPU_DEFAULT_SPEC): Delete.
23599         (ASM_SPEC): Remove use of %(asm_cpu_default).
23600         (EXTRA_SPECS, SUBTARGET_EXTRA_SPECS, MULTILIB_DEFAULTS): Delete.
23601         * config/m68k/linux.h (TARGET_DEFAULT): Delete.
23602         (CPP_SPEC): Merge definitions.  Do not handle __HAVE_68881__ here.
23603         * config/m68k/netbsd-elf.h (TARGET_OS_CPP_BUILTINS): Define
23604         __HAVE_FPU__ if TARGET_HARD_FLOAT.
23605         (TARGET_DEFAULT): Delete.
23606         (EXTRA_SPECS): Delete cpp_cpu_default_spec, cpp_cpu_spec,
23607         cpp_fpu_spec, asm_default_spec and netbsd_cpp_spec.
23608         (CPP_CPU_SPEC): Delete.
23609         (TARGET_VERSION): Merge definitions, using TARGET_68010 to pick
23610         the appropriate string.
23611         (CPP_CPU_DEFAULT_SPEC, ASM_DEFAULT_SPEC, CPP_FPU_SPEC): Delete.
23612         (CPP_SPEC): Define to NETBSD_CPP_SPEC.
23613         (ASM_SPEC): Don't use %(asm_default_spec).
23614         * config/m68k/m68k.c (TARGET_DEFAULT_TARGET_FLAGS): Remove
23615         TARGET_DEFAULT and add MASK_68881.
23616         * config/m68k/m68k.md: Remove mention of TARGET_DEFAULT from comments.
23617
23618 2007-01-12  Richard Sandiford  <richard@codesourcery.com>
23619
23620         * config.gcc (m68010-*-netbsdelf*): Add MASK_68010.
23621         (m68k*-*-netbsdelf*, m68k*-*-openbsd*, m68k*-linux*): Add
23622         MASK_68010 alongside MASK_68020.
23623         * doc/invoke.texi: Document -m68010.
23624         * config/m68k/m68k.opt (m68010): New.
23625         * config/m68k/m68k.h (TARGET_CPU_CPP_BUILTINS): Define mc68010
23626         if TUNE_68010.
23627         (TUNE_68010): New macro.
23628         * config/m68k/m68k-none.h (M68K_CPU_m68k, M68K_CPU_m68010)
23629         (M68K_CPU_m68020, M68K_CPU_m68030, M68K_CPU_m68040)
23630         (M68K_CPU_m68332): Add MASK_68010.
23631         * config/m68k/linux.h (TARGET_DEFAULT): Add MASK_68010 to
23632         fallback definition.
23633         * config/m68k/netbsd-elf.h (CPP_CPU_SPEC): Remove now-redundant
23634         defines.
23635         * config/m68k/m68k.c (MASK_ALL_CPU_BITS): Add MASK_68010.
23636         (m68k_handle_option): Handle OPT_m68010.  Add MASK_68010
23637         to all entries that use MASK_68020.
23638         (output_move_simode_const, output_move_himode, output_move_qimode)
23639         (output_move_stricthi, output_move_strictqi): Use TARGET_68010
23640         instead of TARGET_68020 to select clr behavior.  Remove comment
23641         about there being no TARGET_68010.
23642         * config/m68k/m68k.md: Likewise throughout.
23643
23644 2007-01-12  Julian Brown  <julian@codesourcery.com>
23645
23646         * config/m68k/m68k.h (TARGET_ISAB): New macro.
23647         * config/m68k/m68k.c: Use TARGET_ISAB rather than TARGET_CFV4.
23648         * config/m68k/m68k.md: Likewise.
23649
23650 2007-01-12  Julian Brown  <julian@codesourcery.com>
23651
23652         * config/m68k/m68k.h (LEGITIMATE_INDEX_P, LEGITIMIZE_ADDRESS): Use
23653         TARGET_COLDFIRE_FPU instead of TARGET_CFV4E.
23654
23655 2007-01-12  Julian Brown  <julian@codesourcery.com>
23656
23657         * config/m68k/m68k.h (TUNE_68040_60): New macro.
23658         * config/m68k/m68k.c (standard_68881_constant_p): Use it.
23659         * config/m68k/m68k.md: Likewise.
23660
23661 2007-01-12  Julian Brown  <julian@codesourcery.com>
23662             Richard Sandiford  <richard@codesourcery.com>
23663
23664         * config/m68k/m68k.h (TARGET_CPU_CPP_BUILTINS): Use TUNE_68030
23665         instead of TARGET_68030, TUNE_68040 instead of TARGET_68040,
23666         TUNE_68060 instead of TARGET_68060 and TUNE_CPU32 instead of
23667         TARGET_CPU32.
23668         (TARGET_CPU32): Rename to...
23669         (TUNE_CPU32): ...this.
23670         (TUNE_68000_10, TUNE_68030, TUNE_68040, TUNE_68060)
23671         (TUNE_CFV2): New macros.
23672         * config/m68k/netbsd-elf.h (LONG_DOUBLE_TYPE_SIZE): Simplify;
23673         remove conditions that are implied by TARGET_68020.
23674         * config/m68k/m68k.c (m68k_output_function_prologue): Use TUNE_68040
23675         instead of TARGET_68040 and TUNE_CPU32 instead of TARGET_CPU32.
23676         (m68k_output_function_epilogue): Likewise.
23677         (m68k_rtx_costs): Likewise.  Use TUNE_68060 instead of TARGET_68060
23678         and TUNE_CFV2 instead of TARGET_5200.  Use TUNE_68000_10 instead of
23679         "!TARGET_68020 && !TARGET_COLDFIRE" to choose between 68000 and
23680         non-68000 timings.  Refactor multiplication and division costs.
23681         (output_addsi3): Use TUNE_68040 instead of TARGET_68040 and
23682         TUNE_CPU32 instead of TARGET_CPU32.
23683         (standard_68881_constant_p): Use TUNE_68040 instead of TARGET_68040
23684         and TUNE_68060 instead of TARGET_68060.
23685         * config/m68k/m68k.md: Use TUNE_68040 instead of TARGET_68040,
23686         TUNE_68060 instead of TARGET_68060, and TUNE_CPU32 instead of
23687         TARGET_CPU32.
23688         (movsi_const0): Use TUNE_68000_10 rather than "!TARGET_68020
23689         && !TARGET_COLDFIRE" to choose between moveq and clr.
23690         Likewise in the unnamed movsf pattern.
23691         (ashlsi_17_24, lshrsi_17_24): Guard with TUNE_68000_10 rather than
23692         "!TARGET_68020 && !TARGET_COLDFIRE".  Likewise the unnamed
23693         ashiftrt pattern.
23694
23695 2007-01-12  Richard Sandiford  <richard@codesourcery.com>
23696
23697         * config/m68k/m68k.h (TARGET_CPU_CPP_BUILTINS): Increase amount
23698         of tabbing before backslashes.
23699
23700 2007-01-11  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
23701
23702         * pa-linux.h (ASM_OUTPUT_INTERNAL_LABEL): Undefine.
23703         * pa.h (ASM_OUTPUT_LABEL): Output colon when using GAS.
23704         (ASM_OUTPUT_INTERNAL_LABEL): Define.
23705
23706 2007-01-11  Zdenek Dvorak <dvorakz@suse.cz>
23707
23708         * tree-ssa-loop-ivopts.c (extract_cond_operands): Split from
23709         find_interesting_uses_cond.
23710         (find_interesting_uses_cond): Use extract_cond_operands.
23711         (rewrite_use_compare): Use extract_cond_operands and
23712         force_gimple_operand_bsi.  Do not call update_stmt.
23713         (determine_use_iv_cost_condition): Use extract_cond_operands.
23714         Return cheaper of using original bound and changing the exit bound.
23715
23716 2007-01-11  Zdenek Dvorak <dvorakz@suse.cz>
23717
23718         PR tree-optimization/29516
23719         * tree-ssa-address.c (tree_mem_ref_addr, add_to_parts,
23720         most_expensive_mult_to_index, addr_to_parts,
23721         create_mem_ref, maybe_fold_tmr): Make the type of
23722         fields of TARGET_MEM_REF sizetype.
23723         (move_fixed_address_to_symbol, move_pointer_to_base):
23724         New functions.
23725         * tree.def (TARGET_MEM_REF): Add comment on types of
23726         the operands.
23727
23728 2007-01-11  Joseph Myers  <joseph@codesourcery.com>
23729
23730         * c-common.c (vector_types_convertible_p): Treat opaque types as
23731         always convertible if they have the same size, but not otherwise.
23732
23733 2007-01-11  Steven Bosscher  <steven@gcc.gnu.org>
23734
23735         * ifcvt.c (struct noce_if_info): Add comments to the fields.
23736         Remove the b_unconditional field.
23737         (noce_try_sign_mask): Do not look at b_unconditional.
23738         (noce_process_if_block): Do not use merge_if_blocks.  Update
23739         the CFG here.  Do not set b_unconditional.
23740         (cond_move_process_if_block): Likewise.
23741         (find_cond_trap): Likewise.
23742         (check_cond_move_block): Require simple jump insns at the end
23743         of the basic block.
23744
23745 2007-01-11  Jan Hubicka  <jh@suse.cz>
23746
23747         PR tree-optimization/1046
23748         * tree-tailcall.c (suitable_for_tail_call_opt_p): Use TREE_ADDRESSABLE
23749         when alias info is not ready.
23750         (pass_tail_recursion): Do not require aliasing.
23751         * tree-ssa-copyrename.c (pass_rename_ssa_cop): Likewise.
23752         * tree-ssa-ccp.c (pass_ccp, pass_fold_builtins): Likewise.
23753         * tree-ssa-copy.c (pass_copy_prop): Likewise.
23754         * tree-ssa-forwprop.c (pass_forwprop): Likewise.
23755         * tree-ssa-dce.c (pass_dce, pass_dce_loop, pass_cd_dce): Likewise.
23756         * passes.c (init_optimization_passes): Execute rename_ssa_copies,
23757         ccp, forwprop, copy_prop, merge_phi, copy_prop, dce and tail recursion
23758         before inlining.
23759         * tree-ssa-operands.c (add_virtual_operand, get_indirect_ref_operand):
23760         When aliasing is not build, mark statement as volatile.
23761
23762 2007-01-11  Tom Tromey  <tromey@redhat.com>
23763
23764         PR preprocessor/15185, PR preprocessor/20989:
23765         * doc/cppopts.texi <-MT>: Update description of algorithm for
23766         computing default target.
23767         <-M, -MD>: Reword "basename" text.
23768
23769 2007-01-11  Roger Sayle  <roger@eyesopen.com>
23770
23771         * builtins.c (expand_builtin_pow, expand_builtin_powi,
23772         fold_builtin_cabs, fold_builtin_sqrt, fold_builtin_trunc,
23773         fold_builtin_floor, fold_builtin_ceil, fold_builtin_round,
23774         fold_builtin_int_int_roundingfn, fold_builtin_bitop,
23775         fold_builtin_bswap, real_constp, fold_builtin_pow,
23776         fold_builtin_powi, fold_builtin_signbit, fold_builtin_copysign,
23777         do_mpfr_arg1, do_mpfr_arg2, do_mpfr_arg3, do_mpfr_sincos): Replace
23778         uses of the macro TREE_CONSTANT_OVERFLOW with TREE_OVERFLOW.
23779         * convert.c (convert_to_pointer): Likewise.
23780         * expr.c (highest_pow2_factor, expand_expr_real_1): Likewise.
23781         * fold-const.c (force_fit_type, fold_negate_expr, int_const_binop,
23782         const_binop, fold_convert_const_int_from_int,
23783         fold_convert_const_int_from_real,
23784         fold_convert_const_real_from_real, sign_bit_p,
23785         optimize_minmax_comparison, extract_muldiv_1, fold_div_compare,
23786         fold_sign_changed_comparison, fold_unary, fold_comparison,
23787         fold_binary, multiple_of_p, tree_Expr_non_zero_p,
23788         fold_negate_const, fold_abs_const, fold_not_const): Likewise.
23789         * print-tree.c (print_node_brief, print_node): Likewise.
23790         * stor-layout.c (place_field, layout_type): Likewise.
23791         * tree-chrec.c (keep_cast): Likewise.
23792         * tree.c (build_vector, build_real, build_real_from_int_cst,
23793         build_complex): Likewise.
23794
23795 2007-01-11  Roger Sayle  <roger@eyesopen.com>
23796
23797         * tree.h (TREE_CONSTANT_OVERFLOW): Obsolete.  For the time being,
23798         treat TREE_CONSTANT_OVERFLOW as a synonym of TREE_OVERFLOW.
23799
23800 2007-01-11  Paolo Bonzini  <bonzini@gnu.org>
23801
23802         * configure.ac (strict1_warn): Rename to strict_warn.
23803         (WERROR, --enable-werror, symlink hacks, stage1_cflags,
23804         cc_set_by_configure, quoted_cc_set_by_configure,
23805         stage_prefix_set_by_configure, quoted_stage_prefix_set_by_configure,
23806         all_boot_languages, all_stagestuff): Remove.
23807         (target_list): Remove bootstrap targets.
23808         * Makefile.in (quickstrap): Unconditionally make a synonym of all.
23809         (BOOT_LANGUAGES, STAGE1_CFLAGS, STAGE1_CHECKING,
23810         REMAKEFLAGS, FLAGS_TO_PASS, PREPEND_DOTDOT_TO_RELATIVE_PATHS,
23811         SUBDIR_FLAGS_TO_PASS, WERROR_FLAGS, STRICT2_WARN, LANG_STAGESTUFF,
23812         VOL_FILES, POSTSTAGE1_FLAGS_TO_PASS, STAGE2_FLAGS_TO_PASS,
23813         STAGEPROFILE_FLAGS_TO_PASS, STAGEFEEDBACK_FLAGS_TO_PASS, stage1_build,
23814         stage1_copy, stage2_build, stage2_copy, stageprofile_build,
23815         stageprofile_copy, stage3_build, stage3_copy, stagefeedback_build,
23816         stagefeedback_copy, stage4_build, clean_s1, clean_sw, bootstrap,
23817         bootstrap-lean, bootstrap2, bootstrap2-lean, bootstrap3,
23818         bootstrap3-lean, bootstrap4, bootstrap4-lean, unstage1, unstage2,
23819         unstage3, unstage4, unstageprofile, unstagefeedback, restage, restage2,
23820         restage3, restage4, restageprofile, restagefeedback, bubbleestrap,
23821         cleanstrap, unstrap, restrap, *compare, *compare3, *compare4,
23822         *compare-lean, *compare3-lean, *compare4-lean, stage1-start, stage1,
23823         stage2-start, stage2, stage3-start, stage3, stage4-start, stage4,
23824         stageprofile-start, stageprofile, stagefeedback-start, stagefeedback,
23825         risky-stage1, risky-stage2, risky-stage3, risky-stage4): Remove.
23826         (ORDINARY_FLAGS_TO_PASS): Rename to FLAGS_TO_PASS.
23827         (STAGECOPYSTUFF, STAGEMOVESTUFF): Consolidate into MOSTLYCLEANFILES.
23828         (mostlyclean): Adjust.
23829         (clean, distclean): Don't mention bootstrap stuff.
23830         * configure: Regenerate.
23831         * ada/config-lang.in, cp/config-lang.in, forttran/config-lang.in,
23832         java/config-lang.in, objc/config-lang.in, objcp/config-lang.in,
23833         treelang/config-lang.in (stagestuff): Remove.
23834         * doc/sourcebuild.texi (stage1, stage2, stage3, stage4,
23835         stageprofile, stagefeedback, stagestuff): Remove mention.
23836
23837 2007-01-11  Nick Clifton  <nickc@redhat.com>
23838
23839         * config/mcore/predicates.md (mcore_general_movesrc_operand):
23840         Accept CONSTs.
23841         (mcore_general_movdst_operand): Do not accept CONST_INTs.
23842         (mcore_arith_K_S_operand): Run the test for the S constraint not
23843         the test for the M constraint.
23844         (mcore_addsub_operand): Do not accept integer values that are
23845         larger than 32 bits.
23846         * config/mcore/mcore.md: Remove unused constraints from split.
23847         (andsi3): Use HOST_WIDE_INT instead of int to hold an INTVAL.
23848         (addsi3): Likewise.
23849         (allocate_stack): Likewise.
23850         * config/mcore/mcore.c (mcore_print_operand): Restrict output of P
23851         operands to 32 bits.
23852         (mcore_const_costs): Use HOST_WIDE_INT instead of int to hold an
23853         INTVAL.
23854         (mcore_and_cost, mcore_modify_comparison, const_ok_for_mcore,
23855         mcore_const_ok_for_inline, mcore_const_trick_uses_not,
23856         try_constant_tricks, mcore_num_ones, mcore_num_zeros,
23857         mcore_output_bclri, mcore_output_andn, output_inline_const,
23858         mcore_output_move, mcore_output_movedouble): Likewise.
23859         (mcore_output_cmov): Use CONST_OK_FOR_M and CONST_OK_FOR_N.
23860         (output_inline_const): Likewise.
23861         (output_inline_const): Fix format strings used in sprintf
23862         statements.
23863         * config/mcore/mcore-protos.h: Update prototypes for changed
23864         functions in mcore.c.
23865         * config/mcore/mcore.h (CONST_OK_FOR_I): Cast values to
23866         HOST_WIDE_INT and not int.
23867         (CONST_OK_FOR_J, CONST_OK_FOR_K, CONST_OK_FOR_L, CONST_OK_FOR_M,
23868         CONST_OK_FOR_N): Likewise.
23869         (LEGITIMATE_CONSTANT_P): Also check CONSTANT_P.
23870         (GO_IF_LEGITIMATE_INDEX): Use HOST_WIDE_INT instead of int to hold
23871         an INTVAL.
23872
23873 2007-01-10  Jan Hubicka  <jh@suse.cz>
23874
23875         * tree-vrp.c (remove_range_assertions): Release defs.
23876         * tree-ssa-loop-ivopts.c (rmeove_statement): Likewise.
23877         * tree-ssa-dom.c (remove_stmt_or_phi): Likewise.
23878
23879 2007-01-10  Paul Brook  <paul@codesourcery.com>
23880
23881         * config/arm/arm.c (arm_rtx_costs_1): Handle mutiply-subtract.
23882         * config/arm/arm.md (mulsi3subsi): New insn.
23883
23884 2007-01-10  Zdenek Dvorak <dvorakz@suse.cz>
23885
23886         * tree-ssa-loop-manip.c (tree_unroll_loop): Make it a wrapper over ...
23887         (tree_transform_and_unroll_loop): New.
23888         * tree-flow.h (transform_callback, tree_transform_and_unroll_loop):
23889         Declare.
23890
23891 2007-01-10  Robert Kennedy <jimbob@google.com>
23892
23893         * fold-const.c (fold_comparison): Fold comparisons like (x *
23894         1000 < 0) to (x < 0).
23895
23896 2007-01-10  Ian Lance Taylor  <iant@google.com>
23897
23898         * tree-pretty-print.c (dump_generic_node): Print parentheses when
23899         operands have the same priority.
23900
23901 2007-01-10  Tom Tromey  <tromey@redhat.com>
23902
23903         * fold-const.c (fold_truthop): Don't check can_use_bit_fields_p.
23904         (fold_binary): Likewise.
23905         * langhooks.c (lhd_can_use_bit_fields_p): Removed.
23906         * langhooks-def.h (lhd_can_use_bit_fields_p): Removed.
23907         (LANG_HOOKS_CAN_USE_BIT_FIELDS_P): Removed.
23908         (LANG_HOOKS_INITIALIZER): Remove LANG_HOOKS_CAN_USE_BIT_FIELDS_P.
23909         * langhooks.h (struct lang_hooks): Removed field
23910         'can_use_bit_fields_p'.
23911
23912 2007-01-10  Ralf Corsépius <ralf.corsepius@rtems.org>
23913
23914         * config/bfin/t-bfin, config/bfin/t-bfin-elf: Remove GCC_CFLAGS.
23915
23916 2007-01-10  Razya Ladelsky  <razya@il.ibm.com>
23917
23918         * function.c (get_last_funcdef_no): New function.
23919         * function.h (get_last_funcdef_no): Declare.
23920         * tree-inline.c (initialize_cfun): Add initialization.
23921         (tree_function_versioning): Cleanup.
23922
23923 2007-01-10  Jan Hubicka  <jh@suse.cz>
23924
23925         * tree-inline.c (setup_one_parameter): Do not propagate into abnormal
23926         PHIs.
23927
23928 2007-01-10  Sa Liu  <saliu@de.ibm.com>
23929             Ben Elliston  <bje@au.ibm.com>
23930
23931         * spu.h (STACK_SAVE_AREA): Use VOIDmode for SAVE_FUNCTION, SImode
23932         for SAVE_NONLOCAL and Pmode for any other save level.
23933         * spu-protos.h (spu_restore_stack_block): Declare.
23934         * spu.md (save_stack_block): Remove.
23935         (restore_stack_block): Call spu_restore_stack_block.
23936         * spu.c (spu_restore_stack_block): New function.
23937         (spu_expand_epilogue): Remove old comment.
23938
23939 2007-01-09  Zdenek Dvorak <dvorakz@suse.cz>
23940
23941         PR tree-optimization/30322
23942         * tree-ssa-loop-ivopts.c (fold_affine_expr, iv_value): Removed.
23943         (cand_value_at): Return the value as aff_tree.
23944         (may_eliminate_iv): Convert the bound from aff_tree to tree.
23945         * tree-affine.c (aff_combination_add_cst, aff_combination_add_product,
23946         aff_combination_mult): New functions.
23947         (aff_combination_add): Use aff_combination_add_cst.
23948         (aff_combination_convert): Allow conversions to a wider type.
23949         (tree_to_aff_combination): Handle BIT_NOT_EXPR.
23950         * tree-affine.h (aff_combination_mult): Declare.
23951
23952 2007-01-09  Carlos O'Donell  <carlos@codesourcery.com>
23953
23954         * doc/tm.texi: Update documentation to reflect reality of exec
23955         and start file search behaviours. Update copyright year.
23956         * doc/invoke.texi: Explain how GCC_EXEC_PREFIX is used to find
23957         header file directories.
23958
23959 2007-01-09  Uros Bizjak  <ubizjak@gmail.com>
23960
23961         * config/i386/i386.md (*sinxf2): Rename to *sinxf2_i387.
23962         (*cosxf2): Rename to cosxf2_i387.
23963         (*sindf2, *sinsf2): Extend operand 1 to XFmode.  Macroize patterns
23964         using X87MODEF12 mode macro. Rename patterns to
23965         *sin_extend<mode>xf2_i387.  Use SSE_FLOAT_MODE_P to disable patterns
23966         for SSE math.
23967         (*cosdf2, *cossf2): Ditto.
23968         (sincosdf3, sincossf3): Ditto.  Rewrite corresponding splitters
23969         to match extended input operands.
23970         (sincos<mode>3): New expander.
23971         (*sinextendsfdf2, *cosextendsfdf2, *sincosextendsfdf3): Remove
23972         insn patterns and corresponding splitters.
23973
23974 2007-01-09  Kaz Kojima  <kkojima@gcc.gnu.org>
23975
23976         * config/sh/t-linux (TARGET_LIBGCC2_CFLAGS): Delete.
23977         (SHLIB_MAPFILES, SHLIB_LINK, SHLIB_INSTALL): Likewise.
23978
23979 2007-01-09  Nicolas Pitre  <nico@cam.org>
23980
23981         PR target/30173
23982         * arm/ieee754-df.S (Lad_s): Also test the low word of X for zero.
23983
23984 2007-01-08  Geoffrey Keating  <geoffk@apple.com>
23985
23986         * target.h (struct gcc_target): New field library_rtti_comdat.
23987         * target-def.h (TARGET_CXX_LIBRARY_RTTI_COMDAT): New.
23988         (TARGET_CXX): Add TARGET_CXX_LIBRARY_RTTI_COMDAT.
23989         * doc/tm.texi (C++ ABI): Document TARGET_CXX_LIBRARY_RTTI_COMDAT.
23990         * config/darwin.h (TARGET_CXX_LIBRARY_RTTI_COMDAT): Define.
23991
23992 2007-01-08  Geoffrey Keating  <geoffk@apple.com>
23993
23994         * doc/invoke.texi (Optimize Options): Correct description of -O0.
23995
23996 2007-01-08  Richard Guenther  <rguenther@suse.de>
23997
23998         * tree.h (force_fit_type_double): Export.
23999         (force_fit_type): Remove.
24000         * fold-const.c (force_fit_type_double): New function.
24001         (force_fit_type): Remove.
24002         (int_const_binop): Use it.
24003         (fold_convert_const_int_from_int): Likewise.
24004         (fold_convert_const_int_from_real): Likewise.
24005         (fold_div_compare): Likewise.
24006         (fold_sign_changed_comparison): Likewise.
24007         (fold_unary): Likewise.
24008         (fold_negate_const): Likewise.
24009         (fold_abs_const): Likewise.
24010         (fold_not_const): Likewise.
24011         * c-common.c (shorten_compare): Use force_fit_type_double.
24012         * convert.c (convert_to_pointer): Likewise.
24013
24014 2007-01-08  Richard Guenther  <rguenther@suse.de>
24015
24016         * tree.h (build_int_cst_wide_type): Export.
24017         * tree.c (build_int_cst_wide_type): New function.
24018         (build_int_cst_wide): Fix comment.
24019         * builtins.c (fold_builtin_object_size): Use build_int_cst
24020         to build -1 or 0 of the correct type.  Use fit_double_type
24021         to check for overflow.
24022         * fold-const.c (optimize_bit_field_compare): Use build_int_cst_type
24023         to build the mask.
24024         (decode_field_reference): Likewise.
24025         (all_ones_mask_p): Likewise.
24026         (native_interpret_int): Use build_int_cst_wide_type.
24027         (fold_binary): Use build_int_cst_type to build an all-ones
24028         value.
24029         * stor-layout.c (set_sizetype): Use build_int_cst_wide_type.
24030
24031 2007-01-08  Daniel Jacobowitz  <dan@codesourcery.com>
24032
24033         * config/pa/t-pa64 (libgcc_stub.a): Use $(T).
24034
24035 2007-01-09  Ben Elliston  <bje@au.ibm.com>
24036
24037         * genautomata.c (STATS_OPTION): New option.
24038         (stats_flag): New flag.
24039         (gen_automata_option): Handle it.
24040         (initiate_automaton_gen): Ditto.
24041         (write_automata): Output statistics only if stats_flag is
24042         set. Likewise, output time statistics only if time_flag is set.
24043         * doc/md.texi (Processor pipeline description): Document new flag.
24044
24045 2007-01-08  Richard Guenther  <rguenther@suse.de>
24046
24047         * builtins.c (fold_builtin_int_roundingfn): Use fit_double_type.
24048         * tree.c (build_int_cst_type): Likewise.
24049         (size_in_bytes): Don't call force_fit_type on the result.
24050         (int_fits_type_p): Use fit_double_type.
24051         * fold-const.c (fit_double_type): New function.
24052         (force_fit_type): Use it.
24053         * tree.h (fit_double_type): Export.
24054
24055 2007-01-08  Jan Hubicka  <jh@suse.cz>
24056
24057         * tree-vectorizer.c (gate_increase_alignment): Fix return type.
24058         * ipa.c (function_and_variable_visibility): Fix return type.
24059
24060 2007-01-08  Richard Guenther  <rguenther@suse.de>
24061
24062         * tree-ssa-ccp.c (maybe_fold_offset_to_array_ref): Use type
24063         of offset to build the index.
24064         * tree-pretty-print.c (dump_generic_node): Don't build negated
24065         const just for printing.
24066         * c-pretty-print.c (pp_c_integer_constant): Likewise.
24067         * builtins.c (fold_builtin_int_roundingfn): Check if result
24068         fits the type by using force_fit_type and comparing the result.
24069         * predict.c (predict_loops): Use compare_tree_int for comparison.
24070         * tree.c (build_int_cst): Fall back to integer_type_node for
24071         NULL_TREE type.
24072         (build_int_cst_wide): Assert type is non-null.
24073
24074 2007-01-08  Roberto Costa  <roberto.costa@st.com>
24075
24076         * tree-vrp.c (extract_range_from_cond_expr): New.
24077         (extract_range_from_expr): Handle COND_EXPR nodes used as expressions.
24078         * tree-ssa-ccp.c (get_maxval_strlen): Handle COND_EXPR nodes used
24079         as expressions.
24080         (fold_stmt): Bug fix, avoid infinite recursion when folding COND_EXPRs.
24081         * tree-ssa-forwprop.c (simplify_cond, forward_propagate_into_cond,
24082         tree_ssa_forward_propagate_single_use_vars): Handle COND_EXPR nodes
24083         used as expressions.
24084         * tree-object-size.c (cond_expr_object_size): New.
24085         (collect_object_sizes_for): Handle COND_EXPR nodes used as expressions.
24086
24087 2007-01-08  Jan Hubicka  <jh@suse.cz>
24088
24089         * tree-ssa-forwprop.c (forward_propagate_into_cond,
24090         tree_ssa_forward_propagate_single_use_va): Release defs of propagated
24091         statement.
24092
24093 2007-01-08  Richard Guenther  <rguenther@suse.de>
24094
24095         PR tree-optimization/23603
24096         * tree-vrp.c (set_value_range_to_truthvalue): New function.
24097         (extract_range_from_binary): Fall back to truthvalue instead of
24098         varying for TRUTH_*_EXPR.
24099         (extract_range_from_comparison): Fall back to truthvalue instead of
24100         varying.
24101         (vrp_visit_phi_node): Don't adjust new range bounds to +INF/-INF
24102         if all visited PHI values were constant.
24103
24104 2007-01-08  Jan Hubicka  <jh@suse.cz>
24105
24106         * cgraphunit.c (cgraph_process_new_functions): Reset reachable flag.
24107         (cgraph_analyze_function): break out from ...
24108         (cgraph_finalize_compilation_unit): ... here.
24109         (cgraph_expand_function): Remove forgoten commented out line.
24110         (cgraph_optimize): Analyze functions.
24111
24112 2007-01-08  Jan Hubicka  <jh@suse.cz>
24113
24114         * tree-pas.h (TODO_remove_function): New flag.
24115         (TODO_update*): Renumber.
24116         (pass_ipa_increase_alignment,
24117         pass_ipa_function_and_variable_visibility): New passes.
24118         * cgraphunit.c (cgraph_increase_alignment): Move to tree-vectorizer.c
24119         (cgraph_function_and_variable_visibility): Move to ipa.c
24120         (cgraph_optimize): Don't call cgraph_function_and_variable_visibility,
24121         cgraph_increase_alignment.
24122         * ipa-inline.c (cgraph_decide_inlining): Don't push timevar.
24123         (cgraph_decide_inlining_incrementally): Push TV_INTEGRATION before
24124         calling tree-inline.
24125         (cgraph_early_inlining): Do not call cgraph_remove_unreachable_nodes.
24126         (pass_ipa_inline, pass_early_ipa_inlining): Set TODO_remove_functions
24127         * tree-vectorizer.c (increase_alignment): Move here from cgraphunit.c
24128         (gate_increase_alignment): New function.
24129         (pass_ipa_increase_alignment): New pass.
24130         * ipa.c: Inline tree-pass.h and timevar.h
24131         (function_and_variable_visibility): Move here from cgraphunit.c
24132         * tree-optimize.c (pass_early_local_passes): Add TODO_remove_functions.
24133         * passes.c (init_optimization_passes): Add the two new passes.
24134         (execute_todo): Handle cgraph_remove_functions.
24135
24136 2007-01-08  Nick Clifton  <nickc@redhat.com>
24137
24138         * config/frv/predicates.md (reg_or_0_operand): Accept
24139         CONST_DOUBLEs.
24140
24141 2007-01-08  Ralf Corsépius <ralf.corsepius@rtems.org>
24142
24143         * config/bfin/rtems.h, config/bfin/t-rtems: New.
24144         * config.gcc: Add bfin*-rtems*.
24145
24146 2007-01-08  Mark Shinwell  <shinwell@codesourcery.com>
24147
24148         * c.opt: Add -flax-vector-conversions.
24149         * c-typeck.c (convert_for_assignment): Pass flag to
24150         vector_types_convertible_p to allow emission of note.
24151         (digest_init): Likewise.
24152         * c-opts.c: Handle -flax-vector-conversions.
24153         * c-common.c (flag_lax_vector_conversions): New.
24154         (vector_types_convertible_p): Unless -flax-vector conversions
24155         has been passed, disallow conversions between vectors with
24156         differing numbers of subparts and/or element types.  If such
24157         a conversion is disallowed, possibly emit a note on the first
24158         occasion only to inform the user of -flax-vector-conversions.
24159         The new last argument specifies this.
24160         * c-common.h (flag_lax_vector_conversions): New.
24161         (vector_types_convertible_p): Add extra argument.
24162         * config/i386/i386.c (ix86_init_mmx_sse_builtins): Use
24163         char_type_node for V*QI type vectors.
24164         * config/rs6000/rs6000-c.c (altivec_overloaded_builtins):
24165         Update to satisfy new typechecking rules.
24166         * config/rs6000/altivec.h (vec_cmple): Use vec_cmpge, for both
24167         C and C++ variants.
24168         * doc/invoke.texi (C Dialect Options): Document
24169         -flax-vector-conversions.
24170
24171 2007-01-08  Mark Shinwell  <shinwell@codesourcery.com>
24172
24173         PR tree-optimization/29877
24174         * tree-ssa-ter.c (is_replaceable_p): Deem assignments with
24175         a register variable on the RHS to not be replaceable.
24176
24177 2007-01-08  Chen Liqin  <liqin@sunnorth.com.cn>
24178         * config/score/t-score-elf (MULTILIB_OPTIONS): Change.
24179         * config/score/predicates.md (const_uimm5, sr0_operand, const_simm12,
24180         const_simm15, const_pow2, const_npow2): Added.
24181         * config/score/misc.md (insv, extv, extzv, movmemsi,
24182         move_lbu_a/b, mov_lhu_a/b etc): Added and fix some bug.
24183         * config/score/score.c (score_address_cost, score_select_cc_mode):
24184         Added.
24185         Change CONST_OK_FOR_LETTER_P/EXTRA_CONSTRAINT define.
24186         Update score_rtx_costs for MACRO TARGET_RTX_COSTS.
24187         Update score_print_operand.
24188         * config/score/score.h (DATA_ALIGNMENT, SELECT_CC_MODE): Added.
24189         Adjust register allocate order and update some macro define.
24190         * config/score/score-mdaux.c (mdx_unaligned_load, mdx_unsigned_store,
24191         mdx_block_move_straight, mdx_block_move_loop_head,
24192         mdx_block_move_loop_body, mdx_block_move_loop_foot,
24193         mdx_block_move_loop, mdx_block_move): Added.
24194         (mdx_movsicc, mdp_select_add_imm, mdp_select, mds_zero_extract_andi,
24195         mdp_limm): Updated and fix some bug and typo.
24196         * config/score/score.md (movqi/hi/si, add/sub/zero/ext): Updated.
24197         (movsf, movdf, doloop_end): Added.
24198
24199 2007-01-08  Kazu Hirata  <kazu@codesourcery.com>
24200
24201         * config/arm/arm.c, config/arm/arm.h, config/arm/arm.md,
24202         config/arm/thumb2.md: Fix comment typos.
24203         * doc/extend.texi: Fix a typo.
24204
24205 2007-01-07  Eric Christopher  <echristo@apple.com>
24206
24207         * configure.ac: Check for __stack_chk_fail for darwin.
24208         * configure: Regenerate.
24209
24210 2007-01-07  Richard Guenther  <rguenther@suse.de>
24211
24212         * tree-vrp.c (extract_range_from_assert): CSE calls to
24213         compare_values where possible.
24214         (extract_range_from_unary_expr): Likewise.
24215
24216 2007-01-07  Anatoly Sokolov <aesok@post.ru>
24217
24218         * config/avr/avr-protos.h (call_insn_operand): Delete prototype.
24219         * config/avr/avr.c (call_insn_operand): Delete function.
24220         * config/avr/avr.md (*pushqi, *pushhi, *pushsi, *pushsf): Use REG_SP
24221         instead of register number. Use predicates.
24222         * config/avr/predicates.md (const0_operand, reg_or_0_operand,
24223         call_insn_operand): Add.
24224
24225 2007-01-06  Jan Hubicka  <jh@suse.cz>
24226
24227         * tree-pass.h (pass_build_cgraph_edges): Declare.
24228         * cgraphunit.c (record_refernece): Move to cgraphbuild.c
24229         (visited_nodes): Remove.
24230         (cgraph_create_edges): Move to cgraphbuild.c; rename to
24231         build_cgrpah_edges; make visited_nodes local.
24232         (cgraph_process_new_functions): DO not call initialize_inline_failed.
24233         (record_references_in_initializer): Move to cgraphbuild.c
24234         (initialize_inline_failed, rebuild_cgraph_edges,
24235         pass_rebuild_cgraph_edges): Move to cgraphbuild.c.
24236         (verify_cgraph_node): Make visited_nodes local.
24237         (cgraph_analyze_function): Do not call cgraph_create_edges and
24238         initialize_inline_failed.
24239         (cgraph_expand_function): Do not call cgraph_lower_function;
24240         assert that function is already lowered.
24241         * Makefile.in (cgraphbuild.o): New.
24242         * passes.c (init_optimization_passes): Add pass_build_cgraph_edges
24243         at the end of lowering passes.
24244
24245 2007-01-06  Steven Bosscher  <steven@gcc.gnu.org>
24246
24247         * ifcvt.c (cond_move_convert_if_block): New function, code
24248         factored out from...
24249         (cond_move_process_if_block): ...here.  Call the new function
24250         on the THEN and ELSE blocks.
24251         (merge_if_block): Do not copy global_live_at_end, merge_blocks
24252         already takes care of this.
24253
24254 2007-01-05  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
24255
24256         PR c/19978
24257         * tree.h (TREE_OVERFLOW_P): New.
24258         * c-typeck.c (parser_build_unary_op): Warn only if result
24259         overflowed and operands did not.
24260         (parser_build_binary_op): Likewise.
24261         (convert_for_assignment): Remove redundant overflow_warning.
24262         * c-common.c (overflow_warning): Don't check or set TREE_OVERFLOW.
24263
24264 2007-01-05  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
24265
24266         * c-typeck.c (store_init_value): Split over two lines to follow
24267         the GNU coding style.
24268
24269 2007-01-05  Benjamin Kosnik  <bkoz@redhat.com>
24270
24271         * c-cppbuiltin.c (c_cpp_builtins): __GXX_EXPERIMENTAL_CPP0X__ to
24272         __GXX_EXPERIMENTAL_CXX0X__.
24273         * doc/cpp.texi: Same.
24274
24275 2007-01-05  Richard Guenther  <rguenther@suse.de>
24276
24277         PR middle-end/27826
24278         * tree.c (get_narrower): Do not construct COMPONENT_REFs
24279         with mismatched types.  Instead explicitly build a
24280         conversion NOP_EXPR.
24281
24282 2007-01-05  Ian Lance Taylor  <iant@google.com>
24283
24284         * c-common.c (decl_with_nonnull_addr_p): New function.
24285         (c_common_truthvalue_conversion): Call it.
24286         * c-typeck.c (build_binary_op): Likewise.
24287         * c-common.h (decl_with_nonnull_addr_p): Declare.
24288
24289 2007-01-05  Jakub Jelinek  <jakub@redhat.com>
24290
24291         PR c/30360
24292         * libgcc2.c (__divdc3): Compare c and d against 0.0 instead of
24293         denom against 0.0.
24294
24295 2007-01-05  Joel Brobecker  <brobecker@adacore.com>
24296
24297         * doc/install.texi (Final install): Document the fact that
24298         the GNAT runtime should not be stripped.
24299
24300 2007-01-04  Jan Hubicka  <jh@suse.cz>
24301
24302         * tree-inline.c (fold_marked_statements): Update operand caches
24303         and EH after folding
24304
24305 2007-01-04  Ian Lance Taylor  <iant@google.com>
24306
24307         * c-common.c (check_function_nonnull): Whitespace fix.
24308
24309 2007-01-04  Jan Hubicka  <jh@suse.cz>
24310
24311         * tree-optimize.c (execute_fixup_cfg): Correct previously mistakely
24312         comitted older version of patch.
24313         (pass_fixup_cfg): Add TODOs to verify flow and statements, dump
24314         function, celanup cfg and collect garbage.
24315
24316 2007-01-04  Mike Stump  <mrs@apple.com>
24317
24318         * Makefile.in (mostlyclean): Don't remove libgcc anymore.
24319         (clean): Likewise.
24320
24321 2007-01-04  Eric Christopher  <echristo@apple.com>
24322
24323         * libgcc2.c (__bswapsi2): Use SItype.
24324         (__bswapdi2): Use DItype.
24325         * libgcc2.h: Update for above.
24326
24327 2007-01-04  Paul Brook  <paul@codesourcery.com>
24328
24329         * config/arm/arm.md (arm_mulsi3, thumb_mulsi3, mulsi3_compare0,
24330         mulsi_compare0_scratch, mulsi3addsi, mulsi3addsi_compare0,
24331         mulsi3addsi_compare0_scratch, mulsidi3adddi, mulsidi3,
24332         umulsidi3, umulsidi3adddi, smulsi3_highpart,
24333         umulsi3_highpart): Make conditional on !arm_arch6.
24334         (arm_mulsi3_v6, thumb_mulsi3_v6, mulsi3_compare0_v6,
24335         mulsi_compare0_scratch_v6, mulsi3addsi_v6, mulsi3addsi_compare0_v6,
24336         mulsi3addsi_compare0_scratch_v6, mulsidi3adddi_v6, mulsidi3_v6,
24337         umulsidi3_v6, umulsidi3adddi_v6, smulsi3_highpart_v6,
24338         umulsi3_highpart_v6): New insns.
24339
24340 2007-01-04  Roger Sayle  <roger@eyesopen.com>
24341
24342         * fold-const.c (fold_convert): When casting an expression to void,
24343         fold_ignored_result may discover a GIMPLE_MODIFY_STMT which doesn't
24344         have a type.  Instead of attempting to build a NOP_EXPR, return
24345         these "special" trees directly.
24346
24347 2007-01-04  Joseph Myers  <joseph@codesourcery.com>
24348
24349         * config/rs6000/rs6000.c (rs6000_rtx_costs): Make adjustment for
24350         MULT inside MINUS as either argument.  Use rs6000_cost->dmul -
24351         rs6000_cost->fp not 0 as adjustment for outer NEG.
24352
24353 2007-01-04  Jan Hubicka  <jh@suse.cz>
24354
24355         * cgraph.c (cgraph_release_function_body): New function.
24356         (cgraph_remove_node): Use it.
24357         * cgraph.h (cgraph_release_function_body): Declare.
24358         * cgraphunit.c (cgraph_expand_function): Use it.
24359         * ipa.c (cgraph_remove_unreahchable_nodes): Use it.
24360         * tree-ssa.c (delete_tree_ssa): Allow to be called before aliasing
24361         is initialized and while compilation of other function is running.
24362         * tree-optimize.c (execute_free_cfg_annotations): Move code to clear
24363         statement CFG annotations from here to ...
24364         * tree-cfg.c (delete_tree_cfg_annotations): ... here.
24365
24366 2007-01-04  Zdenek Dvorak <dvorakz@suse.cz>
24367
24368         * cfgloop.h (enum li_flags): Make the constants powers of two.
24369
24370 2007-01-04  Jan Hubicka  <jh@suse.cz>
24371
24372         * tree-inline.c (copy_bb): Insert new statements to statements_to_fold
24373         set.
24374         (fold_marked_statements): New function.
24375         (optimize_inline_calls, tree_function_versioning): Fold new statements.
24376         * tree-inline.h (copy_body_data): Add statements_to_fold.
24377
24378 2007-01-03  Daniel Jacobowitz  <dan@codesourcery.com>
24379
24380         * config.gcc: Mention libgcc/config.host.
24381         * Makefile.in: Update comments mentioning libgcc.
24382         (LIBGCC, INSTALL_LIBGCC, GCC_PARTS, mklibgcc): Delete.
24383         (all.cross, start.encap, rest.encap, rest.cross): Update
24384         dependencies for libgcc move.
24385         (libgcc.mk, LIBGCC_DEPS, libgcov.a, libgcc.a, stmp-multilib)
24386         (clean-target, clean-target-libgcc): Delete.
24387         (srcdirify, GCC_EXTRA_PARTS): New macros.
24388         (libgcc-support, libgcc.mvars): New rules.
24389         (distclean): Remove mention of mklibgcc.
24390         (install): Don't reference INSTALL_LIBGCC.
24391         (install-common): Don't reference EXTRA_PARTS.
24392         (install-libgcc, install-multilib): Delete rules.
24393         * mklibgcc.in: Delete file.
24394         * doc/configfiles.texi: Don't mention mklibgcc.
24395
24396         * config/i386/t-darwin (SHLIB_VERPFX): Delete (moved to libgcc).
24397         * config/i386/t-darwin64 (SHLIB_VERPFX): Likewise.
24398         * config/rs6000/t-darwin (SHLIB_VERPFX): Likewise.
24399         * config/rs6000/t-ppccomm (TARGET_LIBGCC2_CFLAGS, SHLIB_MAPFILES)
24400         (mklibgcc, ldblspecs): Likewise.
24401
24402         * config/i386/t-nwld (libgcc.def, libc.def, libpcre.def)
24403         (posixpre.def): Use $(T).
24404         (SHLIB_EXT, SHLIB_NAME, SHLIB_SLIBDIR_QUAL, SHLIB_DEF, SHLIB_MAP)
24405         (SHLIB_SRC, SHLIB_INSTALL): Delete.
24406         (SHLIB_LINK): Make dummy.
24407         * config/t-slibgcc-darwin: Delete contents except for dummy SHLIB_LINK.
24408
24409         * config/frv/t-linux (EXTRA_MULTILIB_PARTS): Clear.
24410
24411         * config/alpha/t-crtfm: Use $(T) in rules for EXTRA_PARTS.
24412         * config/alpha/t-vms, config/alpha/t-vms64, config/fr30/t-fr30,
24413         config/i386/t-rtems-i386, config/ia64/t-ia64, config/rs6000/t-beos,
24414         config/rs6000/t-newas, config/sparc/t-elf: Likewise.
24415
24416         * configure.ac (all_outputs): Remove mklibgcc.
24417         * configure: Regenerated.
24418
24419 2007-01-03  Josh Conner  <jconner@apple.com>
24420
24421         PR middle-end/29683
24422         * calls.c (compute_argument_addresses): Set stack and stack_slot
24423         for partial args, too.
24424         (store_one_arg): Use locate.size.constant for the size when
24425         generating a save_area.
24426
24427 2007-01-03  Robert Kennedy <jimbob@google.com>
24428
24429         * tree-cfg.c (tree_merge_blocks): Release SSA_NAME phi results
24430         whose definitions are deleted due to basic block merging.
24431
24432 2007-01-03  Paul Brook  <paul@codesourcery.com>
24433
24434         PR target/16634
24435         * config/arm/arm.c (output_return_instruction): Pop PC in interrupt
24436         functions.
24437         (use_return_insn): Return 0 for Thumb interrupt functions.
24438         (print_multi_reg): Add rfe argument for IRQ returns.
24439         (arm_output_epilogue): Pop interrupt return address directly into PC.
24440         (arm_expand_prologue): Only adjust IRQ return address in Arm mode.
24441
24442 2007-01-03  Paul Brook  <paul@codesourcery.com>
24443
24444         Merge from sourcerygxx-4_1.
24445         * config/arm/thumb2.md: New file.
24446         * config/arm/elf.h (JUMP_TABLES_IN_TEXT_SECTION): Return True for
24447         Thumb-2.
24448         * config/arm/coff.h (JUMP_TABLES_IN_TEXT_SECTION): Ditto.
24449         * config/arm/aout.h (ASM_OUTPUT_ADDR_VEC_ELT): Add !Thumb-2 assertion.
24450         (ASM_OUTPUT_ADDR_DIFF_ELT): Output Thumb-2 jump tables.
24451         * config/arm/aof.h (ASM_OUTPUT_ADDR_DIFF_ELT): Output Thumb-2 jump
24452         tables.
24453         (ASM_OUTPUT_ADDR_VEC_ELT): Add !Thumb-2 assertion.
24454         * config/arm/ieee754-df.S: Use macros for Thumb-2/Unified asm
24455         comptibility.
24456         * config/arm/ieee754-sf.S: Ditto.
24457         * config/arm/arm.c (thumb_base_register_rtx_p): Rename...
24458         (thumb1_base_register_rtx_p): ... to this.
24459         (thumb_index_register_rtx_p): Rename...
24460         (thumb1_index_register_rtx_p): ... to this.
24461         (thumb_output_function_prologue): Rename...
24462         (thumb1_output_function_prologue): ... to this.
24463         (thumb_legitimate_address_p): Rename...
24464         (thumb1_legitimate_address_p): ... to this.
24465         (thumb_rtx_costs): Rename...
24466         (thumb1_rtx_costs): ... to this.
24467         (thumb_compute_save_reg_mask): Rename...
24468         (thumb1_compute_save_reg_mask): ... to this.
24469         (thumb_final_prescan_insn): Rename...
24470         (thumb1_final_prescan_insn): ... to this.
24471         (thumb_expand_epilogue): Rename...
24472         (thumb1_expand_epilogue): ... to this.
24473         (arm_unwind_emit_stm): Rename...
24474         (arm_unwind_emit_sequence): ... to this.
24475         (thumb2_legitimate_index_p, thumb2_legitimate_address_p,
24476         thumb1_compute_save_reg_mask, arm_dwarf_handle_frame_unspec,
24477         thumb2_index_mul_operand, output_move_vfp, arm_shift_nmem,
24478         arm_save_coproc_regs, thumb_set_frame_pointer, arm_print_condition,
24479         thumb2_final_prescan_insn, thumb2_asm_output_opcode, arm_output_shift,
24480         thumb2_output_casesi): New functions.
24481         (TARGET_DWARF_HANDLE_FRAME_UNSPEC): Define.
24482         (FL_THUMB2, FL_NOTM, FL_DIV, FL_FOR_ARCH6T2, FL_FOR_ARCH7,
24483         FL_FOR_ARCH7A, FL_FOR_ARCH7R, FL_FOR_ARCH7M, ARM_LSL_NAME,
24484         THUMB2_WORK_REGS): Define.
24485         (arm_arch_notm, arm_arch_thumb2, arm_arch_hwdiv, arm_condexec_count,
24486         arm_condexec_mask, arm_condexec_masklen)): New variables.
24487         (all_architectures): Add armv6t2, armv7, armv7a, armv7r and armv7m.
24488         (arm_override_options): Check new CPU capabilities.
24489         Set new architecture flag variables.
24490         (arm_isr_value): Handle v7m interrupt functions.
24491         (user_return_insn): Return 0 for v7m interrupt functions.  Handle
24492         Thumb-2.
24493         (const_ok_for_arm): Handle Thumb-2 constants.
24494         (arm_gen_constant): Ditto.  Use movw when available.
24495         (arm_function_ok_for_sibcall): Return false for v7m interrupt
24496         functions.
24497         (legitimize_pic_address, arm_call_tls_get_addr): Handle Thumb-2.
24498         (thumb_find_work_register, arm_load_pic_register,
24499         legitimize_tls_address, arm_address_cost, load_multiple_sequence,
24500         emit_ldm_seq, emit_stm_seq, arm_select_cc_mode, get_jump_table_size,
24501         print_multi_reg, output_mov_long_double_fpa_from_arm,
24502         output_mov_long_double_arm_from_fpa, output_mov_double_fpa_from_arm,
24503         output_mov_double_fpa_from_arm, output_move_double,
24504         arm_compute_save_reg_mask, arm_compute_save_reg0_reg12_mask,
24505         output_return_instruction, arm_output_function_prologue,
24506         arm_output_epilogue, arm_get_frame_offsets, arm_regno_class,
24507         arm_output_mi_thunk, thumb_set_return_address): Ditto.
24508         (arm_expand_prologue): Handle Thumb-2.  Use arm_save_coproc_regs.
24509         (arm_coproc_mem_operand): Allow POST_INC/PRE_DEC.
24510         (arithmetic_instr, shift_op): Use arm_shift_nmem.
24511         (arm_print_operand): Use arm_print_condition.  Handle '(', ')', '.',
24512         '!' and 'L'.
24513         (arm_final_prescan_insn): Use extract_constrain_insn_cached.
24514         (thumb_expand_prologue): Use thumb_set_frame_pointer.
24515         (arm_file_start): Output directive for unified syntax.
24516         (arm_unwind_emit_set): Handle stack alignment instruction.
24517         * config/arm/lib1funcs.asm: Remove default for __ARM_ARCH__.
24518         Add v6t2, v7, v7a, v7r and v7m.
24519         (RETLDM): Add Thumb-2 code.
24520         (do_it, shift1, do_push, do_pop, COND, THUMB_SYNTAX): New macros.
24521         * config/arm/arm.h (TARGET_CPU_CPP_BUILTINS): Define __thumb2__.
24522         (TARGET_THUMB1, TARGET_32BIT, TARGET_THUMB2, TARGET_DSP_MULTIPLY,
24523         TARGET_INT_SIMD, TARGET_UNIFIED_ASM, ARM_FT_STACKALIGN, IS_STACKALIGN,
24524         THUMB2_TRAMPOLINE_TEMPLATE, TRAMPOLINE_ADJUST_ADDRESS,
24525         ASM_OUTPUT_OPCODE, THUMB2_GO_IF_LEGITIMATE_ADDRESS,
24526         THUMB2_LEGITIMIZE_ADDRESS, CASE_VECTOR_PC_RELATIVE,
24527         CASE_VECTOR_SHORTEN_MODE, ADDR_VEC_ALIGN, ASM_OUTPUT_CASE_END,
24528         ADJUST_INSN_LENGTH): Define.
24529         (TARGET_REALLY_IWMMXT, TARGET_IWMMXT_ABI, CONDITIONAL_REGISTER_USAGE,
24530         STATIC_CHAIN_REGNUM, HARD_REGNO_NREGS, INDEX_REG_CLASS,
24531         BASE_REG_CLASS, MODE_BASE_REG_CLASS, SMALL_REGISTER_CLASSES,
24532         PREFERRED_RELOAD_CLASS, SECONDARY_OUTPUT_RELOAD_CLASS,
24533         SECONDARY_INPUT_RELOAD_CLASS, LIBCALL_VALUE, FUNCTION_VALUE_REGNO_P,
24534         TRAMPOLINE_SIZE, INITIALIZE_TRAMPOLINE, HAVE_PRE_INCREMENT,
24535         HAVE_POST_DECREMENT, HAVE_PRE_DECREMENT, HAVE_PRE_MODIFY_DISP,
24536         HAVE_POST_MODIFY_DISP, HAVE_PRE_MODIFY_REG, HAVE_POST_MODIFY_REG,
24537         REGNO_MODE_OK_FOR_BASE_P, LEGITIMATE_CONSTANT_P,
24538         REG_MODE_OK_FOR_BASE_P, REG_OK_FOR_INDEX_P, GO_IF_LEGITIMATE_ADDRESS,
24539         LEGITIMIZE_ADDRESS, THUMB2_LEGITIMIZE_ADDRESS,
24540         GO_IF_MODE_DEPENDENT_ADDRESS, MEMORY_MOVE_COST, BRANCH_COST,
24541         ASM_APP_OFF, ASM_OUTPUT_CASE_LABEL, ARM_DECLARE_FUNCTION_NAME,
24542         FINAL_PRESCAN_INSN, PRINT_OPERAND_PUNCT_VALID_P,
24543         PRINT_OPERAND_ADDRESS): Adjust for Thumb-2.
24544         (arm_arch_notm, arm_arch_thumb2, arm_arch_hwdiv): New declarations.
24545         * config/arm/arm-cores.def: Add arm1156t2-s, cortex-a8, cortex-r4 and
24546         cortex-m3.
24547         * config/arm/arm-tune.md: Regenerate.
24548         * config/arm/arm-protos.h: Update prototypes.
24549         * config/arm/vfp.md: Enable patterns for Thumb-2.
24550         (arm_movsi_vfp): Add movw alternative.  Use output_move_vfp.
24551         (arm_movdi_vfp, movsf_vfp, movdf_vfp): Use output_move_vfp.
24552         (thumb2_movsi_vfp, thumb2_movdi_vfp, thumb2_movsf_vfp,
24553         thumb2_movdf_vfp, thumb2_movsfcc_vfp, thumb2_movdfcc_vfp): New.
24554         * config/arm/libunwind.S: Add Thumb-2 code.
24555         * config/arm/constraints.md: Update include Thumb-2.
24556         * config/arm/ieee754-sf.S: Add Thumb-2/Unified asm support.
24557         * config/arm/ieee754-df.S: Ditto.
24558         * config/arm/bpabi.S: Ditto.
24559         * config/arm/t-arm (MD_INCLUDES): Add thumb2.md.
24560         * config/arm/predicates.md (low_register_operand,
24561         low_reg_or_int_operand, thumb_16bit_operator): New.
24562         (thumb_cmp_operand, thumb_cmpneg_operand): Rename...
24563         (thumb1_cmp_operand, thumb1_cmpneg_operand): ... to this.
24564         * config/arm/t-arm-elf: Add armv7 multilib.
24565         * config/arm/arm.md: Update patterns for Thumb-2 and Unified asm.
24566         Include thumb2.md.
24567         (UNSPEC_STACK_ALIGN, ce_count): New.
24568         (arm_incscc, arm_decscc, arm_umaxsi3, arm_uminsi3,
24569         arm_zero_extendsidi2, arm_zero_extendqidi2): New
24570         insns/expanders.
24571         * config/arm/fpa.md: Update patterns for Thumb-2 and Unified asm.
24572         (thumb2_movsf_fpa, thumb2_movdf_fpa, thumb2_movxf_fpa,
24573         thumb2_movsfcc_fpa, thumb2_movdfcc_fpa): New insns.
24574         * config/arm/cirrus.md: Update patterns for Thumb-2 and Unified asm.
24575         (cirrus_thumb2_movdi, cirrus_thumb2_movsi_insn,
24576         thumb2_cirrus_movsf_hard_insn, thumb2_cirrus_movdf_hard_insn): New
24577         insns.
24578         * doc/extend.texi: Document ARMv7-M interrupt functions.
24579         * doc/invoke.texi: Document Thumb-2 new cores+architectures.
24580
24581 2007-01-03  Jakub Jelinek  <jakub@redhat.com>
24582
24583         * unwind-dw2.c (SIGNAL_FRAME_BIT, EXTENDED_CONTEXT_BIT): Define.
24584         (struct _Unwind_Context): Rename args_size to flags, remove
24585         signal_frame field, add a new args_size field and version field.
24586         (_Unwind_IsSignalFrame, _Unwind_SetSignalFrame,
24587         _Unwind_IsExtendedContext): New inline functions.
24588         (_Unwind_GetGR, _Unwind_SetGR, _Unwind_GetGRPtr, _Unwind_SetGRPtr):
24589         Assume by_value array is only present if _Unwind_IsExtendedContext.
24590         (_Unwind_GetIPInfo, execute_cfa_program, uw_frame_state_for): Use
24591         _Unwind_IsSignalFrame.
24592         (__frame_state_for): Initialize context.flags to EXTENDED_CONTEXT_BIT.
24593         (uw_update_context_1): Use _Unwind_SetSignalFrame.
24594         (uw_init_context_1): Initialize context->flags to
24595         EXTENDED_CONTEXT_BIT.
24596         * config/rs6000/linux-unwind.h (frob_update_context): Use
24597         _Unwind_SetSignalFrame.
24598
24599 2007-01-03  Andrew Pinski  <andrew_pinski@playstation.sony.com>
24600
24601         PR middle-end/30353
24602         * gimplify.c (gimplify_modify_expr_complex_part): Move below
24603         tree_to_gimple_tuple.  Call tree_to_gimple_tuple when we need
24604         the value.
24605
24606 2007-01-03  Kazu Hirata  <kazu@codesourcery.com>
24607
24608         * config/i386/i386.h (NON_STACK_REG_P, REGNO_OK_FOR_SIREG_P,
24609         REGNO_OK_FOR_DIREG_P, REWRITE_ADDRESS, ASM_OPERAND_LETTER,
24610         RET, AT_SP): Remove.
24611         * config/i386/i386.md (*sse_prologue_save_insn): Use return
24612         instead of RET.
24613
24614         * alias.c (init_alias_analysis): Use VEC_safe_grow_cleared.
24615         * cfgbuild.c (find_basic_blocks): Likewise.
24616         * cfgrtl.c (rtl_create_basic_block): Likewise.
24617         * function.c (temp_slots_at_level): Likewise.
24618         * reg-stack.c (stack_regs_mentioned): Likewise.
24619         * regclass.c (allocate_reg_info): Likewise.
24620         * tree-cfg.c (init_empty_tree_cfg, build_tree_cfg, create_bb,
24621         set_bb_for_stmt, move_block_to_fn): Likewise.
24622         * tree-complex.c (tree_lower_complex): Likewise.
24623         * vec.h (VEC_safe_grow_cleared): New.
24624
24625         * cgraphunit.c, tree-ssa-alias.c: Fix comment typos.
24626
24627 2007-01-03  Zdenek Dvorak <dvorakz@suse.cz>
24628
24629         * loop-unswitch.c (unswitch_loop): Pass probabilities to loopify.
24630         * tree-ssa-loop-unswitch.c (tree_unswitch_loop): Pass probabilities
24631         to loop_version.
24632         * cfgloopmanip.c (scale_loop_frequencies): Export.
24633         (loopify): Scale the frequencies by prescribed coefficients.
24634         (set_zero_probability): New function.
24635         (duplicate_loop_to_header_edge): Improve updating of frequencies.
24636         (lv_adjust_loop_entry_edge, loop_version): Set probabilities
24637         and frequencies according to arguments.
24638         * tree-ssa-loop-manip.c (tree_unroll_loop): Set probabilities
24639         correctly.
24640         * cfg.c (scale_bbs_frequencies_int): Allow scaling the frequencies up.
24641         * modulo-sched.c (sms_schedule): Set probabilities for entering
24642         versioned loop correctly.
24643         * tree-vect-transform.c (vect_transform_loop): Ditto.
24644         * cfgloop.h (loopify, loop_version): Declaration changed.
24645         (scale_loop_frequencies): Declared.
24646
24647 2007-01-02  Jan Hubicka  <jh@suse.cz>
24648
24649         * cgraph.c: Include tree-flow.h
24650         (cgraph_add_new-function): Handle IPA_SSA mode; execute
24651         early_local_passes.
24652         * cgraph.h (enum cgraph_state): Add CGRAPH_STATE_IPA_SSA.
24653         * tree-pass.h (pass_all_early_optimizations): Declare.
24654         * cgraphunit.c (cgraph_process_new_functions): Add IPA_SSA; execute
24655         early_local_passes.
24656         (cgraph_analyze_function): Do early_local_passes.
24657         * tree-mudflap.c (mf_decl_cache_locals, mf_build_check_statement_for):
24658         Do not add referenced vars.
24659         * tree-optimize.c (gate_all_optimizations): Do not execute when not in
24660         SSA form.
24661         (gate_all_early_local_passes): New gate.
24662         (pass_early_local_passes): Use new gate.
24663         (execute_early_local_optimizations): New functions.
24664         (gate_all_early_optimizations): New gate.
24665         (pass_all_early_optimizations): New pass.
24666         (execute_free_datastructures): Free SSA only when initialized.
24667         (gate_init_datastructures): Init only when optimizing.
24668         (tree_lowering_passes): Do early local passes when called late.
24669         * tree-profile.c (do_tree_profiling): Don't profile functions added
24670         late.
24671         (do_early_tree_profiling, pass_early_tree_profile): Kill.
24672         * tree-cfg.c (update_modified_stmts): Do not update when operands are
24673         not active.
24674         * passes.c (init_optimizations_passes): Reorder so we go into SSA
24675         during early_local_passes.
24676         * Makefile.in (cgraph.o): Add dependency on tree-flow.h.
24677
24678
24679 2007-01-02  Carlos O'Donell  <carlos@codesourcery.com>
24680
24681         * Makefile.in: Update copyright year.
24682
24683 2007-01-02  Carlos O'Donell  <carlos@codesourcery.com>
24684
24685         * Makefile.in: Export GCC_EXEC_PREFIX before calling $(RUNTEST)
24686         in $(lang_checks) and check-consistency targets.
24687
24688 2007-01-02  Jan Hubicka  <jh@suse.cz>
24689
24690         * tree-mudflap.c (mf_decl_cache_locals, mf_build_check_statement_for):
24691         Do not add referenced vars.
24692         * tree-cfg.c (update_modified_stmts): Do not update when SSA operands
24693         are not active.
24694         * passes.c (init_optimization_passes): Put mudflap_2 after
24695         free_datastructures.
24696
24697 2007-01-02  Jan Hubicka  <jh@suse.cz>
24698
24699         * tree-optimize (execute_fixup_cfg): Set after_inlining flag.
24700         Set NOTHROW flag on call statements proved to be nothrow.
24701         Update statement of local calls so new pure/const functions are
24702         updated. Update_ssa when in ssa form. Mark PHI nodes of nonlocal
24703         goto receivers.
24704         (tree_rest_of_compilation): Register hooks and initialize bitmap
24705         early. Do not set after_inlining flag.
24706
24707 2007-01-02  Steve Ellcey  <sje@cup.hp.com>
24708
24709         * sbitmap.c (HOST_BITS_PER_LONG_LONG):  Change to
24710         HOST_BITS_PER_LONGLONG
24711
24712 2007-01-02  Manuel Lopez-Ibanez <manu@gcc.gnu.org>
24713
24714         PR c/19977
24715         * c-typeck.c (store_init_value): Don't emit pedantic overflow
24716         warning for non-static initializers.
24717
24718 2007-01-02  Steven Bosscher  <steven@gcc.gnu.org>
24719
24720         * config/alpha/alpha.md, arm/arm.c, darwin.c, frv/frv.md,
24721         m32r/m32r.c, m32r/m32r.c, mn10300/mn10300.md, pa/pa.c,
24722         rs6000/rs6000.c, s390/s390.md, sh/sh.md, sparc/sparc.c:
24723         Always use set_unique_reg_note to add REG_EQUAL notes.
24724
24725 2007-01-02  Kazu Hirata  <kazu@codesourcery.com>
24726
24727         Revert:
24728         2007-01-02  Kazu Hirata  <kazu@codesourcery.com>
24729
24730         * alias.c (init_alias_analysis): Use VEC_safe_grow_cleared.
24731         * cfgbuild.c (find_basic_blocks): Likewise.
24732         * cfgrtl.c (rtl_create_basic_block): Likewise.
24733         * function.c (temp_slots_at_level): Likewise.
24734         * reg-stack.c (stack_regs_mentioned): Likewise.
24735         * regclass.c (allocate_reg_info): Likewise.
24736         * tree-cfg.c (init_empty_tree_cfg, build_tree_cfg, create_bb,
24737         set_bb_for_stmt, move_block_to_fn): Likewise.
24738         * tree-complex.c (tree_lower_complex): Likewise.
24739         * vec.h (VEC_safe_grow_cleared): New.
24740
24741 2007-01-02  Ian Lance Taylor  <iant@google.com>
24742
24743         * c-common.c (c_common_truthvalue_conversion): When warning about
24744         using an assignment as a truth value, set TREE_NO_WARNING.
24745
24746 2007-01-02  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
24747
24748         PR middle-end/7651
24749         * c.opt (Wold-style-declaration): New.
24750         * doc/invoke.texi (C-only Warning Options): New.
24751         (Wold-style-declaration): Document it.
24752         (Wextra): Enabled by -Wextra.
24753         * c-opts.c (c_common_post_options): Enabled by -Wextra.
24754         * c-decl.c (declspecs_add_scspec): Replace -Wextra with
24755         -Wold-style-declaration.
24756
24757 2007-01-02  Kazu Hirata  <kazu@codesourcery.com>
24758
24759         * alias.c (init_alias_analysis): Use VEC_safe_grow_cleared.
24760         * cfgbuild.c (find_basic_blocks): Likewise.
24761         * cfgrtl.c (rtl_create_basic_block): Likewise.
24762         * function.c (temp_slots_at_level): Likewise.
24763         * reg-stack.c (stack_regs_mentioned): Likewise.
24764         * regclass.c (allocate_reg_info): Likewise.
24765         * tree-cfg.c (init_empty_tree_cfg, build_tree_cfg, create_bb,
24766         set_bb_for_stmt, move_block_to_fn): Likewise.
24767         * tree-complex.c (tree_lower_complex): Likewise.
24768         * vec.h (VEC_safe_grow_cleared): New.
24769
24770 2007-01-02  Douglas Gregor  <doug.gregor@gmail.com>
24771
24772         * c-common.c (c_common_nodes_and_builtins): Since variants of
24773         void_type_node get built before it is given a name, we need to
24774         give those variants the name, too.
24775         (complete_array_type): We need to work with the canonical main
24776         type of the array, from which we will build the qualified version.
24777         * params.def (PARAM_VERIFY_CANONICAL_TYPES): New.
24778         * print-tree.c (print_node): Display canonical type information
24779         for each type.
24780         * stor-layout.c (layout_type): When we don't know the
24781         alignment of a type for which we're building an array, we end up
24782         guessing wrong, so make the type require structural equality.
24783         * tree.c (make_node_stat): When we build a new type, it is its
24784         own canonical type.
24785         (build_type_attribute_qual_variant): When building an attribute
24786         variant, its canonical type is the non-attribute variant. However,
24787         if the attributes are target-dependent and they differ, we need to
24788         use structural equality checks for this type.
24789         (build_qualified_type): A qualified type is not equivalent to its
24790         unqualified variant; set the canonical type appropriately.
24791         (build_distinct_type_copy): When building a distinct type from
24792         another type, the new type is its own canonical type.
24793         (build_variant_type_copy): When building a new type variant, we
24794         assume that it is equivalent to the original type.
24795         (build_pointer_type_for_mode): When building a pointer type, also
24796         build a canonical type pointer.
24797         (build_reference_type_for_mode): When building a reference type,
24798         also build a canonical type reference.
24799         (build_index_type): When we can't hash an index type (e.g.,
24800         because its maximum value is negative), the index type requires
24801         structural equality tests.
24802         (build_array_type): Build the canonical form of an array type.
24803         (build_function_type): Function types require structural equality,
24804         because they contain default arguments, attributes, etc.
24805         (build_method_type_directly): Ditto for method types.
24806         (build_offset_type): Build the canonical offset type.
24807         (build_complex_type): Build the canonical vector type.
24808         (make_vector_type): Build the canonical vector type.
24809         * tree.h (TYPE_CANONICAL): New.
24810         (TYPE_STRUCTURAL_EQUALITY_P): New.
24811         (SET_TYPE_STRUCTURAL_EQUALITY): New.
24812         (struct tree_type): Added "canonical" field.
24813         * params.h (VERIFY_CANONICAL_TYPES): New.
24814         * doc/c-tree.texi (TYPE_CANONICAL): Document.
24815         (TYPE_STRUCTURAL_EQUALITY_P): Document.
24816         (SET_TYPE_STRUCTURAL_EQUALITY): Document.
24817         * doc/invoke.texi (verify-canonical-types): Document --param
24818         parameter for verifying canonical types.
24819
24820 2007-01-02  Joseph Myers  <joseph@codesourcery.com>
24821
24822         * config.gcc (powerpc-*-eabispe*, powerpc-*-eabisimaltivec*,
24823         powerpc-*-eabisim*, powerpc-*-eabialtivec*, powerpc-*-eabi*,
24824         powerpc-*-rtems*, powerpc-wrs-vxworks, powerpc-wrs-vxworksae,
24825         powerpcle-*-eabisim*, powerpcle-*-eabi*): Add rs6000/e500.h to
24826         tm_file.
24827         * config/rs6000/e500.h: New.
24828         * config/rs6000/eabi.h (TARGET_SPE_ABI, TARGET_SPE, TARGET_E500,
24829         TARGET_ISEL, TARGET_FPRS, TARGET_E500_SINGLE, TARGET_E500_DOUBLE):
24830         Remove.
24831         * config/rs6000/linuxspe.h (TARGET_SPE_ABI, TARGET_SPE,
24832         TARGET_E500, TARGET_ISEL, TARGET_FPRS, TARGET_E500_SINGLE,
24833         TARGET_E500_DOUBLE): Remove.
24834         * config/rs6000/vxworks.h (TARGET_SPE_ABI, TARGET_SPE,
24835         TARGET_E500, TARGET_ISEL, TARGET_FPRS): Remove.
24836         * config/rs6000/rs6000.h (CHECK_E500_OPTIONS): Define.
24837         * config/rs6000/rs6000.c (rs6000_override_options): Use
24838         CHECK_E500_OPTIONS.
24839
24840 2007-01-02  Joseph Myers  <joseph@codesourcery.com>
24841
24842         * config/rs6000/rs6000.c (print_operand): Check (TARGET_SPE ||
24843         TARGET_E500_DOUBLE), not TARGET_E500, for %y.
24844         (rs6000_generate_compare, rs6000_emit_sCOND, output_cbranch,
24845         rs6000_emit_cmove): Don't check TARGET_E500.
24846         * config/rs6000/rs6000.md (bunordered, bordered, sunordered,
24847         sordered): Don't check TARGET_E500.
24848
24849 2007-01-01  Eric Christopher  <echristo@apple.com>
24850
24851         * config/mips/mips.c (mips_regno_mode_ok_for_base_p): Use
24852         HARD_REGISTER_NUM_P.
24853
24854 2007-01-01  Roger Sayle  <roger@eyesopen.com>
24855
24856         * fold-const.c (fold_binary) <EQ_EXPR>: Fold "(X^C1) eq/ne C2" into
24857         "X eq/ne (C1^C2)".  Fold "(X^Z) eq/ne (Y^Z)" as "X eq/ne Y" when Z
24858         has no side-effects.  Fold "(X^C1) eq/ne (Y^C2)" as "(X^(C1^C2))
24859         eq/ne Y".
24860
24861 2007-01-01  Mike Stump  <mrs@apple.com>
24862
24863         * configure.ac: Remove support for building with Apple's gcc-3.1.
24864
24865 2007-01-02  Joseph Myers  <joseph@codesourcery.com>
24866
24867         PR middle-end/30311
24868         * caller-save.c (add_stored_regs): Only handle SUBREGs if inner
24869         REG is a hard register.  Do not modify REG before calling
24870         subreg_nregs.
24871         * rtlanal.c (subreg_get_info): Don't assert size of XMODE is a
24872         multiple of the size of YMODE for certain lowpart cases.
24873
24874 2007-01-01  Andrew Pinski  <pinskia@gmail.com>
24875
24876         PR middle-end/30253
24877         * gimplify (voidify_wrapper_expr): Update for
24878         GIMPLE_MODIFY_STMT.
24879
24880 2007-01-01  Andreas Schwab  <schwab@suse.de>
24881
24882         PR target/29166
24883         * config/ia64/ia64.c (ia64_compute_frame_size): Account space for
24884         save of BR0 in extra_spill_size instead of spill_size.
24885         (ia64_expand_prologue): Save BR0 outside of the gr/br/fr spill
24886         area.
24887         (ia64_expand_epilogue): Restore BR0 from its new location.
24888
24889 2007-01-01  Andrew Pinski  <pinskia@gmail.com>
24890
24891         * gimplify.c (gimplify_init_constructor <case VECTOR_TYPE>):
24892         Use a temporary variable if the left hand side is not a gimple
24893         register.
24894
24895 2007-01-01  Andrew Pinski  <pinskia@gmail.com>
24896
24897         * gimplify.c (gimplify_return_expr): Make the temporary variable
24898         for the return expression, a gimple register variable.
24899
24900 2007-01-01  Jan Hubicka  <jh@suse.cz>
24901
24902         * emit-rtl.c (emit_copy_of_insn_after): Do not call copy_insn_1 for
24903         INSN_LIST.
24904
24905 2007-01-01  Mike Stump  <mrs@apple.com>
24906
24907         * configure.ac (HAVE_GAS_LITERAL16): Add autoconf check for
24908         .literal16.
24909         * config/darwin.c (machopic_select_rtx_section): Use
24910         HAVE_GAS_LITERAL16.
24911         (darwin_mergeable_constant_section): Likewise.
24912         * configure: Regenerate.
24913         * config.in: Regenerate.
24914
24915 2007-01-01  Jan Hubicka  <jh@suse.cz>
24916             Andrew Pinski  <pinskia@gmail.com>
24917
24918         * cgraphunit.c (cgraph_optimize): Call cgraph_add_new_functions
24919         before starting IPA passes.