OSDN Git Service

* rtl.h (XCNMPFV): Preserve const-ness of parameters through use of
[pf3gnuchains/gcc-fork.git] / gcc / ChangeLog
1 2007-08-26  Chao-ying Fu  <fu@mips.com>
2
3         * rtl.h (XCNMPFV): Preserve const-ness of parameters through use of
4         __typeof().
5
6 2007-08-26  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
7
8         * alias.c (memory_modified_1, memory_modified_in_insn_p):
9         Constify.
10         * basic-block.h (tree_predicted_by_p, rtl_predicted_by_p):
11         Likewise.
12         * bb-reorder.c (copy_bb_p): Likewise.
13         * cfghooks.c (can_remove_branch_p, can_merge_blocks_p,
14         predicted_by_p, can_duplicate_block_p, block_ends_with_call_p,
15         block_ends_with_condjump_p): Likewise.
16         * cfghooks.h (can_remove_branch_p, can_merge_blocks_p,
17         predicted_by_p, can_duplicate_block_p, block_ends_with_call_p,
18         block_ends_with_condjump_p): Likewise.
19         * cfglayout.c (cfg_layout_can_duplicate_bb_p): Likewise.
20         * cfgrtl.c (can_delete_note_p, can_delete_label_p,
21         rtl_can_merge_blocks, cfg_layout_can_merge_blocks_p,
22         rtl_block_ends_with_call_p, rtl_block_ends_with_condjump_p,
23         need_fake_edge_p, rtl_can_remove_branch_p): Likewise.
24         * dbxout.c (dbx_debug_hooks, xcoff_debug_hooks): Use
25         debug_true_const_tree instad of debug_true_tree.
26         * debug.c (do_nothing_debug_hooks): Likewise.
27         * debug.h (ignore_block, debug_true_const_tree): Constify.
28         * dwarf2out.c (stack_adjust_offset, clobbers_queued_reg_save,
29         dwarf2out_ignore_block, is_pseudo_reg, is_tagged_type,
30         decl_ultimate_origin, block_ultimate_origin, lookup_decl_loc,
31         same_dw_val_p, add_ranges, is_subrange_type, type_is_enum,
32         dbx_reg_number, is_based_loc, field_type,
33         simple_type_align_in_bits, simple_decl_align_in_bits,
34         simple_type_size_in_bits, field_byte_offset, insert_float,
35         type_tag, member_declared_type, is_redundant_typedef,
36         secname_for_decl, is_inlined_entry_point): Likewise.
37         * emit-rtl.c (const_next_insn, const_previous_insn,
38         const_next_nonnote_insn, const_prev_nonnote_insn,
39         const_next_real_insn, const_prev_real_insn,
40         const_next_active_insn, const_prev_active_insn, const_next_label,
41         const_prev_label): Likewise.
42         * except.h (lookup_stmt_eh_region_fn, lookup_stmt_eh_region):
43         Likewise.
44         * haifa-sched.c (may_trap_exp, haifa_classify_insn,
45         find_set_reg_weight, no_real_insns_p, find_set_reg_weight,
46         sched_insn_is_legitimate_for_speculation_p): Likewise.
47         * jump.c (reversed_comparison_code_parts,
48         reversed_comparison_code, reversed_comparison, condjump_label):
49         Likewise.
50         * predict.c (rtl_predicted_by_p, tree_predicted_by_p): Likewise.
51         * reg-stack.c (stack_regs_mentioned_p, stack_regs_mentioned):
52         Likewise.
53         * rtl.h (const_previous_insn, const_next_insn,
54         const_prev_nonnote_insn, const_next_nonnote_insn,
55         const_prev_real_insn, const_next_real_insn,
56         const_prev_active_insn, const_next_active_insn, const_prev_label,
57         const_next_label, modified_between_p, modified_in_p,
58         const_note_storeskeep_with_call_p, condjump_label,
59         reversed_comparison, reversed_comparison_code,
60         reversed_comparison_code_parts, memory_modified_in_insn_p,
61         stack_regs_mentioned): Likewise.
62         * rtlanal.c (modified_between_p, modified_in_p, const_note_stores,
63         keep_with_call_p): Likewise.
64         * sched-deps.c (deps_may_trap_p, sched_get_condition,
65         conditions_mutex_p, sched_insns_conditions_mutex_psd_next_list,
66         sd_lists_size, sd_lists_empty_p): Likewise.
67         * sched-int.h (sched_insns_conditions_mutex_p,
68         haifa_classify_insn, no_real_insns_p,
69         sched_insn_is_legitimate_for_speculation_p, sd_next_list,
70         sd_lists_size, sd_lists_empty_p): Likewise.
71         * sdbout.c (sdb_debug_hooks): Likewise.
72         * tree-cfg.c (tree_can_merge_blocks_p, is_ctrl_altering_stmt,
73         stmt_ends_bb_p, tree_can_remove_branch_p, tree_can_duplicate_bb_p,
74         -tree_block_ends_with_call_p, tree_block_ends_with_condjump_p):
75         Likewise.
76         * tree-eh.c (lookup_stmt_eh_region_fn, lookup_stmt_eh_region,
77         tree_can_throw_internal): Likewise.
78         * tree-flow-inline.h (phi_nodes): Likewise.
79         * tree-flow.h (phi_nodesstmt_ends_bb_p, is_ctrl_altering_stmt,
80         tree_can_throw_internal, lookup_stmt_eh_region): Likewise.
81         * tree-gimple.c (const_get_call_expr_in): Likewise.
82         * tree-gimple.h (const_get_call_expr_in): Likewise.
83         * tree.c (const_lookup_attribute, attribute_list_equal,
84         attribute_list_contained): Likewise.
85         * tree.h (attribute_list_equal, attribute_list_contained,
86         const_lookup_attribute): Likewise.
87         * vmsdbgout.c (vmsdbgout_ignore_block): Likewise.
88
89 2007-08-26  Bernhard Fischer  <aldot@gcc.gnu.org>
90
91         * tree-ssa-sccvn.c, tree-ssa-sccvn.h, tree-vn.c,
92         tree-ssa-pre.c: Remove unnecessary trailing whitespace.
93
94 2007-08-26  H.J. Lu  <hongjiu.lu@intel.com>
95
96         PR target/32991
97         * config/alpha/constraints.md: Delete "svn:mime-type" property
98         with svn propdel "svn:mime-type".
99
100 2007-08-26  H.J. Lu  <hongjiu.lu@intel.com>
101
102         PR middle-end/33181
103         * ifcvt.c (noce_get_alt_condition): Make sure that the previous
104         non NOTE insn doesn't cross basic block.
105         (noce_try_abs): Likewise.
106         (noce_process_if_block): Likewise.
107
108 2007-08-26  David Edelsohn  <edelsohn@gnu.org>
109
110         PR target/33151
111         * config/rs6000/predicates.md (offsettable_mem_operand): Memory
112         operand without auto-inc-dec.
113         * config/rs6000/rs6000.md (floatsidf2_internal): Use
114         offsettable_mem_operand.
115         (floatunssidf2_internal): Same.
116         (fix_truncdfsi2_internal): Same.
117         (floatsidf_ppc64): Same.
118         (floatunssidf_ppc64): Same.
119         (fix_trunctfsi2_internal): Same.
120
121 2007-08-26  Bernhard Fischer  <aldot@gcc.gnu.org>
122
123         PR bootstrap/30620
124         * Makefile.in (libbackend.o): Add gcov-iov.h dependency and
125         pass defines needed for version.c.
126
127 2007-08-25  Joseph Myers  <joseph@codesourcery.com>
128
129         * configure.ac (--debug-prefix-map check): Change assembler
130         version presumed to have feature to 2.18.
131         * configure: Regenerate.
132
133 2007-08-25  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
134
135         * c-common.c (vector_types_convertible_p,
136         decl_with_nonnull_addr_p, c_promoting_integer_type_p,
137         self_promoting_args_p): Constify.
138         * c-common.h (has_c_linkage, decl_with_nonnull_addr_p,
139         c_promoting_integer_type_p, self_promoting_args_p,
140         anon_aggr_type_p, vector_types_convertible_p): Likewise.
141         * c-decl.c (anon_aggr_type_p): Likewise.
142         * * c-dump.c (dump_stmt): Likewise.
143         * c-objc-common.c (has_c_linkage): Likewise.
144         * c-tree.h (same_translation_unit_p): Likewise.
145         * c-typeck.c (null_pointer_constant_p,
146         tagged_types_tu_compatible_p, function_types_compatible_p,
147         type_lists_compatible_p, lvalue_or_else, lvalue_p,
148         comptypes_internal, struct tagged_tu_seen_cache,
149         same_translation_unit_p, alloc_tagged_tu_seen_cache,
150         c_size_in_bytes): Likewise.
151         * ggc-common.c (compare_ptr_data, hash_descriptor, eq_descriptor,
152         hash_ptr, eq_ptr): Likewise.
153         * langhooks-def.h (lhd_decl_ok_for_sibcall,
154         LANG_HOOKS_OMP_PRIVATIZE_BY_REFERENCE): Likewise.
155         * langhooks.c (lhd_decl_ok_for_sibcall): Likewise.
156         * langhooks.h (ok_for_sibcall, omp_privatize_by_reference):
157         Likewise.
158         * optabs.c (optab_for_tree_code): Likewise.
159         * optabs.h (optab_for_tree_code): Likewise.
160         * rtl.h (simplify_rtx): Likewise.
161         * simplify-rtx.c (simplify_rtx): Likewise.
162         * tree-dump.c (queue, queue_and_dump_index, queue_and_dump_type,
163         dump_flag, dump_node): Likewise.
164         * tree-dump.h (struct dump_info, dump_stmt, queue_and_dump_index,
165         queue_and_dump_type, dump_flag): Likewise.
166         * tree-flow.h (vect_can_force_dr_alignment_p): Likewise.
167         * tree-pass.h (dump_node): Likewise.
168         * tree-vectorizer.c (vect_can_force_dr_alignment_p,
169         supportable_narrowing_operation): Likewise.
170         * tree-vectorizer.h (vect_can_force_dr_alignment_p,
171         supportable_narrowing_operation): Likewise.
172         * tree-vrp.c (needs_overflow_infinity, supports_overflow_infinity,
173         is_negative_overflow_infinity, is_positive_overflow_infinity,
174         is_overflow_infinity, vrp_val_is_max, vrp_val_is_min,
175         nonnull_arg_p, get_value_range, vrp_operand_equal_p,
176         update_value_range, add_equivalence, ssa_name_nonnegative_p,
177         ssa_name_nonzero_p, fp_predicate): Likewise.
178         * tree.c (auto_var_in_fn_p, empty_body_p): Likewise.
179         * tree.h (empty_body_p, auto_var_in_fn_p, ssa_name_nonzero_p,
180         ssa_name_nonnegative_p): Likewise.
181
182 2007-08-25  Hans Kester  <hans.kester@ellips.nl>
183
184         * config.gcc : Add x86_64-elf target.
185
186 2007-08-25  Jakub Jelinek  <jakub@redhat.com>
187
188         * expr.c (store_expr): Fix order of store_by_pieces arguments.
189
190 2007-08-24  Sandra Loosemore  <sandra@codesourcery.com>
191             Nigel Stephens <nigel@mips.com>
192
193         PR target/11787
194
195         * doc/tm.texi (SET_RATIO, SET_BY_PIECES_P): Document new macros.
196         (STORE_BY_PIECES_P): No longer applies to __builtin_memset.
197         * expr.c (SET_BY_PIECES_P): Define.
198         (can_store_by_pieces, store_by_pieces): Add MEMSETP argument; use
199         it to decide whether to use SET_BY_PIECES_P or STORE_BY_PIECES_P.
200         (store_expr): Pass MEMSETP argument to can_store_by_pieces and
201         store_by_pieces.
202         * expr.h (SET_RATIO): Define.
203         (can_store_by_pieces, store_by_pieces): Update prototypes.
204         * builtins.c (expand_builtin_memcpy): Pass MEMSETP argument to
205         can_store_by_pieces/store_by_pieces.
206         (expand_builtin_memcpy_args): Likewise.
207         (expand_builtin_strncpy): Likewise.
208         (expand_builtin_memset_args): Likewise.  Also remove special case
209         for optimize_size so that can_store_by_pieces/SET_BY_PIECES_P can
210         decide what to do instead.
211         * value-prof.c (tree_stringops_transform): Pass MEMSETP argument
212         to can_store_by_pieces.
213
214         * config/sh/sh.h (SET_BY_PIECES_P): Clone from STORE_BY_PIECES_P.
215         * config/s390/s390.h (SET_BY_PIECES_P): Likewise.
216
217         * config/mips/mips.opt (mmemcpy): Change from Var to Mask.
218         * config/mips/mips.c (override_options): Make -Os default to -mmemcpy.
219         * config/mips/mips.h (MIPS_CALL_RATIO): Define.
220         (MOVE_RATIO, CLEAR_RATIO, SET_RATIO): Define.
221         (STORE_BY_PIECES_P): Define.
222
223 2007-08-24  Tom Tromey  <tromey@redhat.com>
224
225         * varpool.c (varpool_last_needed_node): Fix comment typo.
226         * c-decl.c (duplicate_decls): Fix comment typo.
227         (clone_underlying_type): Update comment.
228
229 2007-08-24  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
230
231         * config/alpha/alpha.c (alpha_mangle_type, decl_has_samegp,
232         alpha_in_small_data_p, alpha_split_complex_arg,
233         alpha_stdarg_optimize_hook, TARGET_ASM_CAN_OUTPUT_MI_THUNK):
234         Constify.
235         * config/arm/arm-protos.h (arm_mangle_type): Likewise.
236         * config/arm/arm.c (arm_comp_type_attributes, arm_mangle_type):
237         Likewise.
238         * config/bfin/bfin.c (funkind, bfin_comp_type_attributes,
239         TARGET_ASM_CAN_OUTPUT_MI_THUNK): Likewise.
240         * config/darwin-protos.h (darwin_binds_local_p): Likewise.
241         * config/darwin.c (darwin_binds_local_p): Likewise.
242         * config/frv/frv.c (frv_string_begins_with, frv_in_small_data_p):
243         Likewise.
244         * config/i386/i386-protos.h (i386_pe_binds_local_p,
245         i386_pe_valid_dllimport_attribute_p): Likewise.
246         * config/i386/i386.c (ix86_function_regparm,
247         ix86_comp_type_attributes, ix86_ms_bitfield_layout_p,
248         x86_can_output_mi_thunk, ix86_mangle_type,
249         TARGET_USE_BLOCKS_FOR_CONSTANT_P): Likewise.
250         * config/i386/winnt.c (i386_pe_valid_dllimport_attribute_p,
251         i386_pe_binds_local_p): Likewise.
252         * config/ia64/ia64.c
253         (ia64_first_cycle_multipass_dfa_lookahead_guard_spec,
254         ia64_needs_block_p, ia64_in_small_data_p, ia64_mangle_type,
255         ia64_invalid_conversion, ia64_invalid_unary_op,
256         ia64_invalid_binary_op, TARGET_ASM_CAN_OUTPUT_MI_THUNK):
257         Likewise.
258         * config/m32c/m32c.c (m32c_comp_type_attributes): Likewise.
259         * config/m32r/m32r.c (m32r_in_small_data_p): Likewise.
260         * config/m68k/m68k.c (TARGET_ASM_CAN_OUTPUT_MI_THUNK): Likewise.
261         * config/mips/mips.c (mips_use_blocks_for_constant_p,
262         mips_in_small_data_p, mips_use_anchors_for_symbol_p,
263         mips_comp_type_attributes, TARGET_ASM_CAN_OUTPUT_MI_THUNK,
264         mips_near_type_p, mips_far_type_p, mips_global_symbol_p,
265         mips_symbol_binds_local_p, mips_classify_symbol): Likewise.
266         * config/pa/pa.c (pa_commutative_p): Likewise.
267         * config/rs6000/rs6000-protos.h (rs6000_elf_in_small_data_p):
268         Likewise.
269         * config/rs6000/rs6000.c (rs6000_invalid_within_doloop,
270         rs6000_ms_bitfield_layout_p, rs6000_mangle_type,
271         rs6000_use_blocks_for_constant_p,
272         rs6000_vector_alignment_reachable, rs6000_is_opaque_type,
273         invalid_arg_for_unprototyped_fn, TARGET_ASM_CAN_OUTPUT_MI_THUNK,
274         TARGET_SPLIT_COMPLEX_ARG, rs6000_elf_in_small_data_p): Likewise.
275         * config/s390/s390.c (s390_mangle_type,
276         TARGET_ASM_CAN_OUTPUT_MI_THUNK, TARGET_INVALID_WITHIN_DOLOOP):
277         Likewise.
278         * config/score/score.c (TARGET_ASM_CAN_OUTPUT_MI_THUNK,
279         th_in_small_data_p): Likewise.
280         * config/sh/sh.c (sh_ms_bitfield_layout_p,
281         sh_dwarf_calling_convention, TARGET_ASM_CAN_OUTPUT_MI_THUNK):
282         Likewise.
283         * config/sparc/sparc.c (sparc_can_output_mi_thunk,
284         sparc_mangle_type): Likewise.
285         * config/spu/spu.c (spu_vector_alignment_reachable): Likewise.
286         * config/xtensa/xtensa.c (TARGET_SPLIT_COMPLEX_ARG): Likewise.
287         * emit-rtl.c (const_fixed_htab_hash, const_fixed_htab_eq):
288         Likewise.
289         * hooks.c (hook_bool_mode_const_rtx_false,
290         hook_bool_mode_const_rtx_true,
291         hook_bool_const_tree_hwi_hwi_const_tree_false,
292         hook_bool_const_tree_hwi_hwi_const_tree_true,
293         hook_int_const_tree_0, hook_int_const_tree_const_tree_1,
294         hook_constcharptr_const_tree_null,
295         hook_constcharptr_const_rtx_null,
296         hook_constcharptr_const_tree_const_tree_null,
297         hook_constcharptr_int_const_tree_null,
298         hook_constcharptr_int_const_tree_const_tree_null): New.
299         (hook_bool_mode_rtx_false, hook_bool_mode_rtx_true,
300         hook_bool_tree_hwi_hwi_tree_false,
301         hook_bool_tree_hwi_hwi_tree_true, hook_int_tree_0,
302         hook_int_tree_tree_1, hook_constcharptr_tree_null,
303         hook_constcharptr_rtx_null, hook_constcharptr_tree_tree_null,
304         hook_constcharptr_int_tree_null,
305         hook_constcharptr_int_tree_tree_null): Delete.
306         (default_can_output_mi_thunk_no_vcall): Constify.
307         * hooks.h (hook_bool_mode_rtx_false, hook_bool_mode_rtx_true,
308         hook_bool_tree_hwi_hwi_tree_false,
309         hook_bool_tree_hwi_hwi_tree_true, hook_int_tree_0,
310         hook_int_tree_tree_1, hook_constcharptr_tree_null,
311         hook_constcharptr_rtx_null, hook_constcharptr_tree_tree_null,
312         hook_constcharptr_int_tree_null,
313         hook_constcharptr_int_tree_tree_null): Delete.
314         (hook_bool_mode_const_rtx_false, hook_bool_mode_const_rtx_true,
315         hook_bool_const_tree_hwi_hwi_const_tree_false,
316         hook_bool_const_tree_hwi_hwi_const_tree_true,
317         hook_int_const_tree_0, hook_int_const_tree_const_tree_1,
318         hook_constcharptr_const_tree_null,
319         hook_constcharptr_const_rtx_null,
320         hook_constcharptr_const_tree_const_tree_null,
321         hook_constcharptr_int_const_tree_null,
322         hook_constcharptr_int_const_tree_const_tree_null): New.
323         (default_can_output_mi_thunk_no_vcall): Constify.
324         * integrate.c (function_attribute_inlinable_p): Likewise.
325         * integrate.h (function_attribute_inlinable_p): Likewise.
326         * jump.c (rtx_renumbered_equal_p): Likewise.
327         * output.h (decl_readonly_section, categorize_decl_for_section,
328         default_use_anchors_for_symbol_p, default_binds_local_p,
329         default_binds_local_p_1): Likewise.
330         * rtl.h (rtx_renumbered_equal_p, decl_default_tls_model):
331         Likewise.
332         * target-def.h (TARGET_ASM_CAN_OUTPUT_MI_THUNK,
333         TARGET_VALID_DLLIMPORT_ATTRIBUTE_P, TARGET_VECTOR_OPAQUE_P,
334         TARGET_COMMUTATIVE_P, TARGET_USE_BLOCKS_FOR_CONSTANT_P,
335         TARGET_COMP_TYPE_ATTRIBUTES,
336         TARGET_FUNCTION_ATTRIBUTE_INLINABLE_P,
337         TARGET_MS_BITFIELD_LAYOUT_P, TARGET_MANGLE_TYPE,
338         TARGET_IN_SMALL_DATA_P, TARGET_INVALID_CONVERSION,
339         TARGET_INVALID_UNARY_OP, TARGET_INVALID_BINARY_OP,
340         TARGET_DWARF_CALLING_CONVENTION): Likewise.
341         * target.h (can_output_mi_thunk, needs_block_p,
342         first_cycle_multipass_dfa_lookahead_guard_spec,
343         vector_alignment_reachable, comp_type_attributes,
344         function_attribute_inlinable_p, ms_bitfield_layout_p, mangle_type,
345         commutative_p, use_blocks_for_constant_p,
346         use_anchors_for_symbol_p, in_small_data_p, binds_local_p,
347         vector_opaque_p, dwarf_calling_convention, stdarg_optimize_hook,
348         invalid_within_doloop, valid_dllimport_attribute_p,
349         split_complex_arg, invalid_arg_for_unprototyped_fn,
350         invalid_conversion, invalid_unary_op, invalid_binary_op):
351         Likewise.
352         * targhooks.c (default_invalid_within_doloop,
353         hook_invalid_arg_for_unprototyped_fn,
354         default_builtin_vector_alignment_reachable): Likewise.
355         (hook_bool_rtx_commutative_p): Delete.
356         (hook_bool_const_rtx_commutative_p): New.
357         * targhooks.h (default_invalid_within_doloop,
358         default_builtin_vector_alignment_reachable,
359         hook_invalid_arg_for_unprototyped_fn): Constify.
360         (hook_bool_rtx_commutative_p): Delete.
361         (hook_bool_const_rtx_commutative_p): New.
362         * varasm.c (bss_initializer_p, decl_default_tls_model,
363         categorize_decl_for_section, decl_readonly_section,
364         default_use_anchors_for_symbol_p, default_binds_local_p,
365         default_binds_local_p_1): Constify.
366
367 2007-08-24  Jie Zhang  <jie.zhang@analog.com>
368
369         * config/bfin/bfin.h (TARGET_CPU_CPP_BUILTINS): Define
370         __NO_BUILTIN if -fno-builtin.
371
372 2007-08-24  Jie Zhang  <jie.zhang@analog.com>
373
374         * config/bfin/bfin.c (print_operand): Report error instead of
375         ICE for wrong operand.
376
377 2007-08-24  Michael Matz  <matz@suse.de>
378
379         * Makefile.in (GTFILES_H): Use $(patsubst) instead of $(subst).
380
381 2007-08-24  Richard Guenther  <rguenther@suse.de>
382
383         PR middle-end/33166
384         * tree-ssa.c (useless_type_conversion_p): Split into a
385         recursive and a non-recursive part.
386         (useless_type_conversion_p_1): New function.
387         * tree-ssa-ccp.c (fold_stmt_r): Make sure that the result
388         from maybe_fold_offset_to_reference is trivially convertible
389         to the desired type before doing the simplification.
390
391 2007-08-24  Jakub Jelinek  <jakub@redhat.com>
392
393         * expr.c (store_expr): Optimize initialization of an array
394         with STRING_CST.
395         * expr.h (builtin_strncpy_read_str): New prototype.
396         * builtins.c (builtin_strncpy_read_str): Remove prototype.
397         No longer static.
398
399 2007-08-24  Uros Bizjak  <ubizjak@gmail.com>
400
401         PR middle-end/33157
402         * ifcvt.c (noce_find_if_block): Do not clear if_info.cond_earliest
403         field when initializing if_info structure.
404
405 2007-08-24  Richard Guenther  <rguenther@suse.de>
406
407         * Makefile.in (tree-inline.o): Add $(TARGET_H) and $(INTEGRATE_H)
408         dependencies.
409         * c-objc-common.c (c_cannot_inline_tree_fn): Remove.
410         * langhooks.c (lhd_tree_inlining_cannot_inline_tree_fn): Likewise.
411         * tree-inline.c (inlinable_function_p): Fold in common parts of
412         the cannot_inline_tree_fn langhook.
413         * langhooks-def.h (lhd_tree_inlining_cannot_inline_tree_fn): Remove.
414         (LANG_HOOKS_TREE_INLINING_CANNOT_INLINE_TREE_FN): Likewise.
415         (LANG_HOOKS_TREE_INLINING_INITIALIZER): Remove initializer for
416         cannot_inline_tree_fn langhook.
417         * langhooks.h (struct lang_hooks_for_tree_inlining): Remove
418         cannot_inline_tree_fn member.
419
420 2007-08-24  Richard Guenther  <rguenther@suse.de>
421
422         * expr.c (get_inner_reference): Do computation of bitoffset
423         from offset in a way we can detect overflow reliably.
424
425 2007-08-24  Jie Zhang  <jie.zhang@analog.com>
426
427         * crtstuff.c (USE_PT_GNU_EH_FRAME): Don't define for uClibc.
428
429 2007-08-24  Jie Zhang  <jie.zhang@analog.com>
430
431         * config/bfin/bfin.opt (mfast-fp): Add.
432         * config/bfin/linux.h (LINK_GCC_C_SEQUENCE_SPEC): Let
433         libbffastfp override libgcc if -mfast-fp.
434         * config/bfin/bfin.h (LINK_GCC_C_SEQUENCE_SPEC): Likewise.
435         * doc/invoke.texi (Option Summary): Mention -mfast-fp.
436         (Blackfin Options): Document -mfast-fp.
437
438 2007-08-24  Jakub Jelinek  <jakub@redhat.com>
439
440         PR tree-optimization/32573
441         PR middle-end/32946
442         * tree-data-ref.c (initialize_data_dependence_relation): Clear
443         DDR_SUBSCRIPTS, DDR_DIR_VECTS and DDR_DIST_VECTS at the beginning.
444         (finalize_ddr_dependent): Clear DDR_SUBSCRIPTS after freeing it.
445         (build_classic_dist_vector): Return false rather than true if
446         DDR_ARE_DEPENDENT is non-NULL at the beginning.  Return false
447         if either subscript_dependence_tester_1 or build_classic_dist_vector_1
448         returned false.  Don't call save_dist_v before calling
449         build_classic_dist_vector_1.
450         (free_dependence_relation): Don't guard freeing DDR_SUBSCRIPTS
451         with NULL DDR_ARE_DEPENDENT.  Also free DDR_DIST_VECTS and/or
452         DDR_DIR_VECTS vectors.
453
454 2007-08-23  Brian Sidebotham  <brian.sidebotham@gmail.com>
455
456         * configure.ac (leb128): Modify sed statement to work with any binutils
457         version string.
458         * configure: Regenerate
459
460 2007-08-23  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
461
462         * config/arc/arc-protos.h arc_select_cc_mode, gen_compare_reg):
463         Wrap in RTX_CODE macro guard.
464         * config/arm/pe.c (arm_dllexport_p, arm_dllimport_p,
465         arm_dllexport_name_p, arm_dllimport_name_p, arm_mark_dllexport,
466         arm_mark_dllimport, arm_pe_encode_section_info,
467         arm_pe_unique_section): Use ISO-C function declarations.
468         * config/c4x/c4x-c.c (c4x_parse_pragma, c4x_pr_CODE_SECTION,
469         c4x_pr_DATA_SECTION, c4x_pr_FUNC_IS_PURE,
470         c4x_pr_FUNC_NEVER_RETURNS, c4x_pr_INTERRUPT, c4x_pr_ignored):
471         Likewise.
472         * config/iq2000/iq2000.h (ASM_OUTPUT_SKIP): Fix format warning.
473         * config/m68hc11/m68hc11.h (ASM_OUTPUT_EXTERNAL): Undef before
474         defining.
475         * config/mips/mips.h (ASM_DECLARE_OBJECT_NAME): Fix format
476         warnings.
477         * config/mn10300/mn10300.h (OUTPUT_ADDR_CONST_EXTRA): Likewise.
478         * config/pdp11/pdp11.c (pdp11_output_function_epilogue): Likewise.
479         (register_move_cost): Use ISO-C function declarations.
480         * config/pdp11/pdp11.h (PRINT_OPERAND): Fix format warnings.
481         * config/score/score-protos.h (score_declare_object): Add
482         ATTRIBUTE_PRINTF_4.
483         * config/score/score.h (ASM_DECLARE_OBJECT_NAME): Fix format
484         warnings.
485         * final.c (profile_function): Avoid empty if-bodies.
486         
487         
488         * calls.c (must_pass_in_stack_var_size,
489         must_pass_in_stack_var_size_or_pad): Constify.
490         * config/alpha/alpha-protos.h (function_value): Likewise.
491         * config/alpha/alpha.c (alpha_return_in_memory,
492         alpha_pass_by_reference, function_value,
493         unicosmk_must_pass_in_stack, TARGET_PROMOTE_FUNCTION_ARGS,
494         TARGET_PROMOTE_FUNCTION_RETURN, TARGET_PROMOTE_PROTOTYPES):
495         Likewise.
496         * config/arc/arc.c (arc_return_in_memory, arc_pass_by_reference,
497         TARGET_PROMOTE_FUNCTION_ARGS, TARGET_PROMOTE_FUNCTION_RETURN,
498         TARGET_PROMOTE_PROTOTYPES): Likewise.
499         * config/arm/arm-protos.h (arm_return_in_memory,
500         arm_pad_arg_upward, arm_function_value): Likewise.
501         * config/arm/arm.c (arm_pass_by_reference,
502         arm_promote_prototypes, arm_return_in_msb, arm_must_pass_in_stack,
503         TARGET_PROMOTE_FUNCTION_ARGS, TARGET_PROMOTE_FUNCTION_RETURN,
504         arm_function_value, arm_return_in_memory, arm_pad_arg_upward):
505         Likewise.
506         * config/arm/arm.h (ARM_DECLARE_FUNCTION_NAME): Likewise.
507         * config/avr/avr-protos.h (avr_function_value): Likewise.
508         * config/avr/avr.c (avr_return_in_memory,
509         gas_output_limited_string, gas_output_ascii, avr_function_value,
510         avr_return_in_memory): Likewise.
511         * config/bfin/bfin-protos.h (bfin_return_in_memory): Likewise.
512         * config/bfin/bfin.c (bfin_pass_by_reference,
513         bfin_return_in_memory, TARGET_PROMOTE_PROTOTYPES,
514         TARGET_PROMOTE_FUNCTION_ARGS, TARGET_PROMOTE_FUNCTION_RETURN):
515         Likewise.
516         * config/cris/cris.c (cris_pass_by_reference,
517         TARGET_PROMOTE_FUNCTION_ARGS): Likewise.
518         * config/crx/crx.c (crx_return_in_memory): Likewise.
519         * config/darwin.c (function_base, machopic_function_base_name):
520         Likewise.
521         * config/fr30/fr30.c (fr30_must_pass_in_stack,
522         TARGET_PROMOTE_PROTOTYPES): Likewise.
523         * config/frv/frv.c (frv_must_pass_in_stack): Likewise.
524         * config/h8300/h8300.c (h8300_return_in_memory): Likewise.
525         * config/i386/i386-protos.h (ix86_return_in_memory,
526         ix86_sol10_return_in_memory): Likewise.
527         * config/i386/i386.c (ix86_function_value,
528         ix86_function_sseregparm, ix86_must_pass_in_stack,
529         type_natural_mode, classify_argument, examine_argument,
530         construct_container, ix86_pass_by_reference, function_value_32,
531         function_value_64, ix86_function_value_1, return_in_memory_32,
532         return_in_memory_64, return_in_memory_ms_64,
533         ix86_return_in_memory, ix86_sol10_return_in_memory,
534         TARGET_PROMOTE_PROTOTYPES): Likewise.
535         * config/ia64/ia64-protos.h (ia64_function_value,
536         ia64_hpux_function_arg_padding): Likewise.
537         * config/ia64/ia64.c (hfa_element_mode, ia64_return_in_memory,
538         ia64_function_value, bundle_state_hash, bundle_state_eq_p,
539         ia64_hpux_function_arg_padding): Likewise.
540         * config/iq2000/iq2000-protos.h (function_arg,
541         iq2000_function_value): Likewise.
542         * config/iq2000/iq2000.c (iq2000_return_in_memory,
543         iq2000_pass_by_reference, TARGET_PROMOTE_FUNCTION_ARGS,
544         TARGET_PROMOTE_FUNCTION_RETURN, TARGET_PROMOTE_PROTOTYPES,
545         function_arg, iq2000_function_value): Likewise.
546         * config/m32c/m32c-protos.h (m32c_function_value,
547         m32c_promote_function_return): Likewise.
548         * config/m32c/m32c.c (m32c_pass_by_reference,
549         m32c_promote_prototypes, m32c_promote_function_return,
550         m32c_function_value): Likewise.
551         * config/m32r/m32r.c (m32r_return_in_memory,
552         m32r_pass_by_reference, TARGET_PROMOTE_PROTOTYPES,
553         m32r_in_small_data_p): Likewise.
554         * config/m68hc11/m68hc11-protos.h (m68hc11_function_arg_padding):
555         Likewise.
556         * config/m68hc11/m68hc11.c (m68hc11_return_in_memory,
557         m68hc11_function_arg_padding): Likewise.
558         * config/m68k/m68k-protos.h (m68k_function_value): Likewise.
559         * config/m68k/m68k.c (TARGET_PROMOTE_PROTOTYPES,
560         m68k_function_value): Likewise.
561         * config/mcore/mcore-protos.h (mcore_num_arg_regs,
562         mcore_function_value): Likewise.
563         * config/mcore/mcore.c (handle_structs_in_regs,
564         mcore_return_in_memory, TARGET_PROMOTE_FUNCTION_ARGS,
565         TARGET_PROMOTE_FUNCTION_RETURN, TARGET_PROMOTE_PROTOTYPES,
566         mcore_num_arg_regs, mcore_function_value): Likewise.
567         * config/mips/mips-protos.h (mips_pad_arg_upward,
568         mips_function_value): Likewise.
569         * config/mips/mips.c (mips_fpr_return_fields, mips_return_in_msb,
570         mips_return_in_memory, mips_pass_by_reference, mips_callee_copies,
571         TARGET_PROMOTE_FUNCTION_ARGS, TARGET_PROMOTE_FUNCTION_RETURN,
572         TARGET_PROMOTE_PROTOTYPES, mips_pad_arg_upward,
573         mips_function_value): Likewise.
574         * config/mmix/mmix-protos.h (mmix_function_outgoing_value):
575         Likewise.
576         * config/mmix/mmix.c (mmix_pass_by_reference,
577         TARGET_PROMOTE_FUNCTION_ARGS, mmix_function_outgoing_value,
578         mmix_encode_section_info): Likewise.
579         * config/mn10300/mn10300-protos.h (mn10300_function_value):
580         Likewise.
581         * config/mn10300/mn10300.c (mn10300_return_in_memory,
582         mn10300_pass_by_reference, TARGET_PROMOTE_PROTOTYPES,
583         mn10300_function_value): Likewise.
584         * config/mt/mt-protos.h (mt_function_value): Likewise.
585         * config/mt/mt.c (mt_pass_by_reference, mt_function_value,
586         mt_pass_in_stack, TARGET_PROMOTE_PROTOTYPES): Likewise.
587         * config/pa/pa-protos.h (function_arg_padding, function_value,
588         pa_return_in_memory): Likewise.
589         * config/pa/pa.c (pa_pass_by_reference,
590         TARGET_PROMOTE_FUNCTION_RETURN, TARGET_PROMOTE_PROTOTYPES,
591         function_arg_padding, function_value, pa_return_in_memory):
592         Likewise.
593         * config/pdp11/pdp11.c (pdp11_return_in_memory): Likewise.
594         * config/rs6000/rs6000-protos.h (rs6000_function_value,
595         function_arg_padding): Likewise.
596         * config/rs6000/rs6000.c (rs6000_return_in_memory,
597         rs6000_darwin64_record_arg_recurse, rs6000_darwin64_record_arg,
598         rs6000_pass_by_reference, rs6000_must_pass_in_stack,
599         TARGET_PROMOTE_FUNCTION_ARGS, TARGET_PROMOTE_FUNCTION_RETURN,
600         function_arg_padding, altivec_expand_dst_builtin,
601         altivec_expand_builtin, rs6000_expand_builtin, spe_init_builtins,
602         altivec_init_builtins, rs6000_common_init_builtins,
603         rs6000_function_value): Likewise.
604         * s390/s390-protos.h (s390_function_value): Likewise.
605         * config/s390/s390.c (s390_function_arg_size,
606         s390_pass_by_reference, s390_return_in_memory,
607         s390_function_value, TARGET_PROMOTE_FUNCTION_ARGS,
608         TARGET_PROMOTE_FUNCTION_RETURN): Likewise.
609         * config/score/score-protos.h (score_function_value): Likewise.
610         * config/score/score.c (score_arg_partial_bytes,
611         TARGET_PROMOTE_FUNCTION_ARGS, TARGET_PROMOTE_FUNCTION_RETURN,
612         TARGET_PROMOTE_PROTOTYPES, score_return_in_memory,
613         score_pass_by_reference, score_add_offset, score_function_value):
614         Likewise.
615         * config/sh/sh-protos.h (sh_attr_renesas_p,
616         sh_promote_prototypes): Likewise.
617         * config/sh/sh.c (sh_return_in_memory, sh_pass_by_reference,
618         sh_callee_copies, sh_promote_prototypes, shcompact_byref,
619         sh_attr_renesas_p): Likewise.
620         * config/sparc/sparc-protos.h (function_value,
621         function_arg_padding): Likewise.
622         * config/sparc/sparc.c (sparc_promote_prototypes,
623         sparc_return_in_memory, sparc_pass_by_reference,
624         TARGET_PROMOTE_FUNCTION_ARGS, TARGET_PROMOTE_FUNCTION_RETURN,
625         function_arg_record_value_2, function_arg_record_value_1,
626         function_arg_record_value, function_arg_record_value,
627         function_arg_padding, function_value): Likewise.
628         * config/spu/spu-protos.h (spu_function_value): Likewise.
629         * config/spu/spu.c (spu_pass_by_reference, spu_return_in_memory,
630         spu_function_value): Likewise.
631         * config/stormy16/stormy16-protos.h (xstormy16_function_value):
632         Likewise.
633         * config/stormy16/stormy16.c (xstormy16_return_in_memory,
634         xstormy16_function_value, TARGET_PROMOTE_FUNCTION_ARGS,
635         TARGET_PROMOTE_FUNCTION_RETURN, TARGET_PROMOTE_PROTOTYPES):
636         Likewise.
637         * config/v850/v850.c (v850_return_in_memory,
638         v850_pass_by_reference, TARGET_PROMOTE_PROTOTYPES): Likewise.
639         * config/vax/vax.c (TARGET_PROMOTE_PROTOTYPES): Likewise.
640         * config/xtensa/xtensa.c (xtensa_return_in_msb,
641         xtensa_return_in_memory, TARGET_PROMOTE_FUNCTION_ARGS,
642         TARGET_PROMOTE_FUNCTION_RETURN, TARGET_PROMOTE_PROTOTYPES):
643         Likewise.
644         * explow.c (promote_mode, hard_function_value): Likewise.
645         * expr.h (hard_function_value, promote_mode): Likewise.
646         * function.c (aggregate_value_p): Likewise.
647         * hooks.c (hook_bool_const_tree_true): New.
648         * hooks.h (hook_bool_const_tree_true): New.
649         * sdbout.c (SET_KNOWN_TYPE_TAG, plain_type_1): Constify.
650         * target-def.h (TARGET_PROMOTE_FUNCTION_ARGS,
651         TARGET_PROMOTE_FUNCTION_RETURN, TARGET_PROMOTE_PROTOTYPES,
652         TARGET_RETURN_IN_MSB): Likewise.
653         * target.h (promote_function_args, promote_function_return,
654         promote_prototypes, return_in_memory, return_in_msb,
655         pass_by_reference, must_pass_in_stack, callee_copies,
656         function_value): Likewise.
657         * targhooks.c (default_return_in_memory,
658         hook_pass_by_reference_must_pass_in_stack,
659         hook_callee_copies_named,
660         hook_bool_CUMULATIVE_ARGS_mode_tree_bool_false,
661         hook_bool_CUMULATIVE_ARGS_mode_tree_bool_true,
662         default_function_value): Likewise. 
663         * targhooks.h (default_return_in_memory,
664         hook_pass_by_reference_must_pass_in_stack,
665         hook_callee_copies_named,
666         hook_bool_CUMULATIVE_ARGS_mode_tree_bool_false,
667         hook_bool_CUMULATIVE_ARGS_mode_tree_bool_true,
668         default_function_value): Likewise.
669         * tree-ssa-structalias.c (const_equiv_class_label_t): New.
670         (equiv_class_label_hash, equiv_class_label_eq): Constify.
671         * tree-vectorizer.c (bb_in_loop_p): Likewise.
672         * tree.c (needs_to_live_in_memory): Likewise.
673         * tree.h (struct tree_type, needs_to_live_in_memory,
674         aggregate_value_p, must_pass_in_stack_var_size,
675         must_pass_in_stack_var_size_or_pad): Likewise.
676         * vmsdbgout.c (write_debug_addr, write_debug_delta4,
677         write_debug_string, ASM_OUTPUT_DEBUG_STRING, write_rtnbeg,
678         lookup_filename): Likewise.
679
680 2007-08-23  Uros Bizjak  <ubizjak@gmail.com>
681
682         PR target/17390
683         * config/i386/i386.c (ix86_expand_fp_compare): Expand fp comparison to
684         fake fcomi i387 instruction for !TARGET_CMOVE.
685         (ix86_expand_branch): Expand natural sequence with one jump for
686         all targets, not only TARGET_CMOVE.
687         * config/i386/i386.md (*cmpfp_0_cc): New define_insn_and_split
688         pattern to implement fake fcomi sequence.  Split instruction after
689         reload to correct compare sequences.
690         (*cmpfp_xf_cc): Ditto.
691         (*cmpfp_<mode>_cc): Ditto.
692         (*cmpfp_u_cc): Ditto.
693         (*cmpfp_<mode>_cc): Ditto.
694
695 2007-08-23  Richard Guenther  <rguenther@suse.de>
696
697         * tree-pretty-print.c (dump_generic_node): Annotate
698         GIMPLE_MODIFY_STMTs with volatile ops with "{v}".
699
700 2007-08-23  Richard Guenther  <rguenther@suse.de>
701
702         * builtins.c (expand_builtin_mathfn): Wrap argument in
703         save_expr directly instead of re-building the call.
704         (expand_builtin_mathfn_2): Likewise.
705         (expand_builtin_mathfn_3): Likewise.
706         (expand_builtin_interclass_mathfn): Likewise.
707         (expand_builtin_int_roundingfn): Set arg.
708         (expand_builtin_int_roundingfn_2): Likewise.
709
710 2007-08-23  Paolo Bonzini  <bonzini@gnu.org>
711
712         * config/i386/sse.md (*sse_and<mode>3, *sse_ior<mode>3,
713         *sse_nand<mode>3, *sse_xor<mode>3): New.
714
715 2007-08-23  Uros Bizjak  <ubizjak@gmail.com>
716
717         * config/i386/i386.h (PRINT_OPERAND_PUNCT_VALID_P): Add ';' code.
718         * config/i386/i386.c (print_operand): Handle ';' code.  Output
719         semicolon for TARGET_MACHO.
720         * config/i386/sync.md (*sync_compare_and_swap<mode>): Use '%;' to
721         emit semicolon after 'lock' prefix.
722         (sync_double_compare_and_swap<mode>): Ditto.
723         (*sync_double_compare_and_swapdi_pic): Ditto.
724         (*sync_compare_and_swap_cc<mode>): Ditto.
725         (sync_double_compare_and_swap_cc<mode>): Ditto.
726         (*sync_double_compare_and_swap_ccdi_pic): Ditto.
727         (sync_old_add<mode>): Ditto.
728         (sync_add<mode>): Ditto.
729         (sync_sub<mode>): Ditto.
730         (sync_ior<mode>): Ditto.
731         (sync_and<mode>): Ditto.
732         (sync_xor<mode>): Ditto.
733
734 2007-08-22  Chao-ying Fu  <fu@mips.com>
735
736         * rtl.c (rtx_code_size): Check CONST_FIXED to calcualte correct sizes
737         in DEF_RTL_EXPR.
738         (copy_rtx): Handle CONST_FIXED.
739         (rtx_equal_p): Likewise.
740         * rtl.h (fixed_value.h): New include.
741         (rtx_def): Add a new field of fixed_value to u.
742         (XCNMPFV): Define for accessing fixed_value.
743         (CONST_FIXED_VALUE, CONST_FIXED_VALUE_HIGH, CONST_FIXED_VALUE_LOW):
744         Define.
745         * rtl.def (CONST_FIXED): New constant.
746         (SS_MULT, US_MULT, SS_DIV, US_DIV, FRACT_CONVERT,
747         UNSIGNED_FRACT_CONVERT, SAT_FRACT, UNSIGNED_SAT_FRACT, US_NEG,
748         US_ASHIFT): New codes.
749         * doc/rtl.texi (Expressions): Document const_fixed, us_neg, ss_mult,
750         us_mult, ss_div, us_div, us_ashift, fract_convert, sat_fract,
751         unsigned_fract_convert, unsigned_sat_fract): Document them.
752         * varasm.c (assemble_integer): Extend to support fixed-point constants
753         by using different machine classes.
754         (decode_addr_const): Handle FIXED_CST.
755         (const_hash_1): Likewise.
756         (compare_constant): Likewise.
757         (copy_constant): Likewise.
758         (const_rtx_hash_1): Handle CONST_FIXED.
759         (output_constant_pool_2): Handle MODE_FRACT, MODE_UFRACT, MODE_ACCUM,
760         MODE_UACCUM, MODE_VECTOR_FRACT, MODE_VECTOR_UFRACT, MODE_VECTOR_ACCUM,
761         MODE_VECTOR_UACCUM.
762         (initializer_constant_valid_p): Handle FIXED_CST.
763         (output_constant): Support FIXED_POINT_TYPE.
764         * gengenrtl.c (excluded_rtx): Check CONST_FIXED to exclude.
765         * cse.c (hash_rtx): Support CONST_FIXED.
766         (exp_equiv_p): Likewise.
767         (cannon_reg): Likewise.
768         (fold_rtx): Likewise.
769         (equiv_constant): Likewise.
770         (cse_process_notes_1): Likewise.
771         (count_reg_usage): Likewise.
772         * cselib.c (entry_and_rtx_equal_p): Check CONST_FIXED.
773         (rtx_equal_for_cselib_p): Handle CONST_FIXED.
774         (wrap_constant): Check CONST_FIXED.
775         (cselib_hash_rtx): Support CONST_FIXED.
776         (cselib_subst_to_values): Likewise.
777         * df-scan.c (df_uses_record): Likewise.
778         * gcse.c (want_to_gcse_p): Likewise.
779         (oprs_unchanged_p): Likewise.
780         (oprs_not_set_p): Likewise.
781         (compute_transp): Likewise.
782         (extract_mentioned_regs_helper): Likewise.
783         * genemit.c (gen_exp): Likewise.
784         * local-alloc.c (equiv_init_varies_p): Likewise.
785         (contains_replace_regs): Likewise.
786         (memref_referenced_p): Likewise.
787         * loop-invariant.c (check_maybe_invariant): Likewise.
788         (hash_invariant_expr_1): Likewise.
789         (invariant_expr_equal_p): Likewise.
790         * postreload-gcse.c (oprs_unchanged_p): Likewise.
791         * regclass.c (reg_scan_mark_refs): Likewise.
792         * regrename.c (scan_rtx): Likewise.
793         * resource.c (mark_referenced_resources): Likewise.
794         (mark_set_resources): Likewise.
795         * rtlanal.c (rtx_unstable_p): Likewise.
796         (rtx_varies_p): Likewise.
797         (count_occurrences): Likewise.
798         (reg_mentioned_p): Likewise.
799         (modified_between_p): Likewise.
800         (modified_in_p): Likewise.
801         (volatile_insn_p): Likewise.
802         (volatile_refs_p): Likewise.
803         (side_effects_p): Likewise.
804         (may_trap_p_1): Likewise.
805         (inequality_comparisons_p): Likewise.
806         (computed_jump_p_1): Likewise.
807         (commutative_operand_precedence): Likewise.
808         * sched-deps.c (sched_analyze_2): Likewise.
809         * sched-vis.c (print_value): Likewise.
810         * reload.c (operands_match_p): Likewise.
811         (subst_reg_equivs): Likewise.
812         * reload1.c (eliminate_regs_1): Likewise.
813         (elimination_effects): Likewise.
814         (scan_paradoxical_subregs): Likewise.
815         * alias.c (rtx_equal_for_memref_p): Likewise.
816         * Makefile.in (RTL_BASE_H): Add fixed-value.h.
817         * emit-rtl.c (const_fixed_htab): New hash table.
818         (const_fixed_htab_hash, const_fixed_htab_eq, lookup_const_fixed):
819         Declare.
820         (const_fixed_htab_hash, const_fixed_htab_eq, lookup_const_fixed,
821         const_fixed_from_fixed_value): New functions.
822         (verify_rtx_sharing): Handle CONST_FIXED.
823         (copy_rtx_if_shared_1): Likewise.
824         (reset_used_flags): Likewise.
825         (set_used_flags): Likewise.
826         (copy_insn_1): Likewise.
827         (init_emit_once): Create const_fixed_htab.
828         Store fixed-point scalar and vector zero and one to const_tiny_rtx.
829
830 2007-08-22  Zdenek Dvorak  <ook@ucw.cz>
831
832         PR tree-optimization/32949
833         * tree-ssa-loop-niter.c (scev_probably_wraps_p): Test nowrap_type_p
834         before failing for ivs with non-constant step.
835
836 2007-08-22  Hans-Peter Nilsson  <hp@axis.com>
837
838         * doc/md.texi (Iterators): Renamed from Macros.  All contents
839         changed to reflect rename of respectively define_code_macro and
840         define_mode_macro to define_code_iterator and define_mode_iterator.
841         (Mode Iterators, Code Iterators): Similar.
842         * read-rtl.c (struct iterator_group, struct iterator_traverse_data)
843         (uses_mode_iterator_p, apply_mode_iterator, uses_code_iterator_p)
844         (apply_iterator_to_string, uses_iterator_p, apply_iterator_traverse)
845         (initialize_iterators, find_iterator, check_code_iterator)
846         (map_attr_string, apply_mode_maps, apply_iterator_to_rtx, add_mapping)
847         (read_mapping, read_rtx_1): Similar.
848         * config/alpha/sync.md, config/alpha/alpha.md, config/frv/frv.md,
849         config/s390/s390.md, config/m32c/blkmov.md, config/m32c/m32c.md,
850         config/spu/spu.md, config/sparc/sparc.md, config/sparc/sync.md,
851         config/i386/i386.md, config/i386/mmx.md, config/i386/sse.md,
852         config/i386/sync.md, config/crx/crx.md, config/xtensa/xtensa.md,
853         config/cris/cris.c, config/cris/cris.md, config/ia64/sync.md,
854         config/ia64/div.md, config/ia64/vect.md, config/ia64/ia64.md,
855         config/m68k/m68k.md, config/rs6000/spe.md, config/rs6000/altivec.md,
856         config/rs6000/sync.md, config/rs6000/rs6000.md,
857         config/arm/vec-common.md, config/arm/neon.md, config/arm/iwmmxt.md,
858         config/arm/arm.md, config/mips/mips-dsp.md, config/mips/mips.md,
859         config/vax/vax.md, config/bfin/bfin.md: Similar.
860
861 2007-08-22  David Daney  <ddaney@avtrex.com>
862
863         * doc/install.texi (Testing): Mention testing on a simulator.
864
865 2007-08-22  Janis Johnson  <janis187@us.ibm.com>
866
867         * config/dfp-bit.c (DFP_TO_DFP): Check for overflow.
868
869         * doc/libgcc.texi (Decimal float library routines): Fix formatting
870         and rearrange floating point conversion functions into different
871         categories.
872
873 2007-08-22  Maxim Kuvyrkov  <maxim@codesourcery.com>
874
875         * target.h (struct gcc_target.sched: dfa_pre_advance_cycle,
876         dfa_post_advance_cycle): New scheduler hooks.
877         * target-def.h (TARGET_SCHED_DFA_PRE_ADVANCE_CYCLE,
878         TARGET_SCHED_DFA_POST_ADVANCE_CYCLE): New macros to initialize
879         new hooks.
880         (TARGET_SCHED): Use them.
881         * doc/tm.texi (TARGET_SCHED_DFA_PRE_ADVANCE_CYCLE,
882         TARGET_SCHED_DFA_POST_ADVANCE_CYCLE): Document new hooks.
883         * haifa-sched.c (advance_one_cycle): Invoke new hooks.
884
885         * genautomata.c (insn_has_dfa_reservation_p): New DFA interface
886         function to facilitate debugging.
887         (INSN_HAS_DFA_RESERVATION_P_FUNC_NAME): New macro.
888         (output_insn_has_dfa_reservation_p): New static function to output
889         insn_has_dfa_reservation_p ().
890         (write_automata): Use it.
891         * genattr.c (main): Output declaration for
892         insn_has_dfa_reservation_p ().
893
894 2007-08-22  Christian Bruel  <christian.bruel@st.com>   
895             Richard Guenther <rguenther@suse.de>
896         
897         * fold-const.c (fold_binary): Optimize A-A if -ffinite-math-only.
898         * simplify_rtx (simplify_binary_operation_1): Likewise.
899                 
900 2007-08-22  Rask Ingemann Lambertsen  <rask@sygehus.dk>
901
902         PR rtl-optimization/32557
903         * df-problems.c (df_note_bb_compute): Use mws->start_regno instead
904         of REGNO (mws->mw_reg).
905
906 2007-08-22  Richard Guenther  <rguenther@suse.de>
907
908         PR middle-end/33007
909         * builtins.c (expand_builtin_int_roundingfn): Replace call
910         argument wrapped with SAVE_EXPR directly.
911         (expand_builtin_int_roundingfn_2): Likewise.
912
913 2007-08-22  Richard Guenther  <rguenther@suse.de>
914
915         * tree-inline.c (inlinable_function_p): Restore disregarding
916         inline limits for GNU extern inline functions.
917
918 2007-08-22  Richard Guenther  <rguenther@suse.de>
919
920         PR middle-end/32563
921         * tree.c (host_integerp): Treat sizetype as signed as it is
922         sign-extended.
923
924 2007-08-21  Ian Lance Taylor  <iant@google.com>
925
926         PR tree-optimization/33134
927         * tree-vrp.c (adjust_range_with_scev): Call
928         set_value_range_to_value.
929
930 2007-08-21  Aldy Hernandez  <aldyh@redhat.com>
931
932         * value-prof.h (gimple_remove_histogram_value): Remove duplicate
933         prototype.
934         
935 2007-08-21  Aldy Hernandez  <aldyh@redhat.com>
936
937         * tree-flow-inline.h (next_imm_use_stmt): Remove unecessary
938         whitespace.
939
940 2007-08-21  Nathan Froyd  <froydnj@codesourcery.com>
941
942         * config/rs6000/rs6000.c (expand_block_clear): Add TARGET_SPE
943         cases to set eight bytes at a time.
944         (expand_block_move): Likewise.
945         
946 2007-08-21  Jakub Jelinek  <jakub@redhat.com>
947
948         PR debug/32610
949         * dwarf2out.c (gen_decl_die): Don't call
950         gen_tagged_type_instantiation_die if decl doesn't have tagged type.
951
952 2007-08-21  Paul Brook  <paul@codesourcery.com>
953             Nathan Sidwell  <nathan@codesourcery.com>
954             Mark Mitchell  <mark@codesourcery.com>
955             Joseph Myers  <joseph@codesourcery.com>
956
957         * configure.ac: Add --with-pkgversion and --with-bugurl.
958         * configure: Regenerate.
959         * doc/install.texi: Document them.
960         * version.c (version_string): Remove VERSUFFIX.
961         (VERSUFFIX): Remove.
962         (pkgversion_string): New.
963         (bug_report_url): Do not hard-code initializer.
964         * version.h (pkgversion_string): Declare.
965         * Makefile.in (PKGVERSION_s, BUGURL_s, PKGVERSION, BUGURL_TEXI):
966         Define.
967         (version.o): Define PKGVERSION and BUGURL.
968         (gcc-vers.texi): Define VERSION_PACKAGE and BUGURL.
969         (%.pod): Define BUGURL.
970         * gcc.c (process_command, main): Use pkgversion_string.
971         * toplev.c (compile_file, print_version): Likewise.
972         * protoize.c (main): Likewise.
973         * gcov.c (print_version): Likewise.  Update copyright date.
974         * gcov-dump.c (print_version): Likewise.  Update copyright date.
975         * mips-tdump.c (main): Likewise.  Update copyright date.
976         * mips-tfile.c (main): Likewise.  Update copyright date.
977         * doc/include/gcc-common.texi: Include VERSION_PACKAGE as subtitle.
978         * doc/bugreport.texi: Use BUGURL for bug-reporting instructions;
979         shorten description.
980         * doc/gcc.texi: Include VERSION_PACKAGE in version description.
981         * doc/gccint.texi: Likewise.
982         * doc/invoke.texi: Use BUGURL for bug-reporting instructions.
983         Update copyright date.
984
985 2007-08-21  Uros Bizjak  <ubizjak@gmail.com>
986
987         * config/i386/i386.c (ix86_expand_clear): Use FLAGS_REG.
988         (ix86_expand_strlensi_unroll_1): Ditto.
989         (ix86_expand_branch): Use FLAGS_REG and FPSR_REG.
990         (ix86_expand_carry_flag_compare): Update comment.
991
992 2007-08-21  Jakub Jelinek  <jakub@redhat.com>
993
994         PR middle-end/32912
995         * fold-const.c (fold_unary): Optimize BIT_NOT_EXPR of VECTOR_CST.
996         (fold_binary): Handle vectors in X | ~X and X ^ ~X optimizations.
997
998 2007-08-21  Richard Guenther  <rguenther@suse.de>
999
1000         * fold-const.c (fold_binary): Revert removing of index +p PTR folding.
1001
1002 2007-08-21  Richard Guenther  <rguenther@suse.de>
1003
1004         PR middle-end/33122
1005         * fold-const.c (fold_binary): Remove index +p PTR folding.
1006         Fix types of POINTER_PLUS_EXPR generated by folding of
1007         (PTR +p B) +p A.
1008
1009 2007-08-20  Chao-ying Fu  <fu@mips.com>
1010
1011         * c-common.h (enum rid): Add new enumeration values of RID_SAT,
1012         RID_FRACT, and RID_ACCUM.  RID_SAT needs to be inserted before
1013         RID_ONEWAY, so that it can be checked in declspecs_add_type.
1014         (c_common_fixed_point_type_for_size): Declare.
1015         * c-parser.c (reswords): Add _Fract, _Accum, and _Sat.
1016         (c_token_starts_typename): Handle RID_FRACT, RID_ACCUM, and RID_SAT.
1017         (c_token_starts_declspecs): Likewise.
1018         (c_parser_declspecs): Likewise.
1019         (c_parser_attributes): Likewise.
1020         * c-tree.h (enum c_typespec_keyword): Add cts_fract and cts_accum.
1021         (c_declspecs): Add saturating_p.
1022         * c-decl.c (build_null_declspecs): Initialize saturating_p.
1023         (declspecs_add_type): Avoid using complex with _Fract, _Accum, or
1024         _Sat.  Handle RID_SAT.
1025         Avoid using void, bool, char, int, float, double, _Decimal32,
1026         _Decimal64, _Decimal128, and complex with _Sat.
1027         Handle RID_FRACT and RID_ACCUM.
1028         Make sure _Sat is used with _Fract or _Accum.
1029         (finish_declspecs): Handle cts_fract and cts_accum.
1030         * c-common.c (fixed-value.h): New include.
1031         (constant_expression_warning): Handle FIXED_CST.
1032         (overflow_warning): Likewise.
1033         (warnings_for_convert_and_check): Likewise.
1034         (c_common_fixed_point_type_for_size): New.
1035         (c_common_type_for_mode): Handle fixed-point modes to
1036         return various saturating/non-saturating, signed/unsigned types.
1037         (c_common_signed_or_unsigned_type): Support fixed-point types.
1038         (shorten_compare): Check fixed-point zero.
1039         Handle FIXED_POINT_TYPE.
1040         (c_common_truthvalue_conversion): Handle FIXED_CST.
1041         Handle FIXED_POINT_TYPE.
1042         (c_common_nodes_and_builtins): Record builtin types for fixed-point
1043         types.
1044         (handle_mode_attribute): Handle fixed-point modes.  Need to check
1045         if the signness of base type and fixed-point modes are consistent.
1046         (handle_vector_size_attribute): Handle fixed-point modes.
1047         (same_scalar_type_ignoring_signedness): Handle FIXED_POINT_TYPE.
1048         (warn_for_div_by_zero): Check fixed-point zero.
1049         * c-typeck.c (c_common_type): Check FIXED_POINT_TYPE.  Build
1050         a common fixed-point type based on fbit, ibit, sign, and saturation.
1051         (build_unary_op): Allow FIXED_POINT_TYPE for CONVERT_EXPR,
1052         NEGATE_EXPR, TRUTH_NOT_EXPR, PREINCREMENT_EXPR, POSTINCREMENT_EXPR,
1053         PREDECREMENT_EXPR, and POSTDECREMENT_EXPR.
1054         (convert_for_assignment): Support FIXED_POINT_TYPE.
1055         (digest_init): Handle FIXED_POINT_TYPE.
1056         (build_binary_op): Support FIXED_POINT_TYPE in *_DIV_EXPR,
1057         TRUTH_ANDIF_EXPR, TRUTH_ORIF_EXPR, TRUTH_AND_EXPR, TRUTH_OR_EXPR,
1058         TRUTH_XOR_EXPR, RSHIFT_EXPR, LSHIFT_EXPR, EQ_EXPR, NE_EXPR, LE_EXPR,
1059         GE_EXPR, LT_EXPR, GT_EXPR.
1060         * target-def.h (TARGET_FIXED_POINT_SUPPORTED_P): New.
1061         (TARGET_INITIALIZER): Add TARGET_FIXED_POINT_SUPPORTED_P.
1062         * target.h (gcc_target): Add fixed_point_supported_p.
1063         * targhooks.c (default_scalar_mode_supported_p): Handle MODE_FRACT,
1064         MODE_UFRACT, MODE_ACCUM, and MODE_UACCUM.
1065         (default_fixed_point_supported_p): Define.
1066         * targhooks.h (default_fixed_point_supported_p): Declare.
1067         * doc/tm.texi (TARGET_FIXED_POINT_SUPPORTED_P): Add.
1068         * doc/install.texi (Configuration): Add --enable-fixed-point.
1069         * configure.ac (--enable-fixed-point): New to enable fixed-point
1070         arithmetic extension to C.  For mips targets, we enable it by default.
1071         * configure, config.in: Regenerate.
1072
1073 2007-08-20  Pawel Sikora  <pluto@pld-linux.org>
1074
1075         * doc/invoke.texi (-Wnon-virtual-dtor): Update documentation.
1076
1077 2007-08-20  David Edelsohn  <edelsohn@gnu.org>
1078
1079         * dwarf2out.c (text_section_used): Move declaration outside ifdef
1080         DWARF2_DEBUGGING_INFO.
1081         (cold_text_section_used): Same.
1082         (cold_text_section): Same.
1083
1084 2007-08-20  Richard Guenther  <rguenther@suse.de>
1085
1086         * c-typeck.c (convert_for_assignment): Use the type of
1087         the member for the initialization.
1088
1089 2007-08-20  Richard Guenther  <rguenther@suse.de>
1090
1091         * c-objc-common.c (c_disregard_inline_limits): Remove.
1092         * c-objc-common.h (c_disregard_inline_limits): Likewise.
1093         * cgraphunit.c (cgraph_process_new_functions): Call
1094         disregard_inline_limits_p.
1095         (cgraph_preserve_function_body_p): Likewise.
1096         * ipa-inline.c (compute_inline_parameters): Likewise.
1097         * langhooks-def.h (lhd_tree_inlining_disregard_inline_limits):
1098         Remove.
1099         (LANG_HOOKS_TREE_INLINING_DISREGARD_INLINE_LIMITS): Remove.
1100         (LANG_HOOKS_TREE_INLINING_INITIALIZER): Remove initializer for
1101         disregard_inline_limits langhook.
1102         * langhooks.c (lhd_tree_inlining_disregard_inline_limits):
1103         Remove.
1104         * langhooks.h (lang_hooks_for_tree_inlining): Remove
1105         disregard_inline_limits langhook.
1106         * tree-inline.c (disregard_inline_limits_p): New function.
1107         * tree-inline.h (disregard_inline_limits_p): Declare.
1108
1109 2007-08-20  Richard Guenther  <rguenther@suse.de>
1110
1111         * langhooks-def.h (lhd_tree_inlining_auto_var_in_fn_p): Remove.
1112         (LANG_HOOKS_TREE_INLINING_AUTO_VAR_IN_FN_P): Likewise.
1113         (LANG_HOOKS_TREE_INLINING_INITIALIZER): Remove initializer for
1114         auto_var_in_fn_p langhook.
1115         * langhooks.c (lhd_tree_inlining_auto_var_in_fn_p): Rename and
1116         move ...
1117         * tree.c (auto_var_in_fn_p): ... here.
1118         (find_var_from_fn): Call auto_var_in_fn_p directly.
1119         * langhooks.h (lang_hooks_for_tree_inlining): Remove
1120         auto_var_in_fn_p langhook.
1121         * tree-inline.c (remap_decls): Call auto_var_in_fn_p directly.
1122         (copy_body_r): Likewise.
1123         (self_inlining_addr_expr): Likewise.
1124         * tree.h (auto_var_in_fn_p): Declare.
1125
1126 2007-08-20  Richard Guenther  <rguenther@suse.de>
1127
1128         * tree.c (WALK_SUBTREE): Call walk_tree_1.
1129         (walk_type_fields): Take lh parameter.
1130         (walk_tree): Rename to ...
1131         (walk_tree_1): ... this.  Do not call the walk_subtrees
1132         langhook but the now passed callback.  Pass lh on recursion.
1133         (walk_tree_without_duplicates): Rename to ...
1134         (walk_tree_without_duplicates_1): ... this.  Take lh parameter
1135         and call walk_tree_1.
1136         * tree.h (walk_tree_lh): New typedef.
1137         (walk_tree_1): Declare.
1138         (walk_tree_without_duplicates_1): Likewise.
1139         (walk_tree): New define to walk_tree_1 with NULL lh parameter.
1140         (walk_tree_without_duplicates): New define to
1141         walk_tree_without_duplicates_1 with NULL lh parameter.
1142         * langhooks.c (lhd_tree_inlining_walk_subtrees): Remove.
1143         * langhooks.h (lang_hooks_for_tree_inlining): Remove walk_subtrees
1144         langhook.
1145         * langhooks-def.h (lhd_tree_inlining_walk_subtrees): Remove.
1146         (LANG_HOOKS_TREE_INLINING_WALK_SUBTREES): Likewise.
1147         (LANG_HOOKS_TREE_INLINING_INITIALIZER): Remove walk_subtrees
1148         initializer.
1149
1150 2007-08-20  Andrew Pinski  <andrew_pinski@playstation.sony.com>
1151
1152         PR middle-end/30564
1153         * tree-inline.c (optimize_inline_calls): Move the cgraph checking
1154         code in front of the compacting of basic blocks.
1155         Move the folding of statements inbetween the cgraph checking
1156         and compacting of basic blocks.
1157
1158 2007-08-19  Andrew Pinski  <andrew_pinski@playstation.sony.com>
1159            Serge Belyshev  <belyshev@depni.sinp.msu.ru>
1160
1161         PR target/32522
1162         * config/alpha/alpha.c (va_list_skip_additions): Check for
1163         POINTER_PLUS_EXPR in addition to PLUS_EXPR.
1164         (alpha_stdarg_optimize_hook): Look for POINTER_PLUS_EXPR instead of
1165         PLUS_EXPR when checking ap.__base.
1166         (alpha_va_start): Create POINTER_PLUS_EXPR instead of PLUS_EXPR
1167         when doing addition on pointer types.  Use size_int instead of
1168         build_int_cst.
1169         (alpha_gimplify_va_arg_1): Likewise, but use sizetype instead of
1170         ptr_type in the second operand.
1171
1172 2007-08-19  Andrew Pinski  <pinskia@gmail.com>
1173
1174         PR target/33115
1175         * config/i386/darwin.h (CC1_SPEC): Add %(cc1_cpu) in front.
1176
1177 2007-08-19  Andrew Pinski  <andrew_pinski@playstation.sony.com>
1178
1179         PR middle-end/32940
1180         * cfgexpand.c  (expand_one_register_var): Mark pointer
1181         DECL_ARTIFICIAL as REG_POINTER also.
1182         * stmt.c (expand_decl): Likewise.
1183
1184 2007-08-19  Daniel Berlin  <dberlin@dberlin.org>
1185
1186         Fix PR 32772
1187         Fix PR 32716
1188         Fix PR 32328
1189         Fix PR 32303
1190
1191         * tree-flow.h (struct stmt_ann_d): Remove makes_clobbering_call.
1192         * tree-ssa-alias.c (init_transitive_clobber_worklist): Add
1193         on_worklist argument and avoid adding things to worklist multiple
1194         times.
1195         (add_to_worklist): Ditto.
1196         (mark_aliases_call_clobbered): Mark entire structure clobbered if
1197         single SFT is clobbered.
1198         (set_initial_properties): Ditto.
1199         (compute_call_clobbered): Update for changes to function
1200         arguments.
1201         (create_overlap_variables_for): Always create SFT for offset 0.
1202         (create_structure_vars): Handle PHI's, since we are in SSA form at
1203         this point.
1204         * tree-ssa-loop-ivopts.c (get_ref_tag): Don't return subvars.
1205         * tree-ssa-operands.c (access_can_touch_variable): Don't handle
1206         TARGET_MEM_REF.
1207         (add_vars_for_offset): Figure out aliases from access + points-to.
1208         (add_virtual_operand): Use add_vars-for_offset.
1209         (get_tmr_operands): Update for NMT changes, rewrite to be correct.
1210         (add_call_clobber_ops): Remove makes_clobbering_call set.
1211         (get_expr_operands): Always pass through the INDIRECT_REF
1212         reference.
1213         * tree-ssa-structalias.c (struct constraint_graph): Remove
1214         variables member.
1215         Add pe, pe_rep, pointer_label, loc_label, pointed_by, points_to,
1216         address_taken, pt_used, number_incoming.
1217         (FIRST_ADDR_NODE): Removed.
1218         (merge_graph_nodes): Remove broken code for the moment.
1219         (init_graph): New function.
1220         (build_pred_graph): Remove code to init_graph.
1221         Add location equivalence support.
1222         (struct scc_info): Rename roots to deleted.
1223         (scc_visit): Ditto.
1224         (init_scc_info): Ditto
1225         (init_topo_info): Use graph->size.
1226         (compute_topo_order): Ditto.
1227         (do_da_constraint): Removed.
1228         (do_sd_constraint): Remove calls to find().
1229         set_union_with_increment should always get 0 as last arg here.
1230         (do_complex_constraint): Replace do_da_constraint with assert.
1231         Stop calling find.
1232         (struct equiv_class_label): New.
1233         (pointer_equiv_class_table): Ditto.
1234         (location_equiv_class_table): Ditto.
1235         (equiv_class_label_hash): Ditto.
1236         (equiv_class_label_eq): Ditto
1237         (equiv_class_lookup): Ditto.
1238         (equiv_class_ladd): Ditto.
1239         (pointer_equiv_class): Ditto.
1240         (location_equiv_class): Ditto.
1241         (condense_visit): Rename and rewrite from label_visit to do only
1242         SCC related stuff for HU.
1243         (label_visit): Do HU work for HU.
1244         (perform_var_substitution): Update to do HU and location
1245         equivalence.
1246         (free_var_substitution_info): Update to free HU and location
1247         equivalence structures.  */
1248         (find_equivalent_node): Update for pointer but not location
1249         equivalence.
1250         (unite_pointer_equivalences): New function.
1251         (move_complex_constraints): Rewrite to only do moving.
1252         (rewrite_constraints): Split out of move_complex_constraints.
1253         (solve_graph): Use graph->size.
1254         (process_constraint_1): Add from_call argument, use it.
1255         Split *a = &b into two constraints.
1256         (process_constraint): Use new process_constraint_1.
1257         (get_constraint_for_component_ref): Handle bitmaxsize == -1 case.
1258         (get_constraint_for): Handle non-pointer integers properly.
1259         Remove code that used to handle structures.
1260         (handle_ptr_arith): Fix a few bugs in pointer arithmetic handling
1261         with unknown addends.
1262         (handle_rhs_call): New function.
1263         (find_func_aliases): Use handle_rhs_call.
1264         (set_uids_in_ptset): Add an assert.
1265         (set_used_smts): Fix bug in not considering unified vars.
1266         (compute_tbaa_pruning): Stop initing useless iteration_obstack.
1267         (compute_points_to_sets): Update for other function changes.
1268         (delete_points_to_sets): Ditto.
1269         (ipa_pta_execute): Ditto.
1270         (pass_ipa_pta): We need to update SSA after ipa_pta.
1271         
1272 2007-08-19  Jan Hubicka  <jh@suse.cz>
1273
1274         * i386.md: Replace "rim" and "mri" constraints by "g".
1275
1276 2007-08-19  Joseph Myers  <joseph@codesourcery.com>
1277
1278         * dwarf2out.c (text_section_used, cold_text_section_used,
1279         cold_text_section, dwarf2out_note_section_used): New.
1280         (dwarf2out_init): Initialize cold_text_section.
1281         (dwarf2out_switch_text_section, dwarf2out_begin_function): Call
1282         dwarf2out_note_section_used.
1283         (size_of_aranges): Only count entry for text section if it was
1284         used.  Count entry for cold text section if it was used.
1285         (output_aranges): Only output entries for text section and cold
1286         text section if they were used.
1287
1288 2007-08-19  Andrew Pinski  <pinskia@gmail.com>
1289
1290         * tree-pretty-print.c (debug_generic_expr): Add a comment about
1291         the function.
1292         (debug_generic_stmt): Likewise.
1293         (debug_tree_chain): Likewise.
1294
1295 2007-08-19  Dorit Nuzman  <dorit@il.ibm.com>
1296
1297         * tree-data-refs.c (split_constant_offset): Expose.
1298         * tree-data-refs.h (split_constant_offset): Add declaration.
1299
1300         * tree-vectorizer.h (dr_alignment_support): Renamed
1301         dr_unaligned_software_pipeline to dr_explicit_realign_optimized.
1302         Added a new value dr_explicit_realign.
1303         (_stmt_vec_info): Added new fields: dr_base_address, dr_init,
1304         dr_offset, dr_step, and dr_aligned_to, along with new access
1305         functions for these fields: STMT_VINFO_DR_BASE_ADDRESS,
1306         STMT_VINFO_DR_INIT, STMT_VINFO_DR_OFFSET, STMT_VINFO_DR_STEP, and
1307         STMT_VINFO_DR_ALIGNED_TO.
1308
1309         * tree-vectorizer.c (vect_supportable_dr_alignment): Add
1310         documentation.
1311         In case of outer-loop vectorization with non-fixed misalignment - use
1312         the dr_explicit_realign scheme instead of the optimized realignment
1313         scheme.
1314         (new_stmt_vec_info): Initialize new fields.
1315
1316         * tree-vect-analyze.c (vect_compute_data_ref_alignment): Handle the
1317         'nested_in_vect_loop' case. Change verbosity level.
1318         (vect_analyze_data_ref_access): Handle the 'nested_in_vect_loop' case.
1319         Don't fail on zero step in the outer-loop for loads.
1320         (vect_analyze_data_refs): Call split_constant_offset to calculate
1321         base, offset and init relative to the outer-loop.
1322
1323         * tree-vect-transform.c (vect_create_data_ref_ptr): Replace the unused
1324         BSI function argument with a new function argument - at_loop.
1325         Simplify the condition that determines STEP. Takes additional argument
1326         INV_P. Support outer-loop vectorization (handle the
1327         nested_in_vect_loop case), including zero step in the outer-loop. Call
1328         vect_create_addr_base_for_vector_ref with additional argument.
1329         (vect_create_addr_base_for_vector_ref): Takes additional argument LOOP.
1330         Updated function documentation. Handle the 'nested_in_vect_loop' case.
1331         Fixed and simplified calculation of step.
1332         (vectorizable_store): Call vect_create_data_ref_ptr with loop instead
1333         of bsi, and with additional argument. Call bump_vector_ptr with
1334         additional argument. Fix typos. Handle the 'nested_in_vect_loop' case.
1335         (vect_setup_realignment): Takes additional arguments INIT_ADDR and
1336         DR_ALIGNMENT_SUPPORT. Returns another value AT_LOOP. Handle the case
1337         when the realignment setup needs to take place inside the loop.
1338         Support the dr_explicit_realign scheme. Allow generating the optimized
1339         realignment scheme for outer-loop vectorization. Added documentation.
1340         (vectorizable_load): Support the dr_explicit_realign scheme. Handle
1341         the 'nested_in_vect_loop' case, including loads that are invariant in
1342         the outer-loop and the realignment schemes. Handle the case when the
1343         realignment setup needs to take place inside the loop. Call
1344         vect_setup_realignment with additional arguments.  Call
1345         vect_create_data_ref_ptr with additional argument and with loop instead
1346         of bsi. Fix 80-column overflow. Fix typos. Rename PHI_STMT to PHI.
1347         (vect_gen_niters_for_prolog_loop): Call
1348         vect_create_addr_base_for_vector_ref with additional arguments.
1349         (vect_create_cond_for_align_checks): Likewise.
1350         (bump_vector_ptr): Updated to support the new dr_explicit_realign
1351         scheme: takes additional argument bump; argument ptr_incr is now
1352         optional; updated documentation.
1353         (vect_init_vector): Takes additional argument (bsi). Use it, if
1354         available, to insert the vector initialization.
1355         (get_initial_def_for_induction): Pass additional argument in call to
1356         vect_init_vector.
1357         (vect_get_vec_def_for_operand): Likewise.
1358         (vect_setup_realignment): Likewise.
1359         (vectorizable_load): Likewise.
1360
1361 2007-08-19  Dorit Nuzman  <dorit@il.ibm.com>
1362
1363         * tree-vectorizer.h (vect_is_simple_reduction): Takes a loop_vec_info
1364         as argument instead of struct loop.
1365         (nested_in_vect_loop_p): New function.
1366         (vect_relevant): Add enum values vect_used_in_outer_by_reduction and
1367         vect_used_in_outer.
1368         (is_loop_header_bb_p): New. Used to differentiate loop-header phis
1369         from other phis in the loop.
1370         (destroy_loop_vec_info): Add additional argument to declaration.
1371
1372         * tree-vectorizer.c (supportable_widening_operation): Also check if
1373         nested_in_vect_loop_p (don't allow changing the order in this case).
1374         (vect_is_simple_reduction): Takes a loop_vec_info as argument instead
1375         of struct loop. Call nested_in_vect_loop_p and don't require
1376         flag_unsafe_math_optimizations if it returns true.
1377         (new_stmt_vec_info): When setting def_type for phis differentiate 
1378         loop-header phis from other phis.
1379         (bb_in_loop_p): New function.
1380         (new_loop_vec_info): Inner-loop phis already have a stmt_vinfo, so
1381         just update their loop_vinfo.  Order of BB traversal now matters -
1382         call dfs_enumerate_from with bb_in_loop_p.
1383         (destroy_loop_vec_info): Takes additional argument to control whether
1384         stmt_vinfo of the loop stmts should be destroyed as well.
1385         (vect_is_simple_reduction): Allow the "non-reduction" use of a
1386         reduction stmt to be defines by a non loop-header phi.
1387         (vectorize_loops): Call destroy_loop_vec_info with additional argument.
1388
1389         * tree-vect-transform.c (vectorizable_reduction): Call
1390         nested_in_vect_loop_p. Check for multitypes in the inner-loop.
1391         (vectorizable_call): Likewise.
1392         (vectorizable_conversion): Likewise.
1393         (vectorizable_operation): Likewise.
1394         (vectorizable_type_promotion): Likewise.
1395         (vectorizable_type_demotion): Likewise.
1396         (vectorizable_store): Likewise.
1397         (vectorizable_live_operation): Likewise.
1398         (vectorizable_reduction): Likewise. Also pass loop_info to
1399         vect_is_simple_reduction instead of loop.
1400         (vect_init_vector): Call nested_in_vect_loop_p.
1401         (get_initial_def_for_reduction): Likewise.
1402         (vect_create_epilog_for_reduction): Likewise.
1403         (vect_init_vector): Check which loop to work with, in case there's an
1404         inner-loop.
1405         (get_initial_def_for_inducion): Extend to handle outer-loop
1406         vectorization. Fix indentation.
1407         (vect_get_vec_def_for_operand): Support phis in the case vect_loop_def.
1408         In the case vect_induction_def get the vector def from the induction
1409         phi node, instead of calling get_initial_def_for_inducion.
1410         (get_initial_def_for_reduction): Extend to handle outer-loop 
1411         vectorization.
1412         (vect_create_epilog_for_reduction): Extend to handle outer-loop
1413         vectorization.
1414         (vect_transform_loop): Change assert to just skip this case.  Add a
1415         dump printout.
1416         (vect_finish_stmt_generation): Add a couple asserts.
1417
1418         (vect_estimate_min_profitable_iters): Multiply
1419         cost of inner-loop stmts (in outer-loop vectorization) by estimated
1420         inner-loop bound.
1421         (vect_model_reduction_cost): Don't add reduction epilogue cost in case
1422         this is an inner-loop reduction in outer-loop vectorization.
1423
1424         * tree-vect-analyze.c (vect_analyze_scalar_cycles_1): New function.
1425         Same code as what used to be vect_analyze_scalar_cycles, only with
1426         additional argument loop, and loop_info passed to
1427         vect_is_simple_reduction instead of loop.
1428         (vect_analyze_scalar_cycles): Code factored out into
1429         vect_analyze_scalar_cycles_1. Call it for each relevant loop-nest.
1430         Updated documentation.
1431         (analyze_operations): Check for inner-loop loop-closed exit-phis during
1432         outer-loop vectorization that are live or not used in the outerloop,
1433         cause this requires special handling.
1434         (vect_enhance_data_refs_alignment): Don't consider versioning for
1435         nested-loops.
1436         (vect_analyze_data_refs): Check that there are no datarefs in the
1437         inner-loop.
1438         (vect_mark_stmts_to_be_vectorized): Also consider vect_used_in_outer
1439         and vect_used_in_outer_by_reduction cases.
1440         (process_use): Also consider the case of outer-loop stmt defining an
1441         inner-loop stmt and vice versa.
1442         (vect_analyze_loop_1): New function.
1443         (vect_analyze_loop_form): Extend, to allow a restricted form of nested
1444         loops.  Call vect_analyze_loop_1.
1445         (vect_analyze_loop): Skip (inner-)loops within outer-loops that have
1446         been vectorized.  Call destroy_loop_vec_info with additional argument.
1447
1448         * tree-vect-patterns.c (vect_recog_widen_sum_pattern): Don't allow
1449         in the inner-loop when doing outer-loop vectorization. Add
1450         documentation and printout.
1451         (vect_recog_dot_prod_pattern): Likewise. Also add check for
1452         GIMPLE_MODIFY_STMT (in case we encounter a phi in the loop).
1453
1454 2007-08-18  Andrew Pinski  <pinskia@gmail.com>
1455
1456         * tree-affine.h (print_aff): New prototype.
1457         (debug_aff): Likewise.
1458         * tree-affine.c (print_aff): New function.
1459         (debug_aff): Likewise.
1460
1461 2007-08-18  Paul Brook  <paul@codesourcery.com>
1462             Joseph Myers  <joseph@codesourcery.com>
1463
1464         * common.opt (-fdebug-prefix-map=): New option.
1465         * opts.c: Include debug.h.
1466         (common_handle_option): Handle -fdebug-prefix-map.
1467         * final.c: Include ggc.h.
1468         (struct debug_prefix_map, debug_prefix_maps, add_debug_prefix_map,
1469         remap_debug_filename): New.
1470         * Makefile.in (final.o, opts.o): Update dependencies.
1471         * debug.h (remap_debug_filename, add_debug_prefix_map): Declare.
1472         * configure.ac: Check for assembler --debug-prefix-map support.
1473         * configure, config.in: Regenerate.
1474         * gcc.c (ASM_MAP): Define conditional on HAVE_AS_DEBUG_PREFIX_MAP.
1475         (ASM_DEBUG_SPEC): Include ASM_MAP.
1476         * doc/install.texi (--with-debug-prefix-map): Document.
1477         * doc/invoke.texi (-fdebug-prefix-map): Document.
1478         * dbxout.c (dbxout_init, dbxout_start_source_file,
1479         dbxout_source_file): Call remap_debug_filename.
1480         * dwarf2out.c (add_comp_dir_attribute, maybe_emit_file,
1481         dwarf2out_start_source_file, dwarf2out_finish): Call
1482         remap_debug_filename.
1483         (file_table_relative_p): Do not check d->emitted_number.
1484         * toplev.c (output_file_directive): Call remap_debug_filename.
1485         * vmsdbgout.c (write_srccorr): Call remap_debug_filename.
1486         * xcoffout.c (xcoffout_source_file): Call remap_debug_filename.
1487
1488 2007-08-17  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
1489
1490         * loop-invariant.c (find_invariants_to_move): Add missing macro
1491         argument.
1492
1493 2007-08-17  Tom Tromey  <tromey@redhat.com>
1494
1495         * tree.h (struct tree_label_decl): Removed old "java" fields.
1496
1497 2007-08-17  Richard Sandiford  <richard@codesourcery.com>
1498             Nigel Stephens  <nigel@mips.com>
1499
1500         * config/mips/sde.h (DRIVER_SELF_SPECS): Add commas.
1501         Treat -mno-data-in-code and -mcode-xonly as aliases for
1502         -mcode-readable=no and -mcode-readable=pcrel respectively.
1503         * config/mips/t-sde (TARGET_LIBGCC2_CFLAGS): Add -mcode-xonly.
1504         (MULTILIB_OPTIONS): Add -mcode-readable=no multilibs.
1505         (MULTILIB_DIRNAMES): Update accordingly.
1506
1507 2007-08-17  H.J. Lu  <hongjiu.lu@intel.com>
1508
1509         * Makefile.in (version.o): Depend on $(REVISION) only if
1510         REVISION_s is defined.
1511
1512 2007-08-17  Sa Liu  <saliu@de.ibm.com>
1513             Ulrich Weigand  <uweigand@de.ibm.com>
1514
1515         PR middle-end/32970
1516         * tree.c (reconstruct_complex_type): For a pointer to a vector,
1517         use build_qualified_type to retain qualifiers of the base type.
1518
1519 2007-08-17  Chen Liqin  <liqin@sunnorth.com.cn>
1520
1521         * config/score/score.md : Update pattern tablejump.
1522         * config/score/score.c : Update score_initialize_trampoline 
1523         function.
1524         * config/score/score.h (TRAMPOLINE_TEMPLATE): Added macro.
1525         (TRAMPOLINE_INSNS, TRAMPOLINE_SIZE) Update macro.
1526         * doc/contrib.texi: Add my entry.
1527
1528 2007-08-16  H.J. Lu  <hongjiu.lu@intel.com>
1529
1530         * Makefile.in (REVISION): New.
1531         (REVISION_c): New.
1532         (REVISION_s): New.
1533         (version.o): Also depend on $(REVISION). Add
1534         -DREVISION=$(REVISION_s).
1535
1536         * version.c (version_string): Add REVISION.
1537
1538 2007-08-16  Seongbae Park <seongbae.park@gmail.com>
1539
1540         * tree-eh.c (lower_try_finally_onedest): Reset the locus
1541         of GOTO that's relocated to a different block.
1542
1543 2007-08-16  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
1544
1545         * c-common.c (const_strip_array_types): New.
1546         * c-common.h (lang_missing_noreturn_ok_p): Delete.
1547         (const_strip_array_types): New.
1548         * c-objc-common.c (c_disregard_inline_limits,
1549         c_warn_unused_global_decl): Constify.
1550         * c-tree.h (c_disregard_inline_limits, c_warn_unused_global_decl,
1551         c_vla_type_p, c_incomplete_type_error): Likewise.
1552         * c-typeck.c (c_incomplete_type_error, c_vla_type_p): Likewise.
1553         * hooks.c (hook_bool_const_tree_false): New.
1554         * hooks.h (hook_bool_const_tree_false): Likewise.
1555         * langhooks-def.h (lhd_warn_unused_global_decl,
1556         lhd_incomplete_type_error, lhd_expr_size,
1557         lhd_tree_inlining_disregard_inline_limits,
1558         lhd_tree_inlining_auto_var_in_fn_p, lhd_tree_dump_type_quals,
1559         LANG_HOOKS_GENERIC_TYPE_P, LANG_HOOKS_TYPE_MAX_SIZE): Constify.
1560         * langhooks.c (lhd_warn_unused_global_decl,
1561         lhd_incomplete_type_error,
1562         lhd_tree_inlining_disregard_inline_limits,
1563         lhd_tree_inlining_auto_var_in_fn_p, lhd_tree_dump_type_quals,
1564         lhd_expr_size): Likewise.
1565         * langhooks.h (lang_hooks_for_tree_inlining,
1566         lang_hooks_for_tree_dump, lang_hooks_for_types,
1567         lang_hooks_for_decls, lang_hooks): Likewise.
1568         * pointer-set.c (pointer_set_t, pointer_set_create,
1569         pointer_set_contains, insert_aux, pointer_set_insert,
1570         pointer_set_traverse, pointer_map_t, pointer_map_create,
1571         pointer_map_contains, pointer_map_insert, pointer_map_traverse):
1572         Likewise.
1573         * pointer-set.h (pointer_set_contains, pointer_set_insert,
1574         pointer_set_traverse, pointer_map_contains, pointer_map_insert,
1575         pointer_map_traverse): Likewise.
1576         * predict.c (assert_is_empty): Likewise.
1577         * tree-affine.c (free_name_expansion): Likewise.
1578         * tree-cfg.c (edge_to_cases_cleanup): Likewise.
1579         * tree.c (size_in_bytes, max_int_size_in_bytes): Likewise.
1580         * tree.h (size_in_bytes, max_int_size_in_bytes): Likewise.
1581
1582 2007-08-16  Victor Kaplansky <victork@il.ibm.com>
1583
1584         * tree-vectorizer.c (new_loop_vec_info): Initialize new 
1585         field.
1586         (destroy_loop_vec_info): Add call to VEC_free.
1587         * tree-vectorizer.h (may_alias_ddrs): Define.
1588         (LOOP_VINFO_MAY_ALIAS_DDRS): Define.
1589         * tree-vect-analyze.c (vect_analyze_data_ref_dependence):
1590         Change reporting to dump.
1591         (vect_is_duplicate_ddr): New.
1592         (vect_mark_for_runtime_alias_test): New.
1593         (vect_analyze_data_ref_dependences) Add call to
1594         vect_mark_for_runtime_alias_test.
1595         (vect_enhance_data_refs_alignment): Define local variable
1596         vect_versioning_for_alias_required, don't perform
1597         peeling for alignment if versioning for alias is
1598         required.
1599         (vect_enhance_data_refs_alignment): Use
1600         PARAM_VECT_MAX_VERSION_FOR_ALIGNMENT_CHECKS instead of
1601         PARAM_VECT_MAX_VERSION_CHECKS.
1602         * tree-vect-transform.c
1603         (vect_create_cond_for_alias_checks): New.
1604         (vect_transform_loop): Add call to
1605         vect_create_cond_for_alias_checks.
1606         (vect_vfa_segment_size): New.
1607         * params.def (PARAM_VECT_MAX_VERSION_FOR_ALIGNMENT_CHECKS):
1608         Rename.
1609         (PARAM_VECT_MAX_VERSION_FOR_ALIAS_CHECKS): Define.
1610         * gcc/doc/invoke.texi
1611         (vect-max-version-for-alignment-checks): Document.
1612         (vect-max-version-for-alias-checks): Document.
1613         (vect-max-version-checks): Remove.
1614      
1615 2007-08-16  Uros Bizjak  <ubizjak@gmail.com>
1616
1617         * config/i386/i386.md (*rep_movdi_rex64): Emit "rep" prefix on
1618         the same line as the instruction for all asm dialects.
1619         (*rep_movsi): Ditto.
1620         (*rep_movsi_rex64): Ditto.
1621         (*rep_movqi): Ditto.
1622         (*rep_movqi_rex64): Ditto.
1623         (*rep_stosdi_rex64): Ditto.
1624         (*rep_stossi): Ditto.
1625         (*rep_stossi_rex64): Ditto.
1626         (*rep_stosqi): Ditto.
1627         (*rep_stosqi_rex64): Ditto.
1628         (*cmpstrnqi_nz_1): Ditto.
1629         (*cmpstrnqi_nz_rex_1): Ditto.
1630         (*cmpstrnqi_1): Ditto.
1631         (*cmpstrnqi_rex_1): Ditto.
1632         (*strlenqi_1): Ditto.
1633         (*strlenqi_rex_1): Ditto.
1634         * config/i386/sync.md (*sync_compare_and_swap<mode>): Emit "lock"
1635         prefix on the same line as the instruction for all asm dialects.
1636         (sync_double_compare_and_swap<mode>): Ditto.
1637         (*sync_double_compare_and_swapdi_pic): Ditto.
1638         (*sync_compare_and_swap_cc<mode>): Ditto.
1639         (sync_double_compare_and_swap_cc<mode>): Ditto.
1640         (*sync_double_compare_and_swap_ccdi_pic): Ditto.
1641         (sync_old_add<mode>): Ditto.
1642         (sync_add<mode>): Ditto.
1643         (sync_sub<mode>): Ditto.
1644         (sync_ior<mode>): Ditto.
1645         (sync_and<mode>): Ditto.
1646         (sync_xor<mode>): Ditto.
1647
1648 2007-08-16  Richard Sandiford  <richard@codesourcery.com>
1649
1650         PR middle-end/32897
1651         * reload.c (find_reloads): Check that the memory returned by
1652         find_reloads_toplev was not the result of forcing a constant
1653         to memory.
1654         (find_reloads_toplev): Always use simplify_gen_subreg to get
1655         the subreg of a constant.  If the result is also a constant,
1656         but not a legitimate one, force it into the constant pool
1657         and reload its address.
1658
1659 2007-08-15  David Edelsohn  <edelsohn@gnu.org>
1660
1661         * config/rs6000/rs6000.c (rs6000_rtx_costs): Add CLZ, CTZ, and
1662         POPCOUNT.
1663
1664 2007-08-15  Daniel Jacobowitz  <dan@codesourcery.com>
1665
1666         * config/rs6000/rs6000.c (rs6000_file_start): Output a .gnu_attribute
1667         directive for the current vector ABI.
1668
1669 2007-08-15  Steve Ellcey  <sje@cup.hp.com>
1670
1671         PR target/32963
1672         * caller-save.c (reg_save_code): Set invalide status on restore code.
1673         
1674 2007-08-15  Diego Novillo  <dnovillo@google.com>
1675
1676         * tree-ssa-alias.c (compute_memory_partitions): Use
1677         alias_bitmap_obstack to allocate bitmaps.
1678         (reset_alias_info): Factor out of init_alias_info.
1679         Mark all name tags not associated to an SSA name for renaming.
1680         (init_alias_info): Call it.
1681         (create_name_tags): Tidy.  Add comments.
1682         (dump_points_to_info_for): Do not call get_mem_sym_stats_for.
1683
1684 2007-08-15  Maxim Kuvyrkov  <maxim@codesourcery.com>
1685
1686         * config/mips/mips.c (vr4130_swap_insns_p): Use new interface to
1687         scheduler dependencies.
1688
1689 2007-08-15  Rask Ingemann Lambertsen  <rask@sygehus.dk>
1690
1691         * config/i386/i386.md (subsi3_carry_zext): Remove "m" constraint for
1692         "register_operand".
1693         (*iorsi_1_zext): Likewise.
1694         (*iorsi_1_zext_imm): Likewise.
1695         * config/i386/sse.md: (*sse4_1_extractps): Use "nonimmediate_operand"
1696         with "rm"/"xm" constraint.
1697         (sse2_vmsqrtv2df2): Likewise.
1698
1699 2007-08-15  Jakub Jelinek  <jakub@redhat.com>
1700
1701         PR middle-end/33074
1702         * emit-rtl.c (try_split): Use INSN_LIST instead of EXPR_LIST for
1703         REG_LIBCALL note.
1704
1705 2007-08-14  Daniel Berlin  <dberlin@dberlin.org>
1706
1707         * tree-pass.h (PROP_pta): Removed.
1708         (TODO_rebuild_alias): New.
1709         (pass_may_alias): Removed.
1710         * tree-ssa-ccp.c (execute_fold_all_builtins): Only rebuild
1711         aliasing if we changed something.
1712         * tree-ssa-alias.c (compute_may_aliases): Make non-static.  Update
1713         SSA internally.
1714         (pass_may_alias): Removed.
1715         (create_structure_vars): Return TODO_rebuild_alias.
1716         * tree-ssa-pre.c (do_pre): Return TODO_rebuild_alias.
1717         * tree-sra.c (tree_sra): Only rebuild aliasing if something
1718         changed.
1719         (tree_sra_early): We never affect aliasing right now.
1720         * tree-flow.h (compute_may_aliases): New prototype.
1721         * passes.c: Remove pass_may_alias from the passes.
1722         (execute_function_todo): Support TODO_rebuild_alias.    
1723
1724 2007-08-14  Kai Tietz  <kai.tietz@onevision.com>
1725
1726         * i386.c: (legitimize_address): Move dllimported variable check
1727         infront of legitimizing pic address of CONST symbols.
1728
1729 2007-08-14  Steve Ellcey  <sje@cup.hp.com>
1730
1731         PR tree-optimization/32941
1732         * tree-eh.c (struct leh_tf_state): Add goto_queue_map field.
1733         (goto_queue_cmp): Remove.
1734         (find_goto_replacement): Change search method.
1735         (maybe_record_in_goto_queue): Add assert.
1736         (lower_try_finally): Remove qsort call, add pointer_map_destroy call.
1737         * Makefile.in (tree-eh.o): Add pointer-set.h dependency.
1738
1739 2007-08-14  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
1740
1741         * alias.c (component_uses_parent_alias_set): Constify.
1742         * alias.h (component_uses_parent_alias_set): Likewise.
1743         * cfgrtl.c (print_rtl_with_bb): Likewise.
1744         * double-int.c (tree_to_double_int, double_int_fits_to_tree_p,
1745         mpz_get_double_int): Likewise.
1746         * double-int.h (double_int_fits_to_tree_p, tree_to_double_int,
1747         mpz_get_double_int): Likewise.
1748         * expr.c (is_aligning_offset, undefined_operand_subword_p,
1749         mostly_zeros_p, all_zeros_p, safe_from_p, is_aligning_offset):
1750         Likewise.
1751         * expr.h (safe_from_p): Likewise.
1752         * gimple-low.c (try_catch_may_fallthru, block_may_fallthru):
1753         Likewise.
1754         * gimplify.c (should_carry_locus_p, zero_sized_field_decl,
1755         zero_sized_type, goa_lhs_expr_p): Likewise.
1756         * omp-low.c (is_variable_sized, use_pointer_for_field): Likewise.
1757         * rtl.h (print_rtl_with_bb): Likewise.
1758         * sched-vis.c (print_exp, print_value, print_pattern): Likewise.
1759         * tree-cfg.c (const_first_stmt, const_last_stmt): New.
1760         * tree-flow-inline.h (bb_stmt_list): Constify.
1761         (cbsi_start, cbsi_last, cbsi_end_p, cbsi_next, cbsi_prev,
1762         cbsi_stmt): New.
1763         * tree-flow.h (const_block_stmt_iterator, cbsi_start, cbsi_last,
1764         const_first_stmt, const_last_stmt): New.
1765         (block_may_fallthru, empty_block_p): Constify.
1766         * tree-iterator.c (EXPR_FIRST_BODY, EXPR_LAST_BODY,
1767         EXPR_ONLY_BODY): New.
1768         (expr_first, expr_last, expr_only): Use macro for body.
1769         (const_expr_first, const_expr_last, const_expr_only): New.
1770         * tree-iterator.h (const_tree_stmt_iterator, ctsi_start,
1771         ctsi_last, ctsi_end_p, ctsi_one_before_end_p, ctsi_next,
1772         ctsi_prev, ctsi_stmt): New.
1773         * tree-scalar-evolution.c (get_loop_exit_condition): Constify.
1774         * tree-scalar-evolution.h (get_loop_exit_condition): Likewise.
1775         * tree-ssa-loop-niter.c (loop_only_exit_p,
1776         derive_constant_upper_bound): Likewise.
1777         * tree-ssa-phiopt.c (empty_block_p): Likewise.
1778         * tree-ssa-threadupdate.c (redirection_block_p): Likewise.
1779         * tree-vectorizer.c (slpeel_can_duplicate_loop_p): Likewise.
1780         * tree-vectorizer.h (slpeel_can_duplicate_loop_p): Likewise.
1781         * tree-vrp.c (vrp_bitmap_equal_p): Likewise.
1782         * tree.c (get_type_static_bounds): Likewise.
1783         * tree.h (const_expr_first, const_expr_last, const_expr_only): New.
1784         (get_type_static_bounds): Constify.
1785
1786 2007-08-14  Rask Ingemann Lambertsen  <rask@sygehus.dk>
1787
1788         PR target/30315
1789         * config/i386/i386.h (CANONICALIZE_COMPARISON): New.
1790         * config/i386/i386.md (plusminus)(addsub)(SWI): New.
1791         (*<addsub><mode>3_cc_overflow): New.
1792         (*add<mode>3_cconly_overflow): New.
1793         (*sub<mode>3_cconly_overflow): New.
1794         (*<addsub>si3_zext_cc_overflow): New.
1795         * config/i386/predicates.md (fcmov_comparison_operator): Accept
1796         CCCmode for LTU, GTU, LEU and GEU.
1797         (ix86_comparison_operator): Likewise.
1798         (ix86_carry_flag_operator): Carry flag is set if LTU or GTU in CCCmode.
1799         * config/i386/i386.c (put_condition_code): Support CCCmode.
1800         (ix86_cc_mode): Use CCCmode when testing for overflow of PLUS
1801         or MINUS expressions.
1802
1803 2007-08-14  Andrew Pinski  <pinskia@gmail.com>
1804
1805         PR c/30428
1806         * c-typeck.c (build_binary_op): Disallow vector float types with
1807         BIT_IOR_EXPR, BIT_AND_EXPR, and BIT_XOR_EXPR.
1808
1809 2007-08-14  Maxim Kuvyrkov  <maxim@codesourcery.com>
1810
1811         * sched-int.h (struct _dep): Rename field 'kind' to 'type'.
1812         (DEP_KIND): Rename to DEP_TYPE.  Update all uses.
1813         (dep_def): New typedef.
1814         (init_dep_1, sd_debug_dep): Declare functions.
1815         (DEP_LINK_KIND): Rename to DEP_LINK_TYPE.
1816         (debug_dep_links): Remove.
1817         (struct _deps_list): New field 'n_links'.
1818         (DEPS_LIST_N_LINKS): New macro.
1819         (FOR_EACH_DEP_LINK): Remove.
1820         (create_deps_list, free_deps_list, delete_deps_list): Remove
1821         declaration.
1822         (deps_list_empty_p, debug_deps_list, add_back_dep_to_deps_list): Ditto.
1823         (find_link_by_pro_in_deps_list, find_link_by_con_in_deps_list): Ditto.
1824         (copy_deps_list_change_con, move_dep_link): Ditto.
1825         (struct haifa_insn_data): Split field 'back_deps' into 'hard_back_deps'
1826         and 'spec_back_deps'.  New field 'resolved_forw_deps'.  Remove field
1827         'dep_count'.
1828         (INSN_BACK_DEPS): Remove.
1829         (INSN_HARD_BACK_DEPS, INSN_SPEC_BACK_DEPS, INSN_RESOLVED_FORW_DEPS):
1830         New macros.
1831         (INSN_DEP_COUNT): Remove.
1832         (enum DEPS_ADJUST_RESULT): Add new constant DEP_NODEP.  Fix comments.
1833         (spec_info, haifa_recovery_block_was_added_during_scheduling_p):
1834         Declare global variables.
1835         (deps_pools_are_empty_p, sched_free_deps): Declare functions.
1836         (add_forw_dep, compute_forward_dependences): Remove declarations.
1837         (add_or_update_back_dep, add_or_update_back_forw_dep): Ditto.
1838         (add_back_forw_dep, delete_back_forw_dep): Ditto.
1839         (debug_ds, sched_insn_is_legitimate_for_speculation_p): Declare
1840         functions.
1841         (SD_LIST_NONE, SD_LIST_HARD_BACK, SD_LIST_SPEC_BACK, SD_LIST_FORW):
1842         New constants.
1843         (SD_LIST_RES_BACK, SD_LIST_RES_FORW, SD_LIST_BACK): Ditto.
1844         (sd_list_types_def): New typedef.
1845         (sd_next_list): Declare function.
1846         (struct _sd_iterator): New type.
1847         (sd_iterator_def): New typedef.
1848         (sd_iterator_start, sd_iterator_cond, sd_iterator_next): New inline
1849         functions.
1850         (FOR_EACH_DEP): New cycle wrapper.
1851         (sd_lists_size, sd_lists_empty_p, sd_init_insn, sd_finish_insn):
1852         Declare functions.
1853         (sd_find_dep_between, sd_add_dep, sd_add_or_update_dep): Ditto.
1854         (sd_resolve_dep, sd_copy_back_deps, sd_delete_dep, sd_debug_lists):
1855         Ditto.
1856
1857         * sched-deps.c (init_dep_1): Make global.
1858         (DUMP_DEP_PRO, DUMP_DEP_CON, DUMP_DEP_STATUS, DUMP_DEP_ALL): New
1859         constants.
1860         (dump_dep): New static function.
1861         (dump_dep_flags): New static variable.
1862         (sd_debug_dep): New function.
1863         (add_to_deps_list, remove_from_deps_list): Update 'n_links' field of
1864         the list.
1865         (move_dep_link): Use remove_from_deps_list (), instead of
1866         detach_dep_link ().
1867         (dep_links_consistent_p, dump_dep_links, debug_dep_links): Remove.
1868         (dep_link_is_detached_p): New static function.
1869         (deps_obstack, dl_obstack, dn_obstack): Remove.  Use dn_pool, dl_pool
1870         instead.
1871         (dn_pool, dl_pool): New alloc_pools.
1872         (dn_pool_diff, dl_pool_diff): New static variables.
1873         (create_dep_node, delete_dep_node): New static function.
1874         (create_deps_list): Make it static.  Use alloc_pool 'dl_pool'.
1875         (deps_list_empty_p): Make it static.  Use 'n_links' field.
1876         (deps_pools_are_empty_p): New static function.
1877         (alloc_deps_list, delete_deps_list): Remove.
1878         (dump_deps_list, debug_deps_list, add_back_dep_to_deps_list): Remove.
1879         (find_link_by_pro_in_deps_list, find_link_by_con_in_deps_list): Ditto.
1880         (copy_deps_list_change_con): Remove.  Use sd_copy_back_deps () instead.
1881         (forward_dependency_cache): Remove.
1882         (maybe_add_or_update_back_dep_1, add_or_update_back_dep_1): Remove
1883         'back' from the names.  Change signature to use dep_t instead of
1884         equivalent quad.
1885         (add_back_dep): Ditto.  Make global.
1886         (check_dep_status): Rename to check_dep ().
1887         (sd_next_list, sd_lists_size, sd_lists_empty_p, sd_init_insn):
1888         New functions.
1889         (sd_finish_insn): Ditto.
1890         (sd_find_dep_between_no_cache): New static function.
1891         (sd_find_dep_between): New function.
1892         (ask_dependency_caches, set_dependency_caches): New static functions.
1893         (update_dependency_caches, change_spec_dep_to_hard, update_dep): Ditto.
1894         (add_or_update_dep_1): Separate pieces of functionality into
1895         ask_dependency_caches (), update_dependency_caches (),
1896         change_spec_dep_to_hard (), update_dep ().
1897         (get_back_and_forw_lists): New static function.
1898         (sd_add_dep): Separate setting of dependency caches into
1899         set_dependency_caches ().
1900         (sd_add_or_update_dep, sd_resolve_dep, sd_copy_back_deps):
1901         New functions.
1902         (sd_delete_dep): Ditto.
1903         (DUMP_LISTS_SIZE, DUMP_LISTS_DEPS, DUMP_LISTS_ALL): New constants.
1904         (dump_lists): New static function.
1905         (sd_debug_lists): New debug function.
1906         (delete_all_dependences, fixup_sched_groups): Update to use
1907         sd_* infrastructure.
1908         (sched_analyze_2): Create data-speculative dependency only if
1909         data-speculation is enabled.
1910         (sched_analyze_insn): If insn cannot be speculative, make all its
1911         dependencies non-speculative.
1912         (sched_analyze): Use sd_init_insn ().
1913         (add_forw_dep, compute_forward_dependencies): Remove.
1914         (delete_dep_nodes_in_back_deps): New static function.
1915         (sched_free_deps): New function.
1916         (init_dependency_caches): Init alloc_pools.
1917         (extend_depedency_caches): Update after removing of
1918         forward_dependency_cache.
1919         (free_dependency_caches): Ditto.  Free alloc_pools.
1920         (adjust_add_sorted_back_dep, adjust_back_add_forw_dep): Remove.
1921         (delete_forw_dep, add_or_update_back_dep, add_or_update_back_forw_dep):
1922         Ditto.
1923         (add_back_forw_dep, delete_back_forw_dep): Ditto.
1924         (add_dependence): Use init_dep ().
1925         (get_dep_weak_1): New static function.
1926         (get_dep_weak): Move logic to get_dep_weak_1 ().
1927         (dump_ds): New static function moved from haifa-sched.c:
1928         debug_spec_status ().
1929         (debug_ds): New debug function.
1930         (check_dep_status): Rename to check_dep ().  Update to check whole
1931         dependencies.
1932
1933         * haifa-sched.c (spec_info): Make global.
1934         (added_recovery_block_p): Rename to
1935         'haifa_recovery_block_was_added_during_current_schedule_block_p'.
1936         (haifa_recovery_block_was_added_during_scheduling_p): New variable.
1937         (dep_cost, priority, rank_for_schedule, schedule_insn): Update
1938         to use new interfaces.
1939         (ok_for_early_queue_removal): Ditto.
1940         (schedule_block): Initialize logical uids of insns emitted by the
1941         target.
1942         (sched_init): Initialize new variable.
1943         (fix_inter_tick, try_ready, fix_tick_ready): Update to use new
1944         interfaces.
1945         (extend_global): Initialize insn data.
1946         (init_h_i_d): Remove code that is now handled in sd_init_insn ().
1947         (process_insn_forw_deps_be_in_spec): Change signature.  Update to use
1948         new interfaces.
1949         (add_to_speculative_block): Update to use new interfaces.
1950         (create_recovery_block): Set new variables.
1951         (create_check_block_twin, fix_recovery_deps): Update to use new
1952         interfaces.
1953         (sched_insn_is_legitimate_for_speculation_p): New function.
1954         (speculate_insn): Move checking logic to
1955         sched_insn_is_legitimate_for_speculation_p ().
1956         (sched_remove_insn): Finalize sched-deps information of instruction.
1957         (clear_priorities, add_jump_dependencies): Update to use new
1958         interfaces.
1959         (debug_spec_status): Rename to dump_ds () and move to sched-deps.c.
1960         
1961         * sched-rgn.c (set_spec_fed, find_conditional_protection): Update
1962         to use new interfaces.
1963         (is_conditionally_protected, is_pfree, is_prisky) Ditto.
1964         (new_ready): Try to use control speculation only if it is available.
1965         (add_branch_dependences): Update to use new interfaces.
1966         (compute_block_backward_dependences): Rename to
1967         compute_block_dependences ().  Call
1968         targetm.sched.dependencies_evaluation_hook ().
1969         (free_block_dependencies): New static function.
1970         (debug_dependencies): Update to use new interfaces.
1971         (schedule_region): Remove separate computation of forward dependencies.
1972         Move call of targetm.sched.dependencies_evaluation_hook () to
1973         compute_block_dependences ().  Free dependencies at the end of
1974         scheduling the region.
1975
1976         * sched-ebb.c (earliest_block_with_similiar_load): Update to use
1977         new interfaces.
1978         (add_deps_for_risky_insns): Ditto.
1979         (schedule_ebb): Remove separate computation of forward dependencies.
1980         Free dependencies at the end of scheduling the ebb.
1981
1982         * ddg.c (create_ddg_dependence): Update to use new interfaces.
1983         (build_intra_loop_deps): Ditto.  Remove separate computation of
1984         forward dependencies.  Free sched-deps dependencies.
1985
1986         * config/ia64/ia64.c (ia64_dependencies_evaluation_hook): Update
1987         to use new interfaces.
1988         (ia64_dfa_new_cycle, ia64_gen_check): Ditto.
1989
1990         * config/rs6000/rs6000.c (rs6000_is_costly_dependence): Update to use
1991         new interfaces.
1992         (is_costly_group): Ditto.
1993
1994 2007-08-14  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
1995
1996         * alias.c (rtx_equal_for_memref_p): Constify.
1997         * basic-block.h (const_edge, const_basic_block): New.
1998         (reg_set_to_hard_reg_set, dfs_enumerate_from, single_succ_p,
1999         single_pred_p, single_succ_edge, single_pred_edge, single_succ,
2000         single_pred, maybe_hot_bb_p, probably_cold_bb_p,
2001         probably_never_executed_bb_p, edge_probability_reliable_p,
2002         br_prob_note_reliable_p, forwarder_block_p, flow_nodes_print,
2003         inside_basic_block_p, control_flow_insn_p, dominated_by_p):
2004         Likewise.
2005         * bb-reorder.c (better_edge_p, push_to_next_round_p): Likewise.
2006         * bt-load.c (basic_block_freq, insn_sets_btr_p, can_move_up):
2007         Likewise.
2008         * cfganal.c (flow_active_insn_p, forwarder_block_p,
2009         flow_nodes_print, dfs_enumerate_from): Likewise.
2010         * cfgbuild.c (count_basic_blocks, inside_basic_block_p,
2011         control_flow_insn_p, count_basic_blocks): Likewise.
2012         * cfgloop.c (flow_bb_inside_loop_p, glb_enum_p,
2013         get_loop_body_with_size, loop_exit_edge_p): Likewise.
2014         * cfgloop.h (flow_bb_inside_loop_p, num_loop_insns,
2015         average_num_loop_insns, loop_exit_edge_p,
2016         just_once_each_iteration_p, can_duplicate_loop_p): Likewise.
2017         * cfgloopanal.c (just_once_each_iteration_p, num_loop_insns,
2018         average_num_loop_insns, seq_cost): Likewise.
2019         * cfgloopmanip.c (rpe_enum_p, can_duplicate_loop_p): Likewise.
2020         * dominance.c (dominated_by_p): Likewise.
2021         * emit-rtl.c (validate_subreg): Likewise.
2022         * except.c (can_throw_internal, can_throw_external): Likewise.
2023         * except.h (can_throw_internal, can_throw_external): Likewise.
2024         * gcse.c (gcse_constant_p, oprs_unchanged_p, oprs_anticipatable_p,
2025         oprs_available_p, hash_expr, expr_equiv_p, oprs_not_set_p,
2026         compute_transp, load_killed_in_block_p, reg_killed_on_edge,
2027         simple_mem, store_ops_ok, load_kills_store, find_loads,
2028         store_killed_in_insn, store_killed_after, store_killed_before,
2029         gcse_mem_operand, implicit_set_cond_p, store_killed_in_pat):
2030         Likewise.
2031         * ifcvt.c (count_bb_insns, cheap_bb_rtx_cost_p, noce_operand_ok,
2032         noce_mem_write_may_trap_or_fault_p): Likewise.
2033         * pointer-set.c (pointer_set_contains, pointer_map_contains):
2034         Likewise.
2035         * pointer-set.h (pointer_set_contains, pointer_map_contains):
2036         Likewise.
2037         * predict.c (can_predict_insn_p, maybe_hot_bb_p,
2038         probably_cold_bb_p, probably_never_executed_bb_p,
2039         edge_probability_reliable_p, br_prob_note_reliable_p,
2040         can_predict_insn_p): Likewise.
2041         * regclass.c (reg_set_to_hard_reg_set): Likewise.
2042         * resource.c (return_insn_p): Likewise.
2043         * rtl.h (reg_set_between_p, reg_set_p, validate_subreg):
2044         Likewise.
2045         * rtlanal.c (reg_set_between_p, reg_set_p): Likewise.
2046         * tracer.c (count_insns, ignore_bb_p, better_p): Likewise.
2047         * tree-cfg.c (verify_gimple_unary_expr, verify_gimple_binary_expr,
2048         verify_gimple_modify_stmt): Likewise.
2049         * tree-chrec.c (is_not_constant_evolution,
2050         is_multivariate_chrec_rec, is_multivariate_chrec,
2051         chrec_contains_symbols, chrec_contains_undetermined,
2052         tree_contains_chrecs, evolution_function_is_affine_multivariate_p,
2053         evolution_function_is_univariate_p, avoid_arithmetics_in_type_p,
2054         eq_evolutions_p, scev_direction): Likewise.
2055         * tree-chrec.h (automatically_generated_chrec_p, tree_is_chrec,
2056         eq_evolutions_p, is_multivariate_chrec, chrec_contains_symbols,
2057         chrec_contains_symbols_defined_in_loop,
2058         chrec_contains_undetermined, tree_contains_chrecs,
2059         evolution_function_is_affine_multivariate_p,
2060         evolution_function_is_univariate_p, chrec_zerop,
2061         evolution_function_is_constant_p, evolution_function_is_affine_p,
2062         evolution_function_is_affine_or_constant_p,
2063         tree_does_not_contain_chrecs, chrec_type): Likewise.
2064         * tree-data-ref.c (tree_fold_divides_p,
2065         object_address_invariant_in_loop_p, dr_may_alias_p,
2066         ziv_subscript_p, siv_subscript_p, gcd_of_steps_may_divide_p,
2067         same_access_functions, constant_access_functions,
2068         access_functions_are_affine_or_constant_p, find_vertex_for_stmt):
2069         Likewise.
2070         * tree-flow.h (scev_direction): Likewise.
2071         * tree-gimple.c (is_gimple_stmt): Likewise.
2072         * tree-outof-ssa.c (identical_copies_p, identical_stmt_lists_p):
2073         Likewise.
2074         * tree-pretty-print.c (op_prio): Likewise.
2075         * tree-scalar-evolution.c (chrec_contains_symbols_defined_in_loop,
2076         analyzable_condition, backedge_phi_arg_p): Likewise.
2077         * tree-scalar-evolution.h (get_chrec_loop): Likewise.
2078         * tree-ssa-operands.c (get_name_decl, operand_build_cmp): Likewise.
2079         * tree-ssa-threadupdate.c (dbds_continue_enumeration_p):
2080         Likewise.
2081
2082 2007-08-13  Dan Hipschman  <dsh@google.com>
2083
2084         PR c/32953
2085         * c-format.c (check_format_arg): Move check for zero-length
2086         format strings below the check for unterminated strings.
2087
2088 2007-08-13  Andrew Pinski  <pinskia@gmail.com>
2089
2090         PR C/30427
2091         * c-typeck.c (build_unary_op <case BIT_NOT_EXPR>): Reject vector float
2092         types.
2093
2094 2007-08-13  Nick Clifton  <nickc@redhat.com>
2095
2096         * config/arm/arm_neon.h: Revert GPLv3 patch to this file.
2097
2098 2007-08-12  Francois-Xavier Coudert  <fxcoudert@gcc.gnu.org>
2099
2100         PR fortran/32860
2101         * c-format.c (gcc_gfc_length_specs): New array.
2102         (gcc_gfc_char_table): Add unsigned specifier, and references to
2103         the l length modifier.
2104         (format_types_orig): Use the new gcc_gfc_length_specs.
2105
2106 2007-08-12  Sa Liu  <saliu@de.ibm.com>
2107
2108         * emit-rtl.c (try_split): Relink the insns with REG_LIBCALL note
2109         and with REG_RETVAL note after split.
2110
2111 2007-08-11  David Daney  <ddaney@avtrex.com>
2112
2113         * config/mips/mips.c (mips_sched_reorder):  Mark cycle parameter
2114         as ATTRIBUTE_UNUSED.
2115
2116 2007-08-11  David Edelsohn  <edelsohn@gnu.org>
2117             Segher Boessenkool  <segher@kernel.crashing.org>
2118
2119         * config/rs6000/rs6000.h (CC1_CPU_SPEC): Define as empty string if
2120         HAVE_LOCAL_CPU_DETECT not defined.
2121
2122 2007-08-11  Jan Hubicka  <jh@suse.cz>
2123
2124         * cgraphunit.c (record_cdtor_fn): Declare all cdtors always inlined.
2125         (cgraph_process_new_functions): Honor previous value of
2126         disregard_inline_limits.
2127         * ipa-inline.c (compute_inline_parameters): Likewise.
2128
2129 2007-08-11  Ian Lance Taylor  <iant@google.com>
2130
2131         * alias.h (alias_set_type): Define new type.
2132         (ALIAS_SET_MEMORY_BARRIER): Use it.
2133         * rtl.h: Include alias.h.
2134         (struct mem_attrs): Use alias_set_type.
2135         * tree.h: Include alias.h
2136         (struct tree_type): Use alias_set_type.
2137         (struct tree_struct_field_tag): Likewise.
2138         (struct tree_decl_common): Likewise.
2139         * alias.c (struct alias_set_entry): Use alias_set_type.
2140         (get_alias_set_entry, alias_set_subset_of): Likewise.
2141         (alias_sets_conflict_p): Likewise.
2142         (alias_sets_must_conflict_p): Likewise.
2143         (objects_must_conflict_p): Likewise.
2144         (get_alias_set, new_alias_set): Likewise.
2145         (record_alias_subset, record_component_aliases): Likewise.
2146         (varargs_set, frame_set): Change to alias_set_type.
2147         (get_varargs_alias_set): Use alias_set_type.
2148         (get_frame_alias_set): Likewise.
2149         * builtins.c (setjmp_alias_set): Change to alias_set_type.
2150         * dse.c (struct store_info): Use alias_set_type.
2151         (struct read_info, struct clear_alias_mode_holder): Likewise.
2152         (clear_alias_set_lookup, canon_address): Likewise.
2153         (record_store, check_mem_read_rtx): Likewise.
2154         (dse_record_singleton_alias_set): Likewise.
2155         (dse_invalidate_singleton_alias_set): Likewise.
2156         * emit-rtl.c (get_mem_attrs): Likewise.
2157         (set_mem_attributes_minus_bitpos): Likewise.
2158         (set_mem_alias_set): Likewise.
2159         * expr.c (store_constructor_field, store_field): Likewise.
2160         * gimplify.c (struct gimplify_init_ctor_preeval_data): Likewise.
2161         * langhooks.c (lhd_get_alias_set): Likewise.
2162         * langhooks-def.h (lhd_get_alias_set): Likewise.
2163         * reload1.c (alter_reg): Likewise.
2164         * tree-flow.h (struct fieldoff): Likewise.
2165         * tree-ssa-alias.c (struct alias_map_d): Likewise.
2166         (may_alias_p, get_smt_for, create_sft): Likewise.
2167         * tree-ssa-alias-warnings.c (nonstandard_alias_types_p): Likewise.
2168         * tree-ssa-structalias.c (set_uids_in_ptset): Likewise.
2169         (merge_smts_into): Likewise.
2170         * varasm.c (const_alias_set): Likewise.
2171         * c-common.c (strict_aliasing_warning): Likewise.
2172         (c_common_get_alias_set): Likewise.
2173         * dse.h (dse_record_singleton_alias_set): Update declaration.
2174         (dse_invalidate_singleton_alias_set): Likewise.
2175         * emit-rtl.h (set_mem_alias_set): Likewise.
2176         * c-common.h (c_common_get_alias_set): Likewise.
2177         * print-rtl.c (print_rtx): Cast MEM_ALIAS_SET when printing it.
2178         * print-tree.c (print_node): Likewise.
2179         * config/alpha/alpha.c (alpha_sr_alias_set): Change to
2180         alias_set_type.
2181         (alpha_setup_incoming_varargs): Use alias_set_type.
2182         * config/i386/i386.c (setup_incoming_varargs_64): Use
2183         alias_set_type.
2184         (setup_incoming_varargs_ms_64): Likewise.
2185         (ix86_GOT_alias_set): Likewise.
2186         * config/mn10300/mn10300.c (mn10300_builtin_saveregs): Likewise.
2187         * config/rs6000/rs6000.c (setup_incoming_varargs): Likewise.
2188         (set): Change to alias_set_type.
2189         (get_TOC_alias_set): Use alias_set_type.
2190         * config/rs6000/rs6000-protos.h (get_TOC_alias_set): Update
2191         declaration.
2192         * config/sh/sh.c (sh_builtin_saveregs): Use alias_set_type.
2193         * config/sparc/sparc.c (sparc_sr_alias_set): Change to
2194         alias_set_type.
2195         (struct_value_alias_set): Likewise.
2196         * Makefile.in (GTFILES): Add $(srcdir)/alias.h.
2197
2198 2007-08-11  Richard Sandiford  <richard@codesourcery.com>
2199
2200         * config/vxworks-dummy.h (TARGET_VXWORKS): Define.
2201         * config/vxworks.h (TARGET_VXWORKS): Override.
2202         * config/mips/mips.h (TARGET_CPU_CPP_BUILTINS): Don't define
2203         "mips" if TARGET_VXWORKS.
2204
2205 2007-08-11  Richard Sandiford  <richard@codesourcery.com>
2206
2207         * calls.c (avoid_likely_spilled_reg): New function.
2208         (expand_call): Use it.
2209
2210 2007-08-11  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
2211
2212         * c-typeck.c (build_c_cast): Add OPT_Wcast_qual to warnings.
2213
2214 2007-08-10  Adam Nemet  <anemet@caviumnetworks.com>
2215
2216         * config/mips/predicates.md (const_call_insn_operand): Invoke
2217         SYMBOL_REF_LONG_CALL_P only on SYMBOL_REFs.
2218
2219 2007-08-10  David Edelsohn  <edelsohn@gnu.org>
2220
2221         PR target/33042
2222         * config/rs6000/driver-rs6000.c: Include link.h.
2223         Use ElfW instead of wordsize-specif typedef.
2224
2225 2007-08-10  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
2226
2227         * system.h (CONST_CAST): New.
2228         * c-decl.c (c_make_fname_decl): Use it.
2229         * c-lex.c (cb_ident, lex_string): Likewise.
2230         * c-typeck.c (free_all_tagged_tu_seen_up_to): Likewise.
2231         * gcc.c (set_spec, read_specs, for_each_path, execute, do_spec_1,
2232         give_switch, set_multilib_dir): Likewise.
2233         * gengtype-parse.c (string_seq, typedef_name): Likewise.
2234         * passes.c (execute_one_pass): Likewise.
2235         * prefix.c (update_path): Likewise.
2236         * pretty-print.c (pp_base_destroy_prefix): Likewise.
2237         * tree.c (build_string): Likewise.
2238
2239 2007-08-10  Aldy Hernandez  <aldyh@redhat.com>
2240
2241         * tree-flow-inline.h (is_exec_stmt): Remove.
2242         (is_label_stmt): Remove.
2243         * tree-flow.h: Remove prototypes for is_exec_stmt, get_filename, and
2244         is_label_stmt.
2245
2246 2007-08-10  Andreas Krebbel  <krebbel1@de.ibm.com>
2247
2248         * lower-subreg.c (resolve_shift_zext): Don't adjust
2249         src_reg_num for wordmode operands.
2250
2251 2007-08-10  Sandra Loosemore  <sandra@codesourcery.com>
2252             David Ung  <davidu@mips.com>
2253
2254         * config/mips/mips.c (TARGET_SCHED_INIT): Define.
2255         (TARGET_SCHED_REORDER2): Define.
2256         (mips_maybe_swap_ready): New.
2257         (mips_last_74k_agen_insn): New.
2258         (mips_74k_agen_init): New.
2259         (mips_74k_agen_reorder): New function to group loads and stores
2260         in the ready queue.
2261         (mips_sched_init): New.  
2262         (mips_sched_reorder): Don't do initialization here.  Call
2263         mips_74k_agen_reorder.
2264         (mips_variable_issue): Call mips_74k_agen_init.
2265
2266 2007-08-10  Aldy Hernandez  <aldyh@redhat.com>
2267
2268         * tree-flow-inline.h (get_filename): Remove.
2269
2270 2007-08-10  Richard Sandiford  <richard@codesourcery.com>
2271
2272         * config/mips/mips-protos.h (mips_address_insns): Add a boolean
2273         argument.
2274         (mips_fetch_insns): Delete in favor of...
2275         (mips_load_store_insns): ...this new function.
2276         * config/mips/mips.c (mips_address_insns): Add a boolean argument
2277         to say whether multiword moves _might_ be split.
2278         (mips_fetch_insns): Delete in favor of...
2279         (mips_load_store_insns): ...this new function.
2280         (mips_rtx_costs): Update the call to mips_address_insns.
2281         (mips_address_cost): Likewise.
2282         * config/mips/mips.md (length): Use mips_load_store_insns instead
2283         of mips_fetch_insns.
2284         * config/mips/constraints.md (R): Use mips_address_insns rather
2285         than mips_fetch_insns.  Assume that the move never needs to be split.
2286
2287 2007-08-09  Sandra Loosemore  <sandra@codesourcery.com>
2288
2289         * config/mips/mips.opt (mhard-float, msoft-float):  Make these
2290         control TARGET_HARD_FLOAT_ABI and TARGET_SOFT_FLOAT_ABI, rather
2291         than TARGET_HARD_FLOAT and TARGET_SOFT_FLOAT.  
2292         * config/mips/mips.h (mips16_hard_float): Delete.
2293         (TARGET_HARD_FLOAT_ABI, TARGET_SOFT_FLOAT_ABI):  Delete these
2294         definitions, and replace with....
2295         (TARGET_HARD_FLOAT, TARGET_SOFT_FLOAT): Define.
2296         * config/mips/mips.c (mips16_hard_float): Delete.  Replace
2297         all references with (TARGET_MIPS16 && TARGET_HARD_FLOAT_ABI).
2298         (MIPS_MARCH_CONTROLS_SOFT_FLOAT): Update comments.
2299         (override_options):  Replace MASK_SOFT_FLOAT references with
2300         MASK_SOFT_FLOAT_ABI.  Delete twiddling with MASK_SOFT_FLOAT
2301         and mips16_hard_float when TARGET_MIPS16.
2302         
2303 2007-08-09  Andrew Pinski  <andrew_pinski@playstation.sony.com>
2304
2305         PR c/32796
2306         * c-typeck.c (build_binary_op): Check for non pointer types before
2307         calling int_fits_type_p.
2308
2309 2007-08-09  Andrew Pinski  <andrew_pinski@playstation.sony.com>
2310
2311         PR middle-end/32813
2312         * fold-const.c (omit_one_operand): Return only the ommitted expression
2313         if the result is an empty statement.
2314         (pedantic_omit_one_operand): Likewise.
2315
2316 2007-08-09  Daniel Berlin  <dberlin@dberlin.org>
2317
2318         * c-typeck.c (readonly_error): Improve error for assignment.
2319         
2320         * c-pretty-print.c (pp_c_additive_expression): Handle pointer-plus
2321         expression. 
2322         (pp_c_expression): Ditto.
2323
2324 2007-08-09  Simon Baldwin  <simonb@google.com>
2325
2326         * simplify-rtx.c (simplify_binary_operation_1): Removed erroneous
2327         break that was preventing simplify_associative_operation() for xor.
2328
2329 2007-08-09  Sandra Loosemore  <sandra@codesourcery.com>
2330             Nigel Stephens  <nigel@mips.com>
2331
2332         * doc/tm.texi (CLZ_DEFINED_VALUE_AT_ZERO, CTZ_DEFINED_VALUE_AT_ZERO):
2333         Document change in interpretation of value from boolean to
2334         tri-state integer.
2335         * optabs.c (expand_ffs, expand_ctz): New functions to compute
2336         ffs and ctz using clz.
2337         (expand_unop):  Call them.
2338         * config/rs6000/rs6000.h (CLZ_DEFINED_VALUE_AT_ZERO): Fix its
2339         result value.
2340         (CTZ_DEFINED_VALUE_AT_ZERO): Likewise.
2341         * config/mips/mips.h (CLZ_DEFINED_VALUE_AT_ZERO): Likewise, to
2342         enable the new ffs expansion on this target.
2343
2344 2007-08-09  Jan Hubicka  <jh@suse.cz>
2345
2346         * optabs.c (expand_widen_pattern_expr): Use optabs accestors.
2347         (expand_ternary_op): Likewise.
2348         (expand_vec_shift_expr): Likewise.
2349         (expand_binop_directly): Likewise.
2350         (expand_binop): Likewise.
2351         (sign_expand_binop): Likewise.
2352         (expand_twoval_unop): Likewise.
2353         (expand_twoval_binop): Likewise.
2354         (expand_twoval_binop_libfunc): Likewise.
2355         (widen_clz): Likewise.
2356         (widen_bswap): Likewise.
2357         (expand_parity): Likewise.
2358         (expand_unop): Likewise.
2359         (expand_abs_nojump): Likewise.
2360         (expand_copysign): Likewise.
2361         (emit_no_conflict_block): Likewise.
2362         (emit_libcall_block): Likewise.
2363         (can_compare_p): Likewise.
2364         (prepare_cmp_insn): Likewise.
2365         (emit_cmp_and_jump_insn_1): Likewise.
2366         (prepare_float_lib_cmp): Likewise.
2367         (emit_conditional_add): Likewise.
2368         (gen_add2_insn): Likewise.
2369         (have_add2_insn): Likewise.
2370         (gen_sub2_insn): Likewise.
2371         (have_sub2_insn): Likewise.
2372         (can_extend_p): Likewise.
2373         (can_fix_p): Likewise.
2374         (can_float_p): Likewise.
2375         (expand_float): Likewise.
2376         (expand_fix): Likewise.
2377         (expand_sfix_optab): Likewise.
2378         (new_optab): Likewise.
2379         (new_convert_optab): Likewise.
2380         (init_libfuncs): Likewise.
2381         (init_interclass_conv_libfuncs): Likewise.
2382         (init_intraclass_conv_libfuncs): Likewise.
2383         (set_conv_libfunc): Likewise.
2384         (init_optabs): Likewise.
2385         (debug_optab_libfuncs): Likewise.
2386         (gen_cond_trap): Likewise.
2387         * optabs.h (optab_handler, convert_optab_hanlder): New.
2388         * genopinit.c: Update optabs generation table.
2389         * reload.c (find_reloads_address_1): Use optabs accestors.
2390         * builtins.c (expand_builtin_mathfn): Likewise.
2391         (expand_builtin_mathfn_2): Likewise.
2392         (expand_builtin_mathfn_3): Likewise.
2393         (expand_builtin_interclass_mathfn): Likewise.
2394         (expand_builtin_sincos): Likewise.
2395         (expand_builtin_cexpi): Likewise.
2396         (expand_builtin_powi): Likewise.
2397         (expand_builtin_strlen): Likewise.
2398         * dojump.c (do_jump): Likewise.
2399         * expr.c (convert_move): Likewise.
2400         (move_by_pieces): Likewise.
2401         (move_by_pieces_ninsns): Likewise.
2402         (can_store_by_pieces): Likewise.
2403         (store_by_pieces_1): Likewise.
2404         (emit_move_via_integer): Likewise.
2405         (emit_move_complex): Likewise.
2406         (emit_move_ccmode): Likewise.
2407         (emit_move_insn_1): Likewise.
2408         (emit_single_push_insn): Likewise.
2409         (store_constructor): Likewise.
2410         (expand_expr_real_1): Likewise.
2411         (do_store_flag): Likewise.
2412         * ada/misc.c (gnat_compute_largest_alignment): Likewise.
2413         (enumerate_modes): Likewise.
2414         * tree-vectorizer.c (vect_supportable_dr_alignment): Likewise.
2415         (supportable_widening_operation): Likewise.
2416         (supportable_narrowing_operation): Likewise.
2417         * expmed.c (store_bit_field_1): Likewise.
2418         (extract_bit_field_1): Likewise.
2419         (expand_mult_highpart_optab): Likewise.
2420         (expand_smod_pow2): Likewise.
2421         (expand_divmod): Likewise.
2422         (emit_store_flag): Likewise.
2423         * tree-vect-patterns.c
2424         (vect_pattern_recog_1): Likewise.
2425         * tree-ssa-loop-prefetch.c
2426         (nontemporal_store_p): Likewise.
2427         * tree-vect-transform.c (vect_model_reduction_cost): Likewise.
2428         (vect_create_epilog_for_reduction): Likewise.
2429         (vectorizable_reduction): Likewise.
2430         (vectorizable_operation): Likewise.
2431         (vect_strided_store_supported): Likewise.
2432         (vectorizable_store): Likewise.
2433         (vect_strided_load_supported): Likewise.
2434         (vectorizable_load): Likewise.
2435         * combine.c (simplify_comparison): Likewise.
2436         * tree-vect-generic.c
2437         (type_for_widest_vector_mode): Likewise.
2438         (expand_vector_operations_1): Likewise.
2439         * config/spu/spu.c (spu_expand_mov): Likewise.
2440         (spu_emit_vector_compare): Likewise.
2441         * config/rs6000/rs6000.c
2442         (rs6000_emit_vector_compare): Likewise.
2443         * stmt.c (add_case_node): Likewise.
2444         * reload1.c (gen_reload):
2445
2446 2007-08-09  Michael Matz  <matz@suse.de>
2447
2448         * tree.h (fixed_zerop): Declare as taking a const_tree.
2449         * tree.c (fixed_zerop): Take a const_tree.
2450
2451 2007-08-09  Ira Rosen  <irar@il.ibm.com>
2452
2453         * tree-vect-transform.c (vectorizable_store): Remove call to
2454         copy_virtual_operands() and call mark_symbols_for_renaming() for
2455         the created vector store.
2456         (vect_setup_realignment): Don't call copy_virtual_operands() and
2457         update_vuses_to_preheader(). 
2458         (vectorizable_load): Don't call copy_virtual_operands(). 
2459         (update_vuses_to_preheader): Remove.
2460
2461 2007-08-08  Chao-ying Fu  <fu@mips.com>
2462
2463         * tree.def (FIXED_POINT_TYPE): New type.
2464         (FIXED_CST): New constant.
2465         (FIXED_CONVERT_EXPR): New expr.
2466         * doc/c-tree.texi (Types): Document FIXED_POINT_TYPE.
2467         (Expressions): Document FIXED_CST and FIXED_CONVERT_EXPR.
2468         * tree.h (struct tree_base): Add saturating_flag.
2469         Remove one bit of spare for saturating_flag.
2470         (NUMERICAL_TYPE_CHECK): Support FIXED_POINT_TYPE.
2471         (NON_SAT_FIXED_POINT_TYPE_P, SAT_FIXED_POINT_TYPE_P,
2472         FIXED_POINT_TYPE_P): Define.
2473         (TYPE_SATURATING): Define.
2474         (TREE_FIXED_CST_PTR, TREE_FIXED_CST): Define.
2475         (struct tree_fixed_cst): New.
2476         (TYPE_IBIT, TYPE_FBIT): Define.
2477         (tree_node): Add fixed_cst.
2478         (enum tree_index): Add new enumeration values of
2479         TI_SAT_SFRACT_TYPE, TI_SAT_FRACT_TYPE, TI_SAT_LFRACT_TYPE,
2480         TI_SAT_LLFRACT_TYPE, TI_SAT_USFRACT_TYPE, TI_SAT_UFRACT_TYPE,
2481         TI_SAT_ULFRACT_TYPE, TI_SAT_ULLFRACT_TYPE, TI_SFRACT_TYPE,
2482         TI_FRACT_TYPE, TI_LFRACT_TYPE, TI_LLFRACT_TYPE, TI_USFRACT_TYPE,
2483         TI_UFRACT_TYPE, TI_ULFRACT_TYPE, TI_ULLFRACT_TYPE,
2484         TI_SAT_SACCUM_TYPE, TI_SAT_ACCUM_TYPE, TI_SAT_LACCUM_TYPE,
2485         TI_SAT_LLACCUM_TYPE, TI_SAT_USACCUM_TYPE, TI_SAT_UACCUM_TYPE,
2486         TI_SAT_ULACCUM_TYPE, TI_SAT_ULLACCUM_TYPE, TI_SACCUM_TYPE,
2487         TI_ACCUM_TYPE, TI_LACCUM_TYPE, TI_LLACCUM_TYPE, TI_USACCUM_TYPE,
2488         TI_UACCUM_TYPE, TI_ULACCUM_TYPE, TI_ULLACCUM_TYPE,
2489         TI_QQ_TYPE, TI_HQ_TYPE,_TYPE, TI_SQ_TYPE, TI_DQ_TYPE, TI_TQ_TYPE,
2490         TI_UQQ_TYPE, TI_UHQ_TYPE, TI_USQ_TYPE, TI_UDQ_TYPE, TI_UTQ_TYPE,
2491         TI_SAT_QQ_TYPE, TI_SAT_HQ_TYPE, TI_SAT_SQ_TYPE, TI_SAT_DQ_TYPE,
2492         TI_SAT_TQ_TYPE, TI_SAT_UQQ_TYPE, TI_SAT_UHQ_TYPE, TI_SAT_USQ_TYPE,
2493         TI_SAT_UDQ_TYPE, TI_SAT_UTQ_TYPE, TI_HA_TYPE, TI_SA_TYPE, TI_DA_TYPE,
2494         TI_TA_TYPE, TI_UHA_TYPE, TI_USA_TYPE, TI_UDA_TYPE, TI_UTA_TYPE,
2495         TI_SAT_HA_TYPE, TI_SAT_SA_TYPE, TI_SAT_DA_TYPE, TI_SAT_TA_TYPE,
2496         TI_SAT_UHA_TYPE, TI_SAT_USA_TYPE, TI_SAT_UDA_TYPE, TI_SAT_UTA_TYPE.
2497         (sat_short_fract_type_node, sat_fract_type_node,
2498         sat_long_fract_type_node, sat_long_long_fract_type_node,
2499         sat_unsigned_short_fract_type_node, sat_unsigned_fract_type_node,
2500         sat_unsigned_long_fract_type_node,
2501         sat_unsigned_long_long_fract_type_node, short_fract_type_node,
2502         fract_type_node, long_fract_type_node, long_long_fract_type_node,
2503         unsigned_short_fract_type_node, unsigned_fract_type_node,
2504         unsigned_long_fract_type_node, unsigned_long_long_fract_type_node,
2505         sat_short_accum_type_node, sat_accum_type_node,
2506         sat_long_accum_type_node, sat_long_long_accum_type_node,
2507         sat_unsigned_short_accum_type_node, sat_unsigned_accum_type_node,
2508         sat_unsigned_long_accum_type_node,
2509         sat_unsigned_long_long_accum_type_node, short_accum_type_node,
2510         accum_type_node, long_accum_type_node, long_long_accum_type_node,
2511         unsigned_short_accum_type_node, unsigned_accum_type_node,
2512         unsigned_long_accum_type_node, unsigned_long_long_accum_type_node,
2513         qq_type_node, hq_type_node, sq_type_node, dq_type_node, tq_type_node,
2514         uqq_type_node, uhq_type_node, usq_type_node, udq_type_node,
2515         utq_type_node, sat_qq_type_node, sat_hq_type_node, sat_sq_type_node,
2516         sat_dq_type_node, sat_tq_type_node, sat_uqq_type_node,
2517         sat_uhq_type_node, sat_usq_type_node, sat_udq_type_node,
2518         sat_utq_type_node, ha_type_node, sa_type_node, da_type_node,
2519         ta_type_node, uha_type_node, usa_type_node, uda_type_node,
2520         uta_type_node, sat_ha_type_node, sat_sa_type_node, sat_da_type_node,
2521         sat_ta_type_node, sat_uha_type_node, sat_usa_type_node,
2522         sat_uda_type_node, sat_uta_type_node): New macro.
2523         (make_fract_type, make_accum_type): Declare.
2524         (make_signed_fract_type, make_unsigned_fract_type,
2525         make_sat_signed_fract_type, make_sat_unsigned_fract_type,
2526         make_signed_accum_type, make_unsigned_accum_type,
2527         make_sat_signed_accum_type, make_sat_unsigned_accum_type,
2528         make_or_reuse_signed_fract_type, make_or_reuse_unsigned_fract_type,
2529         make_or_reuse_sat_signed_fract_type,
2530         make_or_reuse_sat_unsigned_fract_type, make_or_reuse_signed_accum_type,
2531         make_or_reuse_unsigned_accum_type, make_or_reuse_sat_signed_accum_type,
2532         make_or_reuse_sat_unsigned_accum_type): New macro.
2533         (fixed_zerop): Declare.
2534         * defaults.h (SHORT_FRACT_TYPE_SIZE, FRACT_TYPE_SIZE,
2535         LONG_FRACT_TYPE_SIZE, LONG_LONG_FRACT_TYPE_SIZE,
2536         SHORT_ACCUM_TYPE_SIZE, ACCUM_TYPE_SIZE, LONG_ACCUM_TYPE_SIZE,
2537         LONG_LONG_ACCUM_TYPE_SIZE): Define.
2538         * treestruct.def: Add TS_FIXED_CST.
2539         * Makefile.in (c-pretty-print.o): Add dependence on fixed-value.h.
2540         (tree.o): Likewise.
2541         (tree-dump.o): Likewise.
2542         (print-tree.o): Likewise.
2543         (tree-pretty-print.o): Likewise.
2544         (fold-const.o): Likewise.
2545         * tree-complex.c (some_nonzerop): Handle FIXED_CST.
2546         * tree-gimple.c (is_gimple_formal_tmp_rhs): Handle FIXED_CST.
2547         (is_gimple_min_invariant): Handle FIXED_CST.
2548         * stor-layout.c (int_mode_for_mode): Handle MODE_FRACT, MODE_UFRACT,
2549         MODE_ACCUM, MODE_UACCUM, MODE_VECTOR_FRACT, MODE_VECTOR_UFRACT,
2550         MODE_VECTOR_ACCUM, MODE_VECTOR_UACCUM.
2551         (layout_type): Handle FIXED_POINT_TYPE.
2552         (make_fract_type, make_accum_type): New functions.
2553         * tree-browser.c (browse_tree): Handle FIXED_POINT_TYPE.
2554         * tree-dump.c (fixed-value.h): New include.
2555         (dump_fixed): New function.
2556         (dequeue_and_dump): Handle FIXED_POINT_TYPE and FIXED_CST.
2557         * tree-inline.c (remap_type_1): Handle FIXED_POINT_TYPE.
2558         (estimate_num_insns_1): Handle FIXED_CST and FIXED_CONVERT_EXPR.
2559         * tree-pretty-print.c (fixed-value.h): New include.
2560         (dump_generic_node): Handle FIXED_POINT_TYPE, FIXED_CST, and
2561         FIXED_CONVERT_EXPR.
2562         * tree-scalar-evolution.c (get_scalar_evolution): Handle FIXED_CST.
2563         * tree-ssa-loop-im.c (for_each_index): Handle FIXED_CST.
2564         * tree-ssa-pre.c (poolify_tree): Handle FIXED_CST.
2565         * tree-ssa-reassoc.c (break_up_subtract_bb): We can do reassociation
2566         for non-saturating fixed-point types.
2567         (reassociate_bb): Likewise.
2568         * emit-rtl.c (fixed-value.h): New include.
2569         (fconst0, fconst1): New array.
2570         (init_emit_once): Initialize fconst0 and fconst1 for fixed-point modes.
2571         * tree-vect-generic.c expand_vector_operation): Support
2572         MODE_VECTOR_FRACT, MODE_VECTOR_UFRACT, MODE_VECTOR_ACCUM, and
2573         MODE_VECTOR_UACCUM.
2574         (type_for_widest_vector_mode): Add one parameter for the 
2575         saturating flag.
2576         Check scalar FRACT, UFRACT, ACCUM, and UACCUM mode to select their
2577         vector mode.
2578         Pass the satp parameter to type_for_mode for fixed-point types.
2579         (expand_vector_operations_1): Pass the saturating flag to
2580         type_for_widest_vector_mode.
2581         Support MODE_VECTOR_FRACT, MODE_VECTOR_UFRACT, MODE_VECTOR_ACCUM,
2582         and MODE_VECTOR_UACCUM.
2583         * tree-vect-transform.c (vect_is_simple_cond): Support FIXED_CST.
2584         (vectorizable_condition): Likewise.
2585         * tree.c (fixed-value.h): New include.
2586         (tree_code_size): Support FIXED_CST.
2587         (build_fixed): New function.
2588         (build_one_cst): Support FIXED_POINT_TYPE for accum types.
2589         (fixed_zerop): New function.
2590         (tree_node_structure): Support FIXED_CST.
2591         (type_contains_placeholder_1): Support FIXED_POINT_TYPE.
2592         (build_type_attribute_qual_variant): Handle FIXED_POINT_TYPE.
2593         (type_hash_eq): Handle FIXED_POINT_TYPE.
2594         (simple_cst_equal): Support FIXED_CST.
2595         (iterative_hash_expr): Handle FIXED_CST.
2596         (get_unwidened): Make sure type is not FIXED_POINT_TYPE.
2597         (get_narrower): Likewise.
2598         (variably_modified_type_p): Handle FIXED_POINT_TYPE.
2599         (make_or_reuse_fract_type, make_or_reuse_accum_type): New functions.
2600         (build_common_tree_nodes_2): Use MAKE_FIXED_TYPE_NODE_FAMILY and
2601         MAKE_FIXED_MODE_NODE macros to initialize fixed-point type
2602         nodes.
2603         (build_vector_type_for_mode): Handle MODE_VECTOR_FRACT,
2604         MODE_VECTOR_UFRACT, MODE_VECTOR_ACCUM, MODE_VECTOR_UACCUM.
2605         (initializer_zerop): Support FIXED_CST.
2606         (walk_tree): Handle FIXED_CST and FIXED_POINT_TYPE.
2607         * dwarf2out.c (base_type_die): Use DW_ATE_signed_fixed or
2608         DW_ATE_unsigned_fixed to describe FIXED_POINT_TYPE.
2609         (is_base_type): Handle FIXED_POINT_TYPE.
2610         (add_type_attribute): Handle FIXED_POINT_TYPE.
2611         (gen_type_die_with_usage): Handle FIXED_POINT_TYPE.
2612         * print-tree.c (fixed-value.h): New include.
2613         (print_node_brief): Support FIXED_CST.
2614         (print_node): Support FIXED_POINT_TYPE and FIXED_CST.
2615         * c-pretty-print.c (fixed-value.h): New include.
2616         (pp_c_type_specifier): Handle FIXED_POINT_TYPE.  Need to pass
2617         TYPE_SATURATING to c_common_type_for_mode for fixed-point modes.
2618         (pp_c_direct_abstract_declarator): Handle FIXED_POINT_TYPE.
2619         Support fixed-point types for inner items in VECTOR_TYPE.
2620         (pp_c_direct_declarator): Likewise.
2621         (pp_c_declarator): Likewise.
2622         (pp_c_fixed_constant): New function.
2623         (pp_c_constant): Handle FIXED_CST.
2624         (pp_c_primary_expression): Likewise.
2625         (pp_c_expression): Likewise.
2626         * fold-const.c (fixed-value.h): New include.
2627         (negate_expr_p): Return true for FIXED_CST.
2628         (fold_negate_expr): Support FIXED_CST.
2629         (split_tree): Support FIXED_CST.
2630         (const_binop): Support FIXED_CST.
2631         (fold_convert_const_int_from_fixed): New function to convert from
2632         fixed to int.
2633         (fold_convert_const_real_from_fixed): New function to convert from
2634         fixed to real.
2635         (fold_convert_const_fixed_from_fixed): New function to convert from
2636         fixed to another fixed.
2637         (fold_convert_const_fixed_from_int): New function to convert from
2638         int to fixed.
2639         (fold_convert_const_fixed_from_real): New function to convert from
2640         real to fixed.
2641         (fold_convert_const): Support conversions from fixed to int, from
2642         fixed to real, from fixed to fixed, from int to fixed, and from real
2643         to fixed.
2644         (fold_convert): Support FIXED_CST and FIXED_POINT_TYPE.
2645         (operand_equal_p): Support FIXED_CST.
2646         (make_range): For fixed-point modes, we need to pass the
2647         saturating flag as the 2nd parameter.
2648         (tree_swap_operands_p): Handle FIXED_CST.
2649         (fold_plusminus_mult_expr): For fract modes, we cannot generate
2650         constant 1.
2651         (fold_unary): Support FIXED_CONVERT_EXPR.
2652         (fold_binary): Handle FIXED_CST.
2653         Make sure the type is not saturating, before associating operations.
2654         Ex: A + B + C, A * B * C, (A1 * C1) +/- (A2 * C2).
2655         (tree_expr_nonnegative_warnv_p): Handle FIXED_CST.
2656         (fold_negate_const): Support FIXED_CST.
2657         (fold_relational_const): Support FIXED_CST.
2658         * gimplify.c (omp_firstprivatize_type_sizes): Handle FIXED_POINT_TYPE.
2659         (gimplify_expr): Handle FIXED_CST.
2660         (gimplify_type_sizes): Handle FIXED_POINT_TYPE.
2661         * ipa-prop.c (ipa_callsite_compute_param): Support FIXED_CST.
2662         * ipa-type-escape.c (type_to_consider): Handle FIXED_POINT_TYPE.
2663         * doc/tm.texi (Type Layout): Document SHORT_FRACT_TYPE_SIZE,
2664         FRACT_TYPE_SIZE, LONG_FRACT_TYPE_SIZE, LONG_LONG_FRACT_TYPE_SIZE,
2665         SHORT_ACCUM_TYPE_SIZE, ACCUM_TYPE_SIZE, LONG_ACCUM_TYPE_SIZE,
2666         LONG_LONG_ACCUM_TYPE_SIZE.
2667         * dbxout.c (dbxout_type): Handle FIXED_POINT_TYPE.
2668         * c-aux-info.c (gen_type): Handle FIXED_POINT_TYPE.
2669         * tree-sra.c (is_sra_scalar_type): Support FIXED_POINT_TYPE.
2670         * expmed.c (extract_bit_field): Support MODE_FRACT, MODE_UFRACT,
2671         MODE_ACCUM, and MODE_UACCUM.
2672         * tree-vectorizer.c (vect_is_simple_reduction): Check for saturating
2673         fixed-point types to disable reduction.
2674         * explow.c (promote_mode): Support FIXED_POINT_TYPE.
2675
2676 2007-08-08  David Edelsohn  <edelsohn@gnu.org>
2677
2678         * config/rs6000/x-rs6000: New file.
2679         * config/rs6000/darwin.h (CC1_SPEC): Add cc1_cpu.
2680         * config/rs6000/rs6000.h (EXTRA_SPECS): Add cc1_cpu.
2681         (EXTRA_SPEC_FUNCTIONS): Define.
2682         (HAVE_LOCAL_CPU_DETECT): Define.
2683         (CC1_CPU_SPEC): Define.
2684         * config/rs6000/driver-rs6000.c: New file.
2685         * config/rs6000/aix.h (CC1_SPEC): Define.
2686         * config/rs6000/sysv4.h (CC1_SPEC): Add cc1_cpu.
2687         * config.host: Add x-rs6000 to host_xmake_file if host and target
2688         are rs6000 or powerpc.
2689
2690 2007-08-08  Paolo Bonzini <paolo.bonzini@lu.unisi.ch>
2691
2692         * config/i386/t-crtstuff (CRTSTUFF_T_CFLAGS): Use +=.
2693
2694 2007-08-08  Richard Sandiford  <richard@codesourcery.com>
2695             Sandra Loosemore  <sandra@codesourcery.com>
2696             Chao-ying Fu  <fu@mips.com>
2697             Nigel Stephens  <nigel@mips.com>
2698             David Ung  <davidu@mips.com>
2699
2700         * doc/invoke.texi (-mcode-readable): Document.
2701         * config/mips/mips.opt (mcode-readable): New option.
2702         * config/mips/mips-protos.h (SYMBOL_32_HIGH): New symbol type.
2703         * config/mips/mips.h (mips_code_readable_setting): New enum.
2704         (mips_code_readable): Declare.
2705         (TARGET_MIPS16_TEXT_LOADS, TARGET_MIPS16_PCREL_LOADS): New macros.
2706         (TARGET_MIPS16_SHORT_JUMP_TABLES): New macro.
2707         (JUMP_TABLES_IN_TEXT_SECTION): Use it.
2708         (CASE_VECTOR_MODE, CASE_VECTOR_PC_RELATIVE): Likewise.  Remove
2709         boiler-plate comments.
2710         (ASM_OUTPUT_ADDR_DIFF_ELT): Use TARGET_MIPS16_SHORT_JUMP_TABLES.
2711         * config/mips/mips.c (mips_code_readable): New variable.
2712         (mips_classify_symbol): Only return SYMBOL_PC_RELATIVE for
2713         MIPS16 labels if TARGET_MIPS16_SHORT_JUMP_TABLES.  Use both the
2714         context and -mcode-readable setting to restrict the use of
2715         SYMBOL_PC_RELATIVE for MIPS16 constant pool references.
2716         Only return TARGET_FORCE_TO_MEM if PC-relative loads are allowed.
2717         (mips_symbolic_constant_p): Handle SYMBOL_32_HIGH.
2718         (mips_blocks_for_constant_p): Only return false for
2719         TARGET_MIPS16_PCREL_LOADS.
2720         (mips_symbol_insns_1): Treat HIGHs as 2 extended instructions
2721         for MIPS16.  Handle SYMBOL_32_HIGH.
2722         (mips_const_insns): Allow HIGHs for MIPS16 too.
2723         (mips_unspec_address_offset): New function, split out from...
2724         (mips_unspec_address): ...here.
2725         (mips_output_move): Handle MIPS16 HIGH moves.  Use "li" to load
2726         16-bit symbolic constants.  Assert approropiate conditions for
2727         using the "la" and "dla" macros.
2728         (mips_handle_option): Handle -mcode-readable=.
2729         (override_options): Use %hi/%lo relocations for TARGET_MIPS16 too.
2730         Set up mips_lo_relocs[SYMBOL_32_HIGH].
2731         (mips_strip_unspec_address): New function, split out from...
2732         (print_operand_reloc): ...here.
2733         (print_operand): Pass constants through mips_strip_unspec_address.
2734         (print_operand_address): Likewise.
2735         (mips_output_mi_thunk): Remove guard of mips16_lay_out_constants.
2736         (mips_select_rtx_section): Remove MIPS16 handling.
2737         (mips16_gp_pseudo_reg): Check currently_expanding_to_rtl.
2738         (mips16_rewrite_pool_refs): Wrap the labels in an address UNSPEC.
2739         (mips16_lay_out_constants): Do nothing unless
2740         TARGET_MIPS16_PCREL_LOADS.
2741         (mips_avoid_hazards): Remove guard of mips16_lay_out_constants.
2742         * config/mips/mips.md: Split HIGHs for MIPS16.
2743         (tablejump): Use TARGET_MIPS16_SHORT_JUMP_TABLES.
2744
2745 2007-08-08  Richard Sandiford  <richard@codesourcery.com>
2746
2747         * config/mips/mips-protos.h (mips_emit_move): Declare.
2748         * config/mips/mips.c (mips_emit_move): New function.
2749         (mips_force_temporary): Use mips_emit_move instead of emit_move_insn.
2750         (mips_legitimize_const_move): Likewise.
2751         (mips_legitimize_move): Likewise.
2752         (mips_split_64bit_move): Likewise.
2753         (mips_restore_gp): Likewise.
2754         (mips_load_call_address): Likewise.
2755         (mips_emit_fcc_reload): Likewise.
2756         (mips_set_return_address): Likewise.
2757         (mips_block_move_straight): Likewise.
2758         (mips_block_move_loop): Likewise.
2759         (mips_setup_incoming_varargs): Likewise.
2760         (mips_save_reg): Likewise.
2761         (mips_expand_prologue): Likewise.
2762         (mips_restore_reg): Likewise.
2763         (mips_expand_epilogue): Likewise.
2764         (mips_output_mi_thunk): Likewise.
2765         (build_mips16_call_stub): Likewise.
2766         (mips_builtin_branch_and_move): Likewise.
2767         * config/mips/mips.h (INITIALIZE_TRAMPOLINE): Likewise.
2768         * config/mips/mips.md (fixuns_truncdfsi2): Likewise.
2769         (fixuns_truncdfdi2): Likewise.
2770         (fixuns_truncsfsi2): Likewise.
2771         (fixuns_truncsfdi2): Likewise.
2772         (loadgp_absolute): Likewise.
2773         (builtin_setjmp_setup): Likewise.
2774         (builtin_longjmp): Likewise.
2775         (untyped_call): Likewise.
2776
2777 2007-08-08  Richard Sandiford  <richard@codesourcery.com>
2778
2779         * config/mips/mips-protos.h (mips_split_symbol): Add a mode and
2780         an "rtx *" argument.  Return a bool.
2781         * config/mips/mips.c (mips_split_symbol): Accept arbitrary source
2782         values and return true if they can be split.  Take the same kind of
2783         mode argument as mips_symbol_insns.  Add a "lo_sum_out" parameter
2784         and store the lo_sum there if nonnull.  Use the symbol type to
2785         determine whether a $gp or HIGH is needed.
2786         (mips_legitimize_address): Update call to mips_split_symbol and
2787         simplify accordingly.
2788         (mips_legitimize_const_move): Likewise.
2789         * config/mips/mips.md: In the combine define_split,
2790         check mips_split_symbol instead of splittable_symbolic_operand.
2791         Update use of mips_split_symbol in the generator code.
2792         * config/mips/predicates.md (splittable_symbolic_operand): Delete.
2793
2794 2007-08-08  Richard Sandiford  <richard@codesourcery.com>
2795
2796         * config/mips/mips.c (mips_symbolic_address_p): Delete.
2797         (mips_symbol_insns_1): New function, split out from...
2798         (mips_symbol_insns): ...here.  Take a mode argument.  Treat loads
2799         and stores separately from load addresses.
2800         (mips_classify_address): Replace uses of mips_symbolic_address_p
2801         with uses of mips_symbol_insns.
2802         (mips_address_insns): Update calls to mips_symbol_insns.
2803         (mips_const_insns): Likewise.
2804         (mips_legitimize_address): Likewise.
2805
2806 2007-08-08  Richard Sandiford  <richard@codesourcery.com>
2807
2808         * config/mips/mips-protos.h (SYMBOL_FORCE_TO_MEM): New symbol type.
2809         * config/mips/mips.c (mips_classify_symbol): Skip TARGET_ABICALLS
2810         block for locally-binding symbols if TARGET_ABSOLUTE_ABICALLS.
2811         Return SYMBOL_FORCE_TO_MEM instead of SYMBOL_ABSOLUTE for
2812         non-call contexts if TARGET_MIPS16.
2813         (mips_symbolic_constant_p): Handle SYMBOL_FORCE_TO_MEM.
2814         (mips_symbolic_address_p): Likewise.  Remove special TARGET_MIPS16
2815         code for SYMBOL_ABSOLUTE.
2816         (mips_symbol_insns): Likewise.
2817
2818 2007-08-08  Richard Sandiford  <richard@codesourcery.com>
2819
2820         * config/mips/mips-protos.h (mips_symbol_context): New enumeration.
2821         * config/mips/mips.c (mips_classify_symbol): Take a context argument.
2822         (mips_symbolic_constant_p): Likewise.  Update the call to
2823         mips_classify_symbol.
2824         (mips_classify_address): Update the calls to mips_symbolic_constant_p.
2825         (mips_const_insns): Likewise.  Update the call to mips_classify_symbol.
2826         (mips_legitimize_address): Update the call to mips_symbolic_constant_p.
2827         (print_operand_reloc): Add a context argument.  Update the call to
2828         mips_symbolic_constant_p.
2829         (print_operand): Update the calls to print_operand_reloc.
2830         (print_operand_address): Use print_operand_reloc rather than
2831         print_operand.
2832         (mips_rewrite_small_data_p): Add a context argument.  Update the call
2833         to mips_symbolic_constant_p.
2834         (mips_small_data_pattern_1): Make DATA the containing mem.
2835         Update the call to mips_rewrite_small_data_p.
2836         (mips_rewrite_small_data_1): Likewise.
2837         (mips_use_anchors_for_symbol_p): Update the call to
2838         mips_symbolic_constant_p.
2839         * config/mips/predicates.md (const_call_insn_operand): Likewise.
2840         (splittable_symbolic_operand): Likewise.
2841         (move_operand): Likewise.
2842         (absolute_symbolic_operand): Likewise.
2843         (got_disp_operand): Likewise.
2844         (got_page_ofst_operand): Likewise.
2845
2846 2007-08-08  Richard Sandiford  <richard@codesourcery.com>
2847
2848         * config/mips/mips-protos.h (SYMBOL_GENERAL): Rename to...
2849         (SYMBOL_ABSOLUTE): ...this.
2850         (SYMBOL_SMALL_DATA): Rename to...
2851         (SYMBOL_GP_RELATIVE): ...this.
2852         (SYMBOL_CONSTANT_POOL): Rename to...
2853         (SYMBOL_PC_RELATIVE): ...this.
2854         * config/mips/mips.c (mips_classify_symbol, mips_symbolic_constant_p)
2855         (mips_symbolic_address_p, mips_symbol_insns, override_options)
2856         (mips_rewrite_small_data_p, mips_use_anchors_for_symbol_p): Update
2857         after above changes.
2858         * config/mips/predicates.md (const_call_insn_operand): Likewise.
2859         (general_symbolic_operand): Rename to...
2860         (absolute_symbolic_operand): ...this.
2861         * config/mips/mips.md: Update after above changes.
2862
2863 2007-08-08  Vladimir Yanovsky  <yanov@il.ibm.com>
2864             Revital Eres  <eres@il.ibm.com>
2865
2866         * ddg.c (print_ddg): Add dump information.
2867         * modulo-sched.c (print_node_sched_params): Add parameter and
2868         verbosity.
2869         (calculate_maxii): Remove function.
2870         (undo_generate_reg_moves): Likewise.
2871         (undo_permute_partial_schedule): Likewise.
2872         (kernel_number_of_cycles): Likewise.
2873         (MAXII_FACTOR): New definition to calculate the upper bound of II.
2874         (sms_schedule): Use it.  Remove profitability checks.
2875         (sms_schedule_by_order): Fix order of nodes within the cycle.
2876
2877 2007-08-08  Samuel Thibault  <samuel.thibault@ens-lyon.org>
2878
2879         * config/i386/gnu.h (STARTFILE_SPEC): Use gcrt0.o in profile mode, add
2880         -profile option, add pie support.
2881         (ENDFILE_SPEC): New spec.
2882         * config/gnu.h (LIB_SPEC): Add -profile option.
2883
2884 2007-08-08  Samuel Thibault  <samuel.thibault@ens-lyon.org>
2885
2886         * config/i386/gnu.h (CPP_SPEC): Add -pthread option.
2887         * config/gnu.h (LIB_SPEC): Likewise.
2888
2889 2007-08-07  Yaz Saito  <saito@google.com>
2890             Ian Lance Taylor  <iant@google.com>
2891
2892         * common.opt (finstrument-functions-exclude-function-list): New
2893         option.
2894         (finstrument-functions-exclude-file-list): New option.
2895         * opts.c (char_p): Define and DEF_VEC.
2896         (flag_instrument_functions_exclude_functions): New static
2897         variable.
2898         (flag_instrument_functions_exclude_files): New static variable.
2899         (add_instrument_functions_exclude_list): New static function.
2900         (flag_instrument_functions_exclude_p): New function.
2901         (common_handle_option): Handle new options.
2902         * flags.h (flag_instrument_functions_exclude_p): Declare.
2903         * gimplify.c (gimplify_function_tree): Call
2904         flag_instrument_functions_exclude_p.
2905         * doc/invoke.texi (Option Summary): Mention new options.
2906         (Code Gen Options): Document new options.
2907
2908 2007-08-07  Ian Lance Taylor  <iant@google.com>
2909
2910         PR rtl-optimization/32776
2911         * lower-subreg.c (resolve_clobber): Call resolve_reg_notes.
2912         (resolve_use): Likewise.
2913         (decompose_multiword_subregs): Remove "changed" local variable.
2914
2915 2007-08-07  Carlos O'Donell  <carlos@codesourcery.com>
2916
2917         * configure.ac: Define HAVE_GNU_AS if $gas_flag is yes.
2918         * configure: Regenerate.
2919         * config.in: Regenerate.
2920         * gcc.c [HAVE_GNU_AS]: Add "%{v} %{w:-W} %{I*} " to asm_options
2921         spec string.
2922
2923 2007-08-07  Ian Lance Taylor  <iant@google.com>
2924
2925         * lower-subreg.c (resolve_clobber): If the clobber has a LIBCALL
2926         note, just delete the insn.
2927
2928 2007-08-07  Andreas Schwab  <schwab@suse.de>
2929
2930         PR bootstrap/32973
2931         * gengtype-lex.l: Ignore backslash/newline pair while scanning a
2932         struct definition.
2933
2934 2007-08-07  Andreas Krebbel  <krebbel1@de.ibm.com>
2935
2936         * lower-subreg.c (resolve_subreg_use): Remove assertion.
2937         (find_decomposable_shift_zext, resolve_shift_zext): New functions.
2938         (decompose_multiword_subregs): Use the functions above to decompose
2939         multiword shifts and zero-extends.
2940
2941 2007-08-07  Rask Ingemann Lambertsen  <rask@sygehus.dk>
2942
2943         * doc/sourcebuild.texi (Test Directives): Fix "compile" and
2944         "assemble" descriptions which were swapped.
2945
2946 2007-08-06  Chao-ying Fu  <fu@mips.com>
2947
2948         * fixed-value.h: New file.
2949         * fixed-value.c: New file.
2950         * Makefile.in (OBJS-common): Add fixed-value.o.
2951         (fixed-value.o): New rule.
2952         (GTFILES): Add fixed-value.h.
2953         * double-int.c (double_int_scmp): We should use unsigned HOST_WIDE_INT
2954         to compare a.low and b.low.
2955         * gengtype.c (main): Handle FIXED_VALUE_TYPE type as scalar typedef.
2956
2957 2007-08-06  H.J. Lu  <hongjiu.lu@intel.com>
2958             Daniel Jacobowitz  <dan@codesourcery.com>
2959
2960         PR target/31868
2961         * config.gcc (x86_64-*-freebsd*): Add i386/t-crtstuff to
2962         tmake_file.
2963         (x86_64-*-netbsd*): Likewise.
2964         (x86_64-*-linux*): Likewise.
2965         (x86_64-*-kfreebsd*-gnu): Likewise.
2966         (x86_64-*-knetbsd*-gnu): Likewise.
2967         (i[34567]86-*-solaris2.1[0-9]*): Likewise.
2968
2969         * config/i386/t-linux64 (CRTSTUFF_T_CFLAGS): Removed.
2970
2971         * config/i386/t-crtstuff (CRTSTUFF_T_CFLAGS): Update comments.
2972         Add -fno-asynchronous-unwind-tables.
2973
2974         * config/t-freebsd (CRTSTUFF_T_CFLAGS_S): Add $(CRTSTUFF_T_CFLAGS).
2975         * config/t-libc-ok (CRTSTUFF_T_CFLAGS_S): Likewise.
2976         * config/t-lynx (CRTSTUFF_T_CFLAGS_S): Likewise.
2977         * config/t-netbsd (CRTSTUFF_T_CFLAGS_S): Likewise.
2978         * config/t-svr4 (CRTSTUFF_T_CFLAGS_S): Likewise.
2979
2980 2007-08-06  Steve Ellcey  <sje@cup.hp.com>
2981
2982         * config/ia64/ia64.c (ia64_c_mode_for_suffix): New.
2983         (TARGET_C_MODE_FOR_SUFFIX): New.
2984
2985 2007-08-06  Steve Ellcey  <sje@cup.hp.com>
2986
2987         * config/ia64/div.md (m2subrf4_cond): Change 'g' to 'G'.
2988
2989 2007-08-06  Steve Ellcey  <sje@cup.hp.com>
2990
2991         * config/ia64/ia64.h (MODES_TIEABLE_P): Fix typo.
2992
2993 2007-08-06  H.J. Lu  <hongjiu.lu@intel.com>
2994
2995         * config/i386/i386.md: Check TARGET_ macros and optimize_size
2996         before checking function returns in conditional expressions.
2997
2998 2007-08-06  Alfred Minarik  <a.minarik@aon.at>
2999
3000         PR pch/13676
3001         * doc/invoke.texi: Add .hp, .hxx, .hpp, .h, .HPP, .tcc as c++ header.
3002
3003 2008-08-05  Andrew Pinski  <andrew_pinski@playstation.sony.com>
3004
3005         PR middle-end/32988
3006         * tree.c (build2_stat): Instead of checking for INTEGER_TYPE, check
3007         for INTEGRAL_TYPE_P.
3008
3009 2008-08-05  Paolo Bonzini  <bonzini@gnu.org>
3010
3011         * configure.ac: Remove --enable-checking=df from default settings.
3012         * tree-pass.h (TODO_df_verify): New.  Shift TODO_mark_first_instance.
3013         * df-core.c (df_finish_pass) [ENABLE_CHECKING]: Schedule verification
3014         if the parameter is true.
3015         (df_analyze) [!ENABLE_DF_CHECKING]: Also do verification if the
3016         DF_VERIFY_SCHEDULED flag is true.
3017         * df.h (enum df_changeable_flags): Add DF_VERIFY_SCHEDULED.
3018         (df_finish_pass): Adjust prototype.
3019         * passes.c (execute_todo): Schedule verification if TODO_df_verify is
3020         true.
3021
3022         * see.c (pass_see): Add TODO_df_verify.
3023         * loop-init.c (pass_rtl_move_loop_invariants): Add TODO_df_verify.
3024         * global.c (rest_of_handle_global_alloc): Schedule verification
3025         after the pass.
3026         * local-alloc.c (rest_of_handle_local_alloc): Schedule verification
3027         before the pass.
3028         * function.c (pass_thread_prologue_and_epilogue): Add TODO_df_verify.
3029         * gcse.c (rest_of_handle_gcse): Adjust call to df_finish_pass.
3030         * loop-iv.c (iv_analysis_done): Schedule verification after the pass.
3031
3032         * config/sh/sh.c (sh_output_mi_thunk): Remove dead code.
3033         * config/ia64/ia64.c (ia64_reorg): Adjust call to df_finish_pass.
3034         * config/bfin/bfin.c (bfin_reorg): Adjust call to df_finish_pass.
3035
3036 2007-08-05  Vladimir Yanovsky  <yanov@il.ibm.com>
3037             Revital Eres <eres@il.ibm.com>
3038
3039         * doc/invoke.texi (-fmodulo-sched-allow-regmoves): Document new
3040         flag.
3041         * ddg.c (create_ddg_dependence): Rename to...
3042         (create_ddg_dep_from_intra_loop_link): This.  Do not check
3043         for interloop edges.  Do not create anti dependence edge when
3044         a true dependence edge exists in the opposite direction and
3045         -fmodulo-sched-allow-regmoves is set.
3046         (build_intra_loop_deps): Call create_ddg_dep_from_intra_loop_link.
3047         (add_cross_iteration_register_deps): Create anti dependence edge
3048         when -fno-modulo-sched-allow-regmoves is set.
3049         * common.opt (-fmodulo-sched-allow-regmoves): New flag.
3050
3051 2007-08-04  Richard Sandiford  <richard@codesourcery.com>
3052
3053         * config/arm/arm.md (movsi): Add braces.
3054
3055 2007-08-04  Andrew Pinski  <andrew_pinski@playstation.sony.com>
3056
3057         PR middle-end/32780
3058         * fold-const.c (fold_binary <case MINUS_EXPR>): Fix the type of
3059         operands for the folding of "A - (A & B)" into "~B & A"; cast them
3060         to type.
3061
3062 2007-08-03  Zdenek Dvorak  <ook@ucw.cz>
3063
3064         * tree-ssa-threadupdate.c (thread_through_all_blocks): Use loops'
3065         state accessor functions.
3066         * cfgloopmanip.c (remove_path, create_preheaders,
3067         force_single_succ_latches, fix_loop_structure): Ditto.
3068         * tree-ssa-loop-manip.c (rewrite_into_loop_closed_ssa,
3069         tree_duplicate_loop_to_header_edge): Ditto.
3070         * cfgloopanal.c (mark_irreducible_loops): Ditto.
3071         * loop-init.c (loop_optimizer_init, loop_optimizer_finalize):
3072         Ditto.
3073         * tree-cfgcleanup.c (cleanup_tree_cfg_noloop, repair_loop_structures,
3074         cleanup_tree_cfg): Ditto.
3075         * tree-cfg.c (tree_merge_blocks): Ditto.
3076         * cfgloop.c (rescan_loop_exit, record_loop_exits,
3077         release_recorded_exits, get_loop_exit_edges, verify_loop_structure,
3078         loop_preheader_edge, single_exit): Ditto.
3079         (flow_loops_find): Do not clear loops->state.
3080         * cfgloop.h (loops_state_satisfies_p, loops_state_set,
3081         loops_state_clear): New functions.
3082
3083 2007-08-03  Andrew Pinski  <andrew_pinski@playstation.sony.com>
3084
3085         PR middle-end/32399
3086         * tree-ssa-address.c (add_to_parts): Use POINTER_PLUS_EXPR
3087         when adding to the base and convert ELT to sizetype instead of type.
3088
3089 2007-08-03  Andrew Pinski  <andrew_pinski@playstation.sony.com>
3090
3091         PR middle-end/32304
3092         * ipa-reference.c (has_proper_scope_for_analysis): Return false when
3093         the decl's type has TYPE_NEEDS_CONSTRUCTING set.
3094
3095 2007-08-03  Andrew Pinski  <andrew_pinski@playstation.sony.com>
3096
3097         PR middle-end/32935
3098         * fold-convert.c (fold_negate_expr <NOP_EXPR>): Convert back to the
3099          correct type the negate expression.
3100
3101 2007-08-03  Jan Hubicka  <jh@suse.cz>
3102
3103         * i386.c (setup_incoming_varargs_64): Tolerate 64bit preferred
3104         stack boundary.
3105
3106 2007-08-03  David Edelsohn  <edelsohn@gnu.org>
3107
3108         * config/rs6000/rs6000.c (struct processor_cost): Change
3109         l1_cache_lines to l1_cache_size.  Add l2_cache_size.
3110         (*_cost): Convert l1 cache information to kilobytes.  Add l2 cache
3111         information.
3112         (rios1_costs, rios2_cost): Correct cache line size.
3113         (rs6000_override_options): Set l2-cache-size parameter.
3114
3115 2007-08-03  Andrew Pinski  <andrew_pinski@playstation.sony.com>
3116             Diego Novillo  <dnovillo@google.com>
3117
3118         PR 31521
3119         * tree-vrp.c (simplify_div_or_mod_using_ranges): Also simplify
3120         if the range includes 0.
3121
3122 2007-08-03  Ben Elliston  <bje@au.ibm.com>
3123
3124         * config/spu/spu.md (dftsv, dftsv_celledp): Attach the appropriate
3125         mode to unspec expressions to silence a warning from the generator
3126         programs.
3127         
3128 2007-08-02  Steve Ellcey  <sje@cup.hp.com>
3129
3130         * config/ia64/constraints.md ("U"): Make constraint vector only.
3131
3132 2007-08-02  Nathan Froyd  <froydnj@codesourcery.com>
3133
3134         PR middle-end/25446
3135         * c-objc-common.c (c_cannot_inline_tree_fn): Check for an
3136         always_inline attribute on the function decl.
3137
3138 2007-08-02  Nathan Froyd  <froydnj@codesourcery.com>
3139
3140         PR middle-end/25445
3141         * varasm.c (default_binds_local_p_1): Consult flag_whole_program
3142         if we are compiling with -fPIC.
3143
3144 2007-08-02  Sandra Loosemore  <sandra@codesourcery.com>
3145             Nigel Stephens  <nigel@mips.com>
3146
3147         * longlong.h [__mips__] (count_leading_zeros, COUNT_LEADING_ZEROS_0):
3148         Define for MIPS32 and MIPS64.
3149
3150 2007-08-02  Nick Clifton  <nickc@redhat.com>
3151
3152         * config/host-hpux.c: Change copyright header to refer to version
3153         3 of the GNU General Public License and to point readers at the
3154         COPYING3 file and the FSF's license web page.
3155         * config/alpha/predicates.md, config/alpha/vms-ld.c,
3156         config/alpha/linux.h, config/alpha/alpha.opt,
3157         config/alpha/linux-elf.h, config/alpha/vms.h, config/alpha/elf.h,
3158         config/alpha/vms-unwind.h, config/alpha/ev4.md,
3159         config/alpha/ev6.md, config/alpha/alpha.c, config/alpha/vms-cc.c,
3160         config/alpha/alpha.h, config/alpha/sync.md,
3161         config/alpha/openbsd.h, config/alpha/alpha.md,
3162         config/alpha/alpha-modes.def, config/alpha/ev5.md,
3163         config/alpha/alpha-protos.h, config/alpha/freebsd.h,
3164         config/alpha/osf5.h, config/alpha/netbsd.h, config/alpha/vms64.h,
3165         config/alpha/constraints.md, config/alpha/osf.h,
3166         config/alpha/xm-vms.h, config/alpha/unicosmk.h, config/linux.h,
3167         config/frv/predicates.md, config/frv/frv.h, config/frv/linux.h,
3168         config/frv/frv.md, config/frv/frv.opt, config/frv/frv-modes.def,
3169         config/frv/frv-asm.h, config/frv/frv-protos.h,
3170         config/frv/frv-abi.h, config/frv/frv.c, config/s390/tpf.h,
3171         config/s390/s390.c, config/s390/predicates.md, config/s390/s390.h,
3172         config/s390/linux.h, config/s390/tpf.md, config/s390/tpf.opt,
3173         config/s390/2064.md, config/s390/2084.md, config/s390/s390.md,
3174         config/s390/s390.opt, config/s390/s390-modes.def,
3175         config/s390/fixdfdi.h, config/s390/constraints.md,
3176         config/s390/s390-protos.h, config/s390/s390x.h, config/elfos.h,
3177         config/dbxcoff.h, config/m32c/predicates.md, config/m32c/cond.md,
3178         config/m32c/m32c.c, config/m32c/minmax.md, config/m32c/blkmov.md,
3179         config/m32c/m32c-pragma.c, config/m32c/m32c.h,
3180         config/m32c/prologue.md, config/m32c/m32c.abi,
3181         config/m32c/muldiv.md, config/m32c/bitops.md, config/m32c/mov.md,
3182         config/m32c/addsub.md, config/m32c/m32c.md, config/m32c/m32c.opt,
3183         config/m32c/t-m32c, config/m32c/m32c-modes.def,
3184         config/m32c/jump.md, config/m32c/shift.md,
3185         config/m32c/m32c-protos.h, config/libgloss.h,
3186         config/spu/spu-protos.h, config/spu/predicates.md,
3187         config/spu/spu-builtins.h, config/spu/spu.c,
3188         config/spu/spu-builtins.def, config/spu/spu-builtins.md,
3189         config/spu/spu.h, config/spu/spu-elf.h, config/spu/constraints.md,
3190         config/spu/spu.md, config/spu/spu-c.c, config/spu/spu.opt,
3191         config/spu/spu-modes.def, config/spu/t-spu-elf, config/interix.h,
3192         config/sparc/hypersparc.md, config/sparc/predicates.md,
3193         config/sparc/linux.h, config/sparc/sp64-elf.h,
3194         config/sparc/supersparc.md, config/sparc/cypress.md,
3195         config/sparc/openbsd1-64.h, config/sparc/openbsd64.h,
3196         config/sparc/niagara.md, config/sparc/sparc.md,
3197         config/sparc/long-double-switch.opt, config/sparc/ultra3.md,
3198         config/sparc/sparc.opt, config/sparc/sync.md,
3199         config/sparc/sp-elf.h, config/sparc/sparc-protos.h,
3200         config/sparc/ultra1_2.md, config/sparc/biarch64.h,
3201         config/sparc/sparc.c, config/sparc/little-endian.opt,
3202         config/sparc/sysv4-only.h, config/sparc/sparc.h,
3203         config/sparc/linux64.h, config/sparc/freebsd.h,
3204         config/sparc/sol2.h, config/sparc/rtemself.h,
3205         config/sparc/netbsd-elf.h, config/sparc/vxworks.h,
3206         config/sparc/sparc-modes.def, config/sparc/sparclet.md,
3207         config/sparc/sysv4.h, config/vx-common.h, config/netbsd-aout.h,
3208         config/flat.h, config/m32r/m32r.md, config/m32r/predicates.md,
3209         config/m32r/little.h, config/m32r/m32r.c, config/m32r/m32r.opt,
3210         config/m32r/linux.h, config/m32r/constraints.md,
3211         config/m32r/m32r.h, config/m32r/m32r-protos.h, config/vxworks.opt,
3212         config/darwin-c.c, config/darwin.opt, config/i386/i386.h,
3213         config/i386/cygming.h, config/i386/linux.h, config/i386/cygwin.h,
3214         config/i386/i386.md, config/i386/netware-crt0.c,
3215         config/i386/sco5.h, config/i386/mmx.md, config/i386/vx-common.h,
3216         config/i386/kaos-i386.h, config/i386/winnt-stubs.c,
3217         config/i386/netbsd64.h, config/i386/djgpp.h, config/i386/gas.h,
3218         config/i386/sol2.h, config/i386/constraints.md,
3219         config/i386/netware-libgcc.c, config/i386/sysv5.h,
3220         config/i386/predicates.md, config/i386/geode.md,
3221         config/i386/x86-64.h, config/i386/kfreebsd-gnu.h,
3222         config/i386/freebsd64.h, config/i386/vxworksae.h,
3223         config/i386/pentium.md, config/i386/lynx.h, config/i386/i386elf.h,
3224         config/i386/rtemself.h, config/i386/netbsd-elf.h,
3225         config/i386/ppro.md, config/i386/k6.md, config/i386/netware.c,
3226         config/i386/netware.h, config/i386/i386-modes.def,
3227         config/i386/sysv4-cpp.h, config/i386/i386-interix.h,
3228         config/i386/cygwin1.c, config/i386/djgpp.opt, config/i386/uwin.h,
3229         config/i386/unix.h, config/i386/ptx4-i.h, config/i386/xm-djgpp.h,
3230         config/i386/att.h, config/i386/winnt.c, config/i386/beos-elf.h,
3231         config/i386/sol2-10.h, config/i386/darwin64.h, config/i386/sse.md,
3232         config/i386/i386.opt, config/i386/bsd.h, config/i386/cygming.opt,
3233         config/i386/xm-mingw32.h, config/i386/linux64.h,
3234         config/i386/openbsdelf.h, config/i386/xm-cygwin.h,
3235         config/i386/sco5.opt, config/i386/darwin.h, config/i386/mingw32.h,
3236         config/i386/winnt-cxx.c, config/i386/i386-interix3.h,
3237         config/i386/nwld.c, config/i386/nwld.h, config/i386/host-cygwin.c,
3238         config/i386/cygwin2.c, config/i386/i386-protos.h,
3239         config/i386/sync.md, config/i386/openbsd.h,
3240         config/i386/host-mingw32.c, config/i386/i386-aout.h,
3241         config/i386/nto.h, config/i386/biarch64.h,
3242         config/i386/i386-coff.h, config/i386/freebsd.h,
3243         config/i386/driver-i386.c, config/i386/knetbsd-gnu.h,
3244         config/i386/host-i386-darwin.c, config/i386/vxworks.h,
3245         config/i386/crtdll.h, config/i386/i386.c, config/i386/sysv4.h,
3246         config/darwin-protos.h, config/linux.opt, config/sol2.c,
3247         config/sol2.h, config/sh/symbian.c, config/sh/sh-protos.h,
3248         config/sh/linux.h, config/sh/elf.h, config/sh/superh.h,
3249         config/sh/sh4.md, config/sh/coff.h, config/sh/newlib.h,
3250         config/sh/embed-elf.h, config/sh/symbian-pre.h, config/sh/rtems.h,
3251         config/sh/kaos-sh.h, config/sh/sh4a.md, config/sh/constraints.md,
3252         config/sh/sh64.h, config/sh/sh.opt, config/sh/symbian-post.h,
3253         config/sh/sh-c.c, config/sh/predicates.md, config/sh/sh.c,
3254         config/sh/sh.h, config/sh/shmedia.md, config/sh/sh-modes.def,
3255         config/sh/little.h, config/sh/sh1.md, config/sh/sh4-300.md,
3256         config/sh/superh64.h, config/sh/rtemself.h,
3257         config/sh/netbsd-elf.h, config/sh/sh.md, config/sh/vxworks.h,
3258         config/usegas.h, config/svr3.h, config/pdp11/pdp11-protos.h,
3259         config/pdp11/2bsd.h, config/pdp11/pdp11.md, config/pdp11/pdp11.c,
3260         config/pdp11/pdp11.opt, config/pdp11/pdp11-modes.def,
3261         config/pdp11/pdp11.h, config/avr/rtems.h, config/avr/avr-protos.h,
3262         config/avr/predicates.md, config/avr/constraints.md,
3263         config/avr/avr.md, config/avr/avr.c, config/avr/avr.opt,
3264         config/avr/avr.h, config/sol2-protos.h, config/dbxelf.h,
3265         config/lynx.opt, config/crx/crx.h, config/crx/crx-protos.h,
3266         config/crx/crx.md, config/crx/crx.c, config/crx/crx.opt,
3267         config/c4x/c4x-c.c, config/c4x/c4x.c, config/c4x/c4x.opt,
3268         config/c4x/c4x-modes.def, config/c4x/rtems.h,
3269         config/c4x/predicates.md, config/c4x/c4x.h,
3270         config/c4x/c4x-protos.h, config/c4x/c4x.md, config/kfreebsd-gnu.h,
3271         config/xtensa/predicates.md, config/xtensa/xtensa.c,
3272         config/xtensa/linux.h, config/xtensa/xtensa.h,
3273         config/xtensa/elf.h, config/xtensa/xtensa.md,
3274         config/xtensa/xtensa.opt, config/xtensa/constraints.md,
3275         config/xtensa/xtensa-protos.h, config/dbx.h,
3276         config/stormy16/predicates.md, config/stormy16/stormy16.md,
3277         config/stormy16/stormy16.c, config/stormy16/stormy16.opt,
3278         config/stormy16/stormy16.h, config/stormy16/stormy16-protos.h,
3279         config/host-solaris.c, config/fr30/fr30.h,
3280         config/fr30/predicates.md, config/fr30/fr30-protos.h,
3281         config/fr30/fr30.md, config/fr30/fr30.c, config/fr30/fr30.opt,
3282         config/vxworksae.h, config/sol2-c.c, config/lynx.h,
3283         config/m68hc11/m68hc11-protos.h, config/m68hc11/predicates.md,
3284         config/m68hc11/m68hc11.md, config/m68hc11/m68hc11.c,
3285         config/m68hc11/m68hc11.opt, config/m68hc11/m68hc11.h,
3286         config/m68hc11/m68hc12.h, config/openbsd-oldgas.h,
3287         config/host-linux.c, config/interix3.h, config/cris/cris.c,
3288         config/cris/predicates.md, config/cris/linux.h,
3289         config/cris/cris.h, config/cris/aout.h, config/cris/cris.md,
3290         config/cris/linux.opt, config/cris/cris.opt, config/cris/elf.opt,
3291         config/cris/aout.opt, config/cris/cris-protos.h,
3292         config/vxworks-dummy.h, config/netbsd.h, config/netbsd-elf.h,
3293         config/iq2000/iq2000.h, config/iq2000/predicates.md,
3294         config/iq2000/iq2000-protos.h, config/iq2000/iq2000.md,
3295         config/iq2000/iq2000.c, config/iq2000/iq2000.opt,
3296         config/host-darwin.c, config/mt/mt.md, config/mt/mt.c,
3297         config/mt/mt.opt, config/mt/t-mt, config/mt/mt.h,
3298         config/mt/mt-protos.h, config/svr4.h, config/host-darwin.h,
3299         config/chorus.h, config/mn10300/mn10300.c,
3300         config/mn10300/mn10300.opt, config/mn10300/predicates.md,
3301         config/mn10300/mn10300.h, config/mn10300/linux.h,
3302         config/mn10300/constraints.md, config/mn10300/mn10300-protos.h,
3303         config/mn10300/mn10300.md, config/ia64/predicates.md,
3304         config/ia64/itanium1.md, config/ia64/unwind-ia64.h,
3305         config/ia64/ia64-c.c, config/ia64/sync.md, config/ia64/ia64.c,
3306         config/ia64/itanium2.md, config/ia64/ia64.h, config/ia64/vect.md,
3307         config/ia64/freebsd.h, config/ia64/ia64.md,
3308         config/ia64/ia64-modes.def, config/ia64/constraints.md,
3309         config/ia64/hpux.h, config/ia64/ia64-protos.h, config/windiss.h,
3310         config/gofast.h, config/rtems.h, config/sol2-10.h,
3311         config/m68k/predicates.md, config/m68k/m68k.md,
3312         config/m68k/linux.h, config/m68k/m68k-modes.def,
3313         config/m68k/print-sysroot-suffix.sh, config/m68k/m68k-protos.h,
3314         config/m68k/coff.h, config/m68k/m68k-none.h, config/m68k/ieee.opt,
3315         config/m68k/openbsd.h, config/m68k/m68k-aout.h,
3316         config/m68k/m68k.opt, config/m68k/m68020-elf.h,
3317         config/m68k/m68kelf.h, config/m68k/m68k-devices.def,
3318         config/m68k/uclinux-oldabi.h, config/m68k/m68k.c,
3319         config/m68k/constraints.md, config/m68k/rtemself.h,
3320         config/m68k/netbsd-elf.h, config/m68k/m68k.h,
3321         config/m68k/uclinux.h, config/rs6000/power4.md,
3322         config/rs6000/host-darwin.c, config/rs6000/6xx.md,
3323         config/rs6000/linux.h, config/rs6000/eabi.h,
3324         config/rs6000/aix41.opt, config/rs6000/xcoff.h,
3325         config/rs6000/secureplt.h, config/rs6000/linuxspe.h,
3326         config/rs6000/eabialtivec.h, config/rs6000/8540.md,
3327         config/rs6000/darwin8.h, config/rs6000/kaos-ppc.h,
3328         config/rs6000/windiss.h, config/rs6000/603.md,
3329         config/rs6000/aix41.h, config/rs6000/cell.md,
3330         config/rs6000/mpc.md, config/rs6000/aix43.h, config/rs6000/beos.h,
3331         config/rs6000/gnu.h, config/rs6000/rtems.h, config/rs6000/aix.opt,
3332         config/rs6000/darwin.md, config/rs6000/darwin64.h,
3333         config/rs6000/default64.h, config/rs6000/7xx.md,
3334         config/rs6000/darwin.opt, config/rs6000/spe.md,
3335         config/rs6000/rs6000.opt, config/rs6000/rs6000-c.c,
3336         config/rs6000/rios2.md, config/rs6000/linuxaltivec.h,
3337         config/rs6000/7450.md, config/rs6000/linux64.h,
3338         config/rs6000/constraints.md, config/rs6000/440.md,
3339         config/rs6000/darwin.h, config/rs6000/host-ppc64-darwin.c,
3340         config/rs6000/rs6000.c, config/rs6000/aix52.h,
3341         config/rs6000/rs6000.h, config/rs6000/power6.md,
3342         config/rs6000/predicates.md, config/rs6000/altivec.md,
3343         config/rs6000/aix64.opt, config/rs6000/rios1.md,
3344         config/rs6000/rs6000-modes.def, config/rs6000/rs64.md,
3345         config/rs6000/eabisim.h, config/rs6000/sysv4le.h,
3346         config/rs6000/darwin7.h, config/rs6000/dfp.md,
3347         config/rs6000/linux64.opt, config/rs6000/sync.md,
3348         config/rs6000/vxworksae.h, config/rs6000/power5.md,
3349         config/rs6000/lynx.h, config/rs6000/biarch64.h,
3350         config/rs6000/rs6000.md, config/rs6000/sysv4.opt,
3351         config/rs6000/eabispe.h, config/rs6000/e500.h,
3352         config/rs6000/freebsd.h, config/rs6000/rs6000-protos.h,
3353         config/rs6000/netbsd.h, config/rs6000/e500-double.h,
3354         config/rs6000/aix.h, config/rs6000/vxworks.h,
3355         config/rs6000/40x.md, config/rs6000/aix51.h,
3356         config/rs6000/sysv4.h, config/arc/arc-protos.h, config/arc/arc.md,
3357         config/arc/arc.c, config/arc/arc.opt, config/arc/arc-modes.def,
3358         config/arc/arc.h, config/mcore/mcore-elf.h,
3359         config/mcore/mcore-protos.h, config/mcore/predicates.md,
3360         config/mcore/mcore.md, config/mcore/mcore.c,
3361         config/mcore/mcore.opt, config/mcore/mcore.h,
3362         config/mcore/mcore-pe.h, config/darwin.c, config/freebsd-nthr.h,
3363         config/score/predicates.md, config/score/score-version.h,
3364         config/score/score-protos.h, config/score/misc.md,
3365         config/score/elf.h, config/score/score.c, config/score/mac.md,
3366         config/score/score7.md, config/score/score.h,
3367         config/score/score-conv.h, config/score/score-mdaux.c,
3368         config/score/score.md, config/score/score.opt,
3369         config/score/score-modes.def, config/score/score-mdaux.h,
3370         config/score/mul-div.S, config/arm/uclinux-elf.h,
3371         config/arm/semi.h, config/arm/ecos-elf.h, config/arm/arm1020e.md,
3372         config/arm/symbian.h, config/arm/linux-elf.h,
3373         config/arm/arm1026ejs.md, config/arm/arm1136jfs.md,
3374         config/arm/elf.h, config/arm/aout.h, config/arm/arm.c,
3375         config/arm/thumb2.md, config/arm/vec-common.md, config/arm/coff.h,
3376         config/arm/strongarm-pe.h, config/arm/arm.h,
3377         config/arm/cortex-a8-neon.md, config/arm/semiaof.h,
3378         config/arm/cortex-a8.md, config/arm/uclinux-eabi.h,
3379         config/arm/arm-modes.def, config/arm/linux-eabi.h,
3380         config/arm/rtems-elf.h, config/arm/neon-schedgen.ml,
3381         config/arm/arm-cores.def, config/arm/arm-protos.h,
3382         config/arm/vfp.md, config/arm/aof.h, config/arm/linux-gas.h,
3383         config/arm/wince-pe.h, config/arm/neon.md,
3384         config/arm/constraints.md, config/arm/neon.ml,
3385         config/arm/xscale-elf.h, config/arm/strongarm-coff.h,
3386         config/arm/arm.opt, config/arm/arm926ejs.md,
3387         config/arm/predicates.md, config/arm/iwmmxt.md,
3388         config/arm/arm_neon.h, config/arm/unknown-elf.h,
3389         config/arm/kaos-arm.h, config/arm/bpabi.h, config/arm/pe.opt,
3390         config/arm/neon-testgen.ml, config/arm/arm.md,
3391         config/arm/xscale-coff.h, config/arm/pe.c,
3392         config/arm/arm-generic.md, config/arm/pe.h,
3393         config/arm/kaos-strongarm.h, config/arm/freebsd.h,
3394         config/arm/neon-docgen.ml, config/arm/netbsd.h, config/arm/fpa.md,
3395         config/arm/strongarm-elf.h, config/arm/cirrus.md,
3396         config/arm/netbsd-elf.h, config/arm/vxworks.h,
3397         config/arm/neon-gen.ml, config/kaos.h, config/darwin-driver.c,
3398         config/pa/predicates.md, config/pa/pa64-hpux.h,
3399         config/pa/pa-hpux.opt, config/pa/som.h, config/pa/pa-hpux1010.opt,
3400         config/pa/pa-hpux1111.opt, config/pa/pa-pro-end.h,
3401         config/pa/elf.h, config/pa/fptr.c, config/pa/pa64-linux.h,
3402         config/pa/pa.md, config/pa/pa.opt, config/pa/pa-hpux.h,
3403         config/pa/pa-hpux10.h, config/pa/pa-hpux11.h,
3404         config/pa/pa-hpux1010.h, config/pa/pa-protos.h,
3405         config/pa/pa-osf.h, config/pa/pa-hpux1111.h, config/pa/pa-64.h,
3406         config/pa/milli64.S, config/pa/pa.c, config/pa/pa-linux.h,
3407         config/pa/pa.h, config/pa/pa32-linux.h, config/pa/pa64-hpux.opt,
3408         config/pa/pa64-regs.h, config/pa/pa-modes.def,
3409         config/pa/constraints.md, config/darwin9.h, config/mips/4100.md,
3410         config/mips/linux.h, config/mips/elfoabi.h, config/mips/elf.h,
3411         config/mips/sdb.h, config/mips/windiss.h, config/mips/rtems.h,
3412         config/mips/3000.md, config/mips/iris5.h, config/mips/5000.md,
3413         config/mips/7000.md, config/mips/9000.md, config/mips/4600.md,
3414         config/mips/linux64.h, config/mips/elforion.h,
3415         config/mips/constraints.md, config/mips/generic.md,
3416         config/mips/predicates.md, config/mips/4300.md,
3417         config/mips/mips-ps-3d.md, config/mips/iris.h, config/mips/24k.md,
3418         config/mips/mips.md, config/mips/mips.opt, config/mips/4k.md,
3419         config/mips/5k.md, config/mips/vr4120-div.S,
3420         config/mips/openbsd.h, config/mips/iris6.h, config/mips/4000.md,
3421         config/mips/mips-protos.h, config/mips/6000.md,
3422         config/mips/mips.c, config/mips/mips.h, config/mips/r3900.h,
3423         config/mips/74k.md, config/mips/netbsd.h, config/mips/vxworks.h,
3424         config/mips/mips-modes.def, config/mips/vr.h,
3425         config/soft-fp/t-softfp, config/openbsd.h, config/ptx4.h,
3426         config/freebsd-spec.h, config/vax/vax.c, config/vax/openbsd.h,
3427         config/vax/vax.h, config/vax/elf.h, config/vax/vax.md,
3428         config/vax/bsd.h, config/vax/vax.opt, config/vax/vax-modes.def,
3429         config/vax/openbsd1.h, config/vax/netbsd.h,
3430         config/vax/vax-protos.h, config/vax/netbsd-elf.h,
3431         config/vax/vaxv.h, config/vax/ultrix.h, config/freebsd.h,
3432         config/h8300/rtems.h, config/h8300/predicates.md,
3433         config/h8300/h8300.c, config/h8300/h8300.h, config/h8300/elf.h,
3434         config/h8300/h8300.md, config/h8300/h8300.opt,
3435         config/h8300/coff.h, config/h8300/h8300-protos.h,
3436         config/v850/v850.md, config/v850/predicates.md,
3437         config/v850/v850-c.c, config/v850/v850.c, config/v850/v850.opt,
3438         config/v850/v850.h, config/v850/v850-protos.h, config/vxworks.c,
3439         config/knetbsd-gnu.h, config/sol2-6.h, config/vxworks.h,
3440         config/mmix/mmix.h, config/mmix/predicates.md,
3441         config/mmix/mmix-protos.h, config/mmix/mmix.md,
3442         config/mmix/mmix.c, config/mmix/mmix.opt,
3443         config/mmix/mmix-modes.def, config/bfin/bfin.opt,
3444         config/bfin/rtems.h, config/bfin/bfin-modes.def,
3445         config/bfin/predicates.md, config/bfin/bfin-protos.h,
3446         config/bfin/bfin.c, config/bfin/bfin.h, config/bfin/bfin.md:
3447         Likewise.
3448
3449 2007-08-02  Richard Sandiford  <richard@codesourcery.com>
3450
3451         * emit-rtl.c (reset_used_decls): Rename to...
3452         (set_used_decls): ...this.  Set the used flag rather than clearing it.
3453         (unshare_all_rtl_again): Update accordingly.  Set flags on argument
3454         DECL_RTLs rather than resetting them.
3455
3456 2007-08-02  Andreas Krebbel  <krebbel1@de.ibm.com>
3457
3458         * config/s390/s390.md ("*xordi3_cconly"): Change xr to xg.
3459
3460 2007-08-01  Sandra Loosemore  <sandra@codesourcery.com>
3461
3462         * reload.c (find_reloads_address_part):  Pass correct MEMREFLOC
3463         argument to find_reloads_address.
3464
3465 2007-08-01  Daniel Jacobowitz  <dan@codesourcery.com>
3466
3467         PR tree-optimization/32919
3468         * tree-ssa-sccvn.c (visit_phi): Do not visit abnormal PHIs.
3469         * tree-ssa-coalesce.c (ssa_conflicts_dump): New.
3470         (coalesce_ssa_name): Call it.
3471
3472 2007-08-01  Sandra Loosemore  <sandra@codesourcery.com>
3473             David Ung  <davidu@mips.com>
3474
3475         * config/mips/mips16.S (__mips16_unordsf2, __mips16_floatunsisf): New.
3476         (__mips16_unorddf2, __mips16_floatunsidf): New.
3477         * config/mips/mips.c (mips_init_libfuncs): Add optab entries for
3478         above functions.
3479         * config/mips/t-libgcc-mips16 (LIB1ASMFUNCS): Add new functions.
3480
3481 2007-08-01  Zdenek Dvorak  <ook@ucw.cz>
3482
3483         * tree-pretty-print.c (dump_generic_node): Dump OMP_SECTIONS_SWITCH.
3484         Display new operands of OMP_SECTIONS and OMP_CONTINUE.
3485         * tree.h (OMP_SECTIONS_CONTROL): New macro.
3486         (OMP_DIRECTIVE_P): Add OMP_SECTIONS_SWITCH.
3487         * omp-low.c (get_ws_args_for, determine_parallel_type,
3488         expand_omp_for_generic, expand_omp_for_static_nochunk,
3489         expand_omp_for_static_chunk, expand_omp_for, expand_omp_sections):
3490         Work with more precise CFG.
3491         (build_omp_regions_1): Handle OMP_SECTIONS_SWITCH.
3492         (lower_omp_sections): Emit OMP_SECTIONS_SWITCH.  Add arguments to
3493         OMP_CONTINUE.
3494         * tree-gimple.c (is_gimple_stmt): Handle OMP_SECTIONS_SWITCH.
3495         * gimple-low.c (lower_stmt): Ditto.
3496         * tree-inline.c (estimate_num_insns_1): Ditto.
3497         * tree.def (OMP_SECTIONS, OMP_CONTINUE): Added new operands.
3498         (OMP_SECTIONS_SWITCH): New.
3499         * tree-cfgcleanup.c (cleanup_omp_return): New.
3500         (cleanup_tree_cfg_bb): Call cleanup_omp_return.
3501         * tree-cfg.c (make_edges): Create back edges for OMP_CONTINUE
3502         and exit edge for OMP_FOR.  Handle OMP_SECTIONS_SWITCH.
3503         (tree_redirect_edge_and_branch): Handle omp constructs.
3504
3505         * fortran/trans-openmp.c (gfc_trans_omp_sections): Build OMP_SECTIONS
3506         with three arguments.
3507
3508 2007-08-01  Zdenek Dvorak  <ook@ucw.cz>
3509
3510         * tree-cfg.c (tree_merge_blocks): Preserve loop exit phi nodes only
3511         in loop closed ssa.
3512
3513 2007-08-01  Zdenek Dvorak  <ook@ucw.cz>
3514
3515         * tree-ssa-threadupdate.c (thread_through_all_blocks): Record that
3516         the loop structures may need fixing.
3517         * tree-cfgcleanup.c (cleanup_tree_cfg_noloop, repair_loop_structures):
3518         New functions.
3519         (cleanup_tree_cfg_loop): Removed.
3520         (cleanup_tree_cfg): If loops need fixing, call repair_loop_structures.
3521         * tree-predcom.c (tree_predictive_commoning): Return TODO_cleanup_cfg
3522         instead of running cleanup_tree_cfg_loop.
3523         * cfgloop.h (LOOPS_NEED_FIXUP): New constant.
3524         * tree-flow.h (cleanup_tree_cfg_loop): Declaration removed.
3525         (tree_predictive_commoning): Declaration changed.
3526         * passes.c (execute_function_todo): Do not use cleanup_tree_cfg_loop.
3527
3528 2007-08-01  Zdenek Dvorak  <ook@ucw.cz>
3529
3530         * doc/invoke.texi (l1-cache-size): Update documentation.
3531         (l2-cache-size): Document.
3532         * params.h (L2_CACHE_SIZE): New macro.
3533         * tree-ssa-loop-prefetch.c (L1_CACHE_SIZE_BYTES): Reflect
3534         that L1_CACHE_SIZE is in kB now.
3535         (L2_CACHE_SIZE_BYTES): New macro.
3536         (tree_ssa_prefetch_arrays): Show size in kB.
3537         * config/i386/i386.h (struct processor_costs): Add l1_cache_size
3538         and l2_cache_size fields.
3539         * config/i386/driver-i386.c (describe_cache): Detect cache size
3540         in kB.
3541         * config/i386/i386.c (size_cost, i386_cost, i486_cost,pentium_cost,
3542         pentiumpro_cost, geode_cost, k6_cost, athlon_cost, k8_cost,
3543         amdfam10_cost, pentium4_cost, nocona_cost, core2_cost,
3544         generic64_cost, generic32_cost): Add l1_cache_size and l2_cache_size.
3545         (override_options): Set l1-cache-size and l2-cache-size to default
3546         values if not specified otherwise.
3547         * params.def (PARAM_L1_CACHE_SIZE): Change to set in kB.
3548         (PARAM_L2_CACHE_SIZE): New.
3549
3550 2007-08-01  Nigel Stephens  <nigel@mips.com>
3551             David Ung  <davidu@mips.com>
3552             Thiemo Seufer  <ths@mips.com>
3553             Chris Dearman  <chris@mips.com>
3554             Richard Sandiford  <richard@codesourcery.com>
3555
3556         * config.gcc (mips*-sde-elf*): New stanza.
3557         (mipsisa32-*-elf*, mipsisa32el-*-elf*, mipsisa32r2-*-elf*)
3558         (mipsisa32r2el-*-elf*, mipsisa64-*-elf*, mipsisa64el-*-elf*)
3559         (mipsisa64sb1-*-elf*, mipsisa64sb1el-*-elf*, mips-*-elf*)
3560         (mipsel-*-elf*, mips64-*-elf*, mips64el-*-elf*, mips64orion-*-elf*)
3561         (mips64orionel-*-elf*, mips*-*-rtems*, mips-wrs-windiss)
3562         (mipstx39-*-elf*, mipstx39el-*-elf*): Add mips/t-libgcc-mips16
3563         to tmake_file.
3564         * config/mips/sde.h: New file.
3565         * config/mips/t-libgcc-mips16: Likewise.
3566         * config/mips/t-sde: Likewise.
3567         * config/mips/linux.h (TARGET_OS_CPP_BUILTINS): Remove settings
3568         of _ABIN32, _ABI64, _ABIO32, _MIPS_SIM, _MIPS_SZLONG, _MIPS_SZPTR,
3569         _MIPS_FPSET and _MIPS_SZINT.
3570         * config/mips/iris.h (TARGET_OS_CPP_BUILTINS): Likewise.
3571         * config/mips/elfoabi.h (DRIVER_SELF_SPECS): Remove separate
3572         insertion of a default -mips option.  Use MIPS_32BIT_OPTION_SPEC.
3573         * config/mips/t-isa3264 (LIB1ASMSRC, LIB1ASMFUNCS): Delete.
3574         * config/mips/t-r3900 (LIB1ASMSRC, LIB1ASMFUNCS): Likewise.
3575         * config/mips/t-elf (LIB1ASMSRC, LIB1ASMFUNCS): Likewise.
3576         * config/mips/mips.h (TARGET_CPU_CPP_BUITINS): Define _ABIO32,
3577         _ABIN32, _ABI64, _ABIO64, _MIPS_SIM, _MIPS_SZINT, _MIPS_SZLONG,
3578         _MIPS_SZPTR and _MIPS_FPSET.
3579         (MIPS_ISA_LEVEL_SPEC): Inject the default -mips option if no
3580         architecture is specified.
3581         (MIPS_32BIT_OPTION_SPEC): New macro.
3582
3583 2007-07-31  Dan Hipschman  <dsh@google.com>
3584
3585         * gcc.c (end_going_arg): New function.
3586         (do_spec_2): Use it.
3587         (do_spec_1): Use it.
3588
3589 2007-07-31  H.J. Lu  <hongjiu.lu@intel.com>
3590
3591         * ddg.c (add_cross_iteration_register_deps): Declare bb_info
3592         only if ENABLE_CHECKING is defined.
3593
3594 2007-07-31  Kenneth Zadeck <zadeck@naturalbridge.com>
3595
3596         * df.h (DF_RU, DF_RU_BB_INFO, df_ru_bb_info, df_ru,
3597         df_ru_add_problem, df_ru_get_bb_info): Removed.
3598         (DF_RD, DF_UREC, DF_CHAIN, DF_NOTE): Renumbered.
3599         * df-problems.c (df_ru_problem_data, df_ru_set_bb_info,
3600         df_ru_free_bb_info, df_ru_alloc,
3601         df_ru_bb_local_compute_process_def,
3602         df_ru_bb_local_compute_process_use, df_ru_bb_local_compute,
3603         df_ru_local_compute, df_ru_init_solution, df_ru_confluence_n,
3604         df_ru_transfer_function, df_ru_free, df_ru_start_dump,
3605         df_ru_top_dump, df_ru_bottom_dump, df_problem problem_RU,
3606         df_ru_add_problem): Removed.
3607
3608 2007-07-31  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
3609
3610         PR target/32847
3611         * pa.md (casesi32): Use match_scratch.  Revise insn condition.
3612         (casesi32p, casesi64p): Likewise.
3613         (casesi): Adjust for above.
3614
3615 2007-07-31  Richard Sandiford  <richard@codesourcery.com>
3616
3617         * mode-switching.c (create_pre_exit): Don't search past calls.
3618
3619 2007-07-31  Sandra Loosemore  <sandra@codesourcery.com>
3620
3621         * config/mips/mips.h (ISA_HAS_SYNCI):  Add !TARGET_MIPS16 test.
3622
3623 2007-07-31  Revital Eres  <eres@il.ibm.com>
3624
3625         * ddg.c (add_deps_for_def): Rename to...
3626         (add_cross_iteration_register_deps): This.  Change implementation
3627         to use only reaching def and def-use chains to construct the
3628         inter loop dependencies.
3629         (add_deps_for_use): Remove function.
3630         (build_inter_loop_deps): Call add_cross_iteration_register_deps
3631         function to build the inter loop dependencies.
3632         * modulo-sched.c (sms_schedule): Build only
3633         reaching def and def-use chains for the propose of the ddg
3634         construction.
3635
3636 2007-07-31  Julian Brown  <julian@codesourcery.com>
3637
3638         * config/arm/neon.md (vec_set<mode>_internal, vec_setv2di_internal):
3639         New define_insns. Use correct RTL.
3640         (vec_set<mode>): Write as expander.
3641
3642 2007-07-31  Razya Ladelsky  <razya@il.ibm.com>
3643
3644         * matrix-reorg.c (analyze_matrix_allocation_site): Avoid referring 
3645         to an unallocated space.
3646
3647 2007-07-30  Jan Sjodin  <jan.sjodin@amd.com>
3648
3649         * tree-data-ref.c
3650         (split_constant_offset): Enable split_constant_offset to extract
3651         constants from other statements.
3652         * tree-vect-transform.c
3653         (vect_create_addr_base_for_vector_ref): Generate data_ref_base
3654         to a temp var. Force base_offset to be simple.
3655
3656 2007-07-30  Seongbae Park <seongbae.park@gmail.com>
3657
3658         * df-scan.c (df_scan_verify): Remove artificial limit on
3659         the number of blocks for verification.
3660         * df-problems.c (df_lr_bb_local_compute, df_simulate_find_defs,
3661         df_simulate_defs): Avoid unnecessary insn checking for defs.
3662
3663 2007-07-29  Mark Mitchell  <mark@codesourcery.com>
3664
3665         * config/m68k/lb1sf68.asm (FUNC): New macro.
3666         (__mulsi3): Use it.
3667         (__udivsi3): Likewise.
3668         (__divsi3): Likewise.
3669         (__umodsi3): Likewise.
3670         (__modsi3): Likewise.
3671         (__subdf3): Likewise.
3672         (__adddf3): Likewise.
3673         (__muldf3): Likewise.
3674         (__divdf3): Likewise.
3675         (__negdf2): Likewise.
3676         (__cmpdf2): Likewise.
3677         (__subsf3): Likewise.
3678         (__addsf3): Likewise.
3679         (__mulsf3): Likewise.
3680         (__divsf3): Likewise.
3681         (__negsf2): Likewise.
3682         (__cmpsf2): Likewise.
3683         (__eqdf2): Likewise.
3684         (__nedf2): Likewise.
3685         (__gtdf2): Likewise.
3686         (__gedf2): Likewise.
3687         (__ltdf2): Likewise.
3688         (__ledf2): Likewise.
3689         (__eqsf2): Likewise.
3690         (__nesf2): Likewise.
3691         (__gtsf2): Likewise.
3692         (__gesf2): Likewise.
3693         (__ltsf2): Likewise.
3694         (__lesf2): Likewise.
3695
3696 2007-07-30  Ollie Wild  <aaw@google.com>
3697
3698         * c-ppoutput.c (print_lines_directives_only): New function.
3699         (scan_translation_unit_directives_only): New function.
3700         (preprocess_file): Add call to scan_translation_unit_directives_only.
3701         * c-opts.c (c_common_handle_option): Add OPT_fdirectives_only.
3702         (sanitize_cpp_opts): Add default flag_dump_macros setting for
3703         -fdirectives-only.  Add errors for -fdirectives-only conflict with
3704         -Wunused-macros and -traditional.
3705         (finish_options): Add builtin macro initialization for
3706         -fdirectives-only + -fpreprocessed.
3707         * c.opt (fdirectives-only): New.
3708         * doc/cppopts.texi (fdirectives-only): New.
3709
3710 2007-07-30  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
3711
3712         * alias.c (record_set, memory_modified_1): Constify.
3713         * bt-load.c (note_btr_set): Likewise.
3714         * caller-save.c (mark_set_regs, add_stored_regs): Likewise.
3715         * combine.c (set_nonzero_bits_and_sign_copies,
3716         expand_field_assignment, record_dead_and_set_regs_1,
3717         use_crosses_set_p, reg_dead_at_p_1, can_combine_p,
3718         likely_spilled_retval_1): Likewise.
3719         * config/frv/frv.c (frv_registers_update_1, frv_io_check_address,
3720         frv_io_handle_set): Likewise.
3721         * config/mips/mips.c (mips_sim_record_set,
3722         vr4130_true_reg_dependence_p_1): Likewise.
3723         * config/mt/mt.c (insn_dependent_p_1): Likewise.
3724         * config/s390/s390.c (s390_reg_clobbered_rtx): Likewise.
3725         * config/sh/sh.c (flow_dependent_p_1): Likewise.
3726         * cselib.c (cselib_invalidate_rtx_note_stores): Likewise.
3727         * dce.c (mark_nonreg_stores_1, mark_nonreg_stores_2): Likewise.
3728         * ddg.c (mark_mem_store): Likewise.
3729         * df-problems.c (df_urec_mark_reg_change): Likewise.
3730         * function.c (update_epilogue_consts): Likewise.
3731         * gcse.c (record_set_info, record_last_set_info,
3732         mems_conflict_for_gcse_p, canon_list_insert, reg_set_info,
3733         reg_clear_last_set): Likewise.
3734         * global.c (mark_reg_store, mark_reg_clobber, reg_becomes_live):
3735         Likewise.
3736         * jump.c (reversed_comparison_code_parts): Likewise.
3737         * local-alloc.c (validate_equiv_mem_from_store, no_equiv,
3738         reg_is_set): Likewise.
3739         * loop-iv.c (mark_altered): Likewise.
3740         * mode-switching.c (reg_becomes_live): Likewise.
3741         * optabs.c (no_conflict_move_test): Likewise.
3742         * postreload-gcse.c (record_last_set_info, find_mem_conflicts):
3743         Likewise.
3744         * postreload.c (reload_combine_note_store, move2add_note_store):
3745         Likewise.
3746         * regmove.c (flags_set_1): Likewise.
3747         * regrename.c (note_sets, kill_clobbered_value, kill_set_value):
3748         Likewise.
3749         * reload1.c (mark_not_eliminable, forget_old_reloads_1):
3750         Likewise. 
3751         * resource.c (update_live_status): Likewise.
3752         * rtl.h (set_of, note_stores): Likewise.
3753         * rtlanal.c (set_of_1, parms_set, struct set_of_data, set_of,
3754         note_stores, parms_set): Likewise.
3755         * sched-rgn.c (sets_likely_spilled_1): Likewise.
3756         * stack-ptr-mod.c (notice_stack_pointer_modification_1):
3757         Likewise. 
3758         * var-tracking.c (count_stores, add_stores): Likewise.
3759
3760 2007-07-30  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
3761
3762         * alias.c (mems_in_disjoint_alias_sets_p,
3763         fixed_scalar_and_varying_struct_p, aliases_everything_p,
3764         nonoverlapping_component_refs_p, nonoverlapping_memrefs_p,
3765         write_dependence_p, mems_in_disjoint_alias_sets_p,
3766         read_dependence, true_dependence, canon_true_dependence,
3767         anti_dependence, output_dependence): Constify.
3768         * combine.c (extended_count): Likewise.
3769         * cse.c (cse_rtx_varies_p, hash_rtx, exp_equiv_p): Likewise.
3770         * cselib.c (get_value_hash, references_value_p,
3771         cselib_reg_set_mode, cselib_rtx_varies_p): Likewise.
3772         * cselib.h (cselib_reg_set_mode, references_value_p): Likewise.
3773         * emit-rtl.c (mem_expr_equal_p, active_insn_p): Likewise.
3774         * function.c (contains, prologue_epilogue_contains,
3775         sibcall_epilogue_contains): Likewise. 
3776         * jump.c (simplejump_p, condjump_p, condjump_in_parallel_p,
3777         pc_set, any_uncondjump_p, any_condjump_p, onlyjump_p,
3778         only_sets_cc0_p, sets_cc0_p, rtx_renumbered_equal_p, true_regnum,
3779         reg_or_subregno): Likewise.
3780         * recog.c (asm_noperands): Likewise.
3781         * reload1.c (function_invariant_p): Likewise.
3782         * rtl.h (mem_expr_equal_p, active_insn_p, rtx_varies_p,
3783         rtx_addr_varies_p, asm_noperands, exp_equiv_p, hash_rtx,
3784         condjump_p, any_condjump_p, any_uncondjump_p, pc_set,
3785         simplejump_p, onlyjump_p, only_sets_cc0_p, sets_cc0_p,
3786         true_regnum, reg_or_subregno, condjump_in_parallel_p,
3787         extended_count, prologue_epilogue_contains,
3788         sibcall_epilogue_contains, function_invariant_p, true_dependence,
3789         canon_true_dependence, read_dependence, anti_dependence,
3790         output_dependence): Likewise.
3791         * rtlanal.c (rtx_varies_p, rtx_addr_varies_p): Likewise.
3792
3793 2007-07-30  Julian Brown  <julian@codesourcery.com>
3794
3795         * config/arm/neon.md (V_ext): New mode attribute.
3796         (neon_vget_lane<mode>): Replace with define_expand.
3797         (neon_vget_lane<mode>_sext_internal)
3798         (neon_vget_lane<mode>_zext_internal): New define_insns for double
3799         and quad precision vectors.
3800         (neon_vget_lanedi): Add bounds check. Remove dead comment.
3801         * config/arm/neon.ml (get_lane): Make 32-bit get-lane intrinsics
3802         have typeless 32-bit result.
3803
3804 2007-07-30  Andrew Pinski  <andrew_pinski@playstation.sony.com>
3805
3806         PR tree-opt/32527
3807         * tree-affine.h (aff_tree): The type of rest is sizetype for types
3808         of pointers.
3809         * tree-affine.c (aff_combination_scale): If type is a pointer type,
3810         use sizetype for rest.
3811         (aff_combination_add_elt): Likewise. Don't specialize pointer types.
3812         (aff_combination_convert): Don't convert rest for pointer types.
3813
3814 2007-07-28  Daniel Berlin  <dberlin@dberlin.org>
3815
3816         * Makefile.in (tree-ssa-alias.o): Add alloc-pool.h
3817
3818         * tree-ssa-alias.c: Add alloc-pool.h.
3819         (init_alias_info): Free alias_bitmap_obstack.
3820         (delete_alias_info): Call delete_mem_ref_stats.
3821         (get_mem_sym_stats_for): Use alloc_pool.
3822         (init_mem_ref_stats): Do not delete mem_ref_stats here.
3823         (delete_mem_sym_stats): Removed.
3824         
3825 2007-07-29  Sebastian Pop  <sebpop@gmail.com>
3826
3827         * tree-data-ref.c (add_multivariate_self_dist): Parametric access
3828         functions cannot be represented as classical distance vectors.
3829
3830 2007-07-29  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
3831
3832         * attribs.c (hash_attr, eq_attr, init_attributes): Constify.
3833         * builtins.c (validate_arg, builtin_mathfn_code,
3834         validate_arglist): Likewise.
3835         * calls.c (call_expr_flags): Likewise.
3836         * combine.c (reg_nonzero_bits_for_combine,
3837         reg_num_sign_bit_copies_for_combine, get_last_value,
3838         reg_truncated_to_mode): Likewise.
3839         * emit-rtl.c (subreg_lowpart_p): Likewise.
3840         * expr.c (highest_pow2_factor_for_target,
3841         categorize_ctor_elements_1, categorize_ctor_elements,
3842         count_type_elements, contains_packed_reference,
3843         highest_pow2_factor, highest_pow2_factor_for_target): Likewise.
3844         * fold-const.c (may_negate_without_overflow_p, int_const_binop,
3845         fold_convertible_p, operand_equal_p, tree_swap_operands_p,
3846         native_encode_int, native_encode_real, native_encode_complex,
3847         native_encode_vector, native_encode_expr, native_interpret_int,
3848         native_interpret_real, native_interpret_complex,
3849         native_interpret_vector, native_interpret_expr): Likewise.
3850         * function.c (use_register_for_decl): Likewise.
3851         * gimplify.c (get_name): Likewise.
3852         * langhooks-def.h (lhd_return_null_const_tree): New.
3853         (LANG_HOOKS_GET_CALLEE_FNDECL): Use it.
3854         * langhooks.c (lhd_return_null_const_tree): New.
3855         * langhooks.h (lang_get_callee_fndecl): Constify.
3856         * output.h (constructor_static_from_elts_p): Likewise.
3857         * rtl-factoring.c (gen_symbol_ref_rtx_for_label): Likewise.
3858         * rtl.h (nonzero_bits, num_sign_bit_copies, truncated_to_mode,
3859         subreg_lowpart_p, noop_move_p, struct rtl_hooks): Likewise.
3860         * rtlanal.c (cached_nonzero_bits, nonzero_bits1,
3861         cached_num_sign_bit_copies, num_sign_bit_copies1, noop_move_p,
3862         nonzero_bits, num_sign_bit_copies, truncated_to_mode): Likewise.
3863         * rtlhooks-def.h (reg_nonzero_bits_general,
3864         reg_num_sign_bit_copies_general, reg_truncated_to_mode_general):
3865         Likewise. 
3866         * rtlhooks.c (reg_num_sign_bit_copies_general,
3867         reg_nonzero_bits_general, reg_truncated_to_mode_general):
3868         Likewise. 
3869         * stmt.c (warn_if_unused_value, is_body_block): Likewise.
3870         * stor-layout.c (mode_for_size_tree): Likewise.
3871         * tree-ssa-loop-im.c (memref_eq): Likewise.
3872         * tree-ssa-loop-ivopts.c (tree_int_cst_sign_bit): Likewise.
3873         * tree.c (contains_placeholder_p, type_list_equal,
3874         simple_cst_equal, get_callee_fndecl, operand_equal_for_phi_arg_p):
3875         Likewise. 
3876         * tree.h (tree_int_cst_sign_bit, may_negate_without_overflow_p,
3877         mode_for_size_tree, categorize_ctor_elements, count_type_elements,
3878         contains_placeholder_p, contains_packed_reference,
3879         get_callee_fndecl, operand_equal_for_phi_arg_p,
3880         warn_if_unused_value, is_body_block, native_encode_expr,
3881         native_interpret_expr, fold_convertible_p, operand_equal_p,
3882         int_const_binop, tree_swap_operands_p, builtin_mathfn_code,
3883         validate_arglist, simple_cst_equal, type_list_equal,
3884         use_register_for_decl, call_expr_flags, get_name,
3885         highest_pow2_factor): Likewise.
3886         (const_call_expr_arg_iterator_d,
3887         init_const_call_expr_arg_iterator, next_const_call_expr_arg,
3888         first_const_call_expr_arg, more_const_call_expr_args_p,
3889         FOR_EACH_CONST_CALL_EXPR_ARG): New.
3890         * varasm.c (constructor_static_from_elts_p): Constify.
3891
3892 2007-07-28  Kazu Hirata  <kazu@codesourcery.com>
3893
3894         * cfglayout.c, config/arm/arm.c, config/arm/cortex-a8.md,
3895         config/arm/neon-schedgen.ml, config/arm/neon.ml,
3896         config/arm/vec-common.md, config/ia64/div.md, cselib.c,
3897         df-core.c, df.h, dominance.c, optabs.c, opts.c, reg-stack.c,
3898         regstat.c, target.h, tree-ssa-live.c, tree-ssa-pre.c,
3899         tree-vect-transform.c, tree.def: Fix comment typos.  Follow
3900         spelling conventions.
3901         * doc/invoke.texi: Follow spelling conventions.
3902
3903 2007-07-29  Vladimir Yanovsky  <yanov@il.ibm.com>
3904             Revital Eres  <eres@il.ibm.com>
3905
3906         * modulo-sched.c (sms_schedule): Avoid loops which includes
3907         auto-increment instructions.
3908
3909 2007-07-28  Richard Guenther  <rguenther@suse.de>
3910
3911         PR middle-end/32920
3912         * fold-const.c (fold_cond_expr_with_comparison): Convert
3913         operand zero of MIN/MAX_EXPR to correct type.
3914
3915 2007-07-28  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
3916
3917         * calls.c (special_function_p, setjmp_call_p, alloca_call_p,
3918         flags_from_decl_or_type): Constify.
3919         * gcc.c (do_spec_1): Likewise.
3920         * print-tree.c (dump_addr, print_node_brief): Likewise.
3921         * tree-cfg.c (stmt_starts_bb_p, is_ctrl_stmt, computed_goto_p,
3922         simple_goto_p, tree_can_make_abnormal_goto, stmt_starts_bb_p,
3923         tree_purge_all_dead_eh_edges): Likewise.
3924         * tree-flow.h (is_ctrl_stmt, computed_goto_p, simple_goto_p,
3925         tree_can_make_abnormal_goto, tree_purge_all_dead_eh_edges):
3926         Likewise. 
3927         * tree.c (expr_location, expr_has_location, expr_locus,
3928         expr_filename, expr_lineno, get_inner_array_type,
3929         fields_compatible_p): Likewise.
3930         * tree.h (get_inner_array_type, fields_compatible_p,
3931         expr_location, expr_has_location, expr_locus, expr_filename,
3932         expr_lineno, dump_addr, print_node_brief, flags_from_decl_or_type,
3933         setjmp_call_p, alloca_call_p): Likewise.
3934
3935 2007-07-28  Daniel Berlin  <dberlin@dberlin.org>
3936
3937         * timevar.def: Add TV_CALL_CLOBBER, TV_FLOW_SENSITIVE,
3938         TV_FLOW_INSENSITIVE.
3939
3940         * tree-ssa-alias.c (compute_call_clobbered): Push/pop
3941         TV_CALL_CLOBBER.
3942         (compute_flow_sensitive_aliasing): Ditto for TV_FLOW_SENSITIVE.
3943         (compute_flow_insensitive_aliasing): Ditto for
3944         TV_FLOW_INSENSITIVE.    
3945
3946 2007-07-27  Jan Hubicka  <jh@suse.cz>
3947
3948         * config/i386/i386.c (register_move_cost): Remove accidentally
3949         comitted #if 0 block.
3950
3951         * attribs.c: Include hashtab.h
3952         (attribute_hash): New.
3953         (substring): New structure.
3954         (extract_attribute_substring, substring_hash, hash_attr, eq_attr):
3955         New function.
3956         (init_attributes): Initialize attribute hash.
3957         (decl_attributes): Use attribute hash.
3958         * Makefile.in (attribs.c): Depend on hashtab.h.
3959
3960 2007-07-27  Steve Ellcey  <sje@cup.hp.com>
3961
3962         * config/ia64/vect.md (vec_initv2si): Remove bad BIG_ENDIAN test.
3963
3964 2007-07-27  Richard Sandiford  <richard@codesourcery.com>
3965
3966         * doc/invoke.texi (mdsp, mdspr2): Document the __mips_dsp,
3967         __mips_dspr2 and __mips_dsp_rev macros.
3968         * config/mips/mips.h (TARGET_CPU_CPP_BUILTINS): Define __mips_dsp_rev.
3969
3970 2007-07-27  Douglas Gregor  <doug.gregor@gmail.com>
3971         
3972        * c-common.h (enum rid): Add RID_DECLTYPE, update RID_LAST_CXX0X.
3973
3974 2007-07-26  Kenneth Zadeck <zadeck@naturalbridge.com>
3975
3976         PR middle-end/32749
3977         
3978         * df-problems.c (df_create_unused_note): Removed do_not_gen parm
3979         and the updating of the live and do_not_gen sets.
3980         (df_note_bb_compute): Added updating of live and do_not_gen sets
3981         for regular defs so that the case of clobber inside conditional
3982         call is processed correctly.
3983         
3984 2007-07-27  Zdenek Dvorak  <dvorakz@suse.cz>
3985
3986         * config/rs6000/rs6000.c (rs6000_gimplify_va_arg): Generate the
3987         operands with compatible type.
3988
3989 2007-07-27  Richard Sandiford  <richard@codesourcery.com>
3990
3991         * expr.h (store_bit_field): Don't return a value.
3992         * expmed.c (check_predicate_volatile_ok): New function.
3993         (store_bit_field_1): New function, extracted from store_bit_field.
3994         Take a fallback_p argument and return true if the operation succeeded.
3995         Only use store_fixed_bit_field if fallback_p.  Don't recompute
3996         mode_for_extraction; use op_mode instead.  Try forcing memories
3997         into registers if the insv expander fails.
3998         (store_bit_field): Use store_bit_field_1 with fallback_p true.
3999         Don't return a value.
4000         (convert_extracted_bit_field): New function, extracted from
4001         store_bit_field.
4002         (extract_bit_field_1): Likewise.  Take a fallback_p argument
4003         and return NULL if the operation succeeded.  Only use
4004         extract_fixed_bit_field if fallback_p.  Only calculate one
4005         extraction mode.  Combine code for extv and extzv.  Try forcing
4006         memories into registers if the ext(z)v expander fails.
4007         (extract_bit_field): Use extract_bit_field_1 with fallback_p true.
4008
4009 2007-07-27  Richard Sandiford  <rsandifo@nildram.co.uk>
4010
4011         * df.h (df_mw_hardreg): Turn df_ref_type and df_ref_flags
4012         into bitfields.
4013         (df_ref): Likewise.  Put regno with other integer fields.
4014
4015 2007-07-27  Richard Sandiford  <rsandifo@nildram.co.uk>
4016
4017         * df.h (df_mw_hardreg): Remove "loc" field.
4018         * df-scan.c (df_ref_record): Don't set it.  Remove redundant
4019         local variable.
4020         * df-problems.c (df_whole_mw_reg_unused_p): New function,
4021         split out from df_set_unused_notes_for_mw.  Return false for
4022         partial references.  Assert that mw_reg is a REG when returning true.
4023         (df_set_unused_notes_for_mw): Use it.  Use mw_reg instead of *loc.
4024         (df_whole_mw_reg_dead_p): New function, split out from
4025         df_set_dead_notes_for_mw.  Return false for partial references.
4026         Assert that mw_reg is a REG when returning true.
4027         (df_set_dead_notes_for_mw): Use it.  Use mw_reg instead of *loc.
4028         Remove redundant bitmap check.
4029
4030 2007-07-26  H.J. Lu  <hongjiu.lu@intel.com>
4031
4032         * config/ia64/t-ia64 ($(T)crtbegin.o): Removed.
4033         ($(T)crtend.o): Likwise.
4034         ($(T)crtbeginS.o): Likwise.
4035         ($(T)crtendS.o): Likwise.
4036         ($(T)crtfastmath.o): Likwise.
4037
4038 2007-07-26  Zdenek Dvorak  <dvorakz@suse.cz>
4039
4040         * dominance.c (dom_computed, n_bbs_in_dom_tree): Removed.
4041         * function.h (dom_computed, n_bbs_in_dom_tree): New macros.
4042         * basic-block.h (struct control_flow_graph): Added x_dom_computed
4043         and x_n_bbs_in_dom_tree fields.
4044
4045 2007-07-26  Steve Ellcey  <sje@cup.hp.com>
4046
4047         PR tree-optimization/32087
4048         * tree-ssa-loop-manip.c (tree_transform_and_unroll_loop):
4049         Do not call scale_bbs_frequencies_int with prob of zero.
4050
4051 2007-07-26  Julian Brown  <julian@codesourcery.com>
4052
4053         * config/arm/arm-protos.h (neon_lane_bounds, neon_const_bounds)
4054         (neon_element_bits): Add prototypes.
4055         * config/arm/arm.c (bounds_check, neon_lane_bounds)
4056         (neon_const_bounds, neon_element_bits): New functions.
4057         * config/arm/neon.md (neon_vget_lane<mode>, neon_vget_lanedi)
4058         (neon_vget_lanev2di, neon_vset_lane<mode>, neon_vset_lanedi)
4059         (neon_vset_lanev2di, neon_vdup_lane<mode>, neon_vdup_lanedi)
4060         (neon_vdup_lanev2di, neon_vcvt_n<mode>, neon_vmul_lane<mode>)
4061         (neon_vmull_lane<mode>, neon_vqdmull_lane<mode>)
4062         (neon_vqdmulh_lane<mode>, neon_vmla_lane<mode>)
4063         (neon_vmlal_lane<mode>, neon_vqdmlal_lane<mode>)
4064         (neon_vmls_lane<mode>, neon_vmlsl_lane<mode>)
4065         (neon_vqdmlsl_lane<mode>, neon_vext<mode>, neon_vshr_n<mode>)
4066         (neon_vshrn_n<mode>, neon_vqshrn_n<mode>, neon_vqshrun_n<mode>)
4067         (neon_vshl_n<mode>, neon_vshl_n<mode>, neon_vqshl_n<mode>)
4068         (neon_vqshlu_n<mode>, neon_vshll_n<mode>, neon_vsra_n<mode>)
4069         (neon_vsri_n<mode>, neon_vsli_n<mode>): Add bounds checks.
4070
4071 2007-07-26  Nathan Froyd  <froydnj@codesourcery.com>
4072
4073         * config/vxworks.h (VXWORKS_LINK_SPEC): Fix typo.
4074         (HAVE_AS_GNU_ATTRIBUTE): Undefine.
4075
4076 2007-07-26  Mark Shinwell  <shinwell@codesourcery.com>
4077             Julian Brown  <julian@codesourcery.com>
4078
4079         * config/arm/arm.c (arm_mac_accumulator_is_mul_result): New.
4080         * config/arm/arm-protos.h (arm_mac_accumulator_is_mul_result): New.
4081         * config/arm/cortex-a8.md: New.
4082         * config/arm/cortex-a8-neon.md: New.
4083         * config/arm/neon-schedgen.ml: New.
4084         * config/arm/neon.md (vqh_mnem): New.
4085         (neon_type): New.
4086         (Is_float_mode): New.
4087         (Scalar_mul_8_16): New.
4088         (Is_d_reg): New.
4089         (V_mode_nunits): New.
4090         (All instruction patterns): Annotate with neon_type attribute
4091         values.
4092         * config/arm/arm.md: Include cortex-a8.md.
4093         (insn): Add smmla, umaal, smlald, smlsld, clz, mrs, msr and xtab
4094         values.
4095         Annotate instruction patterns accordingly.
4096         (generic_sched): Do not use generic scheduling for Cortex-A8.
4097         (generic_vfp): Do not use generic VFP scheduling for Cortex-A8.
4098
4099 2007-07-26  Daniel Jacobowitz  <dan@codesourcery.com>
4100
4101         * fold-const.c (fold_read_from_constant_string): Use
4102         build_int_cst_type.
4103         * tree-ssa-ccp.c (fold_const_aggregate_ref): Likewise.
4104
4105 2007-07-26  Nick Clifton  <nickc@redhat.com>
4106
4107         * tree-ssa-operands.h: Change copyright header to refer to version
4108         3 of the GNU General Public License and to point readers at the
4109         COPYING3 file and the FSF's license web page.
4110         * tree-vrp.c, regrename.c, attribs.c, loop-unswitch.c,
4111         sched-ebb.c, fwprop.c, tree-loop-linear.c, dwarf2asm.c,
4112         tree-into-ssa.c, dwarf2asm.h, tree-ssa-loop-im.c, sbitmap.c,
4113         targhooks.c, tree-dump.c, tree-complex.c, sbitmap.h, targhooks.h,
4114         tree-dump.h, regstat.c, see.c, machmode.h, hooks.c, cgraphbuild.c,
4115         hooks.h, genrecog.c, tree-ssa-threadupdate.c, gen-protos.c,
4116         flags.h, rtlhooks.c, gencheck.c, tree-ssa-loop-niter.c,
4117         opts-common.c, dbgcnt.def, tree-pretty-print.c, tracer.c,
4118         gengtype.c, mkconfig.sh, gengtype.h, tree-ssa-loop-unswitch.c,
4119         cgraph.c, c-lex.c, cgraph.h, libfuncs.h, cfgloopmanip.c,
4120         rtl-error.c, optabs.c, postreload-gcse.c, tree-ssa-loop-manip.c,
4121         optabs.h, genmddeps.c, defaults.h, postreload.c, value-prof.c,
4122         tree-ssa-loop-ch.c, tree-tailcall.c, gengenrtl.c, value-prof.h,
4123         genopinit.c, tree.c, tree.h, reload.c, tree-pass.h, ipa-cp.c,
4124         reload.h, bitmap.c, bitmap.h, tree-scalar-evolution.c,
4125         c-config-lang.in, tree-scalar-evolution.h, target.h, cppspec.c,
4126         rtlanal.c, ddg.c, lambda-mat.c, mips-tdump.c, ddg.h,
4127         tree-phinodes.c, mips-tfile.c, pointer-set.c, pointer-set.h,
4128         diagnostic.c, final.c, diagnostic.h, builtins.c, genoutput.c,
4129         gcc.c, lists.c, tree-ssa-alias-warnings.c, gcc.h, cfghooks.c,
4130         input.h, gensupport.c, fold-const.c, cfghooks.h, insn-notes.def,
4131         gensupport.h, builtin-attrs.def, sync-builtins.def, params.c,
4132         cfgloopanal.c, params.h, graphds.c, omp-low.c, tree-ssa-dse.c,
4133         graphds.h, gcov.c, cfg.c, genextract.c, ipa-reference.c,
4134         genautomata.c, tree-ssa-uncprop.c, auto-inc-dec.c, toplev.c,
4135         tree-gimple.c, ipa-reference.h, vmsdbgout.c, errors.c, toplev.h,
4136         reorg.c, tree-gimple.h, tree-chrec.c, pretty-print.c, errors.h,
4137         real.c, tree-chrec.h, pretty-print.h, debug.c, real.h, genemit.c,
4138         omega.c, c-cppbuiltin.c, genmultilib, debug.h, omega.h,
4139         tree-ssa-sccvn.c, genconfig.c, tree-ssa-sccvn.h, cgraphunit.c,
4140         regs.h, df-scan.c, vec.c, hosthooks-def.h, vec.h,
4141         tree-ssa-copyrename.c, scan.c, builtin-types.def, tree-ssa-ccp.c,
4142         scan.h, mode-classes.def, haifa-sched.c, dominance.c, dojump.c,
4143         double-int.c, gcov-io.c, dbxout.c, builtins.def, double-int.h,
4144         dbxout.h, tree-ssa-loop-ivopts.c, df-core.c, mode-switching.c,
4145         gengtype-lex.l, tree-nomudflap.c, modulo-sched.c, c-objc-common.c,
4146         hosthooks.h, c-objc-common.h, caller-save.c, graph.c,
4147         ipa-pure-const.c, graph.h, c-format.c, cse.c, fix-header.c,
4148         c-format.h, web.c, tree-stdarg.c, genpeep.c, tree-stdarg.h,
4149         tree-ssa-math-opts.c, xcoffout.c, tree-ssa-dom.c, tree-nrv.c,
4150         xcoffout.h, tree-ssa-propagate.c, ipa-utils.c,
4151         tree-ssa-propagate.h, tree-ssa-alias.c, loop-init.c, ipa-utils.h,
4152         gimple-low.c, rtl.def, c-tree.h, tree-ssa-sink.c, ipa-inline.c,
4153         mkmap-symver.awk, machmode.def, c-pch.c, cfganal.c, global.c,
4154         alloc-pool.c, c-semantics.c, alloc-pool.h, jump.c, ifcvt.c,
4155         dwarf2out.c, expr.c, cfgbuild.c, tree-browser.c, dwarf2out.h,
4156         expr.h, longlong.h, opts.c, gcov-iov.c, opts.h, dwarf2.h,
4157         genattrtab.c, genconditions.c, genattr.c, optc-gen.awk,
4158         timevar.def, tree-ssa-loop-ivcanon.c, hard-reg-set.h, predict.c,
4159         tree-ssa-loop.c, host-default.c, predict.h, recog.c, dbgcnt.c,
4160         recog.h, dbgcnt.h, c-aux-info.c, tree-ssa-address.c, timevar.c,
4161         dse.c, lcm.c, tree-ssa-ifcombine.c, timevar.h, dse.h,
4162         matrix-reorg.c, tree-vn.c, treestruct.def, fp-test.c, c-decl.c,
4163         tree-eh.c, c-errors.c, c-pretty-print.c, regmove.c,
4164         lambda-trans.c, c-pretty-print.h, et-forest.c, et-forest.h,
4165         ebitmap.c, configure.ac, local-alloc.c, function.c, langhooks.c,
4166         ebitmap.h, cppdefault.c, tree-vectorizer.c, function.h,
4167         langhooks.h, print-rtl.c, cppdefault.h, df.h, tree-vectorizer.h,
4168         sdbout.c, stor-layout.c, sdbout.h, rtlhooks-def.h, read-rtl.c,
4169         gcse.c, ipa-type-escape.c, vmsdbg.h, alias.c, gengtype-parse.c,
4170         ipa-type-escape.h, domwalk.c, alias.h, tree-if-conv.c, profile.c,
4171         init-regs.c, domwalk.h, ipa.c, gccbug.in, tree-data-ref.c,
4172         loop-unroll.c, tree-data-ref.h, tree-flow-inline.h, tree-affine.c,
4173         mkmap-flat.awk, tree-affine.h, tree-vect-analyze.c, c.opt, ggc.h,
4174         opt-gather.awk, c-typeck.c, gimplify.c, coretypes.h, exec-tool.in,
4175         insn-addr.h, tree-ssa-phiopt.c, c-pragma.c, c-pragma.h, calls.c,
4176         tree-ssa-coalesce.c, genmodes.c, loop-doloop.c, predict.def,
4177         dwarf.h, tree.def, rtl-factoring.c, lower-subreg.c, expmed.c,
4178         bt-load.c, ggc-common.c, genflags.c, tree-dfa.c, except.c,
4179         coverage.c, except.h, emit-rtl.c, cfgexpand.c, coverage.h,
4180         stringpool.c, cselib.c, emit-rtl.h, tree-cfgcleanup.c, c-opts.c,
4181         cselib.h, cfgcleanup.c, simplify-rtx.c, tree-ssa-pre.c, explow.c,
4182         tree-ssa-live.c, tree-sra.c, tree-ssa-live.h, tree-predcom.c,
4183         loop-invariant.c, genpreds.c, protoize.c, opth-gen.awk, c-dump.c,
4184         lambda.h, loop-iv.c, tree-mudflap.c, ipa-prop.c, print-tree.c,
4185         tree-mudflap.h, tree-ssa-copy.c, ipa-prop.h, cfglayout.c,
4186         tree-ssa-forwprop.c, c-convert.c, cfglayout.h, common.opt,
4187         ggc-zone.c, ggc-page.c, c-omp.c, tree-ssa-dce.c, gencodes.c,
4188         varasm.c, tree-vect-patterns.c, libada-mk.in, tree-ssa-ter.c,
4189         sched-deps.c, tree-nested.c, c-ppoutput.c, tree-ssa.c,
4190         target-def.h, tree-ssa-loop-prefetch.c, lambda-code.c,
4191         omp-builtins.def, rtl.c, regclass.c, stab.def, intl.c, rtl.h,
4192         intl.h, tree-inline.c, conditions.h, tree-inline.h, integrate.c,
4193         sched-int.h, tree-iterator.c, integrate.h, tree-iterator.h,
4194         genchecksum.c, tree-optimize.c, output.h, tree-vect-transform.c,
4195         tree-object-size.c, combine.c, tree-outof-ssa.c, addresses.h,
4196         bb-reorder.c, stack-ptr-mod.c, resource.c, var-tracking.c,
4197         cfgloop.c, system.h, resource.h, ggc-none.c, tree-profile.c,
4198         cfgloop.h, c-gimplify.c, c-common.c, opt-functions.awk,
4199         tree-vect-generic.c, tree-flow.h, df-problems.c, scan-decls.c,
4200         c-common.h, config.gcc, reg-stack.c, tlink.c, main.c, stub-objc.c,
4201         fixproto, config.host, Makefile.in, gccspec.c, sched-rgn.c,
4202         vecprim.h, basic-block.h, tree-ssa-structalias.c,
4203         tree-ssa-structalias.h, c-common.def, sched-vis.c, tree-cfg.c,
4204         passes.c, genconstants.c, c-incpath.c, c-incpath.h,
4205         struct-equiv.c, c-parser.c, tree-ssa-reassoc.c, varray.c, sreal.c,
4206         varray.h, dfp.c, sreal.h, combine-stack-adj.c, dfp.h,
4207         reg-notes.def, cfgrtl.c, config.build, varpool.c, gengtype-yacc.y,
4208         stmt.c, dce.c, tree-browser.def, prefix.c, statistics.h,
4209         params.def, dce.h, c-lang.c, gcov-dump.c, prefix.h,
4210         tree-ssanames.c, collect2.c, collect2.h, tree-ssa-threadedge.c,
4211         convert.c, convert.h, langhooks-def.h, reload1.c,
4212         tree-ssa-operands.c: Likewise.
4213
4214 2007-07-26  Jan Hubicka  <jh@suse.cz>
4215
4216         * tree-ssa-live.c: Include debug.h and flags.h.
4217         (mark_scope_block_unused): New function.
4218         (remove_unused_scope_block_p): New function.
4219         (remove_unused_locals): Remove unused blocks too.
4220
4221 2007-07-25  Ian Lance Taylor  <iant@google.com>
4222
4223         * combine.c (combine_max_regno): Remove.  Remove all uses.
4224         (struct reg_stat_struct): Rename from struct reg_stat.
4225         (reg_stat_type): Define, and declare VECs.
4226         (reg_stat): Change from pointer to VEC.  Change all uses.
4227         (combine_split_insns): New static function.
4228         (try_combine, find_split_point): Call it instead of split_insns.
4229
4230 2007-07-25  Zdenek Dvorak  <dvorakz@suse.cz>
4231
4232         * cfghooks.c (split_block): Fix the information about loop latch.
4233
4234 2007-07-25  Zdenek Dvorak  <dvorakz@suse.cz>
4235
4236         * cfgloopmanip.c (fix_loop_structure): Call force_single_succ_latches.
4237
4238 2007-07-25  Zdenek Dvorak  <dvorakz@suse.cz>
4239
4240         * tree-ssa-threadupdate.c (create_edge_and_update_destination_phis):
4241         Scan the new edge for loop exit info.
4242
4243 2007-07-25  Andreas Tobler  <a.tobler@schweiz.org>
4244
4245         * config/darwin.c: Include debug.h.
4246
4247 2007-07-25  Steve Ellcey  <sje@cup.hp.com>
4248
4249         PR target/32218
4250         * tree-vect-patterns.c (vect_pattern_recog_1): Check for valid type.
4251
4252 2007-07-25  Steve Ellcey  <sje@cup.hp.com>
4253
4254         * config/ia64/ia64.h (HARD_REGNO_NREGS): Handle RFmode.
4255         (HARD_REGNO_MODE_OK): Ditto.
4256         (MODES_TIEABLE_P): Ditto.
4257         (HARD_REGNO_CALLER_SAVE_MODE): Ditto.
4258         (CLASS_MAX_NREGS): Ditto.
4259         * config/ia64/ia64.c (ia64_print_operand_address): Add R format.
4260         * config/ia64/ia64.md (divsf3_internal_thr): Removed.
4261         (divdf3_internal_thr): Removed.
4262         * config/ia64/div.md: New file.
4263         * config/ia64/constraints.md: Add H constraint.
4264
4265 2007-07-25  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
4266
4267         * sbitmap.c (sbitmap_verify_popcount, sbitmap_alloc_with_popcount,
4268         sbitmap_copy, sbitmap_copy_n, sbitmap_equal, sbitmap_empty_p,
4269         sbitmap_union_of_diff_cg, sbitmap_union_of_diff, sbitmap_not,
4270         sbitmap_difference, sbitmap_any_common_bits, sbitmap_a_and_b_cg,
4271         sbitmap_a_and_b, sbitmap_a_xor_b_cg, sbitmap_a_xor_b,
4272         sbitmap_a_or_b_cg, sbitmap_a_or_b, sbitmap_a_subset_b_p,
4273         sbitmap_a_or_b_and_c_cg, sbitmap_a_or_b_and_c,
4274         sbitmap_a_and_b_or_c_cg, sbitmap_a_and_b_or_c,
4275         sbitmap_first_set_bit, sbitmap_last_set_bit, dump_sbitmap,
4276         dump_sbitmap_file, debug_sbitmap, popcount_table,
4277         sbitmap_popcount): Constify.
4278         * sbitmap.h (const_sbitmap, const_sbitmap_ptr): New.
4279         (sbitmap_iterator, sbitmap_iter_init, dump_sbitmap,
4280         dump_sbitmap_file, sbitmap_copy, sbitmap_copy_n, sbitmap_equal,
4281         sbitmap_empty_p, sbitmap_union_of_diff, sbitmap_union_of_diff_cg,
4282         sbitmap_difference, sbitmap_not, sbitmap_a_or_b_and_c,
4283         sbitmap_a_or_b_and_c_cg, sbitmap_a_and_b_or_c,
4284         sbitmap_a_and_b_or_c_cg, sbitmap_any_common_bits, sbitmap_a_and_b,
4285         sbitmap_a_and_b_cg, sbitmap_a_or_b, sbitmap_a_or_b_cg,
4286         sbitmap_a_xor_b, sbitmap_a_xor_b_cg, sbitmap_a_subset_b_p,
4287         sbitmap_first_set_bit, sbitmap_last_set_bit, debug_sbitmap,
4288         sbitmap_popcount, sbitmap_verify_popcount): Constify.
4289
4290 2007-07-25  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
4291
4292         * bitmap.c (hash_descriptor, eq_descriptor, bitmap_element_zerop,
4293         bitmap_copy, bitmap_clear_bit, popcount_table, bitmap_count_bits,
4294         bitmap_first_set_bit, bitmap_and, bitmap_and_into,
4295         bitmap_elt_copy, bitmap_and_compl, bitmap_and_compl_into,
4296         bitmap_compl_and_into, bitmap_elt_ior, bitmap_ior,
4297         bitmap_ior_into, bitmap_xor, bitmap_xor_into, bitmap_equal_p,
4298         bitmap_intersect_p, bitmap_intersect_compl_p,
4299         bitmap_ior_and_compl, bitmap_ior_and_compl_into,
4300         debug_bitmap_file, debug_bitmap, bitmap_print, bitmap_hash):
4301         Constify.
4302         * bitmap.h (bitmap_copy, bitmap_equal_p, bitmap_intersect_p,
4303         bitmap_intersect_compl_p, bitmap_count_bits, bitmap_and,
4304         bitmap_and_into, bitmap_and_compl, bitmap_and_compl_into,
4305         bitmap_compl_and_into, bitmap_ior, bitmap_ior_into, bitmap_xor,
4306         bitmap_xor_into, bitmap_ior_and_compl, bitmap_ior_and_compl_into,
4307         debug_bitmap, debug_bitmap_file, bitmap_print,
4308         bitmap_first_set_bit, bitmap_hash, bmp_iter_set_init,
4309         bmp_iter_and_init, bmp_iter_and_compl_init): Likewise.
4310
4311 2007-07-25  Daniel Berlin  <dberlin@dberlin.org>
4312
4313         * config/darwin.c (darwin_override_options): Additional fix for
4314         debug info formats that don't support var tracking.
4315
4316 2007-07-25  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
4317
4318         * cselib.c (entry_and_rtx_equal_p): Constify.
4319         * gengtype.c (output_mangled_typename, write_types, write_local):
4320         Likewise.
4321         * gengtype.h (const_type_p): New.
4322         * see.c (eq_descriptor_extension, hash_descriptor_extension):
4323         Constify.
4324         * tlink.c (scan_linker_output): De-constify.
4325         * tree-ssa-loop-im.c (memref_eq): Constify.
4326         * tree-ssa-structalias.c (const_shared_bitmap_info_t): New.
4327         (shared_bitmap_hash, shared_bitmap_eq): Constify.
4328
4329 2007-07-25  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
4330
4331         * c-common.c (fname_as_string, c_type_hash): Constify.
4332         * c-typeck.c (free_all_tagged_tu_seen_up_to): Likewise.
4333         * cgraph.c (edge_hash, edge_eq): Likewise.
4334         * dwarf2out.c (decl_die_table_eq, decl_loc_table_eq): Likewise.
4335         * emit-rtl.c (mem_attrs_htab_eq, reg_attrs_htab_hash,
4336         reg_attrs_htab_eq): Likewise.
4337         * except.c (t2r_eq, t2r_hash, ttypes_filter_eq, ehl_hash, ehl_eq):
4338         Likewise.
4339         * genautomata.c (const_reserv_sets_t, const_unit_decl_t,
4340         const_decl_t, const_state_t, const_automata_list_el_t): New.
4341         (first_out_arc, DECL_UNIT, DECL_BYPASS, DECL_AUTOMATON, DECL_EXCL,
4342         DECL_PRESENCE, DECL_ABSENCE, DECL_RESERV, DECL_INSN_RESERV,
4343         automaton_decl_hash, automaton_decl_eq_p, insn_decl_hash,
4344         insn_decl_eq_p, decl_hash, decl_eq_p, alt_state_cmp,
4345         reserv_sets_cmp, reserv_sets_eq, state_hash, state_eq_p,
4346         automata_list_hash, automata_list_eq_p, compare_states_for_equiv,
4347         compare_max_occ_cycle_nums, out_state_arcs_num,
4348         compare_transition_els_num, units_cmp, state_reservs_cmp):
4349         Constify.
4350         * genmodes.c (cmp_modes): Likewise.
4351         * ggc-common.c (saving_htab_hash, saving_htab_eq): Likewise.
4352         * gimplify.c (compare_case_labels): Likewise.
4353         * ipa-type-escape.c (get_name_of_type, type_brand_s): Likewise.
4354         * loop-unroll.c (si_info_hash, ve_info_hash): Likewise.
4355         * matrix-reorg.c (mtt_info_hash): Likewise.
4356         * postreload-gcse.c (hash_expr_for_htab, expr_equiv_p): Likewise.
4357         * rtl-factoring.c (const_p_hash_bucket, const_p_hash_elem): New.
4358         (htab_hash_bucket, htab_hash_elem): Constify.
4359         * tree-browser.c (TB_parent_eq): Likewise.
4360         * tree-scalar-evolution.c (hash_scev_info): Likewise.
4361         * tree-ssa-alias.c (sort_tags_by_id): Likewise.
4362         * tree-ssa-coalesce.c (const_coalesce_pair_p): New.
4363         (coalesce_pair_map_hash, coalesce_pair_map_eq, compare_pairs):
4364         Constify.
4365         * tree-ssa-dom.c (avail_expr_hash, avail_expr_eq): Likewise.
4366         * tree-ssa-pre.c (const_expr_pred_trans_t): New.
4367         (expr_pred_trans_hash, expr_pred_trans_eq): Constify.
4368         * tree-ssa-sccvn.c (const_vn_binary_op_t, const_vn_unary_op_t,
4369         const_vn_phi_t, const_vn_reference_op_t, const_vn_reference_t):
4370         New.
4371         (vn_reference_op_eq, vn_reference_hash, vn_reference_eq,
4372         vn_unary_op_hash, vn_unary_op_eq, vn_binary_op_hash,
4373         vn_binary_op_eq, vn_phi_hash, vn_phi_eq): Constify.
4374         * tree-ssa-threadupdate.c (redirection_data_hash,
4375         redirection_data_eq): Likewise. 
4376         * tree-ssa-uncprop.c (equiv_hash, equiv_eq): Likewise.
4377         * tree-ssa.c (var_ann_eq): Likewise.
4378         * tree-vrp.c (compare_case_labels): Likewise.
4379         * tree.c (int_cst_hash_hash, int_cst_hash_eq,
4380         tree_map_base_marked_p, type_hash_marked_p, tree_check_failed,
4381         tree_not_check_failed, tree_class_check_failed,
4382         tree_range_check_failed, tree_not_class_check_failed,
4383         omp_clause_check_failed, omp_clause_range_check_failed,
4384         tree_contains_struct_check_failed, tree_operand_check_failed):
4385         Likewise. 
4386         * tree.h (tree_contains_struct_check_failed, tree_check_failed,
4387         tree_not_check_failed, tree_class_check_failed,
4388         tree_range_check_failed, tree_not_class_check_failed,
4389         tree_operand_check_failed, omp_clause_operand_check_failed,
4390         tree_operand_length): Likewise. 
4391         * var-tracking.c (const_variable): New.
4392         (variable_htab_hash, variable_htab_eq): Constify.
4393         * varasm.c (const_desc_hash): Likewise.
4394
4395 2007-07-25  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
4396
4397         * expr.c (handled_component_p): Constify.
4398         * fold-const.c (fit_double_type): Likewise.
4399         * real.h (real_value_from_int_cst): Likewise.
4400         * tree-flow-inline.h (gimple_in_ssa_p,
4401         gimple_aliases_computed_p, gimple_addressable_vars,
4402         gimple_call_clobbered_vars, gimple_referenced_vars,
4403         gimple_global_var, gimple_nonlocal_all, gimple_var_anns,
4404         end_htab_p, end_referenced_vars_p, var_ann, function_ann,
4405         may_aliases, end_readonly_imm_use_p, has_zero_uses,
4406         has_single_use, single_imm_use, num_imm_uses, is_exec_stmt,
4407         is_label_stmt, is_global_var, phi_ssa_name_p,
4408         factoring_name_p, is_call_clobbered, tree_common_ann,
4409         op_iter_done, end_imm_use_stmt_p, end_imm_use_on_stmt_p,
4410         unmodifiable_var_p, array_ref_contains_indirect_ref,
4411         ref_contains_array_ref, lookup_subvars_for_var,
4412         var_can_have_subvars, overlap_subvar, gimple_ssa_operands,
4413         gimple_mem_ref_stats): Likewise.
4414         * tree-flow.h (tree_common_ann, var_ann, function_ann,
4415         may_aliases, is_exec_stmt, is_label_stmt,
4416         ref_contains_array_ref, array_ref_contains_indirect_ref,
4417         var_can_have_subvars, overlap_subvar, is_call_clobbered,
4418         unmodifiable_var_p): Likewise.
4419         * tree-gimple.c (is_gimple_min_invariant): Likewise.
4420         * tree-gimple.h (is_gimple_min_invariant): Likewise. 
4421         * tree.c (type_hash_list, attribute_hash_list, tree_size,
4422         cst_and_fits_in_hwi, real_value_from_int_cst,
4423         build_real_from_int_cst, integer_zerop, integer_onep,
4424         integer_all_onesp, integer_pow2p, integer_nonzerop, tree_log2,
4425         tree_floor_log2, real_zerop, real_onep, real_twop,
4426         real_minus_onep, really_constant_p, purpose_member, chain_member,
4427         list_length, fields_length, int_size_in_bytes, bit_position,
4428         int_bit_position, byte_position, int_byte_position, expr_align,
4429         array_type_nelts, tree_node_structure,
4430         type_contains_placeholder_1, iterative_hash_pointer,
4431         is_attribute_with_length_p, is_attribute_p, check_qualified_type,
4432         tree_map_base_eq, type_hash_list, type_hash_eq,
4433         attribute_hash_list, type_num_arguments, tree_int_cst_equal,
4434         tree_int_cst_lt, tree_int_cst_compare, host_integerp,
4435         tree_low_cst, tree_int_cst_msb, tree_int_cst_sgn,
4436         simple_cst_list_equal, compare_tree_int, iterative_hash_expr,
4437         int_fits_type_p, get_containing_scope, decl_function_context,
4438         decl_type_context, omp_clause_operand_check_failed,
4439         initializer_zerop, int_cst_value, num_ending_zeros): Likewise.
4440         * tree.h (omp_clause_operand_check_failed, tree_size,
4441         build_real_from_int_cst, array_type_nelts, purpose_member,
4442         tree_int_cst_equal, tree_int_cst_lt, tree_int_cst_compare,
4443         host_integerp, tree_low_cst, tree_int_cst_msb, tree_int_cst_sgn,
4444         is_attribute_p, check_qualified_type, expr_align,
4445         int_size_in_bytes, bit_position, int_bit_position, byte_position,
4446         int_byte_position, list_length, fields_length, initializer_zerop,
4447         integer_zerop, integer_onep, integer_all_onesp, integer_pow2p,
4448         integer_nonzerop, cst_and_fits_in_hwi, num_ending_zeros,
4449         tree_node_structure, handled_component_p, get_containing_scope,
4450         decl_function_context, decl_type_context, real_zerop,
4451         type_num_arguments, fit_double_type, really_constant_p,
4452         int_fits_type_p, tree_log2, tree_floor_log2, iterative_hash_expr,
4453         compare_tree_int, chain_member, simple_cst_list_equal, real_onep,
4454         real_twop, real_minus_onep, int_cst_value): Likewise.
4455
4456 2007-07-25  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
4457
4458         * cfglayout.c (insn_scope, insn_line): Constify.
4459         * emit-rtl.c (const_int_htab_hash, const_int_htab_eq,
4460         const_double_htab_hash, const_double_htab_eq,
4461         mem_attrs_htab_hash): Likewise.
4462         * loop-iv.c (biv_eq): Likewise.
4463         * print-rtl.c (print_rtx, print_decl_name, print_mem_expr,
4464         print_inline_rtx, debug_rtx, debug_rtx_list, debug_rtx_range,
4465         debug_rtx_find, print_rtl, print_rtl_single, print_simple_rtl):
4466         Likewise. 
4467         * rtl-error.c (location_for_asm, diagnostic_for_asm,
4468         error_for_asm, warning_for_asm, _fatal_insn,
4469         _fatal_insn_not_found): Likewise. 
4470         * rtl.c (rtx_size, shared_const_p, shallow_copy_rtx_stat,
4471         rtx_equal_p, rtl_check_failed_bounds, rtl_check_failed_type1,
4472         rtl_check_failed_type2, rtl_check_failed_code1,
4473         rtl_check_failed_code2, rtl_check_failed_code_mode,
4474         rtvec_check_failed_bounds, rtl_check_failed_flag): Likewise.
4475         * rtl.h (rtl_check_failed_bounds, rtl_check_failed_type1,
4476         rtl_check_failed_type2, rtl_check_failed_code1,
4477         rtl_check_failed_code2, rtl_check_failed_code_mode,
4478         rtvec_check_failed_bounds, rtl_check_failed_flag, LABEL_KIND,
4479         SET_LABEL_KIND, rhs_regno, subreg_lsb, subreg_regno, subreg_nregs,
4480         shared_const_p, rtx_size, shallow_copy_rtx_stat, rtx_equal_p,
4481         get_pool_mode, insn_line, insn_file, simplify_replace_rtx,
4482         mode_signbit_p, rtx_addr_can_trap_p, nonzero_address_p,
4483         rtx_unstable_p, get_integer_term, get_related_value,
4484         offset_within_block_p, reg_mentioned_p, count_occurrences,
4485         reg_referenced_p, reg_used_between_p, no_labels_between_p,
4486         single_set_2, multiple_sets, set_noop_p, refers_to_regno_p,
4487         reg_overlap_mentioned_p, dead_or_set_p, dead_or_set_regno_p,
4488         find_reg_note, find_regno_note, find_reg_equal_equiv_note,
4489         find_constant_src, find_reg_fusage, find_regno_fusage,
4490         pure_call_p, remove_note, side_effects_p, volatile_refs_p,
4491         volatile_insn_p, may_trap_p, may_trap_after_code_motion_p,
4492         may_trap_or_fault_p, inequality_comparisons_p, tablejump_p,
4493         computed_jump_p, auto_inc_p, in_expr_list_p,
4494         remove_node_from_expr_list, loc_mentioned_in_p,
4495         label_is_jump_target_p, reversed_comparison_code_parts,
4496         debug_rtx, debug_rtx_list, debug_rtx_range, debug_rtx_find,
4497         print_mem_expr, print_rtl, print_simple_rtl, print_rtl_single,
4498         print_inline_rtx): Likewise.
4499         * rtlanal.c (covers_regno_p, covers_regno_no_parallel_p,
4500         computed_jump_p_1, nonzero_bits1, rtx_unstable_p,
4501         rtx_addr_can_trap_p_1, rtx_addr_can_trap_p, nonzero_address_p,
4502         get_integer_term, get_related_value, offset_within_block_p,
4503         count_occurrences, reg_mentioned_p, no_labels_between_p,
4504         reg_used_between_p, reg_referenced_p, single_set_2,
4505         multiple_sets, set_noop_p, refers_to_regno_p,
4506         reg_overlap_mentioned_p, dead_or_set_p,
4507         covers_regno_no_parallel_p, covers_regno_p,
4508         dead_or_set_regno_p, find_reg_note, find_regno_note,
4509         find_reg_equal_equiv_note, find_constant_src, find_reg_fusage,
4510         find_regno_fusage, pure_call_p, remove_note, in_expr_list_p,
4511         remove_node_from_expr_list, volatile_insn_p, volatile_refs_p,
4512         side_effects_p, may_trap_p_1, may_trap_p,
4513         may_trap_after_code_motion_p, may_trap_or_fault_p,
4514         inequality_comparisons_p, tablejump_p, computed_jump_p_1,
4515         computed_jump_p, auto_inc_p, loc_mentioned_in_p, subreg_lsb,
4516         subreg_regno, subreg_nregs, label_is_jump_target_p): Likewise.
4517         * simplify-rtx.c (neg_const_int, plus_minus_operand_p,
4518         mode_signbit_p, simplify_replace_rtx, plus_minus_operand_p):
4519         Likewise. 
4520         * toplev.h (_fatal_insn_not_found, _fatal_insn, error_for_asm,
4521         warning_for_asm): Likewise.
4522         * tree.h (print_rtl): Likewise.
4523         * varasm.c (get_pool_mode): Likewise.
4524
4525 2007-07-25  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
4526
4527         * c-lex.c (c_lex_with_flags, lex_string): Constify.
4528         * c-ppoutput.c (print_line, pp_dir_change): Likewise.
4529         * c-typeck.c (free_all_tagged_tu_seen_up_to): Likewise.
4530         * cfg.c (bb_copy_original_hash, bb_copy_original_eq): Likewise.
4531         * cfgloop.c (loop_exit_hash, loop_exit_eq): Likewise.
4532         * ddg.c (compare_sccs): Likewise.
4533         * df-scan.c (df_ref_compare, df_mw_compare): Likewise.
4534         * dfp.c (decimal_real_from_string, decimal_to_decnumber,
4535         decimal_to_binary, decimal_do_compare, decimal_real_to_decimal,
4536         decimal_do_fix_trunc, decimal_real_to_integer,
4537         decimal_real_to_integer2, decimal_real_maxval): Likewise.
4538         * dse.c (const_group_info_t): New.
4539         (invariant_group_base_eq, invariant_group_base_hash): Constify.
4540         * dwarf2out.c (const_dw_die_ref): New.
4541         (decl_die_table_hash, decl_die_table_eq, file_info_cmp): Constify.
4542         * tree-browser.c (TB_parent_eq): Likewise.
4543         * unwind-dw2-fde.c (__register_frame_info_bases,
4544         __deregister_frame_info_bases, fde_unencoded_compare, fde_split,
4545         add_fdes, linear_search_fdes, binary_search_unencoded_fdes):
4546         Likewise.
4547         * unwind-dw2-fde.h (get_cie, next_fde): Likewise.
4548         * unwind-dw2.c (uw_frame_state_for): Likewise.
4549         * value-prof.c (histogram_hash, histogram_eq): Likewise.
4550         * value-prof.h (const_histogram_value): New.
4551
4552 2007-07-25  Richard Sandiford  <richard@codesourcery.com>
4553
4554         * config/mips/mips.c (machine_function): Add
4555         initialized_mips16_gp_pseudo_p.
4556         (mips16_gp_pseudo_reg): Do not emit the initialization of
4557         mips16_gp_pseudo_rtx when being called from the gimple cost-
4558         calculation routines; emit it on the first use outside those
4559         routines.
4560
4561 2007-07-25  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
4562
4563         * coretypes.h (const_bitmap, const_rtx, const_rtvec, const_tree):
4564         New.
4565         
4566         * rtl.h (RTL_CHECK1, RTL_CHECK2, RTL_CHECKC1, RTL_CHECKC2,
4567         RTVEC_ELT, XWINT, XCWINT, XCMWINT, XCNMPRV, BLOCK_SYMBOL_CHECK,
4568         RTL_FLAG_CHECK1, RTL_FLAG_CHECK2, RTL_FLAG_CHECK3,
4569         RTL_FLAG_CHECK4, RTL_FLAG_CHECK5, RTL_FLAG_CHECK6,
4570         RTL_FLAG_CHECK7, RTL_FLAG_CHECK8, LABEL_KIND, SET_LABEL_KIND):
4571         Preserve const-ness of parameters through use of __typeof(),
4572         also constify and tidy.
4573         
4574         * tree.h (TREE_CHECK, TREE_NOT_CHECK, TREE_CHECK2,
4575         TREE_NOT_CHECK2, TREE_CHECK3, TREE_NOT_CHECK3, TREE_CHECK4,
4576         NON_TREE_CHECK4, TREE_CHECK5, TREE_NOT_CHECK5,
4577         CONTAINS_STRUCT_CHECK, TREE_CLASS_CHECK, TREE_RANGE_CHECK,
4578         OMP_CLAUSE_SUBCODE_CHECK, OMP_CLAUSE_RANGE_CHECK, EXPR_CHECK,
4579         GIMPLE_STMT_CHECK, NON_TYPE_CHECK, TREE_VEC_ELT_CHECK,
4580         PHI_NODE_ELT_CHECK, OMP_CLAUSE_ELT_CHECK, TREE_OPERAND_CHECK,
4581         TREE_OPERAND_CHECK_CODE, GIMPLE_STMT_OPERAND_CHECK,
4582         TREE_RTL_OPERAND_CHECK, TREE_CHAIN, TREE_TYPE): Likewise.
4583
4584 2007-07-25  Julian Brown  <julian@codesourcery.com>
4585             Mark Shinwell  <shinwell@codesourcery.com>
4586
4587         * config/alpha/alpha.c (alpha_mangle_fundamental_type): Rename to...
4588         (alpha_mangle_type): This.
4589         (TARGET_MANGLE_FUNDAMENTAL_TYPE): Don't define.
4590         (TARGET_MANGLE_TYPE): Define this instead.
4591         * config/arm/arm-protos.h (arm_mangle_type): Add prototype.
4592         * config/arm/arm.c (TARGET_MANGLE_TYPE): Define target hook.
4593         (arm_init_neon_builtins): Fix comment.
4594         (arm_mangle_map_entry): New.
4595         (arm_mangle_map): New.
4596         (arm_mangle_type): New.
4597         * config/i386/i386.c (ix86_mangle_fundamental_type): Rename to...
4598         (ix86_mangle_type): This. Use TYPE_MAIN_VARIANT and restrict
4599         mangled types to VOID_TYPE, BOOLEAN_TYPE, INTEGER_TYPE, REAL_TYPE.
4600         (TARGET_MANGLE_FUNDAMENTAL_TYPE): Don't define.
4601         (TARGET_MANGLE_TYPE): Define this instead.
4602         * config/ia64/ia64.c (ia64_mangle_fundamental_type): Rename to...
4603         (ia64_mangle_type): This. Use TYPE_MAIN_VARIANT  and restrict
4604         mangled types to VOID_TYPE, BOOLEAN_TYPE, INTEGER_TYPE, REAL_TYPE.
4605         (TARGET_MANGLE_FUNDAMENTAL_TYPE): Don't define.
4606         (TARGET_MANGLE_TYPE): Define this instead.
4607         * config/rs6000/rs6000.c (rs6000_mangle_fundamental_type): Rename
4608         to...
4609         (rs6000_mangle_type): This. Use TYPE_MAIN_VARIANT.
4610         (TARGET_MANGLE_FUNDAMENTAL_TYPE): Don't define.
4611         (TARGET_MANGLE_TYPE): Define this instead.
4612         * config/s390/s390.c (s390_mangle_fundamental_type): Rename to...
4613         (s390_mangle_type): This.
4614         (TARGET_MANGLE_FUNDAMENTAL_TYPE): Don't define.
4615         (TARGET_MANGLE_TYPE): Define this instead.
4616         * config/sparc/sparc.c (sparc_mangle_fundamental_type): Rename to...
4617         (sparc_mangle_type): This.
4618         (TARGET_MANGLE_FUNDAMENTAL_TYPE): Don't define.
4619         (TARGET_MANGLE_TYPE): Define this instead.
4620         * cp/mangle.c (write_type): Call mangle_type target hook on all
4621         types before mangling.  Use original type, not main variant, as
4622         argument.
4623         * target-def.h (TARGET_MANGLE_FUNDAMENTAL_TYPE): Rename hook to...
4624         (TARGET_MANGLE_TYPE): This.
4625         * target.h (gcc_target): Rename mangle_fundamental_type to
4626         mangle_type.
4627         * doc/tm.texi (TARGET_MANGLE_FUNDAMENTAL_TYPE): Rename section to...
4628         (TARGET_MANGLE_TYPE): This. Note slightly different semantics.
4629
4630 2007-07-25  Julian Brown  <julian@codesourcery.com>
4631             Paul Brook  <paul@codesourcery.com>
4632             Joseph Myers  <joseph@codesourcery.com>
4633             Mark Shinwell  <shinwell@codesourcery.com>
4634
4635         * Makefile.in (TEXI_GCC_FILES): Add arm-neon-intrinsics.texi.
4636         * config.gcc (arm*-*-*): Add arm_neon.h to extra headers.
4637         (with_fpu): Allow --with-fpu=neon.
4638         * config/arm/aof.h (ADDITIONAL_REGISTER_NAMES): Add Q0-Q15.
4639         * config/arm/aout.h (ADDITIONAL_REGISTER_NAMES): Add Q0-Q15.
4640         * config/arm/arm-modes.def (EI, OI, CI, XI): New modes.
4641         * config/arm/arm-protos.h (neon_immediate_valid_for_move)
4642         (neon_immediate_valid_for_logic, neon_output_logic_immediate)
4643         (neon_pairwise_reduce, neon_expand_vector_init, neon_reinterpret)
4644         (neon_emit_pair_result_insn, neon_disambiguate_copy)
4645         (neon_vector_mem_operand, neon_struct_mem_operand, output_move_quad)
4646         (output_move_neon): Add prototypes.
4647         * config/arm/arm.c (FL_NEON): New flag for NEON processor capability.
4648         (all_fpus): Add FPUTYPE_NEON.
4649         (fp_model_for_fpu): Add NEON field.
4650         (arm_return_in_memory): Return vectors <= 16 bytes in ARM registers.
4651         (arm_arg_partial_bytes): Allow NEON vectors to be passed partially
4652         in registers.
4653         (arm_legitimate_address_p): Don't support fancy addressing for NEON
4654         structure moves.
4655         (thumb2_legitimate_address_p): Likewise.
4656         (neon_valid_immediate): Recognize and prepare constants suitable for
4657         NEON instructions.
4658         (neon_immediate_valid_for_move): New function. Recognize and prepare
4659         immediates for NEON move instructions.
4660         (neon_immediate_valid_for_logic): New function. Recognize and
4661         prepare immediates for NEON logic instructions.
4662         (neon_output_logic_immediate): New function. Create asm string
4663         suitable for outputting immediate logic instructions.
4664         (neon_pairwise_reduce): New function. Implement reduction using
4665         pairwise operations.
4666         (neon_expand_vector_init): New function. Expand a (possibly
4667         non-constant) vector initialization.
4668         (neon_vector_mem_operand): New function. Memory operands supported
4669         for quad-word loads/stores to/from ARM or NEON registers. Don't
4670         allow base+offset addressing for core regs.
4671         (neon_struct_mem_operand): New function. Valid mems for NEON
4672         structure moves.
4673         (coproc_secondary_reload_class): Enable NEON registers to be loaded
4674         from neon_vector_mem_operand addresses without a secondary register.
4675         (add_minipool_forward_ref): Handle >8-byte minipool entries.
4676         (add_minipool_backward_ref): Likewise.
4677         (dump_minipool): Likewise.
4678         (push_minipool_fix): Likewise.
4679         (output_move_quad): New function. Output quad-word moves, loads and
4680         stores using ARM registers.
4681         (output_move_vfp): Add support for vectors in VFP (NEON) D
4682         registers.
4683         (output_move_neon): Output a NEON load/store to/from a quadword
4684         register.
4685         (arm_print_operand): Implement new codes:
4686         - 'c' for unadorned integers (without a # sign).
4687         - 'J', 'K' for reg+2/reg+3, reg+3/reg+2 in little/big-endian
4688         mode.
4689         - 'e', 'f' for the low and high D parts of a NEON Q register.
4690         - 'q' outputs a NEON Q register.
4691         - 'h' outputs ranges of D registers for VLDM/VSTM etc.
4692         - 'T' prints NEON opcode features from a coded bitmask.
4693         - 'F' is similar to T, but signed/unsigned codes both print as
4694         'i'.
4695         - 't' is similar to T, but 'u' is printed instead of 'p'.
4696         - 'O' prints 'r' if NEON instruction should perform rounding (as
4697         specified by bitmask), else prints nothing.
4698         - '#' is a punctuation character to stop operand numbers from
4699         running together with following digits in the assembler
4700         strings for instructions (when using mode attributes).
4701         (arm_assemble_integer): Handle extra NEON vector modes. Permute
4702         constant vectors in big-endian mode, where necessary.
4703         (arm_hard_regno_mode_ok): Allow vectors in VFP/NEON registers.
4704         Handle EI, OI, CI, XI modes.
4705         (ashlv4hi3, ashlv2si3, lshrv4hi3, lshrv2si3, ashrv4hi3)
4706         (ashrv2si3): Rename IWMMXT2_BUILTINs to...
4707         (ashlv4hi3_iwmmxt, ashlv2si3_iwmmxt, lshrv4hi3_iwmmxt)
4708         (lshrv2si3_iwmmxt, ashrv4hi3_iwmmxt, ashrv2si3_iwmmxt): New names.
4709         (neon_builtin_type_bits): Add enumeration, one bit for each vector
4710         type.
4711         (v8qi_UP, v4hi_UP, v2si_UP, v2sf_UP, di_UP, v16qi_UP, v8hi_UP)
4712         (v4si_UP, v4sf_UP, v2di_UP, ti_UP, ei_UP, oi_UP, UP): Define macros
4713         to turn v8qi, etc. into bits defined above.
4714         (neon_itype): New enumeration. Classifications of NEON builtins.
4715         (neon_builtin_datum): Define struct. Contains information about
4716         a single builtin (with multiple modes).
4717         (CF): Define helper macro for...
4718         (VAR1...VAR10): Define builtins with a type, name and 1-10 different
4719         modes.
4720         (neon_builtin_data): New array. Define information about builtins
4721         for use during initialization/expansion.
4722         (arm_init_neon_builtins): New function.
4723         (arm_init_builtins): Call arm_init_neon_builtins if TARGET_NEON is
4724         true.
4725         (neon_builtin_compare): New function.
4726         (locate_neon_builtin_icode): New function. Find an insn code for a
4727         builtin given a function code for that builtin. Also return type of
4728         builtin (NEON_BINOP, NEON_UNOP etc.).
4729         (builtin_arg): New enumeration. Types of arguments for builtins.
4730         (arm_expand_neon_args): New function. Expand a generic NEON builtin.
4731         Takes a variable argument list of builtin_arg types, terminated by
4732         NEON_ARG_STOP.
4733         (arm_expand_neon_builtin): New function. Expand a NEON builtin.
4734         (neon_reinterpret): New function. Expand NEON reinterpret intrinsic.
4735         (neon_emit_pair_result_insn): New function. Support returning pairs
4736         of vectors via a pointer.
4737         (neon_disambiguate_copy): New function. Set up operands for a
4738         multi-word copy such that registers do not get clobbered.
4739         (arm_expand_builtin): Call arm_expand_neon_builtin if fcode >=
4740         ARM_BUILTIN_NEON_BASE.
4741         (arm_file_start): Set float-abi attribute for NEON.
4742         (arm_vector_mode_supported_p): Enable NEON vector modes.
4743         (arm_mangle_map_entry): New.
4744         (arm_mangle_map): New.
4745         (arm_mangle_vector_type): New.
4746         * config/arm/arm.h (TARGET_CPU_CPP_BUILTINS): Define __ARM_NEON__
4747         when appropriate.
4748         (TARGET_NEON): New macro. Target supports NEON.
4749         (fputype): Add FPUTYPE_NEON.
4750         (UNITS_PER_SIMD_WORD): Define. Allow quad-word registers to be used
4751         for vectorization based on command-line arg.
4752         (NEON_REGNO_OK_FOR_NREGS): Define.
4753         (VALID_NEON_DREG_MODE, VALID_NEON_QREG_MODE)
4754         (VALID_NEON_STRUCT_MODE): Define.
4755         (PRINT_OPERAND_PUNCT_VALID_P): '#' is valid punctuation.
4756         (arm_builtins): Add ARM_BUILTIN_NEON_BASE.
4757         * config/arm/arm.md (VUNSPEC_POOL_16): Insert constant for unspec.
4758         (consttable_16): Add pattern for outputting 16-byte minipool
4759         entries.
4760         (movv2si, movv4hi, movv8qi): Remove blank expanders (redefined in
4761         vec-common.md).
4762         (vec-common.md, neon.md): Include md files.
4763         * config/arm/arm.opt (mvectorize-with-neon-quad): Add option.
4764         * config/arm/constraints.md (constraint "Dn", "Dl", "DL"): Define.
4765         (memory_constraint "Ut", "Un", "Us"): Define.
4766         * config/arm/iwmmxt.md (VMMX, VSHFT): New mode macros.
4767         (MMX_char): New mode attribute.
4768         (addv8qi3, addv4hi3, addv2si3): Remove. Replace with...
4769         (*add<mode>3_iwmmxt): New insn pattern.
4770         (subv8qi3, subv4hi3, subv2si3): Remove. Replace with...
4771         (*sub<mode>3_iwmmxt): New insn pattern.
4772         (mulv4hi3): Rename to...
4773         (*mulv4hi3_iwmmxt): This.
4774         (smaxv8qi3, smaxv4hi3, smaxv2si3, umaxv8qi3, umaxv4hi3)
4775         (umaxv2si3, sminv8qi3, sminv4hi3, sminv2si3, uminv8qi3)
4776         (uminv4hi3, uminv2si3): Remove. Replace with...
4777         (*smax<mode>3_iwmmxt, *umax<mode>3_iwmmxt, *smin<mode>3_iwmmxt)
4778         (*umin<mode>3_iwmmxt): These.
4779         (ashrv4hi3, ashrv2si3, ashrdi3_iwmmxt): Replace with...
4780         (ashr<mode>3_iwmmxt): This new pattern.
4781         (lshrv4hi3, lshrv2si3, lshrdi3_iwmmxt): Replace with...
4782         (lshr<mode>3_iwmmxt): This new pattern.
4783         (ashlv4hi3, ashlv2si3, ashldi3_iwmmxt): Replace with...
4784         (ashl<mode>3_iwmmxt): This new pattern.
4785         * config/arm/neon-docgen.ml: New file. Generate documentation for
4786         intrinsics.
4787         * config/arm/neon-gen.ml: New file. Generate arm_neon.h header.
4788         * config/arm/arm_neon.h: New (autogenerated).
4789         * config/arm/neon-testgen.ml: New file. Generate NEON tests
4790         automatically.
4791         * config/arm/neon.md: New file. Define NEON instructions.
4792         * config/arm/neon.ml: New file. Abstract description of NEON
4793         instructions, used to generate arm_neon.h header, documentation and
4794         tests.
4795         * config/arm/t-arm (MD_INCLUDES): Add vec-common.md, neon.md.
4796         * vec-common.md: New file. Shared parts for iWMMXt and NEON vector
4797         support.
4798         * doc/extend.texi (ARM Built-in Functions): Rename and remove
4799         extraneous comma.
4800         (ARM NEON Intrinsics): New subsection.
4801         * doc/arm-neon-intrinsics.texi: New (autogenerated).
4802
4803 2007-07-25  Danny Smith   <dannysmith@users.sourceforge.net>
4804
4805         * config/i386/i386-protos.h (i386_pe_asm_file_end): Remove
4806         prototype.
4807
4808 2007-07-24  Jan Hubicka  <jh@suse.cz>
4809
4810         * regclass.c (move_table): New type.
4811         (move_cost, may_move_in_cost, may_move_out_cost): Use it.
4812         (init_move_cost): Break out from ...
4813         (init_reg_sets_1): ... here; simplify computation of
4814         have_regs-of_mode and contains_reg_of_mode.
4815         (record_reg_classes): Unswitch internal loops.
4816         (copy_cost): Trigger lazy initialization of move cost
4817         (record_address_regs): Likewise.
4818
4819 2007-07-24  Daniel Berlin  <dberlin@dberlin.org>
4820
4821         * config/darwin.c (darwin_override_options): Don't force on
4822         flag_var_tracking_uninit when no debug info is requested.
4823
4824 2007-07-25  Zdenek Dvorak  <dvorakz@suse.cz>
4825
4826         * cfgloop.c (init_loops_structure): New function.
4827         (flow_loops_find): Create root of the loop tree unconditionally.
4828
4829 2007-07-24  Daniel Jacobowitz  <dan@codesourcery.com>
4830
4831         * tree-ssa-ccp.c (fold_const_aggregate_ref): Use fold_convert.
4832
4833 2007-07-24  Jan Hubicka  <jh@suse.cz>
4834
4835         * caller-save.c: Include ggc.h, gt-caller-save.h
4836         (reg_save_code, reg_restore_code): Rename to ...
4837         (cached_reg_save_code, cached_reg_restore_code): ... those.
4838         (savepat, restpat, test_reg, test_mem, saveinsn, restinsn): New.
4839         (reg_save_code, reg_restore_code): New functions.
4840         (init_caller_save): Do not intialize
4841         reg_save_code/reg_restore_code tables.
4842         * Makefile.in: (gt-caller-save.h): New.
4843
4844 2007-07-24  Andreas Krebbel  <krebbel1@de.ibm.com>
4845
4846         * tree-ssa-ifcombine.c (ifcombine_ifandif): Use a ONE operand
4847         with the mode of the original operand instead of
4848         integer_one_node.
4849
4850 2007-07-23  Jan Hubicka  <jH@suse.cz>
4851
4852         * i386.c (ix86_secondary_memory_needed): Break out to...
4853         (inline_secondary_memory_needed): ... here.
4854         (ix86_memory_move_cost): Break out to ...
4855         (inline_memory_move_cost): ... here; add support for IN value of 2 for
4856         maximum of input and output; fix handling of Q_REGS on 64bit.
4857         (ix86_secondary_memory_needed): Microoptimize.
4858
4859 2007-07-23  Sebastian Pop  <sebpop@gmail.com>
4860
4861         * tree-data-ref.c (find_vertex_for_stmt, create_rdg_edge_for_ddr,
4862         create_rdg_edges_for_scalar, create_rdg_edges, create_rdg_vertices,
4863         stmts_from_loop, known_dependences_p, build_rdg): New.
4864         * tree-data-ref.h: Depends on graphds.h.
4865         (rdg_vertex, RDGV_STMT, rdg_dep_type, rdg_edge, RDGE_TYPE): New.
4866         (build_rdg): Declared.
4867         * Makefile.in (TREE_DATA_REF_H): Depends on graphds.h.
4868
4869 2007-07-23  Daniel Berlin  <dberlin@dberlin.org>
4870
4871         * tree-ssa-propagate.c (valid_gimple_expression_p): Match up with
4872         ccp_min_invariant.
4873
4874 2007-07-23  Peter Bergner  <bergner@vnet.ibm.com>
4875             Jakub Jelinek  <jakub@redhat.com>
4876
4877         PR middle-end/PR28690
4878         * optabs.c (expand_binop): (emit_cmp_and_jump_insns): Allow
4879         EQ compares.
4880         * rtlanal.c (commutative_operand_precedence): Prefer both REG_POINTER
4881         and MEM_POINTER operands over REG and MEM operands.
4882         (swap_commutative_operands_p): Change return value to bool.
4883         * rtl.h: Update the corresponding prototype.
4884         * tree-ssa-address.c (gen_addr_rtx): Use simplify_gen_binary
4885         instead of gen_rtx_PLUS.
4886         * simplify-rtx.c (simplify_plus_minus_op_data_cmp): Change return
4887         value to bool.  Change function arguments to rtx's and update code
4888         to match.
4889         (simplify_plus_minus): Update the simplify_plus_minus_op_data_cmp
4890         calls to match the new declaration.
4891         * simplify-rtx.c (simplify_associative_operation): Don't
4892         reorder simplify_binary_operation arguments.
4893
4894 2007-07-23  Richard Sandiford  <richard@codesourcery.com>
4895
4896         * config/mips/mips.c (override_options): Use mips_costs to derive
4897         the default branch cost.
4898         * config/mips/mips.h (BRANCH_COST): Use mips_branch_cost rather
4899         than mips_costs.
4900         * config/mips/mips.opt (mbranch-cost=): New option.
4901         * doc/invoke.texi (-mbranch-cost): Document new MIPS option.
4902
4903 2007-07-23  Richard Sandiford  <richard@codesourcery.com>
4904
4905         * config/mips/mips.h (GR_REG_CLASS_P, COP_REG_CLASS_P): Delete.
4906         (SECONDARY_MEMORY_NEEDED): Delete commented-out definition.
4907         * config/mips/mips.c (mips_register_move_cost): Use reg_class_subset_p
4908         instead of GR_REG_CLASS_P and COP_REG_CLASS_P.
4909
4910 2007-07-23  Richard Sandiford  <richard@codesourcery.com>
4911
4912         * config/mips/constraints.md (ks): New constraint.
4913         * config/mips/mips.md (*add<mode>3_sp1, *add<mode>3_sp2): Fold into...
4914         (*add<mode>3_mips16): ...here.
4915
4916 2007-07-21  Uros Bizjak  <ubizjak@gmail.com>
4917
4918         * optabs.h (enum optab_index): Add new OTI_signbit.
4919         (signbit_optab): Define corresponding macro.
4920         (enum insn_code signbit_optab[]): Remove array.
4921         * optabs.c (init_optabs): Initialize signbit_optab using init_optab.
4922         (expand_copysign_absneg): If back end provides signbit insn, use it
4923         instead of bit operations on floating point argument.
4924         * builtins.c (enum insn_code signbit_optab[]): Remove array.
4925         (expand_builtin_signbit): Check signbit_optab->handlers[].insn_code
4926         for availability of signbit insn.
4927
4928         * config/i386/i386.md (signbit<mode>2): New insn pattern to implement
4929         signbitf, signbit and signbitl built-ins as inline x87 intrinsics when
4930         SSE mode is not active.
4931         (isinf<mode>2): Disable for mfpmath=sse,387.
4932
4933 2007-07-22  Ben Elliston  <bje@au.ibm.com>
4934
4935         * regclass.c (invalid_mode_change_p): Attach ATTRIBUTE_UNUSED to
4936         `class' parameter.
4937         * struct-equiv.c (note_local_live): Likewise for `y_regno'.
4938
4939 2007-07-20  Richard Guenther  <rguenther@suse.de>
4940
4941         * tree-cfg.c (verify_expr): COND_EXPRs can have any
4942         integral typed condition.
4943         * tree-ssa.c (useless_type_conversion_p): Do not preserve
4944         booleanness.  Only preserve conversions from a non-base
4945         type to a base type, not in general between types with
4946         different TYPE_MIN_VALUE or TYPE_MAX_VALUE.
4947         * tree.def (COND_EXPR): Document that the condition
4948         can be of any integral type.
4949
4950 2007-07-20  Nigel Stephens  <nigel@mips.com>
4951             Richard Sandiford  <richard@codesourcery.com>
4952
4953         * config/mips/mips.h (mips_dwarf_regno): Declare.
4954         (DBX_REGISTER_NUMBER): Remove redundant brackets.
4955         (HI_REGNUM, LO_REGNUM): Define in an endian-dependent way.
4956         (AC1HI_REGNUM, AC1LO_REGNUM, AC2HI_REGNUM, AC2LO_REGNUM)
4957         (AC3HI_REGNUM, AC3LO_REGNUM, ACC_HI_REG_P): Delete.
4958         (reg_class): Rename HI_REG to MD0_REG and LO_REG to MD1_REG.
4959         (REG_CLASS_NAMES): Update accordingly.
4960         * config/mips/mips.c (mips_dwarf_regno): New array.
4961         (mips_regno_to_class): Rename HI_REG to MD0_REG and LO_REG to MD1_REG.
4962         (mips_subword): Remove special handling for accumulator registers.
4963         (override_options): Initiailize mips_dwarf_regno.  Remove use
4964         of ACC_HI_REG_P.
4965         (mips_swap_registers): New function.
4966         (mips_conditional_register_usage): Swap accumulator registers
4967         around if TARGET_LITTLE_ENDIAN.
4968         (mips_cannot_change_mode_class): Remove special treatment of ACC_REGS.
4969         * config/mips/constraints.md (h, l): Use the endianness to choose
4970         between MD0_REG and MD1_REG.
4971         * config/mips/mips.md (*mfhilo_<mode>_macc): Use a fixed-string,
4972         alternative-dependent template.
4973
4974 2007-07-20  Richard Sandiford  <richard@codesourcery.com>
4975
4976         * config/arm/arm.md (movsi): Use can_create_pseudo_p instead of
4977         no_new_pseudos.
4978
4979 2007-07-20  Zdenek Dvorak  <dvorakz@suse.cz>
4980
4981         * function.c (thread_prologue_and_epilogue_insns): Fix exit
4982         predecessor fallthru flags.
4983
4984 2007-07-20  Zdenek Dvorak  <dvorakz@suse.cz>
4985
4986         * tree-ssa-loop-niter.c (assert_loop_rolls_lt): Convert the operands
4987         of compare to the same type.
4988         * cfgloopmanip.c (add_loop): Update information about loop exits.
4989         (loop_version): Remove the innermost loop requirement.
4990         * tree-ssa-loop-manip.c (determine_exit_conditions): Convert bounds
4991         to sizetype for pointers.
4992
4993 2007-07-18  H.J. Lu  <hongjiu.lu@intel.com>
4994
4995         * Makefile.in (D32PBIT_FUNCS): Add _sd_to_tf and _tf_to_sd.
4996         (D64PBIT_FUNCS): Add _dd_to_tf and _tf_to_dd.
4997         (D128PBIT_FUNCS): Add _td_to_tf and _tf_to_td.
4998
4999         * config/dfp-bit.c: Empty for TFmode conversions.
5000
5001 2007-07-18  Caroline Tice  <ctice@apple.com>
5002         
5003         * var-tracking.c (find_src_status):  Check for  COND_EXEC insns
5004         and handle them correctly; check that src is not NULL before
5005         trying to use it.
5006         (find_src_set_src): Likewise.
5007         
5008 2007-07-18  Bob Wilson  <bob.wilson@acm.org>
5009         
5010         * config/xtensa/xtensa.c (xtensa_expand_mask_and_shift): New.
5011         (struct alignment_context, init_alignment_context): New.
5012         (xtensa_expand_compare_and_swap, xtensa_expand_atomic): New.
5013         * config/xtensa/xtensa.h (XCHAL_HAVE_RELEASE_SYNC): Add default.
5014         (XCHAL_HAVE_S32C1I): Likewise.
5015         (TARGET_RELEASE_SYNC, TARGET_S32C1I): New.
5016         * config/xtensa/xtensa.md (UNSPECV_MEMW): New constant.
5017         (UNSPECV_S32RI, UNSPECV_S32C1I): Likewise.
5018         (ATOMIC, HQI): New macros.
5019         (memory_barrier, *memory_barrier): New.
5020         (sync_lock_releasesi): New.
5021         (sync_compare_and_swapsi, sync_compare_and_swap<mode>): New.
5022         (sync_lock_test_and_set<mode>): New.
5023         (sync_<atomic><mode>): New.
5024         (sync_old_<atomic><mode>, sync_new_<atomic><mode>): New.
5025         * config/xtensa/xtensa-protos.h (xtensa_expand_compare_and_swap): New.
5026         (xtensa_expand_atomic): New.
5027         
5028 2007-07-18  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
5029
5030         PR target/30652
5031
5032         * builtins.c (expand_builtin_interclass_mathfn): Provide a generic
5033         transformation for builtin ISNORMAL.
5034         (expand_builtin): Handle BUILT_IN_ISNORMAL.
5035         * builtins.def (BUILT_IN_ISNORMAL): New.
5036         * doc/extend.texi: Document isnormal.
5037
5038 2007-07-18  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
5039
5040         PR target/30652
5041
5042         * builtins.c (expand_builtin_interclass_mathfn): Allow for missing
5043         optabs infrastructure.  Provide generic implementation for
5044         FINITE/ISFINITE.
5045         (expand_builtin): Handle FINITE/ISFINITE.
5046         (fold_builtin_classify): Make ISFINITE canonical instead of FINITE.
5047         (fold_builtin_1): Likewise.
5048
5049         * builtins.def (BUILT_IN_ISFINITE): New.
5050
5051         * doc/extend.texi: Document isfinite.
5052
5053 2007-07-18  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
5054
5055         PR target/30652
5056         PR middle-end/20558
5057
5058         * builtins.c (expand_builtin_interclass_mathfn): Provide a
5059         generic fallback for isinf.
5060         * c-cppbuiltin.c (builtin_define_float_constants): Move FP max
5061         calculation code ...
5062         * real.c (get_max_float): ... to here.
5063         * real.h (get_max_float): New.
5064
5065 2007-07-18  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
5066
5067         PR middle-end/32668
5068
5069         * builtin-attrs.def (ATTR_TYPEGENERIC,
5070         ATTR_CONST_NOTHROW_TYPEGENERIC): New.
5071
5072         * builtins.def (BUILT_IN_ISINF, BUILT_IN_ISNAN,
5073         BUILT_IN_ISGREATER, BUILT_IN_ISGREATEREQUAL, BUILT_IN_ISLESS,
5074         BUILT_IN_ISLESSEQUAL, BUILT_IN_ISLESSGREATER,
5075         BUILT_IN_ISUNORDERED): Use ATTR_CONST_NOTHROW_TYPEGENERIC.
5076
5077         * c-common.c (handle_type_generic_attribute): New.
5078         (c_common_attribute_table): Add "type generic".
5079
5080         * c-typeck.c (convert_arguments): Handle "type generic" functions.
5081
5082 2007-07-18  Daniel Berlin  <dberlin@dberlin.org>
5083
5084         * tree-ssa-sccvn.c (try_to_simplify): Use valid_gimple_expression
5085         * tree-ssa-propagate (valid_gimple_expression): Handle ADDR_EXPR
5086         properly.
5087
5088 2007-07-18  Rask Ingemann Lambertsen  <rask@sygehus.dk>
5089
5090         PR target/32808
5091         * config/cris/cris.c (cris_print_index): Don't use XEXP before
5092         checking that the operand is an expression.
5093
5094 2007-07-19  Christoph von Wittich  <Christoph_vW@reactos.org>
5095             Danny Smith  <dannysmith@users.sourceforge.net>
5096
5097         PR/other 30335
5098         * config/i386/host-mingw32.c (mingw32_gt_pch_use_address): Put
5099         file mapping object in local namespace if Windows version later
5100         than NT4
5101
5102 2007-07-18  Richard Sandiford  <richard@codesourcery.com>
5103
5104         * config/arm/arm-protos.h (arm_cannot_force_const_mem): Declare.
5105         * config/arm/arm.c (TARGET_CANNOT_FORCE_CONST_MEM): Redefine to
5106         arm_cannot_force_const_mem.
5107         (arm_cannot_force_const_mem): New function.
5108         * config/arm/arm.h (ARM_OFFSETS_MUST_BE_WITHIN_SECTIONS_P): New macro.
5109         (LEGITIMATE_CONSTANT_P): Test arm_cannot_force_const_mem instead
5110         of arm_tls_referenced_p.
5111         * config/arm/arm.md (movsi): Split out-of-section constants when
5112         ARM_OFFSETS_MUST_BE_WITHIN_SECTIONS_P.
5113         * config/arm/vxworks.h (ARM_OFFSETS_MUST_BE_WITHIN_SECTIONS_P): Define.
5114
5115 2007-07-18  Richard Sandiford  <richard@codesourcery.com>
5116
5117         * config/mips/mips.md (clear_cache): Treat the size argument as Pmode.
5118
5119 2007-07-18  Richard Sandiford  <richard@codesourcery.com>
5120
5121         * config/mips/mips.md (*extendqihi2): Convert the destination
5122         to SImode.
5123
5124 2007-07-17  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
5125
5126         * config/pa/fptr.c: Update license header.
5127         * config/pa/milli64.S: Likewise.
5128
5129 2007-07-17  Nick Clifton  <nickc@redhat.com>
5130
5131         * COPYING_v3: New file.  Contains version 3 of the GNU General
5132         Public License.
5133         * COPYING.LIB_v3: New file.  Contains version 3 of the GNU
5134         Lesser General Public License.
5135         * doc/include/gpl_v3.texi: New file.  Contains version 3 of
5136         the GNU General Public License.
5137
5138 2007-07-17  Zdenek Dvorak  <dvorakz@suse.cz>
5139
5140         PR rtl-optimization/32773
5141         * cfglayout.c (force_one_exit_fallthru): New function.
5142         (cfg_layout_finalize): Use it.
5143
5144 2007-07-16  Richard Guenther  <rguenther@suse.de>
5145             Uros Bizjak  <ubizjak@gmail.com>
5146
5147         * tree-if-conv.c (find_phi_replacement_condition): Unshare "*cond"
5148         before forcing it to gimple operand.
5149
5150 2007-07-16  Sandra Loosemore  <sandra@codesourcery.com>
5151             David Ung  <davidu@mips.com>
5152
5153         * config/mips/mips.h (TUNE_24K): Define.
5154         (TUNE_MACC_CHAINS): Add TUNE_24K.
5155         * config/mips/mips.md: (*mul_acc_si, *mul_sub_si): Change type to
5156         imadd.
5157         * config/mips/74k.md (r74k_int_mult): Split madd/msub to ..
5158         (r74k_int_madd): .. this new reservation.
5159         (define_bypass): Fixed bypasses for r74k_int_madd to use
5160         mips_linked_madd_p.
5161         * config/mips/24k.md (define_bypass): Define new
5162         r24k_int_mul3->r24k_int_madd bypass using mips_linked_madd_p.
5163
5164 2007-07-16  Sandra Loosemore  <sandra@codesourcery.com>
5165             Nigel Stephens  <nigel@mips.com>
5166
5167         * config/mips/mips.md:  Include 20kc.md.
5168         * config/mips/20kc.md: New file.
5169         * config/mips/mips.c (mips_rtx_cost_data): Fill in 20Kc costs.
5170         (mips_adjust_cost): Tweak for 20Kc.
5171         (mips_issue_rate): Likewise.
5172         * config/mips/mips.h (TUNE_20KC): Define.
5173
5174 2007-07-16  David Edelsohn  <edelsohn@gnu.og>
5175
5176         * config/rs6000/rs6000.c (struct processor_cost): Add
5177         cache_line_size, l1_cache_lines, and simultaneous_prefetches
5178         fields.
5179         (*_cost): Add cache information.
5180         (rs6000_override_options): Set cache parameters.
5181
5182 2007-07-16  Rainer Orth  <ro@TechFak.Uni-Bielefeld.DE>
5183
5184         PR bootstrap/3456
5185         * config.gcc (mips-sgi-irix[56]*): Enable pthread support.
5186         * doc/install.texi (mips-sgi-irix6): pthread support works now.
5187
5188 2007-07-16  Paul Brook  <paul@codesourcery.com>
5189
5190         PR target/32753
5191         * config/arm/cirrus.md (cirrus_arm_movsi_insn): Remove dead insn.
5192         (cirrus_thumb2_movsi_insn): Ditto.
5193
5194 2007-07-15  Geoffrey Keating  <geoffk@apple.com>
5195
5196         * config/rs6000/darwin-fallback.c (interpret_libc): Change
5197         CR2_REGNO to R_CR2.
5198
5199 2007-07-15  Andrew Haley  <aph@redhat.com>
5200
5201         * unwind-sjlj.c (_Unwind_GetIPInfo): Check for context->fc != NULL
5202         before looking in the context.
5203
5204 2007-07-15  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
5205
5206         PR middle-end/32398
5207         PR middle-end/32769
5208         * pa-protos.h (pa_eh_return_handler_rtx): Declare.
5209         * pa.c (pa_extra_live_on_entry, rp_saved): Declare.
5210         (TARGET_EXTRA_LIVE_ON_ENTRY): Define.
5211         (pa_output_function_prologue): Use rp_saved and
5212         current_function_is_leaf to generate .CALLINFO statement.
5213         (hppa_expand_prologue): Set rp_saved.
5214         (hppa_expand_epilogue): Use rp_saved.
5215         (pa_extra_live_on_entry, pa_eh_return_handler_rtx): New functions.
5216         * pa.h (EH_RETURN_HANDLER_RTX): Use pa_eh_return_handler_rtx.
5217
5218 2007-07-14  Dirk Mueller  <dmueller@suse.de>
5219
5220         * omega.c (coalesce): Fix memory leak on early exit.
5221         * matrix-reorg.c (check_allocation_function): Likewise.
5222         * tree-vect-transform.c (vect_get_new_vect_var): free result
5223         of concat().
5224         * bb-reorder.c (find_rarely_executed_basic_blocks_and_crossing_edges):
5225         pass pointer to edge vector
5226         (partition_hot_cold_basic_blocks): Fix memory leak.
5227         * collect2.c (prefix_from_string): Free temporary storage.
5228         * reload1.c (fixup_abnormal_edges): Free sbitmap.
5229
5230 2007-07-14  Kaz Kojima  <kkojima@gcc.gnu.org>
5231
5232         * config/sh/sh.h (DO_GLOBAL_CTORS_BODY): Add void to prototype.
5233         (DO_GLOBAL_DTORS_BODY): Likewise.
5234
5235 2007-07-14  Sandra Loosemore  <sandra@codesourcery.com>
5236             Nigel Stephens  <nigel@mips.com>
5237
5238         * config/mips/mips.c (mips_classify_symbol): Don't return
5239         SYMBOL_SMALL_DATA for constant pool addresses if
5240         TARGET_EMBEDDED_DATA is true.
5241
5242 2007-07-14  Uros Bizjak  <ubizjak@gmail.com>
5243
5244         * config/i386/i386.c (init_mmx_sse_builtins): Define all builtins
5245         except __builtin_ia32_emms, __builtin_ia32_ldmxcsr,
5246         __builtin_ia32_stmxcsr, __builtin_ia32_maskmovq, __builtin_ia32_loadups,
5247         __builtin_ia32_storeups, __builtin_ia32_loadhps, __builtin_ia32_loadlps,
5248         __builtin_ia32_storehps, __builtin_ia32_storelps,
5249         __builtin_ia32_movntps, __builtin_ia32_movntq, __builtin_ia32_sfence,
5250         __builtin_ia32_femms, __builtin_ia32_maskmovdqu, __builtin_ia32_loadupd,
5251         __builtin_ia32_storeupd, __builtin_ia32_loadhpd, __builtin_ia32_loadlpd,
5252         __builtin_ia32_movnti, __builtin_ia32_movntpd, __builtin_ia32_movntdq,
5253         __builtin_ia32_clflush, __builtin_ia32_lfence, __builtin_ia32_mfence,
5254         __builtin_ia32_loaddqu, __builtin_ia32_storedqu, __builtin_ia32_monitor,
5255         __builtin_ia32_mwait, __builtin_ia32_lddqu, __builtin_ia32_movntdqa,
5256         __builtin_ia32_movntsd and __builtin_ia32_movntss as const builtins
5257         using def_builtin_const.
5258
5259 2007-07-14  Eric Botcazou  <ebotcazou@adacore.com>
5260
5261         PR tree-optimization/32705
5262         * tree-ssa-sccvn.c (set_ssa_val_to): Accept VN_TOP as value number.
5263         (simplify_binary_expression): Use SSA_VAL consistently.
5264
5265 2007-07-13  David Edelsohn  <edelsohn@gnu.org>
5266
5267         * config/rs6000/spe.md (SPE_ACC_REGNO): Delete definition.
5268         (SPEFSCR_REGNO): Delete definition.
5269         * config/rs6000/rs6000.c: LINK_REGISTER_REGNUM -> LR_REGNO.
5270         COUNT_REGISTER_REGNUM -> CTR_REGNO.
5271         * config/rs6000/rs6000.h: Do not define *_REGNO.
5272         LINK_REGISTER_REGNUM -> LR_REGNO.
5273         COUNT_REGISTER_REGNUM -> CTR_REGNO.
5274         * config/rs6000/predicates.md: LINK_REGISTER_REGNUM ->  LR_REGNO.
5275         COUNT_REGISTER_REGNUM -> CTR_REGNO.
5276         * config/rs6000/linux-unwind.h: Define R_LR, R_CR2, R_VR0,
5277         R_VRSAVE, R_VSCR. Use them.
5278         * config/rs6000/darwin-fallback.c: Define R_LR, R_CTR, R_CR2,
5279         R_XER, R_VR0, R_VRSAVE, R_VSCR, R_SPEFSCR.  Use them.
5280         * config/rs6000/rs6000.md: Define REGNO constants.  Use them.
5281         * config/rs6000/aix.h: Define R_LR.  Use it.
5282         
5283 2007-07-13  Caroline Tice  <ctice@apple.com>
5284         
5285         * toplev.c (process_options): Turn flag_var_tracking_uninit off when
5286         flag_var_tracking is explicitly turned off (i.e. when variable
5287         tracking is not feasible); otherwise, turn flag_var_tracking on when
5288         flag_var_tracking_uninit is on.
5289         * rtl.def (VAR_LOCATION): Add a new integer subfield to VAR_LOCATION
5290         note definitions, to allow recording of initialization status in the
5291         notes.
5292         * dwarf2out.c (dwarf_stack_op_name): Add case for DW_OP_GNU_uninit.
5293         (add_var_loc_to_decl): Add comparison of NOTE_VAR_LOCATION_STATUS to
5294         determine if two note locations are equal.
5295         (output_loc_list): Don't output list entries whose start & end labels
5296         are the same.
5297         (reg_loc_descriptor): Add parameter for initialization status; pass it
5298         to other loc descriptor functions.
5299         (one_reg_loc_descriptor): Add parameter for initialization status;
5300         check its value and add DW_OP_GNU_uninit to returned loc descr if
5301         appropriate.
5302         (multiple_reg_loc_descriptor): Add parameter for initialization
5303         status;
5304         pass init status argument to other loc descriptor functions; check
5305         value of intialization parameter and add DW_OP_GNU_uninit to returned
5306         loc descr if appropriate.
5307         (based_loc_descr): Add parameter for initialization status; add new
5308         variable for return value; check value of initialization parameter and
5309         add DW_OP_GNU_uninit to returned loc descr if appropriate.
5310         (concatn_mem_loc_descriptor): Add parameter for initialization status;
5311         pass init status argument to other loc descriptor functions; check
5312         value of intialization parameter and add DW_OP_GNU_uninit to returned
5313         loc descr if appropriate.
5314         (mem_loc_descriptor): Likewise.
5315         (concat_loc_descriptor): Likewise.
5316         (concatn_loc_descriptor): Likewise.
5317         (loc_descriptor): Add parameter for initialization status; pass it as
5318         argument to other loc descriptor function calls.
5319         (loc_descriptor_from_tree_1): Add appropriate initialization status
5320         to loc descriptor function calls.
5321         (add_location_or_const_value_attribute): Get initialization status
5322         from VAR_LOCATION note; add initialization status to loc descriptor
5323         function calls.
5324         * dwarf2.h (enum dwarf_location_atom): New op, DW_OP_GNU_uninit.
5325         * print-rtl.c (print_rtx): When printing a VAR_LOCATION note, if
5326         status is uninitialized, add "[uninint]" to output.
5327         * common.opt (fvar-tracking-uninit): New option, similar to
5328         fvar-tracking, to turn on tracking of uninitialized variables; creates
5329         a new global flag, flag_var_tracking_uninit.
5330         * rtl.h (NOTE_VAR_LOCATION_STATUS): New macro for accessing new field.
5331         (enum var_init_status): New type, for var initialization status field.
5332         * var-tracking.c (struct location_chain_def): Two new fields, init,
5333         for initialization status, and set_src for the assignment value expr.
5334         (unshare_variable): New parameter for initialization status;
5335         initialize new init and set_src fields.
5336         (var_reg_set): New parameters for initialization status and value;
5337         pass them to set_variable_part.
5338         (var_mem_set): Likewise.
5339         (get_init_value): New function.
5340         (var_reg_delete_and_set): New initialization status & value
5341         parameters; add call to get_init_value if status is unknown; pass new
5342         parameters to clobber_variable_part and var_reg_set.
5343         (var_mem_delete_and_set): Likewise.
5344         (var_reg_delete): Pass null set_src value to clobber_variable_part.
5345         (var_mem_delete): Likewise.
5346         (variable_union): Pass status to unshare_variable; initialize new init
5347         and set_src fields. If flag_var_tracking_uninit is not set, force
5348         status to initialized.
5349         (add_stores): Store insn, rather than NEXT_INSN(insn), so it can be
5350         used later to get the set_src value.
5351         (find_src_status): New function.
5352         (find_src_set_src): New function.
5353         (compute_bb_dataflow): Pass init status to calls to var_reg_set,
5354         var_mem_set, var_reg_delete_and_set and var_mem_delete_and_set; for
5355         MO_SET, get set_src value and pass it to var_reg_delete_and_set
5356         and var_mem_delete_and_set.
5357         (dump_variable): Print out "[uninit]" if appropriate.
5358         (set_variable_part): Add new initialization and set_src parameters;
5359         pass status to unshare_variable; set node->init and node- >set_src
5360         fields and modify slot in hash table appropriately; save the init and
5361         set_src values if appropriate and assign to the new node.
5362         (clobber_variable_part): New set_src parameter; if two nodes have
5363         same variable and same location but different set_src (assignment)
5364         values, clobber old node.
5365         (delete_variable_part): Pass init status to unshare_variable.
5366         (emit_note_insn_var_location): Add initialized var; assign var's init
5367         status to new 'initialized'; pass new init status field to calls to
5368         gen_rtx_VAR_LOCATION. If flag_var_tracking_uninit is not set, force
5369         status to initialized.
5370         (emit_notes_in_bb): Pass initialization status to calls to
5371         var_reg_set, var_mem_set, var_reg_delete_and_set and
5372         var_mem_delete_and_set; for MO_SET, get set_src value and pass it to
5373         var_reg_delete_and_set and var_mem_delete_and_set; call
5374         emit_notes_for_changes on NEXT_INSN(insn) rather than on insn, to
5375         make up for change in add_stores.
5376         (vt_add_function_parameters): Add status to calls to
5377         set_variable_part.
5378         * config/darwin.c (darwin_override_options): Turn on uninitialized
5379         tracking automatically, if var_tracking is on and the system is
5380         10.5 or higher.
5381         
5382 2007-07-13  Sa Liu  <saliu@de.ibm.com>
5383
5384         * config.gcc: Add options for arch and tune on SPU.
5385         * config/spu/predicates.md: Add constant operands 0 and 1.
5386         * config/spu/spu-builtins.def: Add builtins for double precision 
5387         floating point comparison: si_dfceq, si_dfcmeq, si_dfcgt, si_dfcmgt, 
5388         si_dftsv, spu_cmpeq_13, spu_cmpabseq_1, spu_cmpgt_13, spu_cmpabsgt_1,
5389         spu_testsv.
5390         * config/spu/spu-c.c: Define __SPU_EDP__ when builtins invoked with 
5391         a CELLEDP target.
5392         * config/spu/spu-protos.h: Add new function prototypes. 
5393         * config/spu/spu.c (spu_override_options): Check options -march and
5394         -mtune.
5395         (spu_comp_icode): Add comparison code for DFmode and vector mode.
5396         (spu_emit_branch_or_set): Use the new code for DFmode and vector 
5397         mode comparison.
5398         (spu_const_from_int): New.  Create a vector constant from 4 ints.
5399         (get_vec_cmp_insn): New.  Get insn index of vector compare instruction.
5400         (spu_emit_vector_compare): New.  Emit vector compare.
5401         (spu_emit_vector_cond_expr): New.  Emit vector conditional expression.
5402         * config/spu/spu.h: Add options -march and -mtune.  Define processor
5403         types PROCESSOR_CELL and PROCESSOR_CELLEDP.  Define macro
5404         CANONICALIZE_COMPARISON.
5405         * config/spu/spu.md: Add new insns for double precision compare
5406         and double precision vector compare.  Add vcond and smax/smin patterns
5407         to enable DFmode vector conditional expression.
5408         * config/spu/spu.opt: Add options -march and -mtune.
5409         * config/spu/spu_internals.h: Add builtins for CELLEDP target:
5410         si_dfceq, si_dfcmeq, si_dfcgt, si_dfcmgt, si_dftsv.  Add builtin for
5411         both CELL and CELLEDP targets: spu_testsv.
5412         * config/spu/spu_intrinsics.h: Add flag mnemonics for test special 
5413         values.
5414
5415 2007-07-13  Richard Guenther  <rguenther@suse.de>
5416
5417         PR tree-optimization/32721
5418         * tree-ssa-ccp.c (maybe_fold_stmt_indirect): Preserve
5419         TREE_THIS_VOLATILE on the folded reference.
5420         * tree-ssa-operands.c (get_expr_operands): Set has_volatile_ops
5421         if the array reference has TREE_THIS_VOLATILE set.
5422
5423 2007-07-13  H.J. Lu  <hongjiu.lu@intel.com>
5424
5425         PR other/32188
5426         * doc/libgcc.texi: Update DFP intrinsics for DPD and BID.
5427
5428 2007-07-13  Andreas Schwab  <schwab@suse.de>
5429
5430         * gengtype-lex.l: Allow declarations to be indented.
5431
5432 2007-07-12  Geoffrey Keating  <geoffk@apple.com>
5433
5434         * ginclude/tgmath.h: New.
5435         * config.gcc: Use GCC's tgmath.h on non-glibc systems.
5436         * doc/sourcebuild.texi (Headers): Document use_gcc_tgmath.
5437         * configure.ac (STMP_FIXPROTO): Honor use_gcc_tgmath.
5438         * configure: Regenerate.
5439
5440 2007-07-13  Kaz Kojima  <kkojima@gcc.gnu.org>
5441
5442         * config/sh/linux-unwind.h (sh_fallback_frame_state): Use
5443         correct index when setting register save state for xd
5444         registers.
5445
5446 2007-07-13  Kaz Kojima  <kkojima@gcc.gnu.org>
5447
5448         * config/sh/sh.c (mark_use): Remove.
5449
5450 2007-07-12  Paul Brook  <paul@codesourcery.com>
5451
5452         * config/arm/arm.c (thumb1_compute_save_reg_mask): Make sure scratch
5453         reg does not overlap return value.
5454
5455 2007-07-12  Daniel Berlin  <dberlin@dberlin.org>
5456
5457         * tree-ssa-pre.c (get_expression_vuses): Move out side-effect.
5458         (set_expression_vuses): Ditto.
5459         (init_pre): Initialize expression_vuses.
5460
5461 2007-07-12  Zdenek Dvorak  <dvorakz@suse.cz>
5462
5463         * config/i386/sse.md (storentdf, storentsf): New.
5464
5465 2007-07-12  Geoffrey Keating  <geoffk@apple.com>
5466
5467         * builtins.c (get_pointer_alignment): Honor DECL_ALIGN on a
5468         FUNCTION_DECL.
5469         * tree.c (build_decl_stat): Move code from here...
5470         (make_node_stat): ... to here.  Don't uselessly clear DECL_USER_ALIGN.
5471         (expr_align): Honor DECL_ALIGN on a FUNCTION_DECL.  Add comment
5472         about using DECL_ALIGN of LABEL_DECL and CONST_DECL.
5473         * tree.h (DECL_USER_ALIGN): Fix misplaced comment.
5474         * varasm.c (assemble_start_function): Use DECL_ALIGN instead of
5475         FUNCTION_BOUNDARY.
5476
5477 2007-07-12  Dorit Nuzman  <dorit@il.ibm.com>
5478             Devang Patel  <dpatel@apple.com>
5479
5480         PR tree-optimization/25413
5481         * targhooks.c (default_builtin_vector_alignment_reachable): New.
5482         * targhooks.h (default_builtin_vector_alignment_reachable): New.
5483         * tree.h (contains_packed_reference): New.
5484         * expr.c (contains_packed_reference): New.
5485         * tree-vect-analyze.c (vector_alignment_reachable_p): New.
5486         (vect_enhance_data_refs_alignment): Call
5487         vector_alignment_reachable_p.
5488         * target.h (vector_alignment_reachable): New builtin.
5489         * target-def.h (TARGET_VECTOR_ALIGNMENT_REACHABLE): New.
5490         * config/rs6000/rs6000.c (rs6000_vector_alignment_reachable): New.
5491         (TARGET_VECTOR_ALIGNMENT_REACHABLE): Define.
5492
5493 2007-07-12  Dorit Nuzman  <dorit@il.ibm.com>
5494
5495         * target.h (builtin_vectorization_cost): Add new target builtin.
5496         * target-def.h (TARGET_VECTORIZE_BUILTIN_VECTORIZATION_COST): New.
5497         * tree-vectorizer.h (TARG_SCALAR_STMT_COST): New.
5498         (TARG_SCALAR_LOAD_COST, TARG_SCALAR_STORE_COST): New.
5499         * tree-vect-analyze.c (vect_analyze_slp_instance): Initisliaze
5500         uninitialized variables.
5501         * tree-vect-transform.c (cost_for_stmt): New function.
5502         (vect_estimate_min_profitable_iters): Call cost_for_stmt instead of
5503         using cost 1 for all scalar stmts. Be less conservative when
5504         estimating the number of prologue/epulogue iterations. Call
5505         targetm.vectorize.builtin_vectorization_cost. Return
5506         min_profitable_iters-1.
5507         (vect_model_reduction_cost): Use TARG_SCALAR_TO_VEC_COST for
5508         initialization cost instead of TARG_VEC_STMT_COST. Use
5509         TARG_VEC_TO_SCALAR_COST instead of TARG_VEC_STMT_COST for reduction
5510         epilogue code. Fix epilogue cost computation.
5511         * config/spu/spu.c (spu_builtin_vectorization_cost): New.
5512         (TARGET_VECTORIZE_BUILTIN_VECTORIZATION_COST): Implement.
5513         * config/spu/spu.h (TARG_COND_BRANCH_COST, TARG_SCALAR_STMT_COST):
5514         (TARG_SCALAR_LOAD_COST, TARG_SCALAR_STORE_COST, TARG_VEC_STMT_COST):
5515         (TARG_VEC_TO_SCALAR_COST, TARG_SCALAR_TO_VEC, TARG_VEC_LOAD_COST):
5516         (TARG_VEC_UNALIGNED_LOAD_COST, TARG_VEC_STORE_COST): Define.
5517
5518 2007-07-12  Richard Guenther  <rguenther@suse.de>
5519
5520         * gimplify.c (gimplify_conversion): Make sure that the result
5521         from maybe_fold_offset_to_reference is trivially convertible
5522         to the desired type before doing the simplification.
5523         (gimplify_expr): Likewise.
5524         * fold-const.c (fold_binary): Use the correct types for
5525         building the simplified expression.
5526
5527 2007-07-12  Zdenek Dvorak  <dvorakz@suse.cz>
5528
5529         PR rtl-optimization/32729
5530         * cfghooks.c (can_duplicate_block_p): Do not forbid duplicating blocks
5531         that fallthru to exit.
5532
5533 2007-07-12  Kaz Kojima  <kkojima@gcc.gnu.org>
5534
5535         * config/sh/sh.md (symGOTOFF2reg): Add missing parenthesis.
5536         (symDTPOFF2reg): Likewise.
5537
5538 2007-07-11  Daniel Berlin  <dberlin@dberlin.org>
5539
5540         PR tree-optimization/32663
5541         
5542         * tree.h (VALUE_HANDLE_VUSES): Remove.
5543         (struct tree_value_handle): Remove vuses.
5544
5545         * tree-vn.c (create_value_handle_for_expr): Don't set
5546         VALUE_HANDLE_VUSES. 
5547
5548         * tree-ssa-pre.c (expression_vuses): New.
5549         (alloc_expression_id): Set up expression_vuses.
5550         (get_expression_vuses): New.
5551         (set_expression_vuses): Ditto.
5552         (clear_expression_ids): Modify for expression_vuses.
5553         (phi_translate_1): Ditto.
5554         (phi_translate_set): Ditto.
5555         (value_dies_in_block_x): Ditto
5556         (valid_in_sets): Ditto.
5557         (add_to_sets): Ditto.
5558         (find_existing_value_expr): Ditto.
5559         (create_value_handle_for_expr): Ditto.
5560         (make_values_for_stmt): Ditto.
5561         (vuse_equiv): Remove.
5562
5563 2007-07-11  Alexandre Oliva  <aoliva@redhat.com>
5564
5565         * Makefile.in (mostlyclean): Remove object files.
5566
5567 2007-07-11  Kenneth Zadeck <zadeck@naturalbridge.com>
5568
5569         * toplev.c (no_new_pseudos): Deleted.
5570         * rtl.h (no_new_pseudos): Deleted.
5571         * tree-pass.h (pass_no_new_pseudos): Deleted. 
5572         * passes.c (pass_no_new_pseudos): Deleted.
5573         * final.c (rest_of_clean_state): Removed no_new_pseudos.
5574         (rest_of_no_new_pseudos, pass_no_new_pseudos): Deleted.
5575         * struct-equiv.c (rtx_equiv_p): Replaced no_new_pseudos with 
5576         reload_completed.
5577         * cfgcleanup.c (try_crossjump_to_edge): Ditto. 
5578         * rtlhooks.c (gen_lowpart_general): Ditto.
5579         * optabs.c (prepare_operand): Ditto.
5580         * mode-switching.c (rest_of_handle_mode_switching): Deleted set of
5581         no_new_pseudos.
5582         * modulo-sched.c (rest_of_handle_sms): Ditto.
5583         * see.c (rest_of_handle_see): Ditto.
5584         * ifcvt.c (if_convert): Ditto.
5585         (gate_handle_if_after_combine): Replaced no_new_pseudos with 
5586         reload_completed.
5587         * init-regs.c (gate_initialize_regs): Deleted set of
5588         no_new_pseudos.
5589         * lower-subreg.c (decompose_multiword_subregs): Ditto. 
5590         * bb-reorder.c (rest_of_handle_partition_blocks): Ditto.
5591         * doc/md.texi: Changed no_new_pseudos to can_create_pseudo_p.
5592         
5593 2007-07-11  Uros Bizjak  <ubizjak@gmail.com>
5594
5595         PR target/32661
5596         * config/i386/sse.md (*sse2_storeq_rex64): Handle 64bit mem->reg moves.
5597         (*vec_extractv2di_1_sse2): Disable for TARGET_64BIT.
5598         (*vec_extractv2di_1_rex64): New insn pattern.
5599
5600 2007-07-11  David Daney  <ddaney@avtrex.com>
5601
5602         * config/mips/linux-unwind.h (mips_fallback_frame_state): Rewrite
5603         return address calculation.  Substitute DWARF_ALT_FRAME_RETURN_COLUMN
5604         for SIGNAL_UNWIND_RETURN_COLUMN.
5605         * config/mips/mips.h (SIGNAL_UNWIND_RETURN_COLUMN): Remove.
5606         (DWARF_FRAME_REGNUM): Rewrite.
5607         (DWARF_ALT_FRAME_RETURN_COLUMN) Define.
5608
5609 2007-07-11  Nick Clifton  <nickc@redhat.com>
5610
5611         * config/m32r/m32r.h (INITIALIZE_TRAMPOLINE): Revert previous
5612         delta and use gen_int_mode in place of GET_INT instead.
5613
5614 2007-07-11  Uros Bizjak  <ubizjak@gmail.com>
5615
5616         * reg-stack.c (struct tree_opt_pass pass_stack_regs): Nullify name
5617         and letter field.
5618
5619 2007-07-11  Douglas Gregor  <doug.gregor@gmail.com>
5620
5621         * params.def (PARAM_VERIFY_CANONICAL_TYPES): Remove.
5622         (PARAM_USE_CANONICAL_TYPES): New; decides whether to use canonical 
5623         types or not.
5624         * params.h (VERIFY_CANONICAL_TYPES): Remove.
5625         (USE_CANONICAL_TYPES): New.
5626         * doc/invoke.texi (verify-canonical-types): Remove.
5627         (use-canonical-types): Add.
5628
5629 2007-07-11  Ulrich Weigand  <uweigand@de.ibm.com>
5630
5631         * config/spu/spu.c (spu_optimization_options): Remove setting of
5632         parameter PARAM_MAX_COMPLETELY_PEEL_TIMES.
5633         (spu_override_options): Move it here.
5634
5635 2007-07-11  Richard Sandiford  <richard@codesourcery.com>
5636
5637         * config/mips/mips.h (MIPS_ISA_LEVEL_SPEC): Handle -m4ksc and -m4ksd.
5638         * config/mips/mips.c (mips_cpu_info_table): Mention
5639         MIPS_ISA_LEVEL_SPEC in the comment.
5640
5641 2007-07-11  Eric Botcazou  <ebotcazou@adacore.com>
5642
5643         PR tree-optimization/32713
5644         * tree-ssa-sccvn.c (copy_reference_ops_from_ref): Handle REAL_CST.
5645
5646 2007-07-11  Paolo Carlini  <pcarlini@suse.de>
5647
5648         PR middle-end/30482
5649         * c-opts.c (c_common_post_options): Do not change flag_complex_method
5650         conditional to flag_isoc99.
5651         (c_common_init_options): Do it here, unconditionally.
5652
5653 2007-07-11  Eric Botcazou  <ebotcazou@adacore.com>
5654
5655         PR tree-optimization/32589
5656         * doc/tree-ssa.texi (Rough GIMPLE Grammar): Add missing rule.
5657         * tree-gimple.c (is_gimple_min_invariant): Clarify head comment.
5658         * tree-ssa-propagate.c (valid_gimple_expression_p): New
5659         predicate, extracted from...
5660         (set_rhs): ...here.  Call it for the expression on entry.
5661         * tree-ssa-propagate.h (valid_gimple_expression_p): Declare.
5662         * tree-ssa-sccvn.c: Include tree-ssa-propagate.h.
5663         (simplify_binary_expression): Use valid_gimple_expression_p
5664         to validate the simplification.
5665         * Makefile.in (tree-ssa-sccvn.o): Depends on tree-ssa-propagate.h.
5666
5667 2007-07-11  Danny Smith  <dannysmith@users.sourceforge.net>
5668
5669         * config/i386/cygming.h (PREFERRED_DEBUGGING_TYPE): Define to
5670         DWARF2_DEBUG on 32 bit target too.
5671         (DWARF2_UNWIND_INFO): Reorganize 64-bit vs 32-bit definition. 
5672
5673 2007-07-11  Nick Clifton  <nickc@redhat.com>
5674
5675         * config/m32r/m32r.h (INITIALIZE_TRAMPOLINE): Provide alternative
5676         version for 64-bit hosts.
5677
5678 2007-07-10  David Daney  <ddaney@avtrex.com>
5679
5680         * config/mips/mips.h (ISA_HAS_SYNCI): New target capability
5681         predicate.
5682         (INITIALIZE_TRAMPOLINE): Emit clear_cache insn instead of  library
5683         call.
5684         * config/mips/mips.c (mips_expand_synci_loop): New function.
5685         * config/mips/mips.md (UNSPEC_CLEAR_HAZARD): New constant.
5686         (UNSPEC_RDHWR): Same.
5687         (UNSPEC_SYNCI): Same.
5688         (UNSPEC_SYNC): Same.
5689         (clear_cache): New expand.
5690         (sync): New insn.
5691         (synci): Same.
5692         (rdhwr): Same.
5693         (clear_hazard): Same.
5694         * config/mips/mips-protos.h (mips_expand_synci_loop): Declare
5695         function.
5696         * testsuite/gcc.target/mips/clear-cache-1.c: New test.
5697         * testsuite/gcc.target/mips/clear-cache-2.c: New test.
5698
5699 2007-07-10  Ian Lance Taylor  <iant@google.com>
5700
5701         * emit-rtl.c (gen_reg_rtx): Check can_create_pseudo_p rather than
5702         no_new_pseudos.
5703
5704 2007-07-10  David Daney  <ddaney@avtrex.com>
5705
5706         * builtins.def (BUILT_IN_CLEAR_CACHE): New builtin.
5707         * builtins.c (expand_builtin___clear_cache): New function.
5708         (expand_builtin): Call expand_builtin___clear_cache for
5709         BUILT_IN_CLEAR_CACHE case.
5710         * doc/extend.texi (__builtin___clear_cache): Document new builtin.
5711         * doc/md.texi (clear_cache): Document new instruction pattern.
5712         * testsuite/gcc.dg/builtins-64.c: New test.
5713
5714 2007-07-11  Hans-Peter Nilsson  <hp@axis.com>
5715
5716         * config/cris/cris.md ("movsi"): Fix typo in last change.
5717
5718 2007-07-09  Geoffrey Keating  <geoffk@apple.com>
5719
5720         PR 32617
5721         * c-common.c (c_alignof_expr): Look at DECL_ALIGN of
5722         FUNCTION_DECLs.
5723         (handle_aligned_attribute): Allow use on FUNCTION_DECLs.
5724         * varasm.c (assemble_start_function): Honor DECL_ALIGN
5725         for FUNCTION_DECLs.  Don't use align_functions_log if
5726         DECL_USER_ALIGN.
5727         * print-tree.c (print_node): Print DECL_ALIGN and DECL_USER_ALIGN
5728         even for FUNCTION_DECLs.
5729         * c-decl.c (merge_decls): Propagate DECL_ALIGN even for
5730         FUNCTION_DECLs.
5731         * tree.h (DECL_ALIGN): Update for new location of 'align'.
5732         (DECL_FUNCTION_CODE): Update for new location and name of
5733         'function_code'.
5734         (DECL_OFFSET_ALIGN): Update for new location of 'off_align'.
5735         (struct tree_decl_common): Move 'align' and 'off_align' out
5736         of union, ensure they're still on a 32-bit boundary.  Remove
5737         other fields in union 'u1'.
5738         (struct tree_function_decl): Add field 'function_code' replacing
5739         'u1.f' in tree_decl_common.
5740         * tree.c (build_decl_stat): Set initial value of DECL_ALIGN.
5741         * doc/extend.texi (Function Attributes): Add 'aligned' attribute.
5742         (Variable Attributes): Cross-reference 'aligned' attribute
5743         to Function Attributes.
5744         * flags.h (force_align_functions_log): Delete.
5745         * toplev.c (force_align_functions_log): Delete.
5746
5747 2007-07-10  Uros Bizjak  <ubizjak@gmail.com>
5748
5749         PR target/32708
5750         * config/i386/sse.md (vec_concatv2di): Disable for TARGET_64BIT.
5751         (*vec_concatv2di_rex): New insn pattern.
5752
5753 2007-07-10  Rainer Orth  <ro@TechFak.Uni-Bielefeld.DE>
5754
5755         PR target/32538
5756         * config/mips/iris6.h (LIBGCC_SPEC): Add libm.
5757
5758 2007-07-10  Ian Lance Taylor  <iant@google.com>
5759
5760         Replace no_new_pseudos in backends.
5761         * rtl.h (can_create_pseudo_p): Define.
5762         * config/darwin.c (machopic_indirect_data_reference): Use
5763         can_create_pseudo_p () instead of no_new_pseudos.
5764         (machopic_indirect_data_reference): Likewise.
5765         (machopic_legitimize_pic_address): Likewise.
5766         * config/alpha/alpha.c (alpha_legitimize_address): Likewise.
5767         (alpha_emit_set_const_1): Likewise.
5768         (alpha_emit_set_const): Likewise.
5769         (alpha_emit_conditional_move): Likewise.
5770         (alpha_split_conditional_move): Likewise.
5771         * config/alpha/alpha.md (various splitters): Likewise.
5772         (movti): Likewise.
5773         * config/arm/arm.c (legitimize_pic_address): Likewise.
5774         (arm_load_pic_register): Likewise.
5775         * config/arm/arm.md (addsi3, subsi3, andsi3, iorsi3): Likewise.
5776         (movdi, movsi, movhi, movqi, movsf, movdf): Likewise.
5777         * config/bfin/bfin.c (legitimize_pic_address): Likewise.
5778         * config/cris/cris.c (cris_expand_pic_call_address): Likewise.
5779         * config/cris/cris.md (movsi): Likewise.
5780         * config/frv/frv.md (symGOT2reg_hilo): Likewise.
5781         (symGOTOFF2reg_hilo): Likewise.
5782         (symGPREL2reg, symGPREL2reg_hilo): Likewise.
5783         * config/h8300/h8300.md (insv, extzv): Likewise.
5784         * config/i386/i386.c (ix86_expand_move): Likewise.
5785         (ix86_expand_vector_move): Likewise.
5786         (ix86_prepare_fp_compare_args): Likewise.
5787         (ix86_expand_carry_flag_compare): Likewise.
5788         * config/i386/i386.md (tls_dynamic_gnu2_32): Likewise.
5789         (tls_dynamic_gnu2_combine_32): Likewise.
5790         (tls_dynamic_gnu2_64, tls_dynamic_gnu2_combine_64): Likewise.
5791         * config/ia64/ia64.c (ia64_expand_move): Likewise.
5792         (ia64_expand_movxf_movrf): Likewise.
5793         * config/m32c/m32c.c (m32c_prepare_move): Likewise.
5794         (m32c_split_move): Likewise.
5795         (m32c_expand_insv): Likewise.
5796         * config/m68k/m68k.md (movsi): Likewise.
5797         * config/mips/mips.c (mips_force_temporary): Likewise.
5798         (mips_split_symbol): Likewise.
5799         (mips_move_integer): Likewise.
5800         (mips_legitimize_const_move): Likewise.
5801         * config/mn10300/mn10300.md (movsi): Likewise.
5802         * config/pa/pa.c (emit_move_sequence): Likewise.
5803         * config/rs6000/rs6000.c (rs6000_emit_move): Likewise.
5804         (rs6000_got_register): Likewise.
5805         (create_TOC_reference): Likewise.
5806         (rs6000_machopic_legitimize_pic_address): Likewise.
5807         * config/rs6000/rs6000.md (add<mode>3): Likewise.
5808         (various splitters): Likewise.
5809         (iorsi3, xorsi3, iordi3, xordi3): Likewise.
5810         (movsi_got): Likewise.
5811         * config/s390/s390.c (emit_symbolic_move): Likewise.
5812         * config/s390/s390.md (movhi, movqi): Likewise.
5813         (load_multiple, store_multiple): Likewise.
5814         * config/score/score.c (score_force_temporary): Likewise.
5815         * config/sh/sh.c (prepare_move_operands): Likewise.
5816         (prepare_cbranch_operands): Likewise.
5817         (emit_fpu_switch): Likewise.
5818         (fpscr_set_from_mem): Likewise.
5819         * config/sh/sh.md (movdicc, movsicc, movsicc_umin): Likewise.
5820         (adddi3, subsi3): Likewise.
5821         (various splitters): Likewise.
5822         (divsi_inv_fp_combine): Likewise.
5823         (symGOT_load, symGOTOFF2reg, symDTPOFF2reg): Likewise.
5824         (seq, slt, sle, sgt, sge, sgtu, sltu, sleu, sgeu): Likewise.
5825         (sne): Likewise.
5826         * config/sh/predicates.md (xor_operand): Likewise.
5827         * config/sparc/sparc.c (legitimize_tls_address): Likewise.
5828         * config/sparc/sparc.md (movsi_pic_label_ref): Likewise.
5829         (movdi_pic_label_ref): Likewise.
5830         * config/spu/spu.c (spu_split_immediate): Likewise.
5831         * config/alpha/alpha.md (various splitters): Remove test
5832         !no_new_pseudos || reload_completed.
5833         * config/ia64/ia64.c (ia64_output_mi_thunk): Don't set
5834         no_new_pseudos.
5835         * config/m68k/m68k.c (m68k_output_mi_thunk): Likewise.
5836         * config/mips/mips.c (mips_output_mi_thunk): Likewise.
5837         * config/rs6000/rs6000.c (rs6000_output_mi_thunk): Likewise.
5838         * config/score/score.c (th_output_mi_thunk): Likewise.
5839         * config/sh/sh.c (sh_output_mi_thunk): Likewise.
5840         * config/sparc/sparc.c (sparc_output_mi_thunk): Likewise.
5841
5842 2007-07-10  Kaz Kojima  <kkojima@gcc.gnu.org>
5843
5844         PR rtl-optimization/32664
5845         * mode-switching.c (create_pre_exit): Skip barrier insns.
5846
5847 2007-07-10  Zdenek Dvorak  <dvorakz@suse.cz>
5848
5849         * tree-scalar-evolution.c (scev_const_prop): Add arguments to
5850         force_gimple_operand_bsi.
5851         * tree-ssa-loop-ivopts.c (rewrite_use_nonlinear_expr,
5852         rewrite_use_compare): Ditto.
5853         * tree-ssa-address.c (gimplify_mem_ref_parts, create_mem_ref):
5854         Ditto.
5855         * tree-ssa-ifcombine.c (ifcombine_ifandif): Ditto.
5856         * tree-ssa-loop-prefetch.c (issue_prefetch_ref): Ditto.
5857         * lambda-code.c (replace_uses_equiv_to_x_with_y): Ditto.
5858         * tree-profile.c (prepare_instrumented_value,
5859         tree_gen_interval_profiler, tree_gen_pow2_profiler,
5860         tree_gen_one_value_profiler, tree_gen_ic_profiler,
5861         tree_gen_ic_func_profiler, tree_gen_average_profiler,
5862         tree_gen_ior_profiler): Ditto.
5863         * tree-ssa-reassoc.c (negate_value): Ditto.
5864         * matrix-reorg.c (transform_access_sites, transform_allocation_sites):
5865         Use force_gimple_operand_bsi.
5866         * tree-vect-transform.c (vect_update_ivs_after_vectorizer): Ditto.
5867         * tree-if-conv.c (add_to_dst_predicate_list,
5868         find_phi_replacement_condition): Ditto.
5869         * gimplify.c (force_gimple_operand_bsi): Add before and m arguments.
5870         Call mark_symbols_for_renaming for new statements.
5871         * tree-flow.h (force_gimple_operand_bsi): Declaration changed.
5872
5873 2007-07-10  Zdenek Dvorak  <dvorakz@suse.cz>
5874
5875         * cfghooks.c (remove_edge): New function.
5876         (redirect_edge_and_branch, remove_branch, merge_blocks): Updated
5877         loop exit rescans.
5878         * cfghooks.h (remove_edge): Declare.
5879         * cfg.c (remove_edge): Renamed to remove_edge_raw.
5880         * basic-block.h (remove_edge): Declaration changed to remove_edge_raw.
5881
5882 2007-07-09  Wolfgang Gellerich  <gellerich@de.ibm.com>
5883
5884         * optabs.h: Added declaration for signbit_optab.  
5885         * optabs.c: (init_optabs): Added initialization for signbit_optab.
5886         * genoptinit.c (optabs): Added entry for signbit insns.  
5887         * builtins.c (expand_builtin_signbit): Added code to use a signbit
5888         insn, if available.  
5889         * config/s390/s390.h (S390_TDC_SIGNBIT_SET): New constant.  
5890         * config/s390/s390.md (signbit<mode>2): New expander.  
5891
5892 2007-07-09  Richard Guenther  <rguenther@suse.de>
5893
5894         PR middle-end/32698
5895         * fold-const.c (fold_plusminus_mult_expr): Move constant
5896         arguments second to allow decomposing.
5897
5898 2007-07-09  Alexandre Oliva  <aoliva@oliva.athome.lsd.ic.unicamp.br>
5899
5900         Revert:
5901         2007-07-06  Alexandre Oliva  <aoliva@redhat.com>
5902         PR debug/23551
5903         * tree-ssa-copyrename.c (copy_rename_partition_coalesce):
5904         Disregard DECL_FROM_INLINE.
5905
5906 2007-07-09  Uros Bizjak  <ubizjak@gmail.com>
5907
5908         PR target/27855
5909         * doc/invoke.texi: Add ftree-reassoc flag.
5910         * common.opt (ftree-reassoc): New flag.
5911         * tree-ssa-reassoc.c (gate_tree_ssa_reassoc): New static function.
5912         (struct tree_opt_pass pass_reassoc): Use gate_tree_ssa_reassoc.
5913
5914 2007-07-09  Uros Bizjak  <ubizjak@gmail.com>
5915
5916         PR tree-optimization/32681
5917         * tree-if-conv.c (find_phi_replacement_condition): Use the condition
5918         saved in second_edge->aux when first_bb is a loop header.
5919
5920 2007-07-09  Jan HUbicka  <jh@suse.cz>
5921
5922         * cse.c (cse_insn): Avoid invalid sharing on trial replacement.
5923
5924 2007-07-09  Richard Guenther  <rguenther@suse.de>
5925
5926         * c-decl.c (start_function): Do not promote return type.
5927
5928 2007-07-08  Daniel Franke  <franke.daniel@gmail.com>
5929
5930         * function.c (do_warn_unused_parameter): Do not warn if
5931         TREE_NO_WARNING is set.
5932
5933 2007-07-08  Andreas Schwab  <schwab@suse.de>
5934
5935         * doc/invoke.texi (DEC Alpha/VMS Options): Fix typo.
5936
5937 2007-07-08  Sandra Loosemore  <sandra@codesourcery.com>
5938
5939         Revert this patch:
5940         2007-07-06  Sandra Loosemore  <sandra@codesourcery.com>
5941
5942         * c-opts.c (c_common_handle_option): Make DOLLARS_IN_IDENTIFIERS
5943         apply to assembly language, too.
5944         * doc/tm.texi (DOLLARS_IN_IDENTIFIERS): Update.
5945
5946 2007-07-07  Daniel Berlin  <dberlin@dberlin.org>
5947
5948         Revert (note the sccvn portions are *not* reverted)
5949         2007-07-06  Daniel Berlin  <dberlin@dberlin.org>
5950
5951         Fix PR tree-optimization/23488
5952
5953         * tree-vn.c (set_value_handle): Use decl_vh_map for decl value
5954         handles.
5955         * tree-flow-inline.h (get_value_handle): Ditto.
5956         * tree-ssa-pre.c (decl_vh_map): New.
5957         (decl_node_pool): New.
5958         (can_value_number_operation): Support DECL_P.
5959         (can_PRE_operation): Ditto.
5960         (create_expression_by_pieces): Ditto.
5961         (find_existing_value_expr): Modify to differnetiate between
5962         addressing and top level.
5963         (create_value_handle_for_expr): Handle DECL's.
5964         (poolify_tree): Ditto.
5965         (make_values_for_phi): Don't insert into PHI_GEN during FRE.
5966         (make_values_for_stmt): Handle DECL's properly.
5967         (init_pre): Reorg to not init useless things during FRE.
5968         (fini_pre): Ditto.
5969         * tree-flow.h: Include pointer-set.h.
5970         (decl_vh_map): Declare.
5971         * Makefile.in (TREE_FLOW_H): Add pointer-set.h
5972
5973 2007-07-07 Eric Weddington  <eweddington@cso.atmel.com>
5974
5975         * config/avr/constraints.md (define_memory_constraint "Q"): Fix
5976         the constraint description.
5977         * doc/md.texi: Update documentation of AVR constraints.
5978
5979 2007-07-07  Kazu Hirata  <kazu@codesourcery.com>
5980
5981         * auto-inc-dec.c, config/arm/arm.c,
5982         config/m32r/constraints.md, config/mips/mips.md,
5983         config/rs6000/rs6000.c, cselib.c, dce.c, df-core.c,
5984         df-problems.c, df-scan.c, df.h, dse.c, gimplify.c,
5985         tree-if-conv.c, tree-ssa-sccvn.c, tree-ssa.c: Fix comment
5986         typos.  Follow spelling conventions.
5987         * doc/invoke.texi, doc/rtl.texi: Fix typos.
5988
5989         * cfgrtl.c (delete_insn_chain_and_edges): Remove.
5990         * rtl.h: Remove the prototype for delete_insn_chain_and_edges.
5991
5992         * tree-ssa-operands.c (realloc_vop, realloc_vdef,
5993         realloc_vuse): Remove.
5994         * tree-ssa-operands.h: Remove the prototype for realloc_vdef
5995         and realloc_vuse.
5996
5997 2007-07-06  Daniel Berlin  <dberlin@dberlin.org>
5998
5999         Fix PR tree-optimization/23488
6000
6001         * tree-ssa-sccvn.c (expr_has_constants): Handle tcc_declaration.
6002         (try_to_simplify): Ditto.
6003         (visit_use): Ditto.
6004         * tree-vn.c (set_value_handle): Use decl_vh_map for decl value
6005         handles.
6006         * tree-flow-inline.h (get_value_handle): Ditto.
6007         * tree-ssa-pre.c (decl_vh_map): New.
6008         (decl_node_pool): New.
6009         (can_value_number_operation): Support DECL_P.
6010         (can_PRE_operation): Ditto.
6011         (create_expression_by_pieces): Ditto.
6012         (find_existing_value_expr): Modify to differnetiate between
6013         addressing and top level.
6014         (create_value_handle_for_expr): Handle DECL's.
6015         (poolify_tree): Ditto.
6016         (make_values_for_phi): Don't insert into PHI_GEN during FRE.
6017         (make_values_for_stmt): Handle DECL's properly.
6018         (init_pre): Reorg to not init useless things during FRE.
6019         (fini_pre): Ditto.
6020         * tree-flow.h: Include pointer-set.h.
6021         (decl_vh_map): Declare.
6022         * Makefile.in (TREE_FLOW_H): Add pointer-set.h
6023                 
6024 2007-07-06  Sandra Loosemore  <sandra@codesourcery.com>
6025
6026         * c-opts.c (c_common_handle_option): Make DOLLARS_IN_IDENTIFIERS
6027         apply to assembly language, too.
6028         * doc/tm.texi (DOLLARS_IN_IDENTIFIERS): Update.
6029
6030 2007-07-06  Ian Lance Taylor  <iant@google.com>
6031             Zack Weinberg  <zackw@panix.com>
6032
6033         PR middle-end/32441
6034         * builtins.c (std_expand_builtin_va_start): Don't use make_tree.
6035
6036 2007-07-06  Richard Sandiford  <richard@codesourcery.com>
6037
6038         * config/sh/sh.md (*prefetch_i4): Disable for TARGET_VXWORKS_RTP.
6039         (prefetch): Likewise if "pref" would be used.
6040
6041 2007-07-06  Josh Conner  <jconner@apple.com>
6042
6043         PR middle-end/32602
6044         PR middle-end/32603
6045         * calls.c (store_one_arg): Handle arguments which are partially
6046         on the stack when detecting argument overlap.
6047
6048 2007-07-06  Bernd Schmidt  <bernd.schmidt@analog.com>
6049
6050         * reload1.c (choose_reload_regs): Set reload_spill_index for regs
6051         chosen during find_reloads.
6052
6053 2007-07-06  Richard Guenther  <rguenther@suse.de>
6054
6055         * gimplify.c (gimplify_call_expr): Prefer DECL_ARGUMENTS over
6056         TYPE_ARG_TYPES for verification of argument types.  Use
6057         DECL_ARG_TYPE instead of the PARM_DECL type.  Take excess
6058         parameters as variable arguments.
6059
6060 2007-07-06  Andreas Krebbel  <krebbel1@de.ibm.com>
6061
6062         * libgcc2.h (word_type): Type definition removed.
6063         (cmp_return_type, shift_count_type): Type definitions added.
6064         (__lshrdi3, __ashldi3, __ashrdi3): word_type of second parameter
6065         replaced with shift_count_type.
6066         (__cmpdi2, __ucmpdi2): word_type of return type replaced with
6067         cmp_return_type.
6068         * libgcc2.c (__udivmoddi4, __moddi3): Type of local variable c
6069         changed from word_type to Wtype.
6070         (__lshrdi3, __ashldi3, __ashrdi3): word_type of second parameter
6071         replaced with shift_count_type.
6072         (__cmpdi2, __ucmpdi2): word_type of return type replaced with
6073         cmp_return_type.
6074         * c-common.c (handle_mode_attribute): Handling for libgcc_cmp_return
6075         and libgcc_shift_count attribute added.
6076         * target-def.h (TARGET_LIBGCC_CMP_RETURN_MODE,
6077         TARGET_LIBGCC_SHIFT_COUNT_MODE): New target hooks defined.
6078         (TARGET_INITIALIZER): New target hooks added.
6079         * targhooks.c (default_libgcc_cmp_return_mode,
6080         default_libgcc_shift_count_mode): Default implementations for the new
6081         target hooks added.
6082         * targhooks.h (default_libgcc_cmp_return_mode,
6083         default_libgcc_shift_count_mode): Function prototypes added.
6084         * target.h (struct gcc_target): Fields for the new target hooks added.
6085         * optabs.c (expand_binop): Use shift_count_mode when expanding shift
6086         as library call.
6087         (prepare_cmp_insn): Use cmp_return_mode when expanding comparison as
6088         library call.
6089
6090         * doc/tm.texi (TARGET_LIBGCC_CMP_RETURN_MODE,
6091         TARGET_LIBGCC_SHIFT_COUNT_MODE): Documentation added.
6092
6093         * config/s390/s390.c (s390_libgcc_cmp_return_mode,
6094         s390_libgcc_shift_count_mode): Functions added.
6095         (TARGET_LIBGCC_CMP_RETURN_MODE, TARGET_LIBGCC_SHIFT_COUNT_MODE):
6096         Target hooks defined.
6097
6098 2007-07-06  Richard Sandiford  <richard@codesourcery.com>
6099
6100         * config/mips/mips.c (compute_frame_size): Restore the original
6101         gp_sp_offset for !GENERATE_MIPS16E_SAVE_RESTORE and remove the
6102         fp_size term from the GENERATE_MIPS16E_SAVE_RESTORE calculation.
6103         Document why the difference is needed.
6104
6105 2007-07-06  Richard Guenther  <rguenther@suse.de>
6106
6107         * c-common.c (boolean_increment): Use correctly typed
6108         constant.
6109
6110 2007-07-06  Richard Sandiford  <richard@codesourcery.com>
6111
6112         * config/mips/mips.c (mips16e_save_restore_pattern_p): Check that
6113         the topmost argument register is not also included in the save mask.
6114         (mips16e_collect_argument_save_p): Take a pointer to the argument
6115         register, rather than a pointer to the number of arguments.
6116         (mips16e_collect_argument_saves): Only include argument saves
6117         that aren't in the register mask.
6118
6119 2007-07-06  Uros Bizjak  <ubizjak@gmail.com>
6120
6121         PR rtl-optimization/32450
6122         * function.c (thread_prologue_and_epilogue_insns): Emit blockage insn
6123         to ensure that instructions are not moved into the prologue when
6124         profiling is on.  Remove unused prologue_end variable.
6125         (expand_function_end): Emit blockage insn instead of ASM_INPUT rtx
6126         as a scheduling barrier.
6127
6128 2007-07-06  Alexandre Oliva  <aoliva@redhat.com>
6129
6130         PR debug/23551
6131         * tree-ssa-copyrename.c (copy_rename_partition_coalesce):
6132         Disregard DECL_FROM_INLINE.
6133
6134 2007-07-05  Adam Nemet  <anemet@caviumnetworks.com>
6135
6136         * rtlanal.c (num_sign_bit_copies1): Improve cases of ANDing or
6137         IORing with a constant.
6138
6139 2007-07-05  Seongbae Park  <seongbae.park@gmail.com>
6140
6141         PR rtl-optimization/32475
6142         * df-scan.c (df_def_record_1): Add a use of the stack pointer
6143         for every definition of the stack pointer.
6144
6145 2007-07-05  Richard Earnshaw  <rearnsha@arm.com>
6146
6147         * arm.c (vfp3_const_double_index): Copy signed results of
6148         REAL_VALUE_TO_INT into unsigned vars.
6149
6150 2007-07-05  Richard Guenther  <rguenther@suse.de>
6151
6152         PR middle-end/32639
6153         * alias.c (get_alias_set): Tread METHOD_TYPE the same as
6154         FUNCTION_TYPE.
6155         * tree-ssa.c (useless_type_conversion_p): Check canonical
6156         types early.
6157
6158 2007-07-05 Anatoly Sokolov <aesok@post.ru>
6159
6160         * config/avr/avr.md (zero_extendqihi2, zero_extendqisi2, 
6161         zero_extendhisi2): Change to define_insn_and_split. 
6162         (zero_extendqidi2, zero_extendhidi2, zero_extendsidi2): New.
6163
6164 2007-07-05  Paolo Bonzini  <bonzini@gnu.org>
6165
6166         * function.c (match_asm_constraints_1, rest_of_match_asm_constraints,
6167         pass_match_asm_constraints): New.
6168         * passes.c (init_optimization_passes): Add new pass.
6169         * stmt.c (expand_asm_operands): Set cfun->has_asm_statement.
6170         * function.h (struct function): Add has_asm_statement bit.
6171         (current_function_has_asm_statement): New.
6172         * tree-pass.h (pass_match_asm_constraints): New.
6173
6174 2007-07-05  Richard Sandiford  <rsandifo@nildram.co.uk>
6175
6176         * config/mips/mips.c (mips_file_start): Avoid declaration
6177         after code.
6178
6179 2007-07-05  Sandra Loosemore  <sandra@codesourcery.com>
6180
6181         * optabs.c (expand_binop_directly): Fix signed/unsigned comparison.
6182
6183 2007-07-05  Uros Bizjak  <ubizjak@gmail.com>
6184
6185         * rtl.def (NOTE): Change print format string to print
6186         operand 5 as a note insn name.
6187
6188 2007-07-05  Sandra Loosemore  <sandra@codesourcery.com>
6189             David Ung  <davidu@mips.com>
6190
6191         * config/mips/mips.c (mips_cpu_info): Add 4ksc and 4ksd processors.
6192         * doc/invoke.texi: (MIPS Options): Document them.
6193
6194 2007-07-05  Sandra Loosemore  <sandra@codesourcery.com>
6195             David Ung  <davidu@mips.com>
6196
6197         Add support for SmartMIPS ASE.
6198
6199         * optabs.c (expand_binop_directly): New, broken out from...
6200         (expand_binop): Here.  Make it try rotating in the other
6201         direction even when the second operand isn't constant.
6202         * config/mips/mips.md (*lwxs): New.
6203         * config/mips/mips.opt (msmartmips): New.
6204         * config/mips/mips.c (mips_lwxs_address_p): New.
6205         (mips_rtx_costs): Make it recognize scaled indexed addressing.
6206         * config/mips/mips.h (TARGET_CPU_CPP_BUILTINS): Define
6207         __mips_smartmips when compiling for TARGET_SMARTMIPS.
6208         (ISA_HAS_ROR): Define for TARGET_SMARTMIPS.
6209         (ISA_HAS_LWXS): New.
6210         (ASM_SPEC): Add -msmartmips/-mno-smartmips.
6211         * doc/invoke.texi (MIPS Options): Document -msmartmips/-mno-smartmips.
6212         * testsuite/gcc.target/mips/smartmips-lwxs.c: New test case.
6213         * testsuite/gcc.target/mips/smartmips-ror-1.c: New test case.
6214         * testsuite/gcc.target/mips/smartmips-ror-2.c: New test case.
6215         * testsuite/gcc.target/mips/smartmips-ror-3.c: New test case.
6216         * testsuite/gcc.target/mips/smartmips-ror-4.c: New test case.
6217
6218 2007-07-05  Dorit Nuzman  <dorit@il.ibm.com>
6219
6220         * tree-vectorizer.c (new_loop_vec_info): Initialize
6221         LOOP_VINFO_COST_MODEL_MIN_ITERS.
6222         * tree-vectorizer.h (_loop_vec_info): Added new filed
6223         min_profitable_iters.
6224         (LOOP_VINFO_COST_MODEL_MIN_ITERS): New access macro to above new field.
6225         (TARG_SCALAR_TO_VEC_COST): Define cost of scalar to vector operation.
6226         * tree-vect-analyze.c (vect_analyze_operations): Set
6227         LOOP_VINFO_COST_MODEL_MIN_ITERS.
6228         * tree-vect-transform.c (vect_estimate_min_profitable_iters): Use
6229         VEC_length to determine if there are any LOOP_VINFO_MAY_MISALIGN_STMTS.
6230         Fix calculation of peel_iters_prologue. Move consideration of epilogue
6231         and prologue cost to after they are computed.
6232         (vect_model_induction_cost): Use TARG_SCALAR_TO_VEC_COST instead of
6233         TARG_VEC_STMT_COST.
6234         (vect_model_simple_cost): Takes additional argument dt. Consider cost
6235         of creating vectors from scalars according to dt.
6236         (vect_model_store_cost): Likewise.
6237         (vectorizable_call): Use dt array instead of scalar dt. Call
6238         vect_model_simple_cost with additional argument dt.
6239         (vectorizable_assignment): Likewise.
6240         (vectorizable_operation): Likewise.
6241         (vectorizable_type_demotion): Likewise.
6242         (vectorizable_type_promotion): Likewise.
6243         (vectorizable_store): Use dt array instead of scalar dt. Call
6244         vect_model_store_cost with additional argument dt.
6245         (vect_do_peeling_for_loop_bound): Don't call
6246         vect_estimate_min_profitable_iters. Instead, lookup
6247         LOOP_VINFO_COST_MODEL_MIN_ITERS. Don't always print
6248         "may not be profitable".
6249
6250 2007-07-05  Dorit Nuzman  <dorit@il.ibm.com>
6251
6252         PR testsuite/32014
6253         * config/rs6000/altivec.md (UNSPEC_VUPKHS_V4SF, UNSPEC_VUPKLS_V4SF):
6254         (UNSPEC_VUPKHU_V4SF, UNSPEC_VUPKLU_V4SF): New.
6255         (vec_unpacks_float_hi_v8hi, vec_unpacks_float_lo_v8hi): New patterns.
6256         (vec_unpacku_float_hi_v8hi, vec_unpacku_float_lo_v8hi): New patterns. 
6257
6258 2007-07-05  Zdenek Dvorak  <dvorakz@suse.cz>
6259
6260         * config/i386/i386.c (ix86_address_cost): Do not consider more complex
6261         addressing modes cheaper.
6262
6263 2007-07-05  Alexandre Oliva  <aoliva@redhat.com>
6264
6265         * dwarf2out.c (dw_ranges_by_label_ref): New typedef.
6266         (dw_ranges_struct): Rename block_num to num.  Adjust.
6267         (dw_ranges_by_label_struct): New.
6268         (ranges_by_label, ranges_by_label_allocated,
6269         ranges_by_label_in_use): New variables.
6270         (add_ranges_num): Factored most of the code out of...
6271         (add_ranges): ... this one.  Rewrite in terms of the former.
6272         (add_ranges_by_labels): New.
6273         (output_ranges): Output by-label ranges.
6274         (dwarf2out_finish): Output range for multiple-section
6275         compile_unit.  Output standard DW_AT_low_pc in addition to
6276         unexpected DW_AT_entry_pc.
6277
6278 2007-07-04  Daniel Berlin  <dberlin@dberlin.org>
6279
6280         PR tree-optimization/32604
6281         PR tree-optimization/32606
6282
6283         * tree-ssa-pre.c (bb_bitmap_sets): Removed antic_safe_loads.
6284         (compute_antic_safe): Removed.
6285         (ANTIC_SAFE_LOADS): Ditto.
6286         (compute_antic_aux): Don't print ANTIC_SAFE_LOADS.
6287         (execute_pre): Don't call compute_antic_safe.
6288         (vuse_equiv): New function.
6289         (make_values_for_stmt): Use it
6290         * tree-ssa-sccvn.c (set_ssa_val_to): Remove assert, since it is
6291         not always true.
6292
6293 2007-07-04 Anatoly Sokolov <aesok@post.ru>
6294
6295         PR target/31331
6296         * config/avr/avr.c (avr_naked_function_p): Handle receiving a type
6297         rather than a decl. 
6298         (avr_attribute_table): Make "naked" attribute apply to function types
6299         rather than to decls.
6300         (avr_handle_fntype_attribute): New function.
6301
6302 2007-07-04  Joseph Myers  <joseph@codesourcery.com>
6303
6304         * target-def.h (TARGET_INITIALIZER): Remove trailing whitespace
6305         after \.
6306
6307 2007-07-04  David Ung  <davidu@mips.com>
6308             Joseph Myers  <joseph@codesourcery.com>
6309
6310         * config/mips/mips.md (type): Add logical, signext and move.
6311         (one_cmpl<mode>2, *and<mode>3, *and<mode>3_mips16, *ior<mode>3,
6312         *ior<mode>3_mips16, two unnamed insns after *ior<mode>3_mips16,
6313         *nor<mode>3, "Combiner patterns to optimize truncate/zero_extend
6314         combinations", *zero_extend<SHORT:mode><GPR:mode>2,
6315         *zero_extendqihi2, *extend<SHORT:mode><GPR:mode>2_mips16e,
6316         *extend<SHORT:mode><GPR:mode>2_se<SHORT:size>, *movdi_64bit,
6317         *movdi_64bit_mips16, *movsi_internal, *movsi_mips16, movcc,
6318         *movhi_internal, *movhi_mips16, *movqi_internal, *movqi_mips16,
6319         *movsf_hardfloat, *movsf_softfloat, *movsf_mips16,
6320         *movdf_hardfloat_64bit, *movdf_hardfloat_32bit,
6321         movv2sf_hardfloat_64bit): Use the new types.
6322         (*movdi_32bit, *movdi_gp32_fp64, *movdi_32bit_mips16,
6323         *movdf_softfloat, *movdf_mips16): Use "multi".
6324         (extendqihi2): Replace with a define_expand.
6325         (*extendqihi2_mips16e, *extendqihi2, *extendqihi2_seb): New.
6326         Based on extend<SHORT:mode><GPR:mode>2 patterns.
6327         * config/mips/74k.md (r74k_int_logical): New reservation and
6328         bypasses.
6329         (r74k_int_arith): Remove "slt".
6330         * config/mips/24k.md, config/mips/4130.md, config/mips/4k.md,
6331         config/mips/5400.md, config/mips/5500.md, config/mips/5k.md,
6332         config/mips/7000.md, config/mips/9000.md, config/mips/generic.md,
6333         config/mips/sb1.md, config/mips/sr71k.md: Add new types to
6334         reservations for "arith".
6335
6336 2007-07-04  Richard Guenther  <rguenther@suse.de>
6337
6338         * tree-ssa.c (useless_type_conversion_p): Add handling for
6339         scalar float and vector types.  Only call the types_compatible_p
6340         langhook for aggregate types as last resort.  Follow the
6341         rules.
6342
6343 2007-07-04  Richard Guenther  <rguenther@suse.de>
6344
6345         * tree-inline.c (estimate_num_insns_1): Treat CONVERT_EXPR
6346         the same as NOP_EXPR.
6347
6348 2007-07-04  Nick Clifton  <nickc@redhat.com>
6349
6350         * target.h (struct gcc_target): Add target_help field.
6351         * target-def.h (TARGET_HELP): New.
6352         (TARGET_INITIALIZER): Use TARGET_HELP.
6353         * opts.c (command_handle_option): Invoke target_help function, if
6354         defined, when the user has specified --target-help on the command
6355         line.
6356         * doc/invoke.texi: Mention that --target-help might print
6357         additional information.
6358         * doc/tm.texi: Document TARGET_HELP hook.
6359
6360         * arm.c (TARGET_HELP): Override default definition.
6361         (arm_target_help): New - display a wrapped list of cores and
6362         architectures supported.
6363
6364 2007-07-04  Rask Ingemann Lambertsen  <rask@sygehus.dk>
6365
6366         * config/v850/v850.c (expand_prologue): Make sure
6367         GEN_INT() argument is sign extended rather than zero extended.
6368         (expand_epilogue): Likewise.
6369         (output_move_double): Delete.
6370         * config/v850/v850-protos.h (output_move_double): Delete.
6371         * config/v850/v850.md (movdi): Delete.
6372         (*movdi_internal): Delete.
6373         (movdf): Delete.
6374         (*movdf_internal): Delete.
6375
6376 2007-07-04  Richard Sandiford  <richard@codesourcery.com>
6377
6378         * config/sh/vxworks.h (SUBTARGET_OVERRIDE_OPTIONS): Reject -mrelax
6379         unless compiling RTP PIC.
6380
6381 2007-07-04  Richard Guenther  <rguenther@suse.de>
6382
6383         PR tree-optimization/32482
6384         * tree-ssa-ifcombine.c (recognize_single_bit_test): Use the
6385         original ssa name if we didn't find a shift expression.
6386         Fix shift constant for bit zero test.
6387
6388 2007-07-04  Richard Sandiford  <richard@codesourcery.com>
6389
6390         * config/sh/lib1funcs.asm (ic_invalidate): Align constant pool.
6391
6392 2007-07-04  Richard Sandiford  <richard@codesourcery.com>
6393
6394         * config.gcc (arm-wrs-vxworks): Don't include svr4.h.
6395         * config/vxworks.h (PTRDIFF_TYPE, SIZE_TYPE, TARGET_POSIX_IO): Define.
6396         * config/arm/vxworks.h (ASM_SPEC): Delete.
6397         (SUBTARGET_EXTRA_ASM_SPEC): Define.
6398
6399 2007-07-04  Sebastian Pop  <sebpop@gmail.com>
6400
6401         * tree-data-ref.h (data_dependence_relation): New flag reversed_p.
6402         (DDR_REVERSED_P): New.
6403         * tree-data-ref.c (initialize_data_dependence_relation,
6404         build_classic_dist_vector): Set DDR_REVERSED_P.
6405
6406 2007-07-04  Sebastian Pop  <sebpop@gmail.com>
6407
6408         PR middle-end/32457
6409         * tree-data-ref.c (analyze_siv_subscript_cst_affine,
6410         compute_overlap_steps_for_affine_1_2, analyze_subscript_affine_affine,
6411         init_omega_for_ddr_1): Use non conservative number of iterations
6412         estimations.
6413         (analyze_subscript_affine_affine): Use HOST_WIDE_INT instead of int.
6414         (analyze_siv_subscript): Remove FIXME and reinitialization of 
6415         last_conflicts to chrec_dont_know.
6416         * testsuite/gfortran.dg/vect/pr32457.f90: New.
6417
6418 2007-07-04  Douglas Gregor  <doug.gregor@gmail.com>
6419
6420         * tree.c (maybe_canonicalize_argtypes): Improve description.
6421
6422 2007-07-04  Douglas Gregor  <doug.gregor@gmail.com>
6423
6424         * tree.c (maybe_canonicalize_argtypes): New.
6425         (build_function_type): Set canonical type.
6426         (build_method_type_directly): Ditto.
6427         (reconstruct_complex_type): Rebuild the METHOD_TYPE node
6428         properly.
6429
6430 2007-07-03  Andrew Pinski  <andrew_pinski@playstation.sony.com>
6431
6432         * tree-ssa-loop-ivopts.c (strip_offset_1): Treat POINTER_PLUS_EXPR
6433         like PLUS_EXPR.
6434         (rewrite_use_nonlinear_expr): Likewise.
6435
6436 2007-07-03  Seongbae Park  <seongbae.park@gmail.com>
6437
6438         * rtl.def (UNSPEC, USE, CLOBBER): More comments.
6439
6440 2007-07-04  Ben Elliston  <bje@au.ibm.com>
6441
6442         * dwarf2out.c: Move DWARF2 abbreviation glossary closer to the top
6443         of this file.
6444
6445         * c-objc-common.c (c_types_compatible_p): Fix indentation.
6446
6447         * doc/tm.texi (Run-time Target): Capitalise "CPU".
6448         (Exception Handling): Likewise.
6449
6450 2007-07-03  Jan Hubicka  <jh@suse.cz>
6451
6452         * ifcvt.c (find_cond_trap): Avoid invalid RTL sharing.
6453
6454 2007-07-03  Eric Christopher  <echristo@apple.com>
6455
6456         * doc/cppopts.texi: Add conflicting option note to -dM.
6457         * doc/invoke.texi: Add note about possible conflicts with
6458         -E for -dCHARS and note that -dM will not produce
6459         any results if there is no machine dependent reorg.
6460         
6461 2007-07-03  Geoffrey Keating  <geoffk@apple.com>
6462
6463         * tree.h (DECL_ALIGN): Back out previous change.
6464
6465 2007-07-03  Joseph Myers  <joseph@codesourcery.com>
6466
6467         * configure.ac: Test for .dtprelword support on MIPS.
6468         * configure, config.in: Regenerate.
6469         * config/mips/mips.c (mips_output_dwarf_dtprel): New.
6470         (TARGET_ASM_OUTPUT_DWARF_DTPREL): Define.
6471
6472 2007-07-03  Julian Brown  <julian@codesourcery.com>
6473
6474         * config.gcc (with_fpu): Allow --with-fpu=vfp3.
6475         * config/arm/aout.h (REGISTER_NAMES): Add D16-D31.
6476         * config/arm/aof.h (REGISTER_NAMES): Add D16-D31.
6477         * config/arm/arm.c (FL_VFPV3): New flag for VFPv3 processor
6478         capability.
6479         (all_fpus): Add FPUTYPE_VFP3.
6480         (fp_model_for_fpu): Add VFPv3 field.
6481         (arm_rtx_costs_1): Give cost to VFPv3 constants.
6482         (vfp3_const_double_index): New function. Return integer index of
6483         VFPv3 constant suitable for fconst[sd] insns, or -1 if constant
6484         isn't suitable.
6485         (vfp3_const_double_rtx): New function. True if VFPv3 is enabled
6486         and argument represents a valid RTX for a VFPv3 constant.
6487         (vfp_output_fldmd): Split fldmd with > 16 registers in the list into
6488         two instructions.
6489         (vfp_emit_fstmd): Similar, for fstmd.
6490         (arm_print_operand): Implement new code 'G' for VFPv3 floating-point
6491         constants, represented as integer indices.
6492         (arm_hard_regno_mode_ok): Use VFP_REGNO_OK_FOR_SINGLE,
6493         VFP_REGNO_OK_FOR_DOUBLE macros.
6494         (arm_regno_class): Handle VFPv3 d0-d7, low, high register split.
6495         (arm_file_start): Set float-abi attribute for VFPv3, and output
6496         correct ".fpu" assembler directive.
6497         (arm_dbx_register_numbering): Add FIXME.
6498         * config/arm/arm.h (TARGET_VFP3): New macro. Target supports VFPv3.
6499         (fputype): Add FPUTYPE_VFP3.
6500         (FIXED_REGISTERS): Add 32 registers for D16-D31.
6501         (CALL_USED_REGISTERS): Likewise.
6502         (CONDITIONAL_REGISTER_USAGE): Add note about conditional definition
6503         of LAST_VFP_REGNUM. Make D16-D31 caller-saved, if present.
6504         (LAST_VFP_REGNUM): Extend available VFP registers for VFPv3.
6505         (D7_VFP_REGNUM): New.
6506         (LAST_LO_VFP_REGNUM, FIRST_HI_VFP_REGNUM, LAST_HI_VFP_REGNUM)
6507         (VFP_REGNO_OK_FOR_SINGLE, VFP_REGNO_OK_FOR_SINGLE)
6508         (VFP_REGNO_OK_FOR_DOUBLE): Define new macros.
6509         (FIRST_PSEUDO_REGISTER): Shift up to 128 to accommodate VFPv3.
6510         (REG_ALLOC_ORDER): Adjust for VFPv3.
6511         (reg_class): Add VFP_D0_D7_REGS, VFP_LO_REGS, VFP_HI_REGS.
6512         (REG_CLASS_NAMES): Add entries corresponding to VFP_D0_D7_REGS,
6513         VFP_LO_REGS, VFP_HI_REGS.
6514         (REG_CLASS_CONTENTS): Likewise. Extend contents for VFP_REGS.
6515         (IS_VFP_CLASS): Define macro.
6516         (SECONDARY_OUTPUT_RELOAD_CLASS, SECONDARY_INPUT_RELOAD_CLASS): Use
6517         IS_VFP_CLASS.
6518         (REGISTER_MOVE_COST): Likewise.
6519         * config/arm/arm-protos.h (vfp3_const_double_rtx): Add prototype.
6520         * config/arm/vfp.md (VFPCC_REGNUM): Redefine as 127.
6521         (*arm_movsi_vfp, *thumb2_movsi_vfp, *movsfcc_vfp)
6522         (*thumb2_movsfcc_vfp, *abssf2_vfp, *negsf2_vfp, *addsf3_vfp)
6523         (*subsf3_vfp, *divsf_vfp, *mulsf_vfp, *mulsf3negsf_vfp)
6524         (*mulsf3addsf_vfp, *mulsf3subsf_vfp, *mulsf3negsfaddsf_vfp)
6525         (*extendsfdf2_vfp, *truncdfsf2_vfp, *truncsisf2_vfp)
6526         (*truncsidf2_vfp, fixuns_truncsfsi2, fixuns_truncdfsi2)
6527         (*floatsisf2_vfp, *floatsidf2_vfp, floatunssisf2)
6528         (floatunssidf2, *sqrtsf2_vfp, *cmpsf_split_vfp)
6529         (*cmpsf_trap_split_vfp, *cmpsf_vfp, *cmpsf_trap_vfp): Use 't'
6530         where appropriate for single-word registers.
6531         (*movsf_vfp, *thumb2_movsf_vfp, *movdf_vfp, *thumb2_movdf_vfp):
6532         As above. Fix type attributes.
6533         * config/arm/constraints.md (register_contraint "t"): Define.
6534         (register_constraint "w"): Change to D0-D15, or D0-D31 for
6535         VFPv3/NEON.
6536         (register_constraint "x"): Define.
6537         (constraint "Dv"): Define.
6538
6539 2007-07-03  Geoffrey Keating  <geoffk@apple.com>
6540
6541         * tree.h (DECL_ALIGN): Prevent use on a FUNCTION_DECL.
6542
6543 2007-07-03  Tom Tromey  <tromey@redhat.com>
6544
6545         * c-parser.c (objc_pq_context): Removed.
6546         (objc_need_raw_identifier): Likewise.
6547         (c_parser) <objc_pq_context>: New field.
6548         <objc_need_raw_identifier>: Likewise.
6549         (OBJC_NEED_RAW_IDENTIFIER): Removed.
6550         (c_lex_one_token): Update.
6551         (c_parser_objc_protocol_definition): Update.
6552         (c_parser_objc_method_definition): Update.
6553         (c_parser_objc_methodproto): Update.
6554         (c_parser_declspecs): Update.
6555
6556 2007-07-03  David Ung  <davidu@mips.com>
6557
6558         * config/mips/mips.c (mips_issue_rate): Return 4 for 74K processors.
6559
6560 2007-07-03  David Ung  <davidu@mips.com>
6561             Richard Sandiford  <richard@codesourcery.com>
6562
6563         * doc/invoke.texi: Document -march=74kf3_2.
6564         * config/mips/mips.h (PROCESSOR_74KF3_2): New processor_type.
6565         (TUNE_74K): Check for it.
6566         * config/mips/mips.c (mips_cpu_info): Add 74kf3_2.
6567         (mips_rtx_cost_data): Add an entry for PROCESSOR_74KF3_2.
6568         * config/mips/mips.md (cpu): Add 74kf3_2.
6569         * config/mips/74k.md (r74k_int_logical, r74k_int_arith, r74k_int_nop)
6570         (r74k_int_cmove, r74k_int_mult, r74k_int_mul3, r74k_int_mfhilo)
6571         (r74k_int_mthilo, r74k_int_div, r74k_int_call, r74k_int_jump)
6572         (r74k_int_load, r74k_int_store, r74k_unknown, r74k_multi): Add
6573         74kf3_2 to the CPU list.
6574         (r74kf3_2_fadd, r74kf3_2_fmove, r74kf3_2_fload, r74kf3_2_fstore)
6575         (r74kf3_2_fmul_sf, r74kf3_2_fmul_df, r74kf3_2_fdiv_sf)
6576         (r74kf3_2_fdiv_df, r74kf3_2_frsqrt_sf, r74kf3_2_frsqrt_df)
6577         (r74kf3_2_fcmp, r74kf3_2_fcvt, r74kf3_2_fxfer_to_c1)
6578         (r74kf3_2_fxfer_from_c1): New insn reservations.
6579
6580 2007-07-03  Richard Sandiford  <richard@codesourcery.com>
6581             David Ung  <davidu@mips.com>
6582
6583         * doc/invoke.texi: Replace -march=24kf with -march=24kf2_1 and
6584         -march=24kx with -march=24kf1_1.  Likewise 24ke[fx], 34k[fx]
6585         and 74k[fx].  Document aliases for the new options.
6586         * config/mips/mips.h (PROCESSOR_24KF): Rename to...
6587         (PROCESSOR_24KF2_1): ...this.
6588         (PROCESSOR_24KX): Rename to...
6589         (PROCESSOR_24KF1_1): ...this.
6590         (PROCESSOR_74KF): Rename to...
6591         (PROCESSOR_74KF2_1): ...this.
6592         (PROCESSOR_74KX): Rename to...
6593         (PROCESSOR_74KF1_1): ...this.
6594         (TUNE_74K): Update PROCESSOR_* names.
6595         * config/mips/mips.c (mips_cpu_info): Add 24kf2_1 as a synonym
6596         for 24kf.  Add 24kf1_1 and 24kfx as synonyms for 24kx.  Likewise
6597         the 24ke*, 34k* and 74k* processors.  Update PROCESSOR_* names.
6598         (mips_rtx_cost_data): Update processor names in comments.
6599         (mips_issue_rate): Update PROCESSOR_* names.
6600         * config/mips/mips.md (cpu): Rename 24kf to 24kf2_1, 24kx to
6601         24kf1_1, 74kf to 74kf2_1 and 74kx to 74kf1_1.
6602         * config/mips/24k.md: Rename FPU-related r24k_* insn reservations
6603         to r24kf2_1_*.  Rename r24kx_* insn reservations to r24kf1_1_*.
6604         Update cpu attribute names.
6605         (r24k_fpu_iss): Rename this reservation to...
6606         (r24kf2_1_fpu_iss): ...this and update all uses.
6607         (r24kx_fpu_iss): Rename this reservation to...
6608         (r24kf1_1_fpu_iss): ...this and update all uses.
6609         * config/mips/74k.md: Rename FPU-related r74kf_* insn reservations
6610         to r74kf2_1_*.  Rename r74kx_* insn reservations to r74kf1_1_*.
6611         Update cpu attribute names.
6612
6613 2007-07-01  Kaz Kojima  <kkojima@gcc.gnu.org>
6614
6615         * config/m32r/constraints.md: New file.
6616         * config/m32r/m32r.c: Include tm-constrs.h.
6617         (small_data_operand): Use satisfies_constraint_* instead of macro.
6618         (addr24_operand, gen_compare): Likewise.
6619         * config/m32r/m32r.h (REG_CLASS_FROM_LETTER): Remove.
6620         (INT8_P, UPPER16_P, UINT32_P, UINT5_P, INVERTED_SIGNED_8BIT,
6621         CONST_OK_FOR_LETTER_P, CONST_DOUBLE_OK_FOR_LETTER_P,
6622         EXTRA_CONSTRAINT): Likewise.
6623         * config/m32r/m32r.md: Include constraints.md.
6624         (*movsi_insn): Use satisfies_constraint_* instead of macro.
6625         (andsi3, iorsi3, xorsi3, seq_insn+1, sne): Likewise.
6626         * config/m32r/predicates.md (conditional_move_operand): Likewise.
6627         (two_insn_const_operand, int8_operand, uint16_operand,
6628         reg_or_int16_operand, reg_or_uint16_operand,
6629         reg_or_cmp_int16_operand, cmp_int16_operand,
6630         seth_add3_operand): Likewise.
6631
6632 2007-07-03  Eric Christopher  <echristo@gmail.com>
6633
6634         * libgcc2.h: Conditionally declare __bswapsi2 and
6635         __bswapdi2.
6636         
6637 2007-07-03  H.J. Lu  <hongjiu.lu@intel.com>
6638
6639         * ddg.c (check_sccs): Define only if ENABLE_CHECKING is
6640         defined.
6641
6642 2007-07-03  Rainer Orth  <ro@TechFak.Uni-Bielefeld.DE>
6643
6644         PR target/28307
6645         * gthr-posix.h [SUPPORTS_WEAK && GTHREAD_USE_WEAK]
6646         (__gthrw_pragma): Provide default definition.
6647         (__gthrw2): Use it.
6648         * gthr-posix.c (__gthrw_pragma): Define.
6649
6650 2007-07-03  Daniel Berlin  <dberlin@dberlin.org>
6651
6652         * tree-ssa-sccvn.c (set_ssa_val_to): Check for operand_equal_p
6653         before declaring inequality.
6654
6655 2007-07-03  Rask Ingemann Lambertsen  <rask@sygehus.dk>
6656
6657         * combine.c (recog_for_combine): Log the success or failure of
6658           matching new insn patterns against the machine description in
6659           detailed dumps.
6660
6661 2007-07-03  Revital Eres  <eres@il.ibm.com>
6662
6663         * ddg.c (print_sccs): New function.
6664         (check_sccs): New function.
6665         (create_ddg_all_sccs): Use it.
6666         * ddg.h (print_sccs): Declare.
6667         * modulo-sched.c (sms_order_nodes): Call print_sccs.
6668
6669 2007-07-03  Uros Bizjak  <ubizjak@gmail.com>
6670
6671         * targhooks.h (default_mode_for_suffix): New function declaration.
6672         * targhooks.c (default_mode_for_suffix): New default target hook.
6673         * target.h (struct c): New structure in the targetm struct.
6674         (mode_for_suffix): New target hook as part of struct c.
6675         target-def.h (TARGET_C_MODE_FOR_SUFFIX): Define as
6676         default_mode_for_suffix.
6677         (TARGET_C): New define.
6678         * c-lex.c: Include "target.h".
6679         (interpret_float): Use targetm.c.mode_for_suffix to determine
6680         the mode for a given non-standard suffix.
6681         Makefile.in (c-lex.o): Depend on $(TARGET_H).
6682
6683         * config/i386/i386.c (ix86_c_mode_for_suffix): New static function.
6684         (TARGET_C_MODE_FOR_SUFFIX): Define to ix86_c_mode_for_suffix.
6685
6686         * doc/extend.texi (Floating Types): New node.  Document __float80 and
6687         __float128 types.  Document 'w', 'W', 'q' and 'Q' suffixes.
6688
6689 2007-07-03  Kaz Kojima  <kkojima@gcc.gnu.org>
6690
6691         PR target/32506
6692         * config/sh/sh.md (udivsi3_i1_media): Use target_reg_operand
6693         predicate instead of target_operand.
6694         (divsi3_i1_media, divsi3_media_2): Likewise.
6695
6696 2007-07-02  Eric Botcazou  <ebotcazou@adacore.com>
6697
6698         * tree.h (alias_sets_might_conflict_p): Rename into
6699         alias_sets_must_conflict_p.
6700         * alias.c (alias_sets_might_conflict_p): Likewise.
6701         (alias_sets_conflict_p): Use it.
6702         (objects_must_conflict_p): Likewise.
6703         * c-common.c (strict_aliasing_warning): Adjust.
6704
6705 2007-07-02  Andrew Pinski  <andrew_pinski@playstation.sony.com>
6706
6707         * rtlhooks.c (gen_lowpart_if_possible): Check for
6708         invalid subreg before calling gen_lowpart_SUBREG.
6709
6710 2007-07-02  Geoffrey Keating  <geoffk@apple.com>
6711
6712         * config/darwin9.h: Add copyright notice.
6713         (LINK_COMMAND_SPEC): Add comment.
6714         (DARWIN_LIBSYSTEM_HAS_UNWIND): Define.
6715         * config/rs6000/darwin.h (MD_UNWIND_SUPPORT): Conditionalise on
6716         DARWIN_LIBSYSTEM_HAS_UNWIND.
6717
6718 2007-07-02  Jakub Jelinek  <jakub@redhat.com>
6719
6720         PR libgomp/32468
6721         * omp-low.c (check_combined_parallel): New function.
6722         (lower_omp_parallel): Call it via walk_stmts, set
6723         OMP_PARALLEL_COMBINED if appropriate.
6724         (determine_parallel_type): If OMP_FOR resp. OMP_SECTIONS
6725         isn't the only statement in WS_ENTRY_BB or OMP_RETURN
6726         the only one in PAR_EXIT_BB and not OMP_PARALLEL_COMBINED,
6727         don't consider it as combined parallel.
6728
6729 2007-07-02  Richard Sandiford  <richard@codesourcery.com>
6730
6731         * configure.ac (gcc_gxx_include_dir): Use $(libsubdir_to_prefix).
6732         (gcc_tooldir): Likewise.
6733         * configure: Regenerate.
6734         * Makefile.in (libsubdir_to_prefix): New variable, based on the
6735         old configure.ac gcc_tooldir setting.
6736         (prefix_to_exec_prefix): New variable.
6737         (DRIVER_DEFINES): Use $(libsubdir_to_prefix)$(prefix_to_exec_prefix)
6738         rather than $(unlibsubdir)/../ to derive TOOLDIR_BASE_PREFIX.
6739
6740 2007-07-02  Daniel Berlin  <dberlin@dberlin.org>
6741
6742         Fix PR tree-optimization/32583
6743         Fix PR tree-optimization/32584
6744         * tree-ssa-pre.c (phi_translate): Always pass seen bitmap.
6745         (phi_translate_set): Use phi_translate directly now.
6746         (make_values_for_stmt): Don't value number RHS if we already know
6747         it is constant.
6748
6749 2007-07-02  Steve Ellcey  <sje@cup.hp.com>
6750             Jim Wilson <wilson@specifix.com>
6751
6752         PR target/31684
6753         * haifa-sched.c (add_to_speculative_block): Change copy_rtx to
6754         copy_insn.
6755
6756 2007-07-02  Sandra Loosemore  <sandra@codesourcery.com>
6757             Richard Sandiford  <richard@codesourcery.com>
6758             Nigel Stephens  <nigel@mips.com>
6759
6760         * config/mips/mips-protos.h (mips16e_save_restore_info): New struct.
6761         (mips16e_output_save_restore): Declare.
6762         (mips16e_save_restore_pattern_p): Likewise.
6763         * config/mips/mips.h (GENERATE_MIPS16E_SAVE_RESTORE): New macro.
6764         * config/mips/mips.c (MIPS_MAX_FIRST_STACK_STEP): Return 0x7f8
6765         for GENERATE_MIPS16E_SAVE_RESTORE.  Return 0x400 for TARGET_MIPS16
6766         && !GENERATE_MIPS16E_SAVE_RESTORE && !TARGET_64BIT.
6767         (BITSET_P): New global macro, extracted from...
6768         (mips_for_each_saved_reg): ...here.
6769         (mips16e_save_restore_info): New struct.
6770         (mips16e_s2_s8_regs, mips16e_a0_a3_regs): New variables.
6771         (mips16e_save_restore_regs): New variable.
6772         (mips_split_plus, mips16e_find_first_register): New functions.
6773         (mips16e_mask_registers): New function.
6774         (compute_frame_size): Expand the commentary before the function.
6775         Enforce the MIPS16e save and restore register range restrictions.
6776         Pad the general register save area at the low end.
6777         (mips16e_save_restore_reg, mips16e_build_save_restore)
6778         (mips16e_save_restore_pattern_p, mips16e_add_register_range)
6779         (mips16e_output_save_restore, mips16e_collect_propagate_value)
6780         (mips16e_collect_argument_save, mips16e_collect_argument_saves):
6781         New functions.
6782         (mips_expand_prologue, mips_expand_epilogue): Handle
6783         GENERATE_MIPS16E_SAVE_RESTORE.
6784         * config/mips/mips.md (*mips16e_save_restore): New pattern.
6785
6786 2007-07-02  Uros Bizjak  <ubizjak@gmail.com>
6787
6788         PR tree-optimization/31966
6789         PR tree-optimization/32533
6790         * tree-if-conv.c (add_to_dst_predicate_list): Use "edge", not
6791         "basic_block" description as its third argument.  Update function
6792         calls to get destination bb from "edge" argument.  Save "cond" into
6793         aux field of the edge.  Update prototype for changed arguments.
6794         (if_convertible_loop_p): Clear aux field of incoming edges if bb
6795         contains phi node.
6796         (find_phi_replacement_condition): Operate on incoming edges, not
6797         on predecessor blocks.  If there is a condition saved in the
6798         incoming edge aux field, AND it with incoming bb predicate.
6799         Return source bb of the first edge.
6800         (clean_predicate_lists): Clean aux field of outgoing node edges.
6801         (tree_if_conversion): Do not initialize cond variable. Move
6802         variable declaration into the loop.
6803         (replace_phi_with_cond_gimple_modify_stmt): Remove unneded
6804         initializations of new_stmt, arg0 and arg1 variables.
6805
6806 2007-07-02  Jakub Jelinek  <jakub@redhat.com>
6807
6808         * tree-nrv.c (dest_safe_for_nrv_p): Grok any handled_component_p,
6809         SSA_NAMEs, RESULT_DECLs and PARM_DECLs.
6810
6811 2007-07-02  Richard Guenther  <rguenther@suse.de>
6812
6813         * tree-ssa.c (useless_type_conversion_p): Document
6814         future intent as defining the middle-end type system.
6815         Re-structure to call langhook last, group by type class,
6816         mark questionable parts.
6817
6818 2007-07-02  Richard Guenther  <rguenther@suse.de>
6819
6820         * tree-flow.h (types_compatible_p): Declare.
6821         * tree-ssa.c (types_compatible_p): New function.
6822         * ipa-type-escape.c (discover_unique_type): Use
6823         types_compatible_p instead of lang_hooks.types_compatible_p.
6824         * tree-ssa-copyrename.c (copy_rename_partition_coalesce): Likewise.
6825         * tree-vn.c (expressions_equal_p): Likewise.
6826         * tree.c (fields_compatible_p): Likewise.
6827         * tree-ssa-dom.c (avail_expr_eq): Likewise.
6828         (cprop_operand): Use useless_type_conversion_p instead of
6829         lang_hooks.types_compatible_p.
6830         * tree-inline.c (setup_one_parameter): Likewise.
6831         (declare_return_variable): Likewise.
6832         * tree-nrv.c (tree_nrv): Likewise.
6833         * tree-ssa-ccp.c (maybe_fold_offset_to_array_ref): Likewise.
6834         (maybe_fold_offset_to_component_ref): Likewise.
6835         (maybe_fold_offset_to_reference): Likewise.
6836         * tree-ssa-copy.c (may_propagate_copy): Likewise.
6837         (merge_alias_info): Likewise.
6838         * tree-ssa-forwprop.c (forward_propagate_addr_expr_1): Likewise.
6839         * tree-ssa-phiopt.c (conditional_replacement): Likewise.
6840         * tree-ssa-reassoc.c (optimize_ops_list): Likewise.
6841         * tree-tailcall.c (find_tail_calls): Likewise.
6842         * tree-vect-generic.c (expand_vector_operations_1): Likewise.
6843         * gimplify.c (canonicalize_addr_expr): Likewise.
6844         (fold_indirect_ref_rhs): Likewise.
6845         (gimplify_addr_expr): Likewise.  Swap parameters to cpt_same_type.
6846         (cpt_same_type): Likewise.
6847         (check_pointer_types_r): Swap parameters to cpt_same_type
6848         where appropriate.
6849         * fold-const.c (fold_convert): Revert fix for PR15988.
6850         * tree-inline.c (setup_one_parameter): Instead fix it here by
6851         using fold_build1 instead of fold_convert and checking for
6852         error_mark_node.  Convert only if the conversion is necessary.
6853
6854 2007-07-02  Joseph Myers  <joseph@codesourcery.com>
6855
6856         * configure.ac: Check for .gnu_attribute on Power.
6857         * configure: Regenerate.
6858         * config/rs6000/rs6000.c (rs6000_file_start): If supported, output
6859         attribute for floating-point ABI.
6860
6861 2007-07-02  Ira Rosen  <irar@il.ibm.com>
6862
6863         PR tree-optimization/32230
6864         PR tree-optimization/32477
6865         * tree-vect-analyze.c (vect_analyze_data_refs): Fail if base 
6866         address is a constant.
6867
6868 2007-07-02  Richard Sandiford  <richard@codesourcery.com>
6869
6870         * config.gcc (mipsisa32-*-elf*, mipsisa32el-*-elf*)
6871         (mipsisa32r2-*-elf*, mipsisa32r2el-*-elf*)
6872         (mipsisa64-*-elf*, mipsisa64el-*-elf*): Combine top-level
6873         stanzas.  Use the first part of the triplet to set MIPS_ISA_DEFAULT.
6874         Remove redundant setting of MASK_FLOAT64 and MASK_64BIT for the
6875         64-bit targets.  Add support for *-elfoabi*.
6876         * config/mips/t-isa3264 (MULTILIB_OPTIONS, MULTILIB_DIRNAMES): Use
6877         different settings if $(tm_defines) does not select the EABI.
6878         (MULTILIB_EXCLUSIONS): Define in those circumstances.
6879         * config/mips/mips.h (MIPS_ISA_LEVEL_OPTION_SPEC): New macro.
6880         (MIPS_ARCH_OPTION_SPEC): Likewise.
6881         (MIPS_ISA_LEVEL_SPEC): Likewise.
6882         (OPTION_DEFAULT_SPECS): Use MIPS_ARCH_OPTION_SPEC.
6883         * config/mips/elfoabi.h: New file.
6884
6885 2007-07-02  Richard Guenther  <rguenther@suse.de>
6886
6887         * tree-flow.h (tree_ssa_useless_type_conversion_1): Rename to ...
6888         (useless_type_conversion_p): ... this.
6889         * tree-ssa.c (tree_ssa_useless_type_conversion_1): Rename to ...
6890         (useless_type_conversion_p): ... this.
6891         * builtins.c (fold_builtin_memory_op): Rename
6892         tree_ssa_useless_type_conversion_1 to useless_type_conversion_p.
6893         * tree-cfg.c (verify_expr): Likewise.
6894         * tree-ssa-address.c (tree_ssa_useless_type_conversion_1): Likewise.
6895         * tree-ssa-ccp.c (ccp_fold): Likewise.
6896         * tree-ssa-copy.c (may_propagate_copy): Likewise.
6897         * tree-ssa-dom.c (eliminate_redundant_computations): Likewise.
6898         * tree-ssa-forwprop.c (forward_propagate_addr_expr_1): Likewise.
6899         * tree-ssa-loop-niter.c (refine_bounds_using_guard): Likewise.
6900         * tree-ssa-pre.c (eliminate): Likewise.
6901         * tree-ssa.c (delete_tree_ssa): Likewise.
6902         (tree_ssa_useless_type_conversion): Likewise.
6903         * tree.c (build2_stat): Likewise.
6904
6905 2007-07-01  Daniel Berlin  <dberlin@dberlin.org>
6906
6907         Fix PR tree-optimization/32571
6908         * tree-ssa-sccvn.c (visit_use): Shortcut copies to avoid
6909         simplifying them.
6910
6911 2007-07-01  Daniel Berlin  <dberlin@dberlin.org>
6912
6913         * tree-ssa-sccvn.c (copy_reference_ops_from_ref): Handle constants
6914         and other expected operations explicitly, change default to
6915         gcc_unreachable. 
6916
6917 2007-07-01  Daniel Jacobowitz  <dan@codesourcery.com>
6918
6919         * config/arm/arm.c (arm_cannot_copy_insn_p): Do not expect a
6920         PARALLEL.
6921         * config/arm/arm.md (pic_add_dot_plus_four, pic_add_dot_plus_eight)
6922         (tls_load_dot_plus_eight): Move the label number into the unspec.
6923         * config/arm/thumb2.md (pic_load_dot_plus_four): Likewise.
6924
6925 2007-07-01  Andreas Schwab  <schwab@suse.de>
6926
6927         * dwarf2out.c (initial_return_save): Define only if used.
6928
6929 2007-07-01  Kenneth Zadeck <zadeck@naturalbridge.com>
6930
6931         Unreverting Richard's Revert of:
6932
6933         2007-06-27  Richard Sandiford  <richard@codesourcery.com>
6934
6935         * dce.c (deletable_insn_p_1): New function, split out from...
6936         (deletable_insn_p): ...here.  Only treat bare USEs and CLOBBERs
6937         specially, not those inside PARALLELs.  Remove BODY argument
6938         and adjust recursive call accordingly.
6939         (prescan_insns_for_dce): Update call to delete_insn_p.
6940
6941 2007-07-01  Vladimir Yanovsky  <yanov@il.ibm.com>
6942             Revital Eres  <eres@il.ibm.com>
6943
6944         * ddg.c (create_ddg_all_sccs): Fix missed
6945         initialization of scc_nodes.
6946
6947 2007-07-01  Uros Bizjak  <ubizjak@gmail.com>
6948
6949         PR middle-end/32559
6950         * fold-const.c (fold-binary) [PLUS_EXPR]: Convert ~X + X to 1 or
6951         X + ~X to 1 only for INTEGRAL_TYPE_P type.
6952
6953 2007-06-30  Joseph Myers  <joseph@codesourcery.com>
6954
6955         * configure.ac: Check for .gnu_attribute on MIPS.
6956         * configure, config.in: Regenerate.
6957         * config/mips/mips.c (mips_file_start): If supported, output
6958         attribute for floating-point ABI.
6959
6960 2007-06-30  Uros Bizjak  <ubizjak@gmail.com>
6961
6962         PR target/32433
6963         * config/i386/i386.md (ffssi2): Expand as ffs_cmove for TARGET_CMOVE.
6964         (ffs_cmove): New expander to expand using ctz pattern.
6965         (*ffs_cmove): Remove pattern.
6966         (*ffs_no_cmove): Enable only for !TARGET_CMOVE.
6967         (ffsdi2): Expand using ctz pattern.
6968         (*ffs_rex64): Remove pattern.
6969
6970 2007-06-30  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
6971
6972         PR rtl-optimization/32296
6973         * pa.md (return): Delete pattern.
6974         (return_internal): Remove "(const_int 1)" from pattern.
6975         (epilogue): Use return_internal pattern for trivial returns.
6976         * pa-protos.h (hppa_can_use_return_insn_p): Delete declaration.
6977         * pa.c (hppa_can_use_return_insn_p): Delete function.  Include "df.h".
6978
6979 2007-06-30  Daniel Berlin  <dberlin@dberlin.org>
6980
6981         * tree-ssa-pre.c (is_exception_related): New function
6982         (can_value_number_operation): Use it.
6983
6984 2007-06-30  Daniel Berlin  <dberlin@dberlin.org>
6985         
6986         Fix PR tree-optimization/32540
6987         Fix PR tree-optimization/31651
6988
6989         * tree-ssa-sccvn.c: New file.
6990
6991         * tree-ssa-sccvn.h: Ditto.
6992         
6993         * tree-vn.c: Include tree-ssa-sccvn.h
6994         (val_expr_paid_d): Removed.
6995         (value_table): Ditto.
6996         (vn_compute): Ditto.
6997         (val_expr_pair_hash): Ditto.
6998         (val_expr_pair_expr_eq): Ditto.
6999         (copy_vuses_from_stmt): Ditto.
7000         (vn_delete): Ditto.
7001         (vn_init): Ditto.
7002         (shared_vuses_from_stmt): Ditto.
7003         (print_creation_to_file): Moved up.
7004         (sort_vuses): Ditto.
7005         (sort_vuses_heap): Ditto.
7006         (set_value_handle): Make non-static.
7007         (make_value_handle): Ditto.
7008         (vn_add): Rewritten to use sccvn lookups.
7009         (vn_add_with_vuses): Ditto.
7010         (vn_lookup): Ditto (and second argument removed).
7011         (vn_lookup_with_vuses): Ditto.
7012         (vn_lookup_or_add): Ditto (and second argument removed);
7013         (vn_lookup_or_add_with_vuses): Ditto.
7014         (vn_lookup_with_stmt): New.
7015         (vn_lookup_or_add_with_stmt): Ditto.
7016         (create_value_handle_for_expr): Ditto.
7017
7018         * tree-ssa-pre.c: Include tree-ssa-sccvn.h.
7019         (seen_during_translate): New function.
7020         (phi_trans_lookup): Use iterative_hash_expr, not vn_compute.
7021         (phi_trans_add): Ditto.
7022         (constant_expr_p): FIELD_DECL is always constant.
7023         (phi_translate_1): Renamed from phi_translate, add seen bitmap.
7024         Use constant_expr_p.
7025         Avoid infinite recursion on mutually valued expressions.
7026         Change callers of vn_lookup_or_add.
7027         (phi_translate): New function.
7028         (compute_antic_safe): Allow phi nodes.
7029         (create_component_ref_by_pieces): Update for FIELD_DECL change.
7030         (find_or_generate_expression): Rewrite slightly.
7031         (create_expression_by_pieces): Updated for vn_lookup_or_add
7032         change.
7033         Update VN_INFO for new names.
7034         (insert_into_preds_of_block): Update for new names.
7035         (add_to_exp_gen): New function.
7036         (add_to_sets): Use vn_lookup_or_add_with_stmt.
7037         (find_existing_value_expr): Rewrite to changed vn_lookup.
7038         (create_value_expr_from): Ditto, and use add_to_exp_gen.
7039         (try_look_through_load): Removed.
7040         (try_combine_conversion): Ditto.
7041         (get_sccvn_value): New function.
7042         (make_values_for_phi): Ditto.
7043         (make_values_for_stmt): Ditto.
7044         (compute_avail): Rewritten for vn_lookup_or_add changes and to use
7045         SCCVN.
7046         (init_pre): Update for SCCVN changes.
7047         (fini_pre): Ditto.
7048         (execute_pre): Ditto.
7049
7050         * tree-flow.h (make_value_handle): Declare.
7051         (set_value_handle): Ditto.
7052         (sort_vuses_heap): Ditto.
7053         (vn_lookup_or_add_with_stmt): Ditto.
7054         (vn_lookup_with_stmt): Ditto.
7055         (vn_compute): Remove.
7056         (vn_init): Ditto.
7057         (vn_delete): Ditto.
7058         (vn_lookup): Update arguments.
7059
7060         * Makefile.in (tree-ssa-pre.o): Add tree-ssa-sccvn.h
7061         (tree-vn.o): Ditto.
7062         (tree-ssa-sccvn.o): New.
7063         (OBJS-common): Add tree-ssa-sccvn.o
7064         
7065 2007-06-30  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
7066
7067         PR c/4076
7068         * c-typeck.c (build_external_ref): Don't mark as used if called
7069         from itself.
7070         * calls.c (rtx_for_function_call): Likewise.
7071         
7072 2007-06-30  Richard Sandiford  <richard@codesourcery.com>
7073
7074         Revert:
7075
7076         2007-06-27  Richard Sandiford  <richard@codesourcery.com>
7077
7078         * dce.c (deletable_insn_p_1): New function, split out from...
7079         (deletable_insn_p): ...here.  Only treat bare USEs and CLOBBERs
7080         specially, not those inside PARALLELs.  Remove BODY argument
7081         and adjust recursive call accordingly.
7082         (prescan_insns_for_dce): Update call to delete_insn_p.
7083
7084 2007-06-30  Rask Ingemann Lambertsen <rask@sygehus.dk>
7085
7086         * combine.c (combine_validate_cost): New parameter NEWOTHERPAT.
7087         (try_combine): Move potential calls to undo_all() so they happen
7088         before we commit to using the combined insns.
7089
7090 2006-06-30  Jan Hubicka  <jh@suse.cz>
7091
7092         * loop-unroll.c (unroll_loop_runtime_iterations): Unshare newly emit
7093         code.
7094
7095 2006-06-30  Thomas Neumann  <tneumann@users.sourceforge.net>
7096
7097         * ipa.c (cgraph_postorder): Cast according to the coding conventions.
7098         (cgraph_remove_unreachable_nodes): Likewise.
7099         * ipa-cp.c (ipcp_propagate_stage): Use BOTTOM instead of integer 0.
7100         * ipa-inline.c (update_caller_keys): Cast according to the coding
7101         conventions.
7102         (cgraph_decide_recursive_inlining): Likewise.
7103         (cgraph_decide_inlining_of_small_function): Likewise.
7104         (try_inline): Likewise.
7105         (cgraph_decide_inlining_incrementally): Likewise.
7106         * ipa-pure-const.c (get_function_state): Likewise.
7107         (scan_function): Likewise.
7108         (analyze_function): Likewise.
7109         (static_execute): Likewise.
7110         * ipa-reference.c (scan_for_static_refs): Likewise.
7111         (merge_callee_local_info): Likewise.
7112         (analyze_function): Use type safe memory macros.
7113         (static_execute): Likewise. Cast according to the coding conventions.
7114         * ipa-type-escape.c (scan_for_regs): Cast according to the coding
7115         conventions.
7116         * ipa-utils.c (searchc): Likewise. Avoid using C++ keywords as variable
7117         names.
7118         (ipa_utils_reduced_inorder): Likewise. Use type safe memory macros.
7119         * ipa-utils.h (struct ipa_dfa_info): Avoid using C++ keywords as
7120         variable names.
7121
7122 2007-06-29  Andrew Pinski  <andrew_pinski@playstation.sony.com>
7123
7124         PR middle-end/30024
7125         * emit-rtl.c (init_emit_once): Intilize const_tiny_rtx[0]
7126         for complex modes (both int and real).
7127
7128 2007-06-29  Jan Hubicka  <jh@suse.cz>
7129
7130         * cse.c: Rever accidentally comitted TODO_verify_rtl_sharing change.
7131
7132 2007-06-29  Jan Hubicka  <jh@suse.cz>
7133
7134         PR middle-end/32372
7135         * cse.c (cse_insn): Avoid invalid sharing in between register note and
7136         the insn pattern.
7137
7138 2007-06-29  Anatoly Sokolov <aesok@post.ru>
7139
7140         PR target/32335
7141         * config/avr/avr.c: Include dataflow header file.
7142         (expand_prologue): Adjust for prologue insn change.
7143         * config/avr/avr.md (call_prologue_saves): Only modify REG_SP once
7144         inside a insn.
7145
7146 2007-06-29  Richard Guenther  <rguenther@suse.de>
7147
7148         PR middle-end/32493
7149         * gimplify.c (gimplify_call_expr): Ignore variable argument parts
7150         during type verification.
7151
7152 2007-06-29  Jan Hubicka  <jh@suse.cz>
7153
7154         * recog.c (validate_change_rtx_1): Unshare TO argument.
7155
7156 2007-06-29  Uros Bizjak  <ubizjak@gmail.com>
7157
7158         PR tree-optimization/24659
7159         * tree-vect-transform.c (vectorizable_call): Handle
7160         (nunits_in == nunits_out / 2) and (nunits_out == nunits_in / 2) cases.
7161
7162         * config/i386/sse.md (vec_pack_sfix_v2df): New expander.
7163         * config/i386/i386.c (enum ix86_builtins)
7164         [IX86_BUILTIN_VEC_PACK_SFIX]: New constant.
7165         (struct bdesc_2arg) [__builtin_ia32_vec_pack_sfix]: New builtin
7166         description.
7167         (ix86_init_mmx_sse_builtins): Define all builtins with 2 arguments as
7168         const using def_builtin_const.
7169         (ix86_expand_binop_builtin): Remove bogus assert() that insn wants
7170         input operands in the same modes as the result.
7171         (ix86_builtin_vectorized_function): Handle BUILT_IN_LRINT.
7172
7173 2007-06-29  Richard Sandiford  <rsandifo@nildram.co.uk>
7174
7175         * df-problems.c (df_set_unused_notes_for_mw): Fix formatting.
7176         (df_set_dead_notes_for_mw): Likewise.
7177
7178 2007-06-29  Eric Botcazou  <ebotcazou@adacore.com>
7179
7180         * c-common.c (pointer_int_sum): Do the negation in sizetype.
7181
7182 2007-06-28  DJ Delorie  <dj@redhat.com>
7183
7184         * config/m32c/m32c.h (OVERRIDE_OPTIONS): Omit unneeded semicolon.
7185
7186 2007-06-28  Geoffrey Keating  <geoffk@apple.com>
7187
7188         * doc/invoke.texi (C++ Dialect Options): Document
7189         fvisibility-ms-compat.
7190         * c.opt (fvisibility-ms-compat): New.
7191
7192 2007-06-28  Andrew Pinski  <andrew_pinski@playstation.sony.com>
7193
7194         PR tree-opt/32417
7195         * tree-affine.c (aff_combination_add_elt): Handle
7196         pointer addition specially.
7197
7198 2007-06-28  Jakub Jelinek  <jakub@redhat.com>
7199
7200         * config/rs6000/rs6000.c (rs6000_function_ok_for_sibcall): Ensure
7201         decl is non-external for AIX ABI.
7202
7203 2007-06-28  David Edelsohn  <edelsohn@gnu.org>
7204
7205         * config/rs6000/predicates.md (current_file_function_operand):
7206         Ensure the symbol is non-external for AIX ABI.
7207
7208 2007-06-28  Nick Clifton  <nickc@redhat.com>
7209
7210         * common.opt (fipa-matrix-reorg): Add Optimization attribute.
7211         (fdce, fdse, fpredictive-commoning): Likewise.
7212
7213 2007-06-28 Francois-Xavier Coudert <fxcoudert@gcc.gnu.org>
7214
7215         PR other/31400
7216         * gcc.c (process_command): Recognize the new -static-libgfortran
7217         option.
7218
7219 2007-06-27  Rask Ingemann Lambertsen  <rask@sygehus.dk>
7220
7221         PR target/32418
7222         * config/m32c/m32c.c (m32c_eh_return_stackadj_rtx): Dataflow fix:
7223         Use a call clobbered hard reg instead of a pseudo reg.
7224
7225 2007-06-27  Kaz Kojima  <kkojima@gcc.gnu.org>
7226
7227         * config/sh/sh.md (load_gbr): Use correct operand constraint.
7228
7229 2007-06-27  Kaz Kojima  <kkojima@gcc.gnu.org>
7230
7231         PR target/32479
7232         * config/sh/sh.md (udivsi3): Don't wrap the sequence with
7233         REG_LIBCALL and REG_RETVAL notes.
7234         (divsi3, mulsi3): Likewise.
7235         (mulhisi3): Likewise.  Use emit_libcall_block.
7236         (umulhisi3, smulsi3_highpart, umulsi3_highpart_i): Likewise.
7237
7238 2007-06-27  Seongbae Park  <seongbae.park@gmail.com>
7239
7240         PR rtl-optimization/32481
7241         * combine.c (adjust_for_new_dest): Rescan the changed insn.
7242
7243 2007-06-27  Richard Sandiford  <richard@codesourcery.com>
7244
7245         * dce.c (deletable_insn_p_1): New function, split out from...
7246         (deletable_insn_p): ...here.  Only treat bare USEs and CLOBBERs
7247         specially, not those inside PARALLELs.  Remove BODY argument
7248         and adjust recursive call accordingly.
7249         (prescan_insns_for_dce): Update call to delete_insn_p.
7250
7251 2007-06-27  Richard Guenther  <rguenther@suse.de>
7252
7253         PR middle-end/32492
7254         * tree.h (fold_convertible_p): Declare.
7255         * fold-const.c (fold_convertible_p): New function.
7256         * gimplify.c (gimplify_call_expr): Use fold_convertible_p
7257         instead of lang_hooks.types_compatible_p.
7258
7259 2007-06-26  Jan Hubicka  <jh@suse.cz>
7260
7261         * fwprop.c (try_fwprop_subst): Use validate_unshare_change.
7262         * postreload.c (reload_cse_simplify_set): Instead of copying the rtx
7263         early use validate_unshare_change.
7264         (reload_combine): Likewise.
7265         * recog.c (change_t): New field unshare.
7266         (validate_change_1): Rename from validate_change; add argument unshare.
7267         (validate_change): Turn into wrapper of validate_change_1; update
7268         prototype for bools.
7269         (validate_unshare_change): New.
7270         (confirm_change_group): Unshare changes if asked for; avoid unnecesary
7271         calls of df_insn_rescan.
7272         * recog.h (validate_change): Replace ints by bools.
7273         (validate_unshare_change): Declare.
7274
7275 2007-06-26  Kenneth Zadeck <zadeck@naturalbridge.com>
7276
7277         * tree.def (VEC_WIDEN_MULT_LO_EXPR): Corrected string name.
7278         
7279 2007-06-26  Steve Ellcey  <sje@cup.hp.com>
7280
7281         * builtins.c (expand_builtin_next_arg): Change Pmode to ptr_mode.
7282
7283 2007-06-25  Jan Hubicka  <jh@suse.cz>
7284
7285         * ipa-inline.c (cgraph_mark_inline): Assert that we never inline
7286         uninlinable call.
7287         (cgraph_decide_inlining_of_small_function, cgraph_decide_inlining,
7288         cgraph_decide_inlining_incrementally): Move uninlinability checks to
7289         places other call site specific checks are performed.
7290
7291 2007-06-25  Andrew Pinski  <andrew_pinski@playstation.sony.com>
7292
7293         PR tree-opt/32421
7294         * tree-vect-transform.c (vectorizable_operation): Convert
7295         POINTER_PLUS_EXPR over to PLUS_EXPR.
7296
7297 2007-06-25  Chao-ying Fu  <fu@mips.com>
7298
7299         * doc/rtl.texi (Machine Modes): Document QQ, HQ, SQ, DQ, TQ,
7300         UQQ, UHQ, USQ, UDQ, UTQ, HA, SA, DA, TA, UHA, USA, UDA, and UTAmodes.
7301         Document MODE_FRACT, MODE_UFRACT, MODE_ACCUM, MODE_UACCUM.
7302         Document GET_MODE_IBIT, and GET_MODE_FBIT.
7303
7304         * machmode.h (VECTOR_MODE_P): Test MODE_VECTOR_FRACT,
7305         MODE_VECTOR_UFRACT, MODE_VECTOR_ACCUM, MODE_VECTOR_UACCUM.
7306         (SCALAR_FRACT_MODE_P, SCALAR_UFRACT_MODE_P, ALL_SCALAR_FRACT_MODE_P,
7307         SCALAR_ACCUM_MODE_P, SCALAR_UACCUM_MODE_P, ALL_SCALAR_ACCUM_MODE_P,
7308         SIGNED_SCALAR_FIXED_POINT_MODE_P, UNSIGNED_SCALAR_FIXED_POINT_MODE_P,
7309         ALL_SCALAR_FIXED_POINT_MODE_P, FRACT_MODE_P, UFRACT_MODE_P,
7310         ALL_FRACT_MODE_P, ACCUM_MODE_P, UACCUM_MODE_P, ALL_ACCUM_MODE_P,
7311         SIGNED_FIXED_POINT_MODE_P, UNSIGNED_FIXED_POINT_MODE_P,
7312         ALL_FIXED_POINT_MODE_P): New define.
7313         (CLASS_HAS_WIDER_MODES_P): Test MODE_FRACT, MODE_UFRACT, MODE_ACCUM,
7314         MODE_UACCUM.
7315         (GET_MODE_IBIT, GET_MODE_FBIT): New define.
7316
7317         * mode-classes.def (MODE_FRACT, MODE_UFRACT, MODE_ACCUM, MODE_UACCUM,
7318         MODE_VECTOR_FRACT, MODE_VECTOR_UFRACT, MODE_VECTOR_ACCUM,
7319         MODE_VECTOR_UACCUM): New mode classes.
7320
7321         * machmode.def: Document FRACT_MODE, UFRACT_MODE, ACCUM_MODE,
7322         UACCUM_MODE, ADJUST_IBIT, and ADJUST_FBIT.
7323         Add QQ, HQ, SQ, DQ, TQ, UQQ, UHQ, USQ, UDQ, UTQ, HA, SA, DA, TA, UHA,
7324         USA, UDA, and UTA.
7325
7326         * genmodes.c (struct mode_data): Add ibit and fbit fields.
7327         (blank_mode): Initialize ibit and fbit.
7328         (adj_ibit, adj_fbit): New to adjust ibit and fbit.
7329         (vector_class): Handle MODE_FRACT, MODE_UFRACT, MODE_ACCUM,
7330         MODE_UACCUM.
7331         (new_adjust): Change required_class to required_class_from and
7332         required_class_to for testing within a range.
7333         (complete_mode): Handle MODE_FRACT, MODE_UFRACT, MODE_ACCUM,
7334         MODE_UACCUM, MODE_VECTOR_FRACT, MODE_VECTOR_UFRACT, MODE_VECTOR_ACCUM,
7335         MODE_VECTOR_UACCUM.
7336         (FRACT_MODE, UFRACT_MODE, ACCUM_MODE, UACCUM_MODE): New define.
7337         (make_fixed_point_mode): New.
7338         (_ADD_ADJUST): Change C to C1 and C2.
7339         (ADJUST_BYTESIZE, ADJUST_ALIGNMENT, ADJUST_FLOAT_FORMAT): Change to
7340         use a range for machine classes.
7341         (ADJUST_IBIT, ADJUST_FBIT): New.
7342         (emit_insn_modes_h): Output defines of CONST_MODE_IBIT and
7343         CONST_MODE_FBIT.
7344         (emit_mode_adjustments): Handle MODE_VECTOR_FRACT, MODE_VECTOR_UFRACT,
7345         MODE_VECTOR_ACCUM, MODE_VECTOR_UACCUM.
7346         Emit adjustment for ibit and fbit.
7347         (emit_mode_ibit, emit_mode_fbit): New.
7348         (emit_insn_modes_c): Add emit_mode_ibit and emit_mode_fbit.
7349
7350 2007-06-25  Nathan Froyd  <froydnj@codesourcery.com>
7351
7352         * config/rs6000/spe.md (*frob_ti_tf_2): Specify an input_operand
7353         as the source of the set.
7354
7355 2007-06-25  Roman Zippel <zippel@linux-m68k.org>
7356
7357         * config/m68k/m68k.h (DATA_REGNO_P, ADDRESS_REGNO_P, INT_REGNO_P,
7358         FP_REGNO_P): Use IN_RANGE.
7359         (REGNO_OK_FOR_DATA_P, REGNO_OK_FOR_FP_P): Remove.
7360         (REGNO_OK_FOR_INDEX_NONSTRICT_P, REGNO_OK_FOR_BASE_NONSTRICT_P): New.
7361         (DATA_REG_P): Use DATA_REGNO_P.
7362         (FP_REG_P): Use FP_REGNO_P.
7363         (ADDRESS_REG_P): Use ADDRESS_REGNO_P.
7364         * config/m68k/m68k.c (m68k_legitimate_base_reg_p): Use
7365         REGNO_OK_FOR_INDEX_NONSTRICT_P, REGNO_OK_FOR_BASE_NONSTRICT_P.
7366
7367 2007-06-24  Jan Hubicka  <jh@suse.cz>
7368
7369         PR middle-end/30563
7370         * cgraphunit.c (cgraph_analyze_function): Fix ordering problem.
7371
7372 2007-06-24  Sebastian Pop  <sebpop@gmail.com>
7373
7374         PR middle-end/32461
7375         * fold-const.c (fold_binary): Strip nops of operand 0
7376         of BIT_NOT_EXPR before calling operand_equal_p.
7377         * testsuite/gcc.dg/tree-ssa/pr32461-1.c: New.
7378         * testsuite/gcc.dg/tree-ssa/pr32461-2.c: New.
7379
7380 2007-06-23  Mark Mitchell  <mark@codesourcery.com>
7381
7382         * doc/extend.texi: Document that dllimport and dllexport imply
7383         default visibility.
7384         * tree.c (handle_dll_attribute): Set DECL_VISIBILITY on the
7385         imported or exported declaration, including type declarations.
7386         * c-common.c (handle_visibility_attribute): Check for conflicts
7387         with dllimport/dllexport.
7388         (c_determine_visibility): Handle dllimport/dllexport as an
7389         explicit visibility atttribute.
7390
7391 2007-06-23  Richard Guenther  <rguenther@suse.de>
7392
7393         PR tree-optimization/16876
7394         PR middle-end/29478
7395         * tree.h (CALL_CANNOT_INLINE_P): New macro to access static_flag
7396         for CALL_EXPRs.
7397         * tree-inline.c (initialize_inlined_parameters): Do not call
7398         lang_hooks.tree_inlining.convert_parm_for_inlining.
7399         * cgraphbuild.c (initialize_inline_failed): Set inline failed
7400         reason for mismatched types.
7401         * gimplify.c (gimplify_call_expr): Verify the call expression
7402         arguments match the called function type signature.  Otherwise
7403         mark the call expression to be not considered for inlining
7404         using CALL_CANNOT_INLINE_P flag.
7405         * ipa-inline.c (cgraph_mark_inline): Honor CALL_CANNOT_INLINE_P on the
7406         edges call expression.
7407         (cgraph_decide_inlining_of_small_function): Likewise.
7408         (cgraph_decide_inlining): Likewise.
7409         * c-objc-common.h (LANG_HOOKS_TREE_INLINING_CONVERT_PARM_FOR_INLINING):
7410         Remove define.
7411         * c-tree.h (c_convert_parm_for_inlining): Remove declaration.
7412         * c-typeck.c (c_convert_parm_for_inlining): Remove.
7413         * langhooks-def.h (lhd_tree_inlining_convert_parm_for_inlining):
7414         Remove declaration.
7415         (LANG_HOOKS_TREE_INLINING_CONVERT_PARM_FOR_INLINING): Remove define.
7416         * langhooks.c (lhd_tree_inlining_convert_parm_for_inlining):
7417         Remove.
7418         * langhooks.h (struct lang_hooks_for_tree_inlining): Remove
7419         convert_parm_for_inlining member.
7420
7421 2007-06-23  Richard Earnshaw  <rearnsha@arm.com>
7422
7423         PR target/31152
7424         * arm.md (negscc): Match the correct operand for optimized LT0 test.
7425         Remove optimization for GT.
7426
7427 2007-06-23  Kenneth Zadeck <zadeck@naturalbridge.com>
7428
7429         PR middle-end/32437
7430         * dce.c (deletable_insn_p): Add extra parameter and recurse if insn
7431         is a PARALLEL.
7432         (prescan_insns_for_dce): Add extra parameter.
7433         
7434 2007-06-23  Jan Hubicka  <jh@suse.cz>
7435
7436         PR middle-end/31541
7437         * gimplify.c (mark_addressable): New function.
7438         (gimplify_modify_expr_rhs, gimplify_addr_expr, gimplify_expr): Use it.
7439
7440 2007-06-22  Uros Bizjak  <ubizjak@gmail.com>
7441
7442         PR middle-end/32374
7443         * expr.c (store_constructor): Do not clobber non-zeroed memory. 
7444
7445 2007-06-22  Uros Bizjak  <ubizjak@gmail.com>
7446
7447         PR target/32413
7448         * config/i386/i386.c (ix86_register_move_cost): Rise the cost of
7449         moves between MMX/SSE registers to at least 8 units to prevent
7450         ICE caused by non-tieable SI/HI/QImodes in SSE registers. 
7451
7452 2007-06-22  Uros Bizjak  <ubizjak@gmail.com>
7453
7454         * config/i386/i386.c (override_options): Correct x86_sahf
7455         setting condition.
7456
7457 2007-06-21  David Daney  <ddaney@avtrex.com>
7458
7459         PR target/32406
7460         * config/mips/mips.md (define_constants): Rename UNSPEC_EH_RECEIVER
7461         to UNSPEC_NONLOCAL_GOTO_RECEIVER globally.
7462         (exception_receiver): Renamed to ...
7463         (nonlocal_goto_receiver): ... this.
7464
7465 2007-06-22  Roman Zippel <zippel@linux-m68k.org>
7466
7467         * df-scan.c (df_read_modify_subreg_p): Use REGMODE_NATURAL_SIZE.
7468         (df_def_record_1): Set (DF_REF_READ_WRITE | DF_REF_PARTIAL) for
7469         partial register accesses.
7470
7471 2007-06-21  Adam Nemet  <anemet@caviumnetworks.com>
7472
7473         * fold-const.c (debug_fold_checksum): Move it under
7474         ENABLE_FOLD_CHECKING.
7475
7476 2007-06-21  Sebastian Pop  <sebpop@gmail.com>
7477
7478         PR middle-end/20623
7479         * tree.h (debug_fold_checksum): Declared.
7480         * fold-const.c (build_fold_addr_expr_with_type_1): New.
7481         (build_fold_addr_expr_with_type, build_fold_addr_expr): Use 
7482         build_fold_addr_expr_with_type_1.
7483         (fold_addr_expr, debug_fold_checksum): New.
7484         (fold_checksum_tree): Don't fold TREE_CHAIN of an SSA_NAME.
7485         (fold_unary, fold_comparison, split_address_to_core_and_offset):
7486         Use fold_addr_expr.
7487         
7488 2007-06-21  Sebastian Pop  <sebpop@gmail.com>
7489
7490         PR tree-optimization/19590
7491         * tree-vrp.c (adjust_range_with_scev): Set the range when the result
7492         of scev is a constant.
7493         * gcc/testsuite/gcc.dg/tree-ssa/pr19590.c: New.
7494
7495 2007-06-21  Kenneth Zadeck <zadeck@naturalbridge.com>
7496
7497         * df-problems.c (df_note_bb_compute): Made computation of live
7498         info consistent with df_lr.
7499
7500 2007-06-21  Richard Guenther  <rguenther@suse.de>
7501
7502         PR tree-optimization/32453
7503         * tree-vrp.c (extract_range_from_assert): Build POINTER_PLUS_EXPR
7504         for pointer anti-range.
7505
7506 2007-06-21  H.J. Lu  <hongjiu.lu@intel.com>
7507
7508         * config/i386/i386.c (processor_target_table): Increase maximum
7509         skip from 7 byte to 10 byte for Pentium Pro, Core 2 Duo and
7510         default 64bit.
7511
7512         * config/i386/linux.h (ASM_OUTPUT_MAX_SKIP_ALIGN): Ensure 8
7513         byte alignment if > 8 byte alignment is preferred.
7514         * config/i386/x86-64.h (ASM_OUTPUT_MAX_SKIP_ALIGN): Likewise.
7515
7516 2007-06-21  Jakub Jelinek  <jakub@redhat.com>
7517
7518         PR tree-optimization/31866
7519         * tree-ssa-coalesce.c (create_outofssa_var_map): Do nothing
7520         if ASM_EXPR's input is not a SSA_NAME.
7521
7522         PR middle-end/32362
7523         * omp-low.c (lookup_decl_in_outer_ctx): Don't ICE if t is NULL,
7524         but decl is a global var, instead return decl.
7525         * gimplify.c (gimplify_adjust_omp_clauses_1): Add shared clauses
7526         even for is_global_var decls, if they are private in some outer
7527         context.
7528
7529 2007-06-21  Richard Guenther  <rguenther@suse.de>
7530
7531         PR tree-optimization/32451
7532         * tree-ssa-threadupdate.c (thread_single_edge): Fixup edge flags.
7533
7534 2007-06-21  Christian Bruel  <christian.bruel@st.com>
7535
7536         * config/sh/sh-protos.h (sh_loads_bankedreg_p): Declare.
7537         * config/sh/sh.c (sh_loads_bankedreg_p): New function.
7538         (push_regs): Changed saving order or banked registers.
7539         (sh_expand_epilogue): Likewise.
7540         * config/sh/sh.h (BANKED_REGISTER_P): New macro.
7541         (FIRST_BANKED_REG): Likewise.
7542         (LAST_BANKED_REG): Likewise.
7543         * config/sh/sh.md (banked) New attribute.
7544         (in_delay_slot): Check banked attribute.
7545         
7546 2007-06-20  Sebastian Pop  <sebpop@gmail.com>
7547
7548         PR tree-optimization/32075
7549         * tree-data-ref.c (subscript_dependence_tester_1, 
7550         analyze_miv_subscript, analyze_overlapping_iterations,
7551         add_distance_for_zero_overlaps, build_classic_dist_vector,
7552         subscript_dependence_tester_1, analyze_overlapping_iterations,
7553         subscript_dependence_tester, access_functions_are_affine_or_constant_p,
7554         compute_affine_dependence, compute_all_dependences): Pass loop_nest 
7555         to evolution_function_is_affine_multivariate_p.
7556
7557 2007-06-20  Eric Botcazou  <ebotcazou@libertysurf.fr>
7558
7559         * df-scan.c (df_get_call_refs): Be prepared for MEMs inside CLOBBERs.
7560
7561 2007-06-20  Rask Ingemann Lambertsen  <rask@sygehus.dk>
7562
7563         PR target/32335
7564         * config/m32c/m32c.c (m32c_emit_epilogue): Use new HImode epilogue
7565         for TARGET_A16.
7566         * config/m32c/prologue.md (epilogue_exitd_16): New.
7567         (epilogue_reit_16): New.
7568         (epilogue_exitd): Rename to epilogue_exitd_24.
7569         (epilogue_reit): Rename to epilogue_reit_24.
7570
7571 2007-06-20  Seongbae Park  <seongbae.park@gmail.com>
7572             Maxim Kuvyrkov  <mkuvyrkov@ispras.ru>
7573
7574         * dbgcnt.def (global_alloc_at_func, global_alloc_at_reg):
7575         New counters.
7576         * haifa-sched.c (queue_to_ready): Don't requeue next insn
7577         if dbg_cnt (sched_insn) reaches the limit.
7578         (choose_ready): New parameter INSN_PTR and new return value.
7579         (schedule_block): Handle dbg_cnt (sched_insn). Handle
7580         the new return value from choose_ready.
7581         * global.c (global_aloc): New dbgcnt global_alloc_at_reg.
7582         (rest_of_handle_global_alloc): New global_alloc_at_func.
7583
7584 2007-06-20  Adam Nemet  <anemet@caviumnetworks.com>
7585
7586         PR tree-optimization/25737
7587         * tree.h (struct tree_struct_field_tag): Add new field alias_set.
7588         (SFT_NONADDRESSABLE_P, SFT_ALIAS_SET): New macros.
7589         * tree-flow.h (struct fieldoff): Add new field alias_set.
7590         * tree-ssa-structalias.c (push_fields_onto_fieldstack): Add new
7591         argument addressable_type.  Set alias_set of fieldoff.
7592         * tree-ssa-alias.c (create_sft): Add new argument alias_set.
7593         (create_overlap_variables_for): Pass alias_set from fieldoff to
7594         create_sft.
7595         * alias.c (get_alias_set): Use alias_set from SFT if set.
7596
7597 2007-06-20  Hui-May Chang  <hm.chang@apple.com>
7598
7599         * config/i386/darwin.h (ASM_OUTPUT_COMMON): Print the size
7600         of a variable as an unsigned HOST_WIDE_INT integer.
7601
7602 2007-06-20  Zdenek Dvorak  <dvorakz@suse.cz>
7603
7604         PR rtl-optimization/32405
7605         * loop-iv.c (iv_get_reaching_def): Fail for partial defs.
7606
7607 2007-06-20  Jakub Jelinek  <jakub@redhat.com>
7608
7609         * Makefile.in (omega.o): Depend on $(DIAGNOSTIC_H).
7610
7611         PR middle-end/31959
7612         * builtins.c: Include diagnostic.h.
7613         (expand_builtin_expect): Make gcc_assert more permissive.
7614         * Makefile.in (builtins.o): Depend on $(DIAGNOSTIC_H).
7615
7616         PR inline-asm/32109
7617         * gimplify.c (gimplify_asm_expr): Issue error if type is addressable
7618         and !allows_mem.
7619
7620         PR middle-end/32285
7621         * calls.c (precompute_arguments): Also precompute CALL_EXPR arguments
7622         if ACCUMULATE_OUTGOING_ARGS.
7623
7624 2007-06-19  Rask Ingemann Lambertsen  <rask@sygehus.dk>
7625
7626         * config/m68hc11/m68hc11.c: Include dataflow header file.
7627         (m68hc11_reorg): Port to dataflow.
7628
7629 2007-06-19  Kenneth Zadeck <zadeck@naturalbridge.com>
7630
7631         * df.h (DF_FIRST_OPTIONAL_PROBLEM): Removed.
7632         (struct df_problem.free_blocks_on_set_blocks): New field.
7633         (struct dataflow.optional_p): New field.
7634         (df_bb_regno_last_use_find, df_insn_regno_def_p): Removed.
7635         (df_live_set_all_dirty): New function.
7636         * df-scan.c (df_scan_alloc): Initialize optional_p.
7637         (problem_SCAN): Initialize free_blocks_on_set_blocks.
7638         * df-core.c (df_set_blocks): Removed use of
7639         DF_FIRST_OPTIONAL_PROBLEM.  Now uses
7640         df_problem.free_blocks_on_set_blocks to determine which blocks are
7641         recycled.
7642         (df_remove_problem): Removed use of DF_FIRST_OPTIONAL_PROBLEM.
7643         (df_finish_pass): Removed use of DF_FIRST_OPTIONAL_PROBLEM.  Now
7644         uses dataflow.optional_p to determine if problem should be
7645         deleted.
7646         (rest_of_handle_df_initialize): Only start live problem if 
7647         -02 or above.
7648         (df_bb_regno_last_use_find, df_insn_regno_def_p): Removed.
7649         * df-problems.c (df_ru_alloc, df_rd_alloc, df_lr_alloc,
7650         df_live_alloc, df_urec_alloc, df_note_alloc): set optional_p.
7651         (problem_RU, problem_RD, problem_LR, problem_UREC, problem_CHAIN,
7652         problem_NOTE):  Initialize free_blocks_on_set_blocks.
7653         (df_lr_bb_local_compute): Recompute luids if df_live problem is
7654         not active.
7655         (df_live_set_all_dirty, df_note_alloc): New function.
7656         * regrename.c (merge_overlapping_regs): Change DF_LIVE_* to
7657         df_get_live_*.
7658         * sched_ebb.c (compute_jump_reg_dependencies): Ditto.
7659         * postreload.c (reload_combine): Ditto.
7660         * cse.c (cse_extended_basic_block): Ditto.
7661         * regmove.c (mark_flags_life_zones): Ditto.
7662         * rtlfactoring.c (split_blocks_after_seqs, split_pattern_seq,
7663         erase_matching_seqs): Ditto.
7664         * bt-load.c (compute_defs_uses_and_gen): Ditto.
7665         * integrate (allocate_initial_values): Ditto.
7666         * combine.c (reg_dead_at_p): Ditto.
7667         * resource.c (mark_target_live_regs): Ditto.
7668         * sched-rgn.c (check_live_1, update_live_1): Ditto.
7669         * config/sh/sh.c (find_r0_life_regions): Ditto.
7670         * global.c (rest_of_handle_global_alloc): Only add back df_live
7671         for -O > 1.
7672         * local-alloc.c (rest_of_handle_local_alloc): Only remove
7673         df_live for -O > 1.
7674         * ifcvt.c (dead_or_predicable): Change DF_LIVE_* to
7675         df_get_live_*.
7676         (if_convert): Make sure df_live is there at -O == 1.
7677         (pass_if_after_combine): Cleanup flags.
7678         * init-regs.c (initialize_uninitialized_regs): Make sure df_live
7679         is there at -O == 1.
7680         
7681 2007-06-19  Seongbae Park  <seongbae.park@gmail.com>
7682
7683         * config/arm/arm.c (arm_get_frame_offsets): Set
7684         offsets->locals_base to avoid negative stack size.
7685         (thumb1_expand_prologue): Assert on negative stack size.
7686
7687 2007-06-19  Sebastian Pop  <sebpop@gmail.com>
7688
7689         PR tree-optimization/32367
7690         * tree-chrec.h (build_polynomial_chrec): Verify that the left hand side 
7691         of the chrec has no evolution in that loop.
7692         * testsuite/gcc.dg/tree-ssa/pr32367.c: New.
7693
7694 2007-06-19  Bob Wilson  <bob.wilson@acm.org>
7695
7696         * config/xtensa/xtensa.c: Include "df.h".
7697         (xtensa_builtin_saveregs): Use adjust_address instead of
7698         change_address.
7699         (xtensa_va_start): Invoke make_tree with sizetype for
7700         expand_builtin_saveregs and then convert the result to a pointer.
7701         Use POINTER_PLUS_EXPR.  Use size_int instead of build_int_cst.
7702         (xtensa_gimplify_va_arg_expr): Use size_int instead of build_int_cst.
7703         Subtract argument size from index value as integers and then use
7704         POINTER_PLUS_EXPR to add the result to the array address.
7705         
7706 2007-06-19  Rask Ingemann Lambertsen  <rask@sygehus.dk>
7707
7708         PR target/32335
7709         * config/m32c/m32c.c: Include dataflow header file.
7710         (m32c_emit_prologue): Adjust for prologue insn change.
7711         * config/m32c/prologue.md (prologue_enter_16): Only modify SP_REGNO
7712         once inside a PARALLEL. Assume frame size passed in operand 0
7713         includes space to save the fb register.
7714         (prologue_enter_24): Likewise.
7715         (epilogue_exitd): Only modify SP_REGNO once inside a PARALLEL.
7716
7717 2007-06-19  David Daney  <ddaney@avtrex.com
7718
7719         PR target/32313
7720         * config/mips/mips.md (cprestore): Mark $gp as used.
7721
7722 2007-06-19  Rask Ingemann Lambertsen  <rask@sygehus.dk>
7723
7724         PR target/32369
7725         * config/frv/frv.c (frv_ifcvt_modify_tests): Dataflow merge fix.
7726         (frv_ifcvt_modify_insn): Likewise.
7727
7728 2007-06-19  Richard Guenther  <rguenther@suse.de>
7729
7730         * tree-ssa-structalias.c (handle_ptr_arith): Make sure to
7731         only handle positive offsets that fit in a HOST_WIDE_INT.
7732
7733 2007-06-19  Uros Bizjak  <ubizjak@gmail.com>
7734
7735         * config/i386/i386.c (ix86_emit_swsqrtsf): Filter out infinity
7736         result of rsqrt insn for zero input argument to avoid NaN.
7737
7738 2007-06-19  Richard Guenther  <rguenther@suse.de>
7739
7740         PR middle-end/31950
7741         * tree-ssa-alias-warnings.c (ffan_walker): Punt on MTAGs.
7742
7743 2007-06-19  Jakub Jelinek  <jakub@redhat.com>
7744
7745         PR tree-optimization/32353
7746         * tree-ssa-structalias.c (set_uids_in_ptset): Also handle RESULT_DECL.
7747
7748 2007-06-19  Nick Clifton  <nickc@redhat.com>
7749
7750         * config/m32r/linux.h (LIB_SPEC): Always imply -lpthread for -pthread.
7751
7752 2007-06-18  Uros Bizjak  <ubizjak@gmail.com>
7753
7754         PR target/32389
7755         * config/i386/i386.h (enum ix86_stack_slot): Add SLOT_VIRTUAL.
7756         * config/i386/i386.c (assign_386_stack_local): Assert that
7757         SLOT_VIRTUAL is valid only before virtual regs are instantiated.
7758         (ix86_expand_builtin) [IX86_BUILTIN_LDMXCSR, IX86_BUILTIN_STMXCSR]:
7759         Use SLOT_VIRTUAL stack slot instead of SLOT_TEMP.
7760         * config/i386/i386.md (truncdfsf2, truncxf<mode>2): Ditto.
7761
7762 2007-06-18  Steve Ellcey  <sje@cup.hp.com>
7763
7764         * config/ia64/ia64.h (LIBGCC2_TF_CEXT): New.
7765
7766 2007-06-18  Seongbae Park  <seongbae.park@gmail.com>
7767
7768         PR rtl-optimization/32321
7769         * gcse.c (replace_store_insn): Update the note before
7770         calling emit_insn_after.
7771
7772 2007-06-18  Kenneth Zadeck <zadeck@naturalbridge.com>
7773
7774         PR middle-end/32355
7775         * gcse (rest_of_handle_gcse): Add call to df_finish_pass after
7776         cse_main.
7777         * df-problems.c (df_note_bb_compute): Fix dumping info.
7778         
7779 2007-06-18  Kazu Hirata  <kazu@codesourcery.com>
7780
7781         * config/m68k/m68k.c (m68k_expand_epilogue): Emit a return
7782         insn with emit_jump_insn.
7783
7784 2007-06-18  Uros Bizjak  <ubizjak@gmail.com>
7785
7786         PR tree-optimization/32383
7787         * targhooks.c (default_builtin_reciprocal): Add new bool argument.
7788         * targhooks.h (default_builtin_reciprocal): Update prototype.
7789         * target.h (struct gcc_target): Update builtin_reciprocal.
7790         * doc/tm.texi (TARGET_BUILTIN_RECIPROCAL): Update description.
7791         * tree-ssa-math-opts (execute_cse_reciprocals): Skip statements
7792         where arg1 is not SSA_NAME.  Pass true to targetm.builtin_reciprocal
7793         when fndecl is in BUILT_IN_MD class.
7794         (execute_convert_to_rsqrt): Ditto.
7795
7796         * config/i386/i386.c (ix86_builtin_reciprocal): Update for new bool
7797         argument.  Convert IX86_BUILTIN_SQRTPS code only when md_fn is true.
7798         Convert BUILT_IN_SQRTF code only  when md_fn is false.
7799
7800 2007-06-18  Kaz Kojima  <kkojima@gcc.gnu.org>
7801
7802         * bt-load.c (move_btr_def): Fix the order of arguments
7803         to validate_replace_rtx.
7804
7805 2007-06-18  Nathan Sidwell  <nathan@codesourcery.com>
7806
7807         * config/m68k/m68k-devices.def: Add 54450..54455.
7808
7809 2007-06-17  Uros Bizjak  <ubizjak@gmail.com>
7810
7811         PR rtl-optimization/32366
7812         * simplify-rtx.c (simplify_unary_operation_1) [FLOAT_TRUNCATE,
7813         FLOAT_EXTEND]: Prevent non-scalar modes from entering
7814         significand_size.
7815
7816 2007-06-17  Kenneth Zadeck <zadeck@naturalbridge.com>
7817
7818         PR middle-end/32349
7819         * modulo-sched (generate_reg_moves): Added rescan parameter and if
7820         this is true, rescan insn being modified.
7821         (sms_schedule): Added rescan parameter.
7822         (rest_of_handle_sms): Moved freeing of dominance info to before
7823         getting out of cfg_layout.
7824         
7825 2007-06-17  Nathan Sidwell  <nathan@codesourcery.com>
7826
7827         * config/m68k/m68k.h (ISA_HAS_FF1, ISA_HAS_MVS_MVZ): New.
7828         * config/m68k/m68k.md: Use ISA_HAS_FF1 and ISA_HAS_MVS_MVZ as
7829         appropriate.
7830
7831         * config/m68k/m68k.c (all_isas): Remove FL_CF_FPU and
7832         FL_CF_EMAC from the entry for isac.
7833
7834         * config/m68k/predicates.md (const_call_operand): Adjust comment.
7835         (const_sibcall_operand): New.
7836         (sibcall_operand): Use it.
7837         * config/m68k/m68k.c (FL_FOR_isa_c): Not ISA_B compatible.
7838         (m68k_isas): ISAC does not imply FPU or EMAC.
7839         (override_options): Add ISA_C logic for symbolic jump & call.
7840
7841 2007-06-17  Eric Botcazou  <ebotcazou@libertysurf.fr>
7842
7843         * config/sparc/sparc.c (sparc_vis_init_builtins): Retrieve the
7844         return mode from the builtin itself.
7845         (sparc_fold_builtin): Fix cast of zero constant.
7846
7847 2007-06-16  Uros Bizjak  <ubizjak@gmail.com>
7848
7849         * targhooks.c (default_builtin_reciprocal): New default target hook.
7850         * targhooks.h (default_builtin_reciprocal): Add prototype.
7851         * hooks.c (hook_tree_tree_bool_null): Remove hook.
7852         * hooks.h (hook_tree_tree_bool_null): Remove prototype.
7853         * target-def.h (TARGET_BUILTIN_RECIPROCAL): Define as
7854         default_builtin_reciprocal.
7855
7856 2007-06-16  Uros Bizjak  <ubizjak@gmail.com>
7857
7858         PR middle-end/31723
7859         * hooks.c (hook_tree_tree_bool_null): New hook.
7860         * hooks.h (hook_tree_tree_bool_null): Add prototype.
7861         * tree-pass.h (pass_convert_to_rsqrt): Declare.
7862         * passes.c (init_optimization_passes): Add pass_convert_to_rsqrt.
7863         * tree-ssa-math-opts.c (execute_cse_reciprocals): Scan for a/func(b)
7864         and convert it to reciprocal a*rfunc(b).
7865         (execute_convert_to_rsqrt): New function.
7866         (gate_convert_to_rsqrt): New function.
7867         (pass_convert_to_rsqrt): New pass definition.
7868         * target.h (struct gcc_target): Add builtin_reciprocal.
7869         * target-def.h (TARGET_BUILTIN_RECIPROCAL): New define.
7870         (TARGET_INITIALIZER): Initialize builtin_reciprocal with
7871         TARGET_BUILTIN_RECIPROCAL.
7872         * doc/tm.texi (TARGET_BUILTIN_RECIPROCAL): Document.
7873
7874         * config/i386/i386.h (TARGET_RECIP): New define.
7875         * config/i386/i386.md (divsf3): Expand by calling ix86_emit_swdivsf
7876         for TARGET_SSE_MATH and TARGET_RECIP when flag_finite_math_only and
7877         flag_unsafe_math_optimizations are set, flag_trapping_math is unset
7878         and not optimizing for size.
7879         (*rcpsf2_sse): New insn pattern.
7880         (*rsqrtsf2_sse): Ditto.
7881         (rsqrtsf2): New expander.  Expand by calling ix86_emit_swsqrtsf
7882         for TARGET_SSE_MATH and TARGET_RECIP when flag_finite_math_only and
7883         flag_unsafe_math_optimizations are set, flag_trapping_math is unset
7884         and not optimizing for size.
7885         (sqrt<mode>2): Expand SFmode operands by calling ix86_emit_swsqrtsf
7886         for TARGET_SSE_MATH and TARGET_RECIP when flag_finite_math_only and
7887         flag_unsafe_math_optimizations are set, flag_trapping_math is unset
7888         and not optimizing for size.
7889         * config/i386/sse.md (divv4sf): Expand by calling ix86_emit_swdivsf
7890         for TARGET_SSE_MATH and TARGET_RECIP when flag_finite_math_only and
7891         flag_unsafe_math_optimizations are set, flag_trapping_math is unset
7892         and not optimizing for size.
7893         (*sse_rsqrtv4sf2): Do not export.
7894         (sqrtv4sf2): Ditto.
7895         (sse_rsqrtv4sf2): New expander.  Expand by calling ix86_emit_swsqrtsf
7896         for TARGET_SSE_MATH and TARGET_RECIP when flag_finite_math_only and
7897         flag_unsafe_math_optimizations are set, flag_trapping_math is unset
7898         and not optimizing for size.
7899         (sqrtv4sf2): Ditto.
7900         * config/i386/i386.opt (mrecip): New option.
7901         * config/i386/i386-protos.h (ix86_emit_swdivsf): Declare.
7902         (ix86_emit_swsqrtsf): Ditto.
7903         * config/i386/i386.c (IX86_BUILTIN_RSQRTF): New constant.
7904         (ix86_init_mmx_sse_builtins): __builtin_ia32_rsqrtf: New
7905         builtin definition.
7906         (ix86_expand_builtin): Expand IX86_BUILTIN_RSQRTF using
7907         ix86_expand_unop1_builtin.
7908         (ix86_emit_swdivsf): New function.
7909         (ix86_emit_swsqrtsf): Ditto.
7910         (ix86_builtin_reciprocal): New function.
7911         (TARGET_BUILTIN_RECIPROCAL): Use it.
7912         (ix86_vectorize_builtin_conversion): Rename from
7913         ix86_builtin_conversion.
7914         (TARGET_VECTORIZE_BUILTIN_CONVERSION): Use renamed function.
7915         * doc/invoke.texi (Machine Dependent Options): Add -mrecip to
7916         "i386 and x86_64 Options" section.
7917         (Intel 386 and AMD x86_64 Options): Document -mrecip.
7918
7919 2007-06-15  Andrew Pinski <andrew_pinski@playstation.sony.com>
7920             Zdenek Dvorak <dvorakz@suse.cz>
7921             Richard Guenther  <rguenther@suse.de>
7922             Kaz Kojima  <kkojima@gcc.gnu.org>
7923
7924         * tree-vrp.c (compare_values_warnv): Convert val2 to
7925         the type of val1.
7926         (extract_range_from_assert): Create
7927         POINTER_PLUS_EXPR for pointer types.
7928         (extract_range_from_binary_expr): Handle
7929         only POINTER_PLUS_EXPR, MIN_EXPR, and MAX_EXPR
7930         for pointer types.
7931         * doc/c-tree.texi (POINTER_PLUS_EXPR): Document.
7932         * tree-ssa-loop-niter.c (split_to_var_and_offset): Handle
7933         POINTER_PLUS_EXPR as PLUS_EXPR.
7934         (number_of_iterations_lt_to_ne):
7935         For pointer types, use sizetype when
7936         creating MINUS_EXPR/PLUS_EXPRs.
7937         (assert_loop_rolls_lt): For pointer types, use sizetype when
7938         creating MINUS_EXPR/PLUS_EXPRs.
7939         (number_of_iterations_le): Likewise.
7940         (expand_simple_operations): POINTER_PLUS_EXPR are simple also.
7941         (derive_constant_upper_bound): Handle POINTER_PLUS_EXPR just
7942         like PLUS_EXPR and MINUS_EXPR.
7943         * tree-pretty-print.c (dump_generic_node): Handle
7944         POINTER_PLUS_EXPR.
7945         (op_prio): Likewise.
7946         (op_symbol_1): Likewise.
7947         * optabs.c (optab_for_tree_code): Likewise.
7948         * tree-ssa-loop-manip.c (create_iv): Handle pointer base
7949         specially.
7950         * tree-tailcall.c (process_assignment): Mention
7951         POINTER_PLUS_EXPR in a TODO comment.
7952         * tree.c (build2_stat): Assert when trying to use PLUS_EXPR or 
7953         MINUS_EXPR with a pointer. Also assert for POINTER_PLUS_EXPR
7954         not used with a pointer and an integer type.
7955         * tree-scalar-evolution.c (add_to_evolution_1): Convert the
7956         increment using chrec_convert_rhs instead of chrec_convert.
7957         (follow_ssa_edge_in_rhs): Handle POINTER_PLUS_EXPR like
7958         PLUS_EXPR except for the right hand side's type will be
7959         sizetype.
7960         (interpret_rhs_modify_stmt): Handle POINTER_PLUS_EXPR.
7961         (fold_used_pointer_cast): Kill.
7962         (pointer_offset_p): Kill.
7963         (fold_used_pointer): Kill.
7964         (pointer_used_p): Kill.
7965         (analyze_scalar_evolution_1 <case GIMPLE_MODIFY_STMT>): Don't
7966         call fold_used_pointer.
7967         (instantiate_parameters_1): Convert the increment
7968         using chrec_convert_rhs instead of chrec_convert.
7969         Handle POINTER_PLUS_EXPR as PLUS_EXPR.
7970         * builtins.c (get_pointer_alignment): Handle POINTER_PLUS_EXPR
7971         instead of PLUS_EXPR.
7972         (expand_builtin_strcat): Create a POINTER_PLUS_EXPR instead of
7973         PLUS_EXPR for pointers.
7974         (std_gimplify_va_arg_expr): Likewise.
7975         (fold_builtin_memory_op): Likewise.
7976         (fold_builtin_strstr): Likewise.
7977         (fold_builtin_strchr): Likewise.
7978         (fold_builtin_strrchr): Likewise.
7979         (fold_builtin_strpbrk): Likewise.
7980         (expand_builtin_memory_chk): Likewise.
7981         (fold_builtin_memory_chk): Likewise.
7982         (std_expand_builtin_va_start): Use
7983         sizetype for the call to make_tree and then convert
7984         to the pointer type.
7985         (fold_builtin_memchr): Use POINTER_PLUS_EXPR
7986         instead of PLUS_EXPR for adding to a pointer.
7987         (std_gimplify_va_arg_expr): Use fold_build2 for
7988         the creating of POINTER_PLUS_EXPR.  For the BIT_AND_EXPR, cast
7989         the operands to sizetype first and then cast the BIT_AND_EXPR
7990         back to the pointer type.
7991         * fold-const.c (build_range_check): Handle pointer types
7992         specially.
7993         (extract_array_ref): Look for POINTER_PLUS_EXPR instead
7994         of PLUS_EXPR's. Make sure the offset is converted to
7995         sizetype.
7996         (try_move_mult_to_index): Strip the NOPs from the offset.
7997         Remove code argument and replace all uses with PLUS_EXPR.
7998         (fold_to_nonsharp_ineq_using_bound): Handle pointer types
7999         specially. Don't use a pointer type for MINUS_EXPR.
8000         (fold_unary): Handle for (T1)(X op Y),
8001         only p+ as that is the only as that can be handled for
8002         binary operators now.
8003         (fold_binary <case POINTER_PLUS_EXPR>): Add folding of
8004         POINTER_PLUS_EXPR.
8005         <case PLUS_EXPR>: Add folding of PTR+INT into
8006         PTR p+ INT.
8007         Don't call try_move_mult_to_index.
8008         <case MINUS_EXPR>: Fold (PTR0 p+ A) - (PTR1 p+ B)
8009         into (PTR0 - PTR1) + (A - B). Fold (PTR0 p+ A) - PTR1 into
8010         (PTR0 - PTR1) + A iff (PTR0 - PTR1) simplifies.
8011         Don't call try_move_mult_to_index.
8012         (tree_expr_nonnegative_warnv_p): Handle POINTER_PLUS_EXPR.
8013         (tree_expr_nonzero_p): Likewise.
8014         (fold_indirect_ref_1): Look at POINTER_PLUS_EXPR instead
8015         of PLUS_EXPR for the complex expression folding.
8016         * tree-chrec.c (chrec_fold_plus_poly_poly): If the
8017         first chrec is a pointer type, then the second should
8018         be sizetype and not the first's type.
8019         For POINTER_PLUS_EXPR, use a different right hand side type.
8020         Handle POINTER_PLUS_EXPR like PLUS_EXPR.
8021         (chrec_fold_plus_1): For POINTER_PLUS_EXPR, use a
8022         different right hand side type.
8023         Handle POINTER_PLUS_EXPR like PLUS_EXPR.
8024         (chrec_fold_plus): For pointer types, use POINTER_PLUS_EXPR
8025         instead of PLUS_EXPR.
8026         When either operand is zero, convert the other operand.
8027         (chrec_apply): Use chrec_convert_rhs
8028         on the argument x instead of chrec_convert.
8029         (reset_evolution_in_loop): For pointer types, the new_evol
8030         should be sizetype.
8031         (convert_affine_scev): For POINTER_PLUS_EXPR, use a
8032         different right hand side type.
8033         Handle POINTER_PLUS_EXPR like PLUS_EXPR.
8034         (chrec_convert_rhs): New function.
8035         (chrec_convert_aggressive): For POINTER_PLUS_EXPR, use a
8036         different right hand side type.
8037         Handle POINTER_PLUS_EXPR like PLUS_EXPR.
8038         * tree-chrec.h (chrec_convert_rhs): New prototype.
8039         (build_polynomial_chrec): For pointer types, the right hand
8040         * tree-ssa-ccp.c (maybe_fold_stmt_indirect): Look for
8041         POINTER_PLUS_EXPR instead of PLUS_EXPR's.
8042         Remove subtraction case as it is always addition now.
8043         Make sure the offset is converted to sizetype.
8044         (fold_stmt_r): Don't handle PLUS_EXPR/MINUS_EXPR specially.
8045         Handle POINTER_PLUS_EXPR like PLUS_EXPR was handled before.
8046         * tree-ssa-loop-ivopts.c (determine_base_object): Abort for 
8047         PLUS_EXPR in pointer type.
8048         Handle POINTER_PLUS_EXPR.
8049         (tree_to_aff_combination): Likewise.
8050         (force_expr_to_var_cost): Likewise.
8051         (force_expr_to_var_cost): Likewise. Create a POINTER_PLUS_EXPR
8052         instead of PLUS_EXPR for pointers.
8053         * c-format.c (check_format_arg): Handle POINTER_PLUS_EXPR
8054         instead of PLUS_EXPR of pointer types.
8055         * tree-stdarg.c (va_list_counter_bump): Handle POINTER_PLUS_EXPR
8056         as PLUS_EXPR.
8057         (check_va_list_escapes): Likewise.
8058         (check_all_va_list_escapes): Likewise.
8059         * dwarf2out.c (loc_descriptor_from_tree_1):
8060         Handle POINT_PLUS_EXPR as a PLUS_EXPR.
8061         * expr.c (expand_expr_real_1): Handle POINTER_PLUS_EXPR.
8062         (string_constant): Likewise.
8063         * tree-ssa-address.c (tree_mem_ref_addr): When adding
8064         the offset to the base, use POINTER_PLUS_EXPR.
8065         (add_to_parts): Convert the index to sizetype.
8066         (create_mem_ref): Create A POINTER_PLUS_EXPR for the one case.
8067         * matrix-reorg.c (collect_data_for_malloc_call): Stmt
8068         will now only be either INDIRECT_REF and POINTER_PLUS_EXPR.
8069         Offset only holds something for PLUS_EXPR.
8070         (ssa_accessed_in_tree): Handle POINTER_PLUS_EXPR just as
8071         a PLUS_EXPR.
8072         (analyze_transpose): POINTER_PLUS_EXPR will only show up now
8073         and not PLUS_EXPR.
8074         (analyze_accesses_for_modify_stmt): Likewise.
8075         Remove comment about the type being integral type as it is
8076         wrong now.
8077         (can_calculate_expr_before_stmt): Handle POINTER_PLUS_EXPR as
8078         PLUS_EXPR.
8079         (transform_access_sites): POINTER_PLUS_EXPR will only show up now
8080         and not PLUS_EXPR.
8081         Correct the type which the artimentic is done in (is now
8082         sizetype).
8083         Reindent one loop.
8084         * tree-data-ref.c (split_constant_offset): Handle
8085         POINTER_PLUS_EXPR
8086         * tree-affine.c (tree_to_aff_combination): Likewise.
8087         * c-typeck.c (build_unary_op): For pointers create the increment
8088         as a sizetype. Create a POINTER_PLUS_EXPR instead of PLUS_EXPR
8089         for pointers.
8090         * gimplify.c (gimplify_self_mod_expr): Create a
8091         POINTER_PLUS_EXPR instead of PLUS_EXPR for pointers.
8092         (gimplify_omp_atomic_fetch_op): Handle POINTER_PLUS_EXPR.
8093         * tree.def (POINTER_PLUS_EXPR): New tree code.
8094         * tree-predcom.c (ref_at_iteration): If we have a pointer
8095         type do the multiplication in sizetype.
8096         * tree-mudflap.c (mf_xform_derefs_1): Create a
8097         POINTER_PLUS_EXPR instead of PLUS_EXPR for pointers.
8098         * tree-ssa-forwprop.c 
8099         (forward_propagate_addr_into_variable_array_index):
8100         Don't expect there to be a cast for the index as that
8101         does not exist anymore.
8102         (forward_propagate_addr_expr_1): Check for POINTER_PLUS_EXPR
8103         instead of PLUS_EXPR.
8104         Don't check for the first operand of the POINTER_PLUS_EXPR
8105         was the index as it cannot be.
8106         Call forward_propagate_addr_into_variable_array_index with
8107         the SSA_NAME instead of the statement.
8108         * varasm.c (const_hash_1): Handle POINTER_PLUS_EXPR.
8109         (compare_constant): Likewise.
8110         (copy_constant): Likewise.
8111         (compute_reloc_for_constant): Likewise.
8112         (output_addressed_constants): Likewise.
8113         (initializer_constant_valid_p): Likewise.
8114         * tree-ssa.c (tree_ssa_useless_type_conversion_1):
8115         Convert the MIN/MAX of the inner type to the outer
8116         type before comparing them.
8117         * tree-ssa-loop-prefetch.c (idx_analyze_ref):  Handle
8118         POINTER_PLUS_EXPR instead of PLUS_EXPR.
8119         (issue_prefetch_ref): Create a POINTER_PLUS_EXPR instead
8120         of PLUS_EXPR for pointers.
8121         * tree-inline.c (estimate_num_insns_1): Handle
8122         POINTER_PLUS_EXPR.
8123         * tree-vect-transform.c (vect_create_addr_base_for_vector_ref): 
8124         Create a POINTER_PLUS_EXPR instead of PLUS_EXPR for pointers.
8125         (bump_vector_ptr): Create a POINTER_PLUS_EXPR
8126         instead of PLUS_EXPR for the pointer increment statement.
8127         (vect_update_ivs_after_vectorizer): For pointer types, create
8128         POINTER_PLUS_EXPR instead of PLUS_EXPR and also create
8129         MULT_EXPR in sizetype.
8130         (vect_gen_niters_for_prolog_loop): Add a cast when creating
8131         byte_misalign.
8132         * tree-object-size.c (plus_expr_object_size): Handle
8133         POINTER_PLUS_EXPR instead of PLUS_EXPR.  Removing all the extra
8134         code which is trying to figure out which side is a pointer and 
8135         is the index.
8136         (check_for_plus_in_loops_1): Likewise.
8137         (check_for_plus_in_loops): Likewise.
8138         * c-common.c (pointer_int_sum): Create a
8139         POINTER_PLUS_EXPR instead of PLUS_EXPR for pointers.
8140         * tree-ssa-structalias.c (handle_ptr_arith): Handle
8141         only POINTER_PLUS_EXPR.  Removing all the extra
8142         code which is trying to figure out which side is a pointer and 
8143         is the index.
8144         * tree-cfg.c (verify_expr): Add extra checking for pointers and
8145         PLUS_EXPR and MINUS_EXPR.
8146         Also add checking to make sure the operands of POINTER_PLUS_EXPR
8147         are correct.
8148         * config/frv/frv.c (frv_expand_builtin_va_start): Use sizetype
8149         with make_tree, instead of a pointer type.
8150         * config/s390/s390.c (s390_va_start): Use POINTER_PLUS_EXPR
8151         for pointers instead of PLUS_EXPR.
8152         (s390_gimplify_va_arg): Likewise.
8153         * config/spu/spu.c (spu_va_start): Create POINTER_PLUS_EXPR
8154         instead of PLUS_EXPR when doing addition on pointer
8155         types.  Use sizetype for the second operand.
8156         (spu_gimplify_va_arg_expr): Likewise.
8157         * config/sparc/sparc.c (sparc_gimplify_va_arg): Use 
8158         POINTER_PLUS_EXPR instead of PLUS_EXPR when the operand was
8159         a pointer.  Don't create a BIT_AND_EXPR for pointer types.
8160         * config/i386/i386.c (ix86_va_start): Use POINTER_PLUS_EXPR
8161         for the pointer addition and also use size_int/sizetype
8162         for the offset.
8163         (ix86_gimplify_va_arg): Likewise.
8164         Perform BIT_AND_EXPR on sizetype arguments.
8165         * config/sh/sh.c (sh_va_start): Call make_tree with sizetype
8166         and convert its result to a pointer type.  Use POINTER_PLUS_EXPR
8167         for the pointer additions and also use size_int for the offsets.
8168         (sh_gimplify_va_arg_expr): Use POINTER_PLUS_EXPR for the pointer
8169         additions and also use size_int for the offsets.  Perform
8170         BIT_AND_EXPR on sizetype arguments.
8171         * config/ia64/ia64.c (ia64_gimplify_va_arg): Use
8172         POINTER_PLUS_EXPR for pointers and create the
8173         BIT_AND_EXPR in sizetype.
8174         * config/rs6000/rs6000.c (rs6000_va_start): Use POINTER_PLUS_EXPR
8175         instead of PLUS_EXPR for pointer addition.
8176         (rs6000_va_start): Likewise.
8177         Also use sizetype for the offset.
8178         * config/pa/pa.c (reloc_needed): Handle POINTER_PLUS_EXPR
8179         as PLUS_EXPR/MINUS_EXPR.
8180         (hppa_gimplify_va_arg_expr): Don't create MINUS_EXPR or
8181         PLUS_EXPR for pointers, instead use POINTER_PLUS_EXPR.
8182         Don't use BIT_AND_EXPR on a pointer type, convert the
8183         expression to sizetype first.
8184         * config/mips/mips.c (mips_va_start): Use POINTER_PLUS_EXPR
8185         for pointers.
8186         (mips_gimplify_va_arg_expr): Likewise.
8187         Don't create BIT_AND_EXPR in a pointer type.
8188
8189 2007-06-15  Eric Christopher  <echristo@apple.com>
8190
8191         * config.gcc (i?86-*-darwin*): Add t-crtfm and t-crtpc.
8192         (x86_64-*-darwin*): Ditto.
8193         * config/i386/darwin.h (CRTEND_SPEC): New. Add support
8194         for above.
8195
8196 2007-06-15  Matthew Wilcox <matthew@wil.cx>
8197
8198         * doc/extend.texi: Document behavior of __attribute__((aligned))
8199         on typedefs.
8200
8201 2007-06-15  Mark Mitchell  <mark@codesourcery.com>
8202
8203         * rtlanal.c (note_stores): Improve documentation.
8204
8205 2007-06-15  Bernd Schmidt  <bernd.schmidt@analog.com>
8206
8207         * config/bfin/elf.h (ASM_GENERATE_INTERNAL_LABEL,
8208         LOCAL_LABEL_PREFIX): Delete.
8209         * config/bfin/bfin.c (TARGET_ASM_INTERNAL_LABEL): Delete.
8210         (bfin_internal_label): Delete.
8211
8212 2007-06-15  Uros Bizjak  <ubizjak@gmail.com>
8213
8214         * libgcc2.c (CEXT): When compiling L_multc3 and L_divtc3,
8215         define to "l" if LIBGCC_LONG_DOUBLE_SIZE == 128,
8216         otherwise define to LIBGCC2_TF_CEXT.
8217         * config/i386/linux64.h (LIBGCC2_HAS_TF_MODE): New define.
8218         (LIBGCC_TF_CEXT): Ditto.
8219         (TF_SIZE): Ditto.
8220
8221 2007-06-14  Seongbae Park  <seongbae.park@gmail.com>
8222
8223         PR rtl-optimization/32339
8224         * df-scan.c (df_uses_record): Don't modify flags but just add to
8225         it for df_ref_record.
8226
8227 2007-06-14  Andrew Pinski  <andrew_pinski@playstation.sony.com>
8228
8229         * tree-mudflap.c: Fix whitespace issues.
8230
8231 2007-06-15  Kazu Hirata  <kazu@codesourcery.com>
8232
8233         * config/m68k/m68k.c (ASM_DOT, ASM_DOTW, ASM_DOTL): Remove.
8234
8235 2007-06-14  Eric Christopher  <echristo@apple.com>
8236
8237         * config/i386/sse.md (movdi_to_sse): Rewrite body.
8238         (movv4sf): Use gcc_unreachable instead of abort.
8239
8240 2007-06-14  Uros Bizjak  <ubizjak@gmail.com>
8241
8242         PR target/32268
8243         * config/i386/sfp-machine.h (CMPtype): New define.
8244         (mach stubs): Use CMPtype instead of int as a return type.
8245
8246 2007-06-14  Uros Bizjak  <ubizjak@gmail.com>
8247
8248         * config/soft-fp/eqdf2.c, config/soft-fp/eqsf2.c,
8249         config/soft-fp/eqtf2.c, config/soft-fp/gedf2.c,
8250         config/soft-fp/gesf2.c, config/soft-fp/getf2.c,
8251         config/soft-fp/ledf2.c, config/soft-fp/lesf2.c,
8252         config/soft-fp/letf2.c, config/soft-fp/unorddf2.c,
8253         config/soft-fp/unordsf2.c, config/soft-fp/unordtf2.c,
8254         config/soft-fp/soft-fp.h: Update from glibc CVS.
8255
8256 2007-06-14  Bernd Schmidt  <bernd.schmidt@analog.com>
8257
8258         * config/bfin/uclinux.h (MFWRAP_SPEC): New.
8259
8260 2007-06-14  Rask Ingemann Lambertsen  <rask@sygehus.dk>
8261
8262         PR target/32341
8263         * config/v850/v850.c: Include dataflow header file.
8264         (substitute_ep_register): Fix typo.
8265
8266 2007-06-14  Paolo Bonzini  <bonzini@gnu.org>
8267
8268         * configure.ac: Fix earlier checkin.
8269         * configure: Regenerated.
8270
8271 2007-06-14  Paolo Bonzini  <bonzini@gnu.org>
8272
8273         * acinclude.m4 (gcc_AC_CHECK_PROG_VER): Remove.
8274         * aclocal.m4: Regenerate.
8275         * configure.ac: Use ACX_PROG_CC_WARNING_OPTS,
8276         ACX_PROG_CC_WARNINGS_ARE_ERRORS,
8277         ACX_PROG_CC_WARNING_ALMOST_PEDANTIC, ACX_CHECK_PROG_VER.
8278         * configure: Regenerate.
8279         * Makefile.in (LOOSE_WARN): Subst loose_warn.
8280
8281         * Makefile.in (quickstrap): Build libgcc too.
8282
8283 2007-06-14  Paolo Bonzini  <bonzini@gnu.org>
8284
8285         * configure.ac: Add --enable-checking=df.  Explicitly mention that
8286         the variables are initialized as for "release".
8287         * df-core.c: Use it.
8288         * configure: Regenerate.
8289         * config.in: Regenerate.
8290
8291 2007-06-14  Bob Wilson  <bob.wilson@acm.org>
8292
8293         * config/xtensa/xtensa.c (xtensa_expand_nonlocal_goto): Use
8294         validate_replace_rtx instead of replace_rtx.
8295         (xtensa_expand_prologue): Call df_insn_rescan after replace_rtx.
8296
8297 2007-06-14  Danny Smith  <dannysmith@users.sourceforge.net>
8298
8299         * config/i386/cygming.h (DWARF_FRAME_REGNUM): Define.
8300         (DWARF2_UNWIND_INFO): Override default if configured with
8301         SJLJ EH disabled.
8302         * config/i386/cygwin.h (STARTFILE_SPEC): Add crtbegin.o.
8303         (ENDFILE_SPEC): Add crtend.o.
8304         * config/i386/mingw32.h (STARTFILE_SEC): Add crtbegin.o.
8305         (ENDFILE_SPEC): Add crtend.o.
8306         (TARGET_USE_JCR_SECTION): Define.
8307         (MD_UNWIND_SUPPORT): Define for 32-bit target.
8308
8309         * config/i386/cygming-crtbegin.c: New file.
8310         * config/i386/cygming-crtend.c: New file.
8311
8312 2007-06-14  Pascal Obry Pascal Obry  <obry@adacore.com>
8313
8314         * config/i386/w32-unwind.h: New file.
8315
8316 2007-06-13  Eric Christopher  <echristo@apple.com>
8317
8318         * config/i386/darwin.h (PREFERRED_STACK_BOUNDARY): Don't let
8319         the user set a value below STACK_BOUNDARY.
8320
8321 2007-06-13  Thiemo Seufer  <ths@networkno.de>
8322
8323         * config/mips/linux.h, config/mips/linux64.h (LIB_SPEC): Always
8324         imply -lpthread for -pthread.
8325
8326 2007-06-13  Kazu Hirata  <kazu@codesourcery.com>
8327
8328         * basic-block.h: Remove the prototype for
8329         free_basic_block_vars.
8330         * cfglayout.h: Remove the prototype for
8331         insn_locators_initialize.
8332         * tree.h: Remove the prototype for emit_line_note.
8333
8334         * tree-ssa-pre.c (mergephitemp): Remove.
8335         (init_pre): Don't use mergephitemp.
8336
8337 2007-06-13  Eric Christopher  <echristo@apple.com>
8338
8339         * config/i386/i386.c (override_options): If we've specified
8340         an arch then don't use TARGET_SUBTARGET_ISA_DEFAULTs.
8341
8342 2007-06-13  Bob Wilson  <bob.wilson@acm.org>
8343
8344         * df-scan.c (df_get_entry_block_def_set): Check if STATIC_CHAIN_REGNUM
8345         is defined.
8346
8347 2007-06-13  Bernd Schmidt  <bernd.schmidt@analog.com>
8348
8349         * config/bfin/bfin.h (EH_RETURN_HANDLER_RTX): Use gen_frame_mem.
8350         * config/bfin/bfin.md (UNSPEC_VOLATILE_STORE_EH_HANDLER): New constant.
8351         (eh_store_handler): New pattern.
8352         (eh_return): Emit it instead of a plain move.
8353
8354 2007-06-13  Uros Bizjak  <ubizjak@gmail.com>
8355
8356         * config/i386/i386.c (ix86_init_mmx_sse_builtins)
8357         [__builtin_infq, __builtin_fabsq]: Define usign def_builtin.
8358         [__builtin_ia32_rsqrtps, __builtin_ia32_rsqrtss]: Define using
8359         def_builtin_const.
8360
8361 2007-06-13  Bernd Schmidt  <bernd.schmidt@analog.com>
8362
8363         * config/bfin/bfin.c (gen_one_bundle): Delete unused local variables.
8364         (find_next_insn_start, find_load): New functions.
8365         (bfin_reorg): Use them to deal with the fact that parallel insns are
8366         no longer represented as a SEQUENCE.
8367
8368 2007-06-13  Eric Botcazou  <ebotcazou@libertysurf.fr>
8369
8370         * config/sparc/sparc.c (sparc_override_options): Initialize
8371         fpu mask correctly.
8372
8373 2007-06-13  Dave Korn  <dave.korn@artimi.com>
8374
8375         * config/i386/i386.c (ix86_eax_live_at_start_p): Use
8376         df_get_live_out.
8377
8378 2007-06-13  Kazu Hirata  <kazu@codesourcery.com>
8379
8380         * auto-inc-dec.c, c-incpath.c, config/c4x/libgcc.S,
8381         config/sh/divcost-analysis, dbgcnt.def, df-core.c,
8382         df-problems.c, df-scan.c, df.h, dominance.c, dse.c, regstat.c,
8383         tree-data-ref.c, tree-ssa-loop-im.c, tree-ssa-loop-prefetch.c,
8384         tree-vect-transform.c: Fix comment typos.  Follow spelling
8385         conventions.
8386
8387 2007-06-12  Seongbae Park  <seongbae.park@gmail.com>
8388
8389        * df-scan.c (df_get_exit-block_use_set): Always add the stack pointer
8390        to the exit block use set.
8391        (df_insn_delete, df_insn_rescan): Fixed spelling of "deferring". 
8392        * gcse.c (cpro_jump): Don't emit barrier in cfglayout mode.
8393        * config/sparc/sparc.c (sparc_check_64): Check df != NULL.
8394
8395 2007-06-12  Seongbae Park  <seongbae.park@gmail.com>
8396
8397         * opts.c (common_handle_option): Handle new option -fdbg-cnt-list.
8398         * dbgcnt.c (dbg_cnt_set_limit_by_name): Return value
8399         to indicate an error.
8400         (dbg_cnt_process_single_pair, dbg_cnt_list_all_counters):
8401         New functions.
8402         (dbg_cnt_process_opt): Print an error on a bad argument.
8403         * dbgcnt.h (dbg_cnt_list_all_counters): New function declaration.
8404         * common.opt (-fdbg-cnt-list): New.
8405         * doc/invoke.texi (-fdbg-cnt-list,-fdbg-cnt=): New.
8406
8407 2007-06-12  Eric Botcazou  <ebotcazou@adacore.com>
8408
8409         * tree-ssa-alias.c (finalize_ref_all_pointers): Clear pt_anything
8410         flag on ref-all pointers.
8411
8412 2007-06-12  Andrew Pinski  <andrew_pinski@playstation.sony.com>
8413
8414         PR middle-end/31579
8415         * expr.c (expand_expr_addr_expr_1): Call expand_expr
8416         for the offset with the modifier as EXPAND_INITIALIZER
8417         if the modifier is EXPAND_INITIALIZER.
8418         (expand_expr_real_1 <case INTEGER_CST>): Don't force to
8419         a register if we had an overflow.
8420
8421 2007-06-12  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
8422
8423         * real.c (real_isfinite): New.
8424         (real_sqrt): Use it.
8425         * real.h (real_isfinite): New.
8426         * builtins.c: Use it.
8427
8428 2007-06-12  Ian Lance Taylor  <iant@google.com>
8429             Daniel Berlin  <dberlin@dberlin.org>
8430
8431         PR libstdc++/29286
8432         * tree.def: Add CHANGE_DYNAMIC_TYPE_EXPR.
8433         * tree.h (CHANGE_DYNAMIC_TYPE_NEW_TYPE): Define.
8434         (CHANGE_DYNAMIC_TYPE_LOCATION): Define.
8435         (DECL_NO_TBAA_P): Define.
8436         (struct tree_decl_common): Add no_tbaa_flag field.
8437         * tree-ssa-structalias.c (struct variable_info): Add
8438         no_tbaa_pruning field.
8439         (new_var_info): Initialize no_tbaa_pruning field.
8440         (unify_nodes): Copy no_tbaa_pruning field.
8441         (find_func_aliases): Handle CHANGE_DYNAMIC_TYPE_EXPR.
8442         (dump_solution_for_var): Print no_tbaa_pruning flag.
8443         (set_uids_in_ptset): Add no_tbaa_pruning parameter.  Change all
8444         callers.
8445         (compute_tbaa_pruning): New static function.
8446         (compute_points_to_sets): Remove CHANGE_DYNAMIC_TYPE_EXPR nodes.
8447         Call compute_tbaa_pruning.
8448         * tree-ssa-alias.c (may_alias_p): Test no_tbaa_flag for pointers.
8449         * gimplify.c (gimplify_expr): Handle CHANGE_DYNAMIC_TYPE_EXPR.
8450         * gimple-low.c (lower_stmt): Likewise.
8451         * tree-gimple.c (is_gimple_stmt): Likewise.
8452         * tree-ssa-operands.c (get_expr_operands): Likewise.
8453         * tree-ssa-dce.c (mark_stmt_if_obviously_necessary): Likewise.
8454         * tree-inline.c (estimate_num_insns_1): Likewise.
8455         (copy_result_decl_to_var): Likewise.
8456         * expr.c (expand_expr_real_1): Likewise.
8457         * tree-pretty-print.c (dump_generic_node): Likewise.
8458         * tree-inline.c (copy_decl_to_var): Copy DECL_NO_TBAA_P flag.
8459         * omp-low.c (omp_copy_decl_2): Likewise.
8460         * print-tree.c (print_node): Print DECL_NO_TBAA_P flag.
8461         * doc/c-tree.texi (Expression trees): Document
8462         CHANGE_DYNAMIC_TYPE_EXPR.
8463
8464 2007-06-12  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
8465
8466         * fold-const.c (fold_binary): Guard (X-X) -> 0 transformation
8467         with !HONOR_NANS and !HONOR_INFINITIES.
8468         * simplify-rtx.c (simplify_binary_operation_1): Likewise.
8469
8470 2007-06-12  Tristan Gingold  <gingold@adacore.com>
8471
8472         * gcov.c: Comments updated.
8473         (source_info): Add file_time field.
8474         (source_index): New variable.
8475         (mutiple_files): New variable.
8476         (generate_results): New function extracted from process_file.
8477         (process_file): Save and restore chain of functions, generate
8478         results and free structures only if not merging results.
8479         (release_structures): File names are now freed in create_file_names
8480         (create_file_names): Free previous file names.
8481         (find_source): File date is now read here and modifications in
8482         source files is checked here.
8483         (read_graph_file): Only reverse order of functions for the current
8484         object file.
8485         (make_gcov_file_name): Do not generate long names if input_name is
8486         NULL.
8487         (output_lines): If merging results do not display graph, data and
8488         runs informations.
8489         Checking source file modification is done in find_source.
8490
8491         * doc/gcov.texi: Append an s to sourcefile.
8492
8493 2007-06-12  Bernd Schmidt  <bernd.schmidt@analog.com>
8494
8495         * config/bfin/bfin.md (UNSPEC_NOP): New constant.
8496         (forced_nop): New pattern.
8497         * config/bfin/bfin.c: Include "df.h".
8498         (add_to_reg): Use df_regs_ever_live_p instead of regs_ever_live.
8499         (bfin_discover_loop): Use df_get_live_in instead of
8500         global_live_at_start.
8501         (bfin_reorder_loops): Pass 0 to cfg_layout_initialize.  Call
8502         df_analyze when done.
8503         (gen_one_bundle): Don't generate SEQUENCE insns, just put modes on
8504         the insns.  Use QImode for the final insn in a bundle.  Call
8505         df_insn_rescan on generated NOPs; use gen_forced_nop instead of
8506         gen_nop.
8507         (reorder_var_tracking_notes): New function.
8508         (bfin_reorg): Pass no argument to split_all_insns.  Don't call
8509         update_life_info.  Call df_analyze after scheduling and bundle
8510         generation.  Call reorder_var_tracking_notes if generating these
8511         notes.  Call df_finish_pass at the end.
8512
8513 2007-06-12  Dirk Mueller  <dmueller@suse.de>
8514
8515         * optabs.c (debug_optab_libfuncs): fix gcc_assert to
8516         a comparison, not an assignment.
8517
8518 2007-06-12  Olivier Hainque  <hainque@adacore.com>
8519
8520         * tree-nested.c (convert_local_reference): Handle VIEW_CONVERT_EXPR.
8521         Request walking the subtrees only, leaving the current is_lhs/val_only
8522         untouched.
8523         (convert_non_local_reference): Likewise.
8524
8525 2007-06-12  Nathan Sidwell  <nathan@codesourcery.com>
8526
8527         * config/m68k/m68k-devices.def (52221, 52223, 5253): New.
8528
8529 2007-06-12  Richard Guenther  <rguenther@suse.de>
8530
8531         PR tree-optimization/15353
8532         PR tree-optimization/31657
8533         * passes.c (init_optimization_passes): Add pass_tree_ifcombine.
8534         * timevar.def: Add TV_TREE_IFCOMBINE.
8535         * tree-pass.h (pass_tree_ifcombine): Declare.
8536         * tree-ssa-ifcombine.c: New file.
8537         * tree-ssa-phiopt.c (blocks_in_phiopt_order): Export.
8538         * tree-flow.h (blocks_in_phiopt_order): Declare.
8539         * Makefile.in (OBJS-common): Add tree-ssa-ifcombine.o.
8540         (tree-ssa-ifcombine.o): New dependencies.
8541
8542 2007-06-12  Uros Bizjak  <ubizjak@gmail.com>
8543
8544         PR rtl-optimization/32293
8545         * combine.c (simplify_if_then_else): Truncate return from
8546         nonzero_bits() to correct mode.
8547
8548 2007-06-12  Uros Bizjak  <ubizjak@gmail.com>
8549
8550         * fold-const (fold_binary) [RDIV_EXPR]: Also optimize a/cbrt(b/c)
8551         into a*cbrt(c/b) if flag_unsafe_math_optimizations is set.
8552
8553 2007-06-11  Diego Novillo  <dnovillo@google.com>
8554
8555         * Makefile.in (reload1.o-warn): Remove.
8556
8557 2007-06-11  Seongbae Park <seongbae.park@gmail.com>
8558
8559         * combine.c (subst): Use reg_overlap_mentioned_p
8560         instead of comparing register numbers directly.
8561
8562 2007-06-11  Kenneth Zadeck <zadeck@naturalbridge.com>
8563
8564         * reload1.c (mark_home_live_1): Use the mode parameter.
8565
8566 2007-06-11  Kenneth Zadeck <zadeck@naturalbridge.com>
8567
8568         * df-scan.c (df_insn_delete, df_insn_rescan, df_insn_rescan_all,
8569         df_process_deferred_rescans, df_notes_rescan): Fixed spelling of
8570         word "deferred".
8571         * df-core.c: Ditto.
8572
8573 2007-06-11  Daniel Berlin  <dberlin@dberlin.org>
8574
8575         * Merge dataflow-branch into mainline (see ChangeLog.dataflow)
8576
8577 2007-06-11  Uros Bizjak  <ubizjak@gmail.com>
8578
8579         * config/i386/i386.md ("*movtf_internal): Penalize moves to and
8580         from integer registers.
8581         (FP mode splitters): Handle TFmode.
8582
8583 2007-06-11  Eric Botcazou  <ebotcazou@adacore.com>
8584
8585         * tree-ssa-structalias.c (find_what_p_points_to): Return false
8586         for ref-all pointers that point-to anything.
8587
8588 2007-06-11  Joseph Myers  <joseph@codesourcery.com>
8589
8590         * config/arm/arm.c (arm_output_dwarf_dtprel,
8591         TARGET_ASM_OUTPUT_DWARF_DTPREL): New.
8592
8593 2007-06-11  Bernd Schmidt  <bernd.schmidt@analog.com>
8594
8595         * config/bfin/bfin.md (movdi_insn, movsi_insn, movv2hi_insn,
8596         movhi_insn, movqi_insn, movsf_insn, movdf_insn): Don't allow constant
8597         to memory moves.
8598
8599 2007-06-11  Rafael Avila de Espindola  <espindola@google.com>
8600
8601         * tree.c (signed_or_unsigned_type_for): New.
8602         (unsigned_type_for): Use signed_or_unsigned_type_for.
8603         (signed_type_for): Use signed_or_unsigned_type_for.
8604         * tree.h (signed_or_unsigned_type_for): New.
8605         (get_signed_or_unsigned_type): Remove.
8606         * fold-const.c (fold_negate_expr): Use signed_type_for instead of
8607         lang_hooks.types.signed_type
8608         (size_diffop): Likewise.
8609         (all_ones_mask_p): Likewise.
8610         (build_range_check): Likewise.
8611         (fold_cond_expr_with_comparison): Likewise.
8612         (fold_cond_expr_with_comparison): Likewise.
8613         (unextend): Likewise.
8614         (extract_muldiv_1): Likewise.
8615         (fold_single_bit_test_into_sign_test): Likewise.
8616         (fold_binary): Likewise.
8617         (fold_ternary): Likewise.
8618         (operand_equal_for_comparison_p): Use signed_or_unsigned_type_for
8619         instead of get_signed_or_unsigned_type.
8620         * c-objc-common.h (LANG_HOOKS_SIGNED_TYPE): Remove.
8621         (LANG_HOOKS_SIGNED_OR_UNSIGNED_TYPE): Remove.
8622         * expr.c (signed_or_unsigned_type_for): Use
8623         signed_or_unsigned_type_for instead of get_signed_or_unsigned_type.
8624         * langhooks.c (get_signed_or_unsigned_type): Remove.
8625         (lhd_signed_or_unsigned_type): Remove.
8626         * langhooks.h (lang_hooks_for_types): Remove signed_type and
8627         signed_or_unsigned_type.
8628         (lhd_signed_or_unsigned_type): Remove.
8629         * expmed.c (make_tree): Use signed_type_for instead of
8630         lang_hooks.types.signed_type.
8631         * c-common.c (same_scalar_type_ignoring_signedness): Use
8632         c_common_signed_type instead of lang_hooks.types.signed_type.
8633         (c_common_unsigned_type): New.
8634         (c_common_signed_type): Just call c_common_signed_or_unsigned_type.
8635         (shorten_compare): Use c_common_unsigned_type instead of
8636         c_common_signed_or_unsigned_type.
8637         (c_common_nodes_and_builtins): Use c_common_unsigned_type instead of
8638         unsigned_type_for.
8639         * convert.c (convert_to_integer): Use signed_type_for instead of
8640         lang_hooks.types.signed_type.
8641         * langhooks-def.h (LANG_HOOKS_SIGNED_OR_UNSIGNED_TYPE): Remove.
8642         (LANG_HOOK_FOR_TYPES_INITIALIZER): Remove LANG_HOOKS_SIGNED_TYPE and
8643         LANG_HOOKS_SIGNED_OR_UNSIGNED_TYPE.
8644         * c-format.c (check_format_types): Use c_common_unsigned_type
8645         instead of unsigned_type_for.
8646         * c-decl.c (groakdeclarator): Likewise.
8647         * c-typeck.c (convert_for_assignment): Likewise.
8648         * c-common.h (c_common_unsigned_type): New.
8649
8650 2007-06-11  Uros Bizjak  <ubizjak@gmail.com>
8651
8652         PR target/32280
8653         * config/i386/sse.md ("sse2_ashlti", "sse2_lshrti3"): Move ...
8654         * config/i386/i386.md ("sse2_ashlti", "sse2_lshrti3"): ... to here.
8655
8656 2007-06-11  Uros Bizjak  <ubizjak@gmail.com>
8657
8658         PR middle-end/32279
8659         * fold-const (fold_binary) [RDIV_EXPR]: Optimize a/sqrt(b/c)
8660         into a*sqrt(c/b) if flag_unsafe_math_optimizations is set.
8661
8662 2007-06-10  Jan Sjodin  <jan.sjodin@amd.com>
8663             Sebastian Pop  <sebpop@gmail.com>
8664
8665         * lambda-code.c (remove_iv): New.
8666         (lambda_loopnest_to_gcc_loopnest): Use remove_iv.
8667
8668 2007-06-10  Zdenek Dvorak  <dvorakz@suse.cz>
8669
8670         * tree-data-ref.c (dr_analyze_alias): Handle case smt is NULL.
8671         * tree-predcom.c (mark_virtual_ops_for_renaming): Exported.
8672         * tree-ssa-loop-prefetch.c: Include optabs.h.
8673         (FENCE_FOLLOWING_MOVNT): New macro.
8674         (struct mem_ref): Add independent_p and storent_p fields.
8675         (record_ref): Initalize the new fields.
8676         (gather_memory_references_ref): Return true if the reference
8677         could be analysed.
8678         (gather_memory_references): Check whether all memory accesses
8679         in loop were recorded.
8680         (should_issue_prefetch_p): Return false for nontemporal stores.
8681         (nontemporal_store_p, mark_nontemporal_store, emit_mfence_after_loop,
8682         may_use_storent_in_loop_p, mark_nontemporal_stores): New functions.
8683         (determine_loop_nest_reuse): Detect independent memory references.
8684         (loop_prefetch_arrays): Call mark_nontemporal_stores.
8685         * tree-flow.h (mark_virtual_ops_for_renaming): Declare.
8686         * Makefile.in (tree-ssa-loop-prefetch.o): Add OPTABS_H dependency.
8687         * config/i386/i386.h (x86_mfence): Declare.
8688         (FENCE_FOLLOWING_MOVNT): Return x86_mfence.
8689         * config/i386/i386.c (x86_mfence): New variable.
8690         (ix86_init_mmx_sse_builtins): Initialize x86_mfence.
8691
8692         * tree-pretty-print.c (dump_generic_node): Mark nontemporal stores.
8693         * optabs.c (init_optabs): Initialize storent_optab.
8694         * optabs.h (enum optab_index): Add OTI_storent.
8695         (storent_optab): Declare.
8696         * genopinit.c (optabs): Add initialization for storent_optab.
8697         * tree.h (MOVE_NONTEMPORAL): New macro.
8698         * expr.c (expand_assignment, store_expr, store_constructor_field,
8699         store_constructor, store_field, expand_expr_real_1): Propagate
8700         nontemporality of the expanded store.
8701         (emit_storent_insn): New function.
8702         * expr.h (expand_assignment, store_expr): Declaration changed.
8703         * function.c (assign_parm_setup_reg): Pass false as nontemporality
8704         to expand_assignment.
8705         * stmt.c (expand_asm_expr): Ditto.
8706         * calls.c (initialize_argument_information): Pass false as
8707         nontemporality to store_expr.
8708         * config/i386/sse.md (storentv4sf, storentv2df, storentv2di,
8709         storentsi): New.
8710
8711 2007-06-09  Daniel Berlin  <dberlin@dberlin.org>
8712
8713         * tree-ssa-structalias.c (set_uids_in_ptset): Add is_deref'd
8714         parameter, use it.
8715         (find_what_p_points_to): Pass new parameter to set_uids_in_ptset.
8716
8717 2007-06-09  Daniel Berlin  <dberlin@dberlin.org>
8718
8719         * tree-data-ref.c (dr_may_alias_p): Check that decl_a != decl_b,
8720         and allow DECL_P here.
8721
8722 2007-06-09  Zdenek Dvorak  <dvorakz@suse.cz>
8723
8724         * tree-scalar-evolution.c (follow_ssa_edge_in_rhs,
8725         follow_ssa_edge_in_condition_phi, follow_ssa_edge): Keep more precise
8726         track of the size of the expression.
8727         * cfghooks.c (merge_blocks): Remove block from loops structure only
8728         after call of the merge_blocks hook.
8729
8730 2007-06-09  Tom Tromey  <tromey@redhat.com>
8731
8732         * c-decl.c (grokdeclarator): Added 'deprecated_state' argument.
8733         (deprecated_state): Removed.
8734         (start_decl): Update.
8735         (enum deprecated_states): Moved earlier.
8736         (groktypename): Update.
8737         (push_parm_decl): Likewise.
8738         (grokfield): Likewise.
8739         (start_function): Likewise.
8740
8741 2007-06-09  Ian Lance Taylor  <iant@google.com>
8742
8743         PR tree-optimization/32169
8744         * tree-vrp.c (extract_range_from_unary_expr): For NOP_EXPR and
8745         CONVERT_EXPR, check whether min and max both converted to an
8746         overflow infinity representation.
8747
8748 2007-06-08  Eric Botcazou  <ebotcazou@adacore.com>
8749
8750         * reload1.c (fixup_abnormal_edges): Clear bb field for insns
8751         not inserted on the edge.
8752
8753 2007-06-08  Bob Wilson  <bob.wilson@acm.org>
8754
8755         * config/xtensa/lib1funcs.asm (__udivsi3): Use hardware divide
8756         instructions if they are supported.
8757         (__divsi3, __umodsi3, __modsi3): Likewise.
8758         (__ashldi3, __ashrdi3, __lshrdi3): New.
8759         * config/xtensa/t-xtensa (LIB1ASMFUNCS): Add DImode shift functions.
8760
8761 2007-06-08  Harsha Jagasia <harsha.jagasia@amd.com>
8762             Tony Linthicum <tony.linthicum@amd.com>
8763
8764         * doc/invoke.texi: Add fvect-cost-model flag.
8765         * common.opt (fvect-cost-model): New flag.
8766         * tree-vectorizer.c (new_stmt_vec_info): Initialize inside and outside
8767         cost fields in stmt_vec_info struct for STMT.
8768         * tree-vectorizer.h (stmt_vec_info): Define inside and outside cost
8769         fields in stmt_vec_info struct and access functions for the same.
8770         (TARG_COND_BRANCH_COST): Define cost of conditional branch.
8771         (TARG_VEC_STMT_COST): Define cost of any vector operation, excluding
8772         load, store and vector to scalar operation.
8773         (TARG_VEC_TO_SCALAR_COST): Define cost of vector to scalar operation.
8774         (TARG_VEC_LOAD_COST): Define cost of aligned vector load.
8775         (TARG_VEC_UNALIGNED_LOAD_COST): Define cost of misasligned vector load.
8776         (TARG_VEC_STORE_COST): Define cost of vector store.
8777         (vect_estimate_min_profitable_iters): Define new function.
8778         * tree-vect-analyze.c (vect_analyze_operations): Add a compile-time
8779         check to evaluate if loop iterations are less than minimum profitable
8780         iterations determined by cost model or minimum vect loop bound defined
8781         by user, whichever is more conservative.
8782         * tree-vect-transform.c (vect_do_peeling_for_loop_bound): Add a
8783         run-time check to evaluate if loop iterations are less than minimum
8784         profitable iterations determined by cost model or minimum vect loop
8785         bound defined by user, whichever is more conservative.
8786         (vect_estimate_min_profitable_iterations): New function to estimate
8787         mimimimum iterartions required for vector version of loop to be
8788         profitable over scalar version.
8789         (vect_model_reduction_cost): New function.
8790         (vect_model_induction_cost): New function.
8791         (vect_model_simple_cost): New function.
8792         (vect_cost_strided_group_size): New function.
8793         (vect_model_store_cost): New function.
8794         (vect_model_load_cost): New function.
8795         (vectorizable_reduction): Call vect_model_reduction_cost during
8796         analysis phase.
8797         (vectorizable_induction): Call vect_model_induction_cost during
8798         analysis phase.
8799         (vectorizable_load): Call vect_model_load_cost during analysis phase.
8800         (vectorizable_store): Call vect_model_store_cost during analysis phase.
8801         (vectorizable_call, vectorizable_assignment, vectorizable_operation,
8802         vectorizable_promotion, vectorizable_demotion): Call
8803         vect_model_simple_cost during analysis phase.
8804
8805 2007-06-08  Simon Baldwin  <simonb@google.com>
8806
8807         * reg-stack.c (get_true_reg): Readability change.  Moved default case
8808         label into direct switch statement scope.
8809
8810 2007-06-08  Simon Baldwin  <simonb@google.com>
8811
8812         * tree-flow-inline.h (var_ann): Replaced erroneous '=' assignment
8813         in gcc_assert() with '==' comparison.
8814
8815 2007-06-08  Uros Bizjak  <ubizjak@gmail.com>
8816
8817         * config/i386/i386.c (override_options): Merge TARGET_SSE4_2 and
8818         TARGET_ABM handling of x86_popcnt variable.
8819
8820 2007-06-08  Uros Bizjak  <ubizjak@gmail.com>
8821
8822         * doc/extend.texi (X86 Built-in Functions): Document __builtin_fabsq,
8823         __builtin_copysignq and __builtin_infq built-in functions.
8824
8825 2007-06-08  Uros Bizjak  <ubizjak@gmail.com>
8826
8827         * doc/extend.texi (X86 Built-in Functions): Add missing `@item's in
8828         SSE4.2 section.  Correct built-in function names in SSE4A section.
8829
8830 2007-06-08  Uros Bizjak  <ubizjak@gmail.com>
8831
8832         PR tree-optimization/32243
8833         * tree-vect-transform.c (vectorizable_type_promotion): Move check
8834         for ncopies after ratio check between nunits_out and nunits_in.
8835         (vectorizable_type_demotion): Remove single-use variable "scalar_type".
8836
8837 2007-06-08  Dorit Nuzman  <dorit@il.ibm.com>
8838
8839         PR tree-optimization/32224
8840         * tree-vect-analyze.c (vect_determine_vectorization_factor): Fail
8841         vectorization upon a non GIMPLE_MODIFY_STMT.
8842
8843 2007-06-08  Christian Bruel  <christian.bruel@st.com>
8844
8845         PR target/29953
8846         * config/sh/sh.md (doloop_end): New pattern and splitter.
8847         * loop-iv.c (simple_rhs_p): Check for hardware registers.
8848
8849 2007-06-08  Zdenek Dvorak  <dvorakz@suse.cz>
8850
8851         PR middle-end/32209
8852         * dominance.c (debug_dominance_tree, debug_dominance_tree_1): New
8853         functions.
8854         (verify_dominators): Do not change dominance tree.
8855
8856 2007-06-08  Kaz Kojima  <kkojima@gcc.gnu.org>
8857
8858         * config/sh/constraints.md: New file.
8859         * config/sh/sh.c: Include tm-constrs.h.
8860         (reg_class_from_letter): Remove.
8861         (prepare_cbranch_operands): Use satisfies_constraint_*
8862         function instead of macro.
8863         (andcosts, broken_move, sh_secondary_reload): Likewise.
8864         * config/sh/predicates.md (trapping_target_operand): Likewise.
8865         (and_operand, arith_operand, arith_reg_or_0_operand,
8866         cmp_operand, logical_operand, target_operand,
8867         ua_address_operand, ua_offset, xor_operand): Likewise.
8868         * config/sh/sh.md: Include constraints.md.
8869         (*movsicc_t_false): Use satisfies_constraint_* function
8870         instead of macro.
8871         (*movsicc_t_true, ashlsi3_std, ashlhi3_k, lshrsi3_m,
8872         lshrsi3_k, movsi_const_16bit+2, *movhi_media+1,
8873         movdi_const_16bit+1, beq, bne, *ptb): Likewise.
8874         * config/sh/sh.h (reg_class_from_letter): Remove prototype.
8875         (OVERRIDE_OPTIONS): Don't modify reg_class_from_letter.
8876         (REG_CLASS_FROM_CONSTRAINT): Remove.
8877         (CONSTRAINT_LEN, CONST_OK_FOR_I20, CONST_OK_FOR_I,
8878         CONST_OK_FOR_J, CONST_OK_FOR_K16, CONST_OK_FOR_K,
8879         CONST_OK_FOR_P27, CONST_OK_FOR_P, CONST_OK_FOR_M,
8880         CONST_OK_FOR_N, CONST_OK_FOR_CONSTRAINT_P,
8881         CONST_DOUBLE_OK_FOR_LETTER_P): Likewise.
8882         (SECONDARY_INOUT_RELOAD_CLASS): Use satisfies_constraint_*
8883         function instead of macro.
8884         (SECONDARY_INPUT_RELOAD_CLASS): Likewise.
8885         (EXTRA_CONSTRAINT_Q, EXTRA_CONSTRAINT_A,
8886         EXTRA_CONSTRAINT_Bsc, EXTRA_CONSTRAINT_B,
8887         EXTRA_CONSTRAINT_Css, EXTRA_CONSTRAINT_Csu): Remove.
8888         (IS_PC_RELATIVE_LOAD_ADDR_P): New macro.
8889         (IS_LITERAL_OR_SYMBOLIC_S16_P): Likewise.
8890         (IS_LITERAL_OR_SYMBOLIC_U16_P): Likewise.
8891         (IS_NON_EXPLICIT_CONSTANT_P): Likewise.
8892         (EXTRA_CONSTRAINT_Csy, EXTRA_CONSTRAINT_Z, EXTRA_CONSTRAINT_W,
8893         EXTRA_CONSTRAINT_Cpg, EXTRA_CONSTRAINT_C,
8894         EXTRA_MEMORY_CONSTRAINT, EXTRA_CONSTRAINT_Sr0,
8895         EXTRA_CONSTRAINT_Sua, EXTRA_CONSTRAINT_S,
8896         EXTRA_CONSTRAINT_STR): Likewise.
8897         (GO_IF_LEGITIMATE_INDEX): Fix indentation.
8898
8899 2007-06-07  Geoffrey Keating  <geoffk@apple.com>
8900
8901         * config/i386/darwin.h (STACK_BOUNDARY): Define.
8902
8903 2007-06-07  Simon Martin  <simartin@users.sourceforge.net>
8904
8905         PR c++/30759
8906         * c-common.h (flag_cpp0x): Replaced by...
8907         (cxx_dialect): ... this new variable specifying the C++ dialect that
8908         is used.
8909         * c-common.c (flag_cpp0x): Removed.
8910         (cxx_dialect): Defined.
8911         * c-cppbuiltin.c (c_cpp_builtins): flag_cpp0x rewritten in terms of
8912         cxx_dialect.
8913         * c-opts.c (c_common_post_options): Likewise.
8914         (set_std_cxx98): Set cxx_dialect to cxx98.
8915         (set_std_cxx0x): Set cxx_dialect to cxx0x.
8916
8917 2007-06-07  Geoffrey Keating  <geoffk@apple.com>
8918             Hui-May Chang <hm.chang@apple.com>
8919
8920         * doc/invoke.texi (Darwin Options): Update documentation for
8921         -mmacosx-version-min.
8922         * config.gcc (*-*-darwin*): Set extra_gcc_objs.
8923         * config/darwin-driver.c: New file.
8924         * config/darwin.h (GCC_DRIVER_HOST_INITIALIZATION): New.
8925         * config/t-darwin (darwin-driver.o): New rule.
8926
8927         * config/darwin-c.c (version_as_macro): Ignore low digit.
8928
8929 2007-06-07  Uros Bizjak  <ubizjak@gmail.com>
8930
8931         * config/i386/i386.md (standard sse constant splitter): Handle TFmode.
8932         (negtf2, abstf2, *absnegtf2_sse): New insn patterns.
8933         (CSGNMODE): New mode macro.
8934         (CSGNVMODE): New mode attribute.
8935         (copysign<mode>3): Rename from copysingsf3 and copysigndf3.  Macroize
8936         expander using CSGNMODE mode macro.  Handle TFmode.
8937         (copysign<mode>3_const): Rename from copysignsf3_const and
8938         copysigndf3_const.  Macroize pattern using CSGNMODE mode macro.
8939         Handle TFmode.
8940         (copysign<mode>3_var): Rename from copysignsf3_var and
8941         copysigndf3_var.  Macroize pattern using CSGNMODE mode macro.
8942         Handle TFmode.
8943         (copysign<mode>3_var splitter): Macroize pattern using CSGNMODE
8944         mode macro.  Handle TFmode.
8945         * config/i386/sse.md (andtf3, *andtf3, *nandtf3): New insn patterns.
8946         (iortf3, *iortf3): Ditto.
8947         (xortf3, *xortf3): Ditto.
8948         * config/i386/i386.c (ix86_build_signbit_mask): Create scalar
8949         TFmode and TImode masks.
8950         (ix86_expand_copysign): Expand TFmode copysign insn.
8951         (IX86_BUILTIN_INFQ): New.
8952         (IX86_BUILTIN_FABSQ): Ditto.
8953         (IX86_BUILTIN_COPYSIGNQ): Ditto.
8954         (ix86_init_mmx_sse_builtins) [__builtin_infq]: New builtin definition.
8955         [__builtin_fabsq]: Ditto.
8956         [__builtin_copysignq]: Ditto.
8957         (ix86_expand_builtin) [IX86_BUILTIN_INFQ]: Expand builtin.
8958         [IX86_BUILTIN_FABSQ]: Expand builtin using ix86_expand_unop_builtin().
8959         [IX86_BUILTIN_COPYSIGNQ]: Expand builtin using
8960         ix86_expand_binop_builtin().
8961
8962 2007-06-07  Bob Wilson  <bob.wilson@acm.org>
8963
8964         * config/xtensa/lib1funcs.asm: Clean up whitespace.
8965
8966 2007-06-07  Steve Ellcey  <sje@cup.hp.com>
8967
8968         PR target/31850
8969         * rtl.h (push_to_sequence2): New.
8970         * emit-rtl.c (push_to_sequence2): New.
8971         * function.c (assign_parm_data_all): Add new fields.
8972         (assign_parm_setup_block): Call push_to_sequence2 instead of
8973         push_to_sequence.
8974         (assign_parm_setup_reg): Ditto.
8975         (assign_parm_setup_stack): Ditto.
8976         (assign_parms_unsplit_complex): Ditto.
8977         (assign_parms): Change field name.
8978
8979 2007-06-07  Zdenek Dvorak  <dvorakz@suse.cz>
8980
8981         PR tree-optimization/32220
8982         * tree-predcom.c (eliminate_temp_copies): Handle the case that loop
8983         phi node is reached before defining statement.
8984
8985 2007-06-06  Andrew Pinski  <andrew_pinski@playstation.sony.com>
8986
8987         PR tree-opt/32231
8988         * tree-vect-transform.c (vectorizable_call): Call update_stmt
8989         after changing the right hand side of the assignment.
8990
8991 2007-06-06  Eric Christopher  <echristo@apple.com>
8992
8993         * config.gcc (i?86-*-darwin*): Remove arch parameter.
8994         (x86_64-*-darwin*): Ditto.
8995         * config/i386/darwin.h (TARGET_SUBTARGET32_ISA_DEFAULT): Define.
8996         (TARGET_SUBTARGET64_ISA_DEFAULT): Ditto.
8997
8998 2007-06-06  Thomas Neumann  <tneumann@users.sourceforge.net>
8999
9000         * tree-ssa-alias-warnings.c (maybe_add_match): Cast according to the
9001         coding conventions.
9002         (add_key): Likewise.
9003         * tree-ssa.c (init_tree_ssa): Use type safe memory macros.
9004         * tree-ssa-ccp.c (ccp_fold_builtin): Avoid using C++ keywords as
9005         variable names.
9006         * tree-ssa-coalesce.c (find_coalesce_pair): Use type safe memory
9007         macros.
9008         (add_cost_one_coalesce): Likewise.
9009         * tree-ssa-copy.c (merge_alias_info): Avoid using C++ keywords as
9010         variable names. Rename orig to orig_name for consistency.
9011         * tree-ssa-dom.c (dom_thread_across_edge): Cast according to the
9012         coding conventions.
9013         (cprop_into_successor_phis): Avoid using C++ keywords as variable
9014         names.
9015         (record_equivalences_from_stmt): Likewise.
9016         * tree-ssa-dse.c (dse_initialize_block_local_data): Cast according to
9017         the coding conventions.
9018         (memory_ssa_name_same): Likewise.
9019         (dse_optimize_stmt): Likewise.
9020         (dse_record_phis): Likewise.
9021         (dse_finalize_block): Likewise.
9022         * tree-ssa-loop-im.c (outermost_invariant_loop_expr): Avoid using C++
9023         keywords as variable names.
9024         (may_move_till): Cast according to the coding conventions.
9025         (force_move_till_expr): Avoid using C++ keywords as variable names.
9026         (force_move_till): Cast according to the coding conventions.
9027         (memref_hash): Likewise.
9028         (memref_eq): Likewise.
9029         (gather_mem_refs_stmt): Likewise.
9030         * tree-ssa-loop-ivopts.c (contains_abnormal_ssa_name_p): Avoid
9031         using C++ keywords as variable names.
9032         (idx_find_step): Cast according to the coding conventions.
9033         (idx_record_use): Likewise.
9034         (find_depends): Likewise.
9035         (prepare_decl_rtl): Likewise.
9036         (mbc_entry_hash): Likewise.
9037         (mbc_entry_eq): Likewise.
9038         * tree-ssa-loop-niter.c (SWAP): Use the correct the type for tmp.
9039         (simplify_replace_tree): Avoid using C++ keywords as variable names.
9040         (idx_infer_loop_bounds): Cast according to the coding conventions.
9041         * tree-ssa-loop-prefetch.c (idx_analyze_ref): Likewise.
9042         * tree-ssa-math-opts.c (occ_new ): Likwise.
9043         * tree-ssanames.c (duplicate_ssa_name_ptr_info): Use type safe memory
9044         macros.
9045         * tree-ssa-operands.c (add_def_op): Avoid using C++ keywords as
9046         variable names.
9047         (add_use_op): Likewise.
9048         (add_vop): Likewise.
9049         (add_vuse_op): Likewise.
9050         (add_vdef_op): Likewise.
9051         (get_expr_operands): Likewise.
9052         (push_stmt_changes): Use type safe memory macros.
9053         * tree-ssa-phiopt.c (replace_phi_edge_with_variable): Avoid using C++
9054         keywords as variable names.
9055         (conditional_replacement): Likewise.
9056         (minmax_replacement): Likewise.
9057         (abs_replacement): Likewise.
9058         * tree-ssa-pre.c (create_expression_by_pieces): Cast according to the
9059         coding conventions.
9060         (insert_fake_stores): Avoid using C++ keywords as variable names.
9061         * tree-ssa-reassoc.c (add_to_ops_vec): Cast according to the coding
9062         conventions.
9063         * tree-ssa-structalias.c (heapvar_lookup): Likewise.
9064         (heapvar_insert): Use type safe memory macros.
9065         (new_var_info): Cast according to the coding conventions.
9066         (new_constraint): Likewise.
9067         (remove_preds_and_fake_succs): Use type safe memory macros.
9068         * tree-ssa-threadupdate.c (thread_block): Cast according to the coding
9069         conventions.
9070         (thread_single_edge): Likewise.
9071         (thread_through_loop_header): Likewise.
9072
9073 2007-06-06  Eric Christopher  <echristo@apple.com>
9074
9075         * config/i386/i386.c (override_options): Move handling
9076         of TARGET_SUBTARGET* earlier.
9077
9078 2007-06-06  Paolo Bonzini  <bonzini@gnu.org>
9079
9080         * genmodes.c (tagged_printf, emit_insn_modes_h): Don't
9081         use %n on printf.
9082
9083 2007-06-06  Zdenek Dvorak  <dvorakz@suse.cz>
9084
9085         * haifa-sched.c (restore_bb_notes): Clear bb field of the notes
9086         emited outside of basic block.
9087         * cfgbuild.c (find_bb_boundaries): Clear bb field for insns between
9088         the created blocks.
9089         * rtl.h (delete_insn_chain): Declaration changed.
9090         * cfgrtl.c (delete_insn_chain): Add option to clear bb field for
9091         non-removed insns.
9092         (rtl_delete_block, rtl_merge_blocks): Pass true to delete_insn_chain.
9093         (delete_insn_chain_and_edges, try_redirect_by_replacing_jump,
9094         rtl_tidy_fallthru_edge, cfg_layout_merge_blocks): Pass false
9095         to delete_insn_chain.
9096         (rtl_verify_flow_info_1): Verify that the insns in header and footer
9097         do not have bb field set.
9098         (rtl_verify_flow_info): Verify that insns between basic blocks do not
9099         have bb field set.
9100         * recog.c (peephole2_optimize): Add argument to delete_insn_chain call.
9101         * cfgcleanup.c (try_optimize_cfg): Ditto.
9102
9103 2007-06-06  Thomas Neumann  <tneumann@users.sourceforge.net>
9104
9105         * lambda-code.c (struct lambda_lattice_s): Add a name to the struct.
9106         (lambda_body_vector_new): Use type safe memory macros.
9107         (lambda_linear_expression_new): Likewise.
9108         (lambda_loopnest_new): Likewise.
9109         (lambda_lattice_new): Likewise.
9110         (replace_uses_equiv_to_x_with_y): Cast according to the coding
9111         conventions. Use type safe memory macros.
9112         * lambda.h (struct lambda_trans_matrix_s): Add a name to the struct.
9113         (lambda_body_vector_s): Likewise.
9114         * lambda-mat.c (lambda_matrix_new): Use type safe memory macros.
9115         * lambda-trans.c (lambda_trans_matrix_new): Likewise.
9116
9117 2007-06-06  Richard Guenther  <rguenther@suse.de>
9118
9119         * tree-ssa-forwprop.c (forward_propagate_into_cond): Return 2
9120         if we need to schedule cfg_cleanup.
9121         (tree_ssa_forward_propagate_single_use_vars): Do so.
9122
9123 2007-06-06  Ian Lance Taylor  <iant@google.com>
9124
9125         * fold-const.c (merge_ranges): If range_successor or
9126         range_predecessor fail, just return 0.
9127
9128 2007-06-06  Uros Bizjak  <ubizjak@gmail.com>
9129
9130         PR tree-optimization/32216
9131         * tree-vectorizer.c (supportable_widening_operation): Determine
9132         signedness of FIX_TRUNC_EXPR from output operand.
9133         (supportable_narrowing_operation): Ditto.
9134         * tree-vect-generic.c (expand_vector_operations_1): Determine
9135         signedness of VEC_UNPACK_FLOAT_HI_EXPR and VEC_UNPACK_FLOAT_LO_EXPR
9136         from input operand.
9137
9138 2007-06-06  Thomas Neumann  <tneumann@users.sourceforge.net>
9139
9140         * config/i386/i386.c (enum pta_flags): Move out of struct scope...
9141         (struct pta): ...from here. Change flags to unsigned to avoid
9142         excessive casting (as it is used as a bit mask).
9143         (override_options): Add casts according to the coding convenventions.
9144         (x86_64_elf_unique_section): Likewise.
9145         (examine_argument): Avoid using C++ keywords as variable names.
9146         (construct_container): Likewise.
9147         (legitimize_pic_address): Likewise.
9148         (get_dllimport_decl): Cast according to the coding conventions. Use
9149         type safe memory macros.
9150         (legitimize_address): Cast according to the coding conventions.
9151         (emit_i387_cw_initialization): Corrected the type of slot to enum
9152         ix86_stack_slot.
9153         (ix86_init_machine_status): Use type safe memory macros.
9154         (bdesc_pcmpestr): Use UNKNOWN instead of integer 0.
9155         (bdesc_pcmpistr): Likewise.
9156         (bdesc_crc32): Likewise.
9157         (bdesc_sse_3arg): Likewise.
9158         (bdesc_2arg): Likewise.
9159         (bdesc_1arg): Likewise.
9160         (ix86_expand_sse_pcmpestr): Cast according to the coding conventions.
9161         (ix86_expand_sse_pcmpistr): Likewise.
9162         (ix86_expand_vec_set_builtin): Use EXPAND_NORMAL instead of integer 0.
9163         (ix86_builtin_vectorized_function): Change the type of fn to unsigned
9164         int to match the langhook definition.
9165         (ix86_builtin_conversion): Change the type of code to unsigned init to
9166         match the langhook definition.
9167         (ix86_preferred_reload_class): Avoid using C++ keywords as variable
9168         names.
9169         (ix86_preferred_output_reload_class): Likewise.
9170         (ix86_cannot_change_mode_class): Likewise.
9171         (ix86_memory_move_cost): Likewise.
9172         (ix86_rtx_costs): Cast the outer_code parameter to enum rtx_code to
9173         avoid excessive casting later on.
9174         (x86_output_mi_thunk): Avoid using C++ keywords as variable names.
9175
9176 2007-06-06  Uros Bizjak  <ubizjak@gmail.com>
9177
9178         * config/i386/sse.md (sse4_2_pcmpestr_cconly): Prefer pcmpestrm
9179         as flags setting insn.
9180         (sse4_2_pcmpistr_cconly): Prefer pcmpistrm as flags setting insn.
9181
9182 2007-06-06  Uros Bizjak  <ubizjak@gmail.com>
9183
9184         * config/i386/i386.md (UNSPEC_ROUNDP, UNSPEC_ROUNDS): Remove.
9185         (UNSPEC_ROUND): New.
9186         ("sse4_1_round<mode>2"): New insn pattern.
9187         ("rint<mode>2"): Expand using "sse4_1_round<mode>2" pattern for
9188         SSE4.1 targets.
9189         ("floor<mode>2"): Rename from floordf2 and floorsf2.  Macroize
9190         expander using SSEMODEF mode macro.  Expand using
9191         "sse4_1_round<mode>2" pattern for SSE4.1 targets.
9192         ("ceil<mode>2"): Rename from ceildf2 and ceilsf2.  Macroize
9193         expander using SSEMODEF mode macro.  Expand using
9194         "sse4_1_round<mode>2" pattern for SSE4.1 targets.
9195         ("btrunc<mode>2"): Rename from btruncdf2 and btruncsf2.  Macroize
9196         expander using SSEMODEF mode macro.  Expand using
9197         "sse4_1_round<mode>2" pattern for SSE4.1 targets.
9198         * config/i386/sse.md ("sse4_1_roundpd", "sse4_1_roundps"): Use
9199         UNSPEC_ROUND instead of UNSPEC_ROUNDP.
9200         ("sse4_1_roundsd", "sse4_1_roundss"): Use UNSPEC_ROUND instead of
9201         UNSPEC_ROUNDS.
9202
9203 2007-06-06  Jan Sjodin  <jan.sjodin@amd.com>
9204             Sebastian Pop  <sebpop@gmail.com>
9205
9206         * lambda.h (build_linear_expr): New.
9207         * lambda-code.c (lbv_to_gcc_expression, lle_to_gcc_expression):
9208         Use build_linear_expr, call fold and force_gimple_operand.
9209         (lambda_loopnest_to_gcc_loopnest): Check that there is
9210         something to insert.
9211         * testsuite/gcc.dg/tree-ssa/ltrans-6.c: New.
9212
9213 2007-06-05  Joerg Wunsch  <j.gnu@uriah.heep.sax.de>
9214
9215         PR preprocessor/23479
9216         * doc/extend.texi: Document the 0b-prefixed binary integer
9217         constant extension.
9218
9219 2007-06-05  Uros Bizjak  <ubizjak@gmail.com>
9220
9221         PR tree-optimization/32215
9222         * tree-vectorizer.c (supportable_widening_operation): Return false
9223         for unsupported FIX_TRUNC_EXPR tree code.
9224         (supportable_narrowing_operation): Ditto for FLOAT_EXPR tree code.
9225
9226 2007-06-06  Nathan Froyd  <froydnj@codesourcery.com>
9227
9228         * config/rs6000/rs6000.h (FIXED_SCRATCH): Use r0 as a scratch
9229         register on SPE targets.  Change documentation to reflect
9230         reality.
9231         * config/rs6000/rs6000.c (rs6000_conditional_register_usage):
9232         Change FIXED_SCRATCH to 14 and document why we're keeping r14
9233         out of the register allocation pool.
9234         (rs6000_reg_live_or_pic_offset_p): New function.
9235         (rs6000_emit_prologue): Move the actual saving of LR up to free
9236         r0 for holding r11.  Split saving of SPE 64-bit registers into
9237         its own case.  Ensure that offsets will always be in-range for
9238         'evstdd' by using r11 as a scratch register to point at the start
9239         of the SPE save area.  Save r11 if necessary, as it is the static
9240         chain register.
9241         (rs6000_emit_epilogue): Split restoring of SPE 64-bit registers
9242         into its own case.  Ensure that offsets will always be in-range
9243         for 'evldd' by using r11 as a scratch register to point at the
9244         start of the SPE save area.  Also adjust r11 when restoring
9245         the stack pointer to compensate for pre-loading r11.
9246
9247 2007-06-05  Thomas Neumann  <tneumann@users.sourceforge.net>
9248
9249         * cfg.c (init_flow): Use type safe memory macros.
9250         (alloc_block): Likewise.
9251         (unchecked_make_edge): Likewise.
9252         (dump_flow_info): Avoid using C++ keywords as variable names.
9253         (copy_original_table_clear): Cast according to the coding conventions.
9254         (copy_original_table_set): Likewise.
9255         * cfgexpand (label_rtx_for_bb): Likewise.
9256         (expand_gimple_basic_block): Likewise.
9257         * cfghooks.c (dump_bb): Likewise.
9258         (lv_adjust_loop_header_phi): Avoid using C++ keywords as
9259         variable names.
9260         (lv_add_condition_to_bb): Likewise.
9261         * cfglayout (relink_block_chain): Cast according to the coding
9262         conventions.
9263         (fixup_reorder_chain): Likewise.
9264         (fixup_fallthru_exit_predecessor): Likewise.
9265         * cfgloop.c (glb_enum_p): Likewise.
9266         (get_exit_description): Likewise.
9267         (dump_recorded_exit): Likewise.
9268         * cfgloop.h (enum loop_estimation): Move out of struct scope...
9269         (struct loop): ... from here.
9270         * cfgloopmanip.c (rpe_enum_p): Cast according to the coding
9271         conventions.
9272         * cfgrtl.c (rtl_create_basic_block): Likewise.
9273         (rtl_split_block): Likewise.
9274         (rtl_dump_bb): Likewise.
9275         (cfg_layout_split_block): Likewise.
9276         (init_rtl_bb_info): Use typesafe memory macros.
9277
9278         * graphds.h (struct graph_edge): Renamed edge to graph_edge.
9279         * graphds.h: Updated all usages of edge to graph_edge.
9280         * graphds.c: Likewise.
9281         * cfgloopanal.c: Likewise.
9282
9283 2007-06-05  Ian Lance Taylor  <iant@google.com>
9284
9285         * tree-vrp.c (compare_values_warnv): Check TREE_NO_WARNING on a
9286         PLUS_EXPR or MINUS_EXPR node before setting *strict_overflow_p.
9287         (extract_range_from_assert): Set TREE_NO_WARNING when creating an
9288         expression.
9289         (test_for_singularity): Likewise.
9290
9291 2007-06-05  H.J. Lu  <hongjiu.lu@intel.com>
9292
9293         * config/i386/constraints.md ("Y2"): Replaced by ...
9294         ("Yt"): This.
9295         * config/i386/i386.md: Likewise.
9296         * config/i386/mmx.md: Likewise.
9297         * config/i386/sse.md: Likewise.
9298
9299 2007-06-05  H.J. Lu  <hongjiu.lu@intel.com>
9300
9301         * config/i386/constraints.md ("z"): Replaced by ...
9302         ("Y0"): This.
9303         * config/i386/sse.md (sse4_1_blendvpd): Likewise.
9304         (sse4_1_blendvps): Likewise.
9305         (sse4_1_pblendvb): Likewise.
9306         (sse4_2_pcmpestr): Likewise.
9307         (sse4_2_pcmpestrm): Likewise.
9308         (sse4_2_pcmpestr_cconly): Likewise.
9309         (sse4_2_pcmpistr): Likewise.
9310         (sse4_2_pcmpistrm): Likewise.
9311         (sse4_2_pcmpistr_cconly): Likewise.
9312
9313 2007-06-05  Razya Ladelsky  <razya@il.ibm.com>
9314
9315         * matrix-reorg.c (transform_access_sites): Fix computation.
9316         (transform_allocation_sites): Same.
9317
9318 2007-06-05  Uros Bizjak  <ubizjak@gmail.com>
9319
9320         * config/i386/i386.c (override_options): Use
9321         TARGET_SUBTARGET32_ISA_DEFAULT to select default ix86_isa_flags.
9322
9323 2007-06-05  Uros Bizjak  <ubizjak@gmail.com>
9324
9325         * config/i386/predicates.md (reg_not_xmm0_operand): New predicate.
9326         (nonimm_not_xmm0_operand): Ditto.
9327         * config/i386/sse.md ("sse4_1_blendvpd"): Use "reg_not_xmm0_operand"
9328         as operand[0] and operand[1] predicate.  Use "nonimm_not_xmm0_operand"
9329         as operand[2] predicate.  Require "z" class XMM register for
9330         operand[3].  Adjust asm template.
9331         ("sse4_1_blendvpd"): Ditto.
9332         ("sse4_1_pblendvb"): Ditto.
9333         * config/i386/i386.c (ix86_expand_sse_4_operands_builtin): Do not
9334         force op2 into xmm0 register for variable blend instructions.
9335
9336 2007-06-04  Tom Tromey  <tromey@redhat.com>
9337
9338         * c-tree.h (start_enum): Update.
9339         (build_enumerator): Likewise.
9340         * c-decl.c (enum_next_value): Removed.
9341         (enum_overflow): Likewise.
9342         (start_enum): Add c_enum_contents argument.  Don't use globals.
9343         (build_enumerator): Likewise.
9344         * c-tree.h (struct c_enum_contents): New struct.
9345
9346 2007-06-04  Tom Tromey  <tromey@redhat.com>
9347
9348         * c-common.c (c_common_get_alias_set): Fix indentation.
9349
9350 2007-06-04  Ian Lance Taylor  <iant@google.com>
9351
9352         * tree-vrp.c (adjust_range_with_scev): When loop is not expected
9353         to overflow, reduce overflow infinity to regular infinity.
9354         (vrp_var_may_overflow): New static function.
9355         (vrp_visit_phi_node): Check vrp_var_may_overflow.
9356
9357 2007-06-04  Kazu Hirata  <kazu@codesourcery.com>
9358
9359         * stor-layout.c (layout_type): Remove duplicate code.
9360
9361 2007-06-04  Uros Bizjak  <ubizjak@gmail.com>
9362
9363         PR c/32191
9364         * c-common.c (c_define_builtins): Call targetm.init_builtins ()
9365         before build_common_builtin_nodes ().
9366
9367 2007-06-04  Steve Ellcey  <sje@cup.hp.com>
9368
9369         PR target/31733
9370         * cfgrtl.c (rtl_verify_flow_info): Skip notes when looking for barrier.
9371
9372 2007-06-04  Jan Hubicka  <jh@suse.cz>
9373
9374         * tree-predcom.c (replace_ref_with, initialize_root_vars_lm,
9375         reassociate_to_the_same_stmt): Call build_gimple_modify_stmt
9376         instead of _stat version.
9377
9378 2007-06-03  Zdenek Dvorak  <dvorakz@suse.cz>
9379
9380         PR tree-optimization/32194
9381         * tree-predcom.c (determine_offset): Check that both references have
9382         the same type.
9383
9384 2007-06-03  Zdenek Dvorak  <dvorakz@suse.cz>
9385
9386         * cfgloopmanip.c (remove_path, loopify, duplicate_loop_to_header_edge):
9387         Change dom_bbs to vector.  Add argument to iterate_fix_dominators call.
9388         * loop-unroll.c (unroll_loop_runtime_iterations): Ditto.
9389         * tree-cfg.c (tree_duplicate_sese_region): Change doms to vector.
9390         Add argument to iterate_fix_dominators call.
9391         (remove_edge_and_dominated_blocks): Pass vector to bbs_to_fix_dom.
9392         * gcse.c (hoist_code): Change domby to vector.
9393         * cfghooks.c (make_forwarder_block): Change doms_to_fix to vector.
9394         Add argument to iterate_fix_dominators call.
9395         * loop-doloop.c (doloop_modify): Changed recount_dominator to
9396         recompute_dominator.
9397         * lambda-code.c (perfect_nestify): Ditto.
9398         * cfgloopanal.c: Include graphds.h.
9399         (struct edge, struct vertex, struct graph, dump_graph, new_graph,
9400         add_edge, dfs, for_each_edge, free_graph): Moved to graphds.c.
9401         (mark_irreducible_loops): Use graphds_scc.  Remove argument from
9402         add_edge call.
9403         * graphds.c: New file.
9404         * graphds.h: New file.
9405         * dominance.c: Include vecprim.h, pointer-set.h and graphds.h.
9406         (get_dominated_by, get_dominated_by_region): Change return type to
9407         vector.
9408         (verify_dominators): Recompute all dominators and compare the results.
9409         (recount_dominator): Renamed to ...
9410         (recompute_dominator): ... this.  Do not check that the block is
9411         dominated by entry.
9412         (iterate_fix_dominators): Reimplemented.
9413         (prune_bbs_to_update_dominators, root_of_dom_tree,
9414         determine_dominators_for_sons): New functions.
9415         * et-forest.c (et_root): New function.
9416         * et-forest.h (et_root): Declare.
9417         * Makefile.in (graphds.o): Add.
9418         (cfgloopanal.o): Add graphds.h dependency.
9419         (dominance.o): Add graphds.h, vecprim.h and pointer-set.h dependency.
9420         * basic-block.h (get_dominated_by, get_dominated_by_region,
9421         iterate_fix_dominators): Declaration changed.
9422         (recount_dominator): Renamed to ...
9423         (recompute_dominator): ... this.
9424         * tree-ssa-threadupdate.c (thread_block): Free dominance info.
9425         (thread_through_all_blocks): Do not free dominance info.
9426
9427 2007-06-03  Andreas Schwab  <schwab@suse.de>
9428
9429         * config/m68k/m68k.c (override_options): Don't override
9430         REAL_MODE_FORMAT.
9431         * config/m68k/m68k-modes.def (SF, DF): Define to use
9432         motorola_single_format and motorola_double_format, resp.
9433         * real.c (motorola_single_format): Renamed from
9434         coldfire_single_format.
9435         (motorola_double_format): Renamed from coldfire_double_format.
9436         (encode_ieee_extended): Generate a proper canonical NaN image
9437         respecting canonical_nan_lsbs_set.
9438         (ieee_extended_motorola_format): Set canonical_nan_lsbs_set to
9439         true.
9440         * real.h: Adjust declarations.
9441
9442 2007-06-03  Kaz Kojima  <kkojima@gcc.gnu.org>
9443
9444         PR target/32163
9445         * config/sh/sh.md (symGOT_load): Don't schedule insns when
9446         the symbol is generated with the stack protector.
9447
9448 2007-06-03  Kazu Hirata  <kazu@codesourcery.com>
9449
9450         * config/m68k/m68k.c (m68k_attribute_table): Add "interrupt".
9451         (m68k_get_function_kind): Return m68k_fk_interrupt_handler on
9452         "interrupt".
9453         * doc/extend.texi (interrupt): Mention m68k.
9454
9455 2007-06-02  Uros Bizjak  <ubizjak@gmail.com>
9456
9457         * config/i386/i386.c (ix86_expand_sse_4_operands_builtin): Call
9458         safe_vector_operand() if input operand is VECTOR_MODE_P operand.
9459         (ix86_expand_sse_pcmpestr): Do not check operands for
9460         "register_operand", when insn operand predicate is "register_operand".
9461         (ix86_expand_sse_pcmpistr): Ditto.
9462
9463 2007-06-02  H.J. Lu  <hongjiu.lu@intel.com>
9464             Uros Bizjak  <ubizjak@gmail.com>
9465
9466         * config/i386/i386.h (enum reg_class) [SSE_FIRST_REG]: New.
9467         (SSE_CLASS_P): Use reg_class_subset_p between SSE_REGS.
9468         (REG_CLASS_NAMES): Add "FIRST_SSE_REG" string.
9469         (REG_CLASS_CONTENTS): Add members of FIRST_SSE_REG class.
9470         * config/i386/constraints.md ("z"): New register constraint
9471         for members of SSE_FIRST_REG class.
9472         * config/i386/i386-modes.def (CCA, CCC, CCO, CCS): New compare modes.
9473         * config/i386/i386.c (regclass_map): Change class of %xmm0 to
9474         SSE_FIRST_REG class.
9475         (put_condition_code) [EQ, NE]: Output suffixes for new compare modes.
9476         (ix86_cc_modes_compatible): Handle CCA, CCC, CCO and CCS modes.
9477         (IX86_BUILTIN_PCMPESTRI128): New for SSE4.2.
9478         (IX86_BUILTIN_PCMPESTRM128): Likewise.
9479         (IX86_BUILTIN_PCMPESTRA128): Likewise.
9480         (IX86_BUILTIN_PCMPESTRC128): Likewise.
9481         (IX86_BUILTIN_PCMPESTRO128): Likewise.
9482         (IX86_BUILTIN_PCMPESTRS128): Likewise.
9483         (IX86_BUILTIN_PCMPESTRZ128): Likewise.
9484         (IX86_BUILTIN_PCMPISTRI128): Likewise.
9485         (IX86_BUILTIN_PCMPISTRM128): Likewise.
9486         (IX86_BUILTIN_PCMPISTRA128): Likewise.
9487         (IX86_BUILTIN_PCMPISTRC128): Likewise.
9488         (IX86_BUILTIN_PCMPISTRO128): Likewise.
9489         (IX86_BUILTIN_PCMPISTRS128): Likewise.
9490         (IX86_BUILTIN_PCMPISTRZ128): Likewise.
9491         (struct builtin_description): Change "flag" field to unsigned.
9492         (bdesc_pcmpestr): New builtin description table.
9493         (bdesc_pcmpistr): Likewise.
9494         (ix86_init_mmx_sse_builtins): Define int_ftype_v16qi_int_v16qi_int_int,
9495         v16qi_ftype_v16qi_int_v16qi_int_int and int_ftype_v16qi_v16qi_int.
9496         Initialize pcmp[ei]str[im] insns for SSE4.2.
9497         (ix86_expand_sse_pcmpestr): New subroutine of ix86_expand_builtin.
9498         (ix86_expand_sse_pcmpistr): Likewise.
9499         (ix86_expand_builtin): Expand pcmp[ei]str[im] builtins for SSE4.2.
9500         * config/i386/i386.md (UNSPEC_PCMPESTR): New for SSE4.2.
9501         (UNSPEC_PCMPISTR): Likewise.
9502         * config/i386/sse.md (sse4_2_pcmpestr): New insn patern and splitter.
9503         (sse4_2_pcmpestri):New isns pattern.
9504         (sse4_2_pcmpestrm): Likewise.
9505         (sse4_2_pcmpestr_cconly): Likewise.
9506         (sse4_2_pcmpistr): New insn patern and splitter.
9507         (sse4_2_pcmpistri):New isns pattern.
9508         (sse4_2_pcmpistrm): Likewise.
9509         (sse4_2_pcmpistr_cconly): Likewise.
9510         * config/i386/smmintrin.h: Enable pcmp[ei]str[im] intrinsics
9511         in SSE4.2.
9512
9513 2007-06-01  David Daney  <ddaney@avtrex.com>
9514
9515         * config/mips/mips.c (mips_output_mi_thunk): Only load gp if not
9516         LOADGP_ABSOLUTE and not binds_local_p.
9517
9518 2007-06-01  Geoffrey Keating  <geoffk@apple.com>
9519
9520         * config/darwin.h (LINK_SPEC): Pass -fpie through to the linker.
9521
9522 2007-06-01  Ian Lance Taylor  <iant@google.com>
9523
9524         * tree-vrp.c (compare_name_with_value): Always set
9525         used_strict_overflow if we get a result from the variable itself.
9526
9527 2007-06-01  Ian Lance Taylor  <iant@google.com>
9528
9529         PR rtl-optimization/31455
9530         * lower-subreg.c (find_decomposable_subregs): Don't decompose
9531         subregs which have a cast between modes which are not tieable.
9532
9533 2007-06-01  Uros Bizjak  <ubizjak@gmail.com>
9534
9535         * expr.c (force_operand) [DIV, MOD, UDIV, UMOD, ASHIFTRT]: Remove
9536         breaks after return statements.
9537
9538 2007-06-01  Kaz Kojima  <kkojima@gcc.gnu.org>
9539
9540         * config/sh/sh.c (fpscr_set_from_mem): Call get_free_reg
9541         only after no_new_pseudos.
9542
9543 2007-05-31  Eric Christopher  <echristo@apple.com>
9544
9545         * expr.c (convert_move): Assert that we don't have a BLKmode
9546         operand.
9547         (store_expr): Handle BLKmode moves by calling emit_block_move.
9548
9549 2007-05-31  Daniel Berlin  <dberlin@dberlin.org>
9550
9551         * c-typeck.c (build_indirect_ref): Include type in error message.
9552         (build_binary_op): Pass types to binary_op_error.
9553         * c-common.c (binary_op_error): Take two type arguments, print out
9554         types with error.
9555         * c-common.h (binary_op_error): Update prototype.
9556
9557 2007-05-31  H.J. Lu  <hongjiu.lu@intel.com>
9558
9559         * config/i386/i386.c: Correct coments on -mno-sse4.
9560
9561 2007-05-31  H.J. Lu  <hongjiu.lu@intel.com>
9562
9563         * config.gcc (i[34567]86-*-*): Add nmmintrin.h to extra_headers.
9564         (x86_64-*-*): Likewise.
9565         * config/i386/i386.c (OPTION_MASK_ISA_MMX_UNSET): New.
9566         (OPTION_MASK_ISA_3DNOW_UNSET): Likewise.
9567         (OPTION_MASK_ISA_SSE_UNSET): Likewise.
9568         (OPTION_MASK_ISA_SSE2_UNSET): Likewise.
9569         (OPTION_MASK_ISA_SSE3_UNSET): Likewise.
9570         (OPTION_MASK_ISA_SSSE3_UNSET): Likewise.
9571         (OPTION_MASK_ISA_SSE4_1_UNSET): Likewise.
9572         (OPTION_MASK_ISA_SSE4_2_UNSET): Likewise.
9573         (OPTION_MASK_ISA_SSE4): Likewise.
9574         (OPTION_MASK_ISA_SSE4_UNSET): Likewise.
9575         (OPTION_MASK_ISA_SSE4A_UNSET): Likewise.
9576         (ix86_handle_option): Use OPTION_MASK_ISA_*_UNSET.  Handle SSE4.2.
9577         (override_options): Support SSE4.2.
9578         (ix86_build_const_vector): Support SImode and DImode.
9579         (ix86_build_signbit_mask): Likewise.
9580         (ix86_expand_int_vcond): Support V2DImode.
9581         (IX86_BUILTIN_CRC32QI): New for SSE4.2.
9582         (IX86_BUILTIN_CRC32HI): Likewise.
9583         (IX86_BUILTIN_CRC32SI): Likewise.
9584         (IX86_BUILTIN_CRC32DI): Likewise.
9585         (IX86_BUILTIN_PCMPGTQ): Likewise.
9586         (bdesc_crc32): Likewise.
9587         (bdesc_sse_3arg): Likewise.
9588         (ix86_expand_crc32): Likewise.
9589         (ix86_init_mmx_sse_builtins): Support SSE4.2.
9590         (ix86_expand_builtin): Likewise.
9591         * config/i386/i386.h (TARGET_CPU_CPP_BUILTINS): Define
9592         __SSE4_2__ for -msse4.2.
9593         * config/i386/i386.md (UNSPEC_CRC32): New for SSE4.2.
9594         (CRC32MODE): Likewise.
9595         (crc32modesuffix): Likewise.
9596         (crc32modeconstraint): Likewise.
9597         (sse4_2_crc32<mode>): Likewise.
9598         (sse4_2_crc32di): Likewise.
9599         * config/i386/i386.opt (msse4.2): New for SSE4.2.
9600         (msse4): Likewise.
9601         * config/i386/nmmintrin.h: New. The dummy SSE4.2 intrinsic header file.
9602         * config/i386/smmintrin.h: Add SSE4.2 intrinsics.
9603         * config/i386/sse.md (sse4_2_gtv2di3): New pattern for SSE4.2.
9604         (vcond<mode>): Use SSEMODEI instead of SSEMODE124.
9605         (vcondu<mode>): Likewise.
9606         * doc/extend.texi: Document SSE4.2 built-in functions.
9607         * doc/invoke.texi: Document -msse4.2/-msse4.
9608
9609 2007-05-31  Zdenek Dvorak  <dvorakz@suse.cz>
9610
9611         PR tree-optimization/32160
9612         * tree-predcom.c (predcom_tmp_var): New function.  Mark created
9613         variable as gimple reg.
9614         (initialize_root_vars, initialize_root_vars_lm): Use predcom_tmp_var.
9615
9616 2007-05-31  Kazu Hirata  <kazu@codesourcery.com>
9617
9618         * gcc.c (main): Don't consider linker options when issuing the
9619         warning about a linker input file not being used.
9620
9621 2007-05-30  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
9622
9623         * tree-vrp.c (compare_names): Initialize sop.
9624
9625 2007-05-30  Dirk Mueller  <dmueller@suse.de>
9626
9627         * cgraphunit.c (cgraph_analyze_function): Remove
9628         computation of inline parameters.
9629
9630 2007-05-30  Uros Bizjak  <ubizjak@gmail.com>
9631
9632         * config/i386/darwin.h (TARGET_SUBTARGET_DEFAULT): Undef before define.
9633
9634 2007-05-30  Richard Sandiford  <richard@codesourcery.com>
9635
9636         * config.gcc (arm-wrs-vxworks): Remove dbxelf.h from tm_file.
9637         Add vx-common.h.  Include vxworks.h between vx-common.h and
9638         arm/vxworks.h.
9639         * config/vx-common.h (DWARF2_UNWIND_INFO): Undefine before
9640         redefining.
9641         * config/vxworks.h (TARGET_ASM_CONSTRUCTOR): Likewise.
9642         (TARGET_ASM_DESTRUCTOR): Likewise.
9643         * config/arm/vxworks.h (TARGET_OS_CPP_BUILTINS): Check arm_arch_xscale
9644         instead of arm_is_xscale.  Use VXWORKS_OS_CPP_BUILTINS.
9645         (OVERRIDE_OPTIONS, SUBTARGET_CPP_SPEC): Define.
9646         (CC1_SPEC): Add -tstrongarm.  Line up backslashes.
9647         (VXWORKS_ENDIAN_SPEC): Define.
9648         (ASM_SPEC): Add VXWORKS_ENDIAN_SPEC.
9649         (LIB_SPEC, STARTFILE_SPEC, ENDFILE_SPEC): Redefine to their
9650         VXWORKS_* equivalents.
9651         (LINK_SPEC): Likewise, but add VXWORKS_ENDIAN_SPEC.
9652         (ASM_FILE_START): Delete.
9653         (TARGET_VERSION): Reformat.
9654         (FPUTYPE_DEFAULT, FUNCTION_PROFILER): Define.
9655         (DEFAULT_STRUCTURE_SIZE_BOUNDARY): Define.
9656         * config/arm/t-vxworks (LIB1ASMSRC, LIB1ASMFUNCS): Define.
9657         (FPBIT, DPBIT): Define.
9658         (fp-bit.c, dp-bit.c): New rules.
9659         (MULTILIB_OPTIONS): Add strongarm, -mrtp and -mrtp/-fPIC multilibs.
9660         (MULTILIB_MATCHES, MULTILIB_EXCEPTIONS): Define.
9661         * config/arm/arm-protos.h (arm_emit_call_insn): Declare.
9662         * config/arm/arm.h: Include vxworks-dummy.h.
9663         * config/arm/arm.c (arm_elf_asm_constructor, arm_elf_asm_destructor):
9664         Mark with ATTRIBUTE_UNUSED.
9665         (arm_override_options): Do not allow VxWorks RTP PIC to be used
9666         for Thumb.  Force r9 to be the PIC register for VxWorks RTPs and
9667         make it incompatible with -msingle-pic-base.
9668         (arm_function_ok_for_sibcall): Return false for calls that might
9669         go through a VxWorks PIC PLT entry.
9670         (require_pic_register): New function, split out from...
9671         (legitimize_pic_address): ...here.  Do not use GOTOFF accesses
9672         for VxWorks RTPs.
9673         (arm_load_pic_register): Handle the VxWorks RTP initialization
9674         sequence.  Use pic_reg as a shorthand for cfun->machine->pic_reg.
9675         (arm_emit_call_insn): New function.
9676         (arm_assemble_integer): Do not use GOTOFF accesses for VxWorks RTP.
9677         * config/arm/arm.md (UNSPEC_PIC_OFFSET): New unspec number.
9678         (pic_offset_arm): New pattern.
9679         (call, call_value): Use arm_emit_call_insn.
9680         (call_internal, call_value_internal): New expanders.
9681         * config/arm/lib1funcs.asm (__PLT__): Define to empty for
9682         VxWorks unless __PIC__.
9683
9684 2007-05-30  Eric Christopher  <echristo@gmail.com>
9685
9686         * genrecog.c: Include regs.h in generated file.
9687         * genemit.c: Ditto. Fix up formatting.
9688         * config/mn10300/constraints.md: New.
9689         * config/mn10300/mn10300.md: Include.
9690         * config/mn10300/mn10300.c(mn10300_secondary_reload_class):
9691         Fix up for removed macro.
9692         * config/mn10300/predicates.md (call_address_operand):  Ditto.
9693         * config/mn10300/mn10300.h (REG_CLASS_FROM_LETTER): Delete.
9694         (CONST_OK_FOR_I): Ditto.
9695         (CONST_OK_FOR_J): Ditto.
9696         (CONST_OK_FOR_K): Ditto.
9697         (CONST_OK_FOR_L): Ditto.
9698         (CONST_OK_FOR_M): Ditto.
9699         (CONST_OK_FOR_N): Ditto.
9700         (CONST_DOUBLE_OK_FOR_LETTER_P): Ditto.
9701         (OK_FOR_Q): Ditto.
9702         (OK_FOR_R): Ditto.
9703         (OK_FOR_T): Ditto.
9704         (EXTRA_CONSTRAINT): Ditto.
9705
9706 2007-05-30 Uros Bizjak <ubizjak@gmail.com>
9707
9708         * config/i386/i386.h (MASK_64BIT, MASK_MMX, MASK_3DNOW*, MASK_SSE*):
9709         Remove defines.
9710         * config/i386/biarch.h (TARGET_64BIT_DEFAULT): Define to
9711         OPTION_MASK_ISA_64BIT.
9712         * config/i386/i386.c: Rename MASK_* macros to OPTION_MASK_ISA_*.
9713
9714 2007-05-30  Richard Guenther  <rguenther@suse.de>
9715
9716         PR middle-end/32152
9717         * gimplify.c (gimplify_omp_atomic_pipeline): Use correct
9718         types for comparison.
9719         * fold-const.c (fold_comparison): Call maybe_canonicalize_comparison
9720         with original typed arguments.
9721         * config/i386/i386.c (ix86_gimplify_va_arg): Fix type mismatches.
9722
9723 2007-05-30  Jakub Jelinek  <jakub@redhat.com>
9724
9725         PR tree-optimization/31769
9726         * except.c (duplicate_eh_regions): Clear prev_try if
9727         ERT_MUST_NOT_THROW region is inside of ERT_TRY region.
9728
9729 2007-05-30  Zdenek Dvorak  <dvorakz@suse.cz>
9730
9731         * tree-scalar-evolution.c (scev_const_prop): Do not create labels.
9732         * tree-ssa-sink.c (statement_sink_location): Return basic block and
9733         bsi of the location where statements should be inserted.
9734         (sink_code_in_bb): Take bsi from statement_sink_location.
9735         * lambda-code.c (lambda_loopnest_to_gcc_loopnest): Use bsi_after_labels
9736         instead of bsi_start.
9737         * tree-profile.c (tree_gen_ic_func_profiler): Pass BSI_NEW_STMT to
9738         bsi_insert_after.
9739         * tree-cfg.c (bsi_move_after): Pass BSI_NEW_STMT to bsi_insert_after.
9740         (bsi_move_before): Document inconsistency with bsi_move_after.
9741         (tree_redirect_edge_and_branch): Do not create labels if not necessary.
9742
9743 2007-05-30 Uros Bizjak <ubizjak@gmail.com>
9744
9745         * config/i386/i386.h (TARGET_ABM): New define.
9746         (TARGET_POPCNT): Ditto.
9747         (TARGET_64BIT, TARGET_MMX, TARGET_3DNOW, TARGET_3DNOW_A, TARGET_SSE*):
9748         New temporary defines to redefine from OPTION_ISA_* defines.
9749         (MASK_64BIT, MASK_MMX, MASK_3DNOW, MASK_3DNOW_A, MASK_SSE*):
9750         New temporary defines to redefine from OPTION_MASK_ISA_* defines.
9751         (ix86_isa_flags): New extern int declaration.
9752         (TARGET_SUBTARGET_DEFAULT): New define.
9753         (TARGET_SUBTARGET_ISA_DEFAULT): Ditto.
9754         (TARGET_SUBTARGET32_DEFAULT): Ditto.
9755         (TARGET_SUBTARGET32_ISA_DEFAULT): Ditto.
9756         (TARGET_SUBTARGET64_ISA_DEFAULT): Ditto.
9757         * config/i386/unix.h: Undef TARGET_SUBTARGET_DEFAULT before define.
9758         * config/i386/darwin.h: Change TARGET_64BIT define to
9759         OPTION_ISA_64BIT.
9760
9761         * config/i386/i386.opt (m3dnowa): Define as undocumented option
9762         using existing "ix86_isa_flags" varible.
9763         (m32, m64): Use existing "ix86_isa_flags" variable.
9764         (mmmx, m3dnow): Ditto.
9765         (msse, msse2, msse3, mssse3, msse4.1, msse4a): Ditto.
9766         (mabm): Define as non-negative option using "x86_abm" variable.
9767         (mpopcnt): Define as non-negative option using "x86_popcnt" variable.
9768
9769         * config/i386/i386.c (ix86_arch_features) [X86_ARCH_CMOVE]:
9770         Rewrite feature test bitmap.
9771         (ix86_isa_flags): New initialized global int varible.
9772         (ix86_isa_flags_explicit): New static int variable.
9773         (ix86_handle_option): Set "ix86_isa_flags_explicit" when mmmx, m3dnow,
9774         msse, msse2, msse3, msse4.1 and msse4a option is processed.  Change
9775         i86_isa_flags and ix86_isa_flags_explicit, not target_flags and
9776         target_flags_explicit.
9777         (override_options): Remove "target_enable" and "target_disable" fields
9778         from "struct ptt". Update processor_target_table accordingly. Remove
9779         PTA_PREFETCH_SSE from processor_alias_table entry if PTE_SSE is
9780         defined and rearrange PTA_* bits.  Use "ix86_isa_flags" instead of
9781         "target_flags" and "ix86_isa_flags_explicit" instead of
9782         "target_flags_explicit" when masked with MASK_64BIT, MASK_MMX,
9783         MASK_3DNOW, MASK_3DNOW_A or MASK_SSE*.  Set "x86_abm" to true when
9784         PTA_ABM is set in processor_alias_table flags entry.  Set "x86_popcnt"
9785         to true when either of PTA_POPCNT or PTA_ABM is set in
9786         processor_alias_table flags entry.  Set "x86_prefetch_sse" to true
9787         when either of PTA_PREFETCH_SSE or PTA_SSE is set in
9788         processor_alias_table flags entry.  Remove handling of
9789         "target_enable" and "target_disable" fields of processor_target_table.
9790         Mask "target_flags" with TARGET_SUBTARGET32_DEFAULT for 32-bit
9791         targets or with TARGET_SUBTARGET64_DEFAULT for 64-bit targets.
9792         Mask "ix86_isa_flags" with TARGET_SUBTARGET32_ISA_DEFAULT for 32-bit
9793         targets or with TARGET_SUBTARGET64_ISA_DEFAULT for 64-bit targets.
9794         (def_builtin): Mask "mask" variable with "ix86_isa_flags", not
9795         "target_flags".
9796         (TARGET_DEFAULT_TARGET_FLAGS): Do not include TARGET_64BIT_DEFAULT.
9797
9798 2007-05-29  David Daney  <ddaney@avtrex.com>
9799
9800         PR gcc/31975
9801         * config/mips/mips.c (mips_output_mi_thunk): Emit
9802         NOTE_INSN_PROLOGUE_END at beginning of the thunk.
9803
9804 2007-05-29  Hui-May Chang  <hm.chang@apple.com>
9805         * config/i386/i386.c (ix86_function_regparm): Added checking of
9806         ix86_force_align_arg_pointer to determine the number of
9807         register parameters.
9808
9809 2007-05-29  Zdenek Dvorak  <dvorakz@suse.cz>
9810
9811         * tree-vectorizer.h (DR_MISALIGNMENT): Cast aux to integer.
9812         (SET_DR_MISALIGNMENT): New.
9813         * tree-vect-analyze.c (vect_compute_data_ref_alignment,
9814         vect_update_misalignment_for_peel, vect_enhance_data_refs_alignment):
9815         Use SET_DR_MISALIGNMENT.
9816         * tree-predcom.c (split_data_refs_to_components): Cast dr->aux from
9817         pointer.
9818         * tree-data-ref.c (create_data_ref, compute_all_dependences,
9819         find_loop_nest): Export.
9820         * tree-data-ref.h (struct data_reference): Change aux field to pointer.
9821         (create_data_ref, compute_all_dependences, find_loop_nest): Declare.
9822         * tree-ssa-loop-prefetch.c: Include tree-data-ref.h.
9823         (L1_CACHE_SIZE_BYTES, L2_CACHE_SIZE_BYTES, NONTEMPORAL_FRACTION):
9824         New macros.
9825         (struct mem_ref): Add field reuse_distance.
9826         (find_or_create_group, record_ref): Use XNEW instead of xcalloc.
9827         Initialize reuse_distance field.
9828         (issue_prefetch_ref): Select temporality of prefetch according to
9829         reuse_distance.
9830         (volume_of_references, volume_of_dist_vector, add_subscript_strides,
9831         self_reuse_distance, determine_loop_nest_reuse): New functions.
9832         (loop_prefetch_arrays): Call determine_loop_nest_reuse.
9833         (tree_ssa_prefetch_arrays): Dump L2 cache size.
9834         * Makefile.in (tree-ssa-loop-prefetch.o): Add TREE_DATA_REF_H
9835         dependency.
9836
9837 2007-05-29  Daniel Berlin  <dberlin@dberlin.org>
9838
9839         * tree-ssa-alias.c: Add aliasing overview.
9840
9841 2007-05-29  Zuxy Meng  <zuxy.meng@gmail.com>
9842             Danny Smith  <dannysmith@users.sourceforge.net>
9843
9844         PR target/29498
9845         * config/i386/t-crtfm: Compile crtfastmath.o with
9846         -minline-all-stringops.
9847         * config/i386/cygwin.h (ENDFILE_SPECS): Add crtfastmath.o.
9848         * config/i386/mingw32.h (ENDFILE_SPECS): Add crtfastmath.o.
9849
9850 2007-05-28  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
9851
9852         * doc/md.texi: Document constraints on HP PA-RISC.
9853
9854         * pa/constraints.md: New file.
9855         * pa.md: Include constraints.md.
9856         * pa.c (cint_ok_for_move): Avoid using CONST_OK_FOR_LETTER_P.
9857         (integer_store_memory_operand, ldil_cint_p): New functions.
9858         * pa-protos.h (integer_store_memory_operand, ldil_cint_p): Declare.
9859         * pa.h (CONST_OK_FOR_LETTER_P, CONST_DOUBLE_OK_FOR_LETTER_P,
9860         IS_RELOADING_PSEUDO_P, EXTRA_CONSTRAINT): Remove.
9861         * pa32-regs.h (REG_CLASS_FROM_LETTER): Remove.
9862         * pa64-regs.h (REG_CLASS_FROM_LETTER): Remove.
9863
9864 2007-05-28  Andrew Pinski  <Andrew_pinski@playstation.sony.com>
9865
9866         PR c/31339
9867         * c-typeck.c (build_unary_op <case PREINCREMENT_EXPR,
9868         case POSTINCREMENT_EXPR, case PREDECREMENT_EXPR,
9869         case POSTDECREMENT_EXPR>): Return the error_mark_node
9870         if either the real or imaginary parts would an
9871         error_mark_node.
9872
9873 2007-05-28  Daniel Berlin  <dberlin@dberlin.org>
9874
9875         * tree-ssa-dce.c (eliminate_unnecessary_stmts): Release LHS SSA
9876         name when we remove it from a call.
9877
9878 2007-05-28  Kazu Hirata  <kazu@codesourcery.com>
9879
9880         * targhooks.c (default_narrow_bitfield): Remove.
9881         * targhooks.h: Remove the prototype for
9882         default_narrow_bitfield.
9883
9884         * langhooks-def.h: Remove the prototype for
9885         hook_get_alias_set_0.
9886         * langhooks.c (hook_get_alias_set_0): Remove.
9887
9888         * global.c (EXECUTE_IF_CONFLICT): Remove.
9889
9890 2007-05-28  Andrew Pinski  <andrew_pinski@playstation.sony.com>
9891
9892         PR tree-opt/32100
9893         * fold-const.c (tree_expr_nonnegative_warnv_p): Don't
9894         return true when truth_value_p is true and the type
9895         is of signed:1.
9896
9897 2007-05-28  Gerald Pfeifer  <gerald@pfeifer.com>
9898
9899         * doc/install.texi (Prerequisites): We no longer require Autoconf
9900         2.13 for the top-level.
9901
9902 2007-05-28  Uros Bizjak  <ubizjak@gmail.com>
9903
9904         * target/i386/i386.c (ix86_expand_vector_move): Expand unaligned
9905         memory access via x86_expand_vector_move_misalign() only for
9906         TImode values on 32-bit targets.
9907
9908 2007-05-28  Razya Ladelsky  <razya@il.ibm.com>
9909
9910         * matrix-reorg.c: New file. Implement matrix flattening and
9911         transposing optimization.
9912         * tree-pass.h: Add matrix reorg pass.
9913         * common.opt: Add fipa-mreorg flag.
9914         * Makefile.in: Add matrix-reorg.c.
9915         * passes.c: Add matrix reorg pass.
9916         * varpool.c (add_new_static_var): New function.
9917         * cgraph.h (add_new_static_var): Declare.
9918
9919 2007-05-27  Eric Christopher  <echristo@apple.com>
9920
9921         * config/rs6000/rs6000.c (rs6000_emit_prologue): Update
9922         sp_offset depending on stack size. Save r12 depending
9923         on registers we're saving later.
9924         (rs6000_emit_epilogue): Update sp_offset depending only
9925         on stack size.
9926
9927 2007-05-27  Zdenek Dvorak  <dvorakz@suse.cz>
9928
9929         * tree-vrp.c (execute_vrp): Do not check whether current_loops == NULL.
9930         * tree-chrec.c (evolution_function_is_invariant_rec_p): Ditto.
9931         * ifcvt.c (if_convert): Ditto.
9932         * tree-ssa-threadupdate.c (thread_block): Ditto.
9933         (thread_through_all_blocks): Ditto.  Assert that loops were analysed.
9934         * tree-ssa-loop-manip.c (rewrite_into_loop_closed_ssa,
9935         verify_loop_closed_ssa): Check number_of_loops instead of
9936         current_loops.
9937         * predict.c (tree_estimate_probability): Ditto.
9938         * tree-if-conv.c (main_tree_if_conversion): Ditto.
9939         * tree-ssa-loop-ch.c (copy_loop_headers): Ditto.
9940         * modulo-sched.c (sms_schedule): Ditto.
9941         * tree-scalar-evolution.c (scev_const_prop): Ditto.
9942         (scev_finalize): Do not do anything if scev analysis was not
9943         initialized.
9944         * cfgloopanal.c (mark_irreducible_loops): Do not check whether
9945         current_loops == NULL.
9946         (mark_loop_exit_edges): Check number_of_loops instead of current_loops.
9947         * loop-init.c (loop_optimizer_init): Do not free current_loops when
9948         there are no loops.
9949         (loop_optimizer_finalize): Assert that loops were analyzed.
9950         (rtl_move_loop_invariants, rtl_unswitch, rtl_unroll_and_peel_loops,
9951         rtl_doloop): Check number_of_loops instead of current_loops.
9952         * tree-ssa-loop.c (tree_loop_optimizer_init): Do not check whether
9953         current_loops == NULL.
9954         (tree_ssa_loop_init, tree_ssa_loop_im, tree_ssa_loop_unswitch,
9955         gate_tree_vectorize tree_linear_transform, check_data_deps,
9956         tree_ssa_loop_ivcanon, tree_ssa_empty_loop, tree_ssa_loop_bounds,
9957         tree_complete_unroll, tree_ssa_loop_prefetch, tree_ssa_loop_ivopts):
9958         Check number_of_loops instead of current_loops.
9959         (tree_ssa_loop_done): Do not check whether current_loops == NULL.
9960         * tree-ssa-pre.c (fini_pre): Do not take do_fre argument.  Always
9961         free loops if available.
9962         (execute_pre): Do not pass do_fre to fini_pre.
9963
9964 2007-05-27  Tobias Burnus  <burnus@net-b.de>
9965
9966         PR middle-end/32083
9967         * real.c (mpfr_from_real): Fix sign of -Inf.
9968
9969 2007-05-27  H.J. Lu  <hongjiu.lu@intel.com>
9970
9971         * tree-vect-transform.c (vectorizable_conversion): Initialize
9972         tree_code variables to ERROR_MARK.
9973         (vectorizable_type_demotion): Likewise.
9974         (vectorizable_type_promotion): Likewise.
9975
9976 2007-05-26  Uros Bizjak  <ubizjak@gmail.com>
9977
9978         PR target/32065
9979         * config/i386/i386.md (movti): Handle push operands via
9980         ix86_expand_push().
9981
9982 2007-05-26  Kazu Hirata  <kazu@codesourcery.com>
9983
9984         * basic-block.h: Remove the prototype for merge_seq_blocks.
9985         * cfgcleanup.c (merge_seq_blocks): Remove.
9986
9987         * tree-flow.h: Remove the prototype for is_aliased_with.
9988         * tree-ssa-alias.c (is_aliased_with): Remove.
9989
9990 2007-05-26  H.J. Lu  <hongjiu.lu@intel.com>
9991
9992         * config/i386/i386-protos.h (ix86_expand_sse4_unpack): New.
9993
9994         * config/i386/i386.c (ix86_expand_sse4_unpack): New.
9995
9996         * config/i386/sse.md (vec_unpacku_hi_v16qi): Call
9997         ix86_expand_sse4_unpack if SSE4.1 is enabled.
9998         (vec_unpacks_hi_v16qi): Likewise.
9999         (vec_unpacku_lo_v16qi): Likewise.
10000         (vec_unpacks_lo_v16qi): Likewise.
10001         (vec_unpacku_hi_v8hi): Likewise.
10002         (vec_unpacks_hi_v8hi): Likewise.
10003         (vec_unpacku_lo_v8hi): Likewise.
10004         (vec_unpacks_lo_v8hi): Likewise.
10005         (vec_unpacku_hi_v4si): Likewise.
10006         (vec_unpacks_hi_v4si): Likewise.
10007         (vec_unpacku_lo_v4si): Likewise.
10008         (vec_unpacks_lo_v4si): Likewise.
10009
10010 2007-05-26  Kazu Hirata  <kazu@codesourcery.com>
10011
10012         * c-typeck.c, config/arm/arm.c, config/darwin.c,
10013         config/sh/symbian.c, gcc.c, ipa-cp.c, ipa-inline.c, loop-iv.c,
10014         omega.c, tree-ssa-loop-niter.c, treestruct.def: Fix typos and
10015         follow spelling conventions in various
10016         warning/error/diagnostic messages.
10017
10018         * config/i386/i386.c, config/pa/pa.c, config/spu/spu.c,
10019         df-problems.c, df-scan.c, domwalk.c, ebitmap.c, ebitmap.h,
10020         fold-const.c, gcc.c, ipa-type-escape.c, omega.c, omega.h,
10021         tree-ssa-coalesce.c, tree-ssa-live.c, tree-ssa-structalias.c,
10022         tree-vrp.c: Fix comment typos.  Follow spelling conventions.
10023         * doc/tm.texi: Follow spelling conventions.
10024
10025 2007-05-25  Andrew Pinski  <andrew_pinski@playstation.sony.com>
10026
10027         PR tree-opt/32090
10028         * tree-ssa-forwprop.c
10029         (forward_propagate_addr_into_variable_array_index): Remove
10030         the lhs argument.  Use the type of def_rhs instead of lhs.
10031         (forward_propagate_addr_expr_1): Update use of
10032         forward_propagate_addr_into_variable_array_index.
10033
10034 2007-05-25  Sandra Loosemore  <sandra@codesourcery.com>
10035             Nigel Stephens  <nigel@mips.com>
10036
10037         * config/mips/mips.c (mips_attribute_table): Add "near" and "far"
10038         function attributes, "far" being an alias for "long_call".
10039         (TARGET_COMP_TYPE_ATTRIBUTES): Define as mips_comp_type_attributes.
10040         (mips_near_type_p, mips_far_type_p): New.
10041         (mips_comp_type_attributes): New function to check that attributes
10042         attached to a function type are compatible.
10043         (mips_output_mi_thunk): Test SYMBOL_REF_LONG_CALL_P() rather than
10044         TARGET_LONG_CALLS when deciding whether we can do a direct sibcall
10045         to the target function of the thunk.
10046         (mips_encode_section_info): Check for "near" and "far" function
10047         attributes, and always set the SYMBOL_FLAG_LONG_CALL bit explicitly.
10048
10049         * config/mips/predicates.md (const_call_insn_operand): Test only
10050         SYMBOL_REF_LONG_CALL_P() and not TARGET_LONG_CALLS.
10051
10052         * doc/extend.texi (Function Attributes): Document MIPS "near" and
10053         "far" attributes.
10054
10055         * testsuite/gcc.target/mips/near-far-1.c:  New test case.
10056         * testsuite/gcc.target/mips/near-far-2.c:  New test case.
10057         * testsuite/gcc.target/mips/near-far-3.c:  New test case.
10058         * testsuite/gcc.target/mips/near-far-4.c:  New test case.
10059
10060 2007-05-25  Eric Christopher  <echristo@apple.com>
10061
10062         * config.gcc: Add i386/t-fprules-softfp64 and soft-fp/t-softfp
10063         to x86-darwin configurations.
10064         * config/i386/t-darwin: Add softfp support.
10065         * config/i386/t-darwin64: Ditto.
10066         * config/i386/sfp-machine.h: If mach then don't use
10067         aliasing, emit a stub to call.
10068
10069 2007-05-25  Kazu Hirata  <kazu@codesourcery.com>
10070
10071         * cfglayout.c, cgraphunit.c, config/avr/avr.c, fold-const.c,
10072         haifa-sched.c, optabs.h, tree-affine.c, tree-data-ref.c,
10073         tree-predcom.c, tree-ssa-alias-warnings.c,
10074         tree-ssa-forwprop.c, tree-vect-analyze.c, tree-vrp.c: Fix
10075         comment typos.  Follow spelling conventions.
10076         * doc/cpp.texi, doc/invoke.texi: Fix typos.
10077
10078 2007-05-26  Uros Bizjak  <ubizjak@gmail.com>
10079
10080         PR target/32065
10081         * target/i386/i386.c (ix86_expand_vector_move): Force SUBREGs of
10082         constants into memory.  Expand unaligned memory references for
10083         SSE modes via x86_expand_vector_move_misalign() function.
10084
10085 2007-05-25  Uros Bizjak  <ubizjak@gmail.com>
10086
10087         * config/i386/sse.md (*vec_extractv2di_1_sse2): Do not calculate
10088         "memory" attribute for "sseishft" type insn without operands[2].
10089
10090 2007-05-25  Dirk Mueller  <dmueller@suse.de>
10091             Marcus Meissner <meissner@suse.de>
10092
10093         * doc/extend.texi (alloc_size): New attribute.
10094         * c-common.c (handle_alloc_size_attribute): New.
10095         * tree-object-size.c (alloc_object_size): Use alloc_size
10096         attribute, if available.
10097
10098 2007-05-25  H.J. Lu  <hongjiu.lu@intel.com>
10099
10100         * config/i386/i386.c (__builtin_ia32_vec_ext_v2df): Mark it
10101         with MASK_SSE2.
10102         (__builtin_ia32_vec_ext_v2di): Likewise.
10103         (__builtin_ia32_vec_ext_v4si): Likewise.
10104         (__builtin_ia32_vec_ext_v8hi): Likewise.
10105         (__builtin_ia32_vec_ext_v16qi): Likewise.
10106         (__builtin_ia32_vec_set_v8hi): Likewise.
10107
10108 2007-05-25  H.J. Lu  <hongjiu.lu@intel.com>
10109
10110         * config/i386/sse.md (*vec_extractv2di_1_sse2): Correct shift.
10111
10112 2007-05-25  Richard Sandiford  <richard@codesourcery.com>
10113
10114         * config/arm/arm-protos.h (arm_encode_call_attribute): Delete.
10115         (arm_is_longcall_p): Rename to...
10116         (arm_is_long_call_p): ...this.  Take a single tree argument and
10117         return a bool.
10118         * config/arm/arm.h (CALL_SHORT, CALL_LONG, CALL_NORMAL): Delete.
10119         (CUMULATIVE_ARGS): Remove call_cookie.
10120         (SHORT_CALL_FLAG_CHAR, LONG_CALL_FLAG_CHAR, ENCODED_SHORT_CALL_ATTR_P)
10121         (ENCODED_LONG_CALL_ATTR_P): Delete.
10122         (ARM_NAME_ENCODING_LENGTHS): Remove SHORT_CALL_FLAG_CHAR and
10123         LONG_CALL_FLAG_CHAR cases.
10124         (ARM_DECLARE_FUNCTION_SIZE): Delete.
10125         * config/arm/elf.h (ASM_DECLARE_FUNCTION_SIZE): Don't use
10126         ARM_DECLARE_FUNCTION_SIZE.
10127         * config/arm/arm.c (arm_init_cumulative_args): Don't set call_cookie.
10128         (arm_function_arg): Return const0_rtx for VOIDmode arguments.
10129         (arm_encode_call_attribute, current_file_function_operand): Delete.
10130         (arm_function_in_section_p): New function.
10131         (arm_is_longcall_p): Rename to...
10132         (arm_is_long_call_p): ...this.  Take the target function as a single
10133         argument and return a bool.  Do not rely on call cookies.  Check
10134         whether the target symbol is in the same section as the current
10135         function, not just the same compilation unit.
10136         (arm_function_ok_for_sibcall): Use arm_is_long_call_p.
10137         (arm_encode_section_info): Don't encode a call type.
10138         * config/arm/arm.md (call, call_value): Update calls to
10139         arm_is_long(_)call_p.  Simplify logic.
10140         (*call_symbol, *call_value_symbol, *call_insn, *call_value_insn):
10141         Update calls to arm_is_long(_)call_p.
10142
10143 2007-05-25  Richard Guenther  <rguenther@suse.de>
10144
10145         PR tree-optimization/31982
10146         * tree-ssa-forwprop.c
10147         (forward_propagate_addr_into_variable_array_index): Handle arrays
10148         with element size one.
10149
10150 2007-05-24  Andrew Pinski  <andrew_pinski@playstation.sony.com>
10151
10152         * config/spu/spu.md (smulsi3_highpart): Unshare the rtl chain.
10153         (umulsi3_highpart): Likewise.
10154
10155 2007-05-24  Ian Lance Taylor  <iant@google.com>
10156
10157         PR rtl-optimization/32069
10158         * regclass.c (regclass): Don't crash if the entry in regno_reg_rtx
10159         is NULL.
10160
10161 2007-05-24  Ollie Wild  <aaw@google.com>
10162
10163         * doc/cpp.texi (Common Predefined Macros): Add __COUNTER__
10164         description.
10165
10166 2007-05-24  Richard Sandiford  <rsandifo@nildram.co.uk>
10167
10168         * postreload-gcse.c (reg_changed_after_insn_p): New function.
10169         (oprs_unchanged_p): Use it to check all registers in a REG.
10170         (record_opr_changes): Look for clobbers in CALL_INSN_FUNCTION_USAGE.
10171         (reg_set_between_after_reload_p): Delete.
10172         (reg_used_between_after_reload_p): Likewise.
10173         (reg_set_or_used_since_bb_start): Likewise.
10174         (eliminate_partially_redundant_load): Use reg_changed_after_insn_p
10175         and reg_used_between_p instead of reg_set_or_used_since_bb_start.
10176         Use reg_set_between_p instead of reg_set_between_after_reload_p.
10177         * rtlanal.c (reg_set_p): Check whether REG overlaps
10178         regs_invalidated_by_call, rather than just checking the
10179         membership of REGNO (REG).
10180
10181 2007-05-24  Zdenek Dvorak  <dvorakz@suse.cz>
10182
10183         * doc/passes.texi: Document predictive commoning.
10184         * doc/invoke.texi (-fpredictive-commoning): Document.
10185         * opts.c (decode_options): Enable flag_predictive_commoning on -O3.
10186         * tree-ssa-loop-im.c (get_lsm_tmp_name): Export.  Allow
10187         adding indices to the generated name.
10188         (schedule_sm): Pass 0 to get_lsm_tmp_name.
10189         * tree-ssa-loop-niter.c (stmt_dominates_stmt_p): Export.
10190         * tree-pretty-print.c (op_symbol_1): Renamed to ...
10191         (op_symbol_code): ... and exported.
10192         (dump_omp_clause, op_symbol): Use op_symbol_code
10193         instead of op_symbol_1.
10194         * tree-pass.h (pass_predcom): Declare.
10195         * timevar.def (TV_PREDCOM): New timevar.
10196         * tree-ssa-loop.c (run_tree_predictive_commoning,
10197         gate_tree_predictive_commoning, pass_predcom): New.
10198         * tree-data-ref.c (find_data_references_in_loop): Find the
10199         references in dominance order.
10200         (canonicalize_base_object_address): Ensure that the result has
10201         pointer type.
10202         (dr_analyze_innermost): Export.
10203         (create_data_ref): Code to fail for references with invariant
10204         address moved ...
10205         (find_data_references_in_stmt): ... here.
10206         * tree-data-ref.h (dr_analyze_innermost): Declare.
10207         * tree-affine.c: Include tree-gimple.h and hashtab.h.
10208         (aff_combination_find_elt, name_expansion_hash,
10209         name_expansion_eq, tree_to_aff_combination_expand,
10210         double_int_constant_multiple_p, aff_combination_constant_multiple_p):
10211         New functions.
10212         * tree-affine.h (aff_combination_constant_multiple_p,
10213         tree_to_aff_combination_expand): Declare.
10214         * tree-predcom.c: New file.
10215         * common.opt (fpredictive-commoning): New option.
10216         * tree-flow.h (op_symbol_code, tree_predictive_commoning,
10217         stmt_dominates_stmt_p, get_lsm_tmp_name): Declare.
10218         * Makefile.in (tree-predcom.o): Add.
10219         (tree-affine.o): Add TREE_GIMPLE_H dependency.
10220         * passes.c (init_optimization_passes):  Add dceloop after
10221         copy propagation in loop optimizer.  Add predictive commoning
10222         to loop optimizer passes.
10223
10224 2007-05-24  H.J. Lu  <hongjiu.lu@intel.com>
10225
10226         * target-def.h (TARGET_MANGLE_DECL_ASSEMBLER_NAME): Correct
10227         default hook.
10228
10229 2007-05-24  Jan Hubicka  <jh@suse.cz>
10230
10231         * gengenrtl.c (gendecl, gendef): Output the gens annotated for
10232         statistics.
10233         (genheader): Include statistics.h.
10234
10235         * doc/invoke.texi (-fdump-unnumbered): Update docs when line number
10236         notes are gone.
10237         * print-rtl.c (flag_dump_unnumbered): Update comments.
10238         (print_rtl): Fix my previous change.
10239         * emit-rtl.c (emit_note_before, emit_note_after): Clear out note
10240         specific data.
10241
10242 2007-05-24  Zdenek Dvorak  <dvorakz@suse.cz>
10243
10244         PR middle-end/32018
10245         * tree-ssa-threadupdate.c (thread_through_loop_header): Use
10246         set_loop_copy.
10247         (thread_through_all_blocks): Call initialize_original_copy_tables
10248         and free_original_copy_tables.
10249         * cfgloopmanip.c (duplicate_loop, duplicate_loop_to_header_edge):
10250         Use set_loop_copy.
10251         * tree-cfg.c (tree_duplicate_sese_region): Ditto.
10252         * cfghooks.c (duplicate_block): Use get_loop_copy.
10253         * cfg.c: Include cfgloop.h.
10254         (loop_copy): New hash table.
10255         (initialize_original_copy_tables): Initialize loop_copy table.
10256         (free_original_copy_tables): Free loop_copy table.
10257         (copy_original_table_clear, copy_original_table_set,
10258         set_loop_copy, get_loop_copy): New functions.
10259         (set_bb_original, set_bb_copy): Use copy_original_table_set.
10260         * cfgloop.h (struct loop): Remove copy field.
10261         * Makefile.in (cfg.o): Add CFGLOOP_H dependency.
10262         * basic-block.h (set_loop_copy, get_loop_copy): Declare.
10263
10264 2007-05-24  H.J. Lu  <hongjiu.lu@intel.com>
10265
10266         * config/i386/i386.c (ix86_handle_option): Handle SSE4.1 for
10267         -msse/-msse2/-msse3.
10268
10269 2007-05-24  H.J. Lu  <hongjiu.lu@intel.com>
10270
10271         * config/i386/i386.c (ix86_init_mmx_sse_builtins): Mark
10272         __builtin_ia32_vec_set_v2di with MASK_64BIT.
10273
10274 2007-05-24  Danny Smith  <dannysmith@users.sourceforge.net>
10275
10276         PR target/27067
10277         * doc/tm.texi (TARGET_MANGLE_DECL_ASSEMBLER_NAME): Document.
10278         * targhooks.h (default_mangle_decl_assembler_name): Declare
10279         default hook.
10280         * targhooks.c (default_mangle_decl_assembler_name): Define
10281         default hook.
10282         * target-def.h (TARGET_MANGLE_DECL_ASSEMBLER_NAME) New. Set to
10283         default hook.
10284         * target.h (struct gcc_target): Add mangle_decl_assembler_name field.
10285         * langhooks.c (lhd_set_decl_assembler_name): Call
10286         targetm.mangle_decl_assembler_name for names with global scope.
10287
10288         * config/i386/cygming.h (TARGET_MANGLE_DECL_ASSEMBLER_NAME) Override
10289         default.
10290         (ASM_OUTPUT_DEF_FROM_DECLS): Simplify to use DECL_ASSEMBLER_NAME.
10291         * config/i386/i386-protos.h (i386_pe_mangle_decl_assembler_name):
10292         Declare.
10293         * config/i386/winnt.c (i386_pe_maybe_mangle_decl_assembler_name):
10294         New. Factored out of i386_pe_encode_section_info.
10295         (gen_stdcall_or_fastcall_suffix): Get name identifier as argument.
10296         Move check for prior decoration of stdcall
10297         symbols to i386_pe_encode_section_info.
10298         (i386_pe_encode_section_info): Adjust call to
10299         gen_stdcall_or_fastcall_suffix.  Use
10300         i386_pe_maybe_mangle_decl_assembler_name, if needed.
10301         (i386_pe_mangle_decl_assembler_name): New. Wrap
10302         i386_pe_maybe_mangle_decl_assembler_name.
10303
10304 2007-05-16  Rafael Avila de Espindola  <espindola@google.com>
10305
10306         * c-common.c (c_common_signed_or_unsigned_type): Delay the check for
10307         INTEGRAL_TYPE_P and TYPE_UNSIGNED.
10308         * langhooks.c (get_signed_or_unsigned_type): Don't check for
10309         INTEGRAL_TYPE_P or TYPE_UNSIGNED.
10310         (lhd_signed_or_unsigned_type): Check for INTEGRAL_TYPE_P and
10311         TYPE_UNSIGNED.
10312
10313 2007-05-23  Sandra Loosemore  <sandra@codesourcery.com>
10314             Nigel Stephens  <nigel@mips.com>
10315             Richard Sandiford  <richard@codesourcery.com>
10316
10317         Fix up MIPS16 hard float and add support for complex.
10318
10319         * config/mips/mips.h (TARGET_HARD_FLOAT_ABI): New.
10320         (TARGET_SOFT_FLOAT_ABI): New.
10321         (TARGET_CPU_CPP_BUILTINS): Define __mips_hard_float and
10322         __mips_soft_float to reflect the ABI in use, not whether the
10323         FPU is directly accessible (e.g., in MIPS16 mode).
10324         (UNITS_PER_HWFPVALUE): Use TARGET_SOFT_FLOAT_ABI.
10325         (UNITS_PER_FPVALUE): Likewise.
10326
10327         * config/mips/mips.c (mips_expand_call): Remove redundant
10328         TARGET_MIPS16 check.
10329         (mips_arg_regno): New.
10330         (function_arg_advance): When setting bits in cum->fp_code for
10331         MIPS16, don't subtract 1 from cum->arg_number, since it is now
10332         zero-based.
10333         (function_arg): Use mips_arg_regno.
10334         (mips_return_mode_in_fpr_p): New.
10335         (mips16_call_stub_mode_suffix): New.
10336         (mips16_cfun_returns_in_fpr_p): New.
10337         (mips_save_reg_p): Use mips16_cfun_returns_in_fpr_p.
10338         (mips_output_function_prologue): Test mips16_hard_float, not
10339         !TARGET_SOFT_FLOAT, to decide when a function stub is required.
10340         (mips_expand_epilogue): Call MIPS16 helper routines to copy
10341         return value into a floating-point register.
10342         (mips_can_use_return_insn): Use mips16_cfun_returns_in_fpr_p.
10343         (mips_function_value): Rewrite to use mips_return_mode_in_fpr_p.
10344         (mips16_fp_args): Handle MIPS32r2 ISA which supports
10345         TARGET_FLOAT64, and use mfhc1/mthc1 to copy the most significant
10346         word of double arguments from or to the high bits of 64-bit
10347         floating point registers.
10348         (build_mips16_function_stub): Fill in DECL_RESULT for stubdecl.
10349         (mips16_fpret_double): New helper function.
10350         (build_mips16_call_stub): Use mips16_return_mode_in_fpr_p.  Add
10351         support for complex modes.  Fill in DECL_RESULT for stubdecl.
10352         (mips_init_libfuncs): Remove redundant TARGET_MIPS16 check.
10353
10354         * config/mips/mips16.S
10355         (RET, ARG1, ARG2): New.
10356         (MERGE_GPRf, MERGE_GPRt): New.
10357         (DELAYt, DELAYf): New.
10358         (MOVE_SF_BYTE0, MOVE_SI_BYTE0): New.
10359         (MOVE_SF_BYTE4, MOVE_SF_BYTE8): New.
10360         (MOVE_DF_BYTE0, MOVE_DF_BYTE8): New.
10361         (MOVE_SF_RET, MOVE_SC_RET, MOVE_DF_RET, MOVE_DC_RET, MOVE_SI_RET): New.
10362         (SFOP): Renamed to...
10363         (OPSF3): This, and macro-ified.  Updated all uses.
10364         (SFOP2): Renamed to...
10365         (OPSF2): This, and macro-ified.  Updated all uses.
10366         (SFCMP): Renamed to...
10367         (CMPSF): This, and macro-ified.  Updated all uses.
10368         (SFREVCMP): Renamed to...
10369         (REVCMPSF): This, and macro-ified.  Updated all uses.
10370         (__mips16_floatsisf, __mips16_fix_truncsfsi): Macro-ified.
10371         (LDDBL1, LDDBL2, RETDBL): Deleted.
10372         (DFOP): Renamed to...
10373         (OPDF3): This, and macro-ified.  Updated all uses.
10374         (DFOP2): Renamed to...
10375         (OPDF2): This, and macro-ified.  Updated all uses.
10376         (__mips16_extendsfdf2, __mips16_truncdfsf2): Macro-ified.
10377         (DFCMP): Renamed to...
10378         (CMPDF): This, and macro-ified.  Updated all uses.
10379         (DFREVCMP): Renamed to...
10380         (REVCMPDF): This, and macro-ified.  Updated all uses.
10381         (__mips16_floatsidf, __mips16_fix_truncdfsi): Macro-ified.
10382         (RET_FUNCTION): New.
10383         (__mips16_ret_sf, __mips16_ret_df): Macro-ified.
10384         (__mips16_ret_sc, __mips16_ret_dc): New.
10385         (STUB_ARGS_0, STUB_ARGS_1, STUB_ARGS_5, STUB_ARGS_9, STUB_ARGS_2,
10386         STUB_ARGS_6, STUB_ARGS_10): New.
10387         (CALL_STUB_NO_RET): New.
10388         (__mips16_call_stub_1): Macro-ified.
10389         (__mips16_call_stub_5): Macro-ified.
10390         (__mips16_call_stub_2): Macro-ified.
10391         (__mips16_call_stub_6): Macro-ified.
10392         (__mips16_call_stub_9): Macro-ified.
10393         (__mips16_call_stub_10): Macro-ified.
10394         (CALL_STUB_RET): New.
10395         (__mips16_call_stub_sf_0): Macro-ified.
10396         (__mips16_call_stub_sf_1): Macro-ified.
10397         (__mips16_call_stub_sf_5): Macro-ified.
10398         (__mips16_call_stub_sf_2): Macro-ified.
10399         (__mips16_call_stub_sf_6): Macro-ified.
10400         (__mips16_call_stub_sf_9): Macro-ified.
10401         (__mips16_call_stub_sf_10): Macro-ified.
10402         (__mips16_call_stub_df_0): Macro-ified.
10403         (__mips16_call_stub_df_1): Macro-ified.
10404         (__mips16_call_stub_df_5): Macro-ified.
10405         (__mips16_call_stub_df_2): Macro-ified.
10406         (__mips16_call_stub_df_6): Macro-ified.
10407         (__mips16_call_stub_df_9): Macro-ified.
10408         (__mips16_call_stub_df_10): Macro-ified.
10409         (__mips16_call_stub_sc_0): New.
10410         (__mips16_call_stub_sc_1): New.
10411         (__mips16_call_stub_sc_5): New.
10412         (__mips16_call_stub_sc_2): New.
10413         (__mips16_call_stub_sc_6): New.
10414         (__mips16_call_stub_sc_9): New.
10415         (__mips16_call_stub_sc_10): New.
10416         (__mips16_call_stub_dc_0): New.
10417         (__mips16_call_stub_dc_1): New.
10418         (__mips16_call_stub_dc_5): New.
10419         (__mips16_call_stub_dc_2): New.
10420         (__mips16_call_stub_dc_6): New.
10421         (__mips16_call_stub_dc_9): New.
10422         (__mips16_call_stub_dc_10): New.
10423
10424         * config/mips/t-elf (LIB1ASMFUNCS): Add MIPS16 floating-point stubs.
10425         * config/mips/t-isa3264 (LIB1ASMFUNCS): Likewise.
10426         * config/mips/t-r2900 (LIB1ASMFUNCS): Likewise.
10427
10428 2007-05-23  Ian Lance Taylor  <iant@google.com>
10429
10430         * doc/invoke.texi (Invoking GCC): Document that the order of the
10431         -l option matters.
10432
10433 2007-05-23  Chen Liqin  <liqin@sunnorth.com.cn>
10434
10435         PR target/30987
10436         * config/score/misc.md (bitclr_c, bitset_c, bittgl_c): Remove.
10437         * config/score/predicate.md (const_pow2, const_npow2): Remove.
10438         * config/score/score.h (ASM_OUTPUT_EXTERNAL): Add ASM_OUTPUT_EXTERNAL
10439         undef.
10440
10441         PR target/30474
10442         * config/score/score.c (score_print_operand): Make sure that only
10443         lower bits are used.
10444
10445 2007-05-22  Ian Lance Taylor  <iant@google.com>
10446
10447         * tree-vrp.c (avoid_overflow_infinity): New static function,
10448         broken out of set_value_range_to_value.
10449         (set_value_range_to_value): Call avoid_overflow_infinity.
10450         (extract_range_from_assert): Likewise.
10451
10452 2007-05-22  Andrew Pinski  <andrew_pinski@playstation.sony.com>
10453
10454         PR middle-end/31095
10455          * builtins.c (expand_builtin_memmove_args): Strip nops that don't
10456         change the type before looking for a COMPOUND_EXPR.
10457
10458 2007-05-22  Ian Lance Taylor  <iant@google.com>
10459
10460         * lower-subreg.c (decompose_multiword_subregs): If we change an
10461         insn, call remove_retval_note on it.
10462
10463 2007-05-22  Richard Sandiford  <rsandifo@nildram.co.uk>
10464
10465         * regs.h (end_hard_regno): New function.
10466         (END_HARD_REGNO, END_REGNO): New macros.
10467         (add_to_hard_reg_set): New function.
10468         (remove_from_hard_reg_set): Likewise.
10469         (in_hard_reg_set_p): Likewise.
10470         (overlaps_hard_reg_set_p): Likewise.
10471         * bt-load.c (find_btr_reference): Use overlaps_hard_reg_set_p.
10472         (note_btr_set): Use END_HARD_REGNO.
10473         * caller-save.c (setup_save_areas): Use end_hard_regno.
10474         (mark_set_regs): Use END_HARD_REGNO.
10475         (add_stored_regs): Use end_hard_regno.
10476         (mark_referenced_regs): Use add_to_hard_reg_set.
10477         * combine.c (update_table_tick): Use END_REGNO.
10478         (record_value_for_reg): Likewise.
10479         (record_dead_and_set_regs): Likewise.
10480         (get_last_value_validate): Likewise.
10481         (use_crosses_set_p): Likewise.
10482         (reg_dead_at_p_1): Likewise.
10483         (reg_dead_at_p): Likewise.
10484         (mark_used_regs_combine): Use add_to_hard_reg_set.
10485         (move_deaths): Use END_HARD_REGNO.
10486         (reg_bitfield_target_p): Use end_hard_regno.
10487         (distribute_notes): Use END_HARD_REGNO.
10488         * cse.c (mention_regs): Use END_REGNO.
10489         (insert): Use add_to_hard_reg_set.
10490         (invalidate): Use END_HARD_REGNO.
10491         (invalidate_for_call): Likewise.
10492         (exp_equiv_p): Use END_REGNO.
10493         (cse_insn): Likewise.
10494         * cselib.c (cselib_invalidate_regno): Use end_hard_regno.
10495         * df-problems.c (df_urec_mark_reg_change): Use END_HARD_REGNO.
10496         * df-scan.c (df_ref_record): Use END_HARD_REGNO.
10497         * function.c (keep_stack_depressed): Use end_hard_regno.
10498         * global.c (global_alloc): Use end_hard_regno.
10499         (global_conflicts): Use add_to_hard_reg_set instead of
10500         mark_reg_live_nc.
10501         (find_reg): Likewise.
10502         (mark_reg_store): Likewise.
10503         (mark_reg_conflicts): Likewise.
10504         (mark_reg_death): Use remove_from_hard_reg_set.
10505         (mark_reg_live_nc): Delete.
10506         (set_preference): Use end_hard_regno.
10507         * local-alloc.c (mark_life): Use add_to_hard_reg_set and
10508         remove_from_hard_reg_set.
10509         (post_mark_life): Use add_to_hard_reg_set.
10510         * mode-switching.c (reg_dies): Use remove_from_hard_reg_set.
10511         (reg_becomes_live): Use add_to_hard_reg_set.
10512         * recog.c (reg_fits_class_p): Use in_hard_reg_set_p.
10513         (peep2_find_free_register): Use add_to_hard_reg_set.
10514         * reg-stack.c (convert_regs_exit): Use END_HARD_REGNO.
10515         * regclass.c (record_reg_classes): Use in_hard_reg_set_p.
10516         * regrename.c (note_sets): Use add_to_hard_reg_set.
10517         (clear_dead_regs): Use remove_from_hard_reg_set.
10518         (regrename_optimize): Use add_to_hard_reg_set.
10519         (find_oldest_value_reg): Use in_hard_reg_set_p.
10520         * reload.c (push_reload): Use in_hard_reg_set_p and end_hard_regno.
10521         (hard_reg_set_here_p): Use end_hard_regno.
10522         (decompose): Likewise.
10523         (reg_overlap_mentioned_for_reload_p): Use END_HARD_REGNO.
10524         (find_equiv_reg): Use in_hard_reg_set_p and end_hard_regno.
10525         * reload1.c (compute_use_by_pseudos): Use add_to_hard_reg_set.
10526         (mark_home_live): Use end_hard_regno.
10527         (spill_hard_reg): Likewise.
10528         (clear_reload_reg_in_use): Likewise.
10529         * reorg.c (delete_prior_computation): Use END_REGNO.
10530         * resource.c (update_live_status): Use END_HARD_REGNO.
10531         (mark_referenced_resources): Use add_to_hard_reg_set.
10532         (mark_set_resources): Likewise.
10533         (mark_target_live_regs): Likewise.  Use remove_from_hard_reg_set.
10534         * rtlanal.c (refers_to_regno_p): Use END_REGNO.
10535         (reg_overlap_mentioned_p): Likewise.
10536         (dead_or_set_p): Likewise.  Use an exclusive upper loop bound.
10537         (covers_regno_no_parallel_p): Use END_REGNO.
10538         (find_regno_note): Likewise.
10539         (find_reg_fusage): Use END_HARD_REGNO.
10540         * stmt.c (decl_overlaps_hard_reg_set_p): Use overlaps_hard_reg_set_p.
10541         * var-tracking.c (emit_note_insn_var_location): Use end_hard_regno.
10542
10543 2007-05-22  Richard Sandiford  <rsandifo@nildram.co.uk>
10544
10545         * mode-switching.c (reg_dies): Change type of second argument to
10546         "HARD_REG_SET *".
10547         (optimize_mode_switching): Update accordingly.
10548
10549 2007-05-22  Richard Sandiford  <richard@codesourcery.com>
10550
10551         * hard-reg-set.h (GO_IF_HARD_REG_SUBSET, GO_IF_HARD_REG_EQUAL): Delete
10552         in favor of...
10553         (hard_reg_subset_p, hard_reg_sets_equal_p, hard_reg_sets_intersect_p)
10554         (hard_reg_set_empty_p): ...these new functions.
10555         * bt-load.c (choose_btr): Use hard_reg_subset_p instead of
10556         GO_IF_HARD_REG_SUBSET.
10557         * cfgcleanup.c (old_insns_match_p): Use hard_reg_sets_equal_p
10558         instead of GO_IF_HARD_REG_EQUAL.
10559         * df-problems.c (df_urec_local_compute): Use hard_reg_set_empty_p
10560         instead of GO_IF_HARD_REG_EQUAL.
10561         * global.c (find_reg): Use hard_reg_set_empty_p instead of
10562         GO_IF_HARD_REG_SUBSET.
10563         (modify_reg_pav): Use hard_reg_set_empty_p instead of
10564         GO_IF_HARD_REG_EQUAL.
10565         * local-alloc.c (find_free_reg): Use hard_reg_subset_p instead
10566         of GO_IF_HARD_REG_SUBSET.
10567         * reg-stack.c (change_stack, convert_regs_1): Use hard_reg_sets_equal_p
10568         instead of GO_IF_HARD_REG_EQUAL.
10569         * regclass.c (init_reg_sets_1, reg_scan_mark_refs): Use
10570         hard_reg_subset_p instead of GO_IF_HARD_REG_SUBSET.
10571         (reg_classes_intersect_p): Use hard_reg_sets_intersect_p instead
10572         of GO_IF_HARD_REG_SUBSET,
10573         * reload1.c (finish_spills): Use hard_reg_subset_p instead of
10574         GO_IF_HARD_REG_SUBSET.
10575         * struct-equiv.c (death_notes_match_p): Use hard_reg_sets_equal_p
10576         instead of GO_IF_HARD_REG_EQUAL.
10577         * config/sh/sh.c (push_regs, calc_live_regs): Use
10578         hard_reg_sets_intersect_p instead of hard_regs_intersect_p.
10579         (hard_regs_intersect_p): Delete.
10580
10581 2007-05-22  Janis Johnson  <janis187@us.ibm.com>
10582
10583         * doc/sourcebuild.texi (Test Directives) Add dg-message.
10584
10585 2007-05-22  H.J. Lu  <hongjiu.lu@intel.com>
10586             Richard Henderson  <rth@redhat.com>
10587
10588         * config.gcc (i[34567]86-*-*): Add smmintrin.h to
10589         extra_headers.
10590         (x86_64-*-*): Likewise.
10591
10592         * i386/i386-modes.def (V2QI): New.
10593
10594         * config/i386/i386.c (ix86_handle_option): Handle SSE4.1 and
10595         SSE4A.
10596         (override_options): Support SSE4.1.
10597         (IX86_BUILTIN_BLENDPD): New for SSE4.1.
10598         (IX86_BUILTIN_BLENDPS): Likewise.
10599         (IX86_BUILTIN_BLENDVPD): Likewise.
10600         (IX86_BUILTIN_BLENDVPS): Likewise.
10601         (IX86_BUILTIN_PBLENDVB128): Likewise.
10602         (IX86_BUILTIN_PBLENDW128): Likewise.
10603         (IX86_BUILTIN_DPPD): Likewise.
10604         (IX86_BUILTIN_DPPS): Likewise.
10605         (IX86_BUILTIN_INSERTPS128): Likewise.
10606         (IX86_BUILTIN_MOVNTDQA): Likewise.
10607         (IX86_BUILTIN_MPSADBW128): Likewise.
10608         (IX86_BUILTIN_PACKUSDW128): Likewise.
10609         (IX86_BUILTIN_PCMPEQQ): Likewise.
10610         (IX86_BUILTIN_PHMINPOSUW128): Likewise.
10611         (IX86_BUILTIN_PMAXSB128): Likewise.
10612         (IX86_BUILTIN_PMAXSD128): Likewise.
10613         (IX86_BUILTIN_PMAXUD128): Likewise.
10614         (IX86_BUILTIN_PMAXUW128): Likewise.
10615         (IX86_BUILTIN_PMINSB128): Likewise.
10616         (IX86_BUILTIN_PMINSD128): Likewise.
10617         (IX86_BUILTIN_PMINUD128): Likewise.
10618         (IX86_BUILTIN_PMINUW128): Likewise.
10619         (IX86_BUILTIN_PMOVSXBW128): Likewise.
10620         (IX86_BUILTIN_PMOVSXBD128): Likewise.
10621         (IX86_BUILTIN_PMOVSXBQ128): Likewise.
10622         (IX86_BUILTIN_PMOVSXWD128): Likewise.
10623         (IX86_BUILTIN_PMOVSXWQ128): Likewise.
10624         (IX86_BUILTIN_PMOVSXDQ128): Likewise.
10625         (IX86_BUILTIN_PMOVZXBW128): Likewise.
10626         (IX86_BUILTIN_PMOVZXBD128): Likewise.
10627         (IX86_BUILTIN_PMOVZXBQ128): Likewise.
10628         (IX86_BUILTIN_PMOVZXWD128): Likewise.
10629         (IX86_BUILTIN_PMOVZXWQ128): Likewise.
10630         (IX86_BUILTIN_PMOVZXDQ128): Likewise.
10631         (IX86_BUILTIN_PMULDQ128): Likewise.
10632         (IX86_BUILTIN_PMULLD128): Likewise.
10633         (IX86_BUILTIN_ROUNDPD): Likewise.
10634         (IX86_BUILTIN_ROUNDPS): Likewise.
10635         (IX86_BUILTIN_ROUNDSD): Likewise.
10636         (IX86_BUILTIN_ROUNDSS): Likewise.
10637         (IX86_BUILTIN_PTESTZ): Likewise.
10638         (IX86_BUILTIN_PTESTC): Likewise.
10639         (IX86_BUILTIN_PTESTNZC): Likewise.
10640         (IX86_BUILTIN_VEC_EXT_V16QI): Likewise.
10641         (IX86_BUILTIN_VEC_SET_V2DI): Likewise.
10642         (IX86_BUILTIN_VEC_SET_V4SF): Likewise.
10643         (IX86_BUILTIN_VEC_SET_V4SI): Likewise.
10644         (IX86_BUILTIN_VEC_SET_V16QI): Likewise.
10645         (bdesc_ptest): New.
10646         (bdesc_sse_3arg): Likewise.
10647         (bdesc_2arg): Likewise.
10648         (bdesc_1arg): Likewise.
10649         (ix86_init_mmx_sse_builtins): Support SSE4.1.  Handle SSE builtins
10650         with 3 args.
10651         (ix86_expand_sse_4_operands_builtin): New.
10652         (ix86_expand_unop_builtin): Support 2 arg builtins with a constant
10653         smaller than 8 bits as the 2nd arg.
10654         (ix86_expand_sse_ptest): New.
10655         (ix86_expand_builtin): Support SSE4.1. Support 3 arg SSE builtins.
10656         (ix86_expand_vector_set): Support SSE4.1.
10657         (ix86_expand_vector_extract): Likewise.
10658
10659         * config/i386/i386.h (TARGET_CPU_CPP_BUILTINS): Define
10660         __SSE4_1__ for -msse4.1.
10661
10662         * config/i386/i386.md (UNSPEC_BLENDV): New for SSE4.1.
10663         (UNSPEC_INSERTPS): Likewise.
10664         (UNSPEC_DP): Likewise.
10665         (UNSPEC_MOVNTDQA): Likewise.
10666         (UNSPEC_MPSADBW): Likewise.
10667         (UNSPEC_PHMINPOSUW): Likewise.
10668         (UNSPEC_PTEST): Likewise.
10669         (UNSPEC_ROUNDP): Likewise.
10670         (UNSPEC_ROUNDS): Likewise.
10671
10672         * config/i386/i386.opt (msse4.1): New for SSE4.1.
10673
10674         * config/i386/predicates.md (const_pow2_1_to_2_operand): New.
10675         (const_pow2_1_to_32768_operand): Likewise.
10676
10677         * config/i386/smmintrin.h: New. The SSE4.1 intrinsic header
10678         file.
10679
10680         * config/i386/sse.md (*vec_setv4sf_sse4_1): New pattern for
10681         SSE4.1.
10682         (sse4_1_insertps): Likewise.
10683         (*sse4_1_extractps): Likewise.
10684         (sse4_1_ptest): Likewise.
10685         (sse4_1_mulv2siv2di3): Likewise.
10686         (*sse4_1_mulv4si3): Likewise.
10687         (*sse4_1_smax<mode>3): Likewise.
10688         (*sse4_1_umax<mode>3): Likewise.
10689         (*sse4_1_smin<mode>3): Likewise.
10690         (*sse4_1_umin<mode>3): Likewise.
10691         (sse4_1_eqv2di3): Likewise.
10692         (*sse4_1_pinsrb): Likewise.
10693         (*sse4_1_pinsrd): Likewise.
10694         (*sse4_1_pinsrq): Likewise.
10695         (*sse4_1_pextrb): Likewise.
10696         (*sse4_1_pextrb_memory): Likewise.
10697         (*sse4_1_pextrw_memory): Likewise.
10698         (*sse4_1_pextrq): Likewise.
10699         (sse4_1_blendpd): Likewise.
10700         (sse4_1_blendps): Likewise.
10701         (sse4_1_blendvpd): Likewise.
10702         (sse4_1_blendvps): Likewise.
10703         (sse4_1_dppd): Likewise.
10704         (sse4_1_dpps): Likewise.
10705         (sse4_1_movntdqa): Likewise.
10706         (sse4_1_mpsadbw): Likewise.
10707         (sse4_1_packusdw): Likewise.
10708         (sse4_1_pblendvb): Likewise.
10709         (sse4_1_pblendw): Likewise.
10710         (sse4_1_phminposuw): Likewise.
10711         (sse4_1_extendv8qiv8hi2): Likewise.
10712         (*sse4_1_extendv8qiv8hi2): Likewise.
10713         (sse4_1_extendv4qiv4si2): Likewise.
10714         (*sse4_1_extendv4qiv4si2): Likewise.
10715         (sse4_1_extendv2qiv2di2): Likewise.
10716         (*sse4_1_extendv2qiv2di2): Likewise.
10717         (sse4_1_extendv4hiv4si2): Likewise.
10718         (*sse4_1_extendv4hiv4si2): Likewise.
10719         (sse4_1_extendv2hiv2di2): Likewise.
10720         (*sse4_1_extendv2hiv2di2): Likewise.
10721         (sse4_1_extendv2siv2di2): Likewise.
10722         (*sse4_1_extendv2siv2di2): Likewise.
10723         (sse4_1_zero_extendv8qiv8hi2): Likewise.
10724         (*sse4_1_zero_extendv8qiv8hi2): Likewise.
10725         (sse4_1_zero_extendv4qiv4si2): Likewise.
10726         (*sse4_1_zero_extendv4qiv4si2): Likewise.
10727         (sse4_1_zero_extendv2qiv2di2): Likewise.
10728         (*sse4_1_zero_extendv2qiv2di2): Likewise.
10729         (sse4_1_zero_extendv4hiv4si2): Likewise.
10730         (*sse4_1_zero_extendv4hiv4si2): Likewise.
10731         (sse4_1_zero_extendv2hiv2di2): Likewise.
10732         (*sse4_1_zero_extendv2hiv2di2): Likewise.
10733         (sse4_1_zero_extendv2siv2di2): Likewise.
10734         (*sse4_1_zero_extendv2siv2di2): Likewise.
10735         (sse4_1_roundpd): Likewise.
10736         (sse4_1_roundps): Likewise.
10737         (sse4_1_roundsd): Likewise.
10738         (sse4_1_roundss): Likewise.
10739         (mulv4si3): Don't expand for SSE4.1.
10740         (smax<mode>3): Likewise.
10741         (umaxv4si3): Likewise.
10742         (uminv16qi3): Likewise.
10743         (umin<mode>3): Likewise.
10744         (umaxv8hi3): Rewrite.  Only enabled for SSE4.1.
10745
10746         * doc/extend.texi: Document SSE4.1 built-in functions.
10747
10748         * doc/invoke.texi: Document -msse4.1.
10749
10750 2007-05-22  Nathan Sidwell  <nathan@codesourcery.com>
10751
10752         * config/m68k/linux.h (ASM_SPEC): Add asm_pcrel_spec.
10753         * config/m68k/m68k-none.h (ASM_SPEC): Don't override here.
10754         * config/m68k/m68k.h (ASM_PCREL_SPEC): New.
10755         (ASM_SPEC): Add asm_pcrel_spec.
10756         (EXTRA_SPECS): Add asm_pcrel_spec.
10757
10758 2007-05-21  David Daney  <ddaney@avtrex.com>
10759
10760         * doc/install.texi (Building a cross compiler): Add requirements
10761         for Java cross compiler.
10762
10763 2007-05-21  Andrew Pinski  <andrew_pinski@playstation.sony.com>
10764
10765         PR middle-end/31995
10766         * tree-chrec.c (evolution_function_is_affine_multivariate_p):
10767         Add loopno argument.  Use evolution_function_is_invariant_rec_p
10768         instead of evolution_function_is_constant_p.
10769         Update calls to evolution_function_is_affine_multivariate_p.
10770         * tree-chrec.h (evolution_function_is_affine_multivariate_p):
10771         Add loopno argument.
10772         * tree-scalar-evolution.c (gather_chrec_stats): Call
10773         evolution_function_is_affine_multivariate_p with a loop
10774         number of 0.
10775         * tree-data-ref.c (analyze_miv_subscript): Likewise.
10776         (analyze_overlapping_iterations): Likewise.
10777         (access_functions_are_affine_or_constant_p): Likewise.
10778         (build_classic_dist_vector_1): If the access functions
10779         are equal, don't do anything.
10780
10781 2007-05-21  Paolo Bonzini  <bonzini@gnu.org>
10782             Paolo Carlini  <pcarlini@suse.de>
10783             Uros Bizjak  <ubizjak@gmail.com>
10784
10785         * c-cppbuiltin.c (c_cpp_builtins): Define
10786         __GCC_HAVE_SYNC_COMPARE_AND_SWAP_1, __GCC_HAVE_SYNC_COMPARE_AND_SWAP_2,
10787         __GCC_HAVE_SYNC_COMPARE_AND_SWAP_4, __GCC_HAVE_SYNC_COMPARE_AND_SWAP_8,
10788         __GCC_HAVE_SYNC_COMPARE_AND_SWAP_16, if appropriate.
10789         * doc/cpp.texi ([Standard Predefined Macros]): Document.
10790
10791 2007-05-21  Mike Stump  <mrs@apple.com>
10792
10793         * config/darwin.h (LINK_COMMAND_SPEC): Add .cxx/.cp for dsymutil
10794         handling as well.
10795         * config/darwin9.h (LINK_COMMAND_SPEC): Likewise.
10796
10797 2007-05-21  Uros Bizjak  <ubizjak@gmail.com>
10798
10799         * config/i386/tmmintrin.h (_mm_alignr_epi8): Provide macro
10800         implementation if __OPTIMIZE__ is not defined.
10801         (_mm_alignr_pi8): Ditto.
10802         * config/i386/ammintrin.h (_mm_extracti_si64): Ditto.
10803         (_mm_inserti_si64): Ditto.
10804         * config/i386/emmintrin.h (_mm_shuffle_pd): Ditto.
10805         (_mm_slli_epi16): Ditto.
10806         (_mm_slli_epi32): Ditto.
10807         (_mm_slli_epi64): Ditto.
10808         (_mm_srai_epi16): Ditto.
10809         (_mm_srai_epi32): Ditto.
10810         (_mm_srli_si128): Ditto.
10811         (_mm_slli_si128): Ditto.
10812         (_mm_srli_epi16): Ditto.
10813         (_mm_srli_epi32): Ditto.
10814         (_mm_srli_epi64): Ditto.
10815         (_mm_extract_epi16): Ditto.
10816         (_mm_insert_epi16): Ditto.
10817         (_mm_shufflehi_epi16): Ditto.
10818         (_mm_shufflelo_epi16): Ditto.
10819         (_mm_shuffle_epi32): Ditto.
10820         * config/i386/xmmintrin.h (_mm_extract_pi16): Ditto.
10821         (_m_pextrw): Ditto.
10822         (_mm_insert_pi16): Ditto.
10823         (_m_pinsrw): Ditto.
10824         (_mm_shuffle_pi16): Ditto.
10825         (_m_pshufw): Ditto.
10826         (_mm_shufle_ps): Ditto.
10827         (_mm_prefetch): Ditto.
10828
10829 2007-05-21  Andreas Krebbel  <krebbel1@de.ibm.com>
10830
10831         * defaults.h (IBM_FLOAT_FORMAT): Macro definition removed.
10832         * doc/tm.texi (IBM_FLOAT_FORMAT): Documentation entry removed.
10833         * real.c (encode_i370_single, decode_i370_single,
10834         encode_i370_double, decode_i370_double): Functions removed.
10835         (i370_single_format, i370_double_format): Initializations removed.
10836         (real_maxval, round_for_format, exact_real_truncate, significand_size):
10837         Consider the log2_b field to always be one.
10838         (ieee_single_format, mips_single_format, coldfire_single_format,
10839         ieee_double_format, mips_double_format, coldfire_double_format,
10840         ieee_extended_motorola_format, ieee_extended_intel_96_format,
10841         ieee_extended_intel_128_format, ieee_extended_intel_96_round_53_format,
10842         ibm_extended_format, mips_extended_format, ieee_quad_format,
10843         mips_quad_format, vax_f_format, vax_d_format, vax_g_format,
10844         decimal_single_format, decimal_double_format, decimal_quad_format,
10845         c4x_single_format, c4x_extended_format, real_internal_format): Remove
10846         initialization of log2_b.
10847         * real.h (i370_single_format, i370_double_format): Declarations
10848         removed.
10849         * c-cppbuiltin.c (builtin_define_float_constants): Consider the log2_b
10850         field to always be one.
10851
10852 2007-05-21  Andreas Schwab  <schwab@suse.de>
10853
10854         * config/ia64/ia64.c (emit_predicate_relation_info): Fix use of
10855         NOTE_INSN_BASIC_BLOCK_P.
10856         (process_for_unwind_directive): Likewise.
10857
10858 2007-05-21  Nathan Sidwell  <nathan@codesourcery.com>
10859
10860         * builtins.c (expand_builtin_setjmp_setup): Update comment.
10861         * function.h (struct function): Move va_list_gpr_size,
10862         va_list_fpr_size, function_frequency to front of bitfields.  Add
10863         calls_unwind_init.
10864         (current_function_calls_unwind_init): New.
10865         * except.c (expand_builtin_unwind_init): Set
10866         current_function_calls_unwind_init not
10867         current_function_has_nonlocal_label.
10868         * reload1.c (has_nonexceptional_receiver): New.
10869         (reload): Use it and current_function_calls_unwind_init to
10870         determine whether call-saved regs must be saved.
10871
10872 2007-05-20  Jan Hubicka  <jh@suse.cz>
10873
10874         * gengtype.c (adjust_field_rtx_def): Use NOTE_KIND instead of
10875         NOTE_LINE_NUMBER; use NOTE_INSN_BASIC_BLOCK_P when possible.
10876         * ddg.c (create_ddg): LIkewise.
10877         * final.c (final): Remove hunk moving line number notes around since
10878         they are no longer present at this stage.
10879         (final_scan_insn): Use NOTE_KIND instead of
10880         NOTE_LINE_NUMBER; use NOTE_INSN_BASIC_BLOCK_P when possible.
10881         (output_asm_label): Likewise.
10882         * reorg.c (dbr_schedule): Likewise.
10883         * haifa-sched.c (unlink_other_notes): Likewise.
10884         * mode-switching.c (optimize_mode_switching): Likewise.
10885         * graph.c (start_bb): Likewise.
10886         * rtl.def (NOTE): Update description.
10887         * jump.c (squeeze_notes): Delete.
10888         (mark_jump_label): Use NOTE_KIND instead of NOTE_LINE_NUMBER; use
10889         NOTE_INSN_BASIC_BLOCK_P when possible.
10890         * ifcvt.c (dead_or_predicable): Remove call of squeeze_notes.
10891         * dwarf2out.c (gen_label_die): Use NOTE_KIND instead of
10892         NOTE_LINE_NUMBER; use NOTE_INSN_BASIC_BLOCK_P when possible.
10893         (dwarf2out_var_location): Likewise.
10894         * cfgbuild.c (make_edges): Likewise.
10895         (find_basic_blocks_1): Likewise.
10896         * function.c (reorder_blocks_1): Likewise.
10897         (epilogue_done): Likewise.
10898         (reposition_prologue_and_epilogue_notes): Likewise.
10899         * print-rtl.c (print_rtx): Likewise; drop code for printing
10900         line number notes.
10901         (print_rtl): Likewise.
10902         (print_rtl_single): Likewise.
10903         * gcse.c (insert_insn_start_bb): Likewise.
10904         * alias.c (init_alias_analysis): Likewise.
10905         * calls.c (fixup_tail_calls): Likewise.
10906         * except.c (sjlj_emit_function_enter): Likewise.
10907         * emit-rtl.c (add_insn_after): Likeiwse.
10908         (emit_label_before): Likewise.
10909         (emit_label_after): Likewise.
10910         (emit_note_before, emit_note_after, emit_note): Update
10911         parameter to be enum insn_note; do not deal with source
10912         files.
10913         * cfgcleanup.c (merge_blocks_move_predecessor_nojumps):
10914         Use NOTE_KIND instead of NOTE_LINE_NUMBER; use NOTE_INSN_BASIC_BLOCK_P
10915         when possible.
10916         (merge_blocks_move_successor_nojumps): Simplify now when
10917         we don't have BLOCK notes.
10918         (try_optimize_cfg): Likewise.
10919         * cfglayout.c (skip_insns_after_block): Likewise.
10920         (record_effective_endpoints): Likewise.
10921         (duplicate_insn_chain): Likewise.
10922         * varasm.c (output_constant_pool_1): Likewise.
10923         * sched-deps.c (sched_analyze): Likewise.
10924         * rtl.c (NOTE_INSN_MAX_isnt_negative_adjust_NOTE_INSN_BIAS):
10925         Exterminate.
10926         (note_insn_name): Simplify now when NOTE_INSN_BIAS is gone.
10927         * rtl.h (NOTE_SOURCE_LOCATION, NOTE_EXPANDED_LOCATION): Exterminate.
10928         (SET_INSN_DELETED): Simplify.
10929         (NOTE_LINE_NUMBER): Exterminate.
10930         (NOTE_LINE_KIND): New.
10931         (NOTE_INSN_BASIC_BLOCK_P): Update.
10932         (enum insn_note): Simplify.
10933         (GET_NOTE_INSN_NAME) Simplify.
10934         (emit_note_before, emit_note_after, emit_note): Update prototype.
10935         (squeeze_notes): Remove.
10936         * sched-int.h (NOTE_NOT_BB_P): Update.
10937         * resource.c (mark_target_live_regs): Update.
10938         * sched-rgn.c (debug_dependencies): Update.
10939         * sched-vis.c (print_insn): Update.
10940         * config/alpha/alpha.c (alpha_handle_trap_shadows): Update.
10941         * config/i386/i386.c (ix86_output_function_epilogue): Update.
10942         * config/sh/sh.c (sh_adjust_unroll_max): Function dead since gcc 4.0.0.
10943         (TARGET_ADJUST_UNROLL_MAX): Likewise.
10944         (split_branches): Update.
10945         (sh_optimize_target_register_callee_saved): Remove hunk dead since gcc
10946         4.0.0.
10947         (sh_adjust_unroll_max): Exterminate.
10948         * config/c4x/c4x.c (c4x_reorg): Use SET_INSN_DELETED.
10949         * config/m68hc11/m68hc11.c (m68hc11_check_z_replacement): Likewise.
10950         (m68hc11_reorg): Likewise.
10951         * config/ia64/ia64.c (emit_insn_group_barriers): Update.
10952         (emit_predicate_relation_info): Update.
10953         (process_for_unwind_directive): Update.
10954         * config/rs6000/rs6000.c (rs6000_output_function_epilogue): Update.
10955         (output_call): Update.
10956         * config/pa/pa.c (output_lbranch): Update.
10957         (output_millicode_call): Update.
10958         (output_call): Update.
10959         (pa_combine_instructions): Update.
10960         * config/mips/mips.c (mips16_gp_pseudo_reg): Update.
10961         * config/bfin/bfin.c (gen_one_bundle): Update.
10962         * cfgrtl.c (can_delete_note_p): Update.
10963         (delete_insn): Update.
10964         (rtl_merge_blocks): Update.
10965         (commit_one_edge_insertion): Update.
10966         (rtl_verify_flow_info): Update.
10967         * stmt.c (expand_case): Do not call squeeze_notes.
10968
10969 2007-05-20  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
10970
10971         PR middle-end/7651
10972         PR c++/11856
10973         PR c/12963
10974         PR c/23587
10975         PR other/29694
10976         * c.opt (Wtype-limits): New.
10977         * doc/invoke.texi (Wtype-limits): Document it.
10978         (Wextra): Enabled by -Wextra.
10979         * c-opts.c (c_common_post_options): Enabled by -Wextra.
10980         * c-common.c (shorten_compare): Warn with Wtype-limits.
10981
10982 2007-05-20  Uros Bizjak  <ubizjak@gmail.com>
10983
10984         * config/i386/tmmintrin.h (_mm_alignr_epi32): Implement as always
10985         inlined function, not as a macro.
10986         (_mm_alignr_pi8): Ditto.
10987         * config/i386/ammintrin.h (_mm_extracti_si64): Ditto.
10988         (_mm_inserti_si64): Ditto.
10989         * config/i386/emmintrin.h (_mm_shuffle_pd): Ditto.
10990         (_mm_extract_epi16): Ditto.
10991         (_mm_insert_epi16): Ditto.
10992         (_mm_shufflehi_epi16): Ditto.
10993         (_mm_shufflelo_epi16): Ditto.
10994         (_mm_shuffle_epi32): Ditto.
10995         * config/i386/xmmintrin.h (_mm_set_ss): Use 0.0f for float constant.
10996         * config/386/mm3dnow.h: Add __attribute__((__always_inline__)) to
10997         all functions.
10998         (_m_from_float): Add __extension__ to conversion.  Use 0.0f for
10999         float constant.
11000         (_m_to_float): Use C89 compatible assignment.
11001
11002 2007-05-20  Martin Michlmayr  <tbm@cyrius.com>
11003
11004         PR target/32007
11005         * config/arm/lib1funcs.asm: Define __ARM_ARCH__ on v2/v3 machines.
11006
11007 2007-05-20  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
11008
11009         PR middle-end/7651
11010         * doc/invoke.texi (Wreturn-type): Complete description.
11011         (Wextra): Delete item about return-type warning.
11012         * c-decl.c: Delete redundant Wextra warning.
11013
11014 2007-05-20  Uros Bizjak  <ubizjak@gmail.com>
11015
11016         PR target/31585
11017         * config/i386/pmmintrin.h: Do not include xmmintrin.h
11018         * config/i386/xmmintrin.h (_mm_extract_pi16): Implement as always
11019         inlined function, not as a macro.
11020         (_mm_prefetch): Ditto.
11021         (_m_pextrw): Ditto.
11022         (_mm_insert_pi16): Ditto.
11023         (_m_pinsrw): Ditto.
11024         (_mm_shuffle_pi16): Ditto.  Add const to __N argument.
11025         (_m_pshufw): Ditto. Add const to __N argument.
11026         (_mm_shufle_ps): Ditto.  Add const to __mask argument.
11027         * config/i386/emmintrin.h (_mm_slli_epi16): Add const to __B argument.
11028         (_mm_slli_epi32): Ditto.
11029         (_mm_srli_si128): Implement as always inlined function, not as a
11030         macro.  Add __inline to function declaration.
11031         (_mm_slli_si128): Ditto.
11032
11033 2007-05-19  Uros Bizjak  <ubizjak@gmail.com>
11034
11035         * config/i386/sfp-machine.h (FP_EX_INVALID, FP_EX_DENORM,
11036         FP_EXP_DIVZERO, FP_EX_OVERFLOW, FP_EX_UNDERFLOW, FP_EX_INEXACT):
11037         New constants.
11038         (struct fenv): New structure.
11039         (FP_HANDLE_EXCEPTIONS): New define.
11040         (FP_RND_NEAREST, FP_RND_ZERO, FP_RND_PINF, FP_RND_MINF): New constants.
11041         (_FP_DECL_EXP): New define.
11042         (FP_INIT_ROUNDMODE): New define.
11043         (FP_ROUNDMODE): New define.
11044
11045 2007-05-19  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
11046
11047         * doc/invoke.texi (Warning Options): Add -Wconversion-sign.
11048         (Wconversion): Update description.
11049         (Wconversion-sign): New.
11050         * c.opt (Wconversion-sign): New.
11051         * c-opts.c (c_common_post_options): Uninitialized Wconversion-sign
11052         means disabled for C++. Otherwise, take the status of Wconversion.
11053         * c-common.c (conversion_warning): Warn with either Wconversion or
11054         Wconversion-sign.
11055         (warnings_for_convert_and_check): Conditions are already checked by
11056         conversion_warning.
11057         (convert_and_check): Don't check warnings if the conversion failed.
11058
11059 2007-05-19 Andy Hutchinson <HutchinsonAndy@netscape.net>
11060            Anatoly Sokolov <aesok@dol.ru>
11061
11062         * config/avr/avr-protos.h (expand_prologue, expand_epilogue,
11063         avr_epilogue_uses) : Add declaration.
11064         * config/avr/predicates.md (avr_sp_immediate_operand): New predicate.
11065         * config/avr/constraints.md (R): New constraint.
11066         config/avr/avr.md (SREG_ADDR, UNSPEC_SEI, UNSPEC_CLI,
11067         UNSPECV_PROLOGUE_SAVES, UNSPECV_EPILOGUE_RESTORES): New constants.
11068         (*pop1, *pop2, *pop3, *pop4, *pop5): Combine into ...
11069         (*addhi3_sp_R_pc2, *addhi3_sp_R_pc3): ... these patterns.
11070         (*movhi_sp, popqi, pophi, enable_interrupt, disable_interrupt,
11071         call_prologue_saves, epilogue_restores, return_from_epilogue,
11072         return_from_main_epilogue, return_from_interrupt_epilogue,
11073         return_from_naked_epilogue, prologue, epilogue): New patterns.
11074         (jump): Handle symbol reference.
11075         * config/avr/avr.c (out_adj_frame_ptr, out_set_stack_ptr,
11076         avr_output_function_prologue, avr_output_function_epilogue): Remove
11077         functions.
11078         (avr_init_machine_status, expand_prologue, expand_epilogue,
11079         avr_asm_function_end_prologue, avr_epilogue_uses,
11080         avr_asm_function_begin_epilogue): New functions.
11081         (prologue_size, epilogue_size, jump_tables_size): Remove global
11082         variables.
11083         (TARGET_ASM_FUNCTION_PROLOGUE, TARGET_ASM_FUNCTION_EPILOGUE): Remove.
11084         (TARGET_ASM_FUNCTION_END_PROLOGUE): Define.
11085         (TARGET_ASM_FUNCTION_BEGIN_EPILOGUE): Define.
11086         (avr_override_options): Initialise init_machine_status.
11087         (output_movhi): Handle all stack pointer loads.
11088         (out_movqi_r_mr, out_movqi_mr_r): Handle SREG_ADDR address.
11089         (avr_output_addr_vec_elt): Do not use variable jump_tables_size.
11090         * config/avr/avr.h (AVR_2_BYTE_PC, AVR_3_BYTE_PC): New.
11091         (EPILOGUE_USES) Redefine.
11092         (machine_function) Declare.
11093
11094 2007-05-19  Richard Sandiford  <richard@codesourcery.com>
11095
11096         * config/mips/mips.c (mips_offset_within_alignment_p): Tweak comment.
11097         Use a single return statement.
11098
11099 2007-05-19  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
11100
11101         PR middle-end/30250
11102         * builtins.c (do_mpfr_lgamma_r): New.
11103         (fold_builtin_2): Handle builtin gamma_r/lgamma_r.
11104         * tree.h (CASE_FLT_FN_REENT): New.
11105
11106 2007-05-18  Geoffrey Keating  <geoffk@apple.com>
11107
11108         * dwarf2out.c (print_die): Use '%ld' not '%lu' to print a 'long'.
11109         (output_die): Use 'unsigned long' with %x.
11110         * sched-vis.c (print_value): Use 'unsigned HOST_WIDE_INT' and
11111         HOST_WIDE_INT_PRINT_HEX to print HOST_WIDE_INT.
11112         * tree-dump.c (dump_pointer): Use 'unsigned long' for %lx.
11113
11114         * unwind-dw2.c (uw_identify_context): Use the CFA, not the IP.
11115
11116 2007-05-18  H.J. Lu  <hongjiu.lu@intel.com>
11117
11118         PR target/31989
11119         PR target/31681
11120         PR target/31666
11121         * config/i386/i386.c (init_cumulative_args): Set maybe_vaarg to
11122         true if function has no argument.
11123
11124 2007-05-18  DJ Delorie  <dj@redhat.com>
11125
11126         * config/mips/mips.c (mips_offset_within_alignment_p): New.
11127         (mips_symbolic_constant_p): Call it for TPREL and DTPREL symbols.
11128
11129 2007-05-18  Uros Bizjak  <ubizjak@gmail.com>
11130
11131         * longlong.h (__x86_64__): Add definitions for add_ssaaaa,
11132         sub_ddmmss, umul_ppmm, udiv_qrnnd, count_leading_zeros and
11133         count_trailing_zeros.
11134         (__i386__): Implement count_leading_zeros using __builtin_clz().
11135         Implement count_trailing_zeros usign __builtin_ctz().
11136
11137 2007-05-18  Richard Sandiford  <richard@codesourcery.com>
11138
11139         * config/i386/vxworks.h (ASM_PREFERRED_EH_DATA_FORMAT): Undefine.
11140
11141 2007-05-18  Uros Bizjak  <ubizjak@gmail.com>
11142
11143         PR middle-end/31344
11144         * expr.c (emit_move_change_mode): Change mode of push operands here.
11145
11146 2007-05-17  Ian Lance Taylor  <iant@google.com>
11147
11148         PR tree-optimization/31953
11149         * tree-vrp.c (set_value_range_to_value): Add equiv parameter.
11150         Change all callers.
11151         (set_value_range_to_null): Call set_value_range_to_value.
11152         (extract_range_from_comparison): Likewise.
11153
11154 2007-05-17  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
11155
11156         * toplev.c (print_version): Output GMP/MPFR version info.
11157
11158         * builtins.c (CASE_MATHFN_REENT): New macro.
11159         (mathfn_built_in): Use it.
11160         * builtins.def (BUILT_IN_GAMMA_R, BUILT_IN_GAMMAF_R,
11161         BUILT_IN_GAMMAL_R, BUILT_IN_LGAMMA_R, BUILT_IN_LGAMMAF_R,
11162         BUILT_IN_LGAMMAL_R): New.
11163         * doc/extend.texi: Document new builtins.
11164
11165         PR middle-end/31796
11166         * builtins.c (do_mpfr_remquo): New.
11167         (fold_builtin_2): Handle BUILT_IN_DREM/BUILT_IN_REMAINDER.
11168         (fold_builtin_3): Handle BUILT_IN_REMQUO.
11169
11170         PR middle-end/30251
11171         * builtins.c (fold_builtin_1): Handle y0, y1.
11172         (fold_builtin_2): Handle yn.
11173
11174         PR middle-end/30251
11175         * builtins.c (do_mpfr_bessel_n): New.
11176         (fold_builtin_1): Handle BUILT_IN_J0 and BUILT_IN_J1.
11177         (fold_builtin_2): Handle BUILT_IN_JN.
11178
11179 2007-05-17  Danny Smith  <dannysmith@users.sourceforge.net>
11180
11181         PR target/31965
11182         * config/i386/mingw32.h (_INTEGRAL_MAX_BITS): Define builtin as
11183         TYPE_PRECISION (intmax_type_node).
11184
11185 2007-05-17  Steve Ellcey  <sje@cup.hp.com>
11186
11187         PR target/31850
11188         * reload.c (subst_reloads): Remove checking.
11189
11190 2007-05-17  Eric Botcazou  <ebotcazou@libertysurf.fr>
11191
11192         PR rtl-optimization/31691
11193         * combine.c (simplify_set): Build a new src pattern instead of
11194         substituting its operands in the COMPARE case.
11195
11196 2007-05-17  Zdenek Dvorak  <dvorakz@suse.cz>
11197
11198         * tree-vrp.c (finalize_jump_threads): Do not care about dominance info.
11199         (execute_vrp): Preserve loops through jump threading.
11200         * tree-ssa-threadupdate.c (thread_single_edge,
11201         dbds_continue_enumeration_p, determine_bb_domination_status,
11202         thread_through_loop_header): New functions.
11203         (create_edge_and_update_destination_phis,
11204         create_edge_and_update_destination_phis): Set loops for the new blocks.
11205         (prune_undesirable_thread_requests): Removed.
11206         (redirect_edges): Do not pretend that redirect_edge_and_branch can
11207         create new blocks.
11208         (thread_block): Do not call prune_undesirable_thread_requests.
11209         Update loops.
11210         (mark_threaded_blocks): Select edges to thread here.
11211         (thread_through_all_blocks): Take may_peel_loop_headers argument.
11212         Thread edges through loop headers independently.
11213         * cfgloopmanip.c (create_preheader, mfb_keep_just): Export.
11214         * tree-pass.h (TODO_mark_first_instance): New.
11215         (first_pass_instance): Declare.
11216         * cfghooks.c (duplicate_block): Put the block to the original loop
11217         if copy is not specified.
11218         * tree-ssa-dom.c (tree_ssa_dominator_optimize): Preserve loops through
11219         jump threading.  Pass may_peel_loop_headers to
11220         thread_through_all_blocks according to first_pass_instance.
11221         * cfgloop.h (create_preheader): Declare.
11222         * tree-flow.h (thread_through_all_blocks): Declaration changed.
11223         * basic-block.h (mfb_keep_just, mfb_kj_edge): Declare.
11224         * passes.c (first_pass_instance): New variable.
11225         (next_pass_1): Set TODO_mark_first_instance.
11226         (execute_todo): Set first_pass_instance.
11227
11228 2007-05-17  Uros Bizjak  <ubizjak@gmail.com>
11229
11230         PR tree-optimization/24659
11231         * optabs.h (enum optab_index): Add OTI_vec_unpacks_float_hi,
11232         OTI_vec_unpacks_float_lo, OTI_vec_unpacku_float_hi,
11233         OTI_vec_unpacku_float_lo, OTI_vec_pack_sfix_trunc and
11234         OTI_vec_pack_ufix_trunc.
11235         (vec_unpacks_float_hi_optab): Define new macro.
11236         (vec_unpacks_float_lo_optab): Ditto.
11237         (vec_unpacku_float_hi_optab): Ditto.
11238         (vec_unpacku_float_lo_optab): Ditto.
11239         (vec_pack_sfix_trunc_optab): Ditto.
11240         (vec_pack_ufix_trunc_optab): Ditto.
11241         * genopinit.c (optabs): Implement vec_unpack[s|u]_[hi|lo]_optab
11242         and vec_pack_[s|u]fix_trunc_optab using
11243         vec_unpack[s|u]_[hi\lo]_* and vec_pack_[u|s]fix_trunc_* patterns
11244         * tree-vectorizer.c (supportable_widening_operation): Handle
11245         FLOAT_EXPR and CONVERT_EXPR.  Update comment.
11246         (supportable_narrowing_operation): New function.
11247         * tree-vectorizer.h (supportable_narrowing_operation): Prototype.
11248         * tree-vect-transform.c (vectorizable_conversion): Handle
11249         (nunits_in == nunits_out / 2) and (nunits_out == nunits_in / 2) cases.
11250         (vect_gen_widened_results_half): Move before vectorizable_conversion.
11251         (vectorizable_type_demotion): Call supportable_narrowing_operation()
11252         to check for target support.
11253         * optabs.c (optab_for_tree_code) Return vec_unpack[s|u]_float_hi_optab
11254         for VEC_UNPACK_FLOAT_HI_EXPR, vec_unpack[s|u]_float_lo_optab
11255         for VEC_UNPACK_FLOAT_LO_EXPR and vec_pack_[u|s]fix_trunc_optab
11256         for VEC_PACK_FIX_TRUNC_EXPR.
11257         (expand_binop): Special case mode of the result for
11258         vec_pack_[u|s]fix_trunc_optab.
11259         (init_optabs): Initialize vec_unpack[s|u]_[hi|lo]_optab and
11260         vec_pack_[u|s]fix_trunc_optab.
11261
11262         * tree.def (VEC_UNPACK_FLOAT_HI_EXPR, VEC_UNPACK_FLOAT_LO_EXPR,
11263         VEC_PACK_FIX_TRUNC_EXPR): New tree codes.
11264         * tree-pretty-print.c (dump_generic_node): Handle
11265         VEC_UNPACK_FLOAT_HI_EXPR, VEC_UNPACK_FLOAT_LO_EXPR and
11266         VEC_PACK_FIX_TRUNC_EXPR.
11267         (op_prio): Ditto.
11268         * expr.c (expand_expr_real_1): Ditto.
11269         * tree-inline.c (estimate_num_insns_1): Ditto.
11270         * tree-vect-generic.c (expand_vector_operations_1): Ditto.
11271
11272         * config/i386/sse.md (vec_unpacks_float_hi_v8hi): New expander.
11273         (vec_unpacks_float_lo_v8hi): Ditto.
11274         (vec_unpacku_float_hi_v8hi): Ditto.
11275         (vec_unpacku_float_lo_v8hi): Ditto.
11276         (vec_unpacks_float_hi_v4si): Ditto.
11277         (vec_unpacks_float_lo_v4si): Ditto.
11278         (vec_pack_sfix_trunc_v2df): Ditto.
11279
11280         * doc/c-tree.texi (Expression trees) [VEC_UNPACK_FLOAT_HI_EXPR]:
11281         Document.
11282         [VEC_UNPACK_FLOAT_LO_EXPR]: Ditto.
11283         [VEC_PACK_FIX_TRUNC_EXPR]: Ditto.
11284         * doc/md.texi (Standard Names) [vec_pack_sfix_trunc]: Document.
11285         [vec_pack_ufix_trunc]: Ditto.
11286         [vec_unpacks_float_hi]: Ditto.
11287         [vec_unpacks_float_lo]: Ditto.
11288         [vec_unpacku_float_hi]: Ditto.
11289         [vec_unpacku_float_lo]: Ditto.
11290
11291 2007-05-16  Uros Bizjak  <ubizjak@gmail.com>
11292
11293         * soft-fp/README: Update for new files.
11294         * soft-fp/floattisf.c: New file.
11295         * soft-fp/floattidf.c: New file.
11296         * soft-fp/floattitf.c: New file.
11297         * soft-fp/floatuntisf.c: New file.
11298         * soft-fp/floatuntidf.c: New file.
11299         * soft-fp/floatuntitf.c: New file.
11300         * soft-fp/fixsfti.c: New file.
11301         * soft-fp/fixdfti.c: New file.
11302         * soft-fp/fixtfti.c: New file.
11303         * soft-fp/fixunssfti.c: New file.
11304         * soft-fp/fixunsdfti.c: New file.
11305         * soft-fp/fixunstfti.c: New file.
11306         * soft-fp/extendxftf.c: New file.
11307         * soft-fp/trunctfxf.c: New file.
11308
11309         * libgcc-std.ver (__extendxftf2): Added to GCC_4.3.0 section.
11310         (__trunctfxf2): Ditto.
11311
11312         * config/i386/libgcc-x86_64-glibc.ver (__addtf3, __divtf3, __eqtf2,
11313         __extenddftf2, __extendsftf2, __fixtfdi, __fixtfsi, __fixtfti,
11314         __fixunstfdi, __fixunstfsi, __fixunstfti, __floatditf, __floatsitf,
11315         __floattitf, __floatunditf, __floatunsitf, __floatuntitf, __getf2,
11316         __letf2, __multf3, __negtf2, __subtf3, __trunctfdf2, __trunctfsf2,
11317         __unordtf2): Exclude and add to GCC_4.3.0 section for x86_64 targets.
11318
11319         * config/i386/t-fprules-softfp64: New file.
11320         * config/i386/sfp-machine.h: New file.
11321         * config.gcc (x86_64-*-linux*, x86_64-*-kfreebsd*-gnu,
11322         x86_64-*-knetbsd*-gnu): Add i386/t-fprules-softfp64
11323         and soft-fp/t-softfp to tmake_file.
11324         (i[34567]86-*-linux*, i[34567]86-*-kfreebsd*-gnu,
11325         i[34567]86-*-knetbsd*-gnu): Ditto for --enable-targets=all.
11326
11327         * config/i386/t-linux64 (softfp_wrap_start): New.
11328         (softfp_wrap_end): New.
11329         * config/i386/i386.c (ix86_scalar_mode_supported): TFmode is
11330         supported for TARGET_64BIT.
11331
11332 2007-05-16  Rafael Avila de Espindola  <espindola@google.com>
11333
11334         * c-common.c (c_common_signed_or_unsigned_type): Emulate
11335         c_common_unsigned_type behavior.
11336
11337 2007-05-16  Paolo Bonzini  <bonzini@gnu.org>
11338
11339         * config/i386/i386.c (legitimize_tls_address): Mark __tls_get_addr
11340         calls as pure.
11341
11342 2007-05-16  Eric Christopher  <echristo@apple.com>
11343
11344         * config/rs6000/rs6000.c (rs6000_emit_prologue): Move altivec register
11345         saving after stack push. Set sp_offset whenever we push.
11346         (rs6000_emit_epilogue): Move altivec register restore before
11347         stack push.
11348
11349 2007-05-16  Richard Sandiford  <richard@codesourcery.com>
11350
11351         * configure.ac: Allow sysroots to be relocated under $prefix as
11352         well as $exec_prefix.
11353         * configure: Regenerate.
11354
11355 2007-05-16  Richard Sandiford  <richard@codesourcery.com>
11356
11357         Revert:
11358
11359         2007-05-12  Richard Sandiford  <richard@codesourcery.com>
11360
11361         * configure.ac (gcc_gxx_include_dir): Use $(libsubdir_to_prefix).
11362         (gcc_tooldir): Likewise.
11363         * configure: Regenerate.
11364         * Makefile.in (libsubdir_to_prefix): New variable, based on the
11365         old configure.ac gcc_tooldir setting.
11366         (prefix_to_exec_prefix): New variable.
11367         (DRIVER_DEFINES): Use $(libsubdir_to_prefix)$(prefix_to_exec_prefix)
11368         rather than $(unlibsubdir)/../ to derive TOOLDIR_BASE_PREFIX.
11369
11370 2007-05-14  Janis Johnson  <janis187@us.ibm.com>
11371
11372         * c-typeck.c (build_binary_op): Return early for error.
11373
11374 2007-05-15  Zdenek Dvorak  <dvorakz@suse.cz>
11375
11376         * tree-ssa-loop-niter.c (record_estimate): Use GGC_NEW to allocate
11377         struct nb_iter_bound.
11378         (free_numbers_of_iterations_estimates_loop): Use ggc_free.
11379         * gengtype.c (open_base_files): Add cfhloop.h to the list of includes.
11380         * cfgloopmanip.c (place_new_loop): Vector larray is gc-allocated.
11381         * tree-scalar-evolution.c: Include gt-tree-scalar-evolution.h.
11382         (struct scev_info_str, scalar_evolution_info): Add GTY markers.
11383         (new_scev_info_str): Use GGC_NEW to allocate struct scev_info_str.
11384         (del_scev_info): Use ggc_free.
11385         (scev_initialize): Allocate scalar_evolution_info in gc memory.
11386         * loop-init.c: Include ggc.h.
11387         (loop_optimizer_init): Use GGC_CNEW to allocate struct loops.
11388         (loop_optimizer_finalize): Use ggc_free.
11389         * tree-ssa-loop.c (pass_tree_unswitch, pass_vectorize,
11390         pass_linear_transfom, pass_empty_loop, pass_complete_unroll,
11391         pass_iv_optimize): Add TODO_ggc_collect.
11392         * function.h (struct function): Remove skip marker from
11393         x_current_loops.
11394         * cfgloop.c: Include ggc.h.
11395         (flow_loops_free, flow_loop_free): Free the loop descriptions in gc
11396         memory.
11397         (establish_preds): Vector superloops is gc allocated.
11398         (alloc_loop): Allocate loop using GGC_CNEW.  Allocate head of
11399         loop->exits list.
11400         (flow_loops_find): Vector larray is gc allocated.
11401         (loop_exit_free): Use ggc_free.
11402         (rescan_loop_exit): Use GGC_NEW to allocate struct loop_exit.  Reflect
11403         that head of exits list is now not a part of struct loop.
11404         (record_loop_exits): Allocate exits table in gc memory.
11405         (get_loop_exit_edges, verify_loop_structure, single_exit): Reflect
11406         that head of exits list is now not a part of struct loop.
11407         * cfgloop.h (struct lpt_decision, struct nb_iter_bound,
11408         struct loop_exit): Add GTY marker.
11409         (struct loop): Add GTY marker.  Make superloops vector gc allocated.
11410         Add skip marker to aux field.  Make head of exits list a separate
11411         object.
11412         (struct loops): Add GTY marker.  Make larray vector gc allocated.
11413         Add param marker to exits table.
11414         (get_loops): Type changed.
11415         * Makefile.in (tree-scalar-evolution.o): Add
11416         gt-tree-scalar-evolution.h dependency.
11417         (cfgloop.o, loop-init.o): Add ggc.h dependency.
11418         (GTFILES): Add cfgloop.h and tree-scalar-evolution.c.
11419         * basic-block.h (struct basic_block_def): Remove skip marker from
11420         loop_father field.
11421
11422 2007-05-14  Uros Bizjak  <ubizjak@gmail.com>
11423
11424         * builtins.c (expand_builtin_mathfn): Use EXPAND_NORMAL instead
11425         of 0 in the call to expand_expr().
11426         (expand_builtin_mathfn_3): Ditto.
11427         (expand_builtin_interclass_mathfn): Ditto.
11428         (expand_builtin_cexpi): Ditto.
11429         (expand_builtin_int_roundingfn): Ditto.
11430         (expand_builtin_int_roundingfn_2): Ditto.
11431         (expand_builtin_pow): Ditto.
11432         (expand_builtin_powi): Ditto.
11433         (expand_builtin_bswap): Ditto.
11434         (expand_builtin_unop): Ditto.
11435         (expand_builtin_fabs): Ditto.
11436         (get_builtin_sync_mem): Use NULL_RTX instead of NULL in
11437         the call to expand_expr().
11438         (expand_builtin_sync_operation): Ditto.
11439         (expand_builtin_compare_and_swap): Ditto.
11440         (expand_builtin_lock_test_and_set): Ditto.
11441         * except.c (expand_builtin_eh_return_data_regno): Use EXPAND_NORMAL
11442         instead of 0 in the call to expand_expr().
11443         (expand_builtin_extract_return_addr): Ditto.
11444         (expand_builtin_eh_return): Ditto.
11445         (expand_eh_return): Ditto.
11446         * explow.c (expr_size): Ditto.
11447         * expr.c (optimize_bitfield_assignment_op): Ditto.
11448         (expand_assignement): Ditto.
11449         (store_expr): Ditto.
11450         (store_field): Ditto.
11451         (expand_expr_addr_expr_1): Use NULL_RTX instead of NULL in
11452         the call to expand_expr().
11453         (expand_expr_real_1) [COMPLEX_CST]: Use EXPAND_NORMAL instead of 0
11454         in the call to expand_expr().
11455         [CONSTRUCTOR, PLUS_EXPR, MINUS_EXPR, NEGATE_EXPR, ABS_EXPR,
11456         BIT_NOT_EXPR, LSHIFT_EXPR, LT_EXPR, TRUTH_NOT_EXPR]: Ditto.
11457         [VEC_UNPACK_HI_EXPR, VEC_UNPACK_LO]: Use expand_normal() instead
11458         of expand_expr().
11459         * optabs.c (expand_vec_shift_expr): Ditto.
11460         (expand_vec_cond_expr): Ditto.
11461         (vector_compare_rtx): Use EXPAND_STACK_PARM instead of 1 in the
11462         call to expand_expr().
11463         * stmt.c (expand_return): Use EXPAND_NORMAL instead of 0
11464         in the call to expand_expr().
11465
11466 2007-05-14  Dave Korn  <dave.korn@artimi.com>
11467
11468         * genautomata.c (gen_regexp_el):  Allocate correct size for regexp.
11469
11470 2007-05-14  Rafael Avila de Espindola  <espindola@google.com>
11471
11472         * c-common.c (warnings_for_convert_and_check): Use unsigned_type_for
11473         instead of c_common_unsigned_type.
11474         (c_common_unsigned_type): Remove.
11475         (shorten_compare): Use c_common_signed_or_unsigned_type instead of
11476         c_common_unsigned_type.
11477         (c_common_nodes_and_builtins): Use unsigned_type_for instead of
11478         c_common_unsigned_type.
11479         * c-common.h (c_common_unsigned_type): Remove.
11480         * c-decl.c (grokdeclarator): Use unsigned_type_for instead of
11481         c_common_unsigned_type.
11482         * c-format.c (check_format_types): Use unsigned_type_for instead of
11483         c_common_unsigned_type.
11484         * c-objc-common.h (LANG_HOOKS_UNSIGNED_TYPE): Remove.
11485         * c-typeck.c (convert_for_assignment): Use unsigned_type_for instead
11486         of c_common_unsigned_type.
11487         * convert.c (convert_to_integer): Use unsigned_type_for instead of
11488         lang_hooks.types.unsigned_type.
11489         * expmed.c (make_tree): Use unsigned_type_for instead of
11490         lang_hooks.types.unsigned_type.
11491         * fold-const.c (fold_negate_expr): Use unsigned_type_for instead of
11492         lang_hooks.types.unsigned_type.
11493         (build_range_check): Likewise.
11494         (fold_unary): Likewise.
11495         (fold_binary): Likewise.
11496         (fold_ternary): Likewise.
11497         * langhooks-def.h (LANG_HOOKS_UNSIGNED_TYPE): Remove.
11498         * langhooks.h (lang_hooks_for_types): Remove unsigned_type.
11499         * tree.c (get_unsigned_type): New.
11500         (unsigned_type_for): Use get_unsigned_type instead of
11501         lang_hooks.types.unsigned_type.
11502
11503 2007-05-14  Kazu Hirata  <kazu@codesourcery.com>
11504
11505         * config/m68k/m68k-protos.h: Rename m68k_interrupt_function_p
11506         to m68k_get_function_kind.  Update its prototype.
11507         * config/m68k/m68k.c (m68k_attribute_table): Add an entry for
11508         interrupt_thread.
11509         (m68k_interrupt_function_p): Return enum m68k_function_type
11510         instead of bool.  Rename to m68k_get_function_kind.
11511         (m68k_handle_fndecl_attribute): Reject interrupt_thread if the
11512         target is not fido.
11513         (m68k_compute_frame_layout): Don't mark any register for save
11514         if an interrupt_thread attribute is specified.
11515         (m68k_hard_regno_rename_ok): Update a use of
11516         m68k_interrupt_function_p.
11517         * config/m68k/m68k.h (EPILOGUE_USES): Update a use of
11518         m68k_interrupt_function_p.
11519         (m68k_function_type): New.
11520         * config/m68k/m68k.md (*return): Output a 'sleep' instruction
11521         for a function with an interrupt_thread attribute.
11522         * doc/extend.texi: Document the interrupt_thread attribute.
11523
11524 2007-05-13  Daniel Berlin  <dberlin@dberlin.org>
11525
11526         Fix PR tree-optimization/31911
11527         * tree-ssa-pre.c (phi_translate): Make sure to cache results even
11528         if they didn't change the expression.
11529
11530 2007-05-13  Zdenek Dvorak  <dvorakz@suse.cz>
11531
11532         * tree-scalar-evolution.c (resolve_mixers): Exported.
11533         * tree-scalar-evolution.h (resolve_mixers): Declare.
11534         * tree-data-ref.c (object_analysis, ptr_decl_may_alias_p,
11535         ptr_ptr_may_alias_p, may_alias_p, record_ptr_differ_p,
11536         record_record_differ_p, record_array_differ_p, array_ptr_differ_p,
11537         base_object_differ_p, base_addr_differ_p, analyze_array_indexes,
11538         init_array_ref, init_pointer_ref, analyze_indirect_ref,
11539         strip_conversion, analyze_offset_expr, address_analysis,
11540         object_analysis, analyze_offset): Removed.
11541         (dr_analyze_innermost, dr_analyze_indices, dr_analyze_alias,
11542         split_constant_offset, canonicalize_base_object_address,
11543         object_address_invariant_in_loop_p, disjoint_objects_p,
11544         dr_may_alias_p, dr_address_invariant_p): New functions.
11545         (create_data_ref): Use dr_analyze_innermost, dr_analyze_indices
11546         and dr_analyze_alias.
11547         (initialize_data_dependence_relation): Use dr_may_alias_p
11548         and object_address_invariant_in_loop_p.
11549         (compute_self_dependence): Handle the case when
11550         DDR_ARE_DEPENDENT (ddr) is chrec_dont_know.
11551         (find_data_references_in_stmt): Restrict the analysis of data
11552         references to the given loop nest.
11553         (find_data_references_in_loop): Made static.  Pass loop nest to
11554         find_data_references_in_stmt.
11555         (compute_data_dependences_for_loop): Use DR_VOPS.
11556         (free_data_ref): Free DR_VOPS.
11557         * tree-data-ref.h (struct first_location_in_loop): Replaced by ...
11558         (struct innermost_loop_behavior): ... new.
11559         (struct base_object_info): Replaced by ...
11560         (struct indices): ... new.
11561         (struct dr_alias): New.
11562         (enum data_ref_type): Removed.
11563         (struct data_reference): Consist of struct innermost_loop_behavior,
11564         struct indices and struct dr_alias.
11565         (DR_SET_ACCESS_FNS, DR_FREE_ACCESS_FNS): Removed.
11566         (DR_MEMTAG): Renamed to ...
11567         (DR_SYMBOL_TAG): ... this.
11568         (find_data_references_in_loop): Declaration removed.
11569         * tree-vect-analyze.c (vect_compute_data_ref_alignment): Use DR_INIT
11570         instead of DR_OFFSET_MISALIGNMENT.  DR_ALIGNED_TO is never NULL.
11571         (vect_analyze_data_refs): Use DR_SYMBOL_TAG instead of DR_MEMTAG.
11572         * tree-vect-transform.c (vect_create_data_ref_ptr): Ditto.
11573
11574 2007-05-13  Revital Eres  <eres@il.ibm.com>
11575
11576         * tree-ssa-dse.c (get_use_of_stmt_lhs): New function
11577         which walks virtual def-use chains to find redundant stores.
11578         (dse_optimize_stmt): Call it.
11579
11580 2007-05-12  Steven Bosscher  <steven@gcc.gnu.org>
11581
11582         * gcse.c (gcse_main): Do jump bypassing in CPROP2.
11583         * passes.c (init_optimization_passes): Move pass_jump_bypass
11584         after loop2.
11585
11586         * basic-block.h (bb_has_eh_pred): Fix style issue.
11587
11588 2007-05-12  Steven Bosscher  <steven@gcc.gnu.org>
11589
11590         PR rtl-optimization/31848
11591         * loop-invariant.c (move_invariant_reg): If we move an insn
11592         with a REG_EQUAL note, and that insn is not always executed,
11593         remove the REG_EQUAL note.
11594
11595 2007-05-12  Richard Guenther  <rguenther@suse.de>
11596
11597         PR tree-optimization/31797
11598         * tree-ssa-forwprop.c (forward_propagate_addr_expr): Do not
11599         propagate into a stmt that has volatile ops.
11600
11601 2007-05-12  Richard Sandiford  <richard@codesourcery.com>
11602
11603         * configure.ac (gcc_gxx_include_dir): Use $(libsubdir_to_prefix).
11604         (gcc_tooldir): Likewise.
11605         * configure: Regenerate.
11606         * Makefile.in (libsubdir_to_prefix): New variable, based on the
11607         old configure.ac gcc_tooldir setting.
11608         (prefix_to_exec_prefix): New variable.
11609         (DRIVER_DEFINES): Use $(libsubdir_to_prefix)$(prefix_to_exec_prefix)
11610         rather than $(unlibsubdir)/../ to derive TOOLDIR_BASE_PREFIX.
11611
11612 2007-05-11  Silvius Rus  <rus@google.com>
11613
11614         * Makefile.in (OBJS-common): Add tree-ssa-alias-warnings.o.
11615         * c-common.c (strict_aliasing_warning): Modify -Wstrict-aliasing logic.
11616         * c-common.h (strict_aliasing_warning): Change return type.
11617         * c-opts.c (c_common_handle_option): Add call to set_Wstrict_aliasing.
11618         * c-typeck.c (build_indirect_ref): Add call to strict_aliasing_warning.
11619         (build_c_cast): Condition call to strict_aliasing_warning.
11620         * doc/invoke.texi: Update description of -Wstrict-aliasing[=n].
11621         * flags.h (set_Wstrict_aliasing): Declare.
11622         * opts.c (set_Wstrict_alising): Define, add call to.
11623         * tree-flow.h (strict_aliasing_warning_backend): Declare.
11624         * tree-ssa-alias-warnings.c: New file.
11625         * tree-ssa-alias.c (compute_may_aliases): Add call to
11626         strict_aliasing_warning_backend.
11627
11628 2007-05-11  Zdenek Dvorak  <dvorakz@suse.cz>
11629
11630         * tree-loop-linear.c (gather_interchange_stats, try_interchange_loops):
11631         Use loop_depth and loop_outer accessor functions.
11632         * tree-ssa-loop-im.c (outermost_invariant_loop, set_level,
11633         determine_invariantness_stmt, move_computations_stmt): Ditto.
11634         * cfgloopmanip.c (fix_bb_placement, fix_loop_placement, remove_path,
11635         add_loop, loopify, unloop, fix_loop_structure): Ditto.
11636         * tree-ssa-loop-manip.c (find_uses_to_rename_use): Ditto.
11637         * tree-scalar-evolution.c (interpret_loop_phi,
11638         compute_scalar_evolution_in_loop, analyze_scalar_evolution_in_loop,
11639         instantiate_parameters_1, scev_const_prop): Ditto.
11640         * cfghooks.c (make_forwarder_block): Ditto.
11641         * cfgloopanal.c (mark_irreducible_loops, mark_loop_exit_edges): Ditto.
11642         * modulo-sched.c (loop_canon_p): Ditto.
11643         * tree-vectorizer.c (slpeel_tree_duplicate_loop_to_edge_cfg,
11644         slpeel_can_duplicate_loop_p): Ditto.
11645         * lambda-code.c (invariant_in_loop_and_outer_loops): Ditto.
11646         * tree-cfg.c (tree_duplicate_sese_region): Ditto.
11647         * cfgloop.c (flow_loop_dump, flow_loop_nodes_find, rescan_loop_exit,
11648         cancel_loop, verify_loop_structure): Ditto.
11649         (flow_loop_nested_p, superloop_at_depth, flow_loop_free,
11650         add_bb_to_loop, remove_bb_from_loops, find_common_loop): Use the
11651         superloops vector instead of "pred" array.
11652         (establish_preds): Take father loop as an argument.  Initialize the
11653         superloops vector.
11654         (flow_loop_tree_node_add): Pass father loop to establish_preds.
11655         Do not initialize loop->outer.
11656         (flow_loop_tree_node_remove): Truncate the superloops vector.
11657         * cfgloop.h (struct loop): Removed field "outer", fields "depth" and
11658         "pred" merged to "superloops" vector.
11659         (loop_depth, loop_outer): New.
11660         (fel_init): Use loop_outer.
11661
11662 2007-05-11  Jan Hubicka  <jh@suse.cz>
11663
11664         * cgraphunit.c: Include gt-cgraphunit.h
11665         (static_ctors, static_dtors): New static vars.
11666         (record_cdtor_fn, build_cdtor, cgraph_build_cdtor_fns): New functions,
11667         based on implementation in c-common.c
11668         (cgraph_finalize_function): Call record_cdtor_fn.
11669         (cgraph_optimize): Call cgraph_build_cdtor_fns.
11670         * decl.c (finish_function): Do not call c_record_cdtor_fn.
11671         (c_write_global_declarations): Do not call c_build_cdtor_fns.
11672         * c-common.c (static_ctors, static_dtors, c_record_cdtor_fn,
11673         build_cdtor, c_build_cdtor_fns): Remove.
11674         * c-common.h (static_ctors, static_dtors, c_record_cdtor_fn,
11675         c_build_cdtor_fns): Remove prototype.
11676
11677 2007-05-11  Paolo Carlini  <pcarlini@suse.de>
11678
11679         PR other/31852
11680         * builtin-types.def: Add BT_FN_PTR_CONST_PTR_INT_SIZE.
11681         * builtins.def: Add BUILT_IN_MEMCHR, use the latter.
11682         * builtins.c (fold_builtin_memchr): New.
11683         (expand_builtin_memchr): Call the latter.
11684         (expand_builtin, fold_builtin_3): Deal with BUILT_IN_MEMCHR.
11685         * doc/extend.texi ([Other built-in functions provided by GCC]):
11686         Document memchr.
11687
11688 2007-05-11  Andreas Krebbel  <krebbel1@de.ibm.com>
11689
11690         * config/s390/s390.md (GPR0_REGNUM, FPR0_REGNUM, FPR2_REGNUM,
11691         PFPO_CONVERT, PFPO_OP_TYPE_SF, PFPO_OP_TYPE_DF, PFPO_OP_TYPE_TF,
11692         PFPO_OP_TYPE_SD, PFPO_OP_TYPE_DD, PFPO_OP_TYPE_TD, PFPO_OP0_TYPE_SHIFT,
11693         PFPO_OP1_TYPE_SHIFT): Constants added.
11694         (DFP_ALL): Mode macro defined.
11695         ("*trunc<BFP:mode><DFP_ALL:mode>2", "*trunc<DFP_ALL:mode><BFP:mode>2",
11696         "*extend<BFP:mode><DFP_ALL:mode>2", "*extend<DFP_ALL:mode><BFP:mode>2"):
11697         Insn definitions added.
11698         ("trunc<BFP:mode><DFP_ALL:mode>2", "trunc<DFP_ALL:mode><BFP:mode>2",
11699         "extend<BFP:mode><DFP_ALL:mode>2", "extend<DFP_ALL:mode><BFP:mode>2"):
11700         Expanders added.
11701
11702 2007-05-10  Zdenek Dvorak  <dvorakz@suse.cz>
11703
11704         PR tree-optimization/31885
11705         * tree-chrec.c (chrec_contains_undetermined): Do not consider
11706         NULL_TREE to be undetermined.
11707         (automatically_generated_chrec_p): Return false for NULL.
11708
11709 2007-05-08  Bernd Schmidt  <bernd.schmidt@analog.com>
11710
11711         * config/bfin/bfin.h (MOVE_RATIO): Define.
11712
11713 2007-05-10  Richard Sandiford  <richard@codesourcery.com>
11714
11715         * config.gcc (sparc-wrs-vxworks): New target.
11716         * config/sparc/vxworks.h, config/sparc/t-vxworks: New files.
11717         * config/sparc/sparc-protos.h (sparc_emit_call_insn): Declare.
11718         * config/sparc/sparc.h: Include vxworks-dummy.h.
11719         (PRINT_OPERAND_ADDRESS): Extend SYMBOL_REF handling to
11720         include LABEL_REFs too.
11721         * config/sparc/sparc.c (sparc_expand_move): Don't assume that
11722         _GLOBAL_OFFSET_TABLE_ - label_ref is a link-time constant on
11723         VxWorks.
11724         (legitimize_pic_address): Handle LABEL_REFs like SYMBOL_REFs
11725         on VxWorks.
11726         (load_pic_register): Use gen_vxworks_load_got for VxWorks.
11727         (sparc_emit_call_insn): New function.
11728         (sparc_function_ok_for_sibcall): Restrict sibcalls to locally-binding
11729         functions when generating VxWorks PIC.
11730         * config/sparc/sparc.md (vxworks_load_got): New pattern.
11731         (call, call_value): Use sparc_emit_call_insn instead of
11732         emit_call_insn.
11733
11734 2007-05-09  Bob Wilson  <bob.wilson@acm.org>
11735
11736         * config/xtensa/xtensa.c (xtensa_output_literal): Don't use #if.
11737
11738 2007-05-09  Bob Wilson  <bob.wilson@acm.org>
11739
11740         * config/xtensa/xtensa.c (xtensa_output_literal): Mask out high bits
11741         for floating-point values if HOST_BITS_PER_LONG > 32.  Use
11742         split_double instead of operand_subword.
11743
11744 2007-05-08  Bernd Schmidt  <bernd.schmidt@analog.com>
11745
11746         * config/bfin/bfin.h (LOCAL_ALIGNMENT): Define.
11747         * config/bfin/bfin.c (bfin_local_alignment): New function.
11748         * config/bfin/bfin-protos.h (bfin_local_alignment): Declare it.
11749
11750 2007-05-08  Chao-ying Fu  <fu@mips.com>
11751
11752         * doc/md.texi (msub@var{m}@var{n}4, usub@var{m}@var{n}4): Document.
11753         * optabs.h (OTI_smsub_widen, OTI_umsub_widen): New optab_indexes.
11754         (smsub_widen_optab, umsub_widen_optab): Define.
11755         * optabs.c (init_optabs): Initialize smsub_widen_optab and
11756         umsub_widen_optab.
11757         * genopinit.c (optabs): Fill in smsub_widen_optab and
11758         umsub_widen_optab.
11759         * expr.c (expand_expr_real_1): Try to use smsub_widen_optab
11760         and umsub_widen_optab to implement multiply-subtract sequences.
11761         * config/mips/mips.md (*msac<u>_di): Rename to...
11762         (<u>msubsidi4): ...this.  Extend condition to include
11763         GENERATE_MADD_MSUB and TARGET_DSPR2.  Change the constraint
11764         of operand 0 to "ka" and use the three-operand form of msub<u>
11765         for TARGET_DSPR2.
11766         * config/mips/mips-dspr2.md (mips_msub, mips_msubu): Convert
11767         to define_expands.
11768
11769 2007-05-08  Kaz Kojima  <kkojima@gcc.gnu.org>
11770
11771         PR rtl-optimization/28011
11772         * reload.c (push_reload): Set dont_share if IN appears in OUT
11773         also when IN is a PLUS rtx.
11774         (reg_overlap_mentioned_for_reload_p): Return true if X and IN
11775         are same PLUS rtx.
11776
11777 2007-05-08  Kazu Hirata  <kazu@codesourcery.com>
11778
11779         * emit-rtl.c (unshare_all_rtl_1): Don't copy DECL_RTL.  Don't
11780         call unshare_all_decls.
11781         (unshare_all_rtl): Adjust the call to unshare_all_rtl_1.
11782         (unshare_all_decls): Remove.
11783
11784 2007-05-08  Simon Martin  <simartin@users.sourceforge.net>
11785
11786         PR 31847
11787         * tree-dump.c (dump_options): Don't use TDF_DIAGNOSTIC in "*-all" tree
11788         dumps.
11789
11790 2007-05-08  Sandra Loosemore  <sandra@codesourcery.com>
11791             Nigel Stephens  <nigel@mips.com>
11792
11793         * config/mips/mips.h (MAX_FPRS_PER_FMT): Renamed from FP_INC.
11794         Update comments and all uses.
11795         (MIN_FPRS_PER_FMT): Define.
11796         * config/mips/mips.c (function_arg): Fix to correctly handle
11797         the -mips32r2 -mfp64 -mabi=32 case.
11798         (override_options): Enable use of odd-numbered registers for
11799         SFmode values on MIPS32.
11800         (mips_save_reg_p): Save whole floating-point register pair if
11801         either half is used.
11802         (compute_frame_size): Fix comment.
11803
11804 2007-05-08  Jie Zhang  <jie.zhang@analog.com>
11805
11806         * config/bfin/bfin-protos.h (bfin_expand_epilogue): Add a third
11807         argument of type bool.
11808         * config/bfin/bfin.c (add_to_reg): Add epilogue_p as a fourth
11809         argument. Safely select temporary P register according to it.
11810         (do_link): Change call site of add_to_reg accordingly.
11811         (do_unlink): Add epilogue_p as a fourth argument and pass it
11812         to add_to_reg.
11813         (expand_interrupt_handler_epilogue): Change call of do_unlink
11814         accordingly.
11815         (bfin_expand_prologue): Add a third argument sibcall_p.
11816         * config/bfin/bfin.md (epilogue): Change call of
11817         bfin_expand_epilogue accordingly.
11818         (sibcall_epilogue): Likewise.
11819         (eh_return_internal): Likewise.
11820
11821         * config/bfin/bfin-protos.h (enum bfin_cpu): Add
11822         BFIN_CPU_BF534, BFIN_CPU_BF536 and BFIN_CPU_BF561.
11823         * config/bfin/bfin.c (bfin_handle_option): Handle
11824         -mcpu=bf534, -mcpu=bf536 and -mcpu=bf561.
11825         * config/bfin/bfin.h (TARGET_CPU_CPP_BUILTINS):
11826         Support bf534, bf536 and bf561.
11827         * doc/invoke.texi (Blackfin Options): Document -mcpu and -msim.
11828
11829 2007-05-08  Uros Bizjak  <ubizjak@gmail.com>
11830
11831         PR target/31854
11832         * config/i386/i386.c (ix86_function_regparm): Process local
11833         functions only when TREE_CODE (decl) equals FUNCTION_DECL.
11834
11835 2007-05-07  Mike Stump  <mrs@apple.com>
11836
11837         * doc/invoke.texi (Warning Options): Document that -Wempty-body
11838         also checks for and while statements in C++.
11839
11840 2007-05-07  Nathan Froyd  <froydnj@codesourcery.com>
11841
11842         * gcc.c (at_file_supplied): New variable.
11843         (main): Set it if we expanded argv.
11844         (do_spec_1): Pass an @-file to the linker if we were called with
11845         an @-file argument and HAVE_GNU_LD.
11846         * collect2.c (at_file_supplied): New variable.
11847         (response_file): New variable.
11848         (collect_exit): Unlink response_file if necessary.
11849         (handler): Likewise.
11850         (do_wait): Likewise.
11851         (main): Set at_file_supplied if we expanded argv.
11852         (collect_execute): Pass an @-file to subprocesses if we were called
11853         with an @-file argument.
11854         * configure.ac: Add define for HAVE_GNU_LD.
11855         * configure: Regenerate.
11856         * config.in: Regenerate.
11857
11858 2007-05-07  Naveen.H.S  <naveen.hs@kpitcummins.com>
11859
11860         * config/m32c/muldiv.md (mulhisi3_c): Limit the mode of the 2nd
11861         operand to HI mode.
11862         (mulsi3): New.
11863         (divsi3): New.
11864         (udivsi3): New.
11865
11866 2007-05-07  Jayant Sonar  <jayants@kpitcummins.com>
11867
11868         * config/m32c/m32c.c (SYMBOL_FLAG_FUNCVEC_FUNCTION): Define.
11869         (TARGET_ENCODE_SECTION_INFO): Re-define.
11870         (m32c_encode_section_info): New
11871         (function_vector_handler): New
11872         (current_function_special_page_vector): New
11873         (m32c_special_page_vector_p): New.
11874         * config/m32c/m32c-protos.h (m32c_special_page_vector_p):
11875         Prototype.
11876         * config/m32c/jump.md: Added instruction JSRS for functions
11877         with attribute "function_vector".
11878         * doc/extend.texi (function_vector): Added description
11879         for M16C, M32C targets.
11880
11881 2007-05-07  DJ Delorie  <dj@redhat.com>
11882
11883         PR 31794
11884         * config/m32c/shift.md (ashlpsi3_i, ashrpsi3_i, ashlpsi3,
11885         ashrpsi3, lshrpsi3): Update shift count constraint.
11886
11887 2007-05-07  Danny Smith  <dannysmith@users.sourceforge.net>
11888             Nathan Froyd  <froydnj@codesourcery.com>
11889
11890         PR 22133
11891         * c-incpath.c (add_path): Strip trailing path separators.
11892
11893 2007-05-07  Eric Botcazou  <ebotcazou@adacore.com>
11894
11895         * tree-ssa-dom.c (tree_ssa_dominator_optimize): Reset cfg_altered.
11896         Free dominance info before purging EH edges.
11897         (eliminate_degenerate_phis): Likewise.
11898         (propagate_rhs_into_lhs): Set cfg_altered to true instead of 1.
11899
11900 2007-05-07  Jan Hubicka  <jh@suse.cz>
11901
11902         * gimplify.c (gimplify_expr): Do not crash when folding
11903         (void *)(int)&a + 4.
11904
11905 2007-05-07  Francois-Xavier Coudert  <fxcoudert@gcc.gnu.org>
11906
11907         PR driver/31694
11908         * c-opts.c (lang_fortran): Make it non static.
11909         * c-common.h (lang_fortran): New prototype.
11910         * c-cppbuiltin.c (c_cpp_builtins): Create a __GFORTRAN__ if the
11911         -lang-fortran option was passed by the driver.
11912
11913 2007-05-06  Eric Botcazou  <ebotcazou@adacore.com>
11914
11915         * timevar.c (timevar_print): Test ENABLE_ASSERT_CHECKING instead
11916         of ASSERT_CHECKING.  Tweak message.
11917
11918 2007-05-06  Revital Eres  <eres@il.ibm.com>
11919
11920         PR 30957
11921         * loop-unroll.c (insert_var_expansion_initialization):
11922         Initialize the expansions with -zero instead of +zero.
11923
11924 2007-05-05  Aurelien Jarno  <aurelien@aurel32.net>
11925
11926         * config/pa/pa.md: Split tgd_load, tld_load and tie_load
11927         into pic and non-pic versions. Mark r19 as used for
11928         tgd_load_pic, tld_load_pic and tie_load_pic. Mark r27 as used
11929         for tgd_load, tld_load and tie_load .
11930         * config/pa/pa.c (legitimize_tls_address): Emit pic or non-pic
11931         version of tgd_load, tld_load and tie_load depending on the
11932         value of flag_pic.
11933
11934 2007-05-04  Ulrich Drepper  <drepper@redhat.com>
11935             Jakub Jelinek  <jakub@redhat.com>
11936
11937         * crtstuff.c (HIDDEN_DTOR_LIST_END): New macro.
11938         (__do_global_dtors_aux): Use more paranoid loop to run
11939         destructors if HIDDEN_DTOR_LIST_END.
11940         (__DTOR_END__): Export as a hidden symbol when HIDDEN_DTOR_LIST_END.
11941
11942 2007-05-04  Jakub Jelinek  <jakub@redhat.com>
11943
11944         * varasm.c (align_variable): Don't increase alignment for
11945         DECL_THREAD_LOCAL_P variables above BITS_PER_WORD through
11946         DATA_ALIGNMENT or CONSTANT_ALIGNMENT.
11947
11948 2007-05-04  Josh Conner  <jconner@apple.com>
11949
11950         * basic-block.h (cdi_direction): Assign values to all enumeration
11951         constants.
11952         (dom_computed): Remove.
11953         (dom_info_state): New.
11954         (set_dom_info_availability): New.
11955         * tree-ssa-loop-im.c (determine_invariantness): Initialize
11956         walk_data.dom_direction.
11957         * cfghooks.c (delete_basic_block): Use dom_info_available_p()
11958         instead of dom_computed[].
11959         (split_edge): Likewise.
11960         (create_basic_block): Likewise.
11961         (merge_blocks): Likewise.
11962         * ifcvt.c (find_if_header): Likewise.
11963         * tree-cfgcleanup.c (cleanup_tree_cfg): Likewise.
11964         * tree-ssa-dce.c (remove_dead_stmt): Likewise.
11965         * tree-ssa.c (verify_ssa): Likewise.
11966         * tree-cfg.c (tree_verify_flow_info): Likewise.
11967         (remove_edge_and_dominated_blocks): Likewise.
11968         * dominance.c (dom_computed): Make static.
11969         (calc_dfs_tree_nonrec): Change third param to a bool.
11970         (calc_dfs_tree): Change second param to a bool.
11971         (calc_idioms): Change second param to a bool.  Use
11972         dom_convert_dir_to_idx.
11973         (init_dom_info): Validate dir before using.
11974         (dom_convert_dir_to_idx): New.
11975         (calculate_dominance_info): Use dom_convert_dir_to_idx.  New
11976         variable 'reverse' used for calling calc_dfs_tree and calc_idoms.
11977         (free_dominance_info): Use dom_convert_dir_to_idx.
11978         (get_immediate_dominator): Likewise.
11979         (set_immediate_dominator): Likewise.
11980         (get_dominated_by): Likewise.
11981         (redirect_immediate_dominators): Likewise.
11982         (nearest_common_denominator): Likewise.
11983         (dominated_by_p): Likewise.
11984         (bb_dom_dfs_in): Likewise.
11985         (bb_dom_dfs_out): Likewise.
11986         (recount_dominator): Likewise.
11987         (iterate_fix_dominators): Likewise.
11988         (add_to_dominance_info): Likewise.
11989         (delete_from_dominance_info): Likewise.
11990         (first_dom_son): Likewise.
11991         (next_dom_son): Likewise.
11992         (dom_info_available_p): Likewise.
11993         (dom_info_state): New.
11994         (set_dom_info_availability): New.
11995
11996 2007-05-04  Andreas Krebbel  <krebbel1@de.ibm.com>
11997
11998         * config/s390/s390.md ("fix_trunc<mode>di2", "fix_trunc<mode>si2"):
11999         Expander removed.
12000         ("fix_trunc<DSF:mode><GPR:mode>2"): Expander added.
12001
12002 2007-05-04  Bob Wilson  <bob.wilson@acm.org>
12003
12004         * config/xtensa/xtensa.md (adddi3, adddi_carry): Delete.
12005         (subdi3, subdi_carry): Delete.
12006
12007 2007-05-04  Jan Hubicka  <jh@suse.cz>
12008             Richard Guenther  <rguenther@suse.de>
12009
12010         * opts.c (decode_options): Do not fiddle with inlining
12011         parameters in case of optimizing for size.
12012         * ipa-inline.c (cgraph_decide_recursive_inlining): When optimizing
12013         for size do nothing.
12014         (cgraph_decide_inlining_of_small_function): When optimizing for
12015         size never inline functions increasing caller size.
12016         (cgraph_early_inlining): Inline for size when optimizing for size.
12017
12018 2007-05-04  Bernd Schmidt  <bernd.schmidt@analog.com>
12019
12020         * config/bfin/bfin.md (<optab>di3): Now a define_expand which expands
12021         logical operations piecewise.
12022         (<optab>di_zesidi_di, <optab>di_sesidi_di, negdi2, one_cmpldi2,
12023         zero_extendsidi2, subdi_di_zesidi, subdi_zesidi_di, subdi_di_sesidi,
12024         subdi_sesidi_di): Delete.
12025         (add_with_carry): Produce carry in CC instead of a DREG to shorten
12026         the generated sequence.  Allow three-reg add in constraints.  Rewrite
12027         the rtl expression for carry to avoid zero_extend of a constant.
12028         (sub_with_carry): New pattern.
12029         (adddi3, subdi3): Change into define_expand.  For subtract, generate a
12030         different sequence not involving jumps.
12031         (notbi): Now a named pattern.
12032
12033 2007-05-04  Bradley Lucier  <lucier@math.purdue.edu>
12034
12035         * doc/invoke.texi (i386 and x86-64 Options) [-mpc32, -mpc64, -mpc80]:
12036         Add the note about a significant loss of accuracy of some
12037         mathematical routines when these options are used.
12038
12039 2007-05-04  Maxim Kuvyrkov  <mkuvyrkov@ispras.ru>
12040
12041         * haifa-sched.c (rtx_vec_t): New typedef.
12042         (contributes_to_priority_p): Extract piece of priority () into new
12043         static function.
12044         (priority): Use the function.  Add assertion.
12045         (rank_for_schedule, set_priorities): Add assertion to check that
12046         insn's priority is initialized.
12047         (clear_priorities, calc_priorities): Change signature.  Make it update
12048         all relevant insns.  Update all callers ('add_to_speculative_block ()'
12049         and 'create_block_check_twin ()').
12050         * sched-int.h (struct haifa_insn_data): Remove field 'priority_known'.
12051         Add new field 'priority_status'.
12052         (INSN_PRIORITY_STATUS): New macro.
12053         (INSN_PRIORITY_KNOWN): Change to use INSN_PRIORITY_STATUS.
12054
12055 2007-05-04  Maxim Kuvyrkov  <mkuvyrkov@ispras.ru>
12056
12057         * sched-ebb.c (debug_ebb_dependencies): New static function.
12058         (init_ready_list): Use it.
12059
12060         * sched-rgn.c (debug_dependencies): Split into 'debug_dependencies ()'
12061         with changed signature and 'debug_rgn_dependencies ()'.
12062         (debug_rgn_dependencies): New static function.
12063         (init_ready_list): Use it.
12064
12065         * sched-int.h (debug_dependencies): Declare.
12066
12067 2007-05-04  Andreas Krebbel  <krebbel1@de.ibm.com>
12068
12069         * libgcc-std.ver (__ffssi2): Added to GCC_4.3.0 section.
12070
12071 2007-05-04  Dirk Mueller  <dmueller@suse.de>
12072
12073         * c.opt(Wmain,ffreestanding): Enable for C++,ObjC++.
12074
12075 2007-05-03  Jan Hubicka  <jh@suse.cz>
12076
12077         * fold-const.c (fold_unary): Convert (T1)(X op Y) into
12078         ((T1)X op (T1)Y), for pointer type in more cases than before.
12079
12080         * gimplify.c (gimplify_expr): Fold (void *)&a + 4.
12081
12082         * tree-object-size.c (plus_expr_object_size): When operand size is
12083         unknown, return unknown.
12084
12085 2007-05-03  Dirk Mueller  <dmueller@suse.de>
12086
12087         * doc/invoke.texi (-m386,-m486,-mpentium,-mpentiumpro): Remove.
12088
12089         * config/i386/i386.h (CC1_CPU_SPEC): Remove handling for deprecated
12090         options.
12091
12092         * config/i386/i386.opt (m386,m486,mpentium,mpentiumpro): Remove.
12093
12094 2007-05-03  Janis Johnson  <janis187@us.ibm.com>
12095
12096         * doc/sourcebuild.texi (Test Directives) Clarify dg-excess-errors.
12097
12098 2007-05-03  Joseph Myers  <joseph@codesourcery.com>
12099
12100         * config/soft-fp/double.h, config/soft-fp/extended.h,
12101         config/soft-fp/floatundidf.c, config/soft-fp/floatundisf.c,
12102         config/soft-fp/floatunsidf.c, config/soft-fp/floatunsisf.c,
12103         config/soft-fp/op-2.h, config/soft-fp/op-4.h,
12104         config/soft-fp/op-common.h, config/soft-fp/quad.h: Update from
12105         glibc CVS.
12106
12107 2007-05-03  Ian Lance Taylor  <iant@google.com>
12108
12109         * config/rs6000/rs6000.c (rs6000_override_options): Don't set
12110         MASK_PPC_GFXOPT for 8540 or 8548.
12111
12112 2007-05-03  Uros Bizjak  <ubizjak@gmail.com>
12113
12114         * tree-vect-transform.c (vect_update_inits_of_drs): Use
12115         vect_print_dump_info() to output debug information.
12116
12117 2007-05-03  Uros Bizjak  <ubizjak@gmail.com>
12118
12119         PR target/31768
12120         * config/i386/i386.c (print_operand) ['z']: Output 'w' for
12121         operands of size 2 when operand is not MEM_P.
12122
12123 2007-05-03  Zdenek Dvorak  <dvorakz@suse.cz>
12124
12125         PR tree-optimization/30565
12126         * lambda-code.c (perfect_nestify): Fix updating of dominators.
12127
12128 2007-05-03  Bernd Schmidt  <bernd.schmidt@analog.com>
12129
12130         * config/bfin/bfin.md (addpdi3, us_truncpdisi2): New patterns.
12131         (umulsi3_highpart): Use them.
12132         * config/bfin/lib1funcs.asm (__umulsi3_highpart): Use unsigned move
12133         for final accumulator to D regisster tranfser.
12134
12135 2007-05-03  Dorit Nuzman  <dorit@il.ibm.com>
12136
12137         PR tree-optimization/31699
12138         * tree-vect-analyze.c (vect_update_misalignment_for_peel): Remove
12139         wrong code.
12140         (vect_enhance_data_refs_alignment): Compute peel amount using
12141         TYPE_VECTOR_SUBPARTS instead of vf.
12142         * tree-vect-transform.c (vect_gen_niters_for_prolog_loop): Likewise.
12143
12144 2007-05-02  Brooks Moses  <brooks.moses@codesourcery.com>
12145
12146         PR bootstrap/31776
12147         * system.h: Remove inclusion of double-int.h
12148         * tree.h: Include double-int.h
12149         * gengtype.c: Likewise
12150         * cfgloop.h: Likewise
12151         * Makefile.in: Adjust dependencies on double-int.h
12152
12153 2007-05-02  Eric Christopher  <echristo@apple.com>
12154
12155         * config/darwin.h (TARGET_OPTION_TRANSLATE_TABLE): Translate
12156         -shared to -Zdynamiclib.
12157
12158 2007-05-02  Seongbae Park  <seongbae.park@gmail.com>
12159
12160         PR c++/31663
12161         * c-common.c (strip_pointer_or_array_types): New function.
12162         * c-common.h (strip_pointer_or_array_types): New function declaration.
12163
12164 2007-05-03  Zdenek Dvorak  <dvorakz@suse.cz>
12165
12166         PR tree-optimization/31771
12167         * tree-cfg.c (move_block_to_fn): Assign bb to the correct index.
12168
12169 2007-05-02  Paul Brook  <paul@codesourcery.com>
12170
12171         * config/arm/bpabi.S (aeabi_lcmp): Fix result on overflow.
12172
12173 2007-05-02  Andrew Pinski  <andrew_pinski@playstation.sony.com>
12174
12175         PR middle-end/29715
12176         * fold-const.c (fold_comparision): Remove the "foo++ == CONST"
12177         transformation.
12178
12179 2007-05-02  Nick Clifton  <nickc@redhat.com>
12180
12181         * config/frv/predicates.md (symbolic_operand): Accept CONSTs.
12182
12183 2007-05-02  Richard Guenther  <rguenther@suse.de>
12184
12185         PR tree-optimization/31146
12186         * tree-ssa-forwprop.c (forward_propagate_addr_expr_1): New
12187         argument, single_use_p.  If we have a single use that is
12188         a conversion to the definition rhs type, propagate that rhs.
12189         (forward_propagate_addr_expr): Pass single_use_p argument
12190         to forward_propagate_addr_expr_1.
12191
12192 2007-05-01  H.J. Lu  <hongjiu.lu@intel.com>
12193
12194         * config/i386/i386.c (ix86_expand_sse_comi): Remove unused
12195         variable.
12196
12197 2007-05-01  Dwarakanath Rajagopal <dwarak.rajagopal@amd.com>
12198
12199         * doc/invoke.texi: Fix typo, 'AMD Family 10h core' instead of
12200         'AMD Family 10 core'.
12201
12202 2007-05-01  Dwarakanath Rajagopal <dwarak.rajagopal@amd.com>
12203
12204         * config/i386/i386.c (override_options): Accept k8-sse3, opteron-sse3
12205         and athlon64-sse3 as improved versions of k8, opteron and athlon64
12206         with SSE3 instruction set support.
12207         * doc/invoke.texi: Likewise.
12208
12209 2007-05-01  Dwarakanath Rajagopal <dwarak.rajagopal@amd.com>
12210
12211         * config/i386/i386.c (override_options): Tuning 32-byte loop
12212         alignment for amdfam10 architecture. Increasing the max loop
12213         alignment to 24 bytes.
12214
12215 2007-05-01  Kazu Hirata  <kazu@codesourcery.com>
12216
12217         * config/m68k/constraints.md: New.
12218         * config/m68k/m68k.h (REG_CLASS_FROM_LETTER,
12219         CONST_OK_FOR_LETTER_P, CONST_DOUBLE_OK_FOR_LETTER_P,
12220         EXTRA_CONSTRAINT): Remove.
12221         * config/m68k/m68k.md: Include constraints.md.
12222         * expr.c (expand_expr_real_1): Copy DECL_RTL before using it.
12223
12224 2007-05-01  Ian Lance Taylor  <iant@google.com>
12225
12226         PR tree-optimization/31739
12227         * tree-vrp.c (vrp_val_is_max): New static function.
12228         (vrp_val_is_min): New static function.
12229         (set_value_range_to_value): Use TYPE_{MAX,MIN}_VALUE rather than
12230         copying the node.
12231         (set_value_range): Use vrp_val_is_{max,min}.
12232         (extract_range_from_assert): Likewise.
12233         (extract_range_from_binary_expr): Likewise.
12234         (extract_range_from_unary_expr): Likewise.
12235         (dump_value_range, vrp_meet): Likewise.
12236         (vrp_visit_phi_node): Likewise.
12237         * tree.c (build_distinct_type_copy): Revert change of 2007-04-27.
12238
12239 2007-05-01  Mark Mitchell  <mark@codesourcery.com>
12240
12241         * config/i386/gmon-sol2.c (size_t): New type.
12242         (intptr_t): Likewise.
12243         (s_textsize): Declare as size_t.
12244         (sbrk): Declare.
12245         (monstartup): Use size_t for sizes.
12246         (_mcount): Save and restore registers.
12247         (internal_mcount): Pass 0 as the first argument to monstartup
12248         in 64-bit mode.
12249         (moncontrol): Convert pointer to appropriately sized integer
12250         before passing to profil.
12251
12252 2007-05-01  Joseph Myers  <joseph@codesourcery.com>
12253
12254         * config/rs6000/darwin-ldouble.c (__gcc_qunord): Define if
12255         __NO_FPRS__, not just if _SOFT_DOUBLE.
12256         * config/rs6000/libgcc-ppc-glibc.ver (__gcc_qunord): Likewise.
12257         * config/rs6000/rs6000.c (rs6000_init_libfuncs): Use __gcc_qunord
12258         also for E500 double.
12259         * config/rs6000/rs6000.md (buneq, bunge, bungt, bunle, bunlt,
12260         suneq, sunge, sungt, sunle, sunlt): Disable for (TARGET_HARD_FLOAT
12261         && !TARGET_FPRS).
12262
12263 2007-05-01  Richard Guenther  <rguenther@suse.de>
12264
12265         * tree-ssa-loop-manip.c (ip_normal_pos): Check if last stmt
12266         is NULL.
12267
12268 2007-05-01  Joseph Myers  <joseph@codesourcery.com>
12269
12270         * config/rs6000/libgcc-ppc-glibc.ver (__gcc_qgt): Fix typo.
12271
12272 2007-05-01  Jan Hubicka  <jh@suse.cz>
12273
12274         * tree-vectorize.c (vect_is_simple_use): gimple_min_invariant is
12275         invariant.
12276
12277 2007-05-01  Jan Hubicka  <jh@suse.cz>
12278
12279         * tree.h (maybe_fold_offset_to_component_ref): Remove.
12280         (maybe_fold_offset_to_reference): Declare.
12281         * fold-const.c (fold_unary): Do not fold
12282         (type *)&A into &A->field_of_type_and_offset_0
12283         * tree-ssa-ccp.c (maybe_fold_offset_to_array_ref): When base type
12284         size is unknown, give up.
12285         (maybe_fold_offset_to_component_ref): Ignore firelds with unknown
12286         offsets.
12287         (maybe_fold_offset_to_reference): New.
12288         (maybe_fold_stmt_indirect): Use it.
12289         (fold_stmt_r): Fold (type *)&A+offset into A->field_if_type_and_offset.
12290         * gimplify.c (gimplify_conversion): Canonicalize conversions to
12291         field references.
12292         (gimplify_expr): Likewise for plus_expr.
12293
12294 2007-05-01  Zdenek Dvorak  <dvorakz@suse.cz>
12295
12296         * tree-ssa-loop-ivopts.c (rewrite_use_nonlinear_expr): Use
12297         bsi_after_labels.  Always insert statements before bsi.
12298         * tree-vect-transform.c (vect_create_epilog_for_reduction): Ditto.
12299         * predict.c (apply_return_prediction): Check for empty blocks.
12300         * cfgexpand.c (lab_rtx_for_bb): New variable.
12301         (label_rtx_for_bb): Do not create new tree labels.
12302         (expand_gimple_basic_block): Add labels recorded in lab_rtx_for_bb.
12303         (tree_expand_cfg): Initialize lab_rtx_for_bb.
12304         * tree-cfg.c (build_tree_cfg): Call cleanup_dead_labels after
12305         creating edges.
12306         (label_for_bb): Add field used.
12307         (update_eh_label, main_block_label): Mark the label used.
12308         (cleanup_dead_labels): Remove unused labels.
12309
12310 2007-05-01  Richard Guenther  <rguenther@suse.de>
12311
12312         * tree-vrp.c (set_value_range): Do not allocate equiv bitmap
12313         if it is not about to be set.
12314         (get_value_range): Do not pre-allocate equiv bitmap.
12315         (update_value_range): No need to clear equiv field.
12316         (add_equivalence): Change prototype to get bitmap pointer.
12317         Allocate bitmap here if it is not already.
12318         (extract_range_from_assert): Do not allocate bitmap here.
12319         Update callers to add_equivalence.
12320         (extract_range_from_ssa_name): Likewise.
12321         (get_vr_for_comparison): New static helper.
12322         (compare_name_with_value): Handle NULL equiv bitmap by
12323         peeling the first iteration of the comparison loop.
12324         Use get_vr_for_comparison.
12325         (compare_names): Handle NULL equiv bitmaps by using fake
12326         ones.  Use get_vr_for_comparison.
12327
12328 2007-04-30  Brooks Moses  <brooks.moses@codesourcery.com>
12329
12330         * double-int.c (mpz_set_double_int): Moved from
12331         tree-ssa-loop-niter.c.
12332         (mpz_get_double_int): Likewise; also, add option to wrap
12333         out-of-range integers.
12334         * double-int.h: New prototypes for above.
12335         * tree.c (get_static_type_bounds): Moved from
12336         tree-ssa-loop-niter.c; now returns TYPE_MIN_VALUE and
12337         TYPE_MAX_VALUE if they exist..
12338         * tree.h: New prototype for above.
12339         * tree-ssa-loop-niter.c: Adjust mpz_to_double_int and
12340         get_type_bounds calls.
12341         (mpz_set_double_int): Move to double-int.c.
12342         (get_type_bounds): Move to tree.c, rename to
12343         get_static_type_bounds.
12344         (mpz_to_double_int): Move to double-int.c, rename to
12345         mpz_get_double_int.
12346
12347 2007-04-30  Bob Wilson  <bob.wilson@acm.org>
12348
12349         * config/xtensa/lib1funcs.asm (__umodsi3, __modsi3): Rearrange so that
12350         DIV0 exception can fall through to a normal return.
12351
12352 2007-04-30  Alexandre Oliva  <aoliva@redhat.com>
12353
12354         PR middle-end/22156
12355         Temporarily revert:
12356         2007-04-06  Andreas Tobler  <a.tobler@schweiz.org>
12357         * tree-sra.c (sra_build_elt_assignment): Initialize min/maxshift.
12358         2007-04-05  Alexandre Oliva  <aoliva@redhat.com>
12359         * tree-sra.c (try_instantiate_multiple_fields): Needlessly
12360         initialize align to silence bogus warning.
12361         2007-04-05  Alexandre Oliva  <aoliva@redhat.com>
12362         * tree-sra.c (struct sra_elt): Add in_bitfld_block.  Remove
12363         all_no_warning.
12364         (struct sra_walk_fns): Remove use_all parameter from use.
12365         (sra_hash_tree): Handle BIT_FIELD_REFs.
12366         (sra_elt_hash): Don't hash bitfld blocks.
12367         (sra_elt_eq): Skip them in parent compares as well.  Handle
12368         BIT_FIELD_REFs.
12369         (sra_walk_expr): Don't maintain or pass down use_all_p.
12370         (scan_use): Remove use_all parameter.
12371         (scalarize_use): Likewise.  Re-expand assignment to
12372         BIT_FIELD_REF of gimple_reg.  De-scalarize before input or
12373         output, and re-scalarize after output.  Don't mark anything
12374         for no warning.
12375         (scalarize_ldst): Adjust.
12376         (scalarize_walk_gimple_modify_statement): Likewise.
12377         (build_element_name_1): Handle BIT_FIELD_REFs.
12378         (instantiate_element): Don't warn for any element whose parent
12379         is used as a whole.
12380         (instantiate_missing_elements_1): Return the sra_elt.
12381         (canon_type_for_field): New.
12382         (try_instantiate_multiple_fields): New.
12383         (instantiate_missing_elemnts): Use them.
12384         (mark_no_warning): Removed.
12385         (generate_one_element_ref): Handle BIT_FIELD_REFs.
12386         (REPLDUP, sra_build_elt_assignment): New.
12387         (generate_copy_inout): Use them.
12388         (generate_element_copy): Likewise.  Handle bitfld differences.
12389         (generate_element_zero): Don't recurse for blocks.  Use
12390         sra_build_elt_assignment.
12391         (generate_one_element_int): Take elt instead of var.  Use
12392         sra_build_elt_assignment.
12393         (generate_element_init_1): Adjust.
12394         (scalarize_use, scalarize_copy): Use REPLDUP.
12395         (scalarize_ldst): Move assert before dereference.
12396         (dump_sra_elt_name): Handle BIT_FIELD_REFs.
12397
12398 2007-04-30  Andrew Pinski  <andrew_pinski@playstation.sony.com>
12399
12400         PR C++/31721
12401         * tree.c (reconstruct_complex_type): Reconstruct a reference
12402         correctly.
12403         Also use the same mode for the pointer as the old pointer type.
12404
12405 2007-04-30  Francois-Xavier Coudert  <coudert@clipper.ens.fr>
12406
12407         * doc/trouble.texi (Interoperation): Remove note about Ultrix
12408         Fortran compiler.
12409
12410 2007-04-29  Zdenek Dvorak  <dvorakz@suse.cz>
12411
12412         PR rtl-optimization/31676
12413         * df-scan.c (record_nonlocal_goto_receiver_defs): New function.
12414         (df_refs_record): Call it.
12415
12416 2007-04-29  Bernd Schmidt  <bernd.schmidt@analog.com>
12417
12418         * rtl.def (SS_ABS): New code.
12419         * config/bfin/bfin.c (print_operand): New modifier 'v'.
12420         (enum bfin_builtins): Add BFIN_BUILTIN_SUM_2X16, BFIN_BUILTIN_ABS_1x32,
12421         BFIN_BUILTIN_ROUND_1x32, BFIN_BUILTIN_MULT_1x32x32,
12422         BFIN_BUILTIN_MULT_1x32x32NS, BFIN_BUILTIN_SSASHIFT_1x32.
12423         (bfin_init_builtins): Define them.
12424         (bdesc_1arg, bdesc_2arg): Add some of them here, ...
12425         (bfin_expand_builtin): ... and handle the others here.
12426         * config/bfin/bfin.md (ssabssi2, ssroundsi2, ssashiftsi3,
12427         flag_mul_macv2hi_parts_acconly_andcc0): New patterns.
12428         (ss_absv2hi2): Renamed from absv2hi; use ss_abs code.
12429         (ssashiftv2hi3, ssashifthi3, lshiftv2hi3, lshifthi3): Shift count
12430         operand is only HImode.
12431
12432 2007-04-29  Steven Bosscher  <steven@gcc.gnu.org>
12433
12434         * regclass.c (scan_one_insn): Remove splitting of
12435         two address insns.
12436
12437 2007-04-28  Sandra Loosemore  <sandra@codesourcery.com>
12438             Nigel Stephens  <nigel@mips.com>
12439
12440         * config/mips/mips.h (SLOW_BYTE_ACCESS): Turn off for MIPS16.
12441
12442 2007-04-28  Jan Hubicka  <jh@suse.cz>
12443
12444         * config/alpha/alpha.c (alpha_output_mi_thunk_osf): Use
12445         insn_locators_alloc instead of insn_locators_initialize;
12446         call reset_block_changes.
12447         * config/sparc/sparc.c (sparc_output_mi_thunk): Likewise.
12448         * config/sh/sh.c (sparc_output_mi_thunk): Likewise.
12449         * config/is64/ia64.c (ia64_output_mi_thunk): Likewise.
12450         * config/rs6000/rs6000.c (rs6000_output_mi_thunk): Likewise.
12451         * config/score/score.c (th_output_mi_thunk): Likewise.
12452         * config/mips/mips.c (mips_output_mi_thunk): Likewise.
12453         * cfglyaout.c (set_curr_insn_source_location, set_curr_insn_block):
12454         tolerate uninitialized locator info.
12455
12456         Re-apply:
12457         * function.c (init_function_start): Don't init line number info.
12458         (expand_function_end): Update.
12459         (reset_block_changes, record_block_change, finalize_block_changes,
12460         check_block_change, free_block_changes): Kill.
12461         * function.h (reset_block_changes, record_block_change,
12462         finalize_block_changes, check_block_change, free_block_changes):
12463         Remove prototypes.
12464         (struct function): Remove ib_boundaries_block.
12465         * emit-rtl.c (make_insn_raw, make_jump_insn_raw, make_call_insn_raw):
12466         Use curr_insn_locator to initialize locator.
12467         (emit_line_note): Remove.
12468         * cfgexpand.c (expand_gimple_cond_expr): Update.
12469         (construct_exit_block): Likewise.
12470         (tree_expand_cfg): Initialize/finalize locators.
12471         * expr.c (expand_expr_real): Update.
12472         * cfglayout.c (line_locators_locs, line_locators_lines,
12473         file_locators_locs, file_locators_files): Remove.
12474         (set_block_levels): Move to cfgexpand.c.
12475         (insn_locators_initialize): Remove.
12476         (pass_insn_locators_initialize): Remove.
12477         (locations_locators_locs, locations_locators_vals): New static vars.
12478         (curr_location, last_location, curr_block, last_block, curr_rtl_loc):
12479         Likewise.
12480         (insn_locators_alloc, insn_locators_finalize,
12481         set_curr_insn_source_location, set_curr_insn_block, curr_insn_locator):
12482         New functions.
12483         (locator_location): New.
12484         (locator_line, locator_file): Rewrite.
12485         * rtl.h (emit_line_note): Kill.
12486         (insn_locators_alloc, insn_locators_finalize,
12487         set_curr_insn_source_location, set_curr_insn_block, curr_insn_locator):
12488         Declare.
12489         * tree-inline.c (initialize_cfun): Do not initialize
12490         ib_boundaries_block.
12491         * passes.c (pass_insn_locators_initialize): Remove.
12492
12493 2007-04-28  Zdenek Dvorak  <dvorakz@suse.cz>
12494
12495         * tree-cfg.c (move_block_to_fn): Release bb from dominance
12496         info.  Update last_basic_block correctly.
12497
12498 2007-04-27  Kaz Kojima  <kkojima@gcc.gnu.org>
12499
12500         PR target/31701
12501         * config/sh/sh.c (output_stack_adjust): Avoid using the frame
12502         register itself to hold the offset constant.  Tell flow the use
12503         of r4 and r5 when they are used.
12504
12505 2007-04-27  Richard Guenther  <rguenther@suse.de>
12506
12507         * tree-ssa-forwprop.c (forward_propagate_into_cond): Keep track
12508         if we simplified anything.
12509         (tree_ssa_forward_propagate_single_use_vars): Defer overflow
12510         warnings until we did a simplification and the stmt was not
12511         marked as TREE_NO_WARNING.
12512
12513 2007-04-27  Mike Stump  <mrs@apple.com>
12514
12515         * config/rs6000/darwin.h (ALWAYS_PUSH_CONSTS_USING_REGS_P): Remove.
12516
12517 2007-04-27  Ian Lance Taylor  <iant@google.com>
12518
12519         PR middle-end/31710
12520         * tree.c (build_distinct_type_copy): If TYPE_MIN_VALUE or
12521         TYPE_MAX_VALUE exist, convert them to the new type.
12522
12523 2007-04-27  Zdenek Dvorak  <dvorakz@suse.cz>
12524
12525         * tree-cfgcleanup.c (cleanup_tree_cfg): Verify dominance info
12526         if it claims to be available.
12527         * tree-ssa-dce.c (remove_dead_stmt): Mark cfg as altered when
12528         edge is redirected.
12529         (perform_tree_ssa_dce): Always free postdominators.
12530
12531 2007-04-27  Richard Henderson  <rth@redhat.com>
12532
12533         * config/alpha/predicates.md (aligned_memory_operand): Mark
12534         as define_special_predicate.
12535         (unaligned_memory_operand, normal_memory_operand): Likewise.
12536         (reg_or_unaligned_mem_operand): Remove.
12537         (any_memory_operand): Match the documentation and check for
12538         non-renumbered pseudos during reload.
12539         * config/alpha/alpha.c (alpha_secondary_reload): Rename from
12540         alpha_secondary_reload_class, update to new interface, make static.
12541         Handle CQImode like HImode.  Remove FP subreg check.
12542         (alpha_expand_mov): Use replace_equiv_address.
12543         (alpha_expand_mov_nobwx): Use any_memory_operand.
12544         (TARGET_SECONDARY_RELOAD): New.
12545         * config/alpha/alpha.h (SECONDARY_INPUT_RELOAD_CLASS): Remove.
12546         (SECONDARY_OUTPUT_RELOAD_CLASS): Remove.
12547         * config/alpha/sync.md (I12MODE, I48MODE, modesuffix): Move ...
12548         * config/alpha/alpha.md: ... here.
12549         (RELOAD12, reloadmode): New.
12550         (movcqi): New.
12551         (reload_in<RELOAD12>): Macro-ize from reload_inqi, reload_inhi.
12552         Don't handle the aligned case here.
12553         (reload_out<RELOAD12>): Macro-ize from reload_outqi, reload_outhi.
12554         (reload_in<I12MODE>_aligned): Macro-ize from reload_inqi_help,
12555         reload_inhi_help.  Don't expect a scratch register.
12556         (reload_out<I12MODE>_aligned): Macro-ize from reload_outqi_help,
12557         reload_outhi_help.
12558         * config/alpha/alpha-protos.h (alpha_secondary_reload_class): Remove.
12559
12560 2007-04-27  Richard Guenther  <rguenther@suse.de>
12561
12562         * tree-ssa-forwprop.c (get_prop_dest_stmt): Fix comment typo.
12563
12564 2007-04-27  Richard Guenther  <rguenther@suse.de>
12565
12566         PR tree-optimization/30965
12567         PR tree-optimization/30978
12568         * Makefile.in (tree-ssa-forwprop.o): Depend on $(FLAGS_H).
12569         * tree-ssa-forwprop.c (forward_propagate_into_cond_1): Remove.
12570         (find_equivalent_equality_comparison): Likewise.
12571         (simplify_cond): Likewise.
12572         (get_prop_source_stmt): New helper.
12573         (get_prop_dest_stmt): Likewise.
12574         (can_propagate_from): Likewise.
12575         (remove_prop_source_from_use): Likewise.
12576         (combine_cond_expr_cond): Likewise.
12577         (forward_propagate_comparison): New function.
12578         (forward_propagate_into_cond): Rewrite to use fold for
12579         tree combining.
12580         (tree_ssa_forward_propagate_single_use_vars): Call
12581         forward_propagate_comparison to propagate comparisons.
12582
12583 2007-04-27  Richard Guenther  <rguenther@suse.de>
12584
12585         PR tree-optimization/31715
12586         * tree-ssa-ccp.c (maybe_fold_offset_to_array_ref): Make
12587         sure to do computation on the offset in an appropriate
12588         signed type.
12589
12590 2007-04-27  Richard Sandiford  <richard@codesourcery.com>
12591
12592         * reload.h (elimination_target_reg_p): Declare.
12593         * reload.c (find_reloads): Don't apply the reg_rtx move
12594         optimization if the SET_DEST satisfies elimination_target_reg_p.
12595         * reload1.c (elimination_target_reg_p): New function.
12596         (gen_reload): In the move/add2 fallback, make sure that op0
12597         does not overlap the destination register.
12598
12599 2007-04-27  Zdenek Dvorak  <dvorakz@suse.cz>
12600
12601         * tree-ssa-loop-im.c (determine_invariantness_stmt): Attempt to
12602         transform only GIMPLE_MODIFY_STMTs.
12603         * tree-complex.c (expand_complex_operations_1): Ditto.
12604         (expand_complex_div_wide): Do not create gotos in COND_EXPR branches.
12605         * tree-ssa-loop-manip.c (build_if_stmt): Removed.
12606         (tree_transform_and_unroll_loop): Do not create gotos in COND_EXPR
12607         branches.
12608         * value-prof.c (tree_divmod_fixed_value, tree_mod_pow2,
12609         tree_mod_subtract, tree_ic, tree_stringop_fixed_value): Ditto.
12610         * omp-low.c (expand_parallel_call, expand_omp_for_generic,
12611         expand_omp_for_static_chunk, expand_omp_for_static_nochunk): Ditto.
12612         * tree-vectorizer.c (slpeel_make_loop_iterate_ntimes,
12613         slpeel_add_loop_guard): Ditto.
12614         * tree-mudflap.c (mf_build_check_statement_for): Ditto.
12615         * lambda-code.c (perfect_nestify): Ditto.
12616         * tree-iterator.c (tsi_split_statement_list_before): Fix splitting
12617         before the first statement.
12618         * tree-optimize.c (execute_free_datastructures): Fix comments.
12619         (execute_free_cfg_annotations): Do not call disband_implicit_edges.
12620         * tree-flow.h (disband_implicit_edges): Declaration removed.
12621         * tree-cfg.c (make_cond_expr_edges): Remove gotos from COND_EXPR
12622         branches.
12623         (cleanup_dead_labels, tree_redirect_edge_and_branch): Handle
12624         COND_EXPRs without gotos.
12625         (disband_implicit_edges, has_label_p): Removed.
12626         (tree_verify_flow_info): Verify that COND_EXPR branches are empty.
12627         (tree_lv_add_condition_to_bb): Do not create gotos in COND_EXPR
12628         branches.
12629         * tree.c (build3_stat): Mark COND_EXPRs used as statements as having
12630         side effects.
12631         * tree-pretty-print.c (dump_implicit_edges): Dump implicit edges
12632         also for COND_EXPRs.
12633         * cfgexpand.c (label_rtx_for_bb): New function.
12634         (expand_gimple_cond_expr): Do not expect gotos in COND_EXPR branches.
12635         Use label_rtx_for_bb to find the labels.
12636         (expand_gimple_basic_block): Remove RETURN_EXPR at the end of the
12637         last block.  Detect fallthru edges.
12638
12639 2007-04-26  Ian Lance Taylor  <iant@google.com>
12640
12641         PR target/28675
12642         * reload.c (find_reloads_subreg_address): If the address was valid
12643         in the original mode but not in the new mode, reload the whole
12644         address.
12645
12646 2007-04-27  Zdenek Dvorak  <dvorakz@suse.cz>
12647
12648         * tree-cfgcleanup.c (cfgcleanup_altered_bbs): New global variable.
12649         (remove_fallthru_edge): Use remove_edge_and_dominated_blocks.
12650         (cleanup_control_expr_graph): Do not invalidate dominance info.
12651         Record altered blocks.
12652         (cleanup_control_flow, cleanup_forwarder_blocks): Removed.
12653         (cleanup_control_flow_bb, split_bbs_on_noreturn_calls,
12654         cleanup_tree_cfg_bb): New functions.
12655         (remove_forwarder_block): Do not maintain the worklist of blocks.
12656         Record altered blocks.
12657         (cleanup_tree_cfg_1): Iterate over cfgcleanup_altered_bbs,
12658         not over whole cfg.
12659         (cleanup_tree_cfg): Do not iterate cleanup_tree_cfg_1.  Only call
12660         delete_unreachable_blocks if dominators are not available.
12661         * tree-inline.c (optimize_inline_calls): Free dominance information
12662         earlier.
12663         * tree-flow.h (remove_edge_and_dominated_blocks,
12664         cfgcleanup_altered_bbs): Altered.
12665         * tree-cfg.c (replace_uses_by, tree_merge_blocks): Record altered
12666         blocks.
12667         (get_all_dominated_blocks, remove_edge_and_dominated_blocks): New
12668         functions.
12669         (tree_purge_dead_eh_edges): Use remove_edge_and_dominated_blocks,
12670         do not invalidate dominators.
12671
12672 2007-04-26  Anatoly Sokolov <aesok@post.ru>
12673
12674         * config/avr/avr.c (avr_mcu_types): Add support for ATmega8HVA and
12675         ATmega16HVA devices. Move AT90USB82 device to 'avr5' architecture.
12676         * config/avr/avr.h (LINK_SPEC, CRT_BINUTILS_SPECS): (Ditto.).
12677         * config/avr/t-avr (MULTILIB_MATCHES): (Ditto.).
12678
12679 2007-04-26  Steve Ellcey  <sje@cup.hp.com>
12680
12681         * config/ia64/ia64.md (ip_value):  Fix itanium_class attribute.
12682
12683 2007-04-26  Richard Guenther  <rguenther@suse.de>
12684
12685         PR tree-optimization/31703
12686         * tree-ssa-loop-im.c (rewrite_bittest): Make sure to use
12687         the right type for the target of the bittest.
12688
12689 2007-04-26  Richard Sandiford  <richard@codesourcery.com>
12690
12691         * config/i386/vx-common.h (RETURN_IN_MEMORY): Use
12692         ix86_sol10_return_in_memory.
12693
12694 2007-04-26  Richard Sandiford  <richard@codesourcery.com>
12695
12696         * config/i386/i386.c (ix86_sol10_return_in_memory): Remove unused
12697         variables.
12698
12699 2007-04-26  Jakub Jelinek  <jakub@redhat.com>
12700
12701         PR c++/31598
12702         * tree-inline.c (copy_body_r): Don't touch TREE_TYPE of OMP_CLAUSE.
12703
12704         PR tree-optimization/30558
12705         * tree-eh.c (lower_eh_filter): If EH_FILTER_MUST_NOT_THROW
12706         clear this_state.prev_try.
12707
12708 2007-04-26  Richard Sandiford  <richard@codesourcery.com>
12709             Mark Mitchell  <mark@codesourcery.com>
12710
12711         * config/i386/i386-protos.h (ix86_sol10_return_in_memory): Declare.
12712         * config/i386/i386.c (ix86_sol10_return_in_memory): New function.
12713         * config/i386/sol2-10.h (RETURN_IN_MEMORY): Use it.
12714
12715 2007-04-26  Richard Sandiford  <richard@codesourcery.com>
12716
12717         PR driver/31107
12718         * doc/invoke.texi (%:print-asm-header): Document.
12719         * gcc.c (asm_options): Use %:print-asm-header() for --target-help
12720         and -ftarget-help.
12721         (static_spec_functions): Add print-asm-header.
12722         (main): Print a banner before the --target-help linker options.
12723         (print_asm_header_spec_function): New function.
12724
12725 2007-04-25  Kaz Kojima  <kkojima@gcc.gnu.org>
12726
12727         PR target/31403
12728         * config/sh/sh.md (movsi_ie): Fix length for TARGET_SH2A.
12729         (movsf_ie): Likewise.
12730
12731 2007-04-25  Paolo Carlini  <pcarlini@suse.de>
12732
12733         * doc/extend.texi ([Type Traits]): Adjust per N2255.
12734
12735 2007-04-25  Bob Wilson  <bob.wilson@acm.org>
12736
12737         * config/xtensa/lib1funcs.asm (__udivsi3, __divsi3): Throw an
12738         exception for divide-by-zero.
12739         (__umodsi3, __modsi3): Likewise.
12740
12741 2007-04-25  Dirk Mueller  <dmueller@suse.de>
12742
12743         * c-typeck.c (build_compound_expr): Annotate warning()
12744         call with OPT_Wunused_value.
12745         * tree-ssa.c (warn_uninit): Annotate warning with
12746         OPT_Wunintialized.
12747         * c-common.c (handle_sentinel_attribute): Annotate warning
12748         call with OPT_Wattributes.
12749
12750 2007-04-25  Thiemo Seufer  <ths@mips.com>
12751
12752         * config/mips/mips.opt (mdmx, mmt, mno-mdmx): New options.
12753         (mips16): Fix typo.
12754         * config/mips/mips.h (ASM_SPEC): Pass -mmt/-mno-mt and -mdmx/-mno-mdmx
12755         on to the assembler.  Improve handling of -mno-mips16.  Add handling
12756         of -mno-mips3d, -mno-dsp, -mno-dspr2.
12757         * doc/invoke.texi (MIPS Options): Whitespace cleanup.  Fix wrong use
12758         of @itemx.  Document -mno-dsp, -mno-dspr2, -mno-paired-single, -mdmx,
12759         -mno-mdmx, -mno-mips3d, -mmt and -mno-mt.
12760
12761 2007-04-25  Danny Smith  <dannysmith.users.sourceforge.net>
12762
12763         PR target/31680
12764         * config/i386/winnt.c (i386_pe_file_end): Strip only
12765         USER_LABEL_PREFIX when writing export name.
12766
12767 2007-04-25  Richard Sandiford  <richard@codesourcery.com>
12768
12769         * config.gcc (sh-wrs-vxworks): Don't include dbxelf.h.  Include
12770         sh/elf.h, vx-common.h and vxworks.h.
12771         * config/sh/sh.h: Include config/vxworks-dummy.h.
12772         (SUBTARGET_OVERRIDE_OPTIONS): Define.
12773         (OVERRIDE_OPTIONS): Use it.
12774         * config/sh/sh.md (GOTaddr2picreg): Add suport for VxWorks RTPs.
12775         (vxworks_picreg): New pattern.
12776         * config/sh/vxworks.h (TARGET_OS_CPP_BUILTINS): Use
12777         VXWORKS_OS_CPP_BUILTINS.
12778         (LIB_SPEC, LINK_SPEC, STARTFILE_SPEC, ENDFILE_SPEC): Redefine
12779         to their VXWORKS_* equivalents.
12780         (SUBTARGET_OVERRIDE_OPTIONS, SUBTARGET_CPP_SPEC): Define.
12781         (SUBTARGET_LINK_EMUL_SUFFIX, FUNCTION_PROFILER): Define.
12782         * config/sh/lib1funcs.asm (NO_FPSCR_VALUES): Define for VxWorks PIC.
12783         (set_fpscr, ic_invalidate): Add VxWorks PIC sequences.
12784         * config/sh/t-vxworks (MULTILIB_OPTIONS): Add m4a, -mrtp and
12785         -mrtp/-fPIC multilibs.
12786         (MULTILIB_EXCEPTIONS): Generalize globs accordingly.
12787         (MULTILIB_MATCHES, EXTRA_MULTILIB_PARTS): Define.
12788         (MULTILIB_OSDIRNAMES): Delete.
12789
12790 2007-04-25  Anatoly Sokolov <aesok@post.ru>
12791
12792         PR target/18989
12793         * config/avr/avr.h (ASM_OUTPUT_ALIGN): Redefine.
12794
12795 2007-04-24  Brooks Moses  <brooks.moses@codesourcery.com>
12796
12797         * real.c (mpfr_from_real): Handle Inf and NaN, and allow the
12798         rounding mode to be specified by the caller.
12799         (real_to_mpfr) Likewise.
12800         * real.h: Update mpfr_from_real, mpfr_to_real prototypes to
12801         include new arguments.
12802         * builtins.c: Update mpfr_from_real, mpfr_to_real calls.
12803
12804 2007-04-24  Ian Lance Taylor  <iant@google.com>
12805
12806         PR tree-optimization/31605
12807         * tree-vrp.c (set_value_range): Check that min and max are not
12808         both overflow infinities.
12809         (set_value_range_to_value): New static function.
12810         (extract_range_from_binary_expr): Call set_value_range_to_value.
12811         (extract_range_from_cond_expr): Likewise.
12812         (extract_range_from_expr): Likewise.
12813         (extract_range_from_unary_expr): Likewise.  Don't create a range
12814         which overflows on both sides.
12815         (vrp_meet): Check for a useless range.
12816         (vrp_visit_phi_node): If we see a constant which looks like an
12817         overflow infinity, turn off the TREE_OVERFLOW flag.
12818
12819 2007-04-24  Ian Lance Taylor  <iant@google.com>
12820
12821         * flow.c (elim_reg_cond): Handle a comparison of a subreg.
12822
12823 2007-04-24  Simon Martin  <simartin@users.sourceforge.net>
12824
12825         PR diagnostic/25923
12826         * tree-pass.h (TDF_DIAGNOSTIC): New dump control to specify that a
12827         diagnostic message is being built.
12828         * tree-pretty-print.c (dump_generic_node): Only write the
12829         formatted text into BUFFER's stream if we are not building a
12830         diagnostic message.
12831         * toplev.c (default_tree_printer): Pass TDF_DIAGNOSTIC to
12832         dump_generic_node.
12833         * Makefile.in (toplev.o): Depend on tree-pass.h.
12834
12835 2007-04-24  Ian Lance Taylor  <iant@google.com>
12836
12837         PR tree-optimization/31602
12838         * tree-ssa-loop-ch.c (copy_loop_headers): Set TREE_NO_WARNING for
12839         conditionals in the copied loop header.
12840         * tree-cfg.c (fold_cond_expr_cond): Don't issue undefined overflow
12841         warnings if TREE_NO_WARNING is set.
12842         * doc/invoke.texi (Warning Options): Clarify that
12843         -Wstrict-overflow does not warn about loops.
12844
12845 2007-04-24  Janis Johnson  <janis187@us.ibm.com>
12846
12847         * config/rs6000/rs6000.c (function_arg_advance): For 32-bit ELF ABI,
12848         expand on the comment about _Decimal128 arguments and check the
12849         integer result of the modulus operation; for 64-bit ELF ABI, ensure
12850         that _Decimal128 argument uses even/odd register pair.
12851         (function_arg): Ditto.
12852
12853 2007-04-24  Hui-May Chang <hm.chang@apple.com>
12854
12855         * reload1.c (merge_assigned_reloads) : Do not merge a RELOAD_OTHER
12856         instruction with a RELOAD_FOR_OPERAND_ADDRESS instruction.
12857
12858 2007-04-24  Richard Guenther  <rguenther@suse.de>
12859             Olga Golovanevsky  <olga@il.ibm.com>
12860
12861         * fold-const.c (multiple_of_p): Check for bottom
12862         to be zero.
12863
12864 2007-04-24  Richard Henderson  <rth@redhat.com>
12865
12866         * libgcc2.h (AVOID_FP_TYPE_CONVERSION): Rename from
12867         IS_IBM_EXTENDED.  Also define in terms of WIDEST_HARDWARE_FP_SIZE.
12868         * libgcc2.c (__floatdisf): Avoid double-word arithmetic when
12869         looking for non-zero bits shifted out.  Avoid a recursive call
12870         when constructing the scalar.
12871         (__floatundisf): Likewise.
12872
12873 2007-04-24  Nathan Froyd  <froydnj@codesourcery.com>
12874
12875         * dwarf2out.c (field_byte_offset): Move the existing logic
12876         under the control of PCC_BITFIELD_TYPE_MATTERS and just use
12877         the bit offset of the field if !PCC_BITFIELD_TYPE_MATTERS.
12878
12879 2007-04-24  Andreas Krebbel  <krebbel1@de.ibm.com>
12880
12881         PR target/31641
12882         * config/s390/s390.c (s390_expand_setmem): Don't ICE for constant
12883         length argument of 0 for memset.
12884         (s390_expand_movmem, s390_expand_setmem, s390_expand_cmpmem): Use
12885         unsigned shift instead of the signed variant.
12886
12887 2007-04-24  Andreas Krebbel  <krebbel1@de.ibm.com>
12888
12889         * config/s390/s390.md ("*cmp<mode>_ccs_0_ibm", "*cmp<mode>_ccs_ibm",
12890         "fix_trunc<BFP:mode><GPR:mode>2_ieee", "fix_truncdfsi2_ibm",
12891         "floatsidf2_ibm", "floatsisf2", "truncdfsf2_ieee", "truncdfsf2_ibm",
12892         "*trunctfdf2_ieee", "*trunctfdf2_ibm", "*trunctfsf2_ieee",
12893         "*trunctfsf2_ibm", "extendsfdf2_ieee", "extendsfdf2_ibm",
12894         "*extenddftf2_ieee", "*extenddftf2_ibm", "*extendsftf2_ieee",
12895         "*extendsftf2_ibm", "*add<mode>3", "*add<mode>3_ibm", "*sub<mode>3_ibm",
12896         "*mul<mode>3", "*mul<mode>3_ibm", "*div<mode>3", "*div<mode>3_ibm",
12897         "*neg<mode>2_ibm", "*abs<mode>2_ibm"): Insn definitions removed.
12898         ("fix_trunc<BFP:mode><GPR:mode>2_bfp", "floatsi<mode>2",
12899         "truncdfsf2", "trunctf<mode>2", "add<mode>3", "sub<mode>3",
12900         "mul<mode>3", "div<mode>3"): Insn definitions added.
12901         ("fixuns_trunc<BFP:mode><GPR:mode>2", "fix_trunc<mode>di2",
12902         "fix_trunc<mode>si2"): gen_fix_trunc<BFP:mode><GPR:mode>2_ieee renamed
12903         to gen_fix_trunc<BFP:mode><GPR:mode>2_bfp.
12904         ("fix_truncdfsi2", "floatsitf2", "truncdfsf2", "trunctfdf2",
12905         "trunctfsf2", "extendsfdf2", "extenddftf2", "extendsftf2", "add<mode>3",
12906         "sub<mode>3", "mul<mode>3", "div<mode>3"): Expander removed.
12907         ("fix_trunc<mode>si2", "extend<DSF:mode><BFP:mode>2"): Expander added.
12908         * config/s390/s390.h (TARGET_IBM_FLOAT, TARGET_IEEE_FLOAT,
12909         TARGET_FLOAT_FORMAT): Macro definitions removed.
12910         (FP_REGNO_P): No special case for !TARGET_IEEE_FLOAT anymore.
12911         * config/s390/s390.c (struct processor_costs, z900_cost, z990_cost,
12912         z9_109_cost): Remove fields for hexfloat instructions: dxr, ddr and der.
12913         (s390_rtx_costs): Remove !TARGET_IEEE_FLOAT special branches.
12914         (s390_gen_rtx_const_DI): Function removed.
12915         * config/s390/s390-protos.h (s390_gen_rtx_const_DI): Prototype removed.
12916
12917 2007-04-24  Richard Sandiford  <richard@codesourcery.com>
12918
12919         * optabs.c (set_conv_libfunc): Prefer libgcc2's __ffsMM2 functions
12920         over an external ffs function.
12921
12922 2007-04-24  Chao-ying Fu  <fu@mips.com>
12923             Richard Sandiford  <richard@nildram.co.uk>
12924
12925         * doc/md.texi (madd@var{m}@var{n}4, umadd@var{m}@var{n}4): Document.
12926         * optabs.h (OTI_smadd_widen, OTI_umadd_widen): New optab_indexes.
12927         (smadd_widen_optab, umadd_widen_optab): Define.
12928         * optabs.c (init_optabs): Initialize smadd_widen_optab and
12929         umadd_widen_optab.
12930         * genopinit.c (optabs): Fill in smadd_widen_optab and
12931         umadd_widen_optab.
12932         * expr.c (expand_expr_real_1): Try to use smadd_widen_optab
12933         and umadd_widen_optab to implement multiply-add sequences.
12934         * config/mips/mips.md (*<su>mul_acc_di): Rename to...
12935         (<u>maddsidi4): ...this.  Extend condition to include
12936         GENERATE_MADD_MSUB and TARGET_DSPR2.  Change the constraint
12937         of operand 0 to "ka" and use the three-operand form of madd<u>
12938         for TARGET_DSPR2.
12939         * config/mips/mips-dspr2.md (mips_madd, mips_maddu): Convert
12940         to define_expands.
12941         * config/mips/constraints.md (ka): New register constraint.
12942
12943 2007-04-24  Jan Hubicka  <j@suse.cz>
12944
12945         Revert:
12946
12947         2007-04-23  Jan Hubicka  <jh@suse.cz>
12948         * function.c (init_function_start): Don't init line number info.
12949         (expand_function_end): Update.
12950         (reset_block_changes, record_block_change, finalize_block_changes,
12951         check_block_change, free_block_changes): Kill.
12952         * function.h (reset_block_changes, record_block_change,
12953         finalize_block_changes, check_block_change, free_block_changes):
12954         Remove prototypes.
12955         (struct function): Remove ib_boundaries_block.
12956         * emit-rtl.c (make_insn_raw, make_jump_insn_raw, make_call_insn_raw):
12957         Use curr_insn_locator to initialize locator.
12958         (emit_line_note): Remove.
12959         * cfgexpand.c (expand_gimple_cond_expr): Update.
12960         (construct_exit_block): Likewise.
12961         (tree_expand_cfg): Initialize/finalize locators.
12962         * expr.c (expand_expr_real): Update.
12963         * cfglayout.c (line_locators_locs, line_locators_lines,
12964         file_locators_locs, file_locators_files): Remove.
12965         (set_block_levels): Move to cfgexpand.c.
12966         (insn_locators_initialize): Remove.
12967         (pass_insn_locators_initialize): Remove.
12968         (locations_locators_locs, locations_locators_vals): New static vars.
12969         (curr_location, last_location, curr_block, last_block, curr_rtl_loc):
12970         Likewise.
12971         (insn_locators_alloc, insn_locators_finalize,
12972         set_curr_insn_source_location, set_curr_insn_block, curr_insn_locator):
12973         New functions.
12974         (locator_location): New.
12975         (locator_line, locator_file): Rewrite.
12976         * rtl.h (emit_line_note): Kill.
12977         (insn_locators_alloc, insn_locators_finalize,
12978         set_curr_insn_source_location, set_curr_insn_block, curr_insn_locator):
12979         Declare.
12980         * tree-inline.c (initialize_cfun): Do not initialize
12981         ib_boundaries_block.
12982         * passes.c (pass_insn_locators_initialize): Remove.
12983
12984 2007-04-24  Daniel Franke  <franke.daniel@gmail.com>
12985
12986         * doc/invoke.texi: Removed leading '-' from option index entries.
12987
12988 2007-04-23  Zdenek Dvorak  <dvorakz@suse.cz>
12989
12990         * tree-phinodes.c (reserve_phi_args_for_new_edge, remove_phi_node):
12991         Use phi_nodes_ptr.
12992         (create_phi_node): Use set_phi_nodes.
12993         * omp-low.c (expand_omp_parallel): Use bb_stmt_list.
12994         * tree-if-conv.c (process_phi_nodes): Use set_phi_nodes.
12995         (combine_blocks):  Use bb_stmt_list and set_bb_stmt_list.
12996         * tree-flow-inline.h (phi_nodes, set_phi_nodes,
12997         (bsi_start, bsi_last): Use bb_stmt_list.
12998         (phi_nodes_ptr, bb_stmt_list, set_bb_stmt_list): New functions.
12999         * cfgexpand.c (expand_gimple_basic_block): Use bb_stmt_list.
13000         Traverse the statements using tsi iterator.
13001         * basic-block.h (struct basic_block_def): Fields stmt_list
13002         and phi_nodes moved to ...
13003         (struct tree_bb_info): ... new structure.
13004         * tree-cfg.c (create_bb): Allocate il.tree.  Use set_bb_stmt_list.
13005         (tree_merge_blocks): Use bb_stmt_list and set_bb_stmt_list.
13006         (remove_bb): Handle blocks with NULL stmt list.  Clear il.tree field.
13007         (tree_verify_flow_info): Verify that il.tree is not set for
13008         entry and exit block.
13009         (tree_split_block): Use set_bb_stmt_list.
13010
13011 2007-04-23  Mike Stump  <mrs@apple.com>
13012
13013         * config/i386/i386.c (ix86_tune_features
13014         [X86_TUNE_DEEP_BRANCH_PREDICTION]: Prefer call over thunks on
13015         nocona and core2.
13016
13017 2007-04-23  H.J. Lu  <hongjiu.lu@intel.com>
13018
13019         * config/i386/i386.md (prefix_extra): New attribute.
13020         (length): Add prefix_extra.
13021
13022         * onfig/i386/sse.md (sse2_movdqu): Set prefix_data16.
13023         (sse2_movntv2di): Likewise.
13024         (sse2_cvtps2dq): Likewise.
13025         (sse2_cvtpd2pi): Likewise.
13026         (sse2_cvttpd2pi): Likewise.
13027         (*sse2_cvtpd2ps): Likewise.
13028         (*add<mode>3): Likewise.
13029         (sse2_ssadd<mode>3): Likewise.
13030         (sse2_usadd<mode>3): Likewise.
13031         (*sub<mode>3): Likewise.
13032         (sse2_sssub<mode>3): Likewise.
13033         (sse2_ussub<mode>3): Likewise.
13034         (*mulv8hi3): Likewise.
13035         (*smulv8hi3_highpart): Likewise.
13036         (*umulv8hi3_highpart): Likewise.
13037         (sse2_umulv2siv2di3): Likewise.
13038         (sse2_pmaddwd): Likewise.
13039         (ashr<mode>3): Likewise.
13040         (lshr<mode>3): Likewise.
13041         (ashl<mode>3): Likewise.
13042         (sse2_ashlti3): Likewise.
13043         (sse2_lshrti3): Likewise.
13044         (*umaxv16qi3): Likewise.
13045         (*smaxv8hi3): Likewise.
13046         (*uminv16qi3): Likewise.
13047         (*sminv8hi3): Likewise.
13048         (sse2_eq<mode>3): Likewise.
13049         (sse2_gt<mode>3): Likewise.
13050         (*and<mode>3): Likewise.
13051         (sse2_nand<mode>3): Likewise.
13052         (*ior<mode>3): Likewise.
13053         (*xor<mode>3): Likewise.
13054         (sse2_packsswb): Likewise.
13055         (sse2_packssdw): Likewise.
13056         (sse2_packuswb): Likewise.
13057         (sse2_punpckhbw): Likewise.
13058         (sse2_punpcklbw): Likewise.
13059         (sse2_punpckhwd): Likewise.
13060         (sse2_punpcklwd): Likewise.
13061         (sse2_punpckhdq): Likewise.
13062         (sse2_punpckldq): Likewise.
13063         (sse2_punpckhqdq): Likewise.
13064         (sse2_punpcklqdq): Likewise.
13065         (*sse2_pinsrw): Likewise.
13066         (*sse2_pextrw): Likewise.
13067         (sse2_pshufd_1): Likewise.
13068         (sse2_uavgv16qi3): Likewise.
13069         (sse2_uavgv8hi3): Likewise.
13070         (sse2_psadbw): Likewise.
13071         (sse2_pmovmskb): Likewise.
13072         (*sse2_maskmovdqu): Likewise.
13073         (*sse2_maskmovdqu_rex64): Likewise.
13074         (sse4a_extrqi): Likewise.
13075         (sse4a_extrq): Likewise.
13076         (sse3_lddqu): Set prefix_rep.
13077         (sse3_addsubv4sf3): Likewise.
13078         (sse3_haddv4sf3): Likewise.
13079         (sse3_hsubv4sf3): Likewise.
13080         (sse_cvtss2si): Likewise.
13081         (sse_cvtss2si_2): Likewise.
13082         (sse_cvtss2siq): Likewise.
13083         (sse_cvtss2siq_2): Likewise.
13084         (sse_cvttss2si): Likewise.
13085         (sse_cvttss2siq): Likewise.
13086         (sse2_cvttps2dq): Likewise.
13087         (sse3_movshdup): Likewise.
13088         (sse3_movsldup): Likewise.
13089         (sse2_cvtsd2si): Likewise.
13090         (sse2_cvtsd2si_2): Likewise.
13091         (sse2_cvtsd2siq): Likewise.
13092         (sse2_cvtsd2siq_2): Likewise.
13093         (sse2_cvttsd2si): Likewise.
13094         (sse2_cvttsd2siq): Likewise.
13095         (*sse2_cvtpd2dq): Likewise.
13096         (*sse2_cvttpd2dq): Likewise.
13097         (sse2_pshuflw_1): Likewise.
13098         (sse2_pshufhw_1): Likewise.
13099         (sse4a_insertqi): Likewise.
13100         (sse4a_insertq): Likewise.
13101         (ssse3_phaddwv8hi3): Set prefix_data16 and prefix_extra.
13102         (ssse3_phadddv4si3): Likewise.
13103         (ssse3_phaddswv8hi3): Likewise.
13104         (ssse3_phsubwv8hi3): Likewise.
13105         (ssse3_phsubdv4si3): Likewise.
13106         (ssse3_phsubswv8hi3): Likewise.
13107         (ssse3_pmaddubswv8hi3): Likewise.
13108         (ssse3_pmulhrswv8hi3): Likewise.
13109         (ssse3_pshufbv16qi3): Likewise.
13110         (ssse3_psign<mode>3): Likewise.
13111         (ssse3_palignrti): Likewise.
13112         (abs<mode>2): Likewise.
13113         (ssse3_phaddwv4hi3): Set prefix_extra.
13114         (ssse3_phadddv2si3): Likewise.
13115         (ssse3_phaddswv4hi3): Likewise.
13116         (ssse3_phsubwv4hi3): Likewise.
13117         (ssse3_phsubdv2si3): Likewise.
13118         (ssse3_phsubswv4hi3): Likewise.
13119         (ssse3_pmaddubswv4hi3): Likewise.
13120         (ssse3_pmulhrswv4hi3): Likewise.
13121         (ssse3_pshufbv8qi3): Likewise.
13122         (ssse3_psign<mode>3): Likewise.
13123         (ssse3_palignrdi): Likewise.
13124         (abs<mode>2): Likewise.
13125         (sse2_cvtdq2ps): Set mode to V4SF instead of V2DF.
13126         (*vec_dupv2df): Set mode to V2DF instead of V4SF.
13127         (sse2_pmovmskb): Set mode to SI instead of V2DF.
13128
13129 2007-04-23  Nick Clifton  <nickc@redhat.com>
13130
13131         * params.def: Fix formatting of emacs local variables.
13132
13133 2007-04-23  H.J. Lu  <hongjiu.lu@intel.com>
13134
13135         * config/i386/sse.md (sse2_stored): Don't split to inter-unit
13136         move if inter-unit move isn't allowed.
13137         Don't split moving the first element of V2DI to DI to inter-unit
13138         move if inter-unit move isn't allowed.
13139
13140 2007-04-23  Richard Guenther  <rguenther@suse.de>
13141
13142         * tree-ssa-sink.c (execute_sink_code): Calculate CDI_DOMINATORS
13143         and CDI_POST_DOMINATORS separately.
13144
13145 2007-04-23  Nick Clifton  <nickc@redhat.com>
13146
13147         * c.opt (Wformat-contains-nul): Add warning attribute.
13148
13149 2007-04-23  Jan Hubicka  <jh@suse.cz>
13150
13151         * function.c (init_function_start): Don't init line number info.
13152         (expand_function_end): Update.
13153         (reset_block_changes, record_block_change, finalize_block_changes,
13154         check_block_change, free_block_changes): Kill.
13155         * function.h (reset_block_changes, record_block_change,
13156         finalize_block_changes, check_block_change, free_block_changes):
13157         Remove prototypes.
13158         (struct function): Remove ib_boundaries_block.
13159         * emit-rtl.c (make_insn_raw, make_jump_insn_raw, make_call_insn_raw):
13160         Use curr_insn_locator to initialize locator.
13161         (emit_line_note): Remove.
13162         * cfgexpand.c (expand_gimple_cond_expr): Update.
13163         (construct_exit_block): Likewise.
13164         (tree_expand_cfg): Initialize/finalize locators.
13165         * expr.c (expand_expr_real): Update.
13166         * cfglayout.c (line_locators_locs, line_locators_lines,
13167         file_locators_locs, file_locators_files): Remove.
13168         (set_block_levels): Move to cfgexpand.c.
13169         (insn_locators_initialize): Remove.
13170         (pass_insn_locators_initialize): Remove.
13171         (locations_locators_locs, locations_locators_vals): New static vars.
13172         (curr_location, last_location, curr_block, last_block, curr_rtl_loc):
13173         Likewise.
13174         (insn_locators_alloc, insn_locators_finalize,
13175         set_curr_insn_source_location, set_curr_insn_block, curr_insn_locator):
13176         New functions.
13177         (locator_location): New.
13178         (locator_line, locator_file): Rewrite.
13179         * rtl.h (emit_line_note): Kill.
13180         (insn_locators_alloc, insn_locators_finalize,
13181         set_curr_insn_source_location, set_curr_insn_block, curr_insn_locator):
13182         Declare.
13183         * tree-inline.c (initialize_cfun): Do not initialize
13184         ib_boundaries_block.
13185         * passes.c (pass_insn_locators_initialize): Remove.
13186
13187 2007-04-22  Andrew Pinski  <andrew_pinski@playstation.sony.com>
13188
13189         PR middle-end/31448
13190         * expr.c (reduce_to_bit_field_precision): Handle
13191         CONST_INT rtx's.
13192
13193 2007-04-22  Uros Bizjak  <ubizjak@gmail.com>
13194
13195         PR tree-optimization/24659
13196         * optabs.h (enum optab_index) [OTI_vec_unpacks_hi,
13197         OTI_vec_unpacks_lo]: Update comment to mention floating point operands.
13198         (vec_pack_trunc_optab): Rename from vec_pack_mod_optab.
13199         * genopinit.c (optabs): Rename vec_pack_mod_optab
13200         to vec_pack_trunc_optab.
13201         * tree-vect-transform.c (vectorizable_type_demotion): Do not fail
13202         early for scalar floating point operands for NOP_EXPR.
13203         (vectorizable_type_promotion): Ditto.
13204         * optabs.c (optab_for_tree_code) [VEC_PACK_TRUNC_EXPR]: Return
13205         vec_pack_trunc_optab.
13206         (expand_binop): Rename vec_float_trunc_optab to vec_pack_mod_optab.
13207
13208         * tree.def (VEC_PACK_TRUNC_EXPR): Rename from VEC_PACK_MOD_EXPR.
13209         * tree-pretty-print.c (dump_generic_node) [VEC_PACK_TRUNC_EXPR]:
13210         Rename from VEC_PACK_MOD_EXPR.
13211         (op_prio) [VEC_PACK_TRUNC_EXPR]: Ditto.
13212         * expr.c (expand_expr_real_1): Ditto.
13213         * tree-inline.c (estimate_num_insns_1): Ditto.
13214         * tree-vect-generic.c (expand_vector_operations_1): Ditto.
13215
13216         * config/i386/sse.md (vec_unpacks_hi_v4sf): New expander.
13217         (vec_unpacks_lo_v4sf): Ditto.
13218         (vec_pack_trunc_v2df): Ditto.
13219         (vec_pack_trunc_v8hi): Rename from vec_pack_mod_v8hi.
13220         (vec_pack_trunc_v4si): Rename from vec_pack_mod_v4si.
13221         (vec_pack_trunc_v2di): Rename from vec_pack_mod_v2di.
13222
13223         * config/rs6000/altivec.md (vec_pack_trunc_v8hi): Rename from
13224         vec_pack_mod_v8hi.
13225         (vec_pack_trunc_v4si): Rename from vec_pack_mod_v4si.
13226
13227         * doc/c-tree.texi (Expression trees) [VEC_PACK_TRUNC_EXPR]:
13228         Rename from VEC_PACK_MOD_EXPR.  This expression also represent
13229         packing of floating point operands.
13230         [VEC_UNPACK_HI_EXPR, VEC_UNPACK_LO_EXPR]: These expression also
13231         represent unpacking of floating point operands.
13232         * doc/md.texi (Standard Names) [vec_pack_trunc]: Update documentation.
13233         [vec_unpacks_hi]: Ditto.
13234         [vec_unpacks_lo]: Ditto.
13235
13236 2007-04-22  Jan Hubicka  <jh@suse.cz>
13237
13238         * final.c (rest_of_handle_final): Call
13239         targetm.asm_out.constructor/targetm.asm_out.destructor
13240         * cgraphunit.c (cgraph_build_static_cdtor): Don't do it here; set
13241         proper priority via decl_*_priority_insert.
13242         * c-common.c (c_expand_body): Likewise.
13243
13244 2007-04-22  Richard Guenther  <rguenther@suse.de>
13245
13246         PR tree-optimization/29789
13247         * tree-ssa-loop-im.c (stmt_cost): Adjust cost of shifts.
13248         (rewrite_reciprocal): New helper split out from
13249         determine_invariantness_stmt.
13250         (rewrite_bittest): Likewise.
13251         (determine_invariantness_stmt): Rewrite (A >> B) & 1 to
13252         A & (1 << B) if (1 << B) is loop invariant but (A >> B)
13253         is not.
13254
13255 2007-04-22  Revital Eres  <eres@il.ibm.com>
13256
13257         * loop-unroll.c (var_to_expand): New field to support also
13258         insns of the form x = something + x.
13259         (analyze_insn_to_expand_var): Use it.
13260         (expand_var_during_unrolling): Likewise.
13261
13262 2007-04-21  Zdenek Dvorak  <dvorakz@suse.cz>
13263
13264         * predict.c: Include pointer-set.h.
13265         (bb_predictions): New variable.
13266         (tree_predicted_by_p, tree_predict_edge,
13267         remove_predictions_associated_with_edge): Use bb_predictions map
13268         instead of bb->predictions.
13269         (clear_bb_predictions, assert_is_empty): New functions.
13270         (combine_predictions_for_bb): Use bb_predictions map.  Call
13271         clear_bb_predictions.
13272         (tree_estimate_probability): Create and free bb_predictions map.
13273         * Makefile.in (predict.o): Add pointer-set.h dependency.
13274         * basic-block.h (struct basic_block_def): Remove predictions
13275         field.
13276         * cfgrtl.c (rtl_verify_flow_info_1): Do not check bb->predictions.
13277
13278 2007-04-21  Kaz Kojima  <kkojima@gcc.gnu.org>
13279
13280         PR target/31480
13281         * config/sh/sh.md (length): Check if prev_nonnote_insn (insn)
13282         is null.
13283
13284 2007-04-21  Andrew Pinski  <andrew_pinski@playstation.sony.com>
13285
13286         * timevar.c (timevar_print): Change reference of --disable-checking to
13287         --enable-checking=release.  Also warn if assert checking is disabled.
13288
13289 2007-04-21  Andrew Pinski  <andrew_pinski@playstation.sony.com>
13290
13291         PR C/30265
13292         * c-gimplifier.c (gimplify_compound_literal_expr): Mark the
13293         decl as addressable if the compound literal was marked as
13294         addressable.
13295         Mark the decl as a gimple register if it is a complex or
13296         vector decl and does not live in memory.
13297
13298 2007-04-21  Andrew Pinski  <andrew_pinski@playstation.sony.com>
13299
13300         * tree.h (GIMPLE_TUPLE_P): Also true for PHI_NODEs.
13301         (GENERIC_NEXT): New function macro.
13302         (PHI_CHAIN): Use phi_node's new chain variable.
13303         (tree_phi_node): Change tree_common to tree_base
13304         and add the chain field.
13305         * tree-phinodes.c (make_phi_node): Don't set
13306         TREE_TYPE on the new node.
13307         * c-decl.c (lang_tree_node): Use GENERIC_NEXT
13308         instead of checking GIMPLE_TUPLE_P in chain_next.
13309         * tree-vect-transform.c
13310         (get_initial_def_for_induction): Look at
13311         PHI_RESULT_TREE for the type of the phi node.
13312         (update_vuses_to_preheader): Use PHI_CHAIN
13313         instead of TREE_CHAIN on the phi node.
13314         * tree-ssa-structalias.c (compute_points_to_sets):
13315         Likewise.
13316         (ipa_pta_execute): Likewise.
13317
13318 2007-04-21  Richard Guenther  <rguenther@suse.de>
13319
13320         PR middle-end/31136
13321         * fold-const.c (fold_unary): Call fold_convert_const on the
13322         original tree.
13323
13324 2007-04-21  Alexandre Oliva  <aoliva@redhat.com>
13325
13326         * gcse.c (store_killed_in_insn): Handle PARALLELs.
13327         (store_killed_in_pat): New.
13328
13329 2007-04-20  Richard Henderson  <rth@redhat.com>
13330
13331         PR target/31628
13332         * config/i386/i386.c (type_has_variadic_args_p): Look for any
13333         TREE_LIST with a void_type_node value, not void_list_node exactly.
13334
13335 2007-04-21  Douglas Gregor  <doug.gregor@gmail.com>
13336
13337         * doc/standards.texi: Re-arrange into language-specific
13338         subsections. Add a C++ section, documenting which standards we
13339         support.
13340
13341 2007-04-21  Zdenek Dvorak  <dvorakz@suse.cz>
13342
13343         * tree-ssa-structalias.c (delete_points_to_sets): Free graph->complex.
13344         * tree-ssa-operands.c (finalize_ssa_vuse_ops): Free new_ops.
13345
13346 2007-04-20  Daniel Jacobowitz  <dan@codesourcery.com>
13347
13348         * config/rs6000/sysv4.h (STARTFILE_DEFAULT_SPEC): Include
13349         ecrti.o and crtbegin.o.
13350         (LIB_DEFAULT_SPEC): Include -lc.
13351         (ENDFILE_DEFAULT_SPEC): Include crtend.o and ecrtn.o.
13352
13353 2007-04-20  Richard Henderson  <rth@redhat.com>
13354
13355         PR target/28623
13356         * config/alpha/alpha.c (get_unaligned_address): Remove extra_offset
13357         argument; update all callers.
13358         (get_unaligned_offset): New.
13359         * config/alpha/alpha.md (extendqidi2, extendhidi2): Don't use
13360         get_unaligned_address, just pass on the address directly.
13361         (unaligned_extendqidi): Use gen_lowpart instead of open-coding
13362         the subreg in the helper patterns.
13363         (unaligned_extendqidi_le): Use get_unaligned_offset.
13364         (unaligned_extendqidi_be, unaligned_extendhidi_le): Likewise.
13365         (unaligned_extendhidi_be): Likewise.
13366         (unaligned_extendhidi): Tidy.
13367         * config/alpha/alpha-protos.h: Update.
13368
13369 2007-04-20  Richard Henderson  <rth@redhat.com>
13370
13371         * config/alpha/alpha.h (CPP_SPEC, CPP_SUBTARGET_SPEC): Remove.
13372         (EXTRA_SPECS, SUBTARGET_EXTRA_SPECS): Remove.
13373         * config/alpha/linux.h (CPP_SPEC): Undef before redefine.
13374         * config/alpha/linux-elf.h (EXTRA_SPECS): Rename SUBTARGET_EXTRA_SPECS.
13375         * config/alpha/freebsd.h (EXTRA_SPECS): Rename SUBTARGET_EXTRA_SPECS.
13376         (CPP_SPEC): Don't include %(cpp_subtarget).
13377         * config/alpha/netbsd.h (CPP_SPEC): Rename CPP_SUBTARGET_SPEC.
13378         (EXTRA_SPECS): Rename SUBTARGET_EXTRA_SPECS.
13379         * config/alpha/osf.h (CPP_SPEC, EXTRA_SPECS): Similarly.
13380
13381 2007-04-20  Jakub Jelinek  <jakub@redhat.com>
13382
13383         * config/i386/i386.c (bdesc_2arg): Use ORDERED rather than UNORDERED
13384         for __builtin_ia32_cmpordss.
13385
13386         PR tree-optimization/31632
13387         * fold-const.c (fold_binary): Use op0 and op1 instead of arg0
13388         and arg1 for optimizations of comparison against min/max values.
13389         Fold arg0 to arg1's type for optimizations of comparison against
13390         min+1 and max-1 values.
13391
13392 2007-04-19  Bernd Schmidt  <bernd.schmidt@analog.com>
13393
13394         * reload.c (combine_reloads): When trying to use a dying register,
13395         check whether it's uninitialized and don't use if so.
13396
13397 2007-04-19  Brooks Moses  <brooks.moses@codesourcery.com>
13398
13399         * fold-const.c: Remove prototypes for native_encode_expr and
13400         native_interpret_expr.
13401         (native_encode_expr): Make non-static.
13402         (native_interpret_expr): Likewise.
13403         * tree.h: Add prototypes for the above.
13404
13405 2007-04-19  Joseph Myers  <joseph@codesourcery.com>
13406
13407         * config/rs6000/spe.md (*frob_tf_ti, *frob_ti_tf, *frob_ti_tf_2,
13408         *mov_si<mode>_e500_subreg0, *mov_si<mode>_e500_subreg0_2,
13409         *mov_sitf_e500_subreg8, *mov_sitf_e500_subreg8_2, spe_extenddftf2,
13410         spe_fix_trunctfsi2_internal, spe_negtf2_internal, cmptfeq_gpr,
13411         tsttfeq_gpr, cmptfgt_gpr, tsttfgt_gpr, cmptflt_gpr, tsttflt_gpr):
13412         Add length attributes.
13413
13414 2007-04-19  Janis Johnson  <janis187@us.ibm.com>
13415
13416         * ginclude/float.h: Check that __STDC_WANT_DEC_FP__ is defined,
13417         not that it is 1.
13418
13419         * c-cppbuiltin.c (c_cpp_builtins): Remove definition of
13420         __STDC_WANT_DEC_FP__.
13421
13422 2007-04-19  Joseph Myers  <joseph@codesourcery.com>
13423
13424         * configure.ac: Allow both powerpc*-*-linux* and powerpc*-*-gnu*
13425         for long double compatibility.
13426         * configure: Regenerate.
13427
13428 2007-04-19  Eric Botcazou  <ebotcazou@libertysurf.fr>
13429
13430         PR rtl-optimization/29841
13431         * cfgbuild.c (control_flow_insn_p): Return TRUE for unconditional
13432         trap instructions.
13433         * sched-deps.c (sched_analyze_insn): Prevent all non-jump instructions
13434         that may cause control flow transfer from being moved.
13435
13436 2007-04-18  Jan Hubicka  <jh@suse.cz>
13437
13438         * fold-const.c (div_if_zero_remainder): Do signed divide for pointer
13439         types.
13440
13441 2007-04-18  Eric Christopher  <echristo@apple.com>
13442
13443         * config/rs6000/darwin.md (load_macho_picbase): Use link register
13444         only. Update operands.
13445         * config/rs6000/rs6000.c (rs6000_emit_prologue): Update caller.
13446         * config/rs6000/rs6000.md (builtin_setjmp_receiver): Ditto. Move from
13447         link register to pic register.
13448
13449 2007-04-18  Dirk Mueller  <dmueller@suse.de>
13450
13451         PR diagnostic/31227
13452         * tree-vrp.c (search_for_addr_array): New.
13453         (check_array_bounds): Suppress warning about
13454         address taken of array refs if its not de-referenced.
13455
13456 2007-04-18  Dorit Nuzman  <dorit@il.ibm.com>
13457
13458         * tree-vectorizer.c (destroy_loop_vec_info): Set loop->aux to NULL.
13459         * tree-vect-analyze.c (vect_analyze_loop_form): Set loop->aux.
13460
13461         * tree-vectorizer.h (NITERS_KNOWN_P): New.
13462         * tree-vect-analyze.c (vect_analyze_loop_form): Call NITERS_KNOWN_P
13463         instead of LOOP_VINFO_INT_NITERS to avoid having to geneate loop_info.
13464
13465         * tree-vect-analyze.c (vect_determine_vectorization_factor): Add
13466         dump print.
13467         (vect_analyze_operations): Fix indenetation.  Fix a comment.  Fix a
13468         print message.
13469         (vect_analyze_scalar_cycles): Fix indentation.
13470         (vect_enhance_data_refs_alignment): Fix check in case of peeling.
13471         (vect_mark_relevant): Include phis in relevance analysis.
13472
13473         * tree-vect-transform.c (vect_transform_loop): Add an assert.
13474
13475 2007-04-18  Anatoly Sokolov <aesok@post.ru>
13476
13477         * config/avr/avr.c (ptrreg_to_str): Replace error() with
13478         output_operand_lossage().
13479
13480 2007-04-18  Dorit Nuzman  <dorit@il.ibm.com>
13481
13482         * tree-vect-transform.c (get_initial_def_for_reduction): Clean away
13483         the unused code for reduction without adjust-in-epilog to simplify the
13484         function.
13485
13486 2007-04-18  Wolfgang Gellerich  <gellerich@de.ibm.com>
13487
13488         * config/s390/s390.h (S390_TDC_POSITIVE_ZERO): New constant.
13489         (S390_TDC_NEGATIVE_ZERO): New constant.
13490         (S390_TDC_POSITIVE_NORMALIZED_NUMBER): New constant.
13491         (S390_TDC_NEGATIVE_NORMALIZED_NUMBER): New constant.
13492         (S390_TDC_POSITIVE_DENORMALIZED_NUMBER): New constant.
13493         (S390_TDC_NEGATIVE_DENORMALIZED_NUMBER): New constant.
13494         (S390_TDC_POSITIVE_INFINITY): New constant.
13495         (S390_TDC_NEGATIVE_INFINITY): New constant.
13496         (S390_TDC_POSITIVE_QUIET_NAN): New constant.
13497         (S390_TDC_NEGATIVE_QUIET_NAN): New constant.
13498         (S390_TDC_POSITIVE_SIGNALING_NAN): New constant.
13499         (S390_TDC_NEGATIVE_SIGNALING_NAN): New constant.
13500         (S390_TDC_INFINITY): New constant.
13501         * config/s390/s390.c (s390_canonicalize_comparison): Renamed
13502         UNSPEC_CMPINT to UNSPEC_CCU_TO_INT, added a UNSPEC_CCU_TO_INT-like
13503         optimization for UNSPEC_CCZ_TO_INT.
13504         * config/s390/s390.md ("*TDC_insn_<mode>"): New insn.
13505         ("*ccz_to_int"): New insn.
13506         ("isinf<mode>2"): New insn.
13507         (UNSPEC_CMPINT): Renamed to UNSPEC_CCU_TO_INT.
13508         (UNSPEC_CCU_TO_INT): New constant, replaces UNSPEC_CMPINT.
13509         (UNSPEC_CCZ_TO_INT): New constant.
13510
13511 2007-04-18  Richard Guenther  <rguenther@suse.de>
13512
13513         PR tree-optimization/19431
13514         PR tree-optimization/21463
13515         * tree-pass.h (pass_phiprop): Declare.
13516         * passes.c (init_optimization_passes): New phiprop pass.
13517         * tree-ssa-forwprop.c (struct phiprop_d): New structure.
13518         (phivn_valid_p): New helper function.
13519         (phiprop_insert_phi): Likewise.
13520         (propagate_with_phi): Likewise.
13521         (tree_ssa_phiprop): New propagator propagating loads
13522         through phi nodes if profitable.
13523
13524 2007-04-18  Dorit Nuzman  <dorit@il.ibm.com>
13525
13526         * tree-vect-analyze.c (process_use): New function.
13527         (vect_mark_stmts_to_be_vectorized): Factor out code to process_use.
13528         Check phis in all bbs.
13529         * tree-vectorizer.c (vect_is_simple_use): Remove a no longer relavant
13530         assert.
13531
13532 2007-04-18  Bernd Schmidt  <bernd.schmidt@analog.com>
13533
13534         * reload1.c (eliminte_regs_in_insn): Use REG_EQUIV notes the same way
13535         we use REG_EQUAL.
13536
13537 2007-04-17  Anatoly Sokolov <aesok@post.ru>
13538
13539         PR target/30483
13540         * config/avr/avr.c (ptrreg_to_str): Replace gcc_unreachable() with
13541         error().
13542
13543 2007-04-17  H.J. Lu  <hongjiu.lu@intel.com>
13544
13545         * config/i386/sse.md (sse_vmaddv4sf3): Use register_operand
13546         on "0".
13547         (sse_vmmulv4sf3): Likewise.
13548         (sse2_vmaddv2df3): Likewise.
13549         (sse2_vmmulv2df3): Likewise.
13550
13551 2007-04-17  Zdenek Dvorak  <dvorakz@suse.cz>
13552
13553         PR rtl-optimization/31360
13554         * cfgloopanal.c (target_small_cost, target_pres_cost): Removed.
13555         (target_reg_cost): New.
13556         (init_set_costs): Initialize target_reg_cost.  Add comments
13557         regarding the rationale of the costs.
13558         (global_cost_for_size): Renamed to...
13559         (estimate_reg_pressure_cost): ... and simplify.  Decrease importance
13560         of register pressure.
13561         * tree-ssa-loop-ivopts.c (ivopts_global_cost_for_size): Use
13562         estimate_reg_pressure_cost.  Add number of ivs.
13563         (determine_set_costs): Dump target_reg_cost.
13564         * loop-invariant.c (gain_for_invariant):  Use
13565         estimate_reg_pressure_cost.  Removed n_inv_uses argument.
13566         (best_gain_for_invariant, find_invariants_to_move): Remove
13567         n_inv_uses.
13568         * cfgloop.h (target_small_cost, target_pres_cost): Removed.
13569         (target_reg_cost): Declare.
13570         (global_cost_for_size): Declaration removed.
13571         (estimate_reg_pressure_cost): Declare.
13572
13573 2007-04-17  Peter Bergner  <bergner@vnet.ibm.com>
13574
13575         * config/rs6000/rs6000.c (rs6000_hard_regno_mode_ok): Force TDmode
13576         regnos into even/odd register pairs.
13577         * config/rs6000/rs6000.h [SLOW_UNALIGNED_ACCESS]: Treat DDmode and
13578         TDmode similar to the other floating point modes.
13579         [SECONDARY_MEMORY_NEEDED]: Treat DDmode similar to DFmode.
13580         * config/rs6000/dfp.md (negdd2, absdd2, negtd2, abstd2): New
13581         define_expand's.
13582         (negdd2_fpr, absdd2_fpr, nabsdd2_fpr, negtd2_fpr, abstd2_fpr,
13583         nabstd2_fpr, movdd_hardfloat64_mfpgpr): New define_insn's.
13584         (movdd_hardfloat64): Use TARGET_MFPGPR.
13585
13586 2007-04-17  Bernd Schmidt  <bernd.schmidt@analog.com>
13587
13588         * reload1.c (delete_output_reload): Don't count output in n_inherited.
13589
13590         Revert
13591         2005-01-05  Richard Henderson  <rth@redhat.com>
13592         PR rtl-opt/10692
13593         * reload1.c (do_input_reload): Restrict the optimization deleteing
13594         a previous output reload to RELOAD_FOR_INPUT.
13595
13596 2007-04-17  Dorit Nuzman  <dorit@il.ibm.com>
13597
13598         * tree-vectorizer.h (stmt_vec_info_type): Add enum value
13599         induc_vec_info_type.
13600         (vectorizable_induction): New function declaration.
13601         * tree-vect-transform.c (get_initial_def_for_induction): No need to
13602         check if already vectorized.  Find first place in BB where new stmts
13603         can be inserted.  Takes only one argument.
13604         (vectorizable_induction): New function.
13605         (vect_transform_stmt): Add case for induc_vec_info_type to call
13606         vectorizable_induction.
13607         (vect_transform_loop): Consider phis for vectorization.
13608         * tree-vect-analyze.c (vect_determine_vectorization_factor): Simplify
13609         condition.
13610         (analyze_operations): Call vectorizable_induction when analyzing phis.
13611         Fix comment.
13612         (vect_mark_stmts_to_be_vectorized): Remove redundant checks.
13613         (vect_mark_relevant): Include phis in relevance analysis.
13614         (vect_mark_stmts_to_be_vectorize): Likewise.
13615         * tree-vect-patterns.c (widened_name_p): Remove obsolete asserts.
13616
13617 2007-04-16  Lawrence Crowl  <crowl@google.com>
13618
13619         * doc/invoke.texi (Debugging Options): Add documentation for the
13620         -femit-struct-debug options -femit-struct-debug-baseonly,
13621         -femit-struct-debug-reduced, and
13622         -femit-struct-debug-detailed[=...].
13623
13624         * c-opts.c (c_common_handle_option): Add
13625         OPT_femit_struct_debug_baseonly, OPT_femit_struct_debug_reduced,
13626         and OPT_femit_struct_debug_detailed_.
13627         * c.opt: Add specifications for
13628         -femit-struct-debug-baseonly, -femit-struct-debug-reduced,
13629         and -femit-struct-debug-detailed[=...].
13630         * opts.c (set_struct_debug_option): Parse the
13631         -femit-struct-debug-... options.
13632         * opts.c (matches_main_base, main_input_basename,
13633         main_input_baselength, base_of_path, matches_main_base): Add
13634         variables and functions to compare header base name to compilation
13635         unit base name.
13636         * opts.c (should_emit_struct_debug): Add to determine to emit a
13637         structure based on the option.
13638         (dump_struct_debug) Also disabled function to debug this
13639         function.
13640         * opts.c (handle_options): Save the base name of the
13641         compilation unit.
13642
13643         * langhooks-def.h (LANG_HOOKS_GENERIC_TYPE_P): Define.
13644         (LANG_HOOKS_FOR_TYPES_INITIALIZER): Add.
13645         This hook indicates if a type is generic.  Set it by default
13646         to "never generic".
13647         * langhooks.h (struct lang_hooks_for_types): Add a new hook
13648         to determine if a struct type is generic or not.
13649         * cp/cp-tree.h (class_tmpl_impl_spec_p): Declare a C++ hook.
13650         * cp/tree.c (class_tmpl_impl_spec_p): Implement the C++ hook.
13651         * cp/cp-lang.c (LANG_HOOKS_GENERIC_TYPE_P): Override null C hook
13652         with live C++ hook.
13653
13654         * flags.h (enum debug_info_usage): Add an enumeration to describe
13655         a program's use of a structure type.
13656         * dwarf2out.c (gen_struct_or_union_type_die): Add a new parameter
13657         to indicate the program's usage of the type.  Filter structs based
13658         on the -femit-struct-debug-... specification.
13659         (gen_type_die): Split into two routines, gen_type_die and
13660         gen_type_die_with_usage.  gen_type_die is now a wrapper
13661         that assumes direct usage.
13662         (gen_type_die_with_usage): Replace calls to gen_type_die
13663         with gen_type_die_with_usage adding the program usage of
13664         the referenced type.
13665         (dwarf2out_imported_module_or_decl): Suppress struct debug
13666         information using should_emit_struct_debug when appropriate.
13667
13668 2007-04-16  Ian Lance Taylor  <iant@google.com>
13669
13670         PR tree-optimization/31522
13671         * tree-vrp.c (vr_phi_edge_counts): New static variable.
13672         (vrp_initialize): Allocate vr_phi_edge_counts.
13673         (vrp_visit_phi_node): Don't push to infinity if we saw a new
13674         executable edge.  Drop test for all constants.
13675         (vrp_finalize): Free vrp_phi_edge_counts.
13676
13677         * doc/cpp.texi (Common Predefined Macros): Clarify description of
13678         __GNUC_GNU_INLINE__ and __GNUC_STDC_INLINE__.
13679
13680         * tree-ssa-propagate.c (cfg_blocks_add): Insert blocks with fewer
13681         predecessors at head rather than tail.
13682
13683 2007-04-16  Matthias Klose  <doko@debian.org>
13684
13685         * config/alpha/linux.h (CPP_SPEC): Define.
13686         * config/arm/linux-gas.h (SUBTARGET_CPP_SPEC): Extend.
13687
13688 2007-04-16  Aldy Hernandez  <aldyh@redhat.com>
13689
13690         * function.h: Remove sequence_stack extern declaration.
13691
13692 2007-04-16  Kazu Hirata  <kazu@codesourcery.com>
13693
13694         * config/m68k/m68k.h (LONG_DOUBLE_TYPE_SIZE): Change to 64 on
13695         TARGET_FIDOA.
13696         (LIBGCC2_LONG_DOUBLE_TYPE_SIZE): Change to 64 if __mfido__ is
13697         defined.
13698
13699 2007-04-16  Anatoly Sokolov <aesok@post.ru>
13700
13701         * config/avr/avr.c (avr_arch_types): Rearranging  array.
13702         (enum avr_arch): Add.
13703         (avr_mcu_types): Use avr_arch enumeration constants instead of
13704         numbers.
13705         * config/avr/avr.h (LINK_SPEC): Simplify.
13706
13707 2007-04-16  Kazu Hirata  <kazu@codesourcery.com>
13708
13709         * config/m68k/m68k.c (m68k_libcall_value,
13710         m68k_function_value): Use macros for register names more.
13711
13712         * config/m68k/m68k.h (FRAME_POINTER_REGNUM): Use A6_REG
13713         instead.
13714         (M68K_REGNAME): Use A6_REG.
13715         * config/m68k/m68k.md (FP_REG): Rename to A6_REG.
13716
13717 2007-04-16  Maxim Kuvyrkov  <mkuvyrkov@ispras.ru>
13718
13719         PR middle-end/28071
13720         * sched-int.h (struct deps): Split field 'pending_lists_length' into
13721         'pending_read_list_length' and 'pending_write_list_length'.  Update
13722         comment.
13723         * sched-deps.c (add_insn_mem_dependence): Change signature.  Update
13724         to handle two length counters instead of one.  Update all uses.
13725         (flush_pending_lists, sched_analyze_1, init_deps): Update to handle
13726         two length counters instead of one.
13727         * sched-rgn.c (propagate_deps): Update to handle two length counters
13728         instead of one.
13729
13730 2007-04-16  H.J. Lu  <hongjiu.lu@intel.com>
13731
13732         PR target/31582
13733         * config/i386/i386.c (ix86_expand_vec_set_builtin): Make a
13734         copy of source, pass it to ix86_expand_vector_set and return
13735         it as target.
13736
13737 2007-04-16  David Ung  <davidu@mips.com>
13738             Joseph Myers  <joseph@codesourcery.com>
13739
13740         * config/mips/mips.h (PROCESSOR_74KC, PROCESSOR_74KF,
13741         PROCESSOR_74KX, TUNE_74K, GENERATE_MADD_MSUB): Define.
13742         * config/mips/mips.c (mips_cpu_info_table, mips_rtx_cost_data):
13743         Add 74K processor information.
13744         * config/mips/mips.md: Include 74k.md.
13745         (cpu): Add 74kc,74kf,74kx.
13746         (ISA_HAS_MADD_MSUB): Change to GENERATE_MADD_MSUB throughout.
13747         * config/mips/74k.md: New.
13748         * doc/invoke.texi (MIPS Options): Document 74K support.
13749
13750 2007-04-16  Dorit Nuzman  <dorit@il.ibm.com>
13751
13752         * tree-vect-analyze.c (vect_analyze_operations): Reorganize calls to
13753         vectorizable_* functions.
13754         * tree-vect-transform.c (vectorizable_call): Add check for
13755         STMT_VINFO_RELEVANT_P, STMT_VINFO_DEF_TYPE and STMT_VINFO_LIVE_P.
13756         (vectorizable_store): likewise.
13757         (vectorizable_conversion): Add check for STMT_VINFO_DEF_TYPE.
13758         Add comments.
13759         (vectorizable_operation, vectorizable_type_demotion): Likewise.
13760         (vectorizable_type_promotion, vectorizable_load): Likewise.
13761         (vectorizable_live_operation, vectorizable_condition): Likewise.
13762         (vectorizable_assignment): Add check for STMT_VINFO_DEF_TYPE and
13763         STMT_VINFO_LIVE_P.
13764         (vect_transform_stmt): Reorganize calls to vectorizable_* functions.
13765
13766 2007-04-15  Kazu Hirata  <kazu@codesourcery.com>
13767
13768         * config/m68k/linux.h (FUNCTION_VALUE_REGNO_P): Use macros for
13769         register numbers more.
13770         * config/m68k/m68k.h (STACK_POINTER_REGNUM,
13771         FRAME_POINTER_REGNUM, STATIC_CHAIN_REGNUM,
13772         M68K_STRUCT_VALUE_REGNUM, FUNCTION_VALUE, LIBCALL_VALUE,
13773         FUNCTION_VALUE_REGNO_P): Likewise.
13774         * config/m68k/m68kelf.h (M68K_STRUCT_VALUE_REGNUM,
13775         STATIC_CHAIN_REGNUM): Likewise.
13776         * config/m68k/m68kemb.h (FUNCTION_VALUE_REGNO_P): Likewise.
13777         * config/m68k/netbsd-elf.h (M68K_STRUCT_VALUE_REGNUM,
13778         STATIC_CHAIN_REGNUM, FUNCTION_VALUE_REGNO_P): Likewise.
13779         * config/m68k/m68k.md (FP_REG): New.
13780
13781 2007-04-15  Kazu Hirata  <kazu@codesourcery.com>
13782
13783         * config/m68k/m68k.h (PREFERRED_STACK_BOUNDARY): Prefer 32-bit
13784         alignment on fido.
13785
13786 2007-04-15  Kazu Hirata  <kazu@codesourcery.com>
13787
13788         * config/i386/i386.c, config/s390/s390.c, config/s390/s390.md,
13789         tree-ssa-loop-niter.c, tree-ssa-structalias.c, tree-vrp.c: Fix
13790         comment typos.
13791
13792 2007-04-11  Zdenek Dvorak  <dvorakz@suse.cz>
13793
13794         * tree-ssa-loop-prefetch.c (loop_prefetch_arrays): Ignore
13795         cold loops.
13796
13797 2007-04-14  Andrew Pinski  <andrew_pinski@playstation.sony.com>
13798
13799         PR c/31520
13800         * c-decl.c (finish_decl): Grab the type of the decl after the call
13801         to store_init_value.
13802
13803 2007-04-14  Steven Bosscher  <steven@gcc.gnu.org>
13804
13805         * common.opt (fforward-propagate): Fix "Optimization" annotation.
13806
13807 2007-04-14  Jakub Jelinek  <jakub@redhat.com>
13808
13809         PR c++/25874
13810         * omp-low.c (expand_omp_parallel): If child_cfun->cfg, free
13811         dominators, post dominators and cleanup cfg before returning.
13812
13813 2007-04-14  Bernd Schmidt  <bernd.schmidt@analog.com>
13814
13815         * config/bfin/bfin.h (MODES_TIEABLE_P): Allow more modes to be tied.
13816         * config/bfin/bfin.md (movsi_insn): Delete two unused alternatives.
13817
13818 2007-04-14  Kazu Hirata  <kazu@codesourcery.com>
13819
13820         * config.gcc: Recognize fido.
13821         * config/m68k/m68k-devices.def (fidoa): New.
13822         * config/m68k/m68k.h (TARGET_CPU_CPP_BUILTINS): Define
13823         __mfido__.
13824         (FL_FIDOA, TARGET_FIDOA): New.
13825         * config/m68k/m68k.opt (mfidoa): New.
13826
13827 2007-04-13  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
13828
13829         PR middle-end/31322
13830         * dwarf2out.c (output_call_frame_info): Call assemble_external_libcall
13831         when a personality function is used.
13832
13833 2007-04-13  Bob Wilson  <bob.wilson@acm.org>
13834
13835         * config/xtensa/xtensa.c (xtensa_expand_builtin): Use CALL_EXPR_FN.
13836
13837 2007-04-13  Mike Stump  <mrs@apple.com>
13838
13839         * config/darwin-c.c (handle_c_option): Handle -fapple-kext here so
13840         we can...
13841         * config/darwin.opt (fapple-kext): Make C++ only.
13842         * config/darwin.c (darwin_override_options): Remove code to ensure
13843         -fapple-kext is given for C++ only.
13844
13845 2007-04-13  Richard Sandiford  <richard@codesourcery.com>
13846
13847         * config/mips/vxworks.h (SUBTARGET_OVERRIDE_OPTIONS): Define.
13848         * config/mips/mips.c (override_options): Call
13849         SUBTARGET_OVERRIDE_OPTIONS, if defined.
13850
13851 2007-04-13  H.J. Lu  <hongjiu.lu@intel.com>
13852
13853         * config/i386/i386.opt (msvr3-shlib): Removed.
13854
13855         * doc/invoke.texi: Remove -msvr3-shlib.
13856
13857 2007-04-13  H.J. Lu  <hongjiu.lu@intel.com>
13858
13859         * config/i386/i386.opt (mpopcnt): Replace "popcount" instruction
13860         with "popcnt" instruction.
13861
13862 2007-04-13  Richard Guenther  <rguenther@suse.de>
13863
13864         PR tree-optimization/21258
13865         * tree-vrp.c (compare_case_labels): New helper.
13866         (find_switch_asserts): New function.
13867         (find_assert_locations): Call it for SWITCH_EXPRs.
13868
13869 2007-04-13  Uros Bizjak  <ubizjak@gmail.com>
13870
13871         * config/i386/i386.h (X87_FLOAT_MODE_P): Check for TARGET_80387.
13872         * config/i386/i386.md (*cmpfp0): Remove check for TARGET_80387, this
13873         check is now implied in X87_FLOAT_MODE_P.
13874         (*cmpfp_u, *cmpfp_<mode>, *cmpfp_i_i387): Ditto.
13875         (*cmpfp_iu_387, fix_trunc<mode>_fisttp_i386_1): Ditto.
13876         (fix_trunc<mode>_i386_fisttp): Ditto.
13877         (fix_trunc<mode>_i387_fisttp_with_temp): Ditto.
13878         (*fix_trunc<mode>_i387_1, fix_truncdi_i387): Ditto.
13879         (fix_truncdi_i387_with_temp, fix_trunc<mode>_i387): Ditto.
13880         (fix_trunc<mode>_i387_with_temp, *fp_jcc_1_387): Ditto.
13881         (*fp_jcc_2_387, *fp_jcc_5_387, *fp_jcc_6_387): Ditto.
13882         (*fp_jcc_7_387, *fp_jcc_8<mode>_387): Ditto.
13883         (unnamed_splitters): Ditto.
13884         * config/i386/i386.c (function_value_32): Generate FIRST_FLOAT_REG
13885         for X87_FLOAT_MODE_P mode.  Override FIRST_FLOAT_REG with
13886         FIRST_SSE_REG for local functions when SSE math is enabled or
13887         for functions with sseregparm attribute.
13888         (standard_80387_constant_p): Return -1 if mode is not
13889         X87_FLOAT_MODE_P.
13890         (ix86_cc_mode): Assert that scalar mode is not DECIMAL_FLOAT_MODE_P.
13891         (ix86_expand_compare): Ditto.
13892         (ix86_expand_carry_flag_compare): Ditto.
13893         (ix86_expand_int_movcc): Check for SCALAR_FLOAT_MODE_P instead
13894         of FLOAT_MODE_P for cmp_mode and assert that cmp_mode is not
13895         DECIMAL_FLOAT_MODE_P.
13896         (ix86_preferred_output_reload_class): Use X87_FLOAT_MODE_P instead
13897         of SCALAR_FLOAT_MODE_P.
13898         (ix86_rtx_costs) [PLUS] Remove FLOAT_MODE_P and fall through to ...
13899         [MINUS]: ... here.  Add SSE_FLOAT_MODE_P and X87_FLOAT_MODE_P
13900         checks before FLOAT_MODE_P.
13901         [MULT]: Add SSE_FLOAT_MODE_P and X87_FLOAT_MODE_P checks
13902         before FLOAT_MODE_P.
13903         [DIV]: Ditto.
13904         [NEG]: Ditto.
13905         [ABS]: Ditto.
13906         [SQRT]: Ditto.
13907         [FLOAT_EXTEND]: Use SSE_FLOAT_MODE_P.
13908
13909 2007-04-12  Paolo Bonzini  <bonzini@gnu.org>
13910             Charles Wilson  <libtool@cwilson.fastmail.fm>
13911
13912         * Makefile.in (stamp-as, stamp-collect-ld, stamp-nm): Remove.
13913         (libgcc.mvars): Don't depend on them.
13914         * configure.ac (as, collect-ld, nm): Create from exec-tool.in.
13915         * exec-tool.in: New.
13916
13917 2007-04-12  Brooks Moses  <brooks.moses@codesourcery.com>
13918
13919         * doc/invoke.text (--help): Document --help=common.
13920
13921 2007-04-12  Thomas Neumann  <tneumann@users.sourceforge.net>
13922
13923         * stub-objc.c (objc_build_keyword_decl): Avoid C++ keywords.
13924
13925 2007-04-12  Richard Sandiford  <richard@codesourcery.com>
13926
13927         * Makefile.in (insn-emit.o): Depend on $(INTEGRATE_H).
13928         * genemit.c (main): Emit #include "integrate.h".
13929         * config/mips/mips-protos.h (SYMBOL_HALF): New mips_symbol_type.
13930         (LOADGP_RTP): New mips_loadgp_style.
13931         * config/mips/mips.h: Include config/vxworks-dummy.h.
13932         (TARGET_RTP_PIC): New macro.
13933         (TARGET_USE_GOT): Return true for TARGET_RTP_PIC.
13934         (TARGET_USE_PIC_FN_ADDR_REG): Return true for TARGET_VXWORKS_RTP.
13935         (ASM_OUTPUT_ADDR_DIFF_ELT): Emit function-relative case tables
13936         for TARGET_RTP_PIC.
13937         * config/mips/vxworks.h (SUBTARGET_ASM_SPEC): Define.  Pass down
13938         -mvxworks-pic when using -mrtp and a PIC option.
13939         * config/mips/mips.c (mips_classify_symbol): Return SYMBOL_GOT_DISP
13940         for RTP PIC.
13941         (mips_symbolic_constant_p, mips_symbolic_address_p)
13942         (mips_symbol_insns): Handle SYMBOL_HALF.
13943         (override_options): Warn about -G and -mrtp being used together.
13944         Initialize mips_lo_relocs[SYMBOL_HALF].
13945         (mips_current_loadgp_style): Return LOADGP_RTP for RTP PIC.
13946         (mips_emit_loadgp): Handle LOADGP_RTP.
13947         (mips_in_small_data_p): Return false for TARGET_VXWORKS_RTP.
13948         * config/mips/mips.md (loadgp_rtp): New insn and splitter.
13949         (tablejump): Handle function-relative case table entries if
13950         TARGET_RTP_PIC.
13951         * config/mips/predicates.md (symbol_ref_operand): New predicate.
13952
13953 2007-04-12  Richard Sandiford  <richard@codesourcery.com>
13954
13955         * config/mips/mips.md (load_call<mode>): Allow any general register.
13956         destination.
13957         (sibcall_value_internal, sibcall_value_multiple_internal)
13958         (call_value_internal, call_value_split, call_value_multiple_internal)
13959         (call_value_multiple_split): Remove constraints from operand 0.
13960
13961 2007-04-12  Richard Sandiford  <richard@codesourcery.com>
13962
13963         * config/mips/mips-protos.h: In comments, refer to loadgp_absolute
13964         rather than loadgp_noshared.
13965         * config/mips/mips.c (mips_emit_loadgp): Use gen_loadgp_absolute
13966         instead of gen_loadgp_noshared.  Use gen_loadgp_newabi instead of
13967         gen_loadgp.
13968         * config/mips/mips.md (loadgp): Rename to...
13969         (loadgp_newabi): ...this.
13970         (loadgp_noshared): Rename to...
13971         (loadgp_absolute): ...this.
13972
13973 2007-04-12  Richard Sandiford  <richard@codesourcery.com>
13974
13975         * config/mips/mips.c (mips_ok_for_lazy_binding_p): Always return
13976         false for locally-binding symbols.
13977         (mips_dangerous_for_la25_p): Check mips_global_symbol_p.
13978
13979 2007-04-12  Richard Sandiford  <richard@codesourcery.com>
13980
13981         * config/mips/mips-protos.h (SYMBOL_GOT_LOCAL): Rename to...
13982         (SYMBOL_GOT_PAGE_OFST): ...this.
13983         (SYMBOL_GOT_GLOBAL): Rename to...
13984         (SYMBOL_GOT_DISP): ...this.
13985         (SYMBOL_GOTOFF_GLOBAL): Rename to...
13986         (SYMBOL_GOTOFF_DISP): ...this.  Update comments accordingly.
13987         * config/mips/mips.c (mips_global_symbol_p): New function.
13988         (mips_symbol_binds_local_p): Likewise.
13989         (mips_classify_symbol): Rename SYMBOL_GOT_GLOBAL to SYMBOL_GOT_DISP
13990         and SYMBOL_GOT_LOCAL to SYMBOL_GOT_PAGE_OFST.  Use
13991         mips_global_symbol_p and mips_symbol_binds_local_p.
13992         (mips_symbolic_constant_p, mips_symbolic_address_p, mips_symbol_insns)
13993         (override_options): Rename SYMBOL_GOT_GLOBAL to SYMBOL_GOT_DISP,
13994         SYMBOL_GOT_LOCAL to SYMBOL_GOT_PAGE_OFST and SYMBOL_GOTOFF_GLOBAL to
13995         SYMBOL_GOTOFF_DISP.
13996         (mips_ok_for_lazy_binding_p): New function.
13997         (mips_load_call_address, mips_expand_call): Use it.
13998         (mips_dangerous_for_la25_p): Likewise.
13999         * config/mips/mips.md (*xgot_hi<mode>, *xgot_lo<mode>)
14000         (*got_disp<mode>): Use got_disp_operand instead of
14001         global_got_operand.  Use SYMBOL_GOTOFF_DISP instead of
14002         SYMBOL_GOTOFF_GLOBAL.
14003         (*got_page<mode>): Use got_page_ofst_operand instead of
14004         local_got_operand.
14005         * config/mips/predicates.md (const_call_insn_operand): Use
14006         SYMBOL_GOT_DISP instead of SYMBOL_GOT_GLOBAL.
14007         (global_got_operand): Rename to...
14008         (got_disp_operand): ...this and use SYMBOL_GOT_DISP instead of
14009         SYMBOL_GOT_GLOBAL.
14010         (local_got_operand): Rename to...
14011         (got_page_ofst_operand): ...this and use SYMBOL_GOT_PAGE_OFST instead
14012         of SYMBOL_GOT_LOCAL.
14013
14014 2007-04-12  Richard Sandiford  <richard@codesourcery.com>
14015
14016         * config/mips/mips.h (TARGET_SPLIT_CALLS): Check
14017         TARGET_CALL_CLOBBERED_GP.
14018         (TARGET_SIBCALLS): Check TARGET_USE_GOT instead of TARGET_ABICALLS.
14019         (TARGET_USE_GOT, TARGET_CALL_CLOBBERED_GP): New macros.
14020         (TARGET_CALL_SAVED_GP, TARGET_USE_PIC_FN_ADDR_REG): Likewise.
14021         (STARTING_FRAME_OFFSET): Check TARGET_CALL_CLOBBERED_GP instead
14022         of TARGET_ABICALLS && !TARGET_NEWABI.
14023         (MIPS_CALL): Check TARGET_USE_GOT instead of TARGET_ABICALLS.
14024         * config/mips/mips.c (mips_load_call_address): Check
14025         TARGET_CALL_SAVED_GP instead of TARGET_NEWABI.
14026         (mips_global_pointer): Check TARGET_USE_GOT instead of TARGET_ABICALLS.
14027         Check TARGET_CALL_SAVED_GP instead of TARGET_NEWABI.
14028         (mips_save_reg_p): Check TARGET_CALL_SAVED_GP instead of
14029         TARGET_ABICALLS && TARGET_NEWABI.
14030         (mips_current_loadgp_style): Check TARGET_USE_GOT instead of
14031         TARGET_ABICALLS.
14032         (mips_expand_prologue): Check TARGET_OLDABI instead of !TARGET_NEWABI.
14033         (mips_expand_epilogue): Check TARGET_CALL_SAVED_GP instead of
14034         TARGET_ABICALLS && TARGET_NEWABI.
14035         (mips_output_mi_thunk): Check TARGET_USE_GOT instead of
14036         TARGET_ABICALLS.  Check TARGET_CALL_SAVED_GP instead of
14037         TARGET_NEWABI.  Use TARGET_USE_PIC_FN_ADDR_REG to decide
14038         whether indirect calls must use $25.
14039         (mips_extra_live_on_entry): Check TARGET_GOT instead of
14040         TARGET_ABICALLS.
14041         * config/mips/mips.md (jal_macro): Check flag_pic and
14042         TARGET_CALL_CLOBBERED_GP instead of TARGET_ABICALLS and TARGET_NEWABI.
14043         (builtin_setjmp_setup, builtin_longjmp): Check TARGET_USE_GOT
14044         instead of TARGET_ABICALLS.
14045         (exception_receiver): Check TARGET_CALL_CLOBBERED_GP instead of
14046         TARGET_ABICALLS && TARGET_OLDABI.
14047         (load_call<mode>): Check TARGET_USE_GOT instead of TARGET_ABICALLS.
14048         (sibcall): In the comment above the define_insn, mention
14049         TARGET_USE_PIC_FN_ADDR_REG instead of TARGET_ABICALLS.
14050         * config/mips/constraints.md (c): Check TARGET_USE_PIC_FN_ADDR_REG
14051         instead of TARGET_ABICALLS.
14052
14053 2007-04-12  Bernd Schmidt  <bernd.schmidt@analog.com>
14054
14055         * doc/md.texi (Blackfin family constraints): Document PA and PB.
14056         * config/bfin/bfin.h (CONST_OK_FOR_P): Handle PA and PB.
14057         (MACFLAGS_MATCH_P): New macro.
14058         * config/bfin/bfin.c (print_operand): Handle MACFLAG_IS_M.
14059         (bfin_secondary_reload): Treat EVEN_AREGS and ODD_AREGS like AREGS.
14060         * config/bfin/bfin.md (MACFLAG_IS_M): New constant.  Renumber some of
14061         the other MACFLAG constants.
14062         (sum_of_accumulators, lshrpdi3, ashrpdi3): New patterns.
14063         (flag_machi): Tighten constraints.  Renumber some of the operands.
14064         (flag_machi_acconly): Tighten constraints.  Correct operand numbers in
14065         output template.
14066         (flag_machi_parts_acconly): New pattern.
14067         (flag_macinithi): Tighten constraints.  Allow any accumulator to be
14068         used.
14069         (flag_macinit1hi): Tighten constraints.
14070         (flag_mul_macv2hi_parts_acconly): New pattern.
14071
14072         * config/bfin/lib1funcs.asm (___umulsi3_highpart, __smulsi3_highpart):
14073         Use a more efficient implementation.
14074         * config/bfin/bfin.md (umulsi3_highpart, smulsi3_highpart): Emit
14075         inline sequences when not optimizing for size.
14076
14077         * config/bfin/bfin.md (movhi_low2high, movhi_high2high, movhi_low2low,
14078         movhi_high2low): Delete, merge functionality into...
14079         (packv2hi): ... this pattern.
14080
14081         2007-02-11  Jie Zhang  <jie.zhang@analog.com>
14082         * config/bfin/bfin.opt (msim): New option.
14083         (mcpu=): New option.
14084         * config/bfin/bfin-protos.h (enum bfin_cpu): New.
14085         (bfin_cpu_t): Typedef of enum bfin_cpu.
14086         (bfin_cpu_type): New declaration.
14087         * config/bfin/elf.h (STARTFILE_SPEC): Add support for
14088         -msim and -mcpu= options.
14089         (LIB_SPEC): Likewise.
14090         * config/bfin/bfin.c (bfin_cpu_type): Define.
14091         (bfin_handle_option): Handle -mcpu= option.
14092         * config/bfin/bfin.h (DEFAULT_CPU_TYPE): Define as BFIN_CPU_BF532.
14093         (TARGET_CPU_CPP_BUILTINS): Define __ADSPBF531__, __ADSPBF532__,
14094         __ADSPBF533__ or __ADSPBF537__ according to the cpu type.
14095
14096 2007-04-12  Richard Sandiford  <richard@codesourcery.com>
14097
14098         * config.gcc (*-*-vxworks*): Don't add to tm_files in this stanza.
14099         (arm-wrs-vxworks, mips-wrs-vxworks, powerpc-wrs-vxworks)
14100         (powerpc-wrs-vxworksae): Use ${tm_file}.
14101         (i[4567]86-wrs-vxworks, i[4567]86-wrs-vxworksae): Add svr4.h
14102         after elfos.h.  Remove i386/sysv4.h and add i386/vx-common.h.
14103         * config/i386/vx-common.h: New file.
14104
14105 2007-04-12  Richard Sandiford  <richard@codesourcery.com>
14106
14107         * config/vxworks.h (VXWORKS_STARTFILE_SPEC): Use -l:crt0.o instead
14108         of crt0.o%s.
14109
14110 2007-04-12  Andreas Krebbel  <krebbel1@de.ibm.com>
14111
14112         * config/s390/s390.md ("trunctddd2"): Use TDmode for the target of
14113         ldxtr.
14114
14115 2007-04-12  Douglas Gregor  <doug.gregor@gmail.com>
14116
14117         PR c++/31078
14118         PR c++/31103
14119         * c-common.c (c_build_qualified_type): Set canonical type
14120         appropriately.
14121
14122 2007-04-12  Richard Guenther  <rguenther@suse.de>
14123
14124         * tree-pretty-print.c (dump_generic_node): Print ARRAY_REF
14125         lower bound and element size if lower bound is not zero
14126         or either of the ARRAY_REF operands is set.
14127
14128 2007-04-12  Richard Guenther  <rguenther@suse.de>
14129
14130         PR tree-optimization/24689
14131         PR tree-optimization/31307
14132         * fold-const.c (operand_equal_p): Compare INTEGER_CST array
14133         indices by value.
14134         * gimplify.c (canonicalize_addr_expr): To be consistent with
14135         gimplify_compound_lval only set operands two and three of
14136         ARRAY_REFs if they are not gimple_min_invariant.  This makes
14137         it never at this place.
14138         * tree-ssa-ccp.c (maybe_fold_offset_to_array_ref): Likewise.
14139
14140 2007-04-11  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
14141
14142         * pa.c (pa_som_asm_init_sections): Ensure that cfun->machine is not
14143         null before emitting a .nsubspa directive.
14144
14145 2007-04-11  Diego Novillo  <dnovillo@redhat.com>
14146
14147         * tree-ssa-alias.c (dump_mem_ref_stats): Do not call
14148         need_to_partition_p if there are no memory statements in the
14149         function.
14150
14151 2007-04-11  Zdenek Dvorak  <dvorakz@suse.cz>
14152
14153         * tree-data-ref.c (chrec_steps_divide_constant_p): Removed.
14154         (gcd_of_steps_may_divide_p): New function.
14155         (analyze_miv_subscript): Use gcd_of_steps_may_divide_p.
14156
14157 2007-04-11  Bernd Schmidt  <bernd.schmidt@analog.com>
14158
14159         * reload.c (find_reloads_toplev, find_reloads_address,
14160         find_reloads_address_1, find_reloads_subreg_address): Use rtx_equal_p,
14161         not a pointer equality test, to decide if we need to call
14162         push_reg_equiv_alt_mem.
14163
14164 2007-04-11  Sebastian Pop  <sebastian.pop@inria.fr>
14165
14166         * tree-data-ref.c (affine_function_zero_p, constant_access_functions,
14167         insert_innermost_unit_dist_vector, add_distance_for_zero_overlaps):
14168         New.
14169         (build_classic_dist_vector): Call add_distance_for_zero_overlaps.
14170
14171 2007-04-11  Zdenek Dvorak  <dvorakz@suse.cz>
14172
14173         * tree-data-ref.c (add_multivariate_self_dist): Force the distance
14174         vector to be positive.
14175
14176 2007-04-11  Diego Novillo  <dnovillo@redhat.com>
14177
14178         PR 30735
14179         PR 31090
14180         * doc/invoke.texi: Document --params max-aliased-vops and
14181         avg-aliased-vops.
14182         * tree-ssa-operands.h (get_mpt_for, dump_memory_partitions,
14183         debug_memory_partitions): Move to tree-flow.h
14184         * params.h (AVG_ALIASED_VOPS): Define.
14185         * tree-ssa-alias.c (struct mp_info_def): Remove.  Update all
14186         users.
14187         (mp_info_t): Likewise.
14188         (get_mem_sym_stats_for): New.
14189         (set_memory_partition): Move from tree-flow-inline.h.
14190         (mark_non_addressable): Only clear the set of symbols for the
14191         partition if it exists.
14192         (dump_memory_partitions): Move from tree-ssa-operands.c
14193         (debug_memory_partitions): Likewise.
14194         (need_to_partition_p): New.
14195         (dump_mem_ref_stats): New.
14196         (debug_mem_ref_stats): New.
14197         (dump_mem_sym_stats): New.
14198         (debug_mem_sym_stats): New.
14199         (update_mem_sym_stats_from_stmt): New.
14200         (compare_mp_info_entries): New.
14201         (mp_info_cmp): Call it.
14202         (sort_mp_info): Change argument to a list of mem_sym_stats_t
14203         objects.
14204         (get_mpt_for): Move from tree-ssa-operands.c.
14205         (find_partition_for): New.
14206         (create_partition_for): Remove.
14207         (estimate_vop_reduction): New.
14208         (update_reference_counts): New.
14209         (build_mp_info): New.
14210         (compute_memory_partitions): Refactor.
14211         Document new heuristic.
14212         Call build_mp_info, update_reference_counts,
14213         find_partition_for and estimate_vop_reduction.
14214         (compute_may_aliases): Populate virtual operands before
14215         calling debugging dumps.
14216         (delete_mem_sym_stats): New.
14217         (delete_mem_ref_stats): New.
14218         (init_mem_ref_stats): New.
14219         (init_alias_info): Call it.
14220         (maybe_create_global_var): Remove alias_info argument.
14221         Get number of call sites and number of pure/const call sites
14222         from gimple_mem_ref_stats().
14223         (dump_alias_info): Call dump_memory_partitions first.
14224         (dump_points_to_info_for): Show how many times a pointer has
14225         been dereferenced.
14226         * opts.c (decode_options): For -O2 set --param
14227         max-aliased-vops to 500.
14228         For -O3 set --param max-aliased-vops to 1000 and --param
14229         avg-aliased-vops to 3.
14230         * fortran/options.c (gfc_init_options): Remove assignment to
14231         MAX_ALIASED_VOPS.
14232         * tree-flow-inline.h (gimple_mem_ref_stats): New.
14233         * tree-dfa.c (dump_variable): Dump memory reference
14234         statistics.
14235         Dump NO_ALIAS* settings.
14236         (referenced_var_lookup): Tidy.
14237         (mem_sym_stats): New.
14238         * tree-ssa-copy.c (may_propagate_copy): Return true if DEST
14239         and ORIG are different SSA names for a memory partition.
14240         * tree-ssa.c (delete_tree_ssa): Call delete_mem_ref_stats.
14241         * tree-flow.h (struct mem_sym_stats_d): Define.
14242         (mem_sym_stats_t): Define.
14243         (struct mem_ref_stats_d): Define.
14244         (struct gimple_df): Add field mem_ref_stats.
14245         (enum noalias_state): Define.
14246         (struct var_ann_d): Add bitfield noalias_state.
14247         (mem_sym_stats, delete_mem_ref_stats, dump_mem_ref_stats,
14248         debug_mem_ref_stats, debug_memory_partitions,
14249         debug_mem_sym_stats): Declare.
14250         * tree-ssa-structalias.c (update_alias_info): Update call
14251         sites, pure/const call sites and asm sites in structure
14252         returned by gimple_mem_ref_stats.
14253         Remove local variable IS_POTENTIAL_DEREF.
14254         Increase NUM_DEREFS if the memory expression is a potential
14255         dereference.
14256         Call update_mem_sym_stats_from_stmt.
14257         If the memory references memory, call
14258         update_mem_sym_stats_from_stmt for all the direct memory
14259         symbol references found.
14260         (intra_create_variable_infos): Set noalias_state field for
14261         pointer arguments according to the value of
14262         flag_argument_noalias.
14263         * tree-ssa-structalias.h (struct alias_info): Remove fields
14264         num_calls_found and num_pure_const_calls_found.
14265         (update_mem_sym_stats_from_stmt): Declare.
14266         * params.def (PARAM_MAX_ALIASED_VOPS): Change description.
14267         Set default value to 100.
14268         (PARAM_AVG_ALIASED_VOPS): Define.
14269
14270 2007-04-11  Richard Guenther  <rguenther@suse.de>
14271
14272         PR middle-end/31530
14273         * simplify-rtx.c (simplify_binary_operation_1): Do not simplify
14274         a * -b + c as c - a * b if we honor sign dependent rounding.
14275
14276 2007-04-11  Bernd Schmidt  <bernd.schmidt@analog.com>
14277
14278         * config/bfin/bfin-protos.h (bfin_expand_movmem): Renamed from
14279         bfin_expand_strmov.
14280         * config/bfin/bfin.c (bfin_expand_prologue, bfin_delegitimize_address,
14281         bfin_function_ok_for_sibcall, split_load_immediate): Remove unused
14282         variables.
14283         (initialize_trampoline): Don't use old-style function definition.
14284         (bfin_secondary_reload): Mark IN_P argument as unused.
14285
14286 2007-04-10  Sebastian Pop  <sebastian.pop@inria.fr>
14287
14288         PR tree-optimization/31343
14289         * tree-chrec.h (chrec_zerop): Moved before build_polynomial_chrec.
14290         (build_polynomial_chrec): Return a scalar when the evolution is zero.
14291         * testsuite/gcc.dg/vect/pr31343.c: New.
14292
14293 2007-04-10  Eric Christopher  <echristo@apple.com>
14294
14295         * config/i386/i386.h (X87_FLOAT_MODE_P): New.
14296         * config/i386/i386.md (*cmpfp0): Use.
14297         (*cmpfp_u, *cmpfp_<mode>, *cmpfp_i_i387): Ditto.
14298         (*cmpfp_iu_387, fix_trunc<mode>_fisttp_i386_1): Ditto.
14299         (fix_trunc<mode>_i386_fisttp): Ditto.
14300         (fix_trunc<mode>_i387_fisttp_with_temp): Ditto.
14301         (*fix_trunc<mode>_i387_1, fix_truncdi_i387): Ditto.
14302         (fix_truncdi_i387_with_temp, fix_trunc<mode>_i387): Ditto.
14303         (fix_trunc<mode>_i387_with_temp, *fp_jcc_1_387): Ditto.
14304         (*fp_jcc_2_387, *fp_jcc_5_387, *fp_jcc_6_387): Ditto.
14305         (*fp_jcc_7_387, *fp_jcc_8<mode>_387): Ditto.
14306         (unnamed_splitters): Ditto.
14307         * config/i386/i386.c (output_fix_trunc): Assert that
14308         we're not being passed a TFmode operand.
14309
14310 2007-04-10  Zdenek Dvorak  <dvorakz@suse.cz>
14311
14312         PR tree-optimization/31526
14313         * tree-inline.c (copy_cfg_body): Use last_basic_block instead of
14314         n_basic_blocks to find newly added blocks.
14315
14316 2007-04-10  Uros Bizjak  <ubizjak@gmail.com>
14317
14318         * config/i386/i386.md (fix_trunc<mode>di_sse): Remove "x" from "xm"
14319         alternative.
14320         (fix_trunc<mode>si_sse): Ditto.
14321         (*floatsisf2_mixed, *floatsisf2_sse): Ditto.
14322         (*floatsidf2_mixed, *floatsidf2_sse): Ditto.
14323         (*floatdisf2_mixed, *floatdisf2_sse): Ditto.
14324         (*floatdidf2_mixed, *floatdidf2_sse): Ditto.
14325         (floathi<mode>2): Rename from floathisf2 and floathidf2. Macroize
14326         expander using SSEMODEF mode macro.
14327         (floatsi<mode>2): Rename from floatsisf2 and floashidf2. Macroize
14328         expander using SSEMODEF mode macro.
14329         (*floathi<mode>2_i387): Rename from *floathisf2_i387 and
14330         *floathidf2_i387. Macroize insn using X87MODEF12 mode macro.
14331         (*floatsi<mode>2_i387): Rename from *floatsisf2_i387 and
14332         *floatsidf2_i387. Macroize insn using X87MODEF12 mode macro.
14333         (*floatdi<mode>2_i387): Rename from *floatdisf2_i387 and
14334         *floatdidf2_i387. Macroize insn using X87MODEF12 mode macro.
14335         (float<mode>xf2): Rename from floathixf2, floatsixf2 and floatdixf2.
14336         Macroize insn using X87MODEF mode macro.
14337
14338 2007-04-09  H.J. Lu  <hongjiu.lu@intel.com>
14339
14340         * config/i386/sse.md (sse2_pinsrw): Removed.
14341         (sse2_pextrw): Renamed to ...
14342         (*sse2_pextrw): This.
14343
14344 2007-04-09  Jan Hubicka  <jh@suse.cz>
14345
14346         PR target/27869
14347         * config/i386/sse.md
14348         (sse_vmaddv4sf3, sse_vmmulv4sf3): Remove '%' modifier.
14349         (sse_vmsmaxv4sf3_finite, sse_vmsminv4sf3_finite): Remove.
14350         (sse2_vmaddv2df3, sse2_vmmulv2df3): Remove '%' modifier.
14351         (sse2_vmsmaxv2df3_finite, sse2_vmsminv2df3_finite): Remove.
14352
14353 2007-04-09  Jan Hubicka  <jh@suse.cz>
14354
14355         * tree-ssa-ccp (maybe_fold_offset_to_component_ref): Recurse into
14356         multiple fields of union.
14357
14358 2007-04-09  Zdenek Dvorak  <dvorakz@suse.cz>
14359
14360         * cfgloopmanip.c (create_preheader): Do not use loop_preheader_edge.
14361         (create_preheaders): Check that loops are available.
14362         (fix_loop_structure): Clean up, improve comments.
14363         * tree-ssa-loop-manip.c (rewrite_into_loop_closed_ssa):
14364         Check that loops are available.  Set LOOP_CLOSED_SSA to the loops
14365         state flags.
14366         * tree-scalar-evolution.c (scev_finalize): Clear scalar_evolution_info.
14367         * predict.c (tree_estimate_probability): Do not call
14368         calculate_dominance_info.  Call create_preheaders.
14369         * tree-cfgcleanup.c (cleanup_tree_cfg_loop): Only call
14370         rewrite_into_loop_closed_ssa if LOOP_CLOSED_SSA is set in loops state
14371         flags.
14372         * cfgloop.c (loop_preheader_edge): Assert that loops have preheaders.
14373         * cfgloop.h (LOOP_CLOSED_SSA): New constant.
14374         * tree-cfg.c (tree_split_edge): Make an assert more precise.
14375         * tree-ssa-threadedge.c (thread_across_edge): Comment the function
14376         arguments.
14377
14378 2007-04-08  Jan Hubicka  <jh@suse.cz>
14379
14380         * tree.h (maybe_fold_offset_to_component_ref): Declare.
14381         * tree-ssa-ccp.c (maybe_fold_offset_to_component_ref): Export.
14382         * fold-const.c (fold_unary): Use it.
14383
14384 2007-04-08  Andrew Pinski  <andrew_pinski@playstation.sony.com>
14385
14386         * varasm.c (assemble_variable): Remove call to
14387         lang_hooks.decls.prepare_assemble_variable.
14388         * langhooks-def.h (LANG_HOOKS_PREPARE_ASSEMBLE_VARIABLE): Kill.
14389         (LANG_HOOKS_DECLS): Remove LANG_HOOKS_PREPARE_ASSEMBLE_VARIABLE.
14390         * langhooks.h (lang_hooks_for_decls): Remove
14391         prepare_assemble_variable.
14392
14393 2007-04-08  Mike Stump  <mrs@apple.com>
14394
14395         * config/i386/i386.c: Use inc/dec on Core2.
14396
14397 2007-04-08  Steven Bosscher  <steven@gcc.gnu.org>
14398
14399         * langhooks.c (lhd_tree_inlining_add_pending_fn_decls,
14400         lhd_tree_inlining_anon_aggr_type_p, lhd_tree_inlining_start_inlining,
14401         lhd_tree_inlining_end_inlining): Remove.
14402         * langhooks.h (struct lang_hooks_for_tree_inlining): Remove then
14403         add_pending_fn_decls, anon_aggr_type_p, start_inlining, and
14404         end_inlining hooks.
14405         * langhooks-def.h (lhd_tree_inlining_add_pending_fn_decls,
14406         lhd_tree_inlining_anon_aggr_type_p, lhd_tree_inlining_start_inlining,
14407         lhd_tree_inlining_end_inlining): Remove prototypes.
14408         (LANG_HOOKS_TREE_INLINING_ADD_PENDING_FN_DECLS,
14409         LANG_HOOKS_TREE_INLINING_ANON_AGGR_TYPE_P,
14410         LANG_HOOKS_TREE_INLINING_START_INLINING,
14411         LANG_HOOKS_TREE_INLINING_END_INLINING): Remove.
14412
14413         * c-objc-common.h (LANG_HOOKS_TREE_INLINING_ANON_AGGR_TYPE_P): Do
14414         not set it.
14415
14416 2007-04-08  Anatoly Sokolov <aesok@post.ru>
14417
14418         PR target/29932
14419         * config/avr/predicates.md (io_address_operand): Delete predicate.
14420         (low_io_address_operand): Don't use 'mode' argument.
14421         (higth_io_address_operand): Rename ...
14422         (high_io_address_operand): ... to this. Don't use 'mode' argument.
14423         * config/avr/avr.md (*sbix_branch_tmp, *sbix_branch_tmp_bit7): Adjust
14424         for above change.
14425
14426 2007-04-07  Daniel Berlin  <dberlin@dberlin.org>
14427
14428         Revert change removing staticp.
14429
14430 2007-04-07  Anatoly Sokolov <aesok@post.ru>
14431
14432         PR target/30289
14433         * config/avr/avr.md (*clrmemqi, *clrmemhi): Mark operand 4 as
14434         earlyclobber.
14435
14436 2007-04-07  Bruce Korb  <bkorb@gnu.org>
14437
14438         * c.opt: Add -Wformat-contains-nul.
14439         * c-format.c (set_Wformat):  Set warn_format_contains_nul to the
14440           -Wformat setting.
14441         (check_format_info_main): Check OPT_Wformat_contains_nul before emitting
14442         the NUL byte warning.
14443
14444 2007-04-07  H.J. Lu  <hongjiu.lu@intel.com>
14445
14446         * config/i386/i386.c (ix86_handle_option): Handle SSSE3.
14447
14448 2007-04-06  Daniel Berlin  <dberlin@dberlin.org>
14449
14450         * tree.c (staticp): No longer use staticp langhook.
14451         * langhooks.c (lhd_staticp): Removed.
14452         * langhooks.h (struct lang_hooks): Remove staticp.
14453         * c-common.c (c_staticp): Remove.
14454         * c-common.h (c_staticp): Ditto.
14455         * langhooks-defs.h (lhd_staticp): Ditto.
14456         (LHD_HOOKS_STATICP): Ditto
14457         * tree.h (gcc_assert_lowered): New macro.
14458
14459 2007-04-06  Zdenek Dvorak  <dvorakz@suse.cz>
14460
14461         * tree-ssa-loop-niter.c (idx_infer_loop_bounds): Add and use
14462         argument "reliable".
14463         (infer_loop_bounds_from_ref, infer_loop_bounds_from_array):
14464         Add argument "reliable".  Propagate it through calls.
14465         (infer_loop_bounds_from_undefined):  Derive number of iterations
14466         estimates from references in blocks that do not dominate loop latch.
14467         (gcov_type_to_double_int): New function.
14468         (estimate_numbers_of_iterations_loop): Use gcov_type_to_double_int
14469         and expected_loop_iterations_unbounded.
14470         * cfgloopanal.c (expected_loop_iterations_unbounded): New function.
14471         (expected_loop_iterations): Use expected_loop_iterations_unbounded.
14472         * tree-data-ref.c (estimated_loop_iterations): Export.
14473         (get_references_in_stmt): Fix -- do not return addresses of local
14474         objects.
14475         * cfgloop.h (expected_loop_iterations_unbounded,
14476         estimated_loop_iterations): Declare.
14477
14478 2007-04-06  Andreas Tobler  <a.tobler@schweiz.org>
14479
14480         * tree-sra.c (sra_build_elt_assignment): Initialize min/maxshift.
14481
14482 2007-04-06  Uros Bizjak  <ubizjak@gmail.com>
14483
14484         * config/i386/i386.md (extend<mode>xf2): Rename from extendsfxf2
14485         and extenddfxf2. Macroize expander using X87MODEF12 mode macro.
14486         (*truncdfsf_mixed, *truncdfsf_i387, *truncdfsf2_i387_1):
14487         Use output_387_reg_move().
14488         (*truncxf<mode>2): Rename from *truncxfsf2 and truncxfdf2. Macroize
14489         expander using X87MODEF12 mode macro.
14490         (*truncxfsf2_mixed): Combine alternatives, ignore "r" alternative when
14491         choosing register preferences.  Use output_387_reg_move().
14492         (*truncxfdf2_mixed): Combine alternatives, use "r" alternative
14493         instead of "x".  Use output_387_reg_move().
14494         (*truncxf<mode>2_i387_noop): Rename from *truncxfsf2_i387_noop and
14495         *truncxfdf2_i387_noop.  Macroize insn using X87MODEF12 mode macro.
14496         (*truncxf<mode>2_i387): Rename from *truncxfsf2_i387 and
14497         *truncxfdf2_i387.  Macroize insn using X87MODEF12 mode macro.
14498         Use output_387_reg_move().
14499         (*truncxf?f_mixed splitter): Macroize splitter using X87MODEF12
14500         mode macro.
14501         (*truncxf?f_i387 splitter): Ditto.
14502
14503 2007-04-06  Daniel Berlin  <dberlin@dberlin.org>
14504
14505         * langhooks-def.h (LANG_HOOKS_INITIALIZER): Remove
14506         LANG_HOOKS_SAFE_FROM_P.
14507         * expr.c (safe_from_p): Remove langhook call.
14508         * langhooks.h (lang_hooks): Remove safe_from_p.
14509         (lhd_safe_from_p): Remove prototype.
14510         * langhooks.c (lhd_safe_from_p): Remove.
14511
14512 2007-04-06  Jan Hubicka  <jh@suse.cz>
14513
14514         * cgraphunit.c (decide_is_function_needed): Do not keep always_inline
14515         functions.
14516
14517 2007-04-06  Uros Bizjak  <ubizjak@gmail.com>
14518
14519         * config/i386/i386.c (output_387_reg_move): Handle memory operand[0].
14520         * config/i386/i386.md (*movsf_1, *movdf_nointeger,
14521         *movdf_integer_rex64, *movdf_integer, *movxf_nointeger,
14522         *movxf_integer): Use output_387_reg_move() for x87 reg->mem
14523         alternative.
14524         (*extendsfdf2_mixed, *extendsfdf2_i387, *extendsfxf2_i387,
14525         *extenddfxf2_i387, *truncdfsf_fast_mixed): Ditto.
14526
14527 2007-04-05  Richard Henderson  <rth@redhat.com>
14528
14529         * config/alpha/alpha.c (print_operand) [+]: Remove.
14530         (alpha_end_function): Print nop if call at end of function.
14531         * config/alpha/alpha.h (PRINT_OPERAND_PUNCT_VALID_P): Remove +.
14532         * config/alpha/alpha.md (UNSPEC_LDGP1): New.
14533         (call_osf_1_er_noreturn, call_value_osf_1_er_noreturn): New.
14534         (call_osf_2_er_nogp, call_value_osf_2_er_nogp): New.
14535         (call_osf_2_er, call_value_osf_2_er): Merge the ldgp highpart into
14536         the call pattern. Update peepholes to match.
14537
14538 2007-04-05  Janis Johnson  <janis187@us.ibm.com>
14539
14540         * doc/extend.texi (Other Builtins): Add decimal float variants
14541         of signbit.
14542         * builtins.def: Ditto.
14543         * builtins.c (expand_builtin): Ditto.
14544
14545 2007-04-05  Uros Bizjak  <ubizjak@gmail.com>
14546             H.J. Lu  <hongjiu.lu@intel.com>
14547
14548         PR target/31478
14549         * config/i386/sse.md (sse2_umulv2siv2di3): Use V4SImode instead
14550         of V8HImode when calling ix86_binary_operator_ok.
14551         (sse2_pmaddwd): Call ix86_binary_operator_ok.
14552         (sdot_prodv8hi): Operands 1 and 2 must be register.
14553
14554 2007-04-05  Alexandre Oliva  <aoliva@redhat.com>
14555
14556         * tree-sra.c (try_instantiate_multiple_fields): Needlessly
14557         initialize align to silence bogus warning.
14558
14559 2007-04-05  Alexandre Oliva  <aoliva@redhat.com>
14560
14561         PR middle-end/22156
14562         * tree-sra.c (struct sra_elt): Add in_bitfld_block.  Remove
14563         all_no_warning.
14564         (struct sra_walk_fns): Remove use_all parameter from use.
14565         (sra_hash_tree): Handle BIT_FIELD_REFs.
14566         (sra_elt_hash): Don't hash bitfld blocks.
14567         (sra_elt_eq): Skip them in parent compares as well.  Handle
14568         BIT_FIELD_REFs.
14569         (sra_walk_expr): Don't maintain or pass down use_all_p.
14570         (scan_use): Remove use_all parameter.
14571         (scalarize_use): Likewise.  Re-expand assignment to
14572         BIT_FIELD_REF of gimple_reg.  De-scalarize before input or
14573         output, and re-scalarize after output.  Don't mark anything
14574         for no warning.
14575         (scalarize_ldst): Adjust.
14576         (scalarize_walk_gimple_modify_statement): Likewise.
14577         (build_element_name_1): Handle BIT_FIELD_REFs.
14578         (instantiate_element): Don't warn for any element whose parent
14579         is used as a whole.
14580         (instantiate_missing_elements_1): Return the sra_elt.
14581         (canon_type_for_field): New.
14582         (try_instantiate_multiple_fields): New.
14583         (instantiate_missing_elemnts): Use them.
14584         (mark_no_warning): Removed.
14585         (generate_one_element_ref): Handle BIT_FIELD_REFs.
14586         (REPLDUP, sra_build_elt_assignment): New.
14587         (generate_copy_inout): Use them.
14588         (generate_element_copy): Likewise.  Handle bitfld differences.
14589         (generate_element_zero): Don't recurse for blocks.  Use
14590         sra_build_elt_assignment.
14591         (generate_one_element_int): Take elt instead of var.  Use
14592         sra_build_elt_assignment.
14593         (generate_element_init_1): Adjust.
14594         (scalarize_use, scalarize_copy): Use REPLDUP.
14595         (scalarize_ldst): Move assert before dereference.
14596         (dump_sra_elt_name): Handle BIT_FIELD_REFs.
14597
14598 2007-04-05  Steven Bosscher  <steven@gcc.gnu.org>
14599
14600         * regmove.c: Fix unused variable warnings due to previous commit.
14601
14602 2007-04-05  Steven Bosscher  <steven@gcc.gnu.org>
14603
14604         * regmove.c (STACK_GROWS_DOWNWARD): Don't boolean-ize.
14605         (regmove_bb_head): Remove.
14606         (copy_src_to_dest): Don't update regmove_bb_head and BB_HEAD.
14607         (regmove_optimize): Don't do unnecessary CFG fixes for non-existing
14608         problems with fixup_match_1.
14609         Don't initialize/free regmove_bb_head.
14610
14611         (reg_is_remote_constant_p): If an insn is in the same basic block
14612         but not before INSN, consider it remote, too.
14613
14614 2007-04-05  Anatoly Sokolov <aesok@post.ru>
14615
14616         PR target/25448
14617         * config/avr/avr.c (avr_handle_fndecl_attribute): Use the
14618         DECL_ASSEMBLER_NAME, not the DECL_NAME.
14619
14620 2007-04-05  H.J. Lu  <hongjiu.lu@intel.com>
14621
14622         * config/i386/i386.h (TARGET_CPU_CPP_BUILTINS): Reformat.
14623         (CONDITIONAL_REGISTER_USAGE): Likewise.
14624
14625 2007-04-04  Richard Henderson  <rth@redhat.com>
14626
14627         * config/alpha/lib1funcs.asm: Remove unused file.
14628
14629 2007-04-04  Brooks Moses  <brooks.moses@codesourcery.com>
14630
14631         PR other/31356
14632         * opts.c (print_specific_help): Fix --help=<language>
14633         header line.
14634         (common_handle_option): Support --help=common.
14635
14636 2007-04-04  Brooks Moses  <brooks.moses@codesourcery.com>
14637
14638         PR other/31353
14639         * gcc.c (main): Do not run the linker if
14640         print_subprocess_help indicates that it shouldn't be
14641         run.
14642
14643 2007-04-04  Brooks Moses  <brooks.moses@codesourcery.com>
14644
14645         PR doc/31355
14646         * doc/invoke.texi (--help=): Document <languages> value, fix
14647         formatting in tables of values.
14648
14649 2007-04-04  Danny Smith  <dannysmith.users.sourceforge.net>
14650
14651         * config/i386/winnt-cxx.c (i386_pe_type_dllimport_p): Don't ignore
14652         dllimport attribute of virtual methods.
14653
14654 2007-04-04  Chen Liqin  <liqin@sunnorth.com.cn>
14655
14656         * config/score/crti.asm: Change _bss_start to __bss_start.
14657         * config/score/score.h (CONDITIONAL_REGISTER_USAGE): Added.
14658         (OUTGOING_REG_PARM_STACK_SPACE) update.
14659         * config/score/score.opt: add options to make backend support
14660         score5, score5u, score7 and score7d.
14661         * config/score/score.md: Likewise.
14662         * config/score/misc.md: Likewise.
14663         * config/score/mac.md: Likewise.
14664         * doc/invoke.texi: Likewise.
14665         * doc/md.texi: update constraints define.
14666
14667 2007-04-03  Richard Henderson  <rth@redhat.com>
14668
14669         * expr.c (store_expr): If get_signed_or_unsigned_type doesn't yield
14670         an appropriate type, use the mode instead.
14671
14672 2007-04-03  Richard Sandiford  <richard@codesourcery.com>
14673
14674         * config.gcc (mips-wrs-vxworks): Add vx-common.h to tm_file.
14675         Set the default --with-arch setting to mips2.
14676         * config/mips/t-vxworks (MULTILIB_OPTIONS, MULTILIB_MATCHES)
14677         (MULTILIB_EXCEPTIONS): Redefine with new multilibs.
14678         (MULTILIB_OSDIRNAMES): Delete.
14679         (MULTILIB_DIRNAMES): Define.
14680         * config/mips/vxworks.h (LINK_SPEC): Add VXWORKS_LINK_SPEC.
14681         (LIB_SPEC, STARTFILE_SPEC, ENDFILE_SPEC): Define.
14682         (TARGET_OS_CPP_BUILTINS): Incorporate old SUBTARGET_CPP_SPEC
14683         definitions, except for _WRS_R3K_EXC_SUPPORT.  Call
14684         VXWORKS_OS_CPP_BUILTINS.
14685         (SUBTARGET_CPP_SPEC): Redefine to VXWORKS_ADDITIONAL_CPP_SPEC.
14686         (MIPS_DEBUGGING_INFO): Undefine.
14687         (FUNCTION_PROFILER): Define to VXWORKS_FUNCTION_PROFILER.
14688
14689 2007-04-03  Jakub Jelinek  <jakub@redhat.com>
14690
14691         PR middle-end/30704
14692         * fold-const.c (native_encode_real): Encode real.c provided longs
14693         as a series of 32-bit native integers.
14694         (native_interpret_real): Interpret buffer as a series of 32-bit
14695         native integers.
14696
14697 2007-04-03  Richard Guenther  <rguenther@suse.de>
14698
14699         * genpreds.c (write_insn_constraint_len): Write function
14700         optimized for CONSTRAINT_LEN implementation.
14701         (write_tm_preds_h): Output insn_constraint_len inline and
14702         use it for CONSTRAINT_LEN.
14703         (write_insn_preds_c): Don't output insn_constraint_len.
14704         * doc/md.texi (define_register_constraint): Document multi-letter
14705         constraints shall have the same length if they start with the same
14706         letter.
14707
14708 2007-04-03  Uros Bizjak  <ubizjak@gmail.com>
14709
14710         PR target/31175
14711         * config/i386/i386.md (isinf<mode>2): Expand only when
14712         TARGET_C99_FUNCTIONS is set.
14713
14714 2007-04-03  Uros Bizjak  <ubizjak@gmail.com>
14715
14716         * config.gcc (i[34567]86-*-linux*): Add i386/t-crtpc to tm-file.
14717         (x86_64-*-linux*): Ditto.
14718         * config/i386/i386.opt (mpc): New option.
14719         * config/i386/i386.c (overrride_options): Handle
14720         ix87_precision_string.
14721         * config/i386/crtprec.c: New file.
14722         * config/i386/t-crtpc: Ditto.
14723         * config/i386/linux.h (ENDFILE_SPEC): Add handling of -mpc32, -mpc64
14724         and -mpc80 options.
14725         * config/i386/linux64.h (ENDFILE_SPEC): Ditto.
14726         * config/i386/t-linux64 (EXTRA_MULTILIB_PARTS): Add
14727         crtprec32.o, crtprec64.o and crtprec80.o.
14728
14729         * doc/invoke.texi (Machine Dependent Options): Add -mpc32, -mpc64
14730         and -mpc80 options.
14731         (i386 and x86-64 Options): Document -mpc32, -mpc64 and -mpc80 options.
14732
14733 2007-04-02  Eric Christopher  <echristo@apple.com>
14734
14735         * doc/invoke.texi (i386 and x86-64 Options): Document -m64
14736         limitations on darwin.
14737
14738 2007-04-02  Anatoly Sokolov <aesok@post.ru>
14739
14740         PR target/31137
14741         * config/avr/avr.c (avr_rtx_costs): Add missing 'break' statements.
14742
14743 2007-04-02  Dave Korn  <dave.korn@artimi.com>
14744
14745         * doc/tm.texi (FUNCTION_MODE): Update and extend documentation.
14746
14747 2007-04-02  Dave Korn  <dave.korn@artimi.com>
14748
14749         * libgcc2.h (exception_descriptor): Don't forward-declare.
14750         (__get_eh_table_language, __get_eh_table_version): Delete
14751         prototypes of long-dead functions.
14752
14753 2007-04-01  Daniel Berlin  <dberlin@dberlin.org>
14754
14755         * ebitmap.h: New file
14756         * ebitmap.c: New file
14757         * Makefile.in (ebitmap.o): New target.
14758
14759 2007-04-01  Jan Hubicka  <jh@suse.cz>
14760
14761         * emit-rtl.c (emit_insn_before_setloc): Do not ICE when asked to emit
14762         before very first instruction.
14763
14764 2007-04-01  Jan Hubicka  <jh@suse.cz>
14765
14766         * ggc-page.c (ggc_print_statistics): Fix formatting string to avoid
14767         waring on 64bit hosts.
14768         * bitmap.h: Fix typo in bitmap_head_def.
14769
14770 2007-04-01  Steven Bosscher  <steven@gcc.gnu.org>
14771
14772         PR rtl-optimization/31391
14773         * cfgcleanup.c (try_optimize_cfg): If a removed label is turned
14774         into a DELETED_LABEL note, and the label is in an empty basic
14775         block, update BB_END as well as BB_HEAD.
14776
14777 2007-04-01  Richard Henderson  <rth@redhat.com>
14778
14779         PR tree-optimization/31169
14780         * tree-vrp.c (extract_range_from_binary_expr) <RSHIFT_EXPR>: Drop
14781         to varying if the range is outside [0,  prec-1].
14782
14783 2007-04-01  Richard Sandiford  <richard@codesourcery.com>
14784
14785         PR target/31388
14786         * config/mips/mips.md (load_const_gp): New insn.
14787         * config/mips/mips.c (mips_split_symbol): Avoid using or creating
14788         the MIPS16 GP pseudo register if no_new_pseudos.
14789         (mips16_gp_pseudo_reg): Use gen_load_const_gp.
14790
14791 2007-03-31  Andrew Pinski  <andrew_pinski@playstation.sony.com>
14792
14793         PR target/31364
14794         * config/rs6000/rs6000.md (call): Convert to LR hard reg for
14795         secureplt.
14796         (call_value): Likewise.
14797
14798 2007-03-31  Wolfgang Bangerth  <bangerth@dealii.org>
14799             Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
14800
14801         PR 14737
14802         * doc/invoke.texi: (optimization options): Reword description
14803         of -ffast-math. Document its primary purpose.
14804
14805 2007-03-31  Richard Guenther  <rguenther@suse.de>
14806
14807         * omp-low.c (splay-tree.h): Include.
14808         (lookup_decl): Replace splay-tree usage by pointer-map.
14809         (maybe_lookup_decl): Likewise.
14810         (new_omp_context): Likewise.
14811         (delete_omp_context): Likewise.
14812         * gimplify.c (splay-tree.h): Include.
14813         * tree-inline.c (insert_decl_map): Replace splay-tree usage by
14814         pointer-map.
14815         (remap_ssa_name): Likewise.
14816         (remap_decl): Likewise.
14817         (remap_type_1): Likewise.
14818         (remap_type): Likewise.
14819         (copy_body_r): Likewise.
14820         (expand_call_inline): Likewise.
14821         (clone_body): Likewise.
14822         (copy_tree_r): Likewise.
14823         (remap_save_expr): Likewise.
14824         (unsave_r): Likewise.
14825         (unsave_expr_now): Likewise.
14826         (tree_function_versioning): Likewise.
14827         (build_duplicate_type): Likewise.
14828         * tree-inline.h (pointer-set.h): Include instead of splay-tree.h.
14829         (struct copy_body_data): Replace splay-tree by pointer-map.
14830         * Makefile.in (TREE_INLINE_H): Depend on pointer-map.h,
14831         not $(SPLAY_TREE_H).
14832         (gimplify.o): Depend on $(SPLAY_TREE_H).
14833         (omp-low.p): Likewise.
14834
14835 2007-03-31  Anatoly Sokolov <aesok@post.ru>
14836
14837         * config/avr/predicates.md (even_register_operand,
14838         odd_register_operand): New predicates.
14839         * config/avr/avr.md (movw peephole2): New.
14840         (movw_r peephole2): New.
14841
14842 2007-03-30  Rafael Avila de Espindola  <espindola@google.com>
14843
14844         * tree.h (get_signed_or_unsigned_type): New.
14845         * fold-const.c (operand_equal_for_comparison_p): Use
14846         get_signed_or_unsigned_type instead of
14847         lang_hooks.types.signed_or_unsigned_type.
14848         * expr.c (store_expr): Ditto.
14849         * langhooks.c (get_signed_or_unsigned_type): New.
14850         (lhd_signed_or_unsigned_type): New.
14851         * langhooks.h (lhd_signed_or_unsigned_type): New.
14852         * langhooks-def.h (LANG_HOOKS_SIGNED_OR_UNSIGNED_TYPE): Define.
14853
14854 2007-03-30  Richard Henderson  <rth@redhat.com>
14855
14856         * tree-ssa-loop-ivopts.c: Include target.h.
14857         (produce_memory_decl_rtl): Pass the rtx through encode_section_info.
14858         (get_address_cost): Force SYMBOL_FLAG_LOCAL set.
14859         (force_expr_to_var_cost): Use produce_memory_decl_rtl.
14860         * Makefile.in (tree-ssa-loop-ivopts.o): Depend on TARGET_H.
14861
14862 2007-03-30  Richard Henderson  <rth@redhat.com>
14863             Kai Tietz  <kai.tietz@onevision.com>
14864
14865         * config/i386/cygming.h (DWARF2_DEBUGGING_INFO): Enable by
14866         default for 64-bit.
14867         (PREFERRED_DEBUGGING_TYPE): Prefer dwarf2 for 64-bit.
14868         (TARGET_64BIT_MS_ABI): New.
14869         (DBX_REGISTER_NUMBER): Handle 64-bit.
14870         (SIZE_TYPE, PTRDIFF_TYPE): Use long long for 64-bit.
14871         (LONG_TYPE_SIZE): Force to 32.
14872         (REG_PARM_STACK_SPACE): New.
14873         (OUTGOING_REG_PARM_STACK_SPACE): New.
14874         (REGPARM_MAX, SSE_REGPARM_MAX): New.
14875         (HANDLE_PRAGMA_PUSH_POP_MACRO): New.
14876         (STACK_BOUNDARY): Use 128 for 64-bit.
14877         * config/i386/cygwin.asm: Use push/ret to preserve call stack.
14878         Add 64-bit implementation.
14879         * config/i386/gthr-win32.c (__gthr_win32_key_create): Mark dtor
14880         argument unused.
14881         * config/i386/i386.c (x86_64_ms_abi_int_parameter_registers): New.
14882         (override_options): Set ix86_cmodel for TARGET_64BIT_MS_ABI.
14883         Warn for -mregparm, -mrtd in 64-bit mode; force ix86_regparm
14884         for 64-bit; use TARGET_SUBTARGET64_DEFAULT.
14885         (ix86_handle_cconv_attribute): Don't warn when ignoring if
14886         TARGET_64BIT_MS_ABI.
14887         (ix86_function_arg_regno_p): Handle TARGET_64BIT_MS_ABI.
14888         (ix86_pass_by_reference): Likewise.
14889         (ix86_function_value_regno_p): Likewise.
14890         (ix86_build_builtin_va_list): Likewise.
14891         (ix86_va_start, ix86_gimplify_va_arg): Likewise.
14892         (function_arg_advance_ms_64): New.
14893         (function_arg_advance): Call it.
14894         (function_arg_ms_64): New.
14895         (function_arg): Call it.
14896         (function_value_ms_64): New.
14897         (ix86_function_value_1): Call it.
14898         (return_in_memory_ms_64): New.
14899         (ix86_return_in_memory): Call it.
14900         (setup_incoming_varargs_ms_64): New.
14901         (ix86_setup_incoming_varargs): Call it.
14902         (ix86_expand_prologue): Handle 64-bit stack probing.
14903         (legitimize_pic_address): Handle TARGET_64BIT_MS_ABI.
14904         (output_pic_addr_const): Likewise.
14905         (x86_this_parameter): Likewise.
14906         (x86_output_mi_thunk): Likewise.
14907         (x86_function_profiler): Likewise.
14908         (TARGET_STRICT_ARGUMENT_NAMING): New.
14909         * config/i386/i386.h (TARGET_SUBTARGET64_DEFAULT): New.
14910         (TARGET_64BIT_MS_ABI): New.
14911         (CONDITIONAL_REGISTER_USAGE): Handle TARGET_64BIT_MS_ABI.
14912         * config/i386/i386.md (allocate_stack_worker): Remove.
14913         (allocate_stack_worker_32): Rename from allocate_stack_worker_1;
14914         describe the clobber of eax without a match_scratch.
14915         (allocate_stack_worker_postreload): Remove.
14916         (allocate_stack_worker_64): Rename from allocate_stack_worker_rex64;
14917         describe the clobbers of rax, r10, r11 properly; use __chkstk symbol.
14918         (allocate_stack_worker_rex64_postreload): Remove.
14919         (allocate_stack): Handle 64-bit.
14920         * config/i386/i386elf (TARGET_SUBTARGET_DEFAULT): Remove.
14921         * config/i386/mingw32.h (TARGET_VERSION): Set correctly for 64-bit.
14922         (EXTRA_OS_CPP_BUILTINS): Handle 64-bit.
14923         (STANDARD_INCLUDE_DIR): Handle TARGET_64BIT_DEFAULT.
14924         (STANDARD_STARTFILE_PREFIX_1): Likewise.
14925         * config/i386/unix.h (TARGET_SUBTARGET64_DEFAULT): New.
14926         * config.build (x86_64-*-mingw*): New host.
14927         * config.host (x86_64-*-mingw*): New host.
14928         * config.gcc (x86_64-*-mingw*): New target.
14929         * gthr-win32.h (__gthread_key_create): Mark dtor unused.
14930
14931 2007-03-30  Richard Henderson  <rth@redhat.com>
14932             Kai Tietz  <kai.tietz@onevision.com>
14933
14934         * c-pragma.c (struct def_pragma_macro_value): New.
14935         (struct def_pragma_macro): New.
14936         (pushed_macro_table): New.
14937         (dpm_hash, dpm_eq): New.
14938         (handle_pragma_push_macro, handle_pragma_pop_macro): New.
14939         (init_pragma): Install them.
14940         * doc/tm.texi (HANDLE_PRAGMA_PUSH_POP_MACRO): New.
14941
14942 2007-03-30  Anatoly Sokolov <aesok@post.ru>
14943
14944         * config/avr/avr.c (avr_override_options): Clear
14945         'flag_delete_null_pointer_checks'.
14946
14947 2007-03-30  Paolo Carlini  <pcarlini@suse.de>
14948
14949         PR c++/26099
14950         * c-common.h (enum rid): Add RID_HAS_NOTHROW_ASSIGN,
14951         RID_HAS_NOTHROW_CONSTRUCTOR, RID_HAS_NOTHROW_COPY,
14952         RID_HAS_TRIVIAL_ASSIGN, RID_HAS_TRIVIAL_CONSTRUCTOR,
14953         RID_HAS_TRIVIAL_COPY, RID_HAS_TRIVIAL_DESTRUCTOR,
14954         RID_HAS_VIRTUAL_DESTRUCTOR, RID_IS_ABSTRACT, RID_IS_BASE_OF,
14955         RID_IS_CONVERTIBLE_TO, RID_IS_CLASS, RID_IS_EMPTY, RID_IS_ENUM,
14956         RID_IS_POD, RID_IS_POLYMORPHIC, RID_IS_UNION, as
14957         C++ extensions.
14958         * doc/extend.texi (Extensions to the C++ Language): Add Type Traits.
14959
14960 2007-03-30  Steven Bosscher  <steven@gcc.gnu.org>
14961
14962         * regmove.c: Move all of pass_stack_adjustments from here...
14963         * combine-stack-adj.c: ...to this new file.
14964         * Makefile.in: Add rules for combine-stack-adj.o.
14965
14966 2007-03-30  Zdenek Dvorak  <dvorakz@suse.cz>
14967
14968         PR tree-optimization/31383
14969         * tree-data-ref.c (affine_function_equal_p): Do not require the
14970         vectors to have the same length.
14971
14972 2007-03-30  Jan Hubicka  <jh@suse.cz>
14973
14974         PR middle-end/30700
14975         * dwarf2out.c (reference_to_unused): Ask cgraph for functions
14976         availablility; add more sanity checking; ask varpool only about
14977         VAR_DECL.
14978
14979 2007-03-29  Richard Henderson  <rth@redhat.com>
14980
14981         * unwind-generic.h (_sleb128_t, _uleb128_t): Don't use HAVE_LONG_LONG
14982         to decide, but __SIZEOF_LONG_LONG__.
14983
14984 2007-03-29  Richard Henderson  <rth@redhat.com>
14985
14986         * emutls.c (struct __emutls_array): New.
14987         (emutls_destroy): Use it instead of casting element 0 from void*.
14988         (__emutls_get_address): Likewise.
14989
14990 2007-03-29  Richard Henderson  <rth@redhat.com>
14991
14992         * varasm.c (initializer_constant_valid_p): Don't deny
14993         DECL_DLLIMPORT_P on functions.
14994
14995         * config/i386/cygming.h: Remove function declarations.
14996         (SUBTARGET_ENCODE_SECTION_INFO): Don't undef first.
14997         (ASM_OUTPUT_LABELREF): Remove.
14998         (COMMON_ASM_OP): Remove.
14999         (ASM_OUTPUT_COMMON): Remove.
15000         (ASM_OUTPUT_ALIGNED_DECL_COMMON): New.
15001         (ASM_DECLARE_OBJECT_NAME): Use i386_pe_maybe_record_exported_symbol.
15002         (ASM_DECLARE_FUNCTION_NAME): Likewise.
15003         * config/i386/i386-interix.h (SUBTARGET_ENCODE_SECTION_INFO):
15004         Rename from TARGET_ENCODE_SECTION_INFO.
15005         * config/i386/netware.h: Likewise.
15006         * config/i386/i386-protos.h: Update.
15007         * config/i386/i386.c (ix86_function_ok_for_sibcall): Turn ifdef
15008         of TARGET_DLLIMPORT_DECL_ATTRIBUTES into straight if.
15009         (legitimate_constant_p): Reject dllimports.
15010         (dllimport_map, get_dllimport_decl): New.
15011         (legitimize_dllimport_symbol): New.
15012         (legitimize_address, ix86_expand_move): Use it.
15013         (TARGET_BINDS_LOCAL_P): Redefine for TARGET_DLLIMPORT_DECL_ATTRIBUTES.
15014         * config/i386/i386.h (DLL_IMPORT_EXPORT_PREFIX): Remove.
15015         (SYMBOL_FLAG_DLLIMPORT, SYMBOL_REF_DLLIMPORT_P): New.
15016         (SYMBOL_FLAG_DLLEXPORT, SYMBOL_REF_DLLEXPORT_P): New.
15017         * config/i386/predicates.md (constant_call_address_operand): Only
15018         accept symbols; reject dllimport_p symbols.
15019         * config/i386/uwin.h (ASM_DECLARE_FUNCTION_NAME): Use
15020         i386_pe_maybe_record_exported_symbol.
15021         * config/i386/winnt.c (DLL_IMPORT_PREFIX, DLL_EXPORT_PREFIX): Remove.
15022         (i386_pe_determine_dllexport_p): Rename from i386_pe_dllexport_p.
15023         (i386_pe_determine_dllimport_p): Rename from i386_pe_dllimport_p;
15024         trust the setting of DECL_DLLIMPORT_P.
15025         (i386_pe_dllexport_name_p, i386_pe_dllimport_name_p): Remove.
15026         (i386_pe_mark_dllexport, i386_pe_mark_dllimport): Remove.
15027         (gen_stdcall_or_fastcall_suffix): Return NULL if no change required;
15028         tidy the argument scanning loop.
15029         (i386_pe_encode_section_info): Set SYMBOL_FLAG_DLLIMPORT and
15030         SYMBOL_FLAG_DLLEXPORT in SYMBOL_REF_FLAGS.
15031         (i386_pe_strip_name_encoding): Remove.
15032         (i386_pe_binds_local_p): New.
15033         (i386_pe_strip_name_encoding_full): Use default_strip_name_encoding.
15034         (i386_pe_output_labelref): Remove.
15035         (i386_pe_asm_output_aligned_decl_common): New.
15036         (i386_pe_maybe_record_exported_symbol): Rename from
15037         i386_pe_record_exported_symbol; check for dllexported symbols.
15038
15039 2007-03-29  Zack Weinberg  <zack@mrtock.ucsd.edu>
15040
15041         * gengtype.c (oprintf): Mostly revert changes from 2007-03-26;
15042         add comment explaining why vsnprintf cannot be used.
15043
15044 2007-03-29  Douglas Gregor  <doug.gregor@gmail.com>
15045
15046         PR tree-optimization/30666
15047         * tree.c (build_complex_type): When creating type names for DWARF2
15048         debug info, create TYPE_DECLs for TYPE_NAME instead of
15049         IDENTIFIER_NODEs.
15050         (build_common_tree_nodes_2): Use build_complex_type when building
15051         predefined complex types, to preserve canonical types.
15052
15053 2007-03-29  Steven Bosscher  <steven@gcc.gnu.org>
15054
15055         * ifcvt.c (struct noce_if_info): Add then_else_reversed field.
15056         (noce_get_alt_condition): Look at it to determine whether to
15057         reverse the condition or not.
15058         (noce_get_condition): Substitute the truth for lies.
15059         (noce_find_if_block): Set the then_else_reversed field.
15060
15061 2007-03-29  Lars Poeschel <larsi@wh2.tu-dresden.de>
15062
15063         * config/fr30/fr30.md (movdi): Do not accept immediates as the
15064         destination of this insn.
15065         * config/fr30/fr30.c (fr30_move_double): Use emit_move_insn rather
15066         than calling gen_rtx_SET directly.  Use r0 to hold the value of
15067         'address + 4' rather than a stack based temporary which can be
15068         mis-optimized away.
15069
15070 2007-03-29  Andreas Krebbel  <krebbel1@de.ibm.com>
15071
15072         * config/s390/s390.c (s390_secondary_input_reload_class,
15073         s390_secondary_output_reload_class): Functions removed.
15074         (s390_secondary_reload): New function.
15075         (TARGET_SECONDARY_RELOAD): Target macro defined.
15076         * config/s390/s390.h (SECONDARY_INPUT_RELOAD_CLASS,
15077         SECONDARY_OUTPUT_RELOAD_CLASS): Macro definitions removed.
15078         * config/s390/s390.md ("reload_outti", "reload_outdi",
15079         "reload_indi", "reload_insi", "reload_out<mode>", "reload_in<mode>",
15080         "reload_out<mode>"): Expanders removed.
15081         ("reload<mode>_plus", "reload<mode>_nonoffmem_in",
15082         "reload<mode>_nonoffmem_out"): Expanders added.
15083
15084 2007-03-29  Andreas Krebbel  <krebbel1@de.ibm.com>
15085
15086         * regmove.c (optimize_reg_copy_1): Don't perform DEST->SRC repair
15087         action if SRC->DEST replacement failed anyway.
15088
15089 2007-03-28  Mike Stump  <mrs@apple.com>
15090
15091         * config/darwin9.h (ASM_OUTPUT_ALIGNED_COMMON): Add.
15092         * config/darwin.h (MAX_OFILE_ALIGNMENT): Fix.
15093         * config/rs6000/darwin.h (ASM_OUTPUT_ALIGNED_COMMON): Removed #undef.
15094
15095 2007-03-28  Dwarakanath Rajagopal  <dwarak.rajagopal@amd.com>
15096
15097         * config.gcc: Accept barcelona as a variant of amdfam10.
15098         * config/i386/i386.c (override_options): Likewise.
15099         * doc/invoke.texi: Likewise.
15100
15101 2007-03-28  Eric Botcazou  <ebotcazou@adacore.com>
15102
15103         * tree-dfa.c (get_ref_base_and_extent): Do not expect positive
15104         offsets for BIT_FIELD_REF and COMPONENT_REF.
15105
15106 2007-03-28  Richard Guenther  <rguenther@suse.de>
15107
15108         * tree.c (is_global_var): Move ...
15109         * tree-flow-inline.h (is_global_var): ... here.
15110         * tree.h (is_global_var): Remove declaration.
15111
15112 2007-03-28  Uros Bizjak  <ubizjak@gmail.com>
15113
15114         * config/i386/i386.h (X86_TUNE_PROMOTE_HIMODE_IMUL): New tuning
15115         option.
15116         (TARGET_TUNE_PROMOTE_HIMODE_IMUL): New define. Use new tuning option.
15117         * config/i386/i386.c (ix86_tune_features): Initialize new
15118         tuning option.
15119         * config/i386/predicates.md (promotable_binary_operator): Use
15120         TARGET_TUNE_PROMOTE_HIMODE_IMUL.
15121
15122 2007-03-28  Grigory Zagorodnev <grigory_zagorodnev@linux.intel.com>
15123
15124         PR target/31380
15125         * config/i386/sse.md (uminv16qi3): Use UMIN instead of UMAX.
15126
15127 2007-03-28  Lars Poeschel <larsi@wh2.tu-dresden.de>
15128
15129         * config/fr30/fr30.md (movsi_internal): Change destination
15130         constraint from m to V and add m to the end.
15131
15132 2007-03-28  Christian Bruel  <christian.bruel@st.com>
15133
15134         * config/sh/sh.md (movsi_i): Fix type attribute.
15135
15136 2007-03-28  Christian Bruel  <christian.bruel@st.com>
15137
15138         * config/sh/sh.md (movsi_ie): Fix memory constraints attribute length.
15139         (movsf_ie): Likewise.
15140
15141 2007-03-28  Christian Bruel  <christian.bruel@st.com>
15142
15143         * config.gcc: Add sh4-300 to multilib.
15144         * config/sh/t-mlib-sh4-300: New file.
15145
15146 2007-03-28  Andreas Krebbel  <krebbel1@de.ibm.com>
15147
15148         * config/s390/s390.md ("fix_trunc<mode>di2"): New expander.
15149         ("fix_trunc<DFP:mode>di2_dfp"): New insn definition renamed from
15150         fix_trunc<mode>di2.
15151         ("fixuns_truncdddi2", "fixuns_trunctddi2"): Use
15152         fix_trunc<DFP:mode>di2_dfp instead of fix_trunc<mode>di2.
15153         ("fix_truncdfsi2", "fix_truncsfsi2", "fixuns_truncdddi2",
15154         "fixuns_trunctddi2"): Whitespace fix.
15155
15156 2007-03-28  Kaz Kojima  <kkojima@gcc.gnu.org>
15157
15158         * config/sh/sh.h (CALL_COOKIE_RET_TRAMP_SHIFT): Move after
15159         the definition of struct sh_args.
15160         (CALL_COOKIE_RET_TRAMP, CALL_COOKIE_STACKSEQ_SHIFT,
15161         CALL_COOKIE_INT_REG_GET): Likewise.
15162
15163 2007-03-28  Steven Bosscher  <steven@gcc.gnu.org>
15164
15165         * ifcvt.c (cond_exec_find_if_block): Return FALSE if no
15166         transformations are applied successfully.
15167
15168 2007-03-27  Douglas Gregor  <doug.gregor@gmail.com>
15169
15170         * tree.c (tree_contains_struct): Permit 512 tree codes.
15171         * tree.h (tree_contains_struct): Ditto.
15172         (MAX_TREE_CODES): Ditto.
15173         (struct tree_base): Make CODE 16 bits, instead of 8 bits. Add
15174         SPARE member to store remaining padding bits.
15175
15176 2007-03-27  Anatoly Sokolov <aesok@post.ru>
15177
15178         * config/avr/avr.c (avr_mcu_types): Move at90usb82 device to 'avr4'
15179         architecture.
15180
15181 2007-03-27  Janis Johnson  <janis187@us.ibm.com>
15182
15183         * configure.ac: Fix assembler test for powerpc*-linux decimal float.
15184         * configure: Regenerate.
15185
15186         * configure: Regenerate using the correct version of autoconf.
15187
15188 2007-03-27  Anatoly Sokolov  <aesok@post.ru>
15189
15190         * config/avr/avr.c (avr_hard_regno_mode_ok): Disallow QImode in stack
15191         pointer regs.
15192         * config/avr/avr.h (REGISTER_NAMES): Rename "__SPL__" and "__SPH__"
15193         regs to "__SP_L__" and "__SP_H__".
15194
15195 2007-03-27  Richard Guenther  <rguenther@suse.de>
15196
15197         * tree-dfa.c (get_ref_base_and_extent): Replace bit_offset and
15198         computations with it with a HOST_WIDE_INT variable.
15199
15200 2007-03-26  Mike Stump  <mrs@apple.com>
15201
15202         * config/rs6000/darwin.h (DARWIN_MINVERSION_SPEC): Add
15203         objective-c-header, objective-c++-header and objc++-cpp-output
15204         support.
15205         * config/i386/darwin.h (DARWIN_MINVERSION_SPEC): Likewise.
15206
15207 2007-03-26  Richard Henderson  <rth@redhat.com>
15208
15209         PR target/31361
15210         * config/i386/i386.c (IX86_BUILTIN_PSLLDQ128, IX86_BUILTIN_PSLLW128,
15211         IX86_BUILTIN_PSLLD128, IX86_BUILTIN_PSLLQ128, IX86_BUILTIN_PSRAW128,
15212         IX86_BUILTIN_PSRAD128, IX86_BUILTIN_PSRLW128, IX86_BUILTIN_PSRLD128,
15213         IX86_BUILTIN_PSRLQ128): New.
15214         (ix86_init_mmx_sse_builtins): Add them.
15215         (ix86_expand_builtin): Expand them.
15216         * config/i386/sse.md (ashr<mode>3, lshr<mode>3, ashl<mode>3): Make
15217         operand 2 be TImode.
15218         * config/i386/emmintrin.h (_mm_slli_epi64, _mm_srai_epi16,
15219         _mm_srai_epi32, _mm_srli_epi16, _mm_srli_epi32,
15220         _mm_srli_epi64): Mark __B const.
15221         (_mm_srli_si128, _mm_srli_si128): Fix disabled inline versions.
15222         (_mm_sll_epi16, _mm_sll_epi32, _mm_sll_epi64, _mm_sra_epi16,
15223         _mm_sra_epi32, _mm_srl_epi16, _mm_srl_epi32, _mm_srl_epi64): Use
15224         new two-vector shift builtins.
15225
15226 2007-03-26  Ian Lance Taylor  <iant@google.com>
15227
15228         PR tree-optimization/31345
15229         * tree-vrp.c (extract_range_from_binary_expr): Turn ranges like
15230         [+INF, +INF(OVF)] into VARYING.
15231
15232 2007-03-26  Zack Weinberg  <zackw@panix.com>
15233
15234         * gengtype-parse.c: New file.
15235         * gengtype-yacc.y: Delete.
15236         * gengtype-lex.l: Don't include gengtype-yacc.h.
15237         Define YY_DECL and yyterminate appropriately for recursive
15238         descent parser.  yylval is now a string out-parameter to yylex.
15239         (HWS, EOID): New shorthand.
15240         (IWORD): Add a couple more types.
15241         (yylex): Add a setup stanza.  Remove the complex rules for
15242         detecting GTY'ed types and typedefs; replace with simple
15243         keyword detectors.  Adjust everything for the changed
15244         definition of yylval.  Ignore all pp-directives, not just #define.
15245         (yyerror): Delete.
15246         (parse_file): Rename yybegin; do not call yyparse.
15247         (yyend): New.
15248         * gengtype.c (xasprintf): Export again.
15249         (this_file): New.  Use everywhere __FILE__ was being used.
15250         (get_lang_bitmap): Special case types defined in gengtype.c.
15251         (do_typedef, new_structure): Suppress definition of certain types.
15252         (new_structure): Improve diagnostics of duplicate definitions.
15253         Make sure location_s is associated with input.h.
15254         (nreverse_pairs, define_location_structures): New functions.
15255         (main): Improve tagging of kludge types.  Remove old kludges
15256         for input.h types; use define_location_structures.
15257         * gengtype.h: Update prototypes.  Define token codes here.
15258         * Makefile.in: Remove all references to gengtype-yacc.
15259         Add rules for gengtype-parse.o.  Adjust rules for gengtype-lex.o
15260         and gengtype.
15261         * bitmap.h (struct bitmap_head_def): Coalesce definitions,
15262         add GTY((skip)) to the field that's only conditionally there.
15263         * doc/install.texi: Document that Bison is no longer required
15264         unless building treelang.
15265
15266         * gengtype.c: Don't include gtyp-gen.h.
15267         (srcdir): Declare here.
15268         (base_files, lang_dir_names): Allocate dynamically.
15269         (gt_files, num_gt_files, num_lang_dirs): New globals.
15270         (measure_input_list, read_input_line, read_input_list)
15271         (set_lang_bitmap): New functions.
15272         (get_base_file_bitmap): Rename get_lang_bitmap and drastically
15273         simplify, relying on read_input_list to set up the bitmaps.
15274         (main): Arguments are no longer unused.  Check for correct number
15275         of command line arguments, set srcdir and srcdir_len, then call
15276         read_input_list, before doing anything else.  No need to worry
15277         about duplicates in main loop.
15278         * configure.ac: Simplify the calculation of all_gtfiles.
15279         Put language tags in there.  Don't set or substitute
15280         all_gtfiles_files_langs or all_gtfiles_files_frags.
15281         * Makefile.in: Revamp the way gengtype is invoked, now that it
15282         takes a file on its command line with a much simpler format.
15283         Remove or replace with gtyp-input.list all references to gtyp-gen.h.
15284         (GTFILES): Remove duplicates and C source files.
15285         * c-config-lang.in, cp/config-lang.in, objc/config-lang.in
15286         * objcp/config-lang.in: Add c-pragma.h to gtfiles.
15287         * configure: Regenerate.
15288
15289         * gengtype.h: Remove all type definitions to gengtype.c; leave
15290         only definitions of options_p, type_p, and pair_p as opaque
15291         pointers.  Update prototypes.
15292         * gengtype.c: Many type definitions moved here from gengtype.h.
15293         Consolidate type definitions at the top of the file.
15294         (xvasprintf): Delete.
15295         (xasprintf): Make static.
15296         (create_nested_pointer_option): Add 'next' parameter.
15297         (create_field_all, create_field_at): New functions.
15298         (create_field): Now a thin wrapper around create_field_all.
15299         (create_optional_field): Rename create_optional_field_ and add
15300         line argument.  Original name is now a macro which supplies
15301         __LINE__.
15302         (oprintf): Use vsnprintf directly.
15303         (close_output_files): Use fatal rather than perror/exit.
15304         (note_def_vec, note_def_vec_alloc): Use create_field_at.
15305         (main): Set progname.  Don't use exit.
15306         * gengtype-yacc.y (struct_fields): Use create_field_at.
15307         (option, optionseqopt): Delete.
15308         (optionseq): Consolidate productions from option here so we
15309         can use the first argument to create_option.
15310
15311         * gengtype-lex.l: Distinguish unions from structures in the
15312         token type.  Don't call find_structure; return the tag as a string.
15313         * gengtype-yacc.y: Add new token types ENT_TYPEDEF_UNION and
15314         ENT_UNION.  Type of these, ENT_TYPEDEF_STRUCT, and ENT_STRUCT is
15315         string.  Reorganize typedef_struct production accordingly.
15316         Use create_nested_ptr_option.
15317         * gengtype.c (create_nested_ptr_option): New function.
15318         * gengtype.h: Declare it.
15319
15320         * gengtype.h (struct type): Replace 'sc' with boolean, scalar_is_char.
15321         (string_type): Don't declare.
15322         (do_scalar_typedef): Declare.
15323         (create_scalar_type): Update prototype.
15324         * gengtype.c (string_type): Make static.
15325         (scalar_nonchar, scalar_char): New.
15326         (do_scalar_typedef): Export.  Always use scalar_nonchar for the type.
15327         (resolve_typedef): Use scalar_nonchar for error recovery.
15328         (create_scalar_type): Remove name_len field.  Return scalar_char
15329         or scalar_nonchar as appropriate.
15330         (adjust_field_type): Look at scalar_is_char boolean to decide whether
15331         to use string_type.
15332         (throughout): Use scalar_nonchar instead of calling
15333         create_scalar_type, whenever possible.
15334         (main): Initialize scalar_char and scalar_nonchar before calling
15335         gen_rtx_next.
15336         * gengtype-lex.l: Adjust for removal of second argument to
15337         create_scalar_type.  Use yylval.s instead of yylval.t when
15338         returning SCALAR.
15339         * gengtype-yacc.y: Type of SCALAR is string.  Call
15340         create_scalar_type from type:SCALAR rule.  Adjust for removal of
15341         second argument to create_scalar_type.
15342
15343         * vec.h: Remove all #if IN_GENGTYPE blocks.
15344         Add comment saying that changes may require adjustments to gengtype.
15345         * gengtype.c: Don't include coretypes.h or tm.h.
15346         Add comment to inclusion of errors.h.
15347         (note_def_vec, note_def_vec_alloc): New functions.
15348         * gengtype.h: Declare new functions.
15349         * gengtype-lex.l: Don't include coretypes.h.
15350         (YY_INPUT, macro_input, push_macro_expansion, mangle_macro_name):
15351         Delete.
15352         (update_lineno): Remove unnecessary prototype.
15353         (DEF_VEC_* rules): Simplify using note_def_vec / note_def_vec_alloc.
15354         (VEC rule): Just return VEC_TOKEN.
15355         * gengtype-yacc.y (VEC_TOKEN): New token type.
15356         (type): Add a production for VEC(a,b).
15357         * Makefile.in: Update dependencies.
15358
15359         * gengtype-lex.l: Remove rules for parsing pointer-to-function
15360         typedefs that use the old PARAMS macro.
15361
15362         * gengtype-lex.l: Remove all rules and states relating to yacc
15363         input files.
15364         * gengtype-yacc.y: Similarly.
15365         * gengtype.c (note_yacc_type): Delete function.
15366         * gengtype.h: Update prototypes.
15367
15368 2007-03-26  Joseph Myers  <joseph@codesourcery.com>
15369
15370         * tree-pretty-print.c (dump_generic_node): Report precision of
15371         unnamed integer types.
15372
15373 2007-03-26  Steven Bosscher  <steven@gcc.gnu.org>
15374
15375         * ifcvt.c (noce_try_store_flag_constants): Don't check
15376         no_new_pseudos here.
15377         (noce_try_store_flag_constants): Don't check no_new_pseudos.
15378         (noce_try_addcc, noce_try_store_flag_mask, noce_try_cmove_arith,
15379         noce_try_cmove_arith, noce_try_minmax, noce_try_abs,
15380         noce_try_sign_mask): Likewise.
15381         (if_convert): Check no_new_pseudos here.
15382
15383         (cond_exec_process_if_block, noce_process_if_block, find_if_block):
15384         Remove prototypes.
15385         (struct noce_if_info): Add then_bb, else_bb, join_bb members.
15386         (noce_get_condition): Handle new then_else_reversed argument.
15387         (noce_init_if_info): Remove, fold into noce_find_if_block.
15388         (noce_process_if_block): Take a struct noce_if_info as the
15389         argument.  Don't set up one based on ce_if_info.  Update pointer
15390         references accordingly.
15391         (cond_move_process_if_block): Likewise.
15392         (process_if_block): Removed.
15393         (find_if_block): Removed.  Move functionality two new functions,
15394         noce_find_if_block and cond_exec_find_if_block.
15395         (noce_find_if_block): New function.  Be aware of IF-THEN-JOIN
15396         blocks and the symmetric IF-ELSE-JOIN case.
15397         (cond_exec_find_if_block): Also new function mostly based on old
15398         find_if_block and process_if_block.
15399         (find_if_header): Replace find_if_block call with separately
15400         guarded calls to noce_find_if_block and cond_exec_find_if_block.
15401         (find_cond_trap): Update noce_get_condition call.
15402         (dead_or_predicable): Likewise.
15403
15404 2007-03-26  Jakub Jelinek  <jakub@redhat.com>
15405
15406         * config/i386/i386.c (IX86_BUILTIN_CMPNEPD, IX86_BUILTIN_CMPNESD):
15407         Remove.
15408         (IX86_BUILTIN_PSLLW128, IX86_BUILTIN_PSLLD128, IX86_BUILTIN_PSLLQ128,
15409         IX86_BUILTIN_PSRAW128, IX86_BUILTIN_PSRAD128, IX86_BUILTIN_PSRLW128,
15410         IX86_BUILTIN_PSRLD128, IX86_BUILTIN_PSRLQ128): Remove.
15411         (ix86_init_mmx_sse_builtins): Remove v8hi_ftype_v8hi_v2di and
15412         v4si_ftype_v4si_v2di.  Remove __builtin_ia32_psllw128,
15413         __builtin_ia32_pslld128, __builtin_ia32_psllq128,
15414         __builtin_ia32_psrlw128, __builtin_ia32_psrld128,
15415         __builtin_ia32_psrlq128, __builtin_ia32_psraw128 and
15416         __builtin_ia32_psrad128 builtins.
15417
15418 2007-03-26  Uros Bizjak  <ubizjak@gmail.com>
15419
15420         * reg-stack.c (replace_reg): Use IN_RANGE macro in gcc_assert().
15421         * config/i386/constraints.md
15422         (define_constraint "I"): Use IN_RANGE macro.
15423         (define_constraint "J"): Ditto.
15424         (define_constraint "K"): Ditto.
15425         (define_constraint "M"): Ditto.
15426         (define_constraint "N"): Ditto.
15427         (define_constraint "O"): Ditto.
15428         * config/i386/predicates.md
15429         (define_predicate "register_no_elim_operand"): Use IN_RANGE macro.
15430         (define_predicate "const_0_to_3_operand"): Ditto.
15431         (define_predicate "const_0_to_7_operand"): Ditto.
15432         (define_predicate "const_0_to_15_operand"): Ditto.
15433         (define_predicate "const_0_to_63_operand"): Ditto.
15434         (define_predicate "const_0_to_255_operand"): Ditto.
15435         (define_predicate "const_1_to_31_operand"): Ditto.
15436         (define_predicate "const_2_to_3_operand"): Ditto.
15437         (define_predicate "const_4_to_7_operand"): Ditto.
15438
15439 2007-03-25  David Edelsohn  <edelsohn@gnu.org>
15440
15441         * config/rs6000/rs6000.c (rs6000_emit_prologue): Always clobber LR
15442         in SImode for save_world.
15443         * config/rs6000/altivec.md (save_world, restore_world): Convert to
15444         LR hard reg.
15445
15446 2007-03-25  Dorit Nuzman  <dorit@il.ibm.com>
15447
15448         PR tree-optimization/30784
15449         * fold-const.c (fold_ternary): Handle CONSTRUCTOR in case
15450         BIT_FIELD_REF.
15451
15452 2007-03-25  Revital Eres  <eres@il.ibm.com>
15453
15454         * tree-if-conv.c (if_convertible_gimple_modify_stmt_p):
15455           Fold movement_possibility function into it.
15456
15457 2007-03-25  David Edelsohn  <edelsohn@gnu.org>
15458
15459         * config/rs6000/darwin.md (load_macho_picbase): Ignore operand 0.
15460         (load_macho_picbase_{si,di}): Convert to LR hard reg.
15461         (call_indirect_nonlocal_darwin64): Same.
15462         (call_nonlocal_darwin64): Same.
15463         (call_value_indirect_nonlocal_darwin64): Same.
15464         (call_value_nonlocal_darwin64): Same.
15465         (sibcall_nonlocal_darwin64): Same.
15466         (sibcall_value_nonlocal_darwin64): Same.
15467         (sibcall_symbolic_64): Same.
15468         (sibcall_value_symbolic_64): Same.
15469         * config/rs6000/rs6000.c (rs6000_legitimize_tls_address): Remove
15470         LR pseudo.
15471         (rs6000_emit_load_toc_table): Same.
15472         * config/rs6000/altivec.md (restore_world): Convert to LR hard reg.
15473         * config/rs6000/rs6000.md (mulh_call): Convert to LR hard reg.
15474         (mull_call): Same.
15475         (divss_call): Same.
15476         (divus_call): Same.
15477         (quoss_call): Same.
15478         (quous_call): Same.
15479         (load_toc_v4_pic_si): Same
15480         (load_toc_v4_PIC_1): Same.
15481         (load_toc_v4_PIC_1b): Same.
15482         (call_indirect_aix{32,64}): Same.
15483         (call_value_indirect_aix{32,64}): Same.
15484         (call): Same.
15485         (call_value): Same.
15486         (call_local{32,64}): Same.
15487         (call_value_local{32,64}): Same.
15488         (call_indirect_nonlocal_aix{32,64}): Same.
15489         (call_nonlocal_aix{32,64}): Same.
15490         (call_value_indirect_nonlocal_aix{32,64}): Same.
15491         (call_value_nonlocal_aix{32,64}): Same.
15492         (call_indirect_nonlocal_sysv<mode>): Same.
15493         (call_nonlocal_sysv<mode>): Same.
15494         (call_value_indirect_nonlocal_sysv<mode>): Same.
15495         (call_value_nonlocal_sysv<mode>): Same.
15496         (sibcall): Same.
15497         (sibcall_local{32,64}): Same.
15498         (sibcall_value_local{32,64}): Same.
15499         (sibcall_nonlocal_aix{32,64}): Same.
15500         (sibcall_value_nonlocal_aix{32,64}): Same.
15501         (sibcall_nonlocal_sysv<mode>): Same.
15502         (sibcall_value): Same.
15503         (sibcall_value_nonlocal_sysv<mode>): Same.
15504
15505 2007-03-24  Paul Brook  <paul@codesourcery.com>
15506
15507         * config/arm/lib1funcs.asm (div0): Use ARM_FUNC_START and do_push.
15508         * config/arm/linux-eabi.h: Remove legacy syscall hack.
15509
15510 2007-03-24  Richard Henderson  <rth@redhat.com>
15511
15512         * config/ia64/constraints.md: New file.
15513         * config/ia64/predicates.md: Replace CONST_OK_FOR_? with
15514         satisfies_constraint_?.
15515         * config/ia64/ia64.c (ia64_move_ok, ia64_legitimate_constant_p,
15516         ia64_reload_gp, spill_restore_mem, ia64_expand_prologue,
15517         ia64_expand_epilogue, ia64_split_return_addr_rtx, ia64_rtx_costs,
15518         ia64_output_mi_thunk): Likewise.
15519         (ia64_const_ok_for_letter_p): Remove.
15520         (ia64_const_double_ok_for_letter_p): Remove.
15521         (ia64_extra_constraint): Remove.
15522         * config/ia64/ia64.h (REG_CLASS_FROM_LETTER): Remove.
15523         (CONST_OK_FOR_I, CONST_OK_FOR_J, CONST_OK_FOR_K, CONST_OK_FOR_L,
15524         CONST_OK_FOR_M, CONST_OK_FOR_N, CONST_OK_FOR_O, CONST_OK_FOR_P,
15525         CONST_OK_FOR_LETTER_P, CONST_DOUBLE_OK_FOR_G,
15526         CONST_DOUBLE_OK_FOR_LETTER_P, EXTRA_CONSTRAINT,
15527         EXTRA_MEMORY_CONSTRAINT): Remove.
15528         * config/ia64/ia64.md: Include constriants.md.  Replace
15529         CONST_OK_FOR_? with satisfies_constraint_?.
15530
15531 2007-03-23  Michael Meissner  <michael.meissner@amd.com>
15532             H.J. Lu  <hongjiu.lu@intel.com>
15533
15534         * config/dfp-bit.h (DPD_BID_NAME): New macro to give either the
15535         DPD or BID name.
15536         (name macros): Use DPD_BID_NAME to convert names properly.
15537
15538         * optabs.c (DECIMAL_PREFIX): Prefix string to use for the current
15539         decimal floating point format.
15540         (init_floating_libfuncs): Change decimal functions so that they
15541         have a "bid_" prefix if the decimal system uses the BID format,
15542         and "dpd_" prefix if the decimal system uses the DPD format.
15543         (init_interclass_conv_libfuncs): Ditto.
15544         (init_intraclass_conv_libfuncs): Ditto.
15545
15546         * config.in (ENABLE_DECIMAL_BID_FORMAT): New macro to say we are
15547         using the BID format.
15548
15549         * configure.ac (ENABLE_DECIMAL_BID_FORMAT): Set to 1/0 to say
15550         whether we are using the BID decimal format.
15551         * configure: Regenerate.
15552
15553         * c-cppbuiltin.c (c_cpp_builtins): Define __STDC_WANT_DEC_FP__ if
15554         the compiler has decimal floating point enabled.  Define
15555         __DECIMAL_BID_FORMAT__ if BID decimal floating point is used
15556         instead of DPD.
15557
15558         * config.in (ENABLE_DECIMAL_BID_FORMAT): New macro to say we are
15559         using the BID format.
15560
15561         * configure.ac (ENABLE_DECIMAL_BID_FORMAT): Set to 1/0 to say
15562         whether we are using the BID decimal format.
15563         * configure: Regenerate.
15564
15565         * c-cppbuiltin.c (c_cpp_builtins): Define __STDC_WANT_DEC_FP__ if
15566         the compiler has decimal floating point enabled.  Define
15567         __DECIMAL_BID_FORMAT__ if BID decimal floating point is used
15568         instead of DPD.
15569
15570         * doc/install.texi (--enable-decimal-float): Document BID and DPD
15571         options, and that it is enabled for i386/x86_64 systems.
15572
15573         * Makefile.in (enable_decimal_float): New.
15574         (DECNUMFMT): New.
15575         (DECNUMINC): Add  -I$(DECNUMFMT).
15576         (DECNUM_H): Mov decimal32.h, decimal64.h and decimal128.h
15577         to $(DECNUMFMT) from $(DECNUM).
15578
15579         * configure.ac: Support * --enable-decimal-float={no,yes,bid,dpd}.
15580         Substitute enable_decimal_float.
15581         * configure: Regenerated.
15582
15583         PR other/30529
15584         * config/dfp-bit.c (__dec_byte_swap): Use uint32_t instead of
15585         unsigned long.
15586
15587         * configure.ac: Enable decimal float for x86_64-*-linux*.
15588         * configure: Regenerated.
15589
15590         PR other/30530
15591         * dfp.c (decimal_real_arithmetic): Use decimal128FlipSign and
15592         decimal128ClearSign to flip and clear the sign bit in decimal128.
15593         (decimal_real_maxval): Set decimal128SetSign to set the sign
15594         bit in decimal128.
15595
15596 2007-03-23  Ian Lance Taylor  <iant@google.com>
15597
15598         * fold-const.c (fold_binary): Correct warning for X - c >= X.
15599
15600 2007-03-23  Ian Lance Taylor  <iant@google.com>
15601
15602         * tree-dump.c (dump_files): Correct comment.
15603
15604 2007-03-23  Ian Lance Taylor  <iant@google.com>
15605
15606         * tree-vrp.c (operand_less_p): Ignore fold overflow warnings.
15607
15608 2007-03-23  Steven Bosscher  <steven@gcc.gnu.org>
15609
15610         * tracer.c (tracer): Don't take FLAGS argument.  Assert we are
15611         in cfglayout mode.  Don't go into and out of cfglayout mode.
15612         Link the blocks in the order of the constructed traces.
15613         (rest_of_handle_tracer): Adjust call to tracer.
15614         * loop-init.c (rtl_loop_init): Assert we are in cfglayout mode.
15615         Don't go into cfglayout mode.
15616         (rtl_loop_done): Don't go out of cfglayout mode.
15617         * cfglayout.c (relink_block_chain): New function, split out from...
15618         (fixup_reorder_chain): ...here.  Remove redundant checking.
15619         (cfg_layout_finalize): Don't clear the header, footer, and aux
15620         fields here, move the code to do so to relink_block_chain.  Likewise
15621         for free_original_copy_tables.
15622         * rtl.h (tracer): Update prototype.
15623         * bb-reorder.c (reorder_basic_blocks): Don't take FLAGS argument.
15624         Assert we are in cfglayout mode.  Don't go into and out of cfglayout
15625         mode.  Use relink_block_chain to serialize the CFG according to the
15626         new basic block order.  Move targetm.cannot_modify_jumps_p check from
15627         here...
15628         (gate_handle_reorder_blocks): ...to here.
15629         (duplicate_computed_gotos): Move targetm.cannot_modify_jumps_p check
15630         from here...
15631         (gate_duplicate_computed_gotos): ...to here.
15632         (rest_of_handle_reorder_blocks): Don't see if anything has changed,
15633         something always changes when going into and out of cfglayout mode.
15634         Perform an expensive cfg cleanup while going into cfglayout mode.
15635         Always update liveness information on HAVE_conditional_execution
15636         targets.  Reserialize the basic blocks and go out of cfglayout mode.
15637         * reg-stack.c: Include cfglayout.h.
15638         (rest_of_handle_stack_regs): Go into and out of cfglayout mode around
15639         the call to reorder_basic_blocks.
15640         * basic-block.h (reorder_basic_blocks): Update prototype.
15641         (relink_block_chain): New prototype.
15642         * passes.c (pass_outof_cfg_layout_mode): Move after cse2.
15643
15644 2007-03-23  Joseph Myers  <joseph@codesourcery.com>
15645
15646         * config/mips/mips.md (type, hazard, *movdi_32bit,
15647         *movdi_gp32_fp64, *movdi_64bit, *movsi_internal, movcc,
15648         *movhi_internal, *movqi_internal, *movsf_hardfloat,
15649         *movdf_hardfloat_64bit, *movdf_hardfloat_32bit, *movdf_softfloat,
15650         movv2sf_hardfloat_64bit, load_df_low, load_df_high, store_df_high,
15651         mthc1, mfhc1): Change xfer instruction type to mfc and mtc, as
15652         applicable.
15653         (movcc): Change first xfer to multi.
15654         * config/mips/24k.md, config/mips/4100.md, config/mips/4300.md,
15655         config/mips/5000.md, config/mips/5400.md, config/mips/5500.md,
15656         config/mips/5k.md, config/mips/7000.md, config/mips/9000.md,
15657         config/mips/generic.md: Change reservations using "xfer" to use
15658         "mfc,mtc".
15659         * config/mips/sb1.md (ir_sb1_mtxfer): Use "mtc" instead of
15660         using match_operand.
15661         (ir_sb1_mfxfer): Use "mfc" instead of using match_operand.
15662         * config/mips/sr71k.md (ir_sr70_xfer_from): Use "mfc" instead of
15663         examining mode.
15664         (ir_sr70_xfer_to): Use "mtc" instead of examining mode.
15665
15666 2007-03-22  Richard Henderson  <rth@redhat.com>
15667
15668         * config/i386/i386.c: Remove unnecessary function declarations.
15669         Move targetm definition, and all related macros, to the end of
15670         the file.  Resort some functions to put definitions before uses.
15671         (ix86_attribute_table): Make static.  Move to end of file.
15672         (ix86_gimplify_va_arg): Make static.
15673
15674 2007-03-22  Richard Henderson  <rth@redhat.com>
15675
15676         * config/i386/i386.c (ix86_function_regparm): Early exit for 64-bit;
15677         don't increase local_regparm with force_align_arg_pointer check.
15678         (ix86_function_sseregparm): Assert 32-bit.
15679         (type_has_variadic_args_p): New.
15680         (ix86_return_pops_args): Early exit for 64-bit.  Reindent; use
15681         type_has_variadic_args_p.
15682         (ix86_function_arg_regno_p): Use == 0 instead of ! test for eax.
15683         (init_cumulative_args): Remove TARGET_DEBUG_ARG.  Remove zero_cum;
15684         use memset instead.  Do maybe_vaarg check first; skip attribute
15685         tests if true; skip attribute tests for 64-bit.
15686         (construct_container): Remove TARGET_DEBUG_ARG.
15687         (function_arg_advance_32, function_arg_advance_64): Split out ...
15688         (function_arg_advance): ... from here.
15689         (function_arg_32, function_arg_64): Split out ...
15690         (function_arg): ... from here.
15691         (ix86_pass_by_reference): Tidy.
15692         (ix86_function_value_regno_p): Rearrange w/ switch on regno.
15693         (function_value_32): New, from parts of ix86_function_value
15694         and ix86_value_regno.
15695         (function_value_64): New, from parts of ix86_function_value
15696         and ix86_libcall_value.
15697         (ix86_function_value_1): New.
15698         (ix86_function_value, ix86_libcall_value): Use it.
15699         (return_in_memory_32, return_in_memory_64): Split out ...
15700         (ix86_return_in_memory): ... from here.
15701         (ix86_struct_value_rtx): Skip for 64-bit.
15702         (ix86_libcall_value, ix86_value_regno): Remove.
15703         (setup_incoming_varargs_64): Split out ...
15704         (ix86_setup_incoming_varargs): ... from here.
15705         (ix86_va_start): Remove TARGET_DEBUG_ARG.
15706         (legitimate_address_p, legitimize_address): Remove TARGET_DEBUG_ADDR.
15707         * config/i386/i386-protos.h (ix86_function_value): Remove.
15708         * config/i386/i386.opt (TARGET_DEBUG_ADDR, TARGET_DEBUG_ARG): Remove.
15709
15710 2007-03-22  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
15711
15712         PR other/23572
15713         * c-lex.c (interpret_float): On overflow, emit pedantic warning if
15714         infinities not supported, otherwise emit warning if -Woverflow. On
15715         underflow, emit warning if -Woverflow.
15716         * real.c (real_from_string): Return -1 if underflow, +1 if overflow
15717         and 0 otherwise.
15718         * real.h (real_from_string): Update declaration
15719
15720 2007-03-22  Kai Tietz  <kai.tietz@onevision.com>
15721             Richard Henderson  <rth@redhat.com>
15722
15723         * defaults.h (OUTGOING_REG_PARM_STACK_SPACE): Provide default.
15724         * calls.c (compute_argument_block_size, expand_call,
15725         emit_library_call_value_1): Don't ifdef OUTGOING_REG_PARM_STACK_SPACE.
15726         * expr.c (block_move_libcall_safe_for_call_parm): Likewise.
15727         * function.c (STACK_DYNAMIC_OFFSET): Likewise.
15728         * doc/tm.texi (OUTGOING_REG_PARM_STACK_SPACE): Update.
15729         * config/alpha/unicosmk.h, config/bfin/bfin.h, config/iq2000/iq2000.h,
15730         config/mips/mips.h, config/mn10300/mn10300.h, config/mt/mt.h,
15731         config/pa/pa.h, config/rs6000/rs6000.h, config/score/score.h,
15732         config/spu/spu.h, config/v850/v850.h (OUTGOING_REG_PARM_STACK_SPACE):
15733         Set to 1.
15734
15735 2007-03-22  Joseph Myers  <joseph@codesourcery.com>
15736
15737         * c-incpath.c (add_sysroot_to_chain): New.
15738         (merge_include_chains): Add sysroot argument.  Call
15739         add_sysroot_to_chain if sysrooted.
15740         (register_include_chains): Update call to merge_include_chains.
15741         * doc/cppopts.texi: Document use of '=' in include directory
15742         arguments.
15743
15744 2007-03-22  Uros Bizjak  <ubizjak@gmail.com>
15745
15746         * config/i386/i386.md (cmp<mode>): Rename from cmpsf and cmpdf.
15747         Macroize expander using SSEMODEF mode macro.  Use SSE_FLOAT_MODE_P.
15748         (*cmpfp_<mode>): Rename from *cmpfp_sf and *cmpfp_df. Macroize
15749         insn pattern using X87MODEF12 mode macro.
15750
15751 2007-03-21  Seongbae Park <seongbae.park@gmail.com>
15752
15753         * regmove.c (regmove_optimize): Use reg_mentioned_p
15754         instead of reg_overlap_mentioned_p for DST.
15755
15756 2007-03-21  Mike Stump  <mrs@apple.com>
15757
15758         * c.opt: Fixup for Objective-C/C++.
15759
15760 2007-03-21  Steve Ellcey  <sje@cup.hp.com>
15761
15762         * explow.c (convert_memory_address): Fold memory reference when
15763         POINTERS_EXTEND_UNSIGNED < 0
15764
15765 2007-03-21  Richard Henderson  <rth@redhat.com>
15766
15767         PR target/31245
15768         * config/i386/emmintrin.h (__m128i, __m128d): Mark may_alias.
15769         * config/i386/mmintrin.h (__m64): Likewise.
15770         * config/i386/xmmintrin.h (__m128): Likewise.
15771
15772 2007-03-21  Richard Sandiford  <richard@codesourcery.com>
15773
15774         * config/vxworks.h (VXWORKS_ADDITIONAL_CPP_SPEC): Remove -D options.
15775         (VXWORKS_OS_CPP_BUILTINS): Define.
15776         * config/i386/vxworks.h (VXWORKS_CPU_DEFINE): Fold into...
15777         (TARGET_OS_CPP_BUILTINS): ...here.  Use VXWORKS_OS_CPP_BUILTINS.
15778
15779 2007-03-21  Richard Sandiford  <richard@codesourcery.com>
15780
15781         * rtl.h (constant_pool_reference_p): Delete.
15782         (find_constant_src): Declare.
15783         * rtlanal.c (find_constant_src): New function.
15784         * simplify-rtx.c (constant_pool_reference_p): Delete.
15785         * config/i386/i386.md: Use find_constant_src instead of
15786         constant_pool_reference_p/avoid_constant_pool_reference pairs.
15787
15788 2007-03-21  Richard Sandiford  <richard@codesourcery.com>
15789
15790         * doc/invoke.texi (-fpie, -fPIE): Document __pie__ and __PIE__.
15791         * c-cppbuiltin.c (c_cpp_builtins): Define them.
15792
15793 2007-03-20  Mark Mitchell  <mark@codesourcery.com>
15794
15795         * config/arm/elf.h (TARGET_ASM_DESTRUCTOR): Define.
15796         * config/arm/arm.c (arm_elf_asm_cdtor): New function.
15797         (arm_elf_asm_constructor): Use it.
15798         (arm_elf_asm_destructor): New function.
15799
15800 2007-03-20  Bernd Schmidt  <bernd.schmidt@analog.com>
15801
15802         * jump.c (mark_jump_label): Treat SEQUENCE specially.
15803
15804 2007-03-20  Nathan Sidwell  <nathan@codesourcery.com>
15805
15806         * config/vxlib.c (tls_delete_hook): Use TCB for kernel tasks.
15807
15808 2007-03-19  Andrew Haley  <aph@redhat.com>
15809
15810         PR tree-optimization/31264
15811         * tree-vrp.c (register_edge_assert_for_1): Don't look though
15812         VIEW_CONVERT_EXPRs.
15813
15814 2007-03-19  Paolo Bonzini  <bonzini@gnu.org>
15815
15816         PR rtl-optimization/30907
15817         * fwprop.c (forward_propagate_into): Never propagate inside a loop.
15818         (fwprop_init): Always call loop_optimizer_initialize.
15819         (fwprop_done): Always call loop_optimizer_finalize.
15820         (fwprop): We always have loop info now.
15821         (gate_fwprop_addr): Remove.
15822         (pass_fwprop_addr): Use gate_fwprop as gate.
15823
15824         PR rtl-optimization/30841
15825         * df-problems.c (df_ru_local_compute, df_rd_local_compute,
15826         df_chain_alloc): Call df_reorganize_refs unconditionally.
15827         * df-scan.c (df_rescan_blocks, df_reorganize_refs): Change
15828         refs_organized to refs_organized_size.
15829         (df_ref_create_structure): Use refs_organized_size instead of
15830         bitmap_size if refs had been organized, and keep refs_organized_size
15831         up-to-date.
15832         * df.h (struct df_ref_info): Change refs_organized to
15833         refs_organized_size.
15834         (DF_DEFS_SIZE, DF_USES_SIZE): Use refs_organized_size instead of
15835         bitmap_size.
15836
15837 2007-03-19  Mark Mitchell  <mark@codesourcery.com>
15838
15839         * except.c (output_function_exception_table): Do not reference the
15840         EH personality routine for functions that do not require an
15841         exception table.
15842
15843 2007-03-20  Jakub Jelinek  <jakub@redhat.com>
15844
15845         PR c/30762
15846         * c-typeck.c (convert_for_assignment): Call comptypes for
15847         RECORD_TYPE or UNION_TYPE.
15848
15849         PR inline-asm/30505
15850         * reload1.c (reload): Do invalid ASM checking after
15851         cleanup_subreg_operands.
15852
15853 2007-03-19  Jeff Law  <law@redhat.com>
15854
15855         * tree-cfg.c (find_taken_edge): Tighten conditions for
15856         optimizing computed gotos.
15857
15858 2007-03-19  Michael Matz  <matz@suse.de>
15859
15860         * builtins.c (expand_builtin_sync_operation,
15861         expand_builtin_compare_and_swap,
15862         expand_builtin_lock_test_and_set): Care for extending CONST_INTs
15863         correctly.
15864
15865         * config/i386/sync.md (sync_double_compare_and_swapdi_pic,
15866         sync_double_compare_and_swap_ccdi_pic): Use "SD" as constraint
15867         for operand 3.
15868
15869 2007-03-19  Andreas Krebbel  <krebbel1@de.ibm.com>
15870
15871         * doc/tm.texi: Add brackets around the return type of
15872         TARGET_SECONDARY_RELOAD.
15873
15874 2007-03-19  Andrew Pinski  <andrew_pinski@playstation.sony.com>
15875         Richard Guenther  <rguenther@suse.de>
15876
15877         PR tree-optimization/31254
15878         * tree-ssa-forwprop.c (forward_propagate_addr_expr_1):
15879         Use handled_component_p () where appropriate.  Continue
15880         propagating into the rhs if we propagated into an INDIRECT_REF
15881         on the lhs.
15882
15883 2007-03-19  Andreas Krebbel  <krebbel1@de.ibm.com>
15884
15885         * config/s390/s390.md (op_type attribute): RRR instruction type added.
15886         (FP, DFP, SD_SF, DD_DF, TD_TF): New mode macros.
15887         (xde, xdee): Mode attributes adjusted to support DFP modes.
15888         (RRer, f0, op1, Rf, bt, bfp, HALF_TMODE): New mode attributes added.
15889         ("cmp<mode>", "*cmp<mode>_css_0", "*cmp<mode>_ccs", TF move splitters,
15890         DF move splitters, "floatdi<mode>2", "add<mode>3", "*add<mode>3",
15891         "*add<mode>3_cc", "*add<mode>3_cconly", "sub<mode>3", "*sub<mode>3",
15892         "*sub<mode>3_cc", "*sub<mode>3_cconly", "mul<mode>3", "*mul<mode>3",
15893         "div<mode>3", "*div<mode>3", "*neg<mode>2_nocc", "*abs<mode>2_nocc",
15894         "*negabs<mode>2_nocc", "copysign<mode>3"): Adjusted to support DFP
15895         numbers.
15896         ("*movtf_64", "*movtf_31", "*movdf_64dfp", "*movdf_64", "*movdf_31",
15897         "movsf"): Insn definitions removed.
15898         ("*mov<mode>_64", "*mov<mode>_31", "mov<mode>", "*mov<mode>_64dfp",
15899         "*mov<mode>_64", "*mov<mode>_31", "fix_trunc<DFP:mode>di2",
15900         "trunctddd2", "truncddsd2", "extendddtd2", "extendsddd2"): Insn
15901         definitions added.
15902         ("fixuns_truncdddi2", "fixuns_trunctddi2", "mov<mode>",
15903         "reload_in<mode>", "reload_out<mode>"): Expander added.
15904         ("movtf", "movdf", "reload_outtf", "reload_outdf", "reload_intf"):
15905         Expander removed.
15906
15907 2007-03-19  Andreas Krebbel  <krebbel1@de.ibm.com>
15908
15909         * config/s390/s390.md: Only non-functional changes.  Renamed
15910         FPR mode macro to BFP all over the file.
15911
15912 2007-03-19  Andreas Krebbel  <krebbel1@de.ibm.com>
15913
15914         * config/s390/s390.md (UNSPEC_COPYSIGN): New constant.
15915         (op_type attribute): RRF instruction type added.
15916         (fT0): New mode attribute.
15917         ("*movdi_64dfp", "*movdf_64dfp", "*neg<mode>2_nocc", "*abs<mode>2_nocc",
15918         "*negabs<mode>2_nocc", "copysign<mode>3"): Insn definitions added.
15919         * config/s390/s390.h (SECONDARY_MEMORY_NEEDED): Due to a new
15920         instruction no secondary memory is needed when moving DFmode values
15921         between GPRs and FPRs.
15922
15923 2007-03-19  Andreas Krebbel  <krebbel1@de.ibm.com>
15924
15925         * config/s390/s390.opt ("mhard-float", "msoft-float"): Bit value
15926         inverted and documentation adjusted.
15927         ("mhard-dfp", "msoft-dfp"): New options.
15928         * config/s390/s390.c (s390_handle_arch_option): New architecture
15929         switch: z9-ec.
15930         (override_options): Sanity checks for the new options added.
15931         * config.gcc: New architecture switch: z9-ec.
15932         * config/s390/s390.h (processor_flags): PF_DFP added.
15933         (TARGET_CPU_DFP, TARGET_DFP): Macro definitions added.
15934         (TARGET_DEFAULT): Due to the s390.opt changes hard float is enabled
15935         when the bit is NOT set so remove it from the defaults.
15936
15937 2007-03-19  Andreas Krebbel  <krebbel1@de.ibm.com>
15938
15939         * genemit.c (main): Print include statement for dfp.h.
15940         * dfp.h (decimal_real_arithmetic): Hide prototype if tree_code enum
15941         is not available.
15942
15943 2007-03-19  Hans-Peter Nilsson  <hp@axis.com>
15944
15945         * config/cris/t-elfmulti (EXTRA_MULTILIB_PARTS): Do not define here.
15946
15947 2007-03-19  Kaz Kojima  <kkojima@gcc.gnu.org>
15948
15949         PR target/31022
15950         * config/sh/sh.c (sh_adjust_cost): Use the result of single_set
15951         instead of PATTERN.
15952
15953 2007-03-18  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
15954
15955         * pa.c (output_deferred_plabels, output_bb, output_millicode_call,
15956         attr_length_call, output_call, output_indirect_call): Cleanup
15957         formatting of targetm calls.
15958
15959 2007-03-19  Hans-Peter Nilsson  <hp@axis.com>
15960
15961         * config/cris/cris.h (HANDLE_PRAGMA_PACK_PUSH_POP): Define to 1.
15962
15963 2007-03-18  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
15964
15965         * pa.md: Add fpstore_load and store_fpload instruction types.  Provide
15966         reservation, bypass and anti-bypass descriptions for these
15967         instructions.  Update move patterns.
15968         * pa.c (hppa_fpstore_bypass_p): Check for both TYPE_FPSTORE_LOAD and
15969         TYPE_FPSTORE.
15970
15971 2007-03-18  Dorit Nuzman  <dorit@il.ibm.com>
15972
15973         * tree-vect-transform.c (get_initial_def_for_induction): Replace
15974         GET_MODE_NUNITS with TYPE_VECTOR_SUBPARTS.
15975         (get_initial_def_for_reduction): Likewise.
15976
15977 2007-03-16  Daniel Berlin  <dberlin@dberlin.org>
15978
15979         Fix PR tree-optimization/29922
15980         * tree-ssa-pre.c (bb_bitmap_sets): Remove RVUSE_* members.
15981         (get_representative): Removed.
15982         (value_dies_in_block_x): Update for rvuse removal.
15983         (valid_in_sets): Update for renaming of vuses_dies_in_block_x.
15984         (compute_antic_aux): Handle when PHI nodes appear in
15985         non-single-successors.
15986         (dump_bitmap_of_names): Removed.
15987         (compute_antic_safe): Renamed and removed rvuse calculation.
15988         Calculate only antic safe.
15989         (insert_into_preds_of_block): Remove assert.
15990         (execute_pre): Update for renamed functions.
15991         (defer_or_phi_translate_block): New function.
15992
15993 2007-03-17  Kazu Hirata  <kazu@codesourcery.com>
15994
15995         * config/arm/arm.c, config/arm/thumb2.md, config/m68k/m68k.c,
15996         config/spu/spu.c, omega.h, passes.c, predict.c: Fix comment
15997         typos.
15998         * doc/cpp.texi, doc/extend.texi, doc/invoke.texi: Fix typos.
15999         Follow spelling conventions.
16000
16001         * tree-data-ref.h: Remove the prototype for analyze_array.
16002
16003 2007-03-17  Dorit Nuzman  <dorit@il.ibm.com>
16004
16005         PR tree-optimization/31041
16006         * tree-vect-transform.c (get_initial_def_for_induction): Call
16007         force_gimple_operand.
16008
16009 2007-03-17  Olga Golovanevsky  <olga@il.ibm.com>
16010
16011         * ipa-type-escape.c (look_for_casts) : Revert code to use
16012         handled_component_p due to ada test a-numaux.adb.
16013
16014 2007-03-17  Kazu Hirata  <kazu@codesourcery.com>
16015
16016         * final.c (final_scan_insn): Alter the condition of a
16017         conditional trap if we have nonstandard CC.
16018
16019 2007-03-16  Alexandre Oliva  <aoliva@redhat.com>
16020
16021         * configure.ac: Remove excess quoting from asm line 0 test.
16022         * configure: Rebuilt.
16023
16024 2007-03-16  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
16025
16026         * doc/invoke.texi (-Wconversion): Document warnings specific to C++.
16027         * c-common.c (convert_and_check): Move warning logic to...
16028         (warnings_for_convert_and_check): ...here. Define.
16029         * c-common.h (warnings_for_convert_and_check): Declare.
16030
16031 2007-03-16  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
16032
16033         * pa.c (attr_length_call): Partially revert change of 2007-03-09.
16034         (output_call): Likewise.
16035
16036 2007-03-16  Richard Sandiford  <richard@codesourcery.com>
16037
16038         * config/vxworks.h (SUPPORTS_INIT_PRIORITY): Define.
16039
16040 2007-03-16  Richard Sandiford  <richard@codesourcery.com>
16041
16042         * config/vx-common.h (WINT_TYPE, WINT_TYPE_SIZE): Define.
16043
16044 2007-03-16  Uros Bizjak  <ubizjak@gmail.com>
16045
16046         * config/i386/i386.c (override_options): Add PTA_NO_SAHF to k8,
16047         opteron, athlon-64 and athlon-fx processor_alias_table entries.
16048
16049 2007-03-16  Sebastian Pop  <sebastian.pop@inria.fr>
16050
16051         PR tree-optimization/31183
16052         * tree-loop-linear.c (gather_interchange_stats, try_interchange_loops):
16053         Use double_int instead of unsigned int for representing access_strides.
16054         * testsuite/gcc.dg/tree-ssa/pr31183.c: New.
16055
16056 2007-03-16  Richard Guenther  <rguenther@suse.de>
16057
16058         PR tree-optimization/31146
16059         * tree-ssa-forwprop.c (forward_propagate_addr_expr_1): Restructure
16060         to allow recursion of forward_propagate_addr_expr.
16061         (forward_propagate_addr_into_variable_array_index): Likewise.
16062         (forward_propagate_addr_expr): Likewise.
16063         (tree_ssa_forward_propagate_single_use_vars): Likewise.
16064         (forward_propagate_addr_expr_1): Recurse on simple copies
16065         instead of propagating into them.  Do so for useless conversions
16066         as well.
16067         (forward_propagate_addr_expr): Clean up unused statements after
16068         recursion.
16069
16070 2007-03-16  Richard Guenther  <rguenther@suse.de>
16071
16072         * builtins.c (expand_builtin_cexpi): Use the right argument
16073         for the expansion via cexp.
16074
16075 2007-03-16  Alexandre Oliva  <aoliva@redhat.com>
16076
16077         * configure.ac: Don't require ELF binutils to tolerate # 0 "".
16078         * configure: Rebuilt.
16079
16080 2007-03-16  Alexandre Oliva  <aoliva@redhat.com>
16081
16082         PR debug/29906
16083         * dwarf2out.c (force_type_die): Adjust comment.
16084         (dwarf2out_imported_module_or_decl): Handle base AT_import types.
16085
16086 2007-03-15  DJ Delorie  <dj@redhat.com>
16087
16088         * config/frv/predicates.md (minmax_operator): Don't check operands
16089         here.
16090
16091 2007-03-15  Zdenek Dvorak  <dvorakz@suse.cz>
16092
16093         * tree-ssa-loop-niter.c (record_estimate): Add "upper" argument.
16094         Update constant estimates of number of iterations.
16095         (record_nonwrapping_iv): Add "upper" argument.  "data_size_bounds_p"
16096         argument renamed to "realistic".
16097         (compute_estimated_nb_iterations): Removed.
16098         (record_niter_bound): New function.
16099         (idx_infer_loop_bounds): For possible but unlikely tail arrays,
16100         call record_nonwrapping_iv with upper = false.
16101         (infer_loop_bounds_from_signedness): Pass upper argument to
16102         record_nonwrapping_iv.
16103         (estimate_numbers_of_iterations_loop): Do not call
16104         compute_estimated_nb_iterations.  Record estimate based on profile
16105         information.  Initialize the constant estimates of number of
16106         iterations.
16107         * tree-data-ref.c (estimated_loop_iterations): Return the recorded
16108         estimates.
16109         * tree-ssa-loop-prefetch.c (loop_prefetch_arrays): Add dump when
16110         number of iterations is too small.
16111         * cfgloop.h (struct nb_iter_bound): Remove "realistic" field.
16112         (EST_NOT_AVAILABLE): Removed.
16113         (struct loop): Replace estimated_nb_iterations by any_upper_bound,
16114         nb_iterations_upper_bound, any_estimate and nb_iterations_estimate
16115         fields.
16116
16117 2007-03-15  Zdenek Dvorak  <dvorakz@suse.cz>
16118
16119         * tree-ssa-loop-niter.c (refine_bounds_using_guard, bound_difference):
16120         Handle NE_EXPR guards.
16121
16122 2007-03-15  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
16123
16124         PR c++/24924
16125         * c-opts.c (c_common_post_options): Handle C++ post-processing here.
16126         Set also -pedantic-errors by default for the  preprocessor unless
16127         -fpermissive is given.
16128
16129 2007-03-15  Richard Guenther  <rguenther@suse.de>
16130
16131         PR middle-end/29719
16132         PR middle-end/31161
16133         * builtins.c (expand_builtin_cexpi): As a fallback if we
16134         don't have builtins for sincos or cexp create a function
16135         declaration for cexp and expand to a call to that.
16136         (expand_builtin_int_roundingfn): Always fall
16137         back to floor/ceil and its variants even if they may be
16138         not available.
16139
16140 2007-03-15  Steven Bosscher  <steven@gcc.gnu.org>
16141
16142         PR middle-end/31159
16143         * cfglayout.c (fixup_reorder_chain): Postpone deleting dead
16144         jump tables, move the call to delete_dead_jumptables from here...
16145         (cfg_layout_finalize): ...to here.  But rebuild jump labels first.
16146         * cfgrtl.c (cfg_layout_can_merge_blocks_p): When not optimizing,
16147         don't allow merging of blocks that try_redirect_by_replacing_jump
16148         also does not handle when not optimizing.
16149
16150 2007-03-15  Uros Bizjak  <ubizjak@gmail.com>
16151             Francois-Xavier Coudert  <coudert@clipper.ens.fr>
16152
16153         * config/i386/i386.md (x86_sahf_1): Correctly handle
16154         HAVE_AS_IX86_SAHF.
16155
16156 2007-03-15  Uros Bizjak  <ubizjak@gmail.com>
16157
16158         PR target/31167
16159         * config/i386/i386.md (*addti3_1, *addti3_1 splitter): Use
16160         x86_64_general_operand as operand[2] predicate.  Remove "iF"
16161         from operand constraints and use "e" constraint instead.
16162         (*subti3_1, *subti3_1 splitter): Ditto.
16163         (*negti2_1, *negti2_1 splitter): Use nonimmediate_operand as
16164         operand[1] predicate.
16165
16166 2007-03-14  Sebastian Pop  <sebastian.pop@inria.fr>
16167
16168         * tree-loop-linear.c (gather_interchange_stats): For multidimensional
16169         arrays, multiply the access strides by the size of the sub-array.
16170         * testsuite/gcc.dg/tree-ssa/ltrans-5.c: New.
16171
16172 2007-03-14  Uros Bizjak  <ubizjak@gmail.com>
16173
16174         * configure.ac (HAVE_AS_IX86_SAHF): On x86 targets check whether
16175         the configured assembler supports the sahf mnemonic.
16176         * configure: Regenerate.
16177         * config.in: Regenerate.
16178
16179         * config/i386/i386.md (x86_sahf_1): Depending on HAVE_AS_IX86_SAHF,
16180         emit "sahf" or ".byte\t0x9e" as asm template.
16181
16182 2007-03-14  Michael Meissner  <michael.meissner@amd.com>
16183
16184         PR 31018
16185         * config/i386/i386.h (X86_TUNE_SHORTEN_X87_SSE): New tuning
16186         option to replace hard coded TARGET_xxx in md file.
16187         (X86_TUNE_AVOID_VECTOR_DECODE): Ditto.
16188         (X86_TUNE_SLOW_IMUL_IMM32_MEM): Ditto.
16189         (X86_TUNE_SLOW_IMUL_IMM8): Ditto.
16190         (X86_TUNE_MOVE_M1_VIA_OR): Ditto.
16191         (X86_TUNE_NOT_UNPAIRABLE): Ditto.
16192         (X86_TUNE_NOT_VECTORMODE): Ditto.
16193         (TUNE_SHORTEN_X87_SSE): Use new tuning option.
16194         (TUNE_AVOID_VECTOR_DECODE): Ditto.
16195         (TUNE_SLOW_IMUL_IMM32_MEM): Ditto.
16196         (TUNE_SLOW_IMUL_IMM8): Ditto.
16197         (TUNE_MOVE_M1_VIA_OR): Ditto.
16198         (TUNE_NOT_UNPAIRABLE): Ditto.
16199         (TUNE_NOT_VECTORMODE): Ditto.
16200
16201         * config/i386/i386.c (ix86_tune_features): Fill in new tuning
16202         options.
16203
16204         * config/i386/i386.md (fix_trunc?f?1_sse peephole2): Use new
16205         tuning options instead of hard coded TARGET_xxx.
16206         (fix ssemode peephole2's): Ditto.
16207         (imul peephole2's): Ditto.
16208         (movsi_or): Ditto.
16209         (movdi_or_rex64): Ditto.
16210         (move peephole2): Ditto.
16211         (not peephole2's): Ditto.
16212
16213 2007-03-14  Dirk Mueller  <dmueller@suse.de>
16214
16215         * c-common.h (empty_body_warning): Rename to empty_if_body_warning.
16216         * c-common.c (empty_if_body_warning): Rephrase diagnostic message.
16217         * c-parser.c (c_parser_if_body): Always add an empty statement in case
16218         of empty body.
16219         * c-parser.c (c_parser_do_statement): Warn about empty body in
16220         do/while statement.
16221         * c-typeck (c_finish_if_stmt): Call empty_if_body_warning.
16222         * doc/invoke.texi (-Wempty-body): Update documentation.
16223
16224 2007-03-14  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
16225
16226         PR c/21438
16227         * c-common.h (warn_for_div_by_zero): Declare.
16228         * c-common.c (warn_for_div_by_zero): Define.
16229         * c-typeck.c (build_binary_op): Call warn_for_div_zero instead of
16230         warning.
16231
16232 2007-03-14  Richard Sandiford  <richard@codesourcery.com>
16233
16234         * Makefile.in (PREPROCESSOR_DEFINES): Add directory terminators
16235         to PREFIX and STANDARD_PREFIX.
16236
16237 2007-03-14  Richard Sandiford  <richard@codesourcery.com>
16238             Phil Edwards  <phil@codesourcery.com>
16239
16240         * gthr-vxworks.h: Add an extern "C" wrapper for C++.
16241         (__gthread_once_t): Remove busy field for RTPs.
16242         (__GTHREAD_ONCE_INIT): Update accordingly.
16243
16244 2007-03-14  Richard Sandiford  <richard@codesourcery.com>
16245
16246         * doc/invoke.texi: Document VxWorks options.
16247
16248 2007-03-14  Uros Bizjak  <ubizjak@gmail.com>
16249
16250         * doc/invoke.texi (i386 and x86-64 Options): Clarify -msahf option.
16251
16252 2007-03-13  Seongbae Park <seongbae.park@gmail.com>
16253
16254         PR tree-optimization/30590
16255         * tree-nrv.c (tree_nrv): Check for the partial update of the
16256         return value.
16257
16258 2007-03-13  Alexandre Oliva  <aoliva@redhat.com>
16259
16260         * flags.h (flag_random_seed): Remove declaration, in favor of...
16261         * toplev.h (get_random_seed, set_random_seed): ... these.
16262         * tree.c (get_file_function_name): Use the former.
16263         * opts.c (common_handle_option): Use the latter.
16264         * toplev.c
16265
16266 2007-03-13  Steven Bosscher  <steven@gcc.gnu.org>
16267
16268         PR middle-end/31127
16269         * cse.c (cse_find_path): Do not bail out if a basic block that
16270         we already visited now becomes part of a path that starts at a
16271         different basic block.  Just disallow this, to make sure we
16272         visit each basic block at most once.
16273
16274 2007-03-13  Jan Hubicka  <jh@suse.cz>
16275
16276         * ipa-inline.c (cgraph_maybe_hot_edge_p): Look for hot/cold
16277         attributes, when profile esitmate is present, calls with very low
16278         frequency are cold.
16279
16280 2007-03-13  Zdenek Dvorak  <dvorakz@suse.cz>
16281
16282         PR tree-optimization/30730
16283         PR tree-optimization/26900
16284         * tree-ssa-loop-niter.c: Include gmp.h.
16285         (bounds): New type.
16286         (mpz_set_double_int, get_type_bounds, mpz_to_double_int,
16287         split_to_var_and_offset, determine_value_range,
16288         bound_difference_of_offsetted_base, refine_bounds_using_guard,
16289         bound_difference, bounds_add, bounds_negate,
16290         number_of_iterations_ne_max, dump_affine_iv): New functions.
16291         (number_of_iterations_ne, number_of_iterations_lt_to_ne,
16292         assert_loop_rolls_lt, assert_loop_rolls_le): Use bounds on the
16293         difference of initial and final value of control iv to validate
16294         results.
16295         (number_of_iterations_cond): Add loop parameter.  Determine bounds
16296         on the difference of the extremes of the control iv.  Add dumps.
16297         (expand_simple_operations): Handle phi nodes.
16298         (simplify_using_initial_conditions): Do not record used conditions.
16299         (number_of_iterations_exit): Pass loop to number_of_iterations_cond.
16300         Do not set additional_info.
16301         (implies_nonnegative_p, implies_ge_p): Removed.
16302         (derive_constant_upper_bound): Do not use parameter `additional'.
16303         (record_estimate): Parameter `additional' removed.  Parameter
16304         `i_bound' added.  Do not call derive_constant_upper_bound.
16305         (record_nonwrapping_iv): Use derive_constant_upper_bound to
16306         bound the number of iterations estimate.
16307         (estimate_numbers_of_iterations_loop): Pass the estimate from
16308         the number of iterations analysis to record_estimate.
16309         * tree.h (multiple_of_p): Declare.
16310         * tree-scalar-evolution.c (expression_expensive_p): Removed.
16311         (scev_const_prop): Do not check expression_expensive_p.
16312         * fold-const.c (multiple_of_p): Exported.
16313         * double-int.c (double_int_mask): Exported.
16314         * double-int.h (double_int_mask): Declare.
16315         * tree-flow.h (struct tree_niter_desc): Removed additional_info
16316         field.  Added max field.
16317
16318 2007-03-13  David Taylor  <taylor@candd.org>
16319
16320         PR driver/12448:
16321         * gcc.c (cpp_unique_options): If -MT or -MQ is seen, don't pass
16322         default -MQ.
16323
16324 2007-03-13  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
16325
16326         PR target/31123
16327         * pa.md (vdepi_ior): Don't allow zero length deposit.  Likewise for
16328         two unamed patterns.
16329
16330 2007-03-13  Uros Bizjak  <ubizjak@gmail.com>
16331
16332         * config/i386/i386.opt (mcx16, msahf): New options.
16333         * config/i386/i386.c (x86_cmpxchg16b, x86_sahf): Remove.
16334         (ix86_tune_features) [X86_TUNE_USE_SAHF]: Enable for m_GENERIC.
16335
16336         * config/i386/driver-i386.c (bit_LAHF_LM): New define.
16337         (host_detect_local_cpu): Detect cx16 and lahf_lm cpuid bits.
16338         Output -mcx16 and -msahf options when corresponding bit is set.
16339
16340         * doc/invoke.texi (i386 and x86-64 Options): Document -mcx16
16341         and -msahf options.
16342
16343 2007-03-13  Alexandre Oliva  <aoliva@redhat.com>
16344
16345         * configure.ac: Test for assembler tolerance to # 0 "".
16346         * configure, config.in: Rebuilt.
16347         * final.c (final_scan_insn): Emit it if HAVE_AS_LINE_ZERO.
16348
16349 2007-03-13  Geoffrey Keating  <geoffk@apple.com>
16350
16351         * doc/invoke.texi (Spec Files): Update for '%{,' spec.
16352
16353         * config/rs6000/darwin-fallback.c: Compile file only on powerpc.
16354         (handle_syscall): Handle direct system calls.
16355         * config/rs6000/darwin.h (HAS_MD_FALLBACK_FRAME_STATE_FOR): Delete.
16356
16357 2007-03-12  Brooks Moses  <brooks.moses@codesourcery.com>
16358
16359         * doc/invoke.texi: Fix cpp.info cross-reference.
16360         * doc/passes.texi: Fix gcc.info cross-reference.
16361
16362 2007-03-12  Zdenek Dvorak  <dvorakz@suse.cz>
16363
16364         PR tree-optimization/30835
16365         * lambda-code.c (can_convert_to_perfect_nest): Check whether
16366         bb_for_stmt is not NULL before accessing it.
16367
16368 2007-03-12  Joseph Myers  <joseph@codesourcery.com>
16369
16370         * gcc.c (main): Handle target_sysroot_hdrs_suffix being NULL for
16371         some multilibs.
16372
16373 2007-03-12  Brooks Moses  <brooks.moses@codesourcery.com>
16374
16375         PR 30635
16376         * doc/install.texi: Document --enable-stage1-languages
16377
16378 2007-03-12  Steven Bosscher  <steven@gcc.gnu.org>
16379
16380         * tree-pass.h (pass_into_cfg_layout_mode,
16381         pass_outof_cfg_layout_mode): Declare.
16382         * cfglayout.c (into_cfg_layout_mode, outof_cfg_layout_mode,
16383         pass_into_cfg_layout_mode, pass_outof_cfg_layout_mode): New.
16384         * passes.c (pass_into_cfg_layout_mode): Schedule before jump2.
16385         (pass_outof_cfg_layout_mode): Schedule after pass_rtl_ifcvt.
16386
16387 2007-03-12  Seongbae Park <seongbae.park@gmail.com>
16388
16389         * c-decl.c (warn_variable_length_array): New function.
16390         Refactored from grokdeclarator to handle warn_vla
16391         and handle unnamed array case.
16392         (grokdeclarator): Refactored VLA warning case.
16393         * c.opt (Wvla): New flag.
16394         * doc/invoke.texi (Wvla): New warning.
16395
16396 2007-03-12  Richard Henderson  <rth@redhat.com>
16397
16398         * config/alpha/alpha.c (alpha_elf_section_type_flags): New.
16399         (TARGET_SECTION_TYPE_FLAGS): New.
16400
16401 2007-03-12  Richard Henderson  <rth@redhat.com>
16402
16403         * config/darwin.c (machopic_reloc_rw_mask): New.
16404         * config/darwin-protos.h (machopic_reloc_rw_mask): Declare.
16405         * config/darwin.h (TARGET_ASM_RELOC_RW_MASK): New.
16406
16407 2007-03-12  Mark Mitchell  <mark@codesourcery.com>
16408
16409         * cppdefault.c (cpp_EXEC_PREFIX): New variable.
16410         * cppdefault.h (cpp_PREFIX): Document.
16411         (cpp_PREFIX_len): Likewise.
16412         (cpp_EXEC_PREFIX): New variable.
16413         * Makefile.in (PREPROCESSOR_DEFINES): Add STANDARD_EXEC_PREFIX.
16414         * c-incpath.c (add_standard_paths): Correct logic for relocating
16415         paths within prefix.
16416
16417 2007-03-12  Uros Bizjak  <ubizjak@gmail.com>
16418
16419         * config/i386/i386.md (fixuns_trunc<mode>hi2): Implement from
16420         fixuns_truncsfhi2 and fixuns_truncdfhi2 using SSEMODEF
16421         mode macro.
16422         (fix_trunc<mode>di_sse): Implement from fix_truncsfdi_sse and
16423         fix_truncdfdi_sse using SSEMODEF mode macro.
16424         (fix_trunc<mode>si_sse): Implement from fix_truncsfsi_sse and
16425         fix_truncdfsi_sse using SSEMODEF mode macro.
16426         (fix_trunc?f?i_sse peephole2): Implement using SSEMODEF mode macro.
16427         (fix_trunc?f?i_sse K8 peephole2): Fix register constraint.
16428
16429 2007-03-12  Richard Sandiford  <richard@codesourcery.com>
16430
16431         * config.gcc (i[4567]86-wrs-vxworks, i[4567]86-wrs-vxworksae): Add
16432         elfos.h to tm_file.
16433
16434 2007-03-12  Olga Golovanevsky  <olga@il.ibm.com>
16435
16436         * tree.h : Add multiple_of_p declaration.
16437         * fold-const.c (multiple_of_p): Make multiple_of_p public.
16438         * ipa-type-escape.c (results_of_malloc): Redundant.
16439         (visited_stmts): New. Visited stmt for walk_use_def_chains.
16440         (cast_type): Extended with new members.
16441         (check_cast): Returns cast_type.
16442         (cast): New structure for data of walk_use_def_chains.
16443         (is_malloc_result, is_cast_from_non_pointer_1,
16444         is_cast_from_non_pointer,
16445         is_array_access_through_pointer_and_index): New functions.
16446         (look_for_casts): Returns cast types.
16447         (check_call): Returns void.
16448         (okay_pointer_operation): Use support of pointer plus index,
16449         pointer plus constant and allow all multiplications.
16450
16451 2007-03-11  Richard Guenther  <rguenther@suse.de>
16452
16453         PR tree-optimization/31115
16454         * tree-vrp.c (extract_range_from_binary_expr): Make sure
16455         the shift count is positive and non-anti-range for RSHIFT_EXPR.
16456         A shift count of zero is not special as with *_DIV_EXPR.
16457         (vrp_int_const_binop): Handle RSHIFT_EXPR for determining overflow
16458         direction.
16459
16460 2007-03-11  Ian Lance Taylor  <iant@google.com>
16461
16462         * tree-vrp.c (vrp_int_const_binop): Handle PLUS_EXPR and
16463         the *_DIV_EXPR codes correctly with overflow infinities.
16464
16465 2007-03-11  Ira Rosen  <irar@il.ibm.com>
16466
16467         * tree-data-ref.c (analyze_offset): Add a return value (bool) to
16468         indicate success/failure of the analysis. Add negation to subtrahend
16469         in case of subtraction. Fail if both operands contain constants.
16470         (create_data_ref): Fail if analyze_offset fails.
16471
16472 2007-03-11  Uros Bizjak  <ubizjak@gmail.com>
16473
16474         * config/i386/i386.md (frndintxf2): Rename to ...
16475         (rintxf2): ... this. Remove expander having same name.
16476         (rintsf2, rintdf2): Implement using SSEMODEF macro.
16477         (roundsf2, rounddf2): Ditto.
16478         (lrint<mode>di2, lrint<mode>si2): Implement using SSEMODEI24 macro.
16479         (lround<mode>di2, lround<mode>si2): Ditto.
16480
16481 2007-03-11  Steven Bosscher  <steven@gcc.gnu.org>
16482
16483         * lower-subreg.c: Include except.h.
16484         (decompose_multiword_subregs): Verify that the only control flow
16485         insns we can split are loads to multi-words pseudos.
16486         Handle breaking such blocks after splitting, instead of calling
16487         find_many_sub_basic_blocks.
16488
16489         * loop-unroll.c (split_edge_and_insert): Don't set BB_SUPERBLOCK
16490         on the new basic block.  Add a lengthy comment explaining why we
16491         thought this was necessary.
16492         * cfglayout.c (cfg_layout_finalize): Don't break superblocks.
16493
16494 2007-03-10  Mark Mitchell  <mark@codesourcery.com>
16495
16496         PR c++/30924
16497         * tree.c (walk_type_fields): Recurse into the element type of
16498         ARRAY_TYPEs if there is a pointer set.
16499
16500 2007-03-10  Dirk Mueller  <dmueller@suse.de>
16501
16502         * c-common.c (warn_logical_operator): Fix condition.
16503
16504 2007-03-10  Tobias Schl�ter  <tobi@gcc.gnu.org>
16505
16506         * config/i386/darwin.h (DARWIN_MINVERSION_SPEC): Add missing
16507         quotation mark.
16508         * config/darwin.c (machopic_select_section): Remove superfluous
16509         argument in call to categorize_decl_for_section.  Remove unused
16510         variable shlib.
16511
16512 2007-03-10  Joseph Myers  <joseph@codesourcery.com>
16513
16514         * configure.ac (glibc_header_dir): Set using with_build_sysroot if
16515         defined.
16516         * configure: Regenerate.
16517
16518 2007-03-10  Uros Bizjak  <ubizjak@gmail.com>
16519
16520         PR target/31101
16521         * config/i386/i386.md (UNSPEC_C2_FLAG): New constant.
16522         (fpremxf4_i387, fprem1xf4_i387): Use UNSPEC_C2_FLAG.
16523         (fmodxf3, fmod<mode>3, remainderxf3, remainder<mode>3):
16524         Add LABEL_NUSES to emitted label.
16525         * config/i386/i386.c (ix86_emit_fp_unordered_jump): Add
16526         branch probability value to emitted jump insn.
16527         * reg-stack.c (subst_stack_regs_pat)[UNSPEC]: Handle UNSPEC_C2_FLAG.
16528         Do not check life information and do not re-arrange input operands
16529         for UNSPEC_FSCALE_EXP, UNSPEC_FPREM_U and UNSPEC_FPREM1_U.
16530
16531 2007-03-10  Kaz Kojima  <kkojima@gcc.gnu.org>
16532
16533         * config/sh/sh.c (sh_insn_length_adjustment): Adjust for
16534         the change of decode_asm_operands.
16535
16536 2007-03-10  Kaz Kojima  <kkojima@gcc.gnu.org>
16537
16538         * mode-switching.c (create_pre_exit): Skip blockage insn.
16539
16540 2007-03-09  Diego Novillo  <dnovillo@redhat.com>
16541
16542         * tree-pass.h (TODO_update_smt_usage): Remove.
16543         Update all users.
16544         * tree-ssa-forwprop.c (forward_propagate_addr_expr_1): Remove
16545         argument SOME.
16546         Update all users.
16547
16548 2007-03-09  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
16549
16550         * pa.c (attr_length_call): Revise condition for long
16551         pc-relative branch.
16552         (output_call): Use "LONG_PIC_SDIFF" instruction sequence for long
16553         local calls on the SOM target.  Don't use "LONG_PIC_PCREL" call
16554         sequence on SOM target.
16555
16556 2007-03-09  Geoffrey Keating  <geoffk@apple.com>
16557
16558         * gcc.c: Document %{, in big comment at top.
16559         (input_suffix_matches): Remove special handling for .s and
16560         .S.
16561         (input_spec_matches): New.
16562         (handle_braces): Handle %{,.
16563         (validate_switches): ',' indicates a value which is not a switch.
16564         * config/alpha/osf.h (ASM_FINAL_SPEC): Use %{, rather than %{.
16565         to detect assembler input.
16566         * config/i386/sol2.h (CPP_SPEC): Likewise.
16567         * config/rs6000/sysv4.h (ASM_SPEC): Likewise.
16568         * config/rs6000/vxworks.h (ASM_SPEC): Likewise.
16569         * config/rs6000/lynx.h (ASM_SPEC): Likewise.
16570         * config/rs6000/linux64.h (ASM_SPEC_COMMON): Likewise.
16571         * config/i386/darwin.h (DARWIN_MINVERSION_SPEC): Objective-C plus
16572         -m64 causes deployment target to default to 10.5.
16573         * config/rs6000/darwin.h (DARWIN_MINVERSION_SPEC): Likewise.
16574
16575 2007-03-09  Richard Henderson  <rth@redhat.com>
16576
16577         PR target/26090
16578         * target.h (targetm.asm.out.reloc_rw_mask): New.
16579         * target-def.h (TARGET_ASM_RELOC_RW_MASK): New.
16580         (TARGET_ASM_OUT): Use it.
16581         * targhooks.c, targhooks.h (default_reloc_rw_mask): New.
16582         * varasm.c (categorize_decl_for_section): Remove shlib argument;
16583         use the new reloc_rw_mask target hook instead.
16584         (default_section_type_flags_1): Merge into...
16585         (default_section_type_flags): ... here.
16586         (decl_readonly_section_1): Merge into...
16587         (decl_readonly_section): ... here.
16588         (default_elf_select_section_1): Merge into...
16589         (default_elf_select_section): ... here.
16590         (default_unique_section_1): Merge into...
16591         (default_unique_section): ... here.
16592         (compute_reloc_for_rtx_1, compute_reloc_for_rtx): New.
16593         (default_select_rtx_section): Use it.
16594         (default_elf_select_rtx_section): Likewise.
16595         * output.h: Update to match.
16596         * doc/tm.texi (TARGET_ASM_RELOC_RW_MASK): New.
16597         * config/alpha/alpha.c (alpha_elf_reloc_rw_mask): New.
16598         (TARGET_ASM_RELOC_RW_MASK): New.
16599         * config/i386/i386.c (x86_64_elf_select_section): Adjust call
16600         to categorize_decl_for_section.
16601         (x86_64_elf_unique_section): Likewise.
16602         * config/ia64/hpux.h (TARGET_ASM_SELECT_SECTION,
16603         TARGET_ASM_UNIQUE_SECTION, TARGET_ASM_SELECT_RTX_SECTION): Remove.
16604         (TARGET_ASM_RELOC_RW_MASK): New.
16605         * config/ia64/ia64.c (ia64_rwreloc_select_section,
16606         ia64_rwreloc_unique_section, ia64_rwreloc_select_rtx_section): Remove.
16607         (ia64_hpux_reloc_rw_mask, ia64_reloc_rw_mask): New.
16608         (TARGET_RWRELOC): Remove.
16609         (ia64_section_type_flags): Adjust call to default_section_type_flags.
16610         * config/ia64/sysv4.h (TARGET_ASM_RELOC_RW_MASK): New.
16611         * config/rs6000/rs6000.c (rs6000_elf_section_type_flags): Remove.
16612         (rs6000_elf_select_section, rs6000_elf_unique_section): Remove.
16613         (rs6000_elf_reloc_rw_mask, rs6000_xcoff_reloc_rw_mask): New.
16614         (rs6000_xcoff_select_section): Use decl_readonly_section.
16615         (rs6000_xcoff_section_type_flags): Use default_section_type_flags.
16616         * config/rs6000/sysv4.h (TARGET_ASM_RELOC_RW_MASK): New.
16617         (TARGET_ASM_SELECT_SECTION, TARGET_ASM_UNIQUE_SECTION): Remove.
16618         (TARGET_SECTION_TYPE_FLAGS): Remove.
16619         * config/rs6000/xcoff.h (TARGET_ASM_RELOC_RW_MASK): New.
16620
16621 2007-03-09  Roger Sayle  <roger@eyesopen.com>
16622
16623         * fold-const.c (fold_comparison): Remove compile-time evaluation of
16624         complex constant equality/inequality comparisons for here.
16625         (fold_binary) <EQ_EXPR>: Simplify complex comparisons that are
16626         known at compile-time or can be simplified to a scalar comparison.
16627         (fold_relational_const): Move compile-time evaluation of complex
16628         constant equality/inequality comparisons to here.
16629
16630 2007-03-09  Alexandre Oliva  <aoliva@redhat.com>
16631
16632         PR rtl-optimization/30643
16633         * cse.c (cse_insn): Recompute dest_hash after insert_regs for
16634         dest_addr_elt.
16635         (fold_rtx): Recurse, like before 2006-11-03.
16636
16637 2007-03-09  DJ Delorie  <dj@redhat.com>
16638
16639         * config/m32c/t-m32c (m32c-pragma.o): Add TM_H dependency to
16640         m32c-pragma.o.
16641
16642 2007-03-09  Aldy Hernandez  <aldyh@redhat.com>
16643
16644         PR tree-optimization/30375
16645         * tree-ssa-dse.c (dse_possible_dead_store_p): Do not eliminate if
16646         LHS of statements is not the same.
16647         * testsuite/gcc.dg/tree-ssa/ssa-dse-10.c: New.
16648
16649 2007-03-09  Chao-ying Fu  <fu@mips.com>
16650
16651         * doc/extend.texi (MIPS DSP Built-in Functions): Document the DSP
16652         REV 2.
16653         * doc/invoke.texi (-mdspr2): Document new option.
16654         * config/mips/mips.md (UNSPEC_ABSQ_S_QB .. UNSPEC_DPSQX_SA_W_PH):
16655         New unspec for DSP REV 2.
16656         (<u>mulsidi3_32bit_internal): Check if !TARGET_DSPR2, because
16657         these instructions are extended in DSP REV 2.
16658         (mips-dspr2.md): Include.
16659         * config/mips/mips.opt (mdspr2): New option.
16660         * config/mips/mips.c (mips_function_type): Add MIPS_V4QI_FTYPE_V4QI,
16661         MIPS_SI_FTYPE_SI_SI_SI, MIPS_DI_FTYPE_DI_USI_USI, MIPS_DI_FTYPE_SI_SI,
16662         MIPS_DI_FTYPE_USI_USI, MIPS_V2HI_FTYPE_SI_SI_SI.
16663         (override_options): Check TARGET_DSPR2 to enable MASK_DSP.
16664         (CODE_FOR_mips_mul_ph): Define it to CODE_FOR_mulv2hi3.
16665         (dsp_bdesc): Add DSP REV 2 builtins.  Remove 32-bit only DSP builtins.
16666         (dsp_32only_bdesc): New description table for 32-bit only DSP REV 1
16667         and 2 builtins.
16668         (bdesc_map): Add one field of unsupported_target_flags.
16669         (bdesc_arrays):  Update entries to have extra fields.  Add
16670         dsp_32only_bdesc.
16671         (mips_init_builtins): Initialize new function types.
16672         Check unsupported_target_fileds to filter out builtins.
16673         * config/mips/mips.h (TARGET_CPU_CPP_BUILTINS): Define __mips_dspr2 if
16674         TARGET_DSPR2.
16675         (ASM_SPEC): Pass mdspr2 to the assembler.
16676         * config/mips/mips-dspr2.md: New file.
16677
16678 2007-03-09  Sa Liu  <saliu@de.ibm.com>
16679
16680         * config/rs6000/altivec.md: Fix vcond patterns using if_then_else.
16681
16682 2007-03-09  Ian Lance Taylor  <iant@google.com>
16683
16684         * opts.c (common_handle_option): Treat -Wstrict-overflow (with no
16685         argument) like -Wstrict-overflow=2.
16686         * doc/invoke.texi (Warning Options): Update documentation.
16687
16688 2007-03-09  Dirk Mueller  <dmueller@suse.de>
16689
16690         PR c++/17946
16691         * doc/invoke.texi (-Wlogical-op): Document.
16692         * common.opt (-Wlogical-op): New.
16693         * c-common.h (warn_logical_operator): Declare.
16694         * c-common.c (warn_logical_operator): Define.
16695         * c-typeck.c (parser_build_binary_op): Call
16696         warn_logical_operator.
16697
16698 2007-03-09  Alexandre Oliva  <aoliva@redhat.com>
16699
16700         * rtl.h (gen_rtx_ASM_INPUT): Use "" instead of NULL file name.
16701         * final.c (final_scan_insn): Test for non-"" file name.
16702
16703 2007-03-09  Sebastian Pop  <sebastian.pop@inria.fr>
16704
16705         * doc/loop.texi: Document the Omega linear constraints solver.
16706         * doc/invoke.texi: Document -fcheck-data-deps, omega-max-vars,
16707         omega-max-geqs, omega-max-eqs, omega-max-wild-cards,
16708         omega-hash-table-size, omega-max-keys, and
16709         omega-eliminate-redundant-constraints.
16710         * tree-pass.h (pass_check_data_deps): Declared.
16711         * omega.c: New.
16712         * omega.h: New.
16713         * timevar.def (TV_CHECK_DATA_DEPS): Declared.
16714         * tree-ssa-loop.c (check_data_deps, gate_check_data_deps,
16715         pass_check_data_deps): New.
16716         * tree-data-ref.c (init_data_ref): Remove declaration.
16717         (dump_data_dependence_relation): Dump DDR_INNER_LOOP.
16718         (analyze_array): Renamed init_array_ref, move up initializations.
16719         (init_data_ref): Renamed init_pointer_ref.  Moved before its call.
16720         Removed arguments that are set to NULL.
16721         (analyze_indirect_ref): Correct indentation, correct call to
16722         init_pointer_ref.
16723         (object_analysis): Call init_array_ref instead of analyze_array.
16724         (initialize_data_dependence_relation): Initialize DDR_INNER_LOOP.
16725         (access_functions_are_affine_or_constant_p): Use DR_ACCESS_FNS instead
16726         of DR_ACCESS_FNS_ADDR.
16727         (init_omega_eq_with_af, omega_extract_distance_vectors,
16728         omega_setup_subscript, init_omega_for_ddr_1, init_omega_for_ddr,
16729         ddr_consistent_p): New.
16730         (compute_affine_dependence): Check consistency of ddrs when
16731         flag_check_data_deps is passed.
16732         (analyze_all_data_dependences): Uncomment.
16733         (tree_check_data_deps): New.
16734         * tree-data-ref.h: Include omega.h.
16735         (DR_ACCESS_FNS_ADDR): Removed.
16736         (data_dependence_relation): Add inner_loop.
16737         (DDR_INNER_LOOP): New.
16738         * common.opt (fcheck-data-deps): New.
16739         * tree-flow.h (tree_check_data_deps): Declare.
16740         * Makefile.in (TREE_DATA_REF_H): Depend on omega.h.
16741         (OBJS-common): Depend on omega.o.
16742         (omega.o): Define.
16743         * passes.c (pass_check_data_deps): Scheduled.
16744         * params.def (PARAM_OMEGA_MAX_VARS, PARAM_OMEGA_MAX_GEQS,
16745         PARAM_OMEGA_MAX_EQS, PARAM_OMEGA_MAX_WILD_CARDS,
16746         PARAM_OMEGA_HASH_TABLE_SIZE, PARAM_OMEGA_MAX_KEYS,
16747         PARAM_VECT_MAX_VERSION_CHECKS,
16748         PARAM_OMEGA_ELIMINATE_REDUNDANT_CONSTRAINTS): New.
16749
16750 2007-03-09  Richard Guenther  <rguenther@suse.de>
16751
16752         PR tree-optimization/30904
16753         PR middle-end/31058
16754         * tree-vrp.c (extract_range_from_binary_expr): Handle RSHIFT_EXPR
16755         the same way as *_DIV_EXPR.
16756
16757 2007-03-09  Alexandre Oliva  <aoliva@redhat.com>
16758
16759         * recog.c (decode_asm_operands): No mixed declarations and code.
16760
16761 2007-03-09  Alexandre Oliva  <aoliva@redhat.com>
16762
16763         * rtl.def (ASM_INPUT): Add location.
16764         * rtl.h (ASM_INPUT_SOURCE_LOCATION): New.
16765         (ASM_INPUT_SOURCE_FILE, ASM_INPUT_SOURCE_LINE): New.
16766         (decode_asm_operands): Add loc operand.
16767         (gen_rtx_ASM_INPUT, gen_rtx_ASM_INPUT_loc): Define.
16768         * stmt.c (expand_asm): Rename to...
16769         (expand_asm_loc): ... this.  Add locus argument.  Pass it on to
16770         gen_rtx_ASM_INPUT_loc.
16771         (expand_asm_expr): Adjust.
16772         * recog.c (decode_asm_operands): Add loc operand.
16773         (check_asm_operands, extract_insn): Adjust.
16774         * reload1.c (maybe_fix_stack_asms): Likewise.
16775         * final.c (asm_insn_count): Likewise.
16776         (final_scan_insn): Output # line before and after asm.
16777
16778 2007-03-09  Daniel Berlin  <dberlin@dberlin.org>
16779
16780         * tree-ssa-structalias.c (variable_info): Remove
16781         finished_solution.
16782         (new_var_info): Ditto.
16783         (shared_bitmap_info_t): New structure.
16784         (shared_bitmap_table): New variable.
16785         (shared_bitmap_hash): New function.
16786         (shared_bitmap_eq): Ditto
16787         (shared_bitmap_lookup): Ditto.
16788         (shared_bitmap_add): Ditto.
16789         (merge_smts_into): Change to take bitmap directly.
16790         (find_what_p_points_to): Rewrite to use shared bitmap hashtable.
16791         (init_alias_vars): Init shared bitmap hashtable.
16792         (delete_points_to_sets): Delete shared bitmap hashtable.
16793         * tree-ssa-operands.c (add_virtual_operand): Partially revert the
16794         is_aliased removal as a change that was still necessary was
16795         deleted.
16796
16797 2007-03-09  Uros Bizjak  <ubizjak@gmail.com>
16798
16799         * config/i386/i386.h (override_options): Conditionally disable
16800         x86_sahf for 64bit targets only.
16801
16802 2007-03-08  Andrew Pinski  <andrew_pinski@playstation.sony.com>
16803
16804         PR C/31072
16805         * c-decl.c (merge_decls): Don't call make_var_volatile.
16806         * varasm.c (make_var_volatile): Remove.
16807         * output.h (make_var_volatile): Remove.
16808
16809 2007-03-08  Zdenek Dvorak  <dvorakz@suse.cz>
16810
16811         PR tree-optimization/31085
16812         * tree-ssa-address.c (create_mem_ref): Fix test of type of base.
16813
16814 2007-03-08  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
16815
16816         * builtins.def (lceil, lceilf, lceill, lfloor, lfloorf, lfloorl,
16817         llceil, llceilf, llceill, llfloor, llfloorf, llfloorl): Mark with
16818         ATTR_CONST_NOTHROW_LIST.
16819
16820         * fold-const.c (tree_expr_nonnegative_warnv_p): Handle
16821         FIX_TRUNC_EXPR.
16822
16823 2007-03-08  Diego Novillo  <dnovillo@redhat.com>
16824
16825         * doc/tree-ssa.texi: Remove documentation for V_MUST_DEF.
16826
16827 2007-03-08  Geoffrey Keating  <geoffk@apple.com>
16828
16829         PR 31013
16830         * gccspec.c (lang_specific_driver): Do nothing when NEXT_OBJC_RUNTIME
16831         is declared.
16832         * config/darwin.h (REAL_LIBGCC_SPEC): When -fgnu-runtime is
16833         passed, use shared libgcc.
16834
16835 2007-03-08  Roger Sayle  <roger@eyesopen.com>
16836
16837         * tree-eh.c (do_return_redirection): Call build_gimple_modify_stmt
16838         instead of calling build2 with a GIMPLE_MODIFY_STMT.
16839         (honor_protect_cleanup_actions, lower_try_finally_switch):
16840         Likewise.
16841         * tree-if-conv.c (replace_phi_with_cond_gimple_modify_stmt,
16842         ifc_temp_var): Likewise.
16843         * tree-inline.c (setup_one_parameter): Likewise.
16844         * tree-mudflap.c (mf_decl_cache_locals,
16845         mf_build_check_statement_for): Likewise.
16846         * tree-nested.c (init_tmp_var, save_tmp_var,
16847         finalize_nesting_tree_1): Likewise.
16848         * tree-outof-ssa.c (insert_copy_on_edge,
16849         insert_backedge_copies): Likewise.
16850         * tree-profile.c (tree_gen_edge_profiler,
16851         tree_gen_ic_profiler): Likewise.
16852         * tree-scalar-evolution.c (scev_const_prop): Likewise.
16853         * tree-sra.c (sra_build_assignment): Likewise.
16854         * tree-ssa-loop-im.c (determine_invariantness_stmt): Likewise.
16855         * tree-ssa-math-opts.c (insert_reciprocals,
16856         execute_cse_sincos_1): Likewise.
16857         * tree-tailcall.c (adjust_accumulator_values,
16858         adjust_return_value): Likewise.
16859         * tree-vect-patterns.c (vect_pattern_recog_1): Likewise.
16860         * tree-vect-transform.c (vect_create_data_ref_ptr,
16861         bump_vector_ptr, vect_init_vector, get_initial_def_for_induction,
16862         vect_create_epilog_for_reduction, vectorizable_reduction,
16863         vectorizable_call, vectorizable_conversion,
16864         vectorizable_assignment, vectorizable_operation,
16865         vectorizable_type_demotion, vect_gen_widened_results_half,
16866         vect_permute_store_chain, vectorizable_store,
16867         vect_setup_realignment, vect_permute_load_chain,
16868         vectorizable_load, vectorizable_condition,
16869         vect_create_cond_for_align_checks): Likewise.
16870         * tree-vrp.c (build_assert_expr_for): Likewise.
16871
16872 2007-03-08  Ian Lance Taylor  <iant@google.com>
16873
16874         * tree-vrp.c: Include "intl.h".
16875         (usable_range_p): New static function.
16876         (compare_values_warnv): Don't test TYPE_OVERFLOW_UNDEFINED for
16877         overflowed values, juts set *strict_overflow_p.
16878         (compare_values): Only return -2 if one of the operands is not a
16879         constant.
16880         (compare_ranges): Call usable_range_p.
16881         (compare_range_with_value): Likewise.
16882         (vrp_evaluate_conditional_warnv): Rename from
16883         vrp_evaluate_conditional.  Make static.  Change all callers.
16884         (vrp_evaluate_conditional): New function.
16885         (simplify_div_or_mod_using_ranges): Issue warning about reliance
16886         on signed overflow.
16887         (simplify_abs_using_ranges): Likewise.
16888         (simplify_stmt_for_jump_threading): Add within_stmt parameter.
16889         * tree-ssa-dom.c (simplify_stmt_for_jump_threading): Add
16890         within_stmt parameter.
16891         * tree-ssa-propagate.c (fold_predicate_in): Update call to
16892         vrp_evaluate_conditional.
16893         * tree-ssa-threadedge.c
16894         (record_temporary_equivalences_from_stmts_at_dest): Change
16895         simplify parameter to take a second tree parameter.
16896         (simplify_control_stmt_condition): Likewise.
16897         (thread_across_edge): Likewise.
16898         * tree-flow.h (vrp_evaluate_conditional): Update declaration.
16899         (thread_across_edge): Likewise.
16900         * Makefile.in (tree-vrp.o): Depend upon intl.h.
16901
16902 2007-03-08  Uros Bizjak  <ubizjak@gmail.com>
16903
16904         * config/i386/i386.h (TARGET_SAHF): New define.
16905         * config/i386/i386.c (ix86_tune_features) [X86_TUNE_USE_SAHF]:
16906         Also enable for m_K8, m_AMDFAM10 and m_CORE2.
16907         (x86_sahf): New global variable.
16908         (override_options): Add PTA_NO_SAHF to pta_flags enum.  Recode
16909         pta_flags masks using shifts.  Add PTA_NO_SAHF to x86_64 and
16910         nocona processor flags.  Set x86_sahf when PTA_NO_SAHF is not set
16911         in processor flags.  Do not unconditionally disable TARGET_USE_SAHF
16912         for 64-bit.
16913         (ix86_fp_comparison_sahf_cost): Return high value for !TARGET_SAHF.
16914         (ix86_expand_fp_compare): Check for TARGET_CMOVE or TARGET_SAHF
16915         when expanding fcomi/sahf based tests.
16916         (ix86_emit_fp_unordered_jump): Check for TARGET_SAHF when
16917         expanding sahf based alternative. Emit sahf based sequence when
16918         optimizing for code size.
16919         * config/i386/i386.md (x86_sahf_1): Do not disable for
16920         TARGET_64BIT, enable for TARGET_SAHF.
16921
16922 2007-03-08  Martin Michlmayr  <tbm@cyrius.com>
16923
16924         * tree-ssa-coalesce.c (fail_abnormal_edge_coalesce): Remove
16925         spurious whitespace from error message.
16926
16927 2007-03-08  Volker Reichelt  <reichelt@netcologne.de>
16928
16929         PR c++/30852
16930         * c-common.c (fold_offsetof_1): Handle COMPOUND_EXPR.
16931
16932 2007-03-08  Alexandre Oliva  <aoliva@redhat.com>
16933
16934         * c-decl.c (grokdeclarator): Disable warnings for anonymous
16935         bitfields.
16936         * tree-sra.c (instantiate_element): Propagate disabled warnings
16937         from the element itself to the created variable.
16938
16939 2007-03-07  Richard Henderson  <rth@redhat.com>
16940
16941         PR target/30848
16942         * reg-stack.c (emit_swap_insn): If a malformed asm was seen,
16943         silently fix up the stack in the case of a missing register.
16944
16945 2007-03-07  Paul Brook  <paul@codesourcery.com>
16946
16947         * config/arm/libunwind.S: Add .arch/.object_arch for armv4 builds.
16948
16949 2007-03-07  Joseph Myers  <joseph@codesourcery.com>
16950
16951         * config/arm/unwind-arm.c (struct wmmxd_regs, struct wmmxc_regs):
16952         New.
16953         (phase1_vrs): Use them.
16954         (DEMAND_SAVE_WMMXD, DEMAND_SAVE_WMMXC): New.
16955         (__gnu_Unwind_Save_WMMXD, __gnu_Unwind_Restore_WMMXD,
16956         __gnu_Unwind_Save_WMMXC, __gnu_Unwind_Restore_WMMXC): Declare.
16957         (restore_non_core_regs): Call __gnu_Unwind_Restore_WMMXD and
16958         __gnu_Unwind_Restore_WMMXC if required.
16959         (_Unwind_VRS_Pop): Implement iWMMXt support.
16960         * config/arm/libunwind.S (gnu_Unwind_Restore_WMMXD,
16961         gnu_Unwind_Save_WMMXD, gnu_Unwind_Restore_WMMXC,
16962         gnu_Unwind_Save_WMMXC): Define.
16963
16964 2007-03-07  Richard Sandiford  <richard@codesourcery.com>
16965
16966         * config/vxworks.h (vxworks_override_options): Declare.
16967         (VXWORKS_OVERRIDE_OPTIONS): Use it.
16968         * config/vxworks.c: Include target.h and toplev.h.
16969         (vxworks_override_options): New function.
16970         * config/t-vxworks (vxworks.o): Depend on $(TARGET_H) and toplev.h.
16971
16972 2007-03-07  Andreas Krebbel  <krebbel1@de.ibm.com>
16973
16974         * config/s390/s390.c (override_options): Don't emit an error when
16975         -mstack-size is used without providing -mstack-guard.
16976         (s390_emit_prologue): Choose stack_guard value automatically if not
16977         provided via command line.
16978         * doc/invoke.texi: Adjust description of -mstack-guard and
16979         -mstack-size.
16980
16981 2007-03-07  Richard Sandiford  <richard@codesourcery.com>
16982
16983         * config/i386/i386.c (output_set_got): Add a GOT initialization
16984         sequence for VxWorks PIC.
16985         (legitimate_pic_address_disp_p): Allow UNSPEC_GOT wrappers
16986         around labels as well as symbols.  Use gotoff_operand instead
16987         of local_symbolic_operand.
16988         (legitimize_pic_address): Use gotoff_operand instead of
16989         local_symbolic_operand.  Use @GOT accesses for labels as
16990         well as symbols.
16991         (ix86_output_addr_diff_elt): Use PC-relative rather than
16992         GP-relative offsets for VxWorks PIC.
16993         (ix86_expand_move): Pass NULL_RTX to legitimize_pic_address unless
16994         no_new_pseudos.  Check whether the returned register is op0.
16995         * config/i386/i386.md (tablejump): Use PC-relative rather than
16996         GP-relative offsets for VxWorks PIC.
16997         * config/i386/predicates.md (gotoff_operand): New predicate.
16998
16999 2007-03-06  Richard Sandiford  <richard@codesourcery.com>
17000
17001         * config/vxworks.h (VXWORKS_GOTT_BASE, VXWORKS_GOTT_INDEX): Undefine
17002         before defining.
17003         * config/vxworks-dummy.h: New file.
17004         * config/i386/i386.h: Include it.
17005
17006 2007-03-07  Alexandre Oliva  <aoliva@redhat.com>
17007
17008         * dwarf2out.c (is_inlined_entry_point): New
17009         (add_high_low_attributes): Emit DW_AT_entry_pc along with
17010         DW_AT_ranges if the first subblock is the entry point.
17011
17012 2007-03-06  David Daney  <ddaney@avtrex.com>
17013
17014         * doc/install.texi (mips-*-*): Change recommended binutils
17015         version.
17016
17017 2007-03-06  Anatoly Sokolov <aesok@post.ru>
17018
17019         * config/avr/avr.c (avr_mcu_types): Add support for ATmega325P,
17020         ATmega3250P, ATmega329P, ATmega3290P, AT90USB82 and AT90USB162
17021         devices.
17022         * config/avr/avr.h (LINK_SPEC, CRT_BINUTILS_SPECS): (Ditto.).
17023         * config/avr/t-avr (MULTILIB_MATCHES): (Ditto.).
17024
17025 2007-03-06  Jan Hubicka  <jh@suse.cz>
17026
17027         * errors.h (warning, error, fatal, internal_error): Mark as cold.
17028         * predict.c (maybe_hot_bb): Cold functions are never hot; hot
17029         functions are hot.
17030         (probably_cold_bb_p): Cold functions are cold.
17031         (probably_never_executed_bb_p): Cold functions are cold.
17032         (tree_bb_level_predictions): Predict calls to cold functions as not
17033         taken.
17034         (compute_function_frequency): Check hot/cold attributes.
17035         * function.h (function_frequency): Update comments.
17036         * predict.def (PRED_COLD_FUNCTION): Predict cold function.
17037         * c-common.c (handle_hot_attribute, handle_cold_attribute): New.
17038         (c_common_att): Add cold and hot.
17039
17040         * doc/extend.texi (hot,cold attributes): Document.
17041
17042 2007-03-06  Andrew Haley  <aph@redhat.com>
17043
17044         * function.c (expand_function_end): Move blockage to just after we
17045         emit the label for the naked return from the function.
17046
17047 2007-03-06  Richard Sandiford  <richard@codesourcery.com>
17048
17049         * config/i386/att.h (ASM_OUTPUT_ASCII, ASM_OUTPUT_SKIP): Undefine
17050         before redefining.
17051
17052 2007-03-06  Jan Hubicka  <jh@suse.cz>
17053
17054         * reg-stack.c (reg_to_stack): Large models don't allow NAN to be
17055         loaded for constant large models.  Non-large 64bit PIC can do.
17056         * i386.h (CASE_VECTOR_MODE): Large PIC cases are 64bit.
17057         * cmodel.h: Add LARGE PIC.
17058         * i386.md (UNSPEC_PLTOFF): New.
17059         (UNSPEC_SET_RIP, UNSPEC_SET_GOT_OFFSET): New; renumber other
17060         unspecs as needed.
17061         (*call_1_rex64): Disable for large models.
17062         (*call_1_rex64_large): New.
17063         (*call_value_1_rex64): Disable for large models.
17064         (*call_value_1_rex64_large): New.
17065         (set_rip_rex4): New.
17066         (set_got_offset_rex64): New.
17067         * predicates.md (constant_call_address_operand): For large model
17068         constant calls are not possible.
17069         * i386-protos.h (construct_plt_address): Declare.
17070         * i386.c (override_options): Accept large models.
17071         (ix86_expand_prologue): Expand large PIC GOT pointer load.
17072         (legitimate_constant_p): Add new UNSPECs.
17073         (legitimate_pic_operand_p): Likewise.
17074         (legitimate_pic_address_disp_p): Disallow local symbols for large PICs.
17075         (legitimize_pic_address): Do easy RIP relative way for TLS only for
17076         non-large model.
17077         (output_pic_addr_const): Add PLTOFF.
17078         (ix86_output_addr_diff_elt): Output 64bit tables when needed.
17079         (ix86_expand_move): Legitimize pic address when in PIC mode.
17080         (construct_plt_address): New function.
17081         (ix86_expand_call): Offload the address to register and use GOT
17082         pointer for large model.
17083         * invoke.texi (mcmodel=large): Update documentation.
17084
17085 2007-03-06  Richard Henderson  <rth@redhat.com>
17086
17087         * config/i386/i386.c (x86_use_leave, x86_push_memory,
17088         x86_zero_extend_with_and, x86_movx, x86_double_with_add,
17089         x86_use_bit_test, x86_unroll_strlen, x86_deep_branch,
17090         x86_branch_hints, x86_use_sahf, x86_partial_reg_stall,
17091         x86_partial_flag_reg_stall, x86_use_himode_fiop, x86_use_simode_fiop,
17092         x86_use_mov0, x86_use_cltd, x86_read_modify_write, x86_read_modify,
17093         x86_split_long_moves, x86_promote_QImode, x86_fast_prefix,
17094         x86_single_stringop, x86_qimode_math, x86_promote_qi_regs,
17095         x86_himode_math, x86_promote_hi_regs, x86_sub_esp_4, x86_sub_esp_8,
17096         x86_add_esp_4, x86_add_esp_8, x86_integer_DFmode_moves,
17097         x86_partial_reg_dependency, x86_memory_mismatch_stall,
17098         x86_prologue_using_move, x86_epilogue_using_move, x86_shift1,
17099         x86_sse_partial_reg_dependency, x86_sse_split_regs,
17100         x86_sse_unaligned_move_optimal, x86_sse_typeless_stores,
17101         x86_sse_load0_by_pxor, x86_use_ffreep, x86_use_incdec,
17102         x86_inter_unit_moves, x86_ext_80387_constants, x86_four_jump_limit,
17103         x86_schedule, x86_use_bt, x86_pad_returns,
17104         x86_use_xchgb): Merge into ...
17105         (ix86_tune_features): ... here.  New array.
17106         (x86_cmove, x86_cmpxchg, x86_cmpxchg8b, x86_xadd,
17107         x86_bswap): Merge into ...
17108         (ix86_arch_features): ... here.  New array.
17109         (x86_3dnow_a): Remove.
17110         (x86_accumulate_outgoing_args): Make static.
17111         (x86_arch_always_fancy_math_387): Make static.
17112         (ix86_tune_mask, ix86_arch_mask): Move ...
17113         (override_options): ... to local variables here.  Apply the
17114         appropriate mask to each element of ix86_arch_features and
17115         ix86_tune_features.  Adjust TARGET_CMOVE and TARGET_USE_SAHF
17116         as were done in the old macros.
17117         (standard_80387_constant_p): Use TARGET_EXT_80387_CONSTANTS.
17118         * config/i386/i386.h (x86_use_leave, x86_push_memory,
17119         x86_zero_extend_with_and, x86_use_bit_test, x86_cmove, x86_deep_branch,
17120         x86_branch_hints, x86_unroll_strlen, x86_double_with_add,
17121         x86_partial_reg_stall, x86_movx, x86_use_himode_fiop,
17122         x86_use_simode_fiop, x86_use_mov0, x86_use_cltd, x86_use_xchgb,
17123         x86_read_modify_write, x86_read_modify, x86_split_long_moves,
17124         x86_promote_QImode, x86_single_stringop, x86_fast_prefix,
17125         x86_himode_math, x86_qimode_math, x86_promote_qi_regs,
17126         x86_promote_hi_regs, x86_integer_DFmode_moves, x86_add_esp_4,
17127         x86_add_esp_8, x86_sub_esp_4, x86_sub_esp_8,
17128         x86_partial_reg_dependency, x86_memory_mismatch_stall,
17129         x86_accumulate_outgoing_args, x86_prologue_using_move,
17130         x86_epilogue_using_move, x86_decompose_lea,
17131         x86_arch_always_fancy_math_387, x86_shift1,
17132         x86_sse_partial_reg_dependency, x86_sse_split_regs,
17133         x86_sse_unaligned_move_optimal, x86_sse_typeless_stores,
17134         x86_sse_load0_by_pxor, x86_use_ffreep, x86_inter_unit_moves,
17135         x86_schedule, x86_use_bt, x86_cmpxchg, x86_cmpxchg8b, x86_xadd,
17136         x86_use_incdec, x86_pad_returns, x86_bswap,
17137         x86_partial_flag_reg_stall): Remove.
17138         (enum ix86_tune_indices): New.
17139         (ix86_tune_features): New.
17140         (TARGET_USE_LEAVE, TARGET_PUSH_MEMORY, TARGET_ZERO_EXTEND_WITH_AND,
17141         TARGET_USE_BIT_TEST, TARGET_UNROLL_STRLEN,
17142         TARGET_DEEP_BRANCH_PREDICTION, TARGET_BRANCH_PREDICTION_HINTS,
17143         TARGET_DOUBLE_WITH_ADD, TARGET_USE_SAHF, TARGET_MOVX,
17144         TARGET_PARTIAL_REG_STALL, TARGET_PARTIAL_FLAG_REG_STALL,
17145         TARGET_USE_HIMODE_FIOP, TARGET_USE_SIMODE_FIOP, TARGET_USE_MOV0,
17146         TARGET_USE_CLTD, TARGET_USE_XCHGB, TARGET_SPLIT_LONG_MOVES,
17147         TARGET_READ_MODIFY_WRITE, TARGET_READ_MODIFY, TARGET_PROMOTE_QImode,
17148         TARGET_FAST_PREFIX, TARGET_SINGLE_STRINGOP, TARGET_QIMODE_MATH,
17149         TARGET_HIMODE_MATH, TARGET_PROMOTE_QI_REGS, TARGET_PROMOTE_HI_REGS,
17150         TARGET_ADD_ESP_4, TARGET_ADD_ESP_8, TARGET_SUB_ESP_4,
17151         TARGET_SUB_ESP_8, TARGET_INTEGER_DFMODE_MOVES,
17152         TARGET_PARTIAL_REG_DEPENDENCY, TARGET_SSE_PARTIAL_REG_DEPENDENCY,
17153         TARGET_SSE_UNALIGNED_MOVE_OPTIMAL, TARGET_SSE_SPLIT_REGS,
17154         TARGET_SSE_TYPELESS_STORES, TARGET_SSE_LOAD0_BY_PXOR,
17155         TARGET_MEMORY_MISMATCH_STALL, TARGET_PROLOGUE_USING_MOVE,
17156         TARGET_EPILOGUE_USING_MOVE, TARGET_SHIFT1, TARGET_USE_FFREEP,
17157         TARGET_INTER_UNIT_MOVES, TARGET_FOUR_JUMP_LIMIT, TARGET_SCHEDULE,
17158         TARGET_USE_BT, TARGET_USE_INCDEC, TARGET_PAD_RETURNS,
17159         TARGET_EXT_80387_CONSTANTS): Use it.
17160         (enum ix86_arch_indices): New.
17161         (ix86_arch_features): New.
17162         (TARGET_CMOVE, TARGET_CMPXCHG, TARGET_CMPXCHG8B, TARGET_XADD,
17163         TARGET_BSWAP): Use it.
17164         (ix86_tune_mask, ix86_arch_mask): Remove.
17165
17166 2007-03-06  Joseph Myers  <joseph@codesourcery.com>
17167
17168         PR bootstrap/31020
17169         * configure.ac (CROSS_SYSTEM_HEADER_DIR, build_system_header_dir):
17170         Define using $${sysroot_headers_suffix}.
17171         * configure: Regenerate.
17172         * cppdefault.c (cpp_include_defaults): Make FIXED_INCLUDE_DIR a
17173         multilib-suffixed directory if SYSROOT_HEADERS_SUFFIX_SPEC
17174         defined.
17175         * doc/invoke.texi (-print-sysroot-headers-suffix): Document.
17176         * gcc.c (print_sysroot_headers_suffix): New.
17177         (option_map): Include --print-sysroot-headers-suffix.
17178         (display_help): Mention -print-sysroot-headers-suffix.
17179         (process_command): Handle -print-sysroot-headers-suffix.
17180         (do_spec_1): Append multilib directory to include-fixed path if
17181         sysroot suffixes in use.
17182         (main): Handle -print-sysroot-headers-suffix.
17183         * Makefile.in (start.encap): Don't depend on xlimits.h
17184         (xlimits.h): Remove.
17185         (stmp-int-hdrs): Don't depend on xlimits.h.  Inline generation of
17186         limits.h for each multilib in fixinc_list.
17187         (fixinc_list, s-fixinc_list): New.
17188         (stmp-fixinc): Depend on fixinc_list.  If not copying headers,
17189         generate them for each multilib in fixinc_list.
17190         (stmp-fixproto): Use include-fixed.  Run fixproto for each
17191         multilib in fixinc_list.
17192         (mostlyclean): Don't remove xlimits.h.
17193         (clean): Remove include-fixed.
17194         (real-install-headers-tar, real-install-headers-cpio,
17195         real-install-headers-cp): Don't copy include, only include-fixed.
17196         (install-mkheaders): Depend on fixinc_list.  Don't depend on
17197         xlimits.h.  Save limits.h files for each multilib in fixinc_list.
17198         Always save mkinstalldirs.  Preserve ${sysroot_headers_suffix} in
17199         SYSTEM_HEADER_DIR setting in mkheaders.conf.
17200
17201 2007-03-06  Jan Hubicka  <jh@suse.cz>
17202
17203         * regstack.c (reg_to_stack): When in 64bit PIC mode, we still can load
17204         NANs easilly.
17205
17206 2007-03-06  Richard Sandiford  <richard@codesourcery.com>
17207
17208         * configure.ac: Allow tm_file to contain build-directory files.
17209         * configure: Regenerate.
17210         * config.gcc (m68k-*-uclinux*): Add ./sysroot-suffix.h to tm_file.
17211         * config/m68k/t-uclinux (sysroot-suffix.h): New target.
17212         * config/m68k/print-sysroot-suffix.sh: New file.
17213
17214 2007-03-06  Richard Sandiford  <richard@codesourcery.com>
17215
17216         * config/m68k/m68k.h (PIC_OFFSET_TABLE_REGNUM): Use the REGNO
17217         of pic_offset_table_rtx if reload_completed.
17218         (CONDITIONAL_REGISTER_USAGE): Use PIC_REG instead of
17219         PIC_OFFSET_TABLE_REGNUM.
17220         * config/m68k/m68k.c (TARGET_ASM_CAN_OUTPUT_MI_THUNK): Always
17221         return true.
17222         (m68k_save_reg): Use PIC_REG instead of PIC_OFFSET_TABLE_REGNO.
17223         (m68k_output_mi_thunk): Rewrite to use RTL.  Honor vcall_offset.
17224
17225 2007-03-06  Richard Sandiford  <richard@codesourcery.com>
17226
17227         * config/m68k/m68k.c (m68k_save_reg): Save the PIC register in
17228         functions that call eh_return.
17229
17230 2007-03-06  Richard Sandiford  <richard@codesourcery.com>
17231
17232         * config/m68k/m68k.c (m68k_save_reg): Save the PIC register in
17233         functions that need a constant pool.
17234
17235 2007-03-06  Richard Sandiford  <richard@codesourcery.com>
17236
17237         PR target/28181
17238         * config/m68k/m68k-protos.h (m68k_secondary_reload_class): Declare.
17239         (m68k_preferred_reload_class): Likewise.
17240         * config/m68k/m68k.h (HARD_REGNO_MODE_OK): Remove duplicated comment.
17241         (SECONDARY_RELOAD_CLASS): Define.
17242         (PREFERRED_RELOAD_CLASS): Use m68k_preferred_reload_class.
17243         (LIMIT_RELOAD_CLASS): Delete.
17244         * config/m68k/m68k.c (m68k_regno_mode_ok): Don't prevent address
17245         registers from storing bytes.
17246         (m68k_secondary_reload_class): New function.
17247         (m68k_preferred_reload_class): Likewise.
17248
17249 2007-03-06  Richard Sandiford  <richard@codesourcery.com>
17250
17251         * config/m68k/m68k.c (m68k_save_reg): Remove special case for
17252         leaf functions.
17253         (m68k_expand_prologue): Likewise.
17254
17255 2007-03-06  Richard Sandiford  <richard@codesourcery.com>
17256
17257         * config/m68k/m68k-protos.h (output_sibcall): Declare.
17258         (mips_expand_epilogue): Add a bool parameter.
17259         (m68k_legitimize_sibcall_address): Declare.
17260         * config/m68k/m68k.c (TARGET_FUNCTION_OK_FOR_SIBCALL): Define.
17261         (m68k_expand_epilogue): Add a parameter to select between sibling
17262         and normal epilogues.  Only generate a return for the latter.
17263         (m68k_ok_for_sibcall_p): New function.
17264         (m68k_legitimize_sibcall_address, output_sibcall): New functions.
17265         * config/m68k/m68k.md (sibcall, *sibcall): New patterns.
17266         (sibcall_value, *sibcall_value): Likewise.
17267         (*call, *call_value): Require !SIBLING_CALL_P.
17268         (epilogue): Update call to m68k_expand_epilogue.
17269         (sibcall_epilogue): New pattern.
17270         * config/m68k/predicates.md (const_call_operand): Say that this
17271         predicate applies to sibling calls too.
17272         (sibcall_operand): New predicate.
17273
17274 2007-03-06  Richard Sandiford  <richard@codesourcery.com>
17275
17276         * config/m68k/m68k.md (movsf_cf_soft): Provide the same non-mov3q
17277         alternatives as movsi_cf.
17278         (movsf_cf_hard): Add commentary.
17279
17280 2007-03-06  Kazu Hirata  <kazu@codesourcery.com>
17281             Richard Sandiford  <richard@codesourcery.com>
17282
17283         * config/m68k/m68k-protos.h (m68k_interrupt_function_p): Declare.
17284         (m68k_movem_pattern_p, m68k_output_movem): Likewise.
17285         (m68k_expand_prologue, m68k_expand_epilogue): Likewise.
17286         * config/m68k/m68k.h (EPILOGUE_USES): Define.  Treat all registers
17287         as being live on exit from an interrupt function.
17288         (PRINT_OPERAND_PUNCT_VALID_P): Return true for '?'.
17289         * config/m68k/m68k.c (MIN_MOVEM_REGS, MIN_FMOVEM_REGS): New macros.
17290         (m68k_frame): Remove reg_rev_mask and fpu_rev_mask.
17291         (TARGET_ASM_FUNCTION_PROLOGUE, TARGET_ASM_FUNCTION_EPILOGUE): Delete.
17292         (m68k_interrupt_function_p): Globalize.
17293         (m68k_compute_frame_layout): Remove reverse mask code.
17294         (m68k_emit_movem, m68k_set_frame_related): New functions.
17295         (m68k_output_function_prologue): Delete in favor of...
17296         (m68k_expand_prologue): ...this new function.
17297         (m68k_output_function_epilogue): Delete in favor of...
17298         (m68k_expand_epilogue): ...this new function.
17299         (m68k_split_offset, m68k_movem_pattern_p, m68k_output_movem): New
17300         functions.
17301         (print_operand): Handle %?.
17302         * config/m68k/m68k.md (UNSPEC_SIN, UNSPEC_COS): Remove excess space.
17303         (UNSPEC_GOT, A1_REG, PIC_REG, FP0_REG): New constants.
17304         (prologue, epilogue): New patterns.
17305         (return): Turn into a define_expand.
17306         (*return): New pattern, derived from old "return" pattern.  Use rte
17307         rather than rts for interrupt functions.  Only use rtd if the pop
17308         count is nonzero.
17309         (*m68k_store_multiple, *m68k_store_multiple_automod): New patterns.
17310         (*m68k_load_multiple, *m68k_load_multiple_automod): Likewise.
17311         (link, *link, unlink, *unlink, load_got): Likewise.
17312
17313 2007-03-06  Richard Sandiford  <richard@codesourcery.com>
17314
17315         PR target/23482
17316         PR target/17114
17317         * config/m68k/m68k-protos.h (m68k_legitimate_base_reg_p): Declare.
17318         (m68k_legitimate_index_reg_p, m68k_legitimate_address_p): Likewise.
17319         (m68k_matches_q_p, m68k_matches_u_p): Likewise.
17320         * config/m68k/m68k.h (EXTRA_CONSTRAINT): Use m68k_matches_q_p
17321         and m68k_matches_u_p.
17322         (PCREL_GENERAL_OPERAND_OK, LEGITIMATE_BASE_REG_P): Delete.
17323         (INDIRECTABLE_1_ADDRESS_P, GO_IF_NONINDEXED_ADDRESS): Delete.
17324         (GO_IF_INDEXABLE_BASE, GO_IF_INDEXING, GO_IF_INDEXED_ADDRESS): Delete.
17325         (LEGITIMATE_INDEX_REG_P, LEGITIMATE_INDEX_P): Delete.
17326         (GO_IF_COLDFIRE_FPU_LEGITIMATE_ADDRESS): Delete.
17327         (REG_STRICT_P): New macro.
17328         (LEGITIMATE_PIC_OPERAND_P): Use REG_STRICT_P rather than
17329         PCREL_GENERAL_OPERAND_OK.
17330         (REG_OK_FOR_BASE_P): Merge definitions.  Use REG_STRICT_P and
17331         m68k_legitimate_base_reg_p.
17332         (REG_MODE_OK_FOR_INDEX_P): Likewise m68k_legitimate_index_reg_p.
17333         (GO_IF_LEGITIMATE_ADDRESS): Likewise m68k_legitimate_address_p.
17334         (PIC_CASE_VECTOR_ADDRESS): Update comment.
17335         * config/m68k/m68k.c (m68k_address): New structure.
17336         (m68k_legitimate_base_reg_p, m68k_legitimate_index_reg_p)
17337         (m68k_decompose_index, m68k_legitimate_constant_address_p)
17338         (m68k_jump_table_ref_p, m68k_decompose_address)
17339         (m68k_legitimate_address_p, m68k_legitimate_mem_p, m68k_matches_q_p)
17340         (m68k_matches_u_p): New functions.
17341         (print_operand_address): Rewrite to use m68k_decompose_index.
17342
17343 2007-03-05  David Taylor  <dtaylor@emc.com>
17344
17345         * gcc.c: Correct copyright date in --version output.
17346
17347 2007-03-05  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
17348
17349         * pa.md: In unamed move patterns, disparge copies between general
17350         and floating point registers using '?' modifier.  Don't include 'f'
17351         constraint for register preferences in DImode, SImode, HImode and
17352         QImode patterns.  Likewise for 'r' in DFmode and SFmode patterns.
17353         Remove constraints for copies between general and floating registers
17354         in soft-float DFmode pattern.
17355         (movdf): Fail if operand1 is a CONST_DOUBLE and operand0 is a hard
17356         floating register.
17357         (movsf): Likewise.
17358
17359 2007-03-05  Mike Stump  <mrs@apple.com>
17360
17361         * c-common.c (targetcm): Add.
17362         * c-opts.c (c_common_handle_option): Handle language specific
17363         target options.
17364         * opts.c (handle_option): Verify language for target options, if
17365         any are given.
17366         * opth-gen.awk: Add CL_LANG_ALL.
17367         * target-def.h (TARGET_HANDLE_C_OPTION): Add.
17368         (TARGETCM_INITIALIZER): Add.
17369         * target.h (struct gcc_targetcm): Add.
17370         (targetcm): Add.
17371         * targhooks.c (default_handle_c_option): Add.
17372         * targhooks.h (default_handle_c_option): Add.
17373         * doc/tm.texi (TARGET_HANDLE_C_OPTION): Add.
17374
17375         * config/darwin.opt (iframework): Add.
17376         * config/darwin.h (TARGET_HAS_TARGETCM): Add.
17377         * config/darwin-c.c (handle_c_option): Add.
17378         (TARGET_HANDLE_C_OPTION): Add.
17379         (targetcm): Add.
17380         * doc/invoke.texi (Darwin Options): Add -iframework.
17381
17382 2007-03-05  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
17383
17384         * convert.c (convert_to_integer): Fix nearbyint/rint -> *lrint
17385         conversion.
17386
17387 2007-03-05  Ian Lance Taylor  <iant@google.com>
17388
17389         * c.opt (fgnu89-inline): New option.
17390         * c-opts.c (c_common_post_options): Set default value for
17391         flag_gnu89_inline.
17392         * c-decl.c (WANT_C99_INLINE_SEMANTICS): Remove.
17393         (pop_scope): Check flag_gnu89_inline rather than flag_isoc99 for
17394         inline functions.
17395         (diagnose_mismatched_decls, merge_decls, start_decl): Likewise.
17396         (grokdeclarator, start_function): Likewise.
17397         * c-cppbuiltin.c (c_cpp_builtins): Define either
17398         __GNUC_GNU_INLINE__ or __GNUC_STDC_INLINE__.
17399         * doc/invoke.texi (Option Summary): Mention -fgnu89-inline.
17400         (C Dialect Options): Document -fgnu89-inline.
17401         * doc/extend.texi (Function Attributes): Explain what the
17402         gnu_inline attribute does.
17403         * doc/cpp.texi (Common Predefined Macros): Document
17404         __GNUC_GNU_INLINE__ and __GNUC_STDC_INLINE__.
17405
17406 2007-03-05  Ian Lance Taylor  <iant@google.com>
17407
17408         PR tree-optimization/31034
17409         * tree-vrp.c (extract_range_from_assert): Don't try to handle a
17410         half-range if the other side is an overflow infinity.
17411
17412 2007-03-05  Bernd Schmidt  <bernd.schmidt@analog.com>
17413
17414         * config.gcc (bfin*-uclinux*): Use t-bfin-uclinux.
17415         (bfin*-linux-uclibc*): New configuration.
17416         * config/linux.h (LINK_GCC_C_SEQUENCE_SPEC): Undefined before
17417         defining.
17418         * config/bfin/linux.h: New file.
17419         * config/bfin/libgcc-bfin.ver: New file.
17420         * config/bfin/t-bfin-uclinux: New file.
17421         * config/bfin/t-bfin-linux: New file.
17422         * config/bfin/uclinux.h (LINUX_TARGET_OS_CPP_BUILTINS): New macro.
17423         (TARGET_OS_CPP_BUILTINS): New macro.
17424
17425 2007-03-05  Richard Guenther  <rguenther@suse.de>
17426
17427         * fold-const.c (fold_binary): Remove duplicate folding
17428         of comparison of non-null ADDR_EXPR against null.
17429
17430 2007-03-05  Richard Guenther  <rguenther@suse.de>
17431             Dorit Nuzman  <dorit@il.ibm.com>
17432
17433         PR tree-optimization/26420
17434         * tree-vectorizer.c (vectorize_loops): Bail out early if there
17435         are no loops in the function.  Only print the number of
17436         vectorized loops if it is greater than zero or we are supposed
17437         to print information about unvectorized loops.
17438
17439 2007-03-05  Revital Eres  <eres@il.ibm.com>
17440
17441         * gcc.dg/var-expand1.c: New test.
17442         * loop-unroll.c (analyze_insn_to_expand_var): Add dump info
17443         when an accumulator is expanded.
17444
17445 2007-03-04  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
17446
17447         PR other/30465
17448         * c-common.c (convert_and_check): Don't give warnings for
17449         conversion if 'expr' already overflowed.
17450
17451 2007-03-04  Roger Sayle  <roger@eyesopen.com>
17452
17453         PR middle-end/30744
17454         * fold-const.c (fold_comparison): Enforce type consistency when
17455         transforming ~X op ~Y to Y op X, and ~X op C to X op' ~C.
17456
17457 2007-03-04  Zdenek Dvorak  <dvorakz@suse.cz>
17458
17459         * tree-ssa-address.c (create_mem_ref): Do not put an expression
17460         containing a cast to the base of TARGET_MEM_REF.
17461
17462 2007-03-04  Martin Michlmayr  <tbm@cyrius.com>
17463
17464         * tree.c (tree_contains_struct_check_failed): Remove spurious
17465         whitespace from error message.
17466
17467 2007-03-04 Andrew Pinski <andrew_pinski@playstation.sony.com>
17468
17469         PR target/30406
17470         * config/rs6000/rs6000.c (rs6000_function_value): Look at bit size
17471         instead of precision.
17472
17473 2007-03-04  Roman Zippel <zippel@linux-m68k.org>
17474             Nathan Sidwell  <nathan@codesourcery.com>
17475
17476         * emit-rtl.c (find_auto_inc): New.
17477         (try_split): recreate REG_INC notes,
17478         Use regular for loops rather than whiles.
17479
17480 2007-03-03  Andreas Schwab  <schwab@suse.de>
17481
17482         * configure.ac (HAVE_AS_REL16): Move test back to correct place.
17483         * configure: Regenerate.
17484
17485 2007-03-03  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
17486
17487         * builtins.def (ATTR_MATHFN_FPROUNDING): Rely on
17488         flag_rounding_math, not flag_unsafe_math_optimizations.
17489
17490         * c-pretty-print.c (pp_c_direct_abstract_declarator): Use
17491         fold_build2.
17492         * config/alpha/alpha.c (alpha_fold_builtin_zapnot,
17493         alpha_fold_vector_minmax): Likewise.
17494         * config/i386/i386.c (ix86_gimplify_va_arg): Likewise.
17495         * config/sparc/sparc.c (sparc_gimplify_va_arg): Likewise.
17496
17497 2007-03-02  Eric Botcazou  <ebotcazou@adacore.com>
17498
17499         * tree-sra.c (sra_walk_fns) <ldst>: Document new restriction.
17500         (sra_walk_modify_expr) <rhs_elt>: Treat the reference as a use
17501         if the lhs has side-effects.
17502         <lhs_elt>: Treat the reference as a use if the rhs has side-effects.
17503
17504 2007-03-02  Uros Bizjak  <ubizjak@gmail.com>
17505
17506         * config/i386/i386.h (TUNEMASK): Remove define.
17507         (ARCHMASK): Remove define.
17508         (TARGET_*): Use ix86_tune_mask variable instead of TUNEMASK.
17509          Use ix86_arch_mask variable instead of ARCHMASK.
17510         * config/i386/i386.c (override_options): Ditto.
17511         (standard_80387_constant_p): Ditto.
17512
17513 2007-03-02  Ian Lance Taylor  <iant@google.com>
17514
17515         Used signed infinities in VRP.
17516         * tree-vrp.c (uses_overflow_infinity): New static function.
17517         (supports_overflow_infinity): New static function.
17518         (make_overflow_infinity): New static function.
17519         (negative_overflow_infinity): New static function.
17520         (positive_overflow_infinity): New static function.
17521         (is_negative_overflow_infinity): New static function.
17522         (is_positive_overflow_infinity): New static function.
17523         (is_overflow_infinity): New static function.
17524         (overflow_infinity_range_p): New static function.
17525         (compare_values_warnv): New function split out of compare_values.
17526         (compare_value): Call it.
17527         (set_value_range_to_nonnegative): Add overflow_infinity
17528         parameter.  Change caller.
17529         (vrp_expr_computes_nonnegative): Add strict_overflow_p parameter.
17530         Change callers.
17531         (vrp_expr_computes_nonzero): Likewise.
17532         (compare_ranges, compare_range_with_value): Likewise.
17533         (compare_name_with_value, compare_names): Likewise.
17534         (vrp_evaluate_conditional): Likewise.
17535         (set_value_range): Handle infinity
17536         (vrp_operand_equal_p, operand_less_p): Likewise.
17537         (extract_range_from_assert): Likewise.
17538         (vrp_int_const_binop): Likewise.
17539         (extract_range_from_binary_expr): Likewise.
17540         (extract_range_from_unary_expr): Likewise.
17541         (extract_range_from_comparison): Likewise.
17542         (extract_range_from_expr): Likewise.
17543         (dump_value_range): Likewise.
17544         (vrp_visit_cond_stmt, vrp_visit_phi_node): Likewise.
17545         (test_for_singularity): Likewise.
17546         (vrp_int_const_binop): Remove inline qualifier.
17547         (adjust_range_with_scev): Add comment.
17548         * tree-flow.h (vrp_evaluate_conditional): Update declaration.
17549
17550 2007-03-02  Diego Novillo  <dnovillo@redhat.com>
17551
17552         * tree-ssa-structalias.c (could_have_pointers): Tidy.
17553         (get_constraint_for): Likewise.
17554         (do_structure_copy): Likewise.
17555         (find_func_aliases): Fix references to MODIFY_EXPR.
17556         (intra_create_variable_infos): Tidy.
17557         * tree-ssa-operands.c (add_virtual_operand): Add argument
17558         IS_CALL_SITE.
17559         When adding members of alias sets, if IS_CALL_SITE is true and
17560         the symbol is not call-clobbered, skip it.
17561         Adjust all callers.
17562
17563 2007-03-02  Eric Botcazou  <ebotcazou@adacore.com>
17564
17565         * config/alpha/alpha.c (alpha_gp_save_rtx): Insert the insns at the
17566         entry by means of emit_insn_at_entry.
17567
17568 2007-03-02  Richard Henderson  <rth@redhat.com>
17569
17570         * expr.h (promoted_input_arg): Remove decl.
17571         * function.c (promoted_input_arg): Merge into ...
17572         * combine.c (setup_incoming_promotions): ... only caller.
17573         Rearrange to avoid double loop.
17574
17575 2007-03-02  Ben Elliston  <bje@au.ibm.com>
17576             Peter Bergner  <bergner@vnet.ibm.com>
17577             Janis Johnson  <janis187@us.ibm.com>
17578
17579         * config/rs6000/dfp.md: New file.
17580         * config/rs6000/rs6000.md: Include dfp.md.
17581         (add<mode>3_internal1): Disable for DECIMAL_FLOAT_MODE_P operands.
17582         * config/rs6000/rs6000.c (rs6000_hard_regno_mode_ok): Handle DDmode
17583         and TDmode decimal float modes in FP registers.
17584         (num_insns_constant): Likewise.
17585         (rs6000_legitimate_offset_address_p): Likewise.
17586         (rs6000_legitimize_address): Likewise.
17587         (rs6000_legitimize_reload_address): Likewise.
17588         (rs6000_legitimate_address): Likewise.
17589         (rs6000_emit_move): Likewise.
17590         (function_arg_boundary): Likewise.
17591         (function_arg_advance): Likewise.
17592         (rs6000_darwin64_record_arg_recurse): Likewise.
17593         (function_arg): Likewise.
17594         (rs6000_gimplify_va_arg): Likewise.
17595         (rs6000_split_multireg_move): Likewise.
17596         (rs6000_output_function_epilogue): Likewise.
17597         (rs6000_output_function_epilogue): Likewise.
17598         (rs6000_register_move_cost): Likewise.
17599         (rs6000_function_value): Likewise.
17600         (rs6000_libcall_value): Likewise.
17601
17602 2007-03-02  Richard Sandiford  <richard@codesourcery.com>
17603
17604         * config/t-vxworks (LIMITS_H_TEST): Define to true for VxWorks.
17605
17606 2007-03-02  Richard Sandiford  <richard@codesourcery.com>
17607
17608         * config/t-vxworks (LIBGCC2_INCLUDES): Pass -nostdinc.
17609         Use $MULTIDIR to choose between the kernel and RTP headers,
17610         and use $WIND_BASE and $WIND_USR to locate them.
17611
17612 2007-03-02  Uros Bizjak  <ubizjak@gmail.com>
17613
17614         * config/i386/i386.c (override_options): Put initialization of
17615         ix86_tune_mask and ix86_arch_mask to the correct place.
17616
17617 2007-03-02  Uros Bizjak  <ubizjak@gmail.com>
17618             Michael Meissner  <michael.meissner@amd.com>
17619
17620         PR target/31019
17621         * config/i386/i386.h (TUNEMASK): Redefine to use ix86_tune_mask.
17622         (ARCHMASK): Define.
17623         (TARGET_CMOVE): Use ARCHMASK.
17624         (TARGET_CMPXCHG): Ditto.
17625         (TARGET_CMPXCHG8B): Ditto.
17626         (TARGET_XADD): Ditto.
17627         (TARGET_BSWAP): Ditto.
17628         * config/i386/i386.c (ix86_tune_mask): New global variable.
17629         (ix86_arch_mask): Ditto.
17630         (override_options): Initialize ix86_tune_mask and
17631         ix86_arch_mask. Use ARCHMASK to clear MASK_NO_FANCY_MATH_387 in
17632         target_flags.
17633
17634 2007-03-02  Ben Elliston  <bje@au.ibm.com>
17635
17636         PR 30992
17637         * config/dfp-bit.c (DFP_TO_INT): Initialise qval with "1.".
17638
17639 2007-03-02  Joseph Myers  <joseph@codesourcery.com>
17640
17641         * target.h (init_dwarf_reg_sizes_extra): New target hook.
17642         * target-def.h (TARGET_INIT_DWARF_REG_SIZES_EXTRA): New default.
17643         * doc/tm.texi (TARGET_INIT_DWARF_REG_SIZES_EXTRA): Document.
17644         * dwarf2out.c (expand_builtin_init_dwarf_reg_sizes): Call this
17645         hook.
17646         * config/rs6000/rs6000.c (TARGET_INIT_DWARF_REG_SIZES_EXTRA,
17647         rs6000_init_dwarf_reg_sizes_extra): New.
17648         * config/rs6000/linux-unwind.h (ppc_fallback_frame_state): Support
17649         SPE register high parts.
17650
17651 2007-03-01  Brooks Moses  <brooks.moses@codesourcery.com>
17652
17653         * Makefile.in: Add install-pdf target as
17654         copied from automake v1.10 rules.
17655         * configure.ac: Add install-pdf to target list.
17656         * configure: Regenerate.
17657
17658 2007-03-01  Paul Brook  <paul@codesourcery.com>
17659
17660         * config/arm/arm.c (arm_legitimate_index_p): Limit iWMMXt addressing
17661         modes to LDRD for DImode.
17662         (output_move_double): Fixup out of range ldrd/strd.
17663         (vfp_secondary_reload_class): Rename...
17664         (coproc_secondary_reload_class): ... to this.  Add wb argument.
17665         * config/arm/arm.h (SECONDARY_OUTPUT_RELOAD_CLASS): Use
17666         coproc_secondary_reload_class for CLASS_IWMMXT.
17667         (SECONDARY_INPUT_RELOAD_CLASS): Ditto.
17668         * arm-protos.h (coproc_secondary_reload_class): Update prototype.
17669
17670 2007-03-01  Zdenek Dvorak  <dvorakz@suse.cz>
17671
17672         * tree-ssa-loop-prefetch.c (determine_unroll_factor):  Bound the
17673         unroll factor by the estimated number of iterations.
17674         (loop_prefetch_arrays): Do not prefetch in loops that iterate less
17675         than prefetch latency.
17676
17677         * config/i386/driver-i386.c (describe_cache, detect_caches_amd,
17678         decode_caches_intel, detect_caches_intel): New functions.
17679         (host_detect_local_cpu): Use detect_caches_amd and
17680         detect_caches_intel.
17681
17682 2007-03-01  Richard Henderson  <rth@redhat.com>
17683
17684         * expr.c (emit_move_complex_push): Export.
17685         (emit_move_complex_parts): Split out from ...
17686         (emit_move_complex): ... here.
17687         * expr.h (emit_move_complex_push, emit_move_complex_parts): Declare.
17688         * config/i386/i386.md (movcdi): New.
17689
17690 2007-03-01  Uros Bizjak  <ubizjak@gmail.com>
17691
17692         * config/i386/i386.c (ix86_modes_tieable_p): Fix typo, use also
17693         size of mode1 to check for tieable modes in MMX case.
17694
17695 2007-03-01  Richard Sandiford  <richard@codesourcery.com>
17696
17697         * Makefile.in (rtlanal.o): Depend on tree.h.
17698         * rtl.h (offset_within_section_p, split_const): Declare.
17699         * rtlanal.c: Include tree.h.
17700         (offset_within_block_p): New function, taken from
17701         mips_offset_within_object_p.
17702         (split_const): New function, taken from mips_split_const.
17703         * config/m68k/m68k-protos.h (m68k_illegitimate_symbolic_constant_p):
17704         Declare.
17705         * config/m68k/m68k.h (M68K_OFFSETS_MUST_BE_WITHIN_SECTIONS_P): Define.
17706         (CONSTANT_ADDRESS_P): Only accept legitimate constants.
17707         (LEGITIMATE_CONSTANT_P): Check m68k_illegitimate_symbolic_constant_p.
17708         * config/m68k/m68k.c (TARGET_CANNOT_FORCE_CONST_MEM): Define.
17709         (m68k_illegitimate_symbolic_constant_p): New function.
17710         * config/m68k/m68k.md (movsi): Remove misleading predicates.
17711         If M68K_OFFSETS_MUST_BE_WITHIN_SECTIONS_P and the source is a
17712         symbolic constant that might be outside the symbol's section,
17713         move the symbol first and then add the offset.
17714         * config/m68k/uclinux.h (M68K_OFFSETS_MUST_BE_WITHIN_SECTIONS_P):
17715         Override.
17716         * config/mips/mips.c (mips_split_const): Delete.
17717         (mips_offset_within_object_p): Delete.
17718         (mips_symbolic_constant_p): Use offset_within_section_p and
17719         split_const instead of mips_offset_within_object_p and
17720         mips_split_const.
17721         (mips_cannot_force_const_mem, mips_const_insns, mips_unspec_address)
17722         (mips_legitimize_const_move, print_operand_reloc)
17723         (mips_dangerous_for_la25_p): Use split_const instead of
17724         mips_split_const.
17725
17726 2007-02-28  Eric Christopher  <echristo@apple.com>
17727
17728         * Makefile.in (install-include-dir): Don't rm -rf include.
17729
17730 2007-02-28  Richard Guenther  <rguenther@suse.de>
17731
17732         PR middle-end/30364
17733         * fold-const.c (fold_binary): Do not associate expressions
17734         with more than one variable for integer types that do not wrap.
17735
17736 2007-02-28  Sandra Loosemore  <sandra@codesourcery.com>
17737
17738         * builtins.c (fold_builtin_call_list, fold_builtin_call_valist):
17739         Delete, and replace with...
17740         (fold_builtin_call_array): This.  Update callers to use it.
17741         * fold-const.c (fold_build_call_list): Delete, and replace with...
17742         (fold_build_call_array): This.
17743         (fold_build_call_list_initializer): Delete, and replace with...
17744         (fold_build_call_array_initializer): This.
17745         * tree.h: Update declarations to reflect above changes.
17746
17747         * c-typeck.c (build_function_call): Store converted arguments
17748         in a stack-allocated array instead of building a list.
17749         (convert_arguments): Store arguments in the array passed in as an
17750         argument, and return the actual number of arguments.
17751         * c-format.c: (check_function_format): Pass arguments in an
17752         array instead of a list.
17753         * c-common.c (check_function_nonnull): Likewise.
17754         (check_function_sentinel): Likewise.
17755         (check_function_arguments): Likewise.
17756         * c-common.h: Update declarations to reflect above changes.
17757
17758 2007-02-28  Jan Hubicka  <jh@suse.cz>
17759
17760         * predict.def (PRED_TREE_EARLY_RETURN, PRED_CONST_RETURN,
17761         PRED_NEGATIVE_RETURN): Update outcomes.
17762
17763 2007-02-28  Bernd Schmidt  <bernd.schmidt@analog.com>
17764
17765         * calls.c (emit_library_call_value_1): Handle partial registers
17766         correctly when building up CALL_INSN_FUNCTION_USAGE.
17767
17768 2007-02-27  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
17769
17770         * pa/predicates.md (move_src_operand): Allow zero for mode.
17771         * pa/pa.md: Fix constraints for zero CONST_DOUBLE in 64-bit DFmode
17772         move pattern.
17773
17774 2007-02-27  Uros Bizjak  <ubizjak@gmail.com>
17775
17776         PR target/30970
17777         * config/i386/sse.md (*mov<mode>_internal, *movv4sf_internal,
17778         *movv2df_internal): Enable pattern only for valid operand
17779         combinations.
17780         * config/i386/i386.c (ix86_modes_tieable_p): For SSE registers,
17781         tie only 128bit modes. For MMX registers, tie only 64bit modes.
17782
17783 2007-02-27  Mike Stump  <mrs@apple.com>
17784
17785         * config/darwin-crt3.c: Avoid compilation when compiling for a
17786         kext multilib.
17787
17788 2007-02-27  Joseph Myers  <joseph@codesourcery.com>
17789
17790         * Makefile.in (PREPROCESSOR_DEFINES, test-protoize-simple): Define
17791         FIXED_INCLUDE_DIR.
17792         (stmp-int-hdrs, stmp-fixinc, install-headers): Use include-fixed
17793         for fixed headers and limits.h.
17794         (install-include-dir, install-headers-tar, install-headers-cpio,
17795         install-headers-cp, real-install-headers-tar,
17796         real-install-headers-cpio, real-install-headers-cp): Handle
17797         include-fixed as well as include.
17798         (install-mkheaders): Don't install files that go only in include
17799         not include-fixed.
17800         * cppdefault.c (cpp_include_defaults): Separate FIXED_INCLUDE_DIR
17801         from GCC_INCLUDE_DIR.
17802         * gcc.c (process_command): Remove special -BstageN/ handling.
17803         (do_spec_1): Add include-fixed directories.
17804
17805 2007-02-27  Bernd Schmidt  <bernd.schmidt@analog.com>
17806
17807         * config/bfin/t-bfin-elf (LIB1ASMFUNCS): Add _umulsi3_highpart and
17808         _smulsi3_highpart.
17809         * config/bfin/lib1funcs.asm (___umulsi3_highpart, ___smulsi3_highpart):
17810         New functions.
17811         * config/bfin/bfin.md (smulsi3_highpart, umulsi3_highpart): New
17812         patterns.
17813
17814 2007-02-27  Mark Mitchell  <mark@codesourcery.com>
17815
17816         * c-common.c (get_priority): Add check for
17817         SUPPORTS_INIT_PRIORITY.
17818
17819 2007-02-27  Bernd Schmidt  <bernd.schmidt@analog.com>
17820
17821         * config/bfin/bfin.md (doloop_end): FAIL if counter reg isn't SImode.
17822
17823         * config/bfin/bfin.c: Include "cfglayout.h".
17824         (MAX_LSETUP_DISTANCE): New macro.
17825         (struct loop_info): New members incoming, incoming_src and
17826         incoming_dest.  Delete member predecessor.
17827         (length_for_loop): New function.
17828         (bfin_optimize_loop): Handle more different loop structures.
17829         (bfin_discover_loop): Rework detection of predecessor blocks by
17830         examining incoming edges.
17831         (bfin_discover_loops, bfin_free_loops): New functions, broken out of
17832         bfin_reorg_loops.
17833         (bfin_reorder_loops): New function.
17834         (bfin_reorg_loops): Use these three new functions.
17835
17836         * config/bfin/bfin.h (enum reg_class, REG_CLASS_NAMES,
17837         REG_CLASS_CONTENTS): Add D0REGS through D7REGS.
17838         (CONSTRAINT_LEN): Add entry for 'q'.
17839         (REG_CLASS_FROM_CONSTRAINT): Renamed from REG_CLASS_FROM_LETTER.
17840         Add 'q' constraints.
17841         (REGNO_REG_CLASS): For R0 through R7, return corresponding regclass.
17842         (CLASS_LIKELY_SPILLED_P): True for R0, R1 and R2.
17843
17844         * config/bfin/bfin.md (add_with_carry): New pattern.
17845         (s_or_u, su_optab, su_modifier): New code macros/attrs.
17846         (<su_optab>hisi_ll, <su_optab>hisi_lh, <su_optab>hisi_hl,
17847         <su_optab>hisi_hh): Renamed from mulhisi_xx patterns; macroized to
17848         support unsigned multiplies too.  Removed incorrect commutativity from
17849         operand 1 constraint where appropriate.
17850         (usmulhisi_ull, usmulhisi_ulh, usmulhisi_uhl, usmulhisi_uhh): New
17851         patterns.
17852         (<su_optab>hisi_ll_lh, <su_optab>hisi_ll_hl, <su_optab>hisi_ll_hh,
17853         <su_optab>hisi_lh_hl, <su_optab>hisi_lh_hh, <su_optab>hisi_hl_hh):
17854         New patterns.
17855         (usmulhisi_ll_lul, usmulhisi_ll_luh, usmulhisi_ll_hul,
17856         usmulhisi_ll_huh, usmulhisi_lh_lul, usmulhisi_lh_luh, usmulhisi_lh_hul,
17857         usmulhisi_lh_huh, usmulhisi_hl_lul, usmulhisi_hl_luh, usmulhisi_hl_hul,
17858         usmulhisi_hl_huh, usmulhisi_hh_lul, usmulhisi_hh_luh, usmulhisi_hh_hul,
17859         usmulhisi_hh_huh): New patterns.
17860
17861         * config/bfin/bfin.md (ssashiftv2hi3, ssashifthi3, lshiftv2hi3,
17862         lshifthi3): Fix output template to use half reg for operand 2.
17863
17864         * config/bfin/bfin.c (bfin_output_mi_thunk): Use R3 as scratch reg
17865         instead of R2.
17866
17867         * config/bfin/bfin.md (rotl16, rotlsi3, rotrsi3): New patterns.
17868
17869 2007-02-27  Andreas Schwab  <schwab@suse.de>
17870
17871         * Makefile.in (TEXI_GCCINSTALL_FILES): Add gcc-common.texi.
17872
17873 2007-02-27  Jan Hubicka  <jh@suse.cz>
17874
17875         * predict.c (last_basic_block_p): Remove.
17876         (tree_estimate_probability): Update return heuristic for commonized
17877         return blocks.
17878
17879 2007-02-26  Brooks Moses  <brooks.moses@codesourcery.com>
17880
17881         * Makefile.in (TEXI_GCCINSTALL_FILES): Add gcc-vers.texi dependency.
17882
17883 2007-02-26  Brooks Moses  <brooks.moses@codesourcery.com>
17884
17885         * doc/include/gcc-common.texi (versionsubtitle): New macro.
17886         * doc/cpp.texi: Standardize title page.
17887         * doc/cppinternals.texi: Likewise.
17888         * doc/gcc.texi: Standardize title page, remove version number
17889         from copyright page.
17890         * doc/gccint.texi: Likewise.
17891         * doc/install.texi: Standardize title page, add table of
17892         contents.
17893
17894 2007-02-26  Jan Hubicka  <jh@suse.cz>
17895
17896         * predict.def: Set outcomes according to more recent results.
17897         (PRED_LOOP_CONDITION, PRED_LOOP_PRECONDITIONING, PRED_LOOP_HEADER):
17898         Remove dead predictors.
17899         * predict.c (return_prediction): Fix pasto.
17900
17901 2007-02-27  Bernd Schmidt  <bernd.schmidt@analog.com>
17902
17903         * loop-iv.c (simplify_using_initial_values): Fix oversight in previous
17904         change; avoid a memory leak when returning early.
17905
17906 2007-02-26  Mark Mitchell  <mark@codesourcery.com>
17907
17908         * c-decl.c (static_ctors): Move to c-common.c.
17909         (static_dtors): Likewise.
17910         (finish_function): Use c_record_cdtor_fn.
17911         (build_cdtor): Move to c-common.c.
17912         (c_write_global_declarations): Use c_build_cdtor_fns.
17913         * c-common.h (static_ctors): Declare.
17914         (static_dtors): Likewise.
17915         (c_record_cdtor_fn): Likewise.
17916         (c_build_cdtor_fns): Likewise.
17917         * c-common.c (static_ctors): New variable.
17918         (static_dtors): Likewise.
17919         (c_record_cdtor_fn): New function.
17920         (build_cdtor): Move from c-decl.c
17921         (c_build_cdtor_fns): New function.
17922
17923         * output.h (assemble_addr_to_section): Declare.
17924         (get_cdtor_priority_section): Likewise.
17925         * varasm.c (assemble_addr_to_section): New function.
17926         (get_cdtor_priority_section): Likewise.
17927         (default_named_section_asm_out_destructor): Use them.
17928         (destor_dtor_section_asm_out_destructor): Likewise.
17929         (default_named_section_asm_out_constructor): Likewise.
17930         (default_ctor_section_asm_out_constructor): Likewise.
17931         * config.gcc (*-*-vxworks*): Include vxworks.o.
17932         * config/t-vxworks (vxworks.o): New target.
17933         * config/vxworks.h (ALWAYS_NUMBER_CTORS_SECTIONS): Remove.
17934         (TARGET_ASM_CONSTRUCTOR): Define.
17935         (TARGET_ASM_DESTRUCTOR): Likewise.
17936         (vxworks_asm_out_constructor): Declare.
17937         (vxworks_asm_out_destructor): Likewise.
17938
17939         * c-common.c (get_priority): Check that we have not just an
17940         INTEGER_CST, but an integer constant with integeral type.
17941
17942 2007-02-25  Uros Bizjak  <ubizjak@gmail.com>
17943
17944         PR tree-optimization/30938
17945         * tree-vect-transform.c (vectorizable_call): Fix off-by-one error:
17946         use &dt[nargs-1] instead of &dt[nargs] in the call to
17947         vect_is_simple_use().
17948
17949 2007-02-25  Ulrich Weigand  <uweigand@de.ibm.com>
17950
17951         * reload.c (find_reloads_address_1): Handle PLUS expressions resulting
17952         from register elimination as PRE_MODIFY / POST_MODIFY increments.
17953         Do not attempt to handle MEM inside auto-inc expressions.
17954         * reload1.c (eliminate_regs_1): Do not attempt to handle elimination
17955         of a register modified by an auto-inc expression.  However, do handle
17956         elimination of a register used as PRE_MODIFY / POST_MODIFY increment.
17957         (elimination_effects): Prohibit elimination of a register modified
17958         by an auto-inc expression.  Disable register elimination rules whose
17959         target register is modified by an auto-inc expression with variable
17960         increment.
17961
17962 2007-02-25  Zdenek Dvorak  <dvorakz@suse.cz>
17963
17964         * tree-ssa-loop-niter.c (compute_estimated_nb_iterations): Fix
17965         off-by-one error.
17966         (array_at_struct_end_p): New function.
17967         (idx_infer_loop_bounds): Use it.
17968         (estimate_numbers_of_iterations_loop): Export.
17969         * predict.c (predict_loops): Use estimated_loop_iterations_int.
17970         Do not use PRED_LOOP_EXIT on exits predicted by # of iterations.
17971         (tree_estimate_probability): Call record_loop_exits.
17972         * tree-data-ref.c (get_number_of_iters_for_loop): Replaced by ...
17973         (estimated_loop_iterations, estimated_loop_iterations_int,
17974         estimated_loop_iterations_tree): New functions.
17975         (analyze_siv_subscript_cst_affine,
17976         compute_overlap_steps_for_affine_1_2,
17977         analyze_subscript_affine_affine): Use estimated_loop_iterations_int.
17978         (analyze_miv_subscript): Use estimated_loop_iterations_tree.
17979         * predict.def (PRED_LOOP_ITERATIONS): Update comment.
17980         (PRED_LOOP_ITERATIONS_GUESSED): New.
17981         * cfgloop.c (record_loop_exits): Do nothing if there are no loops.
17982         * cfgloop.h (estimate_numbers_of_iterations_loop,
17983         estimated_loop_iterations_int): Declare.
17984
17985 2007-02-25  Mark Mitchell  <mark@codesourcery.com>
17986
17987         * doc/extend.texi: Document optional priority argument to
17988         constructors and destructors.
17989         * tree.c (init_priority_for_decl): Adjust GTY markers.
17990         (init_ttree): Use priority-info hash functions for
17991         init_priority_for_decl.
17992         (tree_map_eq): Rename to ...
17993         (tree_map_base_eq): ... this.
17994         (tree_map_marked_p): Rename to ...
17995         (tree_map_base_marked_p): ... this.
17996         (tree_map_base_hash): New function.
17997         (decl_init_priority_lookup): Rework.
17998         (decl_fini_priority_lookup): New function.
17999         (decl_priority_info): New function.
18000         (decl_init_priority_insert): Use it.
18001         (decl_fini_priority_insert): Likewise.
18002         (decl_restrict_base_lookup): Adjust for refactoring of tree_map
18003         hierarchy.
18004         (decl_restrict_base_insert): Likewise.
18005         (decl_debug_expr_insert): Likewise.
18006         (decl_value_expr_lookup): Likewise.
18007         (decl_value_expr_insert): Likewise.
18008         * tree.h (priority_type): New type.
18009         (decl_init_priority_lookup): Use priority_type.
18010         (decl_fini_priority_lookup): New function.
18011         (decl_init_priority_insert): Use priority_type.
18012         (decl_fini_priority_insert): New function.
18013         (DECL_HAS_INIT_PRIORITY): Tweak comments.
18014         (DECL_INIT_PRIORITY): Likewise.
18015         (SET_DECL_INIT_PRIORITY): Add comment.
18016         (DECL_FINI_PRIORITY): New macro.
18017         (SET_DECL_FINI_PRIORITY): Likewise.
18018         (DEFAULT_INIT_PRIORITY): Document.
18019         (MAX_INIT_PRIORITY): Likewise.
18020         (MAX_RESERVED_INIT_PRIORITY): Likewise.
18021         (tree_map_base): New type.
18022         (tree_map_base_eq): New function.
18023         (tree_map_base_hash): Likewise.
18024         (tree_map_base_marked_p): Likewise.
18025         (tree_map): Inherit from tree_map_base.
18026         (tree_map_eq): Make it a macro.
18027         (tree_map_marked_p): Likewise.
18028         (tree_int_map): Inherit from tree_map_base.
18029         (tree_int_map_eq): Make it a macro.
18030         (tree_int_map_hash): Likewise.
18031         (tree_int_map_marked_p): Likewise.
18032         (tree_priority_map): New type.
18033         (tree_priority_map_eq): New macro.
18034         (tree_priority_map_hash): Likewise.
18035         (tree_priority_map_marked_p): Likewise.
18036         * varasm.c (emults_decl): Adjust for refactoring of tree_map
18037         hierarchy.
18038         (emutls_common_1): Likewise.
18039         * lambda-code.c (replace_uses_equiv_to_x_with_y): Likewise.
18040         * tree-ssa-structalias.c (heapvar_lookup): Adjust for refactoring
18041         of tree_map hierarchy.
18042         * tree-cfg.c (move_stmt_r): Likewise.
18043         (new_label_mapper): Likewise.
18044         * c-tree.h (c_expand_body): Move to ...
18045         * c-common.h (c_expand_body): ... here.
18046         * c-decl.c (c_expand_body): Move to ...
18047         * c-common.c (c_expand_body): ... here.
18048         (c_common_attribute_table): Allow 1 argument for the constructor
18049         and destructor attributes.
18050         (get_priority): New function.
18051         (handle_constructor_attribute): Set DECL_INIT_PRIORITY.
18052         (handle_destructor_attribute): Set DECL_FINI_PRIORITY.
18053
18054 2007-02-24  Jan Hubicka  <jh@suse.cz>
18055
18056         PR middle-end/30509
18057         * tree-inline.c (copy_bb): Produce exact copy of EH info when
18058         copying for inlining.
18059
18060 2007-02-24  Uros Bizjak  <ubizjak@gmail.com>
18061             Jan Hubicka  <jh@suse.cz>
18062
18063         PR target/30778
18064         * i386.c (counter_mode): New function.
18065         (expand_set_or_movmem_via_loop): Use it.
18066         (expand_movmem_epilogue): Likewise; fix pasto.
18067         (ix86_expand_movmem): Do emit guard even for constant counts.
18068         (ix86_expand_setmem): Likewise.
18069
18070 2007-02-25  Nick Clifton  <nickc@redhat.com>
18071
18072         * config/frv/frv.h (ASM_OUTPUT_CASE_LABEL): Delete.
18073         (JUMP_TABLES_IN_TEXT_SECTION): Define.
18074
18075 2007-02-24  Uros Bizjak  <ubizjak@gmail.com>
18076
18077         PR target/30770
18078         * config/i386/i386.md (expand_movmem_epilogue): Fix typo, mask
18079         count argument with 0x10, not with 0x16.
18080         (expand_setmem_epilogue): Ditto.
18081
18082 2007-02-24  Mike Stump  <mrs@apple.com>
18083
18084         * config/i386/i386.c (output_pic_addr_const): Stubify optimized
18085         symbols.
18086
18087 2007-02-24  Richard Guenther  <rguenther@suse.de>
18088
18089         PR middle-end/30951
18090         * fold-const.c (fold_binary): Fold x +- CST op x for
18091         EQ_EXPR and NE_EXPR.
18092
18093 2007-02-24  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
18094
18095         * pa.md (muldi3): Force subregs to registers in 64-bit expander.
18096
18097 2007-02-24  Jan Hubicka  <jh@suse.cz>
18098
18099         * cgraphunit.c (decide_is_function_needed): Honor
18100         -fkeep-inline-functions.
18101
18102 2007-02-24  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
18103
18104         * builtins.c (fold_builtin_modf): New.
18105         (fold_builtin_2): Use it.
18106
18107 2007-02-24  Bernd Schmidt  <bernd.schmidt@analog.com>
18108
18109         * loop-iv.c (implies_p): Detect additional cases where A implies B.
18110         (determine_max_iter): Take additional LOOP arg; all callers changed.
18111         Lose broken logic dealing with PLUS.  Try to limit the upper bound by
18112         one using simplifications.
18113         (simplify_using_initial_values): Return if the expression becomes
18114         invalid due to altered regs.
18115
18116 2007-02-23  DJ Delorie  <dj@redhat.com>
18117
18118         * doc/tm.h (BIGGEST_ALIGNMENT): Clarify the purpose of this macro.
18119
18120 2007-02-23  Mike Stump  <mrs@apple.com>
18121
18122         * tlink.c (scan_linker_output): Parse linker messages from
18123         darwin9's linker better.
18124
18125 2007-02-23  Steve Ellcey  <sje@cup.hp.com>
18126
18127         PR debug/29614
18128         * varpool.c (varpool_assemble_pending_decls):  Set
18129         varpool_last_needed_node to null.
18130
18131 2007-02-23  DJ Delorie  <dj@redhat.com>
18132
18133         * config/i386/i386.c (ix86_data_alignment): Don't specify an
18134         alignment bigger than the object file can handle.
18135
18136 2007-02-23  Uros Bizjak  <ubizjak@gmail.com>
18137
18138         PR target/30825
18139         * config/i386/i386.md (*movdi_1_rex64, zero_extendsidi2_32,
18140         zero_extendsidi2_rex64): Penalize MMX register<->memory moves.
18141         (*movsf_1): Penalize MMX moves.
18142
18143 2007-02-23  Bernd Schmidt  <bernd.schmidt@analog.com>
18144
18145         * config/bfin/bfin.md (doloop_end): Fail for loops that can iterate
18146         2^32-1 or more times unless flag_unsafe_loop_optimizations.
18147
18148         * loop-iv.c (determine_max_iter): Moved in front of its sole user.
18149
18150 2007-02-23  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
18151
18152         * builtins.c (fold_builtin_logb, fold_builtin_significand): New.
18153         (fold_builtin_1): Use them.
18154         * fold-const.c (tree_expr_nonnegative_warnv_p): Handle
18155         BUILT_IN_SIGNIFICAND.
18156
18157 2007-02-23  H.J. Lu  <hongjiu.lu@intel.com>
18158
18159         * config/i386/i386.c (bdesc_1arg): Initialize
18160         IX86_BUILTIN_MOVSHDUP and IX86_BUILTIN_MOVSLDUP with
18161         "__builtin_ia32_movshdup" and "__builtin_ia32_movsldup".
18162         (ix86_init_mmx_sse_builtins): Remove IX86_BUILTIN_MOVSHDUP
18163         and IX86_BUILTIN_MOVSLDUP.
18164
18165 2007-02-22  Paolo Bonzini  <bonzini@gnu.org>
18166
18167         PR rtl-optimization/30841
18168         * fwprop.c (propagate_rtx_1): Accept a VOIDmode replacement address.
18169
18170 2007-02-22  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
18171
18172         * builtins.c (fold_builtin_frexp): New.
18173         (fold_builtin_2): Use it.
18174
18175 2007-02-22  Mark Mitchell  <mark@codesourcery.com>
18176
18177         * doc/invoke.texi (Spec Files): Document getenv spec function.
18178
18179         * gcc.c (getenv_spec_function): New function.
18180         (static_spec_functions): Add it.
18181         * config/vxworks.h (VXWORKS_TARGET_DIR): Remove.
18182         (VXWORKS_ADDITIONAL_CPP_SPEC): Use getenv to find the VxWorks
18183         header files.
18184
18185 2007-02-22  Michael Matz  <matz@suse.de
18186
18187         PR c++/29433
18188         * dwarf2out.c (add_AT_string): Call ggc_strdup once per string.
18189         (type_tag): Use lang_hooks.dwarf_name instead of DECL_NAME.
18190
18191 2007-02-22  Ian Lance Taylor  <iant@google.com>
18192
18193         PR debug/30898
18194         * dwarf2out.c (concatn_mem_loc_descriptor): New static function.
18195         (mem_loc_descriptor): Call it.
18196
18197 2007-02-22  Zdenek Dvorak  <dvorakz@suse.cz>
18198             Ira Rosen  <irar@il.ibm.com>
18199
18200         * tree-data-ref.c (ptr_ptr_may_alias_p): Take alias sets into account.
18201
18202 2007-02-22  Ira Rosen  <irar@il.ibm.com>
18203
18204         PR tree-optimization/30843
18205         * tree-vect-transform.c (vect_transform_loop): Remove strided scalar
18206         stores only after all the group is vectorized.
18207
18208 2007-02-22  Dorit Nuzman  <dorit@il.ibm.com>
18209
18210         PR tree-optimization/30858
18211         * tree-vectorizer.c (vect_is_simple_reduction): Check that the stmts
18212         in the reduction cycle have a single use in the loop.
18213         * tree-vectorizer.h (relevant): Add documentation.
18214
18215 2007-02-20  Mike Stump  <mrs@apple.com>
18216
18217         * configure.ac (powerpc*-*-darwin*): #include <sys/cdefs.h>.
18218         * configure: Regenerate.
18219
18220 2007-02-21  Trevor Smigiel  <trevor_smigiel@playstation.sony.com>
18221
18222         Change the defaults of some parameters and options.
18223         * config/spu/spu-protos.h (spu_optimization_options): Declare.
18224         * config/spu/spu.c (spu_optimization_options): Add.
18225         (spu_override_options): Change params in spu_optimization_options.
18226         * config/spu/spu.h (OPTIMIZATION_OPTIONS): Define.
18227
18228         Register 127 is only 16 byte aligned when used as a frame pointer.
18229         * config/spu/spu-protos.h (spu_init_expanders): Declare.
18230         * config/spu/spu.c (spu_expand_prologue): Set REGNO_POINTER_ALIGN for
18231         HARD_FRAME_POINTER_REGNUM.
18232         (spu_legitimate_address):  Use regno_aligned_for_reload.
18233         (regno_aligned_for_load):  HARD_FRAME_POINTER_REGNUM is only 16 byte
18234         aligned when frame_pointer_needed is true.
18235         (spu_init_expanders): New.  Set alignment of HARD_FRAME_POINTER_REGNUM
18236         to 8 bits.
18237         * config/spu/spu.h (INIT_EXPANDERS): Define.
18238
18239         Make sure shift and rotate instructions have valid immediate operands.
18240         * config/spu/predicates.md (spu_shift_operand): Remove.
18241         * config/spu/spu.c (print_operand): Add [efghEFGH] modifiers.
18242         * config/spu/constraints.md (W, O): Extend range.
18243         * config/spu/spu.md (umask, nmask): Define.
18244         (ashl<mode>3, ashldi3, ashlti3_imm, shlqbybi_ti, shlqbi_ti, shlqby_ti,
18245         lshr<mode>3, rotm_<mode>, lshr<mode>3_imm, rotqmbybi_<mode>,
18246         rotqmbi_<mode>, rotqmby_<mode>, ashr<mode>3, rotma_<mode>,
18247         rotl<mode>3, rotlti3, rotqbybi_ti, rotqby_ti, rotqbi_ti): Use
18248         spu_nonmem_operand instead of spu_shift_operands.  Use new modifiers.
18249         (lshr<mode>3_reg):  Fix rtl description.
18250
18251         Make sure mulhisi immediate operands are valid.
18252         * config/spu/predicates.md (imm_K_operand): Add.
18253         * config/spu/spu.md (mulhisi3_imm, umulhisi3_imm): Use imm_K_operand.
18254
18255         Generate constants using fsmbi and andi.
18256         * config/spu/spu.c (enum immediate_class): Add IC_FSMBI2.
18257         (print_operand, spu_split_immediate, classify_immediate,
18258         fsmbi_const_p): Handle IC_FSMBI2.
18259
18260         Correctly handle a CONST_VECTOR containing symbols.
18261         * config/spu/spu.c (print_operand): Handle HIGH correctly.
18262         (spu_split_immediate): Split CONST_VECTORs with -mlarge-mem.
18263         (immediate_load_p): Allow symbols that use 2 instructions to create.
18264         (classify_immediate, spu_builtin_splats):  Don't accept a CONST_VECTOR
18265         with symbols when flag_pic is set.
18266         (const_vector_immediate_p): New.
18267         (logical_immediate_p, iohl_immediate_p, arith_immediate_p): Don't
18268         accept a CONST_VECTOR with symbols.
18269         (spu_legitimate_constant_p): Use const_vector_immediate_p.  Don't
18270         accept a CONST_VECTOR with symbols when flag_pic is set.  Handle HIGH
18271         correctly.
18272         * config/spu/spu.md (high, low): Delete.
18273         (low_<mode>): Define.
18274
18275         Remove INTRmode and INTR_REGNUM, which didn't work.
18276         * config/spu/spu.c (spu_conditional_register_usage): Remove reference
18277         of INTR_REGNUM.
18278         * config/spu/spu-builtins.md (spu_idisable, spu_ienable, set_intr,
18279         set_intr_pic, set_intr_cc, set_intr_cc_pic, set_intr_return, unnamed
18280         peephole2 pattern): Don't use INTR or 131.
18281         (movintrcc): Delete.
18282         * config/spu/spu.h (FIRST_PSEUDO_REGISTER, FIXED_REGISTERS,
18283         CALL_USED_REGISTERS, REGISTER_NAMES, INTR_REGNUM): Remove INTR_REGNUM.
18284         * config/spu/spu.md (UNSPEC_IDISABLE, UNSPEC_IENABLE): Remove.
18285         (UNSPEC_SET_INTR): Add.
18286         * config/spu/spu-modes.def (INTR): Remove.
18287
18288         More accurate warnings about run-time relocations.
18289         * config/spu/spu.c (reloc_diagnostic): Test in_section.
18290
18291         Correctly warn about immediate arguments to specific intrinsics.
18292         * config/spu/spu.c (spu_check_builtin_parm): Handle CONST_VECTORs.
18293         (spu_expand_builtin_1): Call spu_check_builtin_parm before checking
18294         the instruction predicate.
18295
18296         Fix tree check errors with latest update.
18297         * config/spu/spu.c (expand_builtin_args, spu_expand_builtin_1): Use
18298         CALL_EXPR_ARG.
18299         (spu_expand_builtin): Use CALL_EXPR_FN.
18300
18301         Add missing specific intrinsics.
18302         * config/spu/spu-builtins.def: Add si_bisled, si_bisledd and
18303         si_bislede.
18304         * config/spu/spu_internals.h: Ditto.
18305
18306         Fix incorrect operand modifiers.
18307         * config/spu/spu-builtins.md (spu_mpy, spu_mpyu):  Remove use of %H.
18308         * config/spu/spu.md (xor<mode>3):  Change %S to %J.
18309
18310         Optimize one case of zero_extend of a vec_select.
18311         * config/spu/spu.md (_vec_extractv8hi_ze):  Add.
18312
18313         Accept any immediate for hbr.
18314         * config/spu/spu.md (hbr):  Change s constraints to i.
18315
18316 2007-02-21  Paul Brook  <paul@codesourcery.com>
18317
18318         * config/arm/arm.c (thumb2_final_prescan_insn): Don't incrememnt
18319         condexec_count when skipping USE and CLOBBER.
18320
18321 2007-02-21  Nick Clifton  <nickc@redhat.com>
18322
18323         * common.opt (Warray-bounds): Add Warning attribute.
18324         (Wstrict-overflow, Wstrict-overflow=, Wcoverage-mismatch):
18325         Likewise.
18326         (fsized-zeroes): Add Optimization attribute.
18327         (fsplit-wide-types, ftree-scev-cprop): Likewise.
18328         * c.opt (Wc++0x-compat): Add Warning attribute.
18329
18330 2007-02-21  Ulrich Weigand  <uweigand@de.ibm.com>
18331
18332         PR middle-end/30761
18333         * reload1.c (eliminate_regs_in_insn): In the single_set special
18334         case, attempt to re-recognize the insn before falling back to
18335         having reload fix it up.
18336
18337 2007-02-20  Eric Christopher  <echristo@gmail.com>
18338
18339         * config/frv/frv.c (frv_read_argument): Take a tree and int argument.
18340         Rewrite accordingly.
18341         (frv_read_iacc_argument): Ditto.
18342         (frv_expand_set_builtin): Take a call instead of arglist, update for
18343         above changes.
18344         (frv_expand_unop_builtin): Ditto.
18345         (frv_expand_binop_builtin): Ditto.
18346         (frv_expand_cut_builtin): Ditto.
18347         (frv_expand_binopimm_builtin): Ditto.
18348         (frv_expand_voidbinop_builtin): Ditto.
18349         (frv_expand_int_void2arg): Ditto.
18350         (frv_expand_prefetches): Ditto.
18351         (frv_expand_voidtriop_builtin): Ditto.
18352         (frv_expand_voidaccop_builtin): Ditto.
18353         (frv_expand_load_builtin): Ditto.
18354         (frv_expand_store_builtin): Ditto.
18355         (frv_expand_mdpackh_builtin): Ditto.
18356         (frv_expand_mclracc_builtin): Ditto.
18357         (frv_expand_mrdacc_builtin): Ditto.
18358         (frv_expand_mwtacc_builtin): Ditto.
18359         (frv_expand_builtin): Remove usage of CALL_EXPR_ARGS, update
18360         calls for above.
18361
18362 2007-02-20  Janis Johnson  <janis187@us.ibm.com>
18363
18364         * doc/invoke.texi (RS/6000 and PowerPC Options): Add -mcmpb and -mdfp.
18365         * configure.ac (HAVE_GAS_CMPB): Check for assembler support of the
18366         cmpb instruction.
18367         (HAVE_GAS_DFP): Check for assembler support of decimal floating
18368         point instructions.
18369         * configure: Regenerate.
18370         * config.in: Regenerate.
18371         * config/rs6000/rs6000.opt (mcmpb, mdfp): New.
18372         * config/rs6000/rs6000.c (rs6000_override_options): Add CMPB and DFP
18373         masks to power6 and power6x and to POWERPC_MASKS.
18374         * config/rs6000/rs6000-c.c (rs6000_cpu_cpp_builtins): Define
18375         _ARCH_PWR6.
18376         * config/rs6000/rs6000.h: Check assembler support for CMPB and DFP.
18377         * config/rs6000/sysv4.opt (mprototype): Use variable, not mask.
18378         * config/rs6000/linux64.h (SUBSUBTARGET_OVERRIDE_OPTIONS):
18379         Access PROTOTYPE as variable, not mask.
18380
18381 2007-02-20  Steven Bosscher  <steven@gcc.gnu.org>
18382
18383         * rtl.h (remove_reg_equal_equiv_notes): New prototype.
18384         * rtlanal.c (remove_reg_equal_equiv_notes): New function.
18385         * combine.c (adjust_for_new_dest): Use it.
18386         * postreload.c (reload_combine): Likewise.
18387
18388 2007-02-20  Steven Bosscher  <steven@gcc.gnu.org>
18389
18390         * rtlanal.c (find_reg_equal_equiv_note): Do not find REG_EQ*
18391         notes on an insn with multiple sets, even if single_set returns
18392         non-NULL for that insn.
18393
18394 2007-02-20  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
18395
18396         * fold-const.c (tree_expr_nonnegative_warnv_p): Handle scalb,
18397         scalbn and scalbln.
18398
18399 2007-02-20  Geoffrey Keating  <geoffk@apple.com>
18400
18401         * config/darwin.h (LINK_SPEC): Default -mmacosx-version-min only
18402         if user didn't pass it.
18403         * config/i386/darwin.h (CC1_SPEC): Likewise.
18404         * config/rs6000/darwin.h (CC1_SPEC): Likewise.
18405         (DARWIN_MINVERSION_SPEC): Don't depend on user's setting of
18406         -mmacosx-version-min.
18407
18408 2007-02-20  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
18409             Uros Bizjak  <ubizjak@gmail.com>
18410
18411         * optabs.h (enum optab_index): Add new OTI_scalb.
18412         (scalb_optab): Define corresponding macro.
18413         * optabs.c (init_optabs): Initialize scalb_optab.
18414         * genopinit.c (optabs): Implement scalb_optab using scalb?f3
18415         patterns.
18416         * builtins.c (expand_builtin_mathfn_2, expand_builtin): Handle
18417         BUILT_IN_SCALB{,F,L}, BUILT_IN_SCALBN{,F,L} and BUILT_IN_SCALBLN{,F,L}.
18418         (expand_builtin): Expand BUILT_IN_SCALB{,F,L}, BUILT_IN_SCALBN{,F,L}
18419         and BUILT_IN_SCALBLN{,F,L} using expand_builtin_mathfn_2 if
18420         flag_unsafe_math_optimizations is set.
18421
18422         * config/i386/i386.md (scalbxf3, scalb<mode>3): New expanders
18423         to implement scalbf, scalb and scalbl built-ins as inline x87
18424         intrinsics.
18425
18426 2007-02-20  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
18427             DJ Delorie <dj@redhat.com>
18428
18429         PR other/30824
18430         * diagnostic.c (diagnostic_count_diagnostic): Move -Werror logic to...
18431         (diagnostic_report_diagnostic): ... here, and turn them into real
18432         errors. If warnings are inhibited, no need to do anything.
18433
18434 2007-02-20  Uros Bizjak  <ubizjak@gmail.com>
18435
18436         * config/i386/i386.md (expm1xf2): Reorder insn sequence for
18437         better code generation.
18438
18439 2007-02-20  Ben Elliston  <bje@au.ibm.com>
18440
18441         * config/m68hc11/m68hc11.h (OVERRIDE_OPTIONS): Remove extra ;.
18442
18443 2007-02-20  Kazu Hirata  <kazu@codesourcery.com>
18444
18445         * config/alpha/alpha.c, config/alpha/alpha.md,
18446         config/alpha/lib1funcs.asm, config/alpha/vms-crt0-64.c,
18447         config/alpha/vms-psxcrt0-64.c, config/arc/arc.c,
18448         config/arc/arc.h, config/arm/arm.c, config/arm/arm.md,
18449         config/arm/lib1funcs.asm: Follow spelling conventions.
18450
18451         * config/c4x/c4x.md, config/cris/cris.c, config/crx/crx.c,
18452         config/fr30/fr30.md, config/i386/i386.h,
18453         config/iq2000/iq2000.h, config/iq2000/predicates.md,
18454         config/pa/milli64.S, config/pa/pa.c, config/pa/pa.h,
18455         config/pa/pa.md, config/pa/pa32-regs.h, config/pa/pa64-regs.h,
18456         config/pdp11/pdp11.c, config/pdp11/pdp11.h,
18457         config/rs6000/altivec.md, config/rs6000/rs6000.c,
18458         config/s390/s390-modes.def, config/sparc/netbsd-elf.h,
18459         config/sparc/sparc.c, config/sparc/sparc.h,
18460         config/sparc/sparc.md, config/spu/constraints.md,
18461         config/spu/spu.c, config/stormy16/stormy16.md: Follow spelling
18462         conventions.
18463
18464 2007-02-20  Alan Modra  <amodra@bigpond.net.au>
18465
18466         PR target/29943
18467         * varasm.c (use_blocks_for_decl_p): Return false for decls with
18468         alias attribute.
18469
18470 2007-02-19  Kazu Hirata  <kazu@codesourcery.com>
18471
18472         * doc/invoke.texi (-ftree-lrs): Remove.
18473
18474 2007-02-19  Diego Novillo  <dnovillo@redhat.com>
18475
18476         * tree-ssa-pre.c (create_value_expr_from): Initialize POOL to
18477         NULL.
18478
18479 2007-02-19  Lee Millward  <lee.millward@codesourcery.com>
18480
18481         * config/ia64/ia64.c (ia64_expand_builtin): Use the
18482         new CALL_EXPR_FN macro for retrieving the function
18483         declaration of the input expression.
18484
18485 2007-02-19  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
18486
18487         * c.opt (Waddress): New.
18488         * common.opt (Walways-true): Delete.
18489         (Wstring-literal-comparison): Delete.
18490         * doc/invoke.texi (Warning Options): Delete -Walways-true and
18491         -Wstring-literal-comparison. Add -Waddress.
18492         (Waddress): New.
18493         (Walways-true): Delete.
18494         (Wstring-literal-comparison): Delete.
18495         * doc/extend.texi (#pragma GCC diagnostic): Use -Wformat
18496         consistently instead of -Walways-true in example.
18497         * c-opts.c (c_common_handle_option): -Waddress is enabled by -Wall.
18498         * c-typeck.c (parser_build_binary_op): Replace
18499         -Wstring-literal-comparison and -Walways-true with -Waddress.
18500         * c-common.c (c_common_truthvalue_conversion): Replace -Walways-true
18501         with -Waddress.
18502
18503 2007-02-19  Eric Botcazou  <ebotcazou@adacore.com>
18504
18505         * tree-cfg.c (dump_function_to_file): Be prepared for functions
18506         without DECL_STRUCT_FUNCTION initialized.
18507
18508 2007-02-19  Eric Botcazou  <ebotcazou@adacore.com>
18509
18510         * gimplify.c (gimplify_init_ctor_preeval_1): Detect potential overlap
18511         due to calls to functions taking pointers as parameters.
18512
18513 2007-02-19  Richard Henderson  <rth@redhat.com>
18514
18515         PR debug/29558
18516         * var-tracking.c (track_expr_p): Disallow AGGREGATE_TYPE_P
18517         in memory.
18518
18519 2007-02-19  Andreas Krebbel  <krebbel1@de.ibm.com>
18520
18521         * config/s390/s390.c (s390_call_saved_register_used,
18522         s390_function_ok_for_sibcall): Adjust the way CALL_EXPR arguments are
18523         accessed to the new scheme.
18524
18525 2007-02-19  Jan-Benedict Glaw  <jbglaw@lug-owl.de>
18526
18527         * config/cris/cris.c (cris_movem_load_rest_p, cris_store_multiple_op_p)
18528         (cris_print_index, cris_print_operand, cris_print_operand_address)
18529         (cris_reload_address_legitimized, cris_rtx_costs, cris_address_cost)
18530         (cris_side_effect_mode_ok, cris_valid_pic_const, cris_split_movdx)
18531         (cris_expand_pic_call_address): Use xxx_P predicate macros instead of
18532         GET_CODE () == xxx.
18533         * config/cris/cris.h (SECONDARY_RELOAD_CLASS, EXTRA_CONSTRAINT_Q,
18534         EXTRA_CONSTRAINT_T, BDAP_INDEX_P, BIAP_INDEX_P, SIMPLE_ADDRESS_P,
18535         GO_IF_LEGITIMATE_ADDRESS): Ditto.
18536         * config/cris/cris.md (define_insns: *btst, movdi, *mov_side<mode>)
18537         (*mov_sidesisf, *mov_side<mode>_mem, *mov_sidesisf_mem)
18538         (*clear_side<mode>, movsi, *movsi_internal, *ext_sideqihi)
18539         (*ext_side<mode>si, *op_side<mode>, *op_swap_side<mode>, addsi3)
18540         (*extopqihi_side, *extop<mode>si_side, *extopqihi_swap_side)
18541         (*extop<mode>si_swap_side, addi_mul, *addi,andsi3, andhi3, ashl<mode>3)
18542         (uminsi3, call, call_value): Ditto.
18543         (define_split: indir_to_reg_split, unnamed): Ditto.
18544
18545 2007-02-19  Dorit Nuzman  <dorit@il.ibm.com>
18546
18547         PR tree-optimization/30975
18548         * tree-vect-trasnform.c (vect_get_vec_def_for_stmt_copy): Remove
18549         wrong assert.
18550
18551 2007-02-18  Eric Christopher  <echristo@gmail.com>
18552
18553         * mips.c (mips_prepare_builtin_arg): Add argnum parameter.
18554         Remove use of arglist.
18555         (mips_expand_builtin): Remove use of arglist, pass in expr.
18556         (mips_expand_builtin_direct): Rewrite handling for arglist removal.
18557         (mips_expand_builtin_movtf): Ditto.
18558         (mips_expand_builtin_compare): Ditto.
18559
18560 2007-02-19  Alexandre Oliva  <aoliva@redhat.com>
18561
18562         * tree-sra.c (sra_build_assignment): Replace assertion
18563         checking with a comment explaining why it can't be done.
18564
18565 2007-02-18  Sandra Loosemore  <sandra@codesourcery.com>
18566
18567         PR middle-end/30833
18568         * tree-dump.c (dequeue_and_dump): Add tcc_vl_exp case missed
18569         during CALL_EXPR representation conversion.
18570         * tree-ssa-propagate.c (set_rhs): Likewise.
18571
18572 2007-02-19  Alexandre Oliva  <aoliva@redhat.com>
18573
18574         * tree-sra.c (sra_build_assignment): Disable assertion checking
18575         for now.
18576
18577 2007-02-18  Roger Sayle  <roger@eyesopen.com>
18578
18579         * function.c (gimplify_parameters): Call build_gimple_modify_stmt
18580         instead of calling build2 with a GIMPLE_MODIFY_STMT.
18581         * gimple-low.c (lower_function_body, lower_builtin_setjmp):
18582         Likewise.
18583         * gimplify.c (build_stack_save_restore, gimplify_return_expr,
18584         gimplify_decl_expr,  gimplify_self_mod_expr, gimplify_cond_expr,
18585         gimplify_init_ctor_eval_range, gimple_push_cleanup,
18586         gimplify_omp_for, gimplify_omp_atomic_pipeline,
18587         gimplify_omp_atomic_mutex, gimplify_expr, gimplify_one_sizepos,
18588         force_gimple_operand): Likewise.
18589         * ipa-cp.c (constant_val_insert): Likewise.
18590         * lambda-code.c (lbv_to_gcc_expression, lle_to_gcc_expression,
18591         lambda_loopnest_to_gcc_loopnest, replace_uses_equiv_to_x_with_y,
18592         perfect_nestify): Likewise.
18593         * langhooks.c (lhd_omp_assignment): Likewise.
18594         * omp-low.c (lower_rec_input_clauses, lower_reduction_clauses,
18595         lower_copyprivate_clauses, lower_send_clauses,
18596         lower_send_shared_vars, expand_parallel_call,
18597         expand_omp_for_generic, expand_omp_for_static_nochunk,
18598         expand_omp_for_static_chunk, expand_omp_sections,
18599         lower_omp_single_copy, lower_omp_for_lastprivate,
18600         lower_omp_parallel, init_tmp_var, save_tmp_var): Likewise.
18601         * value-prof.c (tree_divmod_fixed_value, tree_mod_pow2,
18602         tree_mod_subtract, tree_ic, tree_stringop_fixed_value):
18603         Likewise.
18604
18605 2007-02-19  Kazu Hirata  <kazu@codesourcery.com>
18606
18607         * config/sh/divtab.c, config/sh/sh.c, config/sh/sh.h,
18608         config/sh/sh.md: Follow spelling conventions.
18609
18610         * config/frv/frv.c, config/frv/frv.h, config/frv/frv.md,
18611         config/frv/predicates.md: Follow spelling conventions.
18612
18613         * config/m68k/linux-unwind.h: Fix a comment typo.
18614         * target.h: Follow spelling conventions.
18615
18616 2007-02-18  Roger Sayle  <roger@eyesopen.com>
18617
18618         PR rtl-optimization/28173
18619         * simplify-rtx.c (simplify_binary_operation_1) <IOR>:  Optimize
18620         (X & C1) | C2 as C2 when (C1 & C2) == C1 and X has no side-effects.
18621         Optimize (X & C1) | C2 as X | C2 when (C1 | C2) == ~0.
18622         Canonicalize (X & C1) | C2 as (X & (C1 & ~C2)) | C2.
18623         <AND>: Canonicalize (X | C1) & C2 as (X & C2) | (C1 & C2).
18624
18625 2007-02-18  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
18626
18627         * builtins.c (fold_builtin_load_exponent): New.
18628         (fold_builtin_2): Use it.
18629
18630 2007-02-18  Steven Bosscher  <steven@gcc.gnu.org>
18631
18632         PR rtl-optimization/30773
18633         * local-alloc.c (update_equiv_regs): Do not set reg_equiv_init
18634         if we fail to attach a REG_EQUIV note.
18635
18636 2007-02-18  David Edelsohn  <edelsohn@gnu.org>
18637             Roger Sayle  <roger@eyesopen.com>
18638
18639         * config/rs6000/rs6000.md (bswapsi2): New define_insn and splitter.
18640
18641 2007-02-18  Sandra Loosemore  <sandra@codesourcery.com>
18642
18643         * calls.c (initialize_argument_information): Pass original EXP
18644         and STRUCT_VALUE_ADDR_VALUE instead of a list of arguments.  Move
18645         code to split complex arguments here, as part of initializing the
18646         ARGS array.
18647         (expand_call): Remove code that builds a list of arguments and
18648         inserts implicit arguments into it.  Instead, just count how many
18649         implicit arguments there will be so we can determine the size of
18650         the ARGS array, and let initialize_argument_information do the work.
18651         (split_complex_values): Delete unused function.
18652
18653 2007-02-18  Eric Botcazou  <ebotcazou@adacore.com>
18654
18655         * tree-eh.c (tree_could_trap_p): Handle VIEW_CONVERT_EXPR.
18656
18657 2007-02-18  Eric Botcazou  <ebotcazou@adacore.com>
18658
18659         * calls.c (mem_overlaps_already_clobbered_arg_p): Return true
18660         for arg pointer based indexed addressing.
18661
18662 2007-02-18  Kazu Hirata  <kazu@codesourcery.com>
18663
18664         * config/ia64/ia64.h, config/ia64/ia64.md,
18665         config/ia64/predicates.md, config/ia64/sysv4.h: Follow
18666         spelling conventions.
18667
18668 2007-02-18  Roman Zippel <zippel@linux-m68k.org>
18669
18670         * config/m68k/m68k.c (split_di): New.
18671         * config/m68k/m68k-protos.h: Declare split_di.
18672         * config/m68k/m68k.md (extendsidi2*,ashldi3*,ashrdi3*,lshrdi3*):
18673           Improve predicate handling and split constant shifts.
18674
18675 2007-02-18  Roman Zippel <zippel@linux-m68k.org>
18676
18677         * config/m68k/m68k.md (extv,extzv,insv): disable dynamic
18678         parameter for register bitfield operations, general predicates
18679         cleanup
18680
18681 2007-02-18  Roman Zippel <zippel@linux-m68k.org>
18682
18683         * config/m68k/linux.h (MD_UNWIND_SUPPORT): Define.
18684         * config/m68k/linux-unwind.h: New file.
18685
18686 2007-02-18  Kazu Hirata  <kazu@codesourcery.com>
18687
18688         * cfgloop.c, config/alpha/alpha.c, config/bfin/bfin.c,
18689         config/i386/athlon.md, config/ia64/ia64.md,
18690         config/rs6000/rs6000.c, config/s390/s390.c, config/spu/spu.md,
18691         df-problems.c, df.h, fold-const.c, ipa-cp.c, ipa-inline.c,
18692         ipa-prop.h, see.c, struct-equiv.c, tree-inline.c,
18693         tree-ssa-loop-niter.c, tree-vect-analyze.c,
18694         tree-vect-transform.c: Fix comment typos.
18695
18696 2007-02-17  Kazu Hirata  <kazu@codesourcery.com>
18697
18698         * sched-deps.c (find_insn_list): Remove.
18699         * sched-int.h: Remove the prototype for find_insn_list.
18700
18701 2007-02-16  Geoffrey Keating  <geoffk@apple.com>
18702
18703         * config/darwin.h (LINK_SPEC): Always pass -macosx_version_min
18704         to linker.
18705         (DARWIN_EXTRA_SPECS): Add %(darwin_minversion).
18706         * config/rs6000/darwin.h (SUBTARGET_OVERRIDE_OPTIONS): Just call
18707         darwin_rs6000_override_options.
18708         (C_COMMON_OVERRIDE_OPTIONS): Expect
18709         darwin_macosx_version_min to be non-NULL always.
18710         (TARGET_C99_FUNCTIONS): Likewise.
18711         (CC1_SPEC): Always pass -mmacosx-version-min to cc1*.
18712         (DARWIN_MINVERSION_SPEC): New.
18713         * config/rs6000/rs6000.c (darwin_rs6000_override_options): New.
18714         * config/i386/darwin.h (CC1_SPEC): Always pass -mmacosx-version-min
18715         to cc1*.
18716         (DARWIN_MINVERSION_SPEC): New.
18717         * config/darwin.opt (mmacosx-version-min): Initialize to non-NULL
18718         value.
18719         * config/darwin-c.c (darwin_cpp_builtins): Expect
18720         darwin_macosx_version_min to be non-NULL always.
18721
18722         * config/rs6000/rs6000.c: Clean up trailing whitespace.
18723
18724 2007-02-16  Uros Bizjak  <ubizjak@gmail.com>
18725
18726         * config/i386/i386.h (x86_use_xchgb): New.
18727         (TARGET_USE_XCHGB): New macro.
18728         * config/i386/i386.c (x86_use_xchgb): Set for PENT4.
18729         * config/i386/i386.md (*rotlhi3_1 splitter, *rotrhi3_1 splitter):
18730         Split after reload into bswaphi for shifts of 8.
18731         (bswaphi_lowpart): Generate rolw insn for HImode byte swaps.
18732         (*bswaphi_lowpart_1): Generate xchgb for Q registers for TARGET_XCHGB
18733         or when optimizing for size.
18734
18735 2007-02-16  Richard Guenther  <rguenther@suse.de>
18736             Christian Bruel  <christian.bruel@st.com>
18737
18738         * fold-const.c (tree_swap_operands_p): Treat SSA_NAMEs like
18739         DECLs but prefer SSA_NAMEs over DECLs.
18740
18741 2007-02-16  Richard Guenther  <rguenther@suse.de>
18742
18743         * tree-flow-inline.h (single_imm_use_p): Remove.
18744         (zero_imm_uses_p): Likewise.
18745         * tree-ssa-coalesce.c (create_outofssa_var_map): Use has_single_use
18746         instead of single_imm_use_p.
18747         * tree-cfg.c (replace_uses_by): Use has_zero_use instead of
18748         zero_imm_uses_p.
18749
18750 2007-02-16  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
18751
18752         PR other/27843
18753         * Makefile.in (SYSTEM_HEADER_DIR): Use single quotes to avoid
18754         nested double- and backquotes.
18755
18756 2007-02-15  Roger Sayle  <roger@eyesopen.com>
18757
18758         PR middle-end/30391
18759         * tree.c (expr_align): Handle MODIFY_EXPR.  GIMPLE_MODIFY_STMT
18760         should be unreachable.
18761         (build2_stat): Allow construction of MODIFY_EXPR at any time.
18762         For the time being redirect GIMPLE_MODIFY_STMT to the new
18763         (renamed) build_gimple_modify_stmt_stat.
18764         (build2_gimple_stat): Rename to...
18765         (build_gimple_modify_stmt_stat): Now longer take a CODE argument.
18766         Always build a GIMPLE_MODIFY_STMT node.
18767         * tree.h (build2_gimple, build2_gimple_stat): Delete.
18768         (build_gimple_modify_stmt, build_gimple_modify_stmt_stat): New
18769         declarations.
18770
18771         * tree-cfg.c (factor_computed_gotos, tree_merge_blocks,
18772         gimplify_val): Use build_gimple_modify_stmt instead of build2_gimple.
18773         * tree-complex.c (set_component_ssa_name, expand_complex_move,
18774         expand_complex_div_wide): Likewise.
18775         * tree-ssa-dom.c (record_equivalences_from_stmt): Likewise.
18776         * tree-ssa-loop-im.c (schedule_sm): Likewise.
18777         * tree-ssa-loop-ivopts.c (rewrite_use_nonlinear_expr): Likewise.
18778         * tree-ssa-loop-manip.c (create_iv): Likewise.
18779         * tree-ssa-phiopt.c (conditional_replacement, minmax_replacement,
18780         abs_replacement): Likewise.
18781         * tree-ssa-pre.c (create_expression_by_pieces, poolify_modify_stmt,
18782         realify_fake_stores): Likewise.
18783
18784         * builtins.c (std_expand_builtin_va_start): Build a MODIFY_EXPR
18785         node rather than a GIMPLE_MODIFY_STMT node.
18786         (std_gimpify_va_arg_expr, expand_builtin_va_copy,
18787         fold_builtin_memset, fold_builtin_memory_op, do_mpfr_sincos):
18788         Likewise.
18789         (integer_valued_real_p): Handle MODIFY_EXPR, not GIMPLE_MODIFY_STMT.
18790         * expr.c (expand_expr_real_1): Handle both MODIFY_EXPR and
18791         GIMPLE_MODIFY_STMT.
18792
18793 2007-02-15  Andrew Pinski  <andrew_pinski@playstation.sony.com>
18794
18795         PR middle-end/30433
18796         * fold-const.c (fold_comparison): Add back the
18797         folding of constant complex comparisions.
18798
18799 2007-02-15  Andrew Pinski  <andrew_pinski@playstation.sony.com>
18800
18801         PR middle-end/30729
18802         * stmt.c (warn_if_unused_value): VA_ARG_EXPR has side
18803         effects unknown to this function, return early.
18804
18805 2007-02-15  Ian Lance Taylor  <iant@google.com>
18806
18807         * lower-subreg.c (move_eh_region_note): New static function.
18808         (resolve_simple_move): Call it.
18809         (decompose_multiword_subregs): Track blocks for which we resolve a
18810         simple move which is also a control flow insn.  Pass them to
18811         find_many_sub_basic_blocks.
18812         (pass_lower_subreg): Add TODO_verify_flow.
18813         (pass_lower_subreg2): Likewise.
18814
18815 2007-02-15  Sandra Loosemore  <sandra@codesourcery.com>
18816             Brooks Moses  <brooks.moses@codesourcery.com>
18817             Lee Millward  <lee.millward@codesourcery.com>
18818
18819         * tree.h (enum tree_code_class): Add tcc_vl_exp.
18820         (VL_EXP_CLASS_P): New.
18821         (TREE_OPERAND_CHECK): Use TREE_OPERAND_LENGTH instead of
18822         TREE_CODE_LENGTH.
18823         (TREE_OPERAND_CHECK_CODE): Likewise.
18824         (GIMPLE_STMT_OPERAND_CHECK): Likewise.
18825         (TREE_RTL_OPERAND_CHECK): Likewise.
18826         (tree_operand_check_failed): Make second parameter the whole tree
18827         instead of its code.  Fixed callers.
18828         (VL_EXP_CHECK): New.
18829         (TREE_OPERAND_LENGTH): New.
18830         (VL_EXP_OPERAND_LENGTH): New.
18831         (CALL_EXPR_FN): New.
18832         (CALL_EXPR_STATIC_CHAIN): New.
18833         (CALL_EXPR_ARGS): New.
18834         (CALL_EXPR_ARG): New.
18835         (call_expr_nargs): New.
18836         (CALL_EXPR_ARGP): New.
18837         (build_nt_call_list): Declare.
18838         (build_vl_exp_stat): Declare.
18839         (build_vl_exp): New.
18840         (build_call_list): Declare.
18841         (build_call_nary): Declare.
18842         (build_call_valist): Declare.
18843         (build_call_array): Declare.
18844         (call_expr_arg): Declare.
18845         (call_expr_argp): Declare.
18846         (call_expr_arglist): Declare.
18847         (fold_build_call_list): Declare.
18848         (fold_build_call_list_initializer): Declare.
18849         (fold_call_expr): Declare to replace fold_builtin.
18850         (fold_builtin_fputs): Update to agree with modified definition.
18851         (fold_builtin_strcpy): Likewise.
18852         (fold_builtin_strncpy): Likewise.
18853         (fold_builtin_memory_chk): Likewise.
18854         (fold_builtin_stxcpy_chk): Likewise.
18855         (fold_builtin_strncpy_chk): Likewise.
18856         (fold_builtin_next_arg): Likewise.
18857         (fold_build_call_expr): Declare.
18858         (fold_builtin_call_list): Declare.
18859         (fold_builtin_call_valist): Declare.
18860         (build_call_expr): Declare.
18861         (validate_arglist): Update to agree with modified definition.
18862         (tree_operand_length): New.
18863         (call_expr_arg_iterator): New.
18864         (init_call_expr_arg_iterator): New.
18865         (next_call_expr_arg): New.
18866         (first_call_expr_arg): New.
18867         (more_call_expr_args_p): New.
18868         (FOR_EACH_CALL_EXPR_ARG): New.
18869
18870         * tree.c (tree_code_class_string): Add entries for tcc_vl_exp
18871         and tcc_gimple_stmt.
18872         (tree_code_size): Update documentation.  Use sizeof (tree) rather
18873         than sizeof (char *).
18874         (tree_size): Likewise.  Add case for tcc_vl_exp.
18875         (tree_node_structure): Add case for tcc_vl_exp.
18876         (contains_placeholder_p): Likewise.
18877         (substitute_in_expr): Likewise.
18878         (substitute_placeholder_in_expr): Likewise.
18879         (stabilize_reference_1): Likewise.
18880         (build3_stat): Remove logic for CALL_EXPRs.  Replace with assertion
18881         to diagnose breakage of this interface for constructing CALL_EXPRs.
18882         (build_nt): Add similar assertion here.
18883         (build_nt_call_list): New.
18884         (simple_cst_equal) <CALL_EXPR>: Rewrite to use new accessors.
18885         (iterative_hash_expr): Use TREE_OPERAND_LENGTH instead of
18886         TREE_CODE_LENGTH.
18887         (get_callee_fndecl): Use new CALL_EXPR accessors.
18888         (tree_operand_check_failed): Change parameters to pass entire node
18889         instead of its code, so that we can call TREE_OPERAND_LENGTH on it.
18890         (process_call_operands): New.
18891         (build_vl_exp_stat): New.
18892         (build_call_list): New.
18893         (build_call_nary): New.
18894         (build_call_valist): New.
18895         (build_call_array): New.
18896         (walk_tree): Use TREE_OPERAND_LENGTH instead of TREE_CODE_LENGTH.
18897         (call_expr_arglist): New.
18898
18899         * tree.def (CALL_EXPR): Change representation of CALL_EXPRs to use
18900         tcc_vl_exp instead of a fixed-size tcc_expression.
18901
18902         * doc/c-tree.texi (CALL_EXPR): Document new representation and
18903         accessors for CALL_EXPRs.
18904         (AGGR_INIT_EXPR): Likewise.
18905
18906 2007-02-15  Sandra Loosemore  <sandra@codesourcery.com>
18907             Brooks Moses  <brooks.moses@codesourcery.com>
18908             Lee Millward  <lee.millward@codesourcery.com>
18909
18910         * builtins.c (c_strlen): Return NULL_TREE instead of 0.
18911         (expand_builtin_nonlocal_goto): Change parameter to be entire
18912         CALL_EXPR instead of an arglist.  Use new CALL_EXPR accessors.
18913         (expand_builtin_prefetch): Likewise.
18914         (expand_builtin_classify_type): Likewise.
18915         (mathfn_built_in): Return NULL_TREE instead of 0.
18916         (expand_errno_check): Use new CALL_EXPR accessors.
18917         (expand_builtin_mathfn): Use new CALL_EXPR accessors and constructors.
18918         Return NULL_RTX instead of 0.
18919         (expand_builtin_mathfn_2): Likewise.
18920         (expand_builtin_mathfn_3): Likewise.
18921         (expand_builtin_interclass_mathfn): Likewise.
18922         (expand_builtin_sincos): Likewise.
18923         (expand_builtin_cexpi): Likewise.
18924         (expand_builtin_int_roundingfn): Likewise.
18925         (expand_builtin_int_roundingfn_2): Likewise.
18926         (expand_builtin_pow): Likewise.
18927         (expand_builtin_powi): Likewise.
18928         (expand_builtin_strlen): Pass entire CALL_EXPR as parameter instead
18929         of arglist, fixing callers appropriately.  Use new CALL_EXPR
18930         accessors and constructors.  Return NULL_RTX instead of 0.
18931         (expand_builtin_strstr): Likewise.
18932         (expand_builtin_strchr): Likewise.
18933         (expand_builtin_strrchr): Likewise.
18934         (expand_builtin_strpbrk): Likewise.
18935         (expand_builtin_memcpy): Likewise.
18936         (expand_builtin_mempcpy): Likewise.
18937         (expand_builtin_mempcpy_args): New.
18938         (expand_builtin_memmove): Similarly to expand_builtin_mempcpy.
18939         (expand_builtin_memmove_args): New.
18940         (expand_builtin_bcopy): Similarly to expand_builtin_mempcpy.
18941         (expand_movstr): Likewise.
18942         (expand_builtin_strcpy): Likewise.
18943         (expand_builtin_strcpy_args): New.
18944         (expand_builtin_stpcpy): Similarly to expand_builtin_strcpy.
18945         (expand_builtin_strncpy): Likewise.
18946         (expand_builtin_memset): Likewise.
18947         (expand_builtin_memset_args): New.
18948         (expand_builtin_bzero): Similarly to expand_builtin_memset.
18949         (expand_builtin_memcmp): Likewise.
18950         (expand_builtin_strcmp): Likewise.
18951         (expand_builtin_strncmp): Likewise.
18952         (expand_builtin_strcat): Likewise.
18953         (expand_builtin_strncat): Likewise.
18954         (expand_builtin_strspn): Likewise.
18955         (expand_builtin_strcspn): Likewise.
18956         (expand_builtin_args_info): Likewise.
18957         (expand_builtin_va_start): Likewise.
18958         (gimplify_va_arg_expr): Likewise.
18959         (expand_builtin_va_end): Likewise.
18960         (expand_builtin_va_copy): Likewise.
18961         (expand_builtin_frame_address): Likewise.
18962         (expand_builtin_alloca): Likewise.
18963         (expand_builtin_bswap): Likewise.
18964         (expand_builtin_unop): Likewise.
18965         (expand_builtin_fputs): Likewise.
18966         (expand_builtin_expect): Likewise.
18967         (expand_builtin_fabs): Likewise.
18968         (expand_builtin_copysign): Likewise.
18969         (expand_builtin_printf): Likewise.
18970         (expand_builtin_fprintf): Likewise.
18971         (expand_builtin_sprintf): Likewise.
18972         (expand_builtin_init_trampoline): Likewise.
18973         (expand_builtin_signbit): Likewise.
18974         (expand_builtin_fork_or_exec): Likewise.
18975         (expand_builtin_sync_operation): Likewise.
18976         (expand_builtin_compare_and_swap): Likewise.
18977         (expand_builtin_lock_test_and_set): Likewise.
18978         (expand_builtin_lock_release): Likewise.
18979         (expand_builtin): Likewise.
18980         (builtin_mathfn_code): Likewise.
18981
18982         (fold_builtin_constant_p): Pass call arguments individually instead
18983         of as an arglist, fixing callers appropriately.  Use new CALL_EXPR
18984         accessors and constructors.  Return NULL_TREE instead of 0.
18985         (fold_builtin_expect): Likewise.
18986         (fold_builtin_classify_type): Likewise.
18987         (fold_builtin_strlen): Likewise.
18988         (fold_builtin_nan): Likewise.
18989         (integer_valued_real_p): Likewise.
18990         (fold_trunc_transparent_mathfn): Likewise.
18991         (fold_fixed_mathfn): Likewise.
18992         (fold_builtin_cabs): Likewise.
18993         (fold_builtin_sqrt): Likewise.
18994         (fold_builtin_cbrt): Likewise.
18995         (fold_builtin_cos): Likewise.
18996         (fold_builtin_cosh): Likewise.
18997         (fold_builtin_tan): Likewise.
18998         (fold_builtin_sincos): Likewise.
18999         (fold_builtin_cexp): Likewise.
19000         (fold_builtin_trunc): Likewise.
19001         (fold_builtin_floor): Likewise.
19002         (fold_builtin_ceil): Likewise.
19003         (fold_builtin_round): Likewise.
19004         (fold_builtin_int_roundingfn): Likewise.
19005         (fold_builtin_bitop): Likewise.
19006         (fold_builtin_bswap): Likewise.
19007         (fold_builtin_logarithm): Likewise.
19008         (fold_builtin_hypot): Likewise.
19009         (fold_builtin_pow): Likewise.
19010         (fold_builtin_powi): Likewise.
19011         (fold_builtin_exponent): Likewise.
19012         (fold_builtin_memset): Likewise.
19013         (fold_builtin_bzero): Likewise.
19014         (fold_builtin_memory_op): Likewise.
19015         (fold_builtin_bcopy): Deleted; call site changed to invoke
19016         fold_builtin_memory_op directly.
19017         (fold_builtin_strcpy): Similarly as for fold_builtin_memory_op.
19018         (fold_builtin_strncpy): Likewise.
19019         (fold_builtin_memcmp): Likewise.
19020         (fold_builtin_strcmp): Likewise.
19021         (fold_builtin_strncmp): Likewise.
19022         (fold_builtin_signbit): Likewise.
19023         (fold_builtin_copysign): Likewise.
19024         (fold_builtin_isascii): Likewise.
19025         (fold_builtin_toascii): Likewise.
19026         (fold_builtin_isdigit): Likewise.
19027         (fold_builtin_fabs): Likewise.
19028         (fold_builtin_abs): Likewise.
19029         (fold_builtin_fmin_fmax): Likewise.
19030         (fold_builtin_carg): Likewise.
19031         (fold_builtin_classify): Likewise.
19032         (fold_builtin_unordered_cmp): Likewise.
19033
19034         (fold_builtin_0, fold_builtin_2, fold_builtin_3, fold_builtin_4):
19035         New functions split out from fold_builtin_1.
19036         (fold_builtin_n): New.
19037         (fold_builtin_varargs): New.
19038         (fold_builtin): Deleted.  Most callers changed to use fold_call_expr
19039         instead.
19040         (fold_call_expr): New.
19041         (build_function_call_expr): Rewrite to use new helper function.
19042         (fold_builtin_call_list): New.
19043         (build_call_expr): New.
19044         (fold_builtin_call_valist): New.
19045         (rewrite_call_expr): New.
19046         (validate_arg): New.
19047         (validate_arglist): Change parameter to be entire CALL_EXPR instead
19048         of an arglist.  Change return type to bool.  Use new CALL_EXPR
19049         accessors.
19050
19051         (fold_builtin_strstr):  Pass call arguments individually instead
19052         of as an arglist, fixing callers appropriately.  Use new CALL_EXPR
19053         accessors and constructors.  Return NULL_TREE instead of 0.
19054         (fold_builtin_strchr): Likewise.
19055         (fold_builtin_strrchr): Likewise.
19056         (fold_builtin_strpbrk): Likewise.
19057         (fold_builtin_strcat): Likewise.
19058         (fold_builtin_strncat): Likewise.
19059         (fold_builtin_strspn): Likewise.
19060         (fold_builtin_strcspn): Likewise.
19061         (fold_builtin_fputs): Likewise.
19062         (fold_builtin_next_arg): Likewise.
19063         (fold_builtin_sprintf): Likewise.
19064
19065         (expand_builtin_object_size): Use new CALL_EXPR accessors.  Use
19066         NULL_RTX instead of 0.
19067         (expand_builtin_memory_chk): Likewise.
19068         (maybe_emit_chk_warning): Likewise.
19069         (maybe_emit_sprintf_chk_warning): Likewise.
19070
19071         (fold_builtin_object_size): Pass call arguments individually instead
19072         of as an arglist, fixing callers appropriately.  Use new CALL_EXPR
19073         accessors and constructors.  Return NULL_TREE instead of 0.
19074         (fold_builtin_memory_chk): Likewise.
19075         (fold_builtin_stxcpy_chk): Likewise.
19076         (fold_builtin_strncpy_chk): Likewise.
19077         (fold_builtin_strcat_chk): Likewise.
19078         (fold_builtin_strcat_chk): Likewise.
19079         (fold_builtin_strncat_chk): Likewise.
19080         (fold_builtin_sprintf_chk): Likewise.
19081         (fold_builtin_snprintf_chk): Likewise.
19082         (fold_builtin_printf): Likewise.
19083         (fold_builtin_vprintf): Likewise.
19084
19085         * fold-const.c (negate_expr_p): Use new CALL_EXPR accessors and
19086         constructors.
19087         (operand_equal_p): Add separate tcc_vl_exp/CALL_EXPR case.
19088         (make_range): Use TREE_OPERAND_LENGTH instead of TREE_CODE_LENGTH.
19089         (extract_muldiv_1): Add VL_EXP_CLASS_P case.
19090         (fold_mathfn_compare): Use new CALL_EXPR accessors and constructors.
19091         (fold_unary): Likewise.
19092         (fold_binary): Likewise.
19093         (fold_ternary): Remove CALL_EXPR case, since they are no longer
19094         ternary expressions.
19095         (fold): Add logic for tcc_vl_exp.
19096         (fold_checksum_tree):  Make it know about tcc_vl_exp.  Use
19097         TREE_OPERAND_LENGTH instead of TREE_CODE_LENGTH.
19098         (fold_build3_stat): Add assertion to flag broken interface for
19099         constructing CALL_EXPRs.
19100         (fold_build_call_list): New.
19101         (fold_build_call_list_initializer): New.
19102         (tree_expr_nonnegative_p): Use new CALL_EXPR accessors and
19103         constructors.
19104         (fold_strip_sign_ops): Likewise.
19105
19106 2007-02-15  Sandra Loosemore  <sandra@codesourcery.com>
19107             Brooks Moses  <brooks.moses@codesourcery.com>
19108             Lee Millward  <lee.millward@codesourcery.com>
19109
19110         * tree-dump.c (dequeue_and_dump) <CALL_EXPR>: Use new CALL_EXPR
19111         accessors and dump arguments explicitly.
19112
19113         * tree-pretty-print.c (do_niy): Use TREE_OPERAND_LENGTH instead of
19114         TREE_CODE_LENGTH.
19115         (dump_generic_node): Use new CALL_EXPR accessors and walk arguments
19116         explicitly.
19117         (print_call_name): Use new CALL_EXPR accessors.
19118
19119         * print-tree.c (print_node): Add case tcc_vl_exp.  Print
19120         CALL_EXPR arguments explicitly instead of as a list.  Use
19121         TREE_OPERAND_LENGTH instead of TREE_CODE_LENGTH.
19122
19123         * tree-vrp.c (stmt_interesting_for_vrp): Use new CALL_EXPR accessors.
19124         (vrp_visit_stmt): Likewise.
19125
19126         * tree-ssa-loop-im.c (outermost_invariant_loop_expr):  Make it
19127         know about tcc_vl_exp.  Use TREE_OPERAND_LENGTH instead of
19128         TREE_CODE_LENGTH.
19129         (force_move_till_expr): Likewise.
19130
19131         * targhooks.c (default_external_stack_protect_fail): Use
19132         build_call_expr instead of build_function_call_expr.
19133         (default_hidden_stack_protect_fail): Likewise.
19134
19135         * tree-complex.c (expand_complex_libcall): Use build_call_expr to
19136         build the call.
19137
19138         * cgraphbuild.c (build_cgraph_edges): Use new CALL_EXPR accessors
19139         and walk arguments explicitly.
19140
19141         * tree-ssa-loop-niter.c (simplify_replace_tree): Use
19142         TREE_OPERAND_LENGTH instead of TREE_CODE_LENGTH.
19143         (expand_simple_operations): Likewise.
19144         (infer_loop_bounds_from_array): Use new CALL_EXPR accessors.
19145
19146         * gengtype.c (adjust_field_tree_exp): Use TREE_OPERAND_LENGTH instead
19147         of TREE_CODE_LENGTH.
19148         (walk_type): Tweak walking of arrays not to blow up on CALL_EXPRs.
19149
19150         * optabs.c (expand_widen_pattern-expr): Use TREE_OPERAND_LENGTH
19151         instead of TREE_CODE_LENGTH.
19152
19153         * value_prof.c (tree_ic): Use new CALL_EXPR accessors.
19154         (tree_ic_transform): Likewise.
19155         (interesting_stringop_to_profile_p): Pass entire CALL_EXPR as
19156         parameter instead of arglist.  Fix callers.
19157         (tree_stringop_fixed_value): Use new CALL_EXPR accessors.
19158         (tree_stringops_transform): Likewise.
19159         (tree_indirect_call_to_profile): Likewise.
19160         (tree_stringops_values_to_profile): Likewise.
19161
19162         * tree-tailcall.c (find_tail_calls): Use new CALL_EXPR iterator.
19163         (eliminate_tail_call): Likewise.
19164
19165         * ipa-cp.c (ipcp_update_callgraph): Use new CALL_EXPR accessors.
19166
19167         * tree-scalar-evolution.c (chrec_contains_symbols_defined_in_loop):
19168         Use TREE_OPERAND_LENGTH and generalize to handle any number of
19169         operands.
19170         (instantiate_parameters_1): Can't handle tcc_vl_exp here.
19171
19172         * omp-low.c (build_omp_barrier): Use build_call_expr.
19173         (lower_rec_input_clauses): Likewise.
19174         (lower_reduction_clauses): Likewise.
19175         (expand_parallel_call): Likewise.
19176         (maybe_catch_exception): Likewise.
19177         (expand_omp_for_generic): Likewise.
19178         (expand_omp_for_static_nochunk): Likewise.
19179         (expand_omp_sections): Likewise.
19180         (lower_omp_single_simple): Likewise.
19181         (lower_omp_single_copy): Likewise.
19182         (lower_omp_master): Likewise.
19183         (lower_omp_ordered): Likewise.
19184         (lower_omp_critical): Likewise.
19185
19186         * ipa-reference.c (check-call): Use new CALL_EXPR iterator.
19187         (scan_for_static_refs): Create tcc_vl_exp case for CALL_EXPR.
19188
19189         * tree-gimple.c (is_gimple_call_addr): Fix doc.
19190         (recalculate_side_effects): Use TREE_OPERAND_LENGTH instead of
19191         TREE_CODE_LENGTH.  Add tcc_vl_exp case.
19192
19193         * tree-chrec.c (chrec_contains_symbols): Use TREE_OPERAND_LENGTH
19194         and generalize to handle any number of operands.
19195         (chrec_contains_undetermined): Likewise.
19196         (tree_contains_chrecs): Likewise.
19197         (evolution_function_is_invariant_rec_p): Use TREE_OPERAND_LENGTH.
19198
19199         * cgraphunit.c (update_call_expr): Use new CALL_EXPR accessors.
19200
19201         * tree-ssa-ccp.c (ccp_fold): Use new CALL_EXPR accessors.  Use
19202         fold_call_expr instead of fold_builtin.
19203         (ccp_fold_builtin): Likewise.  Update calls into builtins.c to
19204         match declarations there.
19205         (fold_stmt): Use new CALL_EXPR constructor and accessors.  Doc
19206         updates.
19207
19208         * tree-ssa-loop-ivopts.c (expr_invariant_in_loop_p): Use
19209         TREE_OPERAND_LENGTH instead of TREE_CODE_LENGTH.
19210
19211         * ipa-pure-const.c (check_call): Use new CALL_EXPR accessors.
19212         (scan_function): Add case tcc_vl_exp for CALL_EXPR.
19213
19214         * tree-stdarg.c (execute_optimize_stdarg): Use new CALL_EXPR
19215         accessors.
19216
19217         * tree-ssa-math-opts.c (execute_cse_sincos_1): Use build_call_expr.
19218         (execute_cse_sincos): Use new CALL_EXPR accessors.
19219
19220         * tree-ssa-alias.c (find_used_portions): Use new CALL_EXPR iterator.
19221
19222         * gimple-low.c (lower_function_body): Use build_call_expr.
19223         (lower_builtin_setjmp): Likewise.
19224
19225         * expr.c (emit_block_move_via_libcall): Use build_call_expr.
19226         (set_storage_via_libcall): Likewise.
19227         (safe_from_p): Add tcc_vl_exp case.  Use TREE_OPERAND_LENGTH
19228         instead of TREE_CODE_LENGTH.
19229         (expand_expr_real_1): Use new CALL_EXPR accessors.
19230
19231         * tree-browser.c (store_child_info): Use TREE_OPERAND_LENGTH and
19232         generalize to handle any number of operands.
19233         (TB_parent_eq): Likewise.
19234
19235         * predict.c (expr_expected_value): Use new CALL_EXPR accessors.
19236         (strip_builtin_expect): Likewise.
19237
19238         * function.c (gimplify_parameters): Use build_call_expr.
19239
19240         * tree-vectorizer.c (vect_is_simple_reduction): Use
19241         TREE_OPERAND_LENGTH instead of TREE_CODE_LENGTH.
19242
19243         * ipa-type-escape.c (check_call): Use new CALL_EXPR iterators.
19244         (scan_for_refs): Add case tcc_vl_exp for CALL_EXPR.
19245
19246         * tree-data-ref.c (get_references_in_stmt): Use new CALL_EXPR
19247         iterators.
19248
19249         * gimplify.c (build_stack_save_restore): Use build_call_expr.
19250         (gimplify_decl_expr): Likewise.
19251         (gimplify_call_expr): Use fold_call_expr instead of fold_builtin.
19252         Use new CALL_EXPR iterators.
19253         (gimplify_modify_expr_to_memcpy): Use build_call_expr.
19254         (gimplify_modify_expr_to_memset): Likewise.
19255         (gimplify_variable_sized_compare): Likewise.
19256         (gimplify_omp_atomic_fetch_op): Likewise.
19257         (gimplify_omp_atomic_pipeline): Likewise.
19258         (gimplify_omp_atomic_mutex): Likewise.
19259         (gimplify_function_tree): Likewise.
19260
19261         * calls.c (alloca_call_p): Use new CALL_EXPR accessors.
19262         (call_expr_flags): Likewise.
19263         (expand_call): Likewise.
19264
19265         * except.c (expand_builtin_eh_return_data_regno): Pass entire
19266         CALL_EXPR as parameter instead of arglist.  Use new CALL_EXPR
19267         accessors.
19268
19269         * coverage.c (create_coverage): Use build_call_expr.
19270
19271         * tree-ssa-pre.c (expression_node_pool, list_node_pool): Delete.
19272         (temp_call_expr_obstack): New.
19273         (pool_copy_list): Delete.
19274         (temp_copy_call_expr): New.
19275         (phi_translate): Add case tcc_vl_exp for CALL_EXPR.  Use new
19276         CALL_EXPR accessors.  Get rid of special goo for copying argument
19277         lists and use temp_copy_call_expr instead.
19278         (valid_in_sets): Add case tcc_vl_exp for CALL_EXPR.  Use new
19279         CALL_EXPR accessors.
19280         (create_expression_by_pieces): Likewise.  Use build_call_array
19281         to construct the result instead of fold_build3.
19282         (create_value_expr_from): Add tcc_vl_exp.  Delete special goo for
19283         dealing with argument lists.
19284         (init_pre): Remove references to expression_node_pool and
19285         list_node_pool.  Init temp_call_expr_obstack instead.
19286         (fini_pre): Remove references to expression_node_pool and
19287         list_node_pool.
19288
19289         * tree-sra.c (sra_walk_call_expr): Use new CALL_EXPR accessors
19290         and walk arguments explicitly instead of as a list.
19291
19292         * tree-mudflap.c (mf_build_check_statement_for): Use build_call_expr.
19293         (mx_register_decls): Likewise.
19294         (mudflap_register_call): Likewise.
19295         (mudflap_finish_file): Likewise.
19296
19297         * ipa-prop.c (ipa_callsite_compute_count): Use new CALL_EXPR accessors.
19298         (ipa_callsite_compute_param): Likewise.
19299
19300         * tree-vect-patterns.c (vect_recog_pow_pattern): Use new CALL_EXPR
19301         accessors and constructor.
19302
19303         * tree-nested.c (convert_nl_goto_reference): Use new CALL_EXPR
19304         accessors and constructor.
19305         (convert_tramp_reference): Likewise.
19306         (convert_call_expr): Likewise.
19307         (finalize_nesting_tree_1): Likewise.
19308
19309         * tree-ssa.c (tree_ssa_useless_type_conversion): Use new CALL_EXPR
19310         accessors.
19311
19312         * tree-ssa-loop-prefetch.c (issue_prefetch_ref): Use build_call_expr.
19313
19314         * tree-inline.c (initialize_inlined_parameters): Pass entire
19315         CALL_EXPR as parameter instead of arglist.  Use new CALL_EXPR
19316         accessors.
19317         (estimate_num_insns_1): Use new CALL_EXPR accessors.
19318         (expand_call_inline): Tidy up call to initialize_inlined_parameters.
19319
19320         * tree-vect-transform.c (vect_create_epilog_for_reduction):  Use
19321         TREE_OPERAND_LENGTH instead of TREE_CODE_LENGTH.
19322         (vectorizable_reduction): Likewise.
19323         (vectorizable_call): Use new CALL_EXPR iterators.
19324         (vectorizable_conversion): Use build_call_expr.
19325         (vectorizable_operation): Use TREE_OPERAND_LENGTH.
19326         (vect_gen_widened_results_half): Use build_call_expr.
19327         (vect_setup_realignment): Likewise.
19328         (vectorizable_live_operation): Use TREE_OPERAND_LENGTH.
19329
19330         * tree-object-size.c (alloc_object_size): Use new CALL_EXPR accessors.
19331         (pass_through_call): Likewise.
19332         (compute_object_sizes): Likewise.  Use fold_call_expr instead of
19333         fold_builtin.
19334
19335         * tree-profile.c (tree_gen_interval_profiler): Use build_call_expr.
19336         (tree_gen_pow2_profiler): Likewise.
19337         (tree_gen_one_value_profiler): Likewise.
19338         (tree_gen_ic_func_profiler): Likewise.
19339         (tree_gen_average_profiler): Likewise.
19340         (tree_gen_ior_profiler): Likewise.
19341
19342         * tree-ssa-structalias.c (get_constraint_for): Add case tcc_vl_exp.
19343         (find_func_aliases): Use new CALL_EXPR accessors.  Add case
19344         tcc_vl_exp.  Use TREE_OPERAND_LENGTH instead of TREE_CODE_LENGTH.
19345
19346         * tree-ssa-reassoc.c (get_rank): Use TREE_OPERAND_LENGTH instead
19347         of TREE_CODE_LENGTH.
19348
19349         * stmt.c (warn_if_unused_value): Use TREE_OPERAND_LENGTH instead
19350         of TREE_CODE_LENGTH.
19351
19352         * convert.c (convert_to_real): Use new CALL_EXPR accessors and
19353         constructor.
19354         (convert_to_integer): Likewise.
19355
19356         * tree-ssa-operands.c (get_call_expr_operands): Use new CALL_EXPR
19357         accessors.
19358
19359 2007-02-15  Sandra Loosemore  <sandra@codesourcery.com>
19360             Brooks Moses  <brooks.moses@codesourcery.com>
19361             Lee Millward  <lee.millward@codesourcery.com>
19362
19363         * config/alpha/alpha.c (alpha_expand_builtin): Use new CALL_EXPR
19364         accessors.
19365         * config/frv/frv.c (frv_expand_builtin): Likewise.
19366         * config/s390/s390.c (s390_expand_builtin): Likewise.
19367
19368         * config/sparc/sparc.c (sparc_gimplify_va_arg): Use build_call_expr.
19369         (sparc_expand_builtin): Use new CALL_EXPR accessors.
19370
19371         * config/i386/i386.c (ix86_function_ok_for_sibcall): Likewise.
19372         (ix86_expand_binop_builtin): Pass entire CALL_EXPR as parameter
19373         instead of arglist.  Use new CALL_EXPR accessors on it.  Fix callers.
19374         (ix86_expand_store_builtin): Likewise.
19375         (ix86_expand_unop_builtin): Likewise.
19376         (ix86_expand_unop1_builtin): Likewise.
19377         (ix86_expand_sse_compare): Likewise.
19378         (ix86_expand_sse_comi): Likewise.
19379         (ix86_expand_vec_init_builtin): Likewise.
19380         (ix86_expand_vec_ext_builtin): Likewise.
19381         (ix86_expand_vec_set_builtin): Likewise.
19382         (ix86_expand_builtin): Use new CALL_EXPR accessors.
19383
19384         * config/sh/sh.c (sh_expand_builtin): Use new CALL_EXPR accessors.
19385         * config/c4x/c4x.c (c4x_expand_builtin): Likewise.
19386
19387         * config/iq2000/iq2000.c (expand_one_builtin): Pass entire CALL_EXPR
19388         instead of arglist.  Use new CALL_EXPR accessors.  Fix callers.
19389         (iq2000_expand_builtin): Use new CALL_EXPR accessors.
19390
19391         * config/rs6000/rs6000-c.c (altivec_build_resolved_builtin): Use
19392         build_call_expr.
19393         * config/rs6000/rs6000.c (rs6000_gimplify_va_arg): Likewise.
19394         (rs6000_expand_unop_builtin): Pass entire CALL_EXPR instead of
19395         arglist.  Use new CALL_EXPR accessors.  Fix callers.
19396         (altivec_expand_abs_builtin): Likewise.
19397         (rs6000_expand_binop_builtin): Likewise.
19398         (altivec_expand_predicate_builtin): Likewise.
19399         (altivec_expand_lv_builtin): Likewise.
19400         (spe_expand_stv_builtin): Likewise.
19401         (altivec_expand_stv_builtin): Likewise.
19402         (rs6000_expand_ternop_builtin): Likewise.
19403         (altivec_expand_ld_builtin): Use new CALL_EXPR accessors.
19404         (altivec_expand_st_builtin): Likewise.
19405         (altivec_expand_dst_builtin): Likewise.
19406         (altivec_expand_vec_init_builtin): Pass entire CALL_EXPR instead of
19407         arglist.  Use new CALL_EXPR accessors.  Fix callers.
19408         (altivec_expand_vec_set_builtin): Likewise.
19409         (altivec_expand_vec_ext_builtin): Likewise.
19410         (altivec_expand_builtin): Use new CALL_EXPR accessors.
19411         (spe_expand_builtin): Likewise.
19412         (spe_expand_predicate_builtin): Pass entire CALL_EXPR instead of
19413         arglist.  Use new CALL_EXPR accessors.  Fix callers.
19414         (spe_expand_evsel_builtin): Likewise.
19415         (rs6000_expand_builtin): Use new CALL_EXPR accessors.  VCFUX and
19416         FCFSX cases must construct whole new CALL_EXPR, not just arglist.
19417
19418         * config/arm/arm.c (arm_expand_binop_builtin): Pass entire CALL_EXPR
19419         instead of arglist.  Use new CALL_EXPR accessors.  Fix callers.
19420         (arm_expand_unop_builtin): Likewise.
19421         (arm_expand_builtin): Use new CALL_EXPR accessors.
19422
19423         * config/mips/mips.c (mips_expand_builtin):  Use new CALL_EXPR
19424         accessors.
19425
19426         * config/bfin/bfin.c (bfin_expand_binop_builtin): Pass entire
19427         CALL_EXPR instead of arglist.  Use new CALL_EXPR accessors.
19428         Fix callers.
19429         (bfin_expand_unop_builtin): Likewise.
19430         (bfin_expand_builtin): Use new CALL_EXPR accessors.
19431
19432 2007-02-15  Sandra Loosemore  <sandra@codesourcery.com>
19433             Brooks Moses  <brooks.moses@codesourcery.com>
19434             Lee Millward  <lee.millward@codesourcery.com>
19435
19436         * c-semantics.c (build_stmt): Add internal diagnostic check.
19437
19438         * c-pretty-print.c (pp_c_postfix_expression): Use new CALL_EXPR
19439         accessors.  Print arguments explicitly instead of as a list.
19440
19441         * c-typeck.c (build_function_call): Use new CALL_EXPR constructors.
19442
19443         * c-omp.c (c_finish_omp_barrier): Use build_call_expr.
19444         (c_finish_omp_flish): Likewise.
19445
19446         * c-common.c (verify_tree): Use new CALL_EXPR accessors.  Traverse
19447         arguments explicitly instead of as a list.  Use TREE_OPERAND_LENGTH
19448         instead of TREE_CODE_LENGTH.
19449         (check_function_arguments_recurse): Use new CALL_EXPR accessors.
19450         (c_warn_unused_result): Likewise.
19451
19452 2007-02-15  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
19453
19454         PR c/26494
19455         * doc/invoke.texi (Warning Options): Remove
19456         -Werror-implicit-function-declaration.
19457         (Wimplicit-function-declaration): Update description.
19458         * opts.c (common_handle_option): Move handling of -Werror=* to...
19459         (enable_warning_as_error): ...here.
19460         * opts.h (enable_warning_as_error): Declare.
19461         * c-decl.c (implicit_decl_warning): Unless
19462         -Wno-implicit-function-declaration is given, emit a pedwarn if
19463         -std=c99 or emit a warning if -Wimplicit-function-declaration.
19464         * c.opt (Wimplicit-function-declaration): Replace
19465         mesg_implicit_function_declaration with
19466         warn_implicit_function_declaration.
19467         * c-opts.c (c_common_handle_option):
19468         -Werror-implicit-function-declaration is exactly equal as
19469         -Werror=implicit-function-declaration.
19470         (set_Wimplicit): Replace mesg_implicit_function_declaration with
19471         warn_implicit_function_declaration.
19472         (c_common_post_options): -Wimplict-function-declaration is enabled
19473         by default by -std=c99, otherwise is disabled by default.
19474         * c-objc-common.c (c_objc_common_init): Remove flawed logic.
19475
19476 2007-02-15  Eric Botcazou  <ebotcazou@adacore.com>
19477
19478         * gimplify.c (gimplify_modify_expr): During gimplification, attach a
19479         DECL on the rhs to a DECL on the lhs for debug info purposes if the
19480         former is ignored but not the latter.
19481
19482 2007-02-15  Eric Botcazou  <ebotcazou@adacore.com>
19483
19484         * expr.c (expand_expr_real_1) <normal_inner_ref>: If a temporary
19485         is made and the reference doesn't use the alias set of its type,
19486         do not create the temporary using that type.
19487
19488 2007-02-15  Aldy Hernandez  <aldyh@redhat.com>
19489
19490         * jump.c: Remove prototypes for delete_computation and
19491         delete_prior_computation.
19492
19493 2007-02-15  Paolo Bonzini  <bonzini@gnu.org>
19494
19495         * jump.c (get_label_after): Delete.
19496         (get_label_before, delete_computation, delete_jump,
19497         delete_prior_computation, follow_jumps): Move...
19498         * reorg.c (delete_computation, delete_prior_computation): ... here...
19499         (get_label_before, delete_jump): ... making these static ...
19500         (follow_jumps): ... and simplifying this since it only runs after
19501         reload.
19502         * rtl.h (get_label_after, get_label_before, delete_jump,
19503         follow_jumps): Delete prototypes.
19504
19505 2007-02-15  Paolo Bonzini  <bonzini@gnu.org>
19506
19507         * caller-save.c (save_call_clobbered_regs): Do not process sibcalls.
19508
19509 2007-02-15  Nick Clifton  <nickc@redhat.com>
19510
19511         * varasm.c (default_asm_output_anchor): Prepend * to . symbol in
19512         order to prevent it from being munged by the target.
19513
19514 2007-02-15  Uros Bizjak  <ubizjak@gmail.com>
19515
19516         * config/i386/i386.md: Remove misleading comment.
19517
19518 2007-02-15  Alexandre Oliva  <aoliva@redhat.com>
19519
19520         * config/frv/frv.md (reload_incc, reload_outcc, reload_incc_uns,
19521         reload_outcc_uns, reload_incc_nz, reload_outcc_nz): Remove
19522         invalid patterns.
19523
19524 2007-02-15  Alexandre Oliva  <aoliva@redhat.com>
19525
19526         * tree-sra.c (instantiate_missing_elements): Canonicalize
19527         bit-field types.
19528         (sra_build_assignment): New.
19529         (generate_copy_inout, generate_element_copy,
19530         generate_element_zero, generate_one_element_init): Use it.
19531
19532 2007-02-15  Alexandre Oliva  <aoliva@redhat.com>
19533
19534         * tree-sra.c (instantiate_missing_elements): Canonicalize
19535         bit-field types.
19536         (sra_build_assignment): New.
19537         (generate_copy_inout, generate_element_copy,
19538         generate_element_zero, generate_one_element_init): Use it.
19539
19540 2007-02-15  Alexandre Oliva  <aoliva@redhat.com>
19541
19542         * dwarf2out.c (dwarf2out_finish): Accept namespaces as context of
19543         limbo die nodes.
19544
19545 2007-02-14  Joseph Myers  <joseph@codesourcery.com>
19546
19547         * emit-rtl.c (set_mem_attributes_minus_bitpos): Treat complex
19548         types as aggregates not scalars.
19549         * function.c (assign_stack_temp_for_type): Likewise.
19550
19551 2007-02-14  Roger Sayle  <roger@eyesopen.com>
19552             Zdenek Dvorak  <dvorakz@suse.cz>
19553
19554         * tree-dump.c (dump_switch_p_1): Require exact match of the option
19555         name.
19556
19557 2007-02-14  Zdenek Dvorak  <dvorakz@suse.cz>
19558
19559         * passes.c (next_pass_1): Clear the next field of the copied
19560         pass structure.
19561
19562 2007-02-14  Richard Henderson  <rth@redhat.com>
19563
19564         * tree-sra.c (early_sra): New.
19565         (decl_can_be_decomposed_p): Deny va_list if early_sra.
19566         (tree_sra_early, pass_sra_early): New.
19567         * tree-pass.h (pass_sra_early): Declare.
19568         * passes.c (init_optimization_passes): Use it.
19569
19570 2007-02-14  Richard Guenther  <rguenther@suse.de>
19571
19572         * flags.h (issue_strict_overflow_warning): Convert to a macro.
19573
19574 2007-02-14  Dorit Nuzman  <dorit@il.ibm.com>
19575
19576          PR tree-optimization/30771
19577         * tree-vect-analyze.c (vect_determine_vectorization_factor): Traverse
19578         also phi nodes.
19579         (vect_analyze_operations): Induction phis can now be marked as
19580         used_in_loop.
19581         (vect_mark_stmts_to_be_vectorized): No special treatment for phis.
19582         Update documentation accordingly.
19583
19584 2007-02-14  Nick Clifton  <nickc@redhat.com>
19585
19586         * builtin-types.def (DEF_FUNCTION_TYPE_x): Do not imply that at
19587         most 3 arguments are supported.
19588         (DEF_FUNCTION_TYPE_VAR_5): Fix typo in its description.
19589
19590 2007-02-13  Seongbae Park <seongbae.park@gmail.com>
19591
19592         * bitmap.c (bitmap_and, bitmap_and_compl, bitmap_xor):
19593         Ensure dst->current is valid.
19594
19595 2007-02-13  Paul Brook  <paul@codesourcery.com>
19596
19597         * config.gcc: Add arm*-*-uclinux-*eabi.
19598         * config/arm/uclinux-elf.h (TARGET_OS_CPP_BUILTINS): Define.
19599         (SUBTARGET_EXTRA_LINK_SPEC): Define.
19600         (STARTFILE_SPEC, ENDFILE_SPEC): Remove broken -shared handling.
19601         (LINK_GCC_C_SEQUENCE_SPEC): Undef.
19602         (LINK_SPEC): Define.
19603         (LIB_SPEC): Define.
19604         * config/arm/arm.c (arm_override_options): Use r9 as EABI PIC
19605         register.
19606         * config/arm/uclinux-eabi.h: New file.
19607         * config/arm/linux-eabi.h (WCHAR_TYPE): Remove.
19608         * config/arm/linux-gas.h (WCHAR_TYPE): Use unsigned long on AAPCS
19609         based targets.
19610
19611 2007-02-13  Ian Lance Taylor  <iant@google.com>
19612
19613         * common.opt: Add Wstrict-overflow and Wstrict-overflow=.
19614         * flags.h (warn_strict_overflow): Declare.
19615         (enum warn_strict_overflow_code): Define.
19616         (issue_strict_overflow_warning): New static inline function.
19617         * opts.c (warn_strict_overflow): New variable.
19618         (common_handle_option): Handle OPT_Wstrict_overflow and
19619         OPT_Wstrict_overflow_.
19620         * c-opts.c (c_common_handle_option): Set warn_strict_overflow for
19621         OPT_Wall.
19622         * fold-const.c: Include intl.h.
19623         (fold_deferring_overflow_warnings): New static variable.
19624         (fold_deferred_overflow_warning): New static variable.
19625         (fold_deferred_overflow_code): New static variable.
19626         (fold_defer_overflow_warnings): New function.
19627         (fold_undefer_overflow_warnings): New function.
19628         (fold_undefer_and_ignore_overflow_warnings): New function.
19629         (fold_deferring_overflow_warnings_p): New function.
19630         (fold_overflow_warning): New static function.
19631         (make_range): Add strict_overflow_p parameter.  Change all
19632         callers.
19633         (extract_muldiv, extract_muldiv_1): Likewise.
19634         (fold_unary) [ABS_EXPR]: Check ABS_EXPR before calling
19635         tree_expr_nonnegative_p.
19636         (fold_negate_expr): Call fold_overflow_warning.
19637         (fold_range_test): Likewise.
19638         (fold_comparison): Likewise.
19639         (fold_binary): Likewise.  Call tree_expr_nonnegative_warnv_p
19640         instead of tree_expr_nonnegative_p.
19641         (tree_expr_nonnegative_warnv_p): Rename from
19642         tree_expr_nonnegative_p, add strict_overflow_p parameter.
19643         (tree_expr_nonnegative_p): New function.
19644         (tree_expr_nonzero_warnv_p): Rename from tree_expr_nonzero_p, add
19645         strict_overflow_p parameter.
19646         (tree_expr_nonzero_p): New function.
19647         * passes.c (verify_interpass_invariants): New static function.
19648         (execute_one_pass): Call it.
19649         * tree-ssa-loop-niter.c (expand_simple_operations): Ignore fold
19650         warnings.
19651         (number_of_iterations_exit, loop_niter_by_eval): Likewise.
19652         (estimate_numbers_of_iterations): Likewise.
19653         (scev_probably_wraps_p): Likewise.
19654         * tree-ssa-ccp.c: Include "toplev.h".
19655         (evaluate_stmt): Defer fold overflow warnings until we know we are
19656         going to optimize.
19657         (struct fold_stmt_r_data): Add stmt field.
19658         (fold_stmt_r): Defer fold overflow warnings until we know we
19659         optimized.
19660         (fold_stmt): Initialize stmt field of fold_stmt_r_data.
19661         (fold_stmt_inplace): Likewise.
19662         * tree-cfgcleanup.c: Include "toplev.h" rather than "errors.h".
19663         (cleanup_control_expr_graph): Defer fold overflow warnings until
19664         we know we are going to optimize.
19665         * tree-cfg.c (fold_cond_expr_cond): Likewise.
19666         * tree-ssa-threadedge.c (simplify_control_stmt_condition):
19667         Likewise.
19668         * tree-vrp.c (vrp_expr_computes_nonnegative): Call
19669         tree_expr_nonnegative_warnv_p instead of tree_expr_nonnegative_p.
19670         * tree-ssa-loop-manip.c (create_iv): Likewise.
19671         * c-typeck.c (build_conditional_expr): Likewise.
19672         (build_binary_op): Likewise.
19673         * tree-vrp.c (vrp_expr_computes_nonzero): Call
19674         tree_expr_nonzero_warnv_p instead of tree_expr_nonzero_p.
19675         (extract_range_from_unary_expr): Likewise.
19676         * simplify-rtx.c (simplify_const_relational_operation): Warn when
19677         assuming that signed overflow does not occur.
19678         * c-common.c (pointer_int_sum): Ignore fold overflow warnings.
19679         * tree.h (tree_expr_nonnegative_warnv_p): Declare.
19680         (fold_defer_overflow_warnings): Declare.
19681         (fold_undefer_overflow_warnings): Declare.
19682         (fold_undefer_and_ignore_overflow_warnings): Declare.
19683         (fold_deferring_overflow_warnings_p): Declare.
19684         (tree_expr_nonzero_warnv_p): Declare.
19685         * doc/invoke.texi (Option Summary): Add -Wstrict-overflow to list
19686         of warning options.
19687         (Warning Options): Document -Wstrict-overflow.
19688         * Makefile.in (tree-ssa-threadedge.o): Depend on toplev.h.
19689         (tree-ssa-ccp.o): Likewise.
19690         (tree-cfgcleanup.o): Change errors.h dependency to toplev.h.
19691         (fold-const.o): Depend on intl.h.
19692
19693 2007-02-13  Ian Lance Taylor  <iant@google.com>
19694
19695         PR middle-end/30751
19696         * lower-subreg.c (resolve_simple_move): Decompose subregs in
19697         addresses.
19698
19699 2007-02-13  Stuart Hastings  <stuart@apple.com>
19700
19701         * config/i386/i386.md (fixuns_truncdfhi2): Require SSE2.
19702
19703 2007-02-13  Richard Henderson  <rth@redhat.com>
19704
19705         * config/alpha/alpha.c (alpha_stdarg_optimize_hook): Strip
19706         handled_component_p before looking for the indirect_ref.
19707
19708 2007-02-13  Richard Henderson  <rth@redhat.com>
19709
19710         * config/i386/i386.md (bswapsi_1): Rename from bswapsi2,
19711         remove flags clobber.
19712         (bswapsi2): New expander, emit code for !TARGET_BSWAP.
19713         (bswaphi_lowpart): New.
19714         (bswapdi2): Rename from bswapdi2_rex, remove flags clobber,
19715         remove TARGET_BSWAP test.  Delete expander of the same name.
19716
19717         * optabs.c (widen_bswap, expand_doubleword_bswap): New.
19718         (expand_unop): Use them.
19719
19720 2007-02-13  Uros Bizjak  <ubizjak@gmail.com>
19721
19722         * config/i386/i386.md (cmpdi_ccno_1_rex64, *cmpsi_ccno_1,
19723         *cmphi_ccno_1, *cmpqi_ccno_1, *movsi_xor, *movstricthi_xor,
19724         *movstrictqi_xor, *movdi_xor_rex64, *ashldi3_1_rex64,
19725         *ashldi3_cmp_rex64, *ashldi3_cconly_rex64, ashlsi3, *ashlsi3_1_zext,
19726         *ashlsi3_cmp, *ashlsi3_cconly, *ashlsi3_cmp_zext, *ashlhi3_1_lea,
19727         *ashlhi3_1, *ashlhi3_cmp, *ashlhi3_cconly, *ashlqi3_1_lea,
19728         *ashlqi3_1, *ashlqi3_cmp, *ashlqi3_cconly): Remove equivalent
19729         assembler dialect choice from asm templates.
19730
19731 2007-02-12  Richard Henderson  <rth@redhat.com>
19732
19733         * config/i386/i386.md (fixuns_trunc<SSEMODEF>si_1): New insn.
19734         (fixuns_trunc<SSEMODEF>si2): Use it.
19735         * config/i386/sse.md (vec_setv4sf_0): Export.
19736         * config/i386/i386.c (ix86_build_const_vector): Export.
19737         (ix86_split_convert_uns_si_sse): Rename from
19738         ix86_expand_convert_uns_si_sse and rewrite as a splitter.
19739         * config/i386/i386-protos.h: Update.
19740
19741 2007-02-13  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
19742
19743         PR c/29521
19744         * c-typeck.c (c_finish_return): Improve warning message.
19745
19746 2007-02-12  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
19747
19748         * alias.c (find_symbolic_term): Delete unused function.
19749
19750 2007-02-12  Uros Bizjak  <ubizjak@gmail.com>
19751
19752         * config/i386/i386.md (paritydi2, paritysi2): New expanders.
19753         (paritydi2_cmp, paritydi2_cmp): New insn and split patterns.
19754         (*parityhi2_cmp, *parityqi2_cmp): New insn patterns.
19755
19756 2007-02-12  Eric Botcazou  <ebotcazou@adacore.com>
19757
19758         * tree.h (DECL_IGNORED_P): Document further effect for FUNCTION_DECL.
19759         * cgraphunit.c (cgraph_expand_function): If DECL_IGNORED_P is set on
19760         the function, temporarily point the debug interface to the null one.
19761
19762 2007-02-12  Eric Botcazou  <ebotcazou@adacore.com>
19763
19764         * dwarf2out.c (round_up_to_align): New static function.
19765         (field_byte_offset): Use it to round the offset.
19766
19767 2007-02-12  Richard Henderson  <rth@redhat.com>
19768
19769         * config/alpha/alpha.md (bswapsi2, bswapdi2): New.
19770         (inswl_const): Export.
19771
19772 2007-02-12  Richard Henderson  <rth@redhat.com>
19773
19774         * calls.c (emit_library_call_value_1): If PROMOTE_MODE modifed the
19775         result mode of the libcall, convert back to outmode.
19776
19777 2007-02-12  Roger Sayle  <roger@eyesopen.com>
19778
19779         * config/i386/i386.md (*bswapdi2_rex): Renamed from bswapdi2.
19780         (bswapdi2): New define_expand to implement 32-bit implementation.
19781
19782 2007-02-12  Nick Clifton  <nickc@redhat.com>
19783
19784         * doc/invoke.texi (Overall Options): Document --help=.
19785         * gcc.c (target_help_flag): Rename to print_subprocess_flag.
19786         (cc1_options): Pass --help= on to cc1.
19787         (display_help): Add description of --help=.
19788         (process_command): Add code to handle --help=.  Allow translated
19789         --help and --target-help switches to be passed on to compiler
19790         sub-process.
19791         (main): Remove unused if statement.
19792         * opts.c (columns): Remove.
19793         (LEFT_COLUMN): Define.
19794         (wrap_help): Add columns argument.
19795         (print_filtered_help): Change parameters to be an include bitmask,
19796         an exclude bitmask, an any bitmask and the column width.  Move the
19797         code to display the params list here.  Add code to display the
19798         status of options rather than their descriptions if the quiet flag
19799         is not active.
19800         (print_specific_help): Change parameters to be an include bitmask,
19801         an exclude bitmask and an any bitmask.  Move code to look up the
19802         column width here.  Decide upon the title for an options listing.
19803         (common_handle_options): Add code to handle --help=.  Adapt code
19804         for --help and --target-help to use the revised form of the
19805         print_specific_help function.
19806         (print_help): Delete.
19807         (print_param_help): Delete.
19808         (print_switch): Delete.
19809         * opts.h (cl_lang_count): Add prototype.
19810         (CL_PARAMS, CL_WARNING, CL_OPTIMIZATION, CL_MIN_OPTION_CLASS,
19811         CL_MAX_OPTION_CLASS): New defines.
19812         * optc-gen.awk: Add construction of cl_lang_count.
19813         * c.opt: Add Warning attribute to warning options and Optimization
19814         attribute to optimization options.
19815         * common.opt: Likewise.
19816         Add --help=.
19817         Add -fhelp and -ftarget-help as aliases for the transformed --help
19818         and --target-help options.
19819         * opt-functions.awk: Add code to handle Warning and Optimization
19820         attributes.
19821
19822 2007-02-12  Richard Henderson  <rth@redhat.com>
19823
19824         * config/alpha/constraints.md: New file.
19825         * config/alpha/alpha.c: Include tm-constrs.h.
19826         (alpha_const_ok_for_letter_p, alpha_const_double_ok_for_letter_p,
19827         alpha_extra_constraint): Remove.
19828         (alpha_emit_conditional_branch): Use satisfies_constraint_*.
19829         * config/alpha/alpha-protos.h: Update.
19830         * config/alpha/alpha.h (REG_CLASS_FROM_LETTER): Remove.
19831         (CONST_OK_FOR_LETTER_P, CONST_DOUBLE_OK_FOR_LETTER_P): Remove.
19832         (EXTRA_CONSTRAINT): Remove.
19833         * config/alpha/alpha.md: Include constraints.md.
19834         (adddi splitter): Use satisfies_constraint_*.
19835         * config/alpha/predicates.md (add_operand): Likewise.
19836         (sext_add_operand, addition_operation): Likewise.
19837
19838 2007-02-12  Dorit Nuzman  <dorit@il.ibm.com>
19839
19840         PR tree-optimization/29145
19841         * tree-data-ref.c (base_addr_differ_p): Make us more conservative
19842         in our handling of restrict qualified pointers.
19843
19844 2007-02-12  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
19845
19846         PR middle-end/7651
19847         * doc/invoke.texi (Wunused-value): Update description.
19848         (Wextra): Delete item.
19849         * opts.c (set_Wextra): Don't use the value of Wextra to set the
19850         value of Wunused-value.
19851         * c-typeck.c (c_process_expr_stmt): Don't check extra_warnings.
19852         (c_finish_stmt_expr): Don't check extra_warnings.
19853         (emit_side_effect_warnings): The caller is responsible to check
19854         warn_unused_value.
19855
19856 2007-02-11  Roger Sayle  <roger@eyesopen.com>
19857             Matt Thomas  <matt@3am-software.com>
19858
19859         * simplify-rtx.c (simplify_relational_operation_1): Correct typo.
19860
19861 2007-02-11  Roger Sayle  <roger@eyesopen.com>
19862
19863         * simplify-rtx.c (simplify_relational_operation_1): Optimize
19864         comparisons of POPCOUNT against zero.
19865         (simplify_const_relational_operation): Likewise.
19866
19867 2007-02-11  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
19868
19869         * doc/invoke.texi (Wextra): Delete outdated paragraph.
19870
19871 2007-02-11  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
19872
19873         * dwarf2out.c (root_type): Delete unused function.
19874
19875 2007-02-11  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
19876
19877         * genattrtab.c (contained_in_p): Delete unused function.
19878         (write_expr_attr_cache): Likewise.
19879
19880 2007-02-11  Jan Hubicka  <jh@suse.cz>
19881
19882         * ipa-inline.c (cgraph_edge_badness): Add "else" missing in the
19883         previous patch.
19884
19885 2007-02-11  Steven Bosscher  <steven@gcc.gnu.org>
19886
19887         * fwprop.c (try_fwprop_subst): Use set_unique_reg_note
19888         to add the REG_EQ* note.
19889         * see.c (see_merge_one_use_extension): Likewise.
19890         * local-alloc.c (update_equiv_regs): Likewise.  Also don't
19891         turn REG_EQUAL notes into REG_EQUIV notes if the target
19892         register may have more than one set.
19893         * function.c (assign_parm_setup_reg): Use set_unique_reg_note.
19894         * gcse.c (try_replace_reg): Likewise.
19895         * alias.c (init_alias_analysis): Use find_reg_equal_equiv_note.
19896         * calls.c (fixup_tail_calls): Likewise.  Abort if there is
19897         more than one REG_EQUIV note.
19898         * reload1.c (gen_reload): Use set_unique_reg_note.
19899
19900 2007-02-11  Uros Bizjak  <ubizjak@gmail.com>
19901
19902         * config/i386/i386.c (TARGET_VECTORIZE_BUILTIN_CONVERSION): Define.
19903         (ix86_builtin_conversion): New function.
19904
19905 2007-02-06  Mark Mitchell  <mark@codesourcery.com>
19906
19907         PR target/29487
19908         * tree.h (DECL_REPLACEABLE_P): New macro.
19909         * except.c (set_nothrow_function_flags): Likewise.
19910
19911 2007-02-11  Tehila Meyzels  <tehila@il.ibm.com>
19912             Ira Rosen  <irar@il.ibm.com>
19913             Dorit Nuzman  <dorit@il.ibm.com>
19914
19915         * doc/tm.texi (TARGET_VECTORIZE_BUILTIN_CONVERSION): New target hook.
19916         * targhooks.c (default_builtin_vectorized_conversion): New.
19917         * targhooks.h (default_builtin_vectorized_function): New declaration.
19918         * target.h (struct vectorize): Add builtin_conversion field.
19919         * tree-vectorizer.h (type_conversion_vec_info_type): New enum
19920         stmt_vec_info_type value.
19921         (vectorizable_conversion): New declaration.
19922         * tree-vect-analyze.c (vect_analyze_operations): Add
19923         vectorizable_conversion call.
19924         * target-def.h (TARGET_VECTORIZE_BUILTIN_CONVERSION): New.
19925         * tree-vect-transform.c (vectorizable_conversion): New function.
19926         (vect_transform_stmt): Add case for type_conversion_vec_info_type.
19927         * tree-vect-generic.c (expand_vector_operations_1): Consider correct
19928         mode.
19929         * config/rs6000/rs6000.c (rs6000_builtin_conversion): New.
19930         (TARGET_VECTORIZE_BUILTIN_CONVERSION): Defined.
19931         (rs6000_expand_builtin): Add handling a case of ALTIVEC_BUILTIN_VCFUX
19932         or ALTIVEC_BUILTIN_VCFSX.
19933
19934 2007-02-10  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
19935
19936         PR target/30634
19937         * pa.md (movdf): For 64-bit target, fail if operand 1 is a non-zero
19938         CONST_DOUBLE and operand 0 is a hard register.
19939         (movdi): For 64-bit target, remove code to force CONST_DOUBLE to
19940         memory.  Fail if operand 1 is a non-zero CONST_INT and operand 0
19941         is a hard floating-point register.
19942
19943 2007-02-10  Richard Henderson  <rth@redhat.com>
19944             Jakub Jelinek  <jakub@redhat.com>
19945             Alexandre Oliva  <aoliva@redhat.com>
19946
19947         * Makefile.in (libgcc-support, libgcc.mvars): Add emutls.c.
19948         * builtin-types.def (BT_WORD): Make unsigned.
19949         (BT_FN_VOID_PTR_WORD_WORD_PTR): New.
19950         * builtins.def (BUILT_IN_EMUTLS_GET_ADDRESS): New.
19951         (BUILT_IN_EMUTLS_REGISTER_COMMON): New.
19952         * c-decl.c (grokdeclarator): Don't error if !have_tls.
19953         * c-parser.c (c_parser_omp_threadprivate): Likewise.
19954         * dwarf2out.c (loc_descriptor_from_tree_1): Don't do anything for
19955         emulated tls.
19956         * expr.c (emutls_var_address): New.
19957         (expand_expr_real_1): Expand emulated tls.
19958         (expand_expr_addr_expr_1): Likewise.
19959         * libgcc-std.ver: Add __emutls_get_address, __emutls_register_common.
19960         * output.h (emutls_finish): Declare.
19961         * toplev.c (compile_file): Call it.
19962         * tree-ssa-address.c (gen_addr_rtx): Check for const-ness of the
19963         address before wrapping in CONST.
19964         * varasm.c (emutls_htab, emutls_object_type): New.
19965         (EMUTLS_VAR_PREFIX, EMUTLS_TMPL_PREFIX): New.
19966         (get_emutls_object_name, get_emutls_object_type): New.
19967         (get_emutls_init_templ_addr, emutls_decl): New.
19968         (emutls_common_1, emutls_finish): New.
19969         (assemble_variable): When emulating tls, swap decls; generate
19970         constructor for the emutls objects.
19971         (do_assemble_alias): When emulating tls, swap decl and target name.
19972         (default_encode_section_info): Don't add SYMBOL_FLAG_TLS_SHIFT
19973         for emulated tls.
19974         * varpool.c (decide_is_variable_needed): Look at force_output.
19975         Recurse for emulated tls.
19976         (cgraph_varpool_remove_unreferenced_decls): Remove checks redundant
19977         with decide_is_variable_needed.
19978         * emutls.c: New file.
19979         * config/sparc/sol2.h (ASM_DECLARE_OBJECT_NAME): Only emit
19980         tls_object for real tls.
19981
19982 2007-02-10  Kaz Kojima  <kkojima@gcc.gnu.org>
19983
19984         PR rtl-optimization/29599
19985         * reload1.c (eliminate_regs_in_insn): Take the destination
19986         mode into account when computing the offset.
19987
19988 2007-02-09  Stuart Hastings  <stuart@apple.com>
19989             Richard Henderson  <rth@redhat.com>
19990
19991         * config/i386/i386.h (TARGET_KEEPS_VECTOR_ALIGNED_STACK): New.
19992         * config/i386/darwin.h: (TARGET_KEEPS_VECTOR_ALIGNED_STACK): New.
19993         * config/i386/i386.md (fixuns_trunc<mode>si2, fixuns_truncsfhi2,
19994         fixuns_truncdfhi2): New.
19995         (fix_truncsfdi_sse): Call ix86_expand_convert_sign_didf_sse.
19996         (floatunsdidf2): Call ix86_expand_convert_uns_didf_sse.
19997         (floatunssisf2): Add call to ix86_expand_convert_uns_sisf_sse.
19998         (floatunssidf2): Allow nonimmediate source.
19999         * config/i386/sse.md (movdi_to_sse): New.
20000         (vec_concatv2di): Drop '*'.
20001         * config/i386/i386-protos.h (ix86_expand_convert_uns_si_sse,
20002         ix86_expand_convert_uns_didf_sse, ix86_expand_convert_uns_sidf_sse,
20003         ix86_expand_convert_uns_sisf_sse, ix86_expand_convert_sign_didf_sse):
20004         New.
20005         * config/i386/i386.c (ix86_expand_convert_uns_si_sse,
20006         ix86_expand_convert_uns_didf_sse, ix86_expand_convert_uns_sidf_sse,
20007         ix86_expand_convert_uns_sisf_sse, ix86_expand_convert_sign_didf_sse,
20008         ix86_build_const_vector, ix86_expand_vector_init_one_nonzero): New.
20009         (ix86_build_signbit_mask): Fix decl of v, refactor to call
20010         ix86_build_const_vector.
20011         (x86_emit_floatuns): Rewrite.
20012
20013 2007-02-10  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
20014
20015         * genautomata.c (longest_path_length): Delete unused function.
20016         (struct state): Delete unused longest_path_length.
20017         (UNDEFINED_LONGEST_PATH_LENGTH): Delete unused macro.
20018         (get_free_state): Delete unused.
20019
20020 2007-02-09  Jan Hubicka  <jh@suse.cz>
20021
20022         * params.def (PARAM_INLINE_UNIT_GROWTH): Set to 30.
20023         * doc/invoke.texi (inline-unit-growth): Update default value.
20024
20025         * Makefile.in (passes.o, ipa-inline.o): Add dependencies.
20026         * cgraphbuild.c (build_cgraph_edges): Compute frequencies.
20027         (rebuild_cgraph_edges): Likewise.
20028         * cgraph.c (cgraph_set_call_stmt): Add new argument frequency.
20029         (dump_cgraph_node): Dump frequencies.
20030         (cgraph_clone_edge): Add frequency scales.
20031         (cgraph_clone_node): Add freuqnecy.
20032         * cgraph.h (cgraph_edge): Add freuqnecy argument.
20033         (CGRAPH_FREQ_BASE, CGRAPH_FREQ_MAX): New constants.
20034         (cgraph_create_edge, cgraph_clone_edge, cgraph_clone_node): Update.
20035         * tree-pass.h (TODO_rebuild_frequencies): New constant.
20036         * cgraphunit.c (verify_cgraph_node): Verify frequencies.
20037         (cgraph_copy_node_for_versioning): Update call of cgraph_clone_edge.
20038         (save_inline_function_body): Likewise.
20039         * ipa-inline.c: inluce rtl.h
20040         (cgraph_clone_inlined_nods): Update call of cgraph_clone_node.
20041         (cgraph_edge_badness): Use frequencies.
20042         (cgraph_decide_recursive_inlining): Update clonning.
20043         (cgraph_decide_inlining_of_small_function): Dump frequency.
20044         * predict.c (estimate_bb_frequencies): Export.
20045         * predict.h (estimate_bb_frequencies): Declare.
20046         * tree-inline.c (copy_bb): Watch overflows.
20047         (expand_call_inline): Update call of cgraph_create_edge.
20048         (optimize_inline_calls): Use TODO flags to update frequnecies.
20049         * passes.h: Include predict.h
20050         (init_optimization_passes): Move profile ahead.
20051         (execute_function_todo): Handle TODO_rebuild_frequencies.
20052
20053 2007-02-09  Roger Sayle  <roger@eyesopen.com>
20054
20055         * config/alpha/alpha.c (emit_insxl): Force the first operand of
20056         the insbl or inswl pattern into a register.
20057
20058 2007-02-09  Roger Sayle  <roger@eyesopen.com>
20059
20060         * config/ia64/ia64.md (bswapdi2): New define_insn.
20061
20062 2007-02-09  Richard Henderson  <rth@redhat.com>
20063
20064         * config/i386/constraints.md (Ym): New constraint.
20065         * config/i386/i386.md (movsi_1): Change Y2 to Yi constraints.
20066         (movdi_1_rex64): Split sse and xmm general register moves from
20067         memory move alternatives.  Use conditional register constraints.
20068         (movsf_1, movdf_integer): Likewise.
20069         (zero_extendsidi2_32, zero_extendsidi2_rex64): Likewise.
20070         (movdf_integer_rex64): New.
20071         (pushsf_rex64): Fix output constraints.
20072         * config/i386/sse.md (sse2_loadld): Split rm alternative, use Yi.
20073         (sse2_stored): Likewise.
20074         (sse2_storeq_rex64): New.
20075         * config/i386/i386.c (x86_inter_unit_moves): Enable for not
20076         amd and not generic.
20077         (ix86_secondary_memory_needed): Don't bypass TARGET_INTER_UNIT_MOVES
20078         for optimize_size.  Remove SF/DFmode hack.
20079
20080 2007-02-09  Dwarakanath Rajagopal  <dwarak.rajagopal@amd.com>
20081
20082         * config/i386/driver-i386.c: Turn on -mtune=native for AMDFAM10.
20083         (bit_SSE4a): New.
20084
20085 2007-02-09  Nathan Sidwell  <nathan@codesourcery.com>
20086             Richard Sandiford  <richard@codesourcery.com>
20087
20088         * config.gcc (m68010-*-netbsdelf*, m68k*-*-netbsdelf*)
20089         (m68k*-*-openbsd*, m68k-*-linux*): Set default_cf_cpu.
20090         (m68k-*-aout*, m68k-*-coff*, m68k-*-uclinux*, m68k-*-rtems*): Add
20091         m68k/t-mlib to tmake_file.
20092         (m68020-*-elf*, m68k-*-elf*): Likewise.  Add t-m68kbare as well.
20093         (m68k*-*-*): Use --with-arch to pick a default for --with-cpu.
20094         (m680[012]0-*-*, m68k*-*-*): Add support for --with-arch.
20095         Allow it to be cf or m68k.  Set m68k_arch_family.  If that
20096         variable is not empty, add t-$m68k_arch_family to tmake_file.
20097         Add t-mlibs to tmake_file.
20098         * doc/install.texi: Document --with-arch=m68k and --with-arch=cf.
20099         * config/m68k/t-cf: New file.
20100         * config/m68k/t-m68k: Likewise.
20101         * config/m68k/t-mlibs: Likewise.
20102         * config/m68k/t-m68kbare (MULTILIB_OPTIONS, MULTILIB_DIRNAMES)
20103         (MULTILIB_MATCHES, MULTILIB_EXCEPTIONS): Delete.
20104         (M68K_MLIB_DIRNAMES, M68K_MLIB_OPTIONS): Define.
20105         * config/m68k/t-m68kelf (MULTILIB_OPTIONS, MULTILIB_DIRNAMES)
20106         (MULTILIB_MATCHES, MULTILIB_EXCEPTIONS, LIBGCC, INSTALL_LIBGCC):
20107         Delete.
20108         * config/m68k/t-openbsd (MULTILIB_OPTIONS, LIBGCC): Delete.
20109         (INSTALL_LIBGCC): Delete.
20110         (M68K_MLIB_DIRNAMES, M68K_MLIB_OPTIONS): Define.
20111         * config/m68k/t-rtems (MULTILIB_OPTIONS, MULTILIB_DIRNAMES)
20112         (MULTILIB_MATCHES, MULTILIB_EXCEPTIONS): Delete.
20113         (M68K_MLIB_CPU): Define.
20114         * config/m68k/t-uclinux (MULTILIB_OPTIONS, MULTILIB_DIRNAMES)
20115         (MULTILIB_MATCHES, MULTILIB_EXCEPTIONS): Delete.
20116         (M68K_MLIB_CPU, M68K_MLIB_OPTIONS, M68K_MLIB_DIRNAMES): Define.
20117
20118 2007-02-09  Zdenek Dvorak  <dvorakz@suse.cz>
20119             Richard Guenther  <rguenther@suse.de>
20120
20121         PR middle-end/23361
20122         * fold-const.c (fold_comparison): Handle obfuscated comparisons
20123         against INT_MIN/INT_MAX.
20124         * tree-ssa-loop-ivcanon.c (remove_empty_loop): Print to dump
20125         file if a loop is removed.
20126
20127 2007-02-09  Joseph Myers  <joseph@codesourcery.com>
20128
20129         * calls.c (store_one_arg): Pass correct alignment to
20130         emit_push_insn for non-BLKmode values.
20131         * expr.c (emit_push_insn): If STRICT_ALIGNMENT, copy to an
20132         unaligned stack slot via a suitably aligned slot.
20133
20134 2007-02-08  DJ Delorie  <dj@redhat.com>
20135
20136         * config/m32c/m32c.c (m32c_unpend_compare): Add default to silence
20137         warnings.
20138         (legal_subregs): Use unsigned char, make const.
20139         (m32c_illegal_subreg_p): Use ARRAY_SIZE.  Delete unused variables.
20140
20141 2007-02-08  Paul Brook  <paul@codesourcery.com>
20142
20143         * config/arm/lib1funcs.asm (RETLDM): Pop directly into PC when no
20144         special interworking needed.
20145
20146 2007-02-08  Harsha Jagasia  <harsha.jagasia@amd.com>
20147
20148         * config/i386/xmmintrin.h: Make inclusion of emmintrin.h
20149         conditional to __SSE2__.
20150         (Entries below should have been added to first ChangeLog
20151         entry for amdfam10 dated 2007-02-05)
20152         * config/i386/emmintrin.h: Generate #error if __SSE2__ is not
20153         defined.
20154         * config/i386/pmmintrin.h: Generate #error if __SSE3__ is not
20155         defined.
20156         * config/i386/tmmintrin.h: Generate #error if __SSSE3__ is not
20157         defined.
20158
20159 2007-02-08  DJ Delorie  <dj@redhat.com>
20160
20161         * config/m32c/m32c-protos.h (m32c_illegal_subreg_p): New.
20162         * config/m32c/m32c.c (legal_subregs): New.
20163         (m32c_illegal_subreg_p): New.
20164         * config/m32c/predicates.md (m32c_any_operand): Use it to reject
20165         unsupported subregs of hard regs.
20166
20167 2007-02-08  Jan Hubicka  <jh@suse.cz>
20168
20169         * tree-cfg.c (bsi_replace): Shortcut when replacing the statement with
20170         the same one; always update histograms.
20171
20172 2007-02-08  Diego Novillo  <dnovillo@redhat.com>
20173
20174         * passes.c (init_optimization_passes): Tidy comment.
20175
20176 2007-02-08  Roger Sayle  <roger@eyesopen.com>
20177
20178         * simplify-rtx.c (simplify_unary_operation_1) <POPCOUNT>: We can
20179         strip zero_extend, bswap and rotates from POCOUNT's argument.
20180         <PARITY>: Likewise, we can strip not, bswap, sign_extend,
20181         zero_extend and rotates from PARITY's argument.
20182         <BSWAP>: A byte-swap followed by a byte-swap is an identity.
20183         (simplify_const_unary_operation) <BSWAP>: Evaluate the byte-swap
20184         of an integer constant at compile-time.
20185
20186 2007-02-08  Diego Novillo  <dnovillo@redhat.com>
20187
20188         PR 30562
20189         * tree-flow.h (struct var_ann_d): Remove field 'is_used'.
20190         Update all users.
20191         * tree-ssa-alias.c (compute_is_aliased): Remove.  Update all
20192         users.
20193         (init_alias_info):
20194         * tree-ssa-live.c (remove_unused_locals): Do not remove
20195         TREE_ADDRESSABLE variables.
20196         * tree-ssa-structalias.c (compute_points_to_sets): Tidy.
20197         * tree-ssa-operands.c (add_virtual_operand): Remove argument
20198         FOR_CLOBBER.  Update all users.
20199         If VAR has an associated alias set, add a virtual operand for
20200         it if no alias is found to conflict with the memory reference.
20201
20202 2007-02-07  Jan Hubicka  <jh@suse.cz>
20203             Robert Kidd <rkidd@crhc.uiuc.edu>
20204
20205         * value-prof.c (visit_hist, free_hist): Return 1 instead of 0.
20206
20207 2007-02-07  Ian Lance Taylor  <iant@google.com>
20208
20209         * lower-subreg.c (simple_move): Reject PARTIAL_INT modes.
20210
20211 2007-02-07  Roger Sayle  <roger@eyesopen.com>
20212
20213         * config/rs6000/rs6000.md (ctz<mode>2, ffs<mode>2, popcount<mode>2,
20214         parity<mode>2, smulsi3_highpart, abstf2_internal, allocate_stack,
20215         tablejumpdi, movsi_to_cr_one): Remove constraints from
20216         define_expand's match_operands.
20217
20218 2007-02-07  Roger Sayle  <roger@eyesopen.com>
20219
20220         * global.c (compute_regsets): Move declatation of "i" inside of
20221         #ifdef ELIMINABLE_REGS to avoid unused variable bootstrap failure.
20222
20223 2007-02-07  Jakub Jelinek  <jakub@redhat.com>
20224
20225         PR c++/30703
20226         * gimplify.c (gimplify_scan_omp_clauses): Remove special casing
20227         of INDIRECT_REF <RESULT_DECL>.
20228
20229         * config/i386/i386.c (override_options): Set PTA_SSSE3 for core2.
20230
20231 2007-02-06  J"orn Rennecke  <joern.rennecke@arc.com>
20232             Kaz Kojima  <kkojima@gcc.gnu.org>
20233
20234         PR target/29746
20235         * config/sh/sh.c (expand_cbranchdi4): Use scratch register
20236         properly.
20237         (sh_initialize_trampoline): Add parentheses to avoid a warning.
20238
20239 2007-02-06  Zdenek Dvorak <dvorakz@suse.cz>
20240
20241         * doc/loop.texi: Document possibility not to perform disambiguation
20242         of loops with multiple latches.
20243         * cfgloopmanip.c (alp_enum_p): Removed.
20244         (add_loop): Handle subloops.  Use get_loop_body_with_size.
20245         (create_preheader): Do not allow ENTRY_BLOCK_PTR to be preheader.
20246         * cfghooks.c (redirect_edge_and_branch_force): Set dominator for
20247         the new forwarder block.
20248         (make_forwarder_block): Only call new_bb_cbk if it is not NULL.
20249         Handle the case latch is NULL.
20250         * tree-ssa-dom.c (tree_ssa_dominator_optimize): Avoid cfg
20251         modifications when marking loop exits.
20252         * ifcvt.c (if_convert): Ditto.  Mark loop exits even if cfg cannot
20253         be modified.
20254         * loop-init.c (loop_optimizer_init): Do not modify cfg.  Call
20255         disambiguate_loops_with_multiple_latches.
20256         * tree-cfgcleanup.c (cleanup_tree_cfg_loop): Calculate dominators
20257         before fix_loop_structure.
20258         * cfgloop.c: Include pointer-set.h and output.h.
20259         (canonicalize_loop_headers, HEADER_BLOCK, LATCH_EDGE,
20260         update_latch_info, mfb_keep_just, mfb_keep_nonlatch): Removed.
20261         (get_loop_latch_edges, find_subloop_latch_edge_by_profile,
20262         find_subloop_latch_edge_by_ivs, find_subloop_latch_edge,
20263         mfb_redirect_edges_in_set, form_subloop, merge_latch_edges,
20264         disambiguate_multiple_latches, get_loop_body_with_size,
20265         disambiguate_loops_with_multiple_latches): New functions.
20266         (flow_loop_dump): Dump multiple latch edges.
20267         (flow_loop_nodes_find): Handle loops with multiple latches.
20268         (flow_loops_find): Ditto. Do not call canonicalize_loop_headers.
20269         (glb_enum_p): Modified.
20270         (get_loop_body): Use get_loop_body_with_size.
20271         * cfgloop.h (LOOPS_HAVE_RECORDED_EXITS): New flag.
20272         (AVOID_CFG_MODIFICATIONS): New constant.
20273         (disambiguate_loops_with_multiple_latches, add_loop,
20274         get_loop_body_with_size): Declare.
20275         * Makefile.in (cfgloop.o): Add pointer-set.h and output.h.
20276
20277 2007-02-06  Seongbae Park <seongbae.park@gmail.com>
20278
20279         PR inline-asm/28686
20280         * global.c (compute_regsets): New function.
20281         (global_alloc): Refactored ELIMINABLE_REGSET
20282         and NO_GLOBAL_ALLOC_REGS computation out.
20283         (rest_of_handle_global_alloc): Call compute_regsets()
20284         for non-optimizing case.
20285
20286 2007-02-06  Richard Henderson  <rth@redhat.com>
20287
20288         * config/i386/constraints.md (Y2): Rename from Y.
20289         (Yi): New constraint.
20290         * config/i386/i386.md (movsi_1, movdi_2, pushdf_nointeger,
20291         pushdf_integer, movdf_nointeger, movdf_integer, zero_extendsidi2_32,
20292         zero_extendsidi2_rex64, truncxfdf2_mixed): Change Y constraints to Y2.
20293         (extendsfdf2_mixed, extendsfdf2_sse, truncdfsf_fast_mixed,
20294         truncdfsf_fast_sse, truncdfsf_mixed, fix_truncdfdi_sse,
20295         fix_truncdfsi_sse, floatsidf2_mixed, floatsidf2_sse,
20296         floatdidf2_mixed, floatdidf2_sse, absnegdf2_mixed,
20297         absnegdf2_sse, sse_setccdf, fop_df_comm_mixed, fop_df_comm_sse,
20298         fop_df_1_mixed, fop_df_1_sse): Change Y constraints to x.
20299         * config/i386/mmx.md (mov<MMXMODEI>_internal_rex64,
20300         mov<MMXMODEI>_internal, movv2sf_internal_rex64, movv2sf_internal,
20301         vec_extractv2si_1): Change Y constraints to Y2.
20302         * config/i386/sse.md (vec_setv4sf_0, vec_concatv2df, vec_dupv4si,
20303         vec_dupv2di, sse2_concatv2si, vec_concatv4si_1, vec_concatv2di):
20304         Change Y constraints to Y2.
20305         (sse2_loadld): Change Y constraints to x.
20306
20307 2007-02-06  Roger Sayle  <roger@eyesopen.com>
20308
20309         * config/rs6000/rs6000.md (popcount<mode>2): Rewrite.
20310         (parity<mode>2): New define_expand using rs6000_emit_parity.
20311         * config/rs6000/rs6000.c (rs6000_emit_popcount,
20312         rs6000_emit_parity): New functions.
20313         * config/rs6000/rs6000-protos.h (rs6000_emit_popcount,
20314         rs6000_emit_parity): Prototype here.
20315
20316 2007-02-06  Ian Lance Taylor  <iant@google.com>
20317
20318         * lower-subreg.c (simple_move_operand): Reject CONST.
20319         (resolve_clobber): Call validate_change rather than directly
20320         assigning to XEXP (pat, 0).
20321
20322 2006-02-06  Paolo Bonzini  <bonzini@gnu.org>
20323
20324         * Makefile.in (tree-ssa-loop-ivopts.o): Add pointer-set.h dependency.
20325         (tree-ssa-reassoc.o): Add pointer-set.h dependency.
20326         (tree-cfg.o): Remove hashtab.h dependency.
20327
20328         * tree-ssa-loop-ivopts.c: Include pointer-set.h.
20329         (struct ivopts_data): Change niters to pointer_map_t.
20330         (struct nfe_cache_elt, nfe_hash, nfe_eq): Delete.
20331         (niter_for_exit): Create pointer_map on demand.  Change for
20332         pointer_map API.
20333         (tree_ssa_iv_optimize_init): Initialize data->niters to NULL.
20334         (free_loop_data): Destroy data->niters if created and reset field.
20335         (tree_ssa_iv_optimize_finalize): Don't delete data->niters here.
20336         (tree_ssa_iv_optimize_loop): Check for presence of stale data.
20337
20338         * tree-ssa-reassoc.c: Include pointer-set.h.
20339         (bb_rank): Change to long *.
20340         (operand_rank): Change to pointer_map_t.
20341         (find_operand_rank): Return long, -1 if not found.  Declare as inline.
20342         (insert_operand_rank): Accept long.
20343         (operand_entry_hash, operand_entry_eq): Remove.
20344         (get_rank): Return long.  Adjust for changes above.
20345         (init_reassoc): Change rank type to long.  Adjust creation of bb_rank
20346         and operand_rank.
20347         (fini_reassoc): Delete operand_rank with pointer_map_destroy.
20348
20349         * tree-ssa-structalias.c (vi_for_tree): Change to pointer_map.
20350         (struct tree_vi, tree_vi_t, tree_vi_hash, tree_vi_eq): Delete.
20351         (insert_vi_for_tree): Rewrite for pointer_map API.  Assert argument
20352         is not NULL.
20353         (lookup_vi_for_tree): Rewrite for pointer_map API.  Return varinfo_t
20354         directly since it cannot be NULL.
20355         (get_vi_for_tree): Rewrite for pointer_map API.
20356         (find_what_p_points_to): Adjust for change to lookup_vi_for_tree.
20357         (init_alias_vars): Create vi_for_tree as pointer_map.
20358         (delete_points_to_sets): Delete vi_for_tree using pointer_map_destroy.
20359
20360         * tree-cfg.c: Don't include hashtab.h.
20361         (edge_to_cases): Declare as pointer_map.
20362         (struct edge_to_cases_elt, edge_to_cases_hash, edge_to_cases_eq):
20363         Delete.
20364         (edge_to_cases_cleanup): Rewrite as pointer_map_traverse callback.
20365         (start_recording_case_labels): Create edge_to_cases as pointer_map.
20366         (end_recoding_case_labels): Cleanup edge_to_cases manually before
20367         destroying it.
20368         (record_switch_edge): Delete.
20369         (get_cases_for_edge): Adjust for pointer_map API, inline
20370         record_switch_edge (rewritten for new API), remove goto.
20371
20372 2006-02-06  Paolo Bonzini  <bonzini@gnu.org>
20373
20374         * Makefile.in (tree-nested.o): Add pointer-set.h dependency.
20375         * tree-nested.c: Include pointer-set.h.
20376         (var_map_elt, var_map_eq, var_map_hash): Delete.
20377         (struct nesting_info): Remove GTY marker.  Change the two htab_t's
20378         to pointer_map_t's.
20379         (nesting_info_bitmap_obstack): New.
20380         (lookup_field_for_decl): Adjust for pointer_map API.
20381         (lookup_tramp_for_decl): Adjust for pointer_map API.
20382         (get_nonlocal_debug_decl): Adjust for pointer_map API.
20383         (get_local_debug_decl): Adjust for pointer_map API.
20384         (convert_nl_goto_reference): Adjust for pointer_map API.
20385         (convert_nl_goto_receiver): Adjust for pointer_map API.
20386         (create_nesting_tree): Create outside GGC space.  Create bitmap on
20387         the new obstack.  Create field_map and var_map as pointer_maps.
20388         (free_nesting_tree): Adjust for changes to create_nesting_tree.
20389         (root): Delete.
20390         (lower_nested_functions): Move root here, no need to NULL it.
20391         Initialize and release the obstack.
20392
20393 2007-02-06  Paolo Bonzini  <bonzini@gnu.org>
20394
20395         * tree.c (tree_int_map_hash, tree_int_map_eq, tree_int_map_marked_p):
20396         Remove prototypes and make them non-static.
20397         (struct tree_int_map): Remove.
20398         * tree.h (struct tree_int_map): Move here, turning TO into an
20399         unsigned int.
20400         (tree_int_map_hash, tree_int_map_eq, tree_int_map_marked_p): Declare.
20401
20402         * tree.h (TREE_COMPLEXITY): Remove.
20403         (struct tree_exp): Remove complexity field.
20404         * tree.c (build1_stat): Don't set it.
20405
20406 2007-02-06  Dorit Nuzman  <dorit@il.ibm.com>
20407             Victor Kaplansky  <victork@il.ibm.com>
20408
20409         * tree-vectorizer.c (vect_is_simple_use): Support induction.
20410         (vect_is_simple_reduction): Support reduction with induction as
20411         one of the operands.
20412         (vect_is_simple_iv_evolution): Fix formatting.
20413         * tree-vect-analyze.c (vect_mark_stmts_to_be_vectorized): Fix
20414         formatting.  Don't mark induction phis for vectorization.
20415         (vect_analyze_scalar_cycles): Analyze all inductions, then reductions.
20416         * tree-vect-transform.c (get_initial_def_for_induction): New function.
20417         (vect_get_vec_def_for_operand): Support induction.
20418         (vect_get_vec_def_for_stmt_copy): Fix formatting and add check for
20419         induction case.
20420         (vectorizable_reduction): Support reduction with induction as one of
20421         the operands.
20422         (vectorizable_type_demotion): Use def-type of stmt argument rather
20423         than dummy def-type.
20424
20425         * tree-ssa-loop.c (gate_scev_const_prop): Return the value of
20426         flag_tree_scev_cprop.
20427         * common.opt (tree-scev-cprop): New flag.
20428
20429         * tree-vect-transform.c (vect_create_destination_var): Use 'kind' in
20430         call to vect_get_new_vect_var.
20431
20432 2007-02-06  Ira Rosen  <irar@il.ibm.com>
20433
20434         * tree-vect-patterns.c (vect_recog_widen_mult_pattern): Check that
20435         vectype is not NULL.
20436         (vect_pattern_recog_1): Likewise.
20437
20438 2007-02-05  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
20439
20440         * fold-const.c (negate_expr_p): Handle CONJ_EXPR.
20441         (fold_negate_expr): Likewise.
20442
20443 2007-02-05  Alexandre Oliva  <aoliva@redhat.com>
20444
20445         PR debug/30189
20446         * dwarf2out.c (modified_type_die): Follow DECL_ORIGINAL_TYPE
20447         even if cv-qualification is the same.
20448
20449 2007-02-05  Geoffrey Keating  <geoffk@apple.com>
20450
20451         * config/rs6000/darwin-tramp.asm (__trampoline_setup): Call
20452         __enable_execute_stack on completion.
20453
20454 2007-02-05  Harsha Jagasia  <harsha.jagasia@amd.com>
20455
20456         * config/i386/athlon.md (athlon_fldxf_k8, athlon_fld_k8,
20457         athlon_fstxf_k8, athlon_fst_k8, athlon_fist, athlon_fmov,
20458         athlon_fadd_load, athlon_fadd_load_k8, athlon_fadd, athlon_fmul,
20459         athlon_fmul_load, athlon_fmul_load_k8, athlon_fsgn,
20460         athlon_fdiv_load, athlon_fdiv_load_k8, athlon_fdiv_k8,
20461         athlon_fpspc_load, athlon_fpspc, athlon_fcmov_load,
20462         athlon_fcmov_load_k8, athlon_fcmov_k8, athlon_fcomi_load_k8,
20463         athlon_fcomi, athlon_fcom_load_k8, athlon_fcom): Added amdfam10.
20464
20465 2007-02-05  Harsha Jagasia  <harsha.jagasia@amd.com>
20466
20467         * config/i386/i386.md (x86_sahf_1, cmpfp_i_mixed, cmpfp_i_sse,
20468         cmpfp_i_i387, cmpfp_iu_mixed, cmpfp_iu_sse, cmpfp_iu_387,
20469         swapsi, swaphi_1, swapqi_1, swapdi_rex64, fix_truncsfdi_sse,
20470         fix_truncdfdi_sse, fix_truncsfsi_sse, fix_truncdfsi_sse,
20471         x86_fldcw_1, floatsisf2_mixed, floatsisf2_sse, floatdisf2_mixed,
20472         floatdisf2_sse, floatsidf2_mixed, floatsidf2_sse,
20473         floatdidf2_mixed, floatdidf2_sse, muldi3_1_rex64, mulsi3_1,
20474         mulsi3_1_zext, mulhi3_1, mulqi3_1, umulqihi3_1, mulqihi3_insn,
20475         umulditi3_insn, umulsidi3_insn, mulditi3_insn, mulsidi3_insn,
20476         umuldi3_highpart_rex64, umulsi3_highpart_insn,
20477         umulsi3_highpart_zext, smuldi3_highpart_rex64,
20478         smulsi3_highpart_insn, smulsi3_highpart_zext, x86_64_shld,
20479         x86_shld_1, x86_64_shrd, sqrtsf2_mixed, sqrtsf2_sse,
20480         sqrtsf2_i387, sqrtdf2_mixed, sqrtdf2_sse, sqrtdf2_i387,
20481         sqrtextendsfdf2_i387, sqrtxf2, sqrtextendsfxf2_i387,
20482         sqrtextenddfxf2_i387): Added amdfam10_decode.
20483
20484         * config/i386/athlon.md (athlon_idirect_amdfam10,
20485         athlon_ivector_amdfam10, athlon_idirect_load_amdfam10,
20486         athlon_ivector_load_amdfam10, athlon_idirect_both_amdfam10,
20487         athlon_ivector_both_amdfam10, athlon_idirect_store_amdfam10,
20488         athlon_ivector_store_amdfam10): New define_insn_reservation.
20489         (athlon_idirect_loadmov, athlon_idirect_movstore): Added
20490         amdfam10.
20491
20492 2007-02-05  Harsha Jagasia  <harsha.jagasia@amd.com>
20493
20494         * config/i386/athlon.md (athlon_call_amdfam10,
20495         athlon_pop_amdfam10, athlon_lea_amdfam10): New
20496         define_insn_reservation.
20497         (athlon_branch, athlon_push, athlon_leave_k8, athlon_imul_k8,
20498         athlon_imul_k8_DI, athlon_imul_mem_k8, athlon_imul_mem_k8_DI,
20499         athlon_idiv, athlon_idiv_mem, athlon_str): Added amdfam10.
20500
20501 2007-02-05  Harsha Jagasia  <harsha.jagasia@amd.com>
20502
20503         * config/i386/athlon.md (athlon_sseld_amdfam10,
20504         athlon_mmxld_amdfam10, athlon_ssest_amdfam10,
20505         athlon_mmxssest_short_amdfam10): New define_insn_reservation.
20506
20507 2007-02-05  Harsha Jagasia  <harsha.jagasia@amd.com>
20508
20509         * config/i386/athlon.md (athlon_sseins_amdfam10): New
20510         define_insn_reservation.
20511         * config/i386/i386.md (sseins): Added sseins to define_attr type
20512         and define_attr unit.
20513         * config/i386/sse.md: Set type attribute to sseins for insertq
20514         and insertqi.
20515
20516 2007-02-05  Harsha Jagasia  <harsha.jagasia@amd.com>
20517
20518         * config/i386/athlon.md (sselog_load_amdfam10, sselog_amdfam10,
20519         ssecmpvector_load_amdfam10, ssecmpvector_amdfam10,
20520         ssecomi_load_amdfam10, ssecomi_amdfam10,
20521         sseaddvector_load_amdfam10, sseaddvector_amdfam10): New
20522         define_insn_reservation.
20523         (ssecmp_load_k8, ssecmp, sseadd_load_k8, seadd): Added amdfam10.
20524
20525 2007-02-05  Harsha Jagasia  <harsha.jagasia@amd.com>
20526
20527         * config/i386/athlon.md (cvtss2sd_load_amdfam10,
20528         cvtss2sd_amdfam10, cvtps2pd_load_amdfam10, cvtps2pd_amdfam10,
20529         cvtsi2sd_load_amdfam10, cvtsi2ss_load_amdfam10,
20530         cvtsi2sd_amdfam10, cvtsi2ss_amdfam10, cvtsd2ss_load_amdfam10,
20531         cvtsd2ss_amdfam10, cvtpd2ps_load_amdfam10, cvtpd2ps_amdfam10,
20532         cvtsX2si_load_amdfam10, cvtsX2si_amdfam10): New
20533         define_insn_reservation.
20534
20535         * config/i386/sse.md (cvtsi2ss, cvtsi2ssq, cvtss2si,
20536         cvtss2siq, cvttss2si, cvttss2siq, cvtsi2sd, cvtsi2sdq,
20537         cvtsd2si, cvtsd2siq, cvttsd2si, cvttsd2siq,
20538         cvtpd2dq, cvttpd2dq, cvtsd2ss, cvtss2sd,
20539         cvtpd2ps, cvtps2pd): Added amdfam10_decode attribute.
20540
20541 2007-02-05  Harsha Jagasia  <harsha.jagasia@amd.com>
20542
20543         * config/i386/athlon.md (athlon_ssedivvector_amdfam10,
20544         athlon_ssedivvector_load_amdfam10, athlon_ssemulvector_amdfam10,
20545         athlon_ssemulvector_load_amdfam10): New define_insn_reservation.
20546         (athlon_ssediv, athlon_ssediv_load_k8, athlon_ssemul,
20547         athlon_ssemul_load_k8): Added amdfam10.
20548
20549 2007-02-05  Harsha Jagasia  <harsha.jagasia@amd.com>
20550
20551         * config/i386/i386.h (TARGET_SSE_UNALIGNED_MOVE_OPTIMAL): New macro.
20552         (x86_sse_unaligned_move_optimal): New variable.
20553
20554         * config/i386/i386.c (x86_sse_unaligned_move_optimal): Enable for
20555         m_AMDFAM10.
20556         (ix86_expand_vector_move_misalign): Add code to generate movupd/movups
20557         for unaligned vector SSE double/single precision loads for AMDFAM10.
20558
20559 2007-02-05  Harsha Jagasia  <harsha.jagasia@amd.com>
20560
20561         * config/i386/i386.h (TARGET_AMDFAM10): New macro.
20562         (TARGET_CPU_CPP_BUILTINS): Add code for amdfam10.
20563         Define TARGET_CPU_DEFAULT_amdfam10.
20564         (TARGET_CPU_DEFAULT_NAMES): Add amdfam10.
20565         (processor_type): Add PROCESSOR_AMDFAM10.
20566
20567         * config/i386/i386.md: Add amdfam10 as a new cpu attribute to match
20568         processor_type in config/i386/i386.h.
20569         Enable imul peepholes for TARGET_AMDFAM10.
20570
20571         * config.gcc: Add support for --with-cpu option for amdfam10.
20572
20573         * config/i386/i386.c (amdfam10_cost): New variable.
20574         (m_AMDFAM10): New macro.
20575         (m_ATHLON_K8_AMDFAM10): New macro.
20576         (x86_use_leave, x86_push_memory, x86_movx, x86_unroll_strlen,
20577         x86_cmove, x86_3dnow_a, x86_deep_branch, x86_use_simode_fiop,
20578         x86_promote_QImode, x86_integer_DFmode_moves,
20579         x86_partial_reg_dependency, x86_memory_mismatch_stall,
20580         x86_accumulate_outgoing_args, x86_arch_always_fancy_math_387,
20581         x86_sse_partial_reg_dependency, x86_sse_typeless_stores,
20582         x86_use_ffreep, x86_use_incdec, x86_four_jump_limit,
20583         x86_schedule, x86_use_bt, x86_cmpxchg16b, x86_pad_returns):
20584         Enable/disable for amdfam10.
20585         (override_options): Add amdfam10_cost to processor_target_table.
20586         Set up PROCESSOR_AMDFAM10 for amdfam10 entry in
20587         processor_alias_table.
20588         (ix86_issue_rate): Add PROCESSOR_AMDFAM10.
20589         (ix86_adjust_cost): Add code for amdfam10.
20590
20591 2007-02-05  Harsha Jagasia  <harsha.jagasia@amd.com>
20592
20593         * config/i386/i386.opt: Add new Advanced Bit Manipulation (-mabm)
20594         instruction set feature flag. Add new (-mpopcnt) flag for popcnt
20595         instruction. Add new SSE4A (-msse4a) instruction set feature flag.
20596         * config/i386/i386.h: Add builtin definition for SSE4A.
20597         * config/i386/i386.md: Add support for ABM instructions
20598         (popcnt and lzcnt).
20599         * config/i386/sse.md: Add support for SSE4A instructions
20600         (movntss, movntsd, extrq, insertq).
20601         * config/i386/i386.c: Add support for ABM and SSE4A builtins.
20602         Add -march=amdfam10 flag.
20603         * config/i386/ammintrin.h: Add support for SSE4A intrinsics.
20604         * doc/invoke.texi: Add documentation on flags for sse4a, abm, popcnt
20605         and amdfam10.
20606         * doc/extend.texi: Add documentation for SSE4A builtins.
20607
20608 2007-02-05  Bob Wilson  <bob.wilson@acm.org>
20609
20610         * config/xtensa/xtensa.c (constantpool_mem_p): Skip over SUBREGs.
20611
20612 2007-02-05  Richard Guenther  <rguenther@suse.de>
20613
20614         * tree-vectorizer.h (vectorizable_function): Add argument type
20615         argument, change return type.
20616         * tree-vect-patterns.c (vect_recog_pow_pattern): Adjust caller.
20617         * tree-vect-transform.c (vectorizable_function): Handle extra
20618         argument, return vectorized function decl.
20619         (build_vectorized_function_call): Remove.
20620         (vectorizable_call): Handle calls with result and argument types
20621         differing.  Handle loop vectorization factor correctly.
20622         * targhooks.c (default_builtin_vectorized_function): Adjust for
20623         extra argument.
20624         * targhooks.h (default_builtin_vectorized_function): Likewise.
20625         * target.h (builtin_vectorized_function): Add argument type
20626         argument.
20627         * config/i386/i386.c (ix86_builtin_vectorized_function): Handle
20628         extra argument, allow vectorizing of lrintf.
20629         * doc/tm.texi (TARGET_VECTORIZE_BUILTIN_VECTORIZED_FUNCTION): Adjust
20630         documentation of target hook.
20631
20632 2007-02-05  Hans-Peter Nilsson  <hp@axis.com>
20633
20634         PR target/30665
20635         * config/cris/cris.md ("*andsi_movu", "*andsi_clear", "*andhi_movu")
20636         ("*andhi_clear", andu (casesi+45)): For size-changed operand where
20637         memory is allowed, require !side_effects_p, not just !MEM_VOLATILE_P.
20638
20639 2007-02-05  Roger Sayle  <roger@eyesopen.com>
20640
20641         * fold-const.c (fold_unary) <REAL_PART>: Test for availability of
20642         BUILT_IN_COS before simplifying REAL_PART(CEXPI)) to COS.
20643         <IMAG_PART>: Likewise, check for availability of BUILT_IN_SIN.
20644         * builtins.c (fold_builtin_sincos): Check for TARGET_C99_FUNCTIONS
20645         before canonicalizing sincos to cexpi.
20646         (fold_builtin_cexp): Likewise, for canonicalizing cexp to cexpi.
20647
20648 2007-02-05  Roger Sayle  <roger@eyesopen.com>
20649
20650         * config/alpha/alpha.c (alpha_add_builtins): New Helper function.
20651         Set TREE_READONLY and TREE_NOTHROW directly, not via attributes.
20652         (alpha_init_builtins): Use alpha_add_builtins to process tables.
20653
20654 2007-02-05  Roger Sayle  <roger@eyesopen.com>
20655
20656         * mips-tfile.c (initialize_init_file): Correct endianness test.
20657
20658 2007-02-05  Kazu Hirata  <kazu@codesourcery.com>
20659
20660         * config/m68k/m68k.md (pushdi-1, pushdi, movsi+1): Don't use
20661         the 'y' constraint.
20662
20663 2007-02-05  Richard Sandiford  <richard@codesourcery.com>
20664
20665         * dwarf2out.c (dwarf2out_frame_debug_expr): Record the register
20666         saves in a PARALLEL before the register assignments.
20667
20668 2007-02-05  Richard Sandiford  <richard@codesourcery.com>
20669
20670         * doc/tm.texi (DWARF_ALT_FRAME_RETURN_COLUMN): Do not require
20671         DWARF_FRAME_RETURN_COLUMN to be a general register.
20672         * dwarf2out.c (init_return_column_size): New function, split from...
20673         (expand_builtin_init_dwarf_reg_sizes): ...here.  Allow both
20674         DWARF_FRAME_RETURN_COLUMN and DWARF_ALT_FRAME_RETURN_COLUMN
20675         to be nongeneral registers.
20676         * config/m68k/m68k.h (DWARF_FRAME_REGNUM): Only map FP and
20677         integer registers.
20678         (DWARF_FRAME_REGISTERS, DWARF_FRAME_RETURN_COLUMN): Define.
20679         (DWARF_ALT_FRAME_RETURN_COLUMN): Define.
20680
20681 2007-02-04  Zdenek Dvorak <dvorakz@suse.cz>
20682
20683         * cfgcleanup.c (try_optimize_cfg): Avoid removing ENTRY_BLOCK_PTR.
20684
20685 2007-02-04  Zdenek Dvorak <dvorakz@suse.cz>
20686
20687         * cfgloopmanip.c (loop_delete_branch_edge): Removed.
20688         (remove_path): Use can_remove_branch_p and remove_branch instead
20689         of loop_delete_branch_edge.
20690         * tree-ssa-loop-manip.c (scale_dominated_blocks_in_loop): New function.
20691         (tree_transform_and_unroll_loop): Remove dead branches immediately.
20692         Update profile using scale_dominated_blocks_in_loop.
20693         * cfghooks.c (can_remove_branch_p, remove_branch): New functions.
20694         * cfghooks.h (struct cfg_hooks): Add can_remove_branch_p.
20695         (can_remove_branch_p, remove_branch): Declare.
20696         * tree-cfg.c (tree_can_remove_branch_p): New function.
20697         (tree_cfg_hooks): Add tree_can_remove_branch_p.
20698         * cfgrtl.c (rtl_can_remove_branch_p): New function.
20699         (rtl_cfg_hooks, cfg_layout_rtl_cfg_hook): Add rtl_can_remove_branch_p.
20700
20701 2007-02-05  Jan Hubicka  <jh@suse.cz>
20702
20703         PR middle-end/30696
20704         * ipa-inline.c (cgraph_clone_inlined_nodes): When there are unanalyzed
20705         nodes in cgraph, don't remove offline copy of the function.
20706
20707 2007-02-04  Jan Hubicka  <jh@suse.cz>
20708
20709         * tree-sra.c (sra_walk_expr): Add linebreaks. BITFIELD_REFs into
20710         vectors might cause maybe_lookup_element_for_expr to be called
20711         on non-sra-candidate.
20712
20713 2007-02-04  Kazu Hirata  <kazu@codesourcery.com>
20714
20715         * config/bfin/bfin-modes.def, config/bfin/bfin.c,
20716         config/bfin/bfin.md, config/bfin/predicates.md: Follow
20717         spelling conventions.
20718
20719 2007-02-04  Richard Guenther  <rguenther@suse.de>
20720
20721         PR middle-end/30636
20722         * fold-const.c (try_move_mult_to_index): Make sure to not
20723         overflow one dimension of a multi-dimensional array access.
20724
20725 2007-02-04  Jan Hubicka  <jh@suse.cz>
20726
20727         * passes.c (init_optimization_passes): Reindent.
20728
20729 2007-02-04  Jan Hubicka  <jh@suse.cz>
20730             Eric Botcazou  <ebotcazou@adacore.com>
20731
20732         * tree-optimize.c (has_abnormal_outgoing_edge_p): Move to...
20733         (execute_fixup_cfg): Break out the abnormal goto code.
20734         * tree-inline.c (has_abnormal_outgoing_edge_p): ...here.
20735         (make_nonlocal_label_edges): Move here from execute_fixup_cfg.
20736         (optimize_inline_calls): Call make_nonlocal_label_edges.
20737
20738 2007-02-04  Jan Hubicka  <jh@suse.cz>
20739
20740         * tree-ssa-copyrename.c (copy_rename_partition_coalesce): Return
20741         true when something was changed.
20742         (rename_ssa_copies): When something was changed, do
20743         TODO_remove_unused_locals.
20744         * tree-ssa-forwprop.c (tree_ssa_forward_propagate_single_use_value):
20745         add TODO_remove_unused_locals when instruction was removed.
20746
20747 2007-02-04  Jan Hubicka  <jh@suse.cz>
20748
20749         * ipa-inline.c (try_inline): Improve debug output; work on already
20750         inline edges too.
20751         (cgraph_decide_inlining_incrementally): Indent; improve debug output;
20752         call try_inline for already inlined edges too when flattening;
20753         inline also functions that make callee growth but overall unit size
20754         reduce.
20755
20756 2007-02-04  Kazu Hirata  <kazu@codesourcery.com>
20757
20758         * config/m32c/bitops.md, config/m32c/jump.md,
20759         config/m32c/m32c.c, config/m32c/m32c.h, config/m32r/m32r.c,
20760         config/m32r/m32r.h, config/m32r/m32r.md,
20761         config/m32r/predicates.md, config/m68hc11/larith.asm,
20762         config/m68hc11/m68hc11.c, config/m68hc11/m68hc11.h,
20763         config/m68k/m68k.h, config/mcore/mcore.md, config/mips/4k.md,
20764         config/mips/mips-protos.h, config/mips/mips.c,
20765         config/mips/mips.h, config/mips/mips.md, config/mips/mips16.S,
20766         config/mn10300/mn10300.h, config/mn10300/predicates.md,
20767         config/mt/mt.c, config/mt/mt.h, config/mt/mt.md: Follow
20768         spelling conventions.
20769
20770         * config/v850/v850.c, config/v850/v850.h, config/v850/v850.md:
20771         Follow spelling conventions.
20772
20773 2007-02-03  Douglas Gregor  <doug.gregor@gmail.com>
20774
20775         * c-opts.c (c_common_post_options): If C++0x mode is enabled, don't
20776         warn about C++0x compatibility.
20777
20778 2007-02-04  Kazu Hirata  <kazu@codesourcery.com>
20779
20780         * config/h8300/h8300.c, config/h8300/h8300.h,
20781         config/h8300/h8300.md: Follow spelling conventions.
20782
20783 2007-02-03  Uros Bizjak  <ubizjak@gmail.com>
20784
20785         PR middle-end/30667
20786         * combine.c (try_combine): Do not substitute source operand
20787         with constants wider than 2 * HOST_BITS_PER_WIDE_INT.
20788
20789 2007-02-03  Jan Hubicka  <jh@suse.cz>
20790
20791         PR gcov-profile/30650
20792         * value-prof.c (stringop_block_profile): Fix handling of size counter;
20793         do not divide by zero for never executed counters.
20794         (tree_find_values_to_profile): Fix counters.
20795         * gcov-ui.h (GCOV_COUNTER_AVERAGE, GCOV_COUNTER_IOR): Fix comments.
20796
20797 2007-02-03  Ian Lance Taylor  <iant@google.com>
20798
20799         * lower-subreg.c (simple_move_operand): New static function,
20800         broken out of simple_move.  Reject LABEL_REF, SYMBOL_REF, and HIGH
20801         operands.
20802         (simple_move): Call simple_move_operand.
20803         (find_decomposable_subregs): Add special handling of MEMs.
20804         (can_decompose_p): Rename from cannot_decompose_p.  Reverse
20805         meaning of return value.  If we see a hard register, test whether
20806         it can store a word_mode value.  Change all callers.
20807
20808 2007-02-03  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
20809
20810         * pa.md (addvdi3, addvsi3, subvdi3, subvsi3, negvdi2, negvsi2): New
20811         ftrapv insns and expanders.
20812         (subdi3): Change define_expand operand 1 to arith11_operand, and
20813         operand 2 to reg_or_0_operand.  Change constraints of 64-bit insn
20814         pattern to handle reg_or_0 operands.  Revise 32-bit insn pattern to
20815         handle 11-bit constants and reg_or_0 operands in operands 1 and 2,
20816         respectively.
20817
20818         PR middle-end/30174
20819         * varasm.c (notice_global_symbol): Treat global objects as weak when
20820         flag_shlib is true.
20821
20822 2007-02-03  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
20823
20824         * emit-rtl.c (dconstpi): Delete.
20825         (dconstsqrt2): New.
20826         (init_emit_once): Delete dconstpi and init dconstsqrt2.
20827         * real.h (dconstpi): Delete.
20828         (dconstsqrt2): New.
20829         * builtins.c (fold_builtin_cabs): Use dconstsqrt2.
20830         (fold_builtin_hypot): Likewise.
20831
20832 2007-02-03  Tom Tromey  <tromey@redhat.com>
20833
20834         PR driver/30246
20835         * gcc.c (cpp_unique_options): Any of -ggdb3, -gstabs3,
20836         -gcoff3, -gxcoff3, -gvms3 implies -dD.
20837
20838 2007-02-03  Kazu Hirata  <kazu@codesourcery.com>
20839
20840         * c-decl.c, config/avr/avr.c, config/avr/avr.h,
20841         config/m68k/m68k.c, config/m68k/netbsd-elf.h,
20842         config/mn10300/mn10300.c, config/pdp11/pdp11.h,
20843         config/rs6000/cell.md, config/rs6000/darwin.h,
20844         config/sh/sh.md, config/sh/sh4-300.md, config/spu/spu.c,
20845         config/spu/spu.md, cselib.c, expr.c, haifa-sched.c, hwint.h,
20846         jump.c, reload.c, sched-deps.c, sched-int.h, tree-inline.c,
20847         tree-profile.c, tree-ssa-live.h, tree-vrp.c: Fix comment
20848         typos.  Follow spelling conventions.
20849         * doc/invoke.texi: Follow spelling conventions.
20850
20851 2007-02-03  Roger Sayle  <roger@eyesopen.com>
20852
20853         * simplify-rtx.c (simplify_relational_operation_1): Implement some
20854         canonicalization transformations that attempt to simplify integer
20855         constant comparisons to become comparisons against zero.
20856
20857 2007-02-03  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
20858
20859         * builtins.c (fold_builtin_cabs): Fold cabs(x+xi) into
20860         fabs(x)*sqrt(2).
20861         * fold-const.c (fold_binary): Fix comment typos.  Fold complex
20862         (x,0)-(0,y) into (x,-y).  Likewise (0,y)-(x,0) into (-x,y).
20863
20864 2007-02-02  Mike Stump  <mrs@apple.com>
20865
20866         * config/darwin9.h (DARWIN_LINKER_GENERATES_ISLANDS): Add.
20867         * config/rs6000/rs6000.c (DARWIN_GENERATE_ISLANDS): Add.
20868         (output_call): Use DARWIN_GENERATE_ISLANDS to decide when to
20869         generate a branch island.
20870
20871 2007-02-02  Bob Wilson  <bob.wilson@acm.org>
20872
20873         * config/xtensa/xtensa.c (smalloffset_mem_p): Use BASE_REG_P.
20874         (xtensa_legitimate_address_p): New.
20875         (xtensa_legitimize_address): New.
20876         (xtensa_output_addr_const_extra): New.
20877         * config/xtensa/xtensa.h (REG_OK_STRICT_FLAG): Define.
20878         (BASE_REG_P): New.
20879         (REG_OK_FOR_BASE_P): Use BASE_REG_P.
20880         (GO_IF_LEGITIMATE_ADDRESS): Move code to xtensa_legitimate_address_p.
20881         (LEGITIMIZE_ADDRESS): Move code to xtensa_legitimize_address.
20882         (OUTPUT_ADDR_CONST_EXTRA): Move code to xtensa_output_addr_const_extra.
20883         * config/xtensa/xtensa-protos.h (xtensa_legitimate_address_p): New.
20884         (xtensa_legitimize_address): New.
20885         (xtensa_output_addr_const_extra): New.
20886
20887 2007-02-02  Steve Ellcey  <sje@cup.hp.com>
20888
20889         * config/ia64/ia64.c (ia64_print_operand): Fix compare strings.
20890
20891 2007-02-02  Ian Lance Taylor  <iant@google.com>
20892
20893         * expmed.c (expand_divmod): Add comment.
20894
20895 2007-02-02  Kazu Hirata  <kazu@codesourcery.com>
20896
20897         * emit-rtl.c (renumber_insns): Remove.
20898         * flags.h: Remove the extern for flag_renumber_insns.
20899         * rtl.h: Remove the prototype for renumber_insns.
20900         * toplev.c (flag_renumber_insns): Remove.
20901
20902 2007-02-02  Hui-May Chang  <hm.chang@apple.com>
20903
20904         Revert for x86 darwin:
20905         2005-06-19  Uros Bizjak  <uros@kss-loka.si>
20906
20907         * config/i386/i386.c (ix86_function_arg_regno_p): Put back the
20908         code before the following patch under TARGET_MACHO.
20909         (ix86_function_value_regno_p): Likewise.
20910
20911 2007-02-02  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
20912
20913         * fold-const.c (negate_expr_p, fold_negate_expr): Handle
20914         COMPLEX_EXPR.
20915
20916 2007-02-02  Maxim Kuvyrkov  <mkuvyrkov@ispras.ru>
20917
20918         PR target/29682
20919         * config/ia64/ia64.c (ia64_speculate_insn): Restrict to memory
20920         loads to general or fp registers.  Add comments.
20921         * config/ia64/ia64.md (reg_pred_prefix): Add comment.
20922
20923 2007-02-02  Paolo Bonzini  <bonzini@gnu.org>
20924
20925         * pointer-set.c (insert_aux): Only return insertion slot.
20926         (pointer_set_insert): Adjust.
20927         (pointer_set_traverse, struct pointer_map_t, pointer_map_create,
20928         pointer_map_destroy, pointer_map_insert, pointer_map_contains,
20929         pointer_map_traverse): New.
20930         * pointer-set.h (pointer_set_traverse, struct pointer_map_t,
20931         pointer_map_create,  pointer_map_destroy, pointer_map_insert,
20932         pointer_map_contains, pointer_map_traverse): Declare.
20933
20934 2007-02-02  Jakub Jelinek  <jakub@redhat.com>
20935
20936         PR middle-end/30473
20937         * builtins.c (fold_builtin_sprintf): Do not attempt to optimize
20938         sprintf (str, "%s").  Do not optimize sprintf (str, "nopercent", p++).
20939
20940 2007-02-02  Maxim Kuvyrkov  <mkuvyrkov@ispras.ru>
20941
20942         * sched-int.h (ds_to_dk, dk_to_ds): Declare functions.
20943
20944         (struct _dep): New type.
20945         (dep_t): New typedef.
20946         (DEP_PRO, DEP_CON, DEP_KIND): New access macros.
20947         (DEP_STATUS): New access macro.  The macro with the same name was
20948         renamed to DEP_LINK_STATUS.
20949         (dep_init): Declare function
20950
20951         (struct _dep_link): New type.
20952         (dep_link_t): New typedef.
20953         (DEP_LINK_NODE, DEP_LINK_NEXT, DEP_LINK_PREV_NEXTP): New access macros.
20954         (DEP_LINK_DEP, DEP_LINK_PRO, DEP_LINK_CON, DEP_LINK_KIND): New macros.
20955         (DEP_LINK_STATUS): New macro.
20956         (debug_dep_links): New debug function.
20957
20958         (struct _deps_list): New type.
20959         (deps_list_t): New typedef.
20960         (DEPS_LIST_FIRST): New access macro.
20961         (FOR_EACH_DEP_LINK): New cycle macro.
20962         (create_deps_list, free_deps_list, delete_deps_list): Declare
20963         functions.
20964         (deps_list_empty_p, debug_deps_list, add_back_dep_to_deps_list): Ditto.
20965         (find_link_by_pro_in_deps_list, find_link_by_con_in_deps_list): Ditto.
20966         (copy_deps_list_change_con): Ditto.
20967
20968         (move_dep_link): Declare function.
20969
20970         (struct _dep_node): New type.
20971         (dep_node_t): New typedef.
20972         (DEP_NODE_BACK, DEP_NODE_DEP, DEP_NODE_FORW): New access macros.
20973
20974         (struct haifa_insn_data.back_deps): New field to hold backward
20975         dependencies of the insn.
20976         (struct haifa_insn_data.depend): Rename to forw_deps.  Change its type
20977         to deps_list_t.
20978         (struct haifa_insn_data.resolved_deps): Rename to resolved_back_deps.
20979         Change its type to deps_list_t.
20980         (INSN_BACK_DEPS): New access macro to use instead of LOG_LINKS.
20981         (INSN_DEPEND): Rename to INSN_FORW_DEPS.
20982         (RESOLVED_DEPS): Rename to INSN_RESOLVED_BACK_DEPS.
20983
20984         (INSN_COST): Move to haifa-sched.c.  Use insn_cost () instead.
20985
20986         (DEP_STATUS): Rename to DEP_LINK_STATUS.  Fix typo in the comment.
20987
20988         (add_forw_dep, delete_back_forw_dep, insn_cost): Update declaration
20989         and all callers.
20990         (dep_cost): Declare.
20991
20992         * sched-deps.c (CHECK): New macro to (en/dis)able sanity checks.
20993         (ds_to_dk, dk_to_ds): New functions.
20994
20995         (init_dep_1): New static function.
20996         (init_dep): New function.
20997         (copy_dep): New static function.
20998
20999         (dep_link_consistent_p, attach_dep_link, add_to_deps_list): New static
21000         functions.
21001         (detach_dep_link): New static function.
21002         (move_dep_link): New function.
21003
21004         (dep_links_consistent_p, dump_dep_links): New static functions.
21005         (debug_dep_links): New debugging function.
21006
21007         (deps_obstack, dl_obstack, dn_obstack): New static variables.
21008
21009         (alloc_deps_list, init_deps_list): New static functions.
21010         (create_deps_list): New function.
21011         (clear_deps_list): New static function.
21012         (free_deps_list, delete_deps_list, deps_list_empty_p): New functions.
21013         (deps_list_consistent_p, dump_deps_list): New static functions.
21014         (debug_deps_list): New function.
21015         (add_back_dep_to_deps_list, find_link_by_pro_in_deps_list): New
21016         functions.
21017         (find_link_by_con_in_deps_list, copy_deps_list_change_con): Ditto.
21018
21019         (maybe_add_or_update_back_dep_1, add_or_update_back_dep_1): Update to
21020         use new scheduler dependencies lists.
21021         (add_back_dep, delete_all_dependences, fixup_sched_groups): Ditto.
21022         (sched_analyze): Ditto.  Initialize dependencies lists.
21023         (add_forw_dep, compute_forward_dependences): Update to use new
21024         scheduler dependencies lists.
21025
21026         (init_dependency_caches): Init deps_obstack.
21027         (free_dependency_caches): Free deps_obstack.
21028
21029         (adjust_add_sorted_back_dep, adjust_back_add_forw_dep): Update to use
21030         new scheduler dependencies lists.
21031         (delete_forw_dep, add_or_update_back_forw_dep): Ditto.
21032         (add_back_forw_dep, delete_back_forw_dep): Ditto.
21033
21034         * sched-rgn.c (set_spec_fed, find_conditional_protection, is_pfree):
21035         Update to use new scheduler dependencies lists.
21036         (is_conditionally_protected, is_prisky, add_branch_dependences): Ditto.
21037         (debug_dependencies): Ditto.
21038         (schedule_region): Update comments.
21039
21040         * sched-ebb.c (earliest_block_with_similiar_load): Update to use new
21041         scheduler dependencies lists.
21042         (schedule_ebb): Update comments.
21043
21044         * rtl.def (DEPS_LIST): Remove.
21045
21046         * lists.c (unused_deps_list): Remove.
21047         (free_list): Update assertions.
21048
21049         (alloc_DEPS_LIST, free_DEPS_LIST_list, free_DEPS_LIST_node): Remove.
21050         (remove_free_DEPS_LIST_elem, copy_DEPS_LIST_list): Ditto.
21051
21052         * rtl.h (free_DEPS_LIST_list, alloc_DEPS_LIST): Remove declarations.
21053         (remove_free_DEPS_LIST_elem, copy_DEPS_LIST_list): Ditto.
21054
21055         * haifa-sched.c (comments): Update.
21056         (insn_cost1): Remove.  Inline the code into insn_cost ().
21057         (insn_cost): Update to use new scheduler dependencies lists.  Move
21058         processing of the dependency cost to dep_cost ().
21059         (dep_cost): New function.  Use it instead of insn_cost () when
21060         evaluating cost of the dependency.  Use compatible interface to
21061         interact with the target.
21062         (priority): Update to use new scheduler dependencies lists.
21063         (rank_for_schedule): Ditto.  Optimize heuristic that prefers the insn
21064         with greater number of insns that depend on the insn.
21065         (schedule_insn): Update to use new scheduler dependencies lists.  Add
21066         code to free backward dependencies lists.  Inline and optimize code
21067         from resolve_dep () - see PR28071.
21068         (ok_for_early_queue_removal): Update to use new scheduler dependencies
21069         lists.  Update call to targetm.sched.is_costly_dependence hook.
21070
21071         (fix_inter_tick, try_ready, fix_tick_ready): Update to use new
21072         scheduler dependencies lists.
21073
21074         (resolve_dep): Remove.  Move the logic to schedule_insn ().
21075         (init_h_i_d): Initialize dependencies lists.
21076
21077         (process_insn_depend_be_in_spec): Rename to
21078         process_insn_forw_deps_be_in_spec.  Update to use new scheduler
21079         dependencies lists.
21080         (add_to_speculative_block, create_check_block_twin, fix_recovery_deps):
21081         Update to use new scheduler dependencies lists.
21082         (clear_priorities, calc_priorities, add_jump_dependencies): Ditto.
21083
21084         * ddg.c (create_ddg_dependence, create_ddg_dep_no_link): Update to use
21085         new scheduler dependencies lists.
21086         (build_intra_loop_deps): Ditto.
21087
21088         * target.h (struct _dep): Declare to use in
21089         gcc_target.sched.is_costly_dependence.
21090         (struct gcc_target.sched.adjust_cost): Fix typo.
21091         (struct gcc_target.sched.is_costly_dependence): Change signature to
21092         use single dep_t parameter instead of an equivalent triad.
21093         (struct gcc_target.sched.adjust_cost_2): Remove.
21094
21095         * target-def.h (TARGET_SCHED_ADJUST_COST_2): Remove.
21096
21097         * reg-notes.def (DEP_TRUE, DEP_OUTPUT, DEP_ANTI): Update comments.
21098
21099         * doc/tm.texi (TARGET_SCHED_IS_COSTLY_DEPENDENCE): Update
21100         documentation.
21101         (TARGET_SCHED_ADJUST_COST_2): Remove documentation.
21102
21103         * doc/rtl.texi (LOG_LINKS): Remove part about instruction scheduler.
21104         (REG_DEP_TRUE): Document.
21105
21106         * config/ia64/ia64.c (ia64_adjust_cost_2): Rename to ia64_adjust_cost.
21107         Change signature to correspond to the targetm.sched.adjust_cost hook.
21108         Update use in TARGET_SCHED_ADJUST_COST_2.
21109         (TARGET_SCHED_ADJUST_COST_2): Rename to TARGET_SCHED_ADJUST_COST.
21110         (ia64_dependencies_evaluation_hook, ia64_dfa_new_cycle): Update to use
21111         new scheduler dependencies lists.
21112         (ia64_gen_check): Ditto.
21113
21114         * config/mips/mips.c (vr4130_swap_insns_p): Update to use new
21115         scheduler dependencies lists.
21116
21117         * config/rs6000/rs6000.c (rs6000_is_costly_dependence): Change
21118         signature to correspond to the targetm.sched.is_costly_dependence hook.
21119         (is_costly_group): Update to use new scheduler dependencies lists.
21120
21121         * config/spu/spu.c (spu_sched_adjust_cost): Use insn_cost () function
21122         instead of INSN_COST () macro.
21123
21124 2007-02-01  Ian Lance Taylor  <iant@google.com>
21125
21126         * lower-subreg.c (resolve_clobber): Handle a subreg of a concatn.
21127
21128 2007-02-01  Guy Martin  <gmsoft@gentoo.org>
21129
21130         * pa.md (tp_load): Correct mfctl instruction syntax.
21131
21132 2007-02-01  Geoffrey Keating  <geoffk@apple.com>
21133
21134         * config/rs6000/rs6000.c (rs6000_stack_info): Correct
21135         altivec_padding_size calculation on AIX.  Improve comment, add
21136         assert to verify that it's right.
21137
21138         * config/rs6000/darwin.h (MD_UNWIND_SUPPORT): Don't define for
21139         64-bit.
21140
21141 2007-2-01  Seongbae Park  <seongbae.park@gmail.com>
21142
21143         PR inline-asm/28686
21144         * global.c (global_alloc): Add mising initialization of
21145         ELIMINABLE_REGSET.
21146
21147 2007-02-01  Roger Sayle  <roger@eyesopen.com>
21148
21149         * alias.c (init_alias_analysis): Correct whitespace.
21150         * bb-reorder.c (fix_edges_for_rarely_executed_code,
21151         partition_hot_cold_basic_blocks): Likewise.
21152         * builtins.c (expand_builtin_printf, expand_builtin_fprintf,
21153         expand_builtin_sprintf, fold_builtin_carg, fold_builtin_sprintf,
21154         maybe_emit_sprintf_chk_warning, fold_builtin_sprintf_chk,
21155         fold_builtin_snprintf_chk, fold_builtin_printf,
21156         fold_builtin_fprintf, do_mpfr_ckconv, do_mpfr_arg1, do_mpfr_arg2,
21157         do_mpfr_arg3, do_mpfr_sincos): Likewise.
21158         * cfgcleanup.c (cleanup_cfg): Likewise.
21159         * cfgexpand.c (tree_expand_cfg): Likewise.
21160         * fold-const.c (fold_binary) <RDIV_EXPR>: Likewise.
21161         * function.c (get_next_funcdef_no): Likewise.
21162         * gengtype.c (main): Likewise.
21163         * genmodes.c (main): Likewise.
21164         * gcse.c (bypass_conditional_jumps, print_ldst_list): Likewise.
21165         * haifa-sched.c (schedule_block, extend_h_i_d): Likewise.
21166         * ifcvt.c (noce_emit_move_insn): Likewise.
21167         * modulo-sched.c (generate_prolog_epilog, sms_schedule_by_order):
21168         Likewise.
21169         * stor-layout.c (get_best_mode): Likewise.
21170         * tree-ssa-loop-niter.c (get_val_for): Likewise.
21171         * tree-ssa-structalias.c (get_varinfo, get_varinfo_fc,
21172         scc_visit, do_ds_constraint, do_complex_constraint, label_visit,
21173         perform_var_substitution, solve_graph): Likewise.
21174         * tree-vrp.c (vrp_finalize): Likewise.
21175
21176 2007-02-01  Ian Lance Taylor  <iant@google.com>
21177
21178         * lower-subreg.c (simplify_gen_subreg_concatn): If we ask for the
21179         high part of a paradoxical subreg, return a constant zero.
21180
21181 2007-02-01  Zdenek Dvorak <dvorakz@suse.cz>
21182
21183         * toplev.c (lang_dependent_init): Call init_set_costs.
21184         * loop-init.c (loop_optimizer_init): Do not call init_set_costs.
21185
21186 2007-02-01  Richard Guenther  <rguenther@suse.de>
21187
21188         PR middle-end/30656
21189         * fold-const.c (fold_negate_expr): Allow negating a
21190         constant if overflow does not change.
21191
21192 2007-02-01  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
21193
21194         * doc/c-tree.texi (Expression trees): Improve markup.
21195         * doc/tm.texi (Register Classes, Addressing Modes)
21196         (Floating Point): Fix spacing after abbreviations.  Fix some
21197         typos.
21198
21199 2007-02-01  Ben Elliston  <bje@au.ibm.com>
21200
21201         * doc/invoke.texi: Replace "bugfix" with "bug fix" throughout.
21202         * doc/contrib.texi: Likewise.
21203         * doc/install.texi: Likewise.
21204
21205 2007-01-31  Richard Henderson  <rth@redhat.com>
21206             Ian Lance Taylor  <iant@google.com>
21207
21208         * lower-subreg.c: New file.
21209         * rtl.def (CONCATN): Define.
21210         * passes.c (init_optimization_passes): Add pass_lower_subreg and
21211         pass_lower_subreg2.
21212         * emit-rtl.c (update_reg_offset): New static function, broken out
21213         of gen_rtx_REG_offset.
21214         (gen_rtx_REG_offset): Call update_reg_offset.
21215         (gen_reg_rtx_offset): New function.
21216         * regclass.c: Revert patch of 2006-03-05, restoring
21217         reg_scan_update.
21218         (clear_reg_info_regno): New function.
21219         * dwarf2out.c (concatn_loc_descriptor): New static function.
21220         (loc_descriptor): Handle CONCATN.
21221         * common.opt (fsplit_wide_types): New option.
21222         * opts.c (decode_options): Set flag_split_wide_types when
21223         optimizing.
21224         * timevar.def (TV_LOWER_SUBREG): Define.
21225         * rtl.h (gen_reg_rtx_offset): Declare.
21226         (reg_scan_update): Declare.
21227         * regs.h (clear_reg_info_regno): Declare.
21228         * tree-pass.h (pass_lower_subreg): Declare.
21229         (pass_lower_subreg2): Declare.
21230         * doc/invoke.texi (Option Summary): List -fno-split-wide-types.
21231         (Optimize Options): Add -fsplit-wide-types to -O1 list.  Document
21232         -fsplit-wide-types.
21233         * doc/rtl.texi (Regs and Memory): Document concat and concatn.
21234         * Makefile.in (OBJS-common): Add lower-subreg.o.
21235         (lower-subreg.o): New target.
21236
21237 2007-01-31  Kazu Hirata  <kazu@codesourcery.com>
21238
21239         * config/sh/sh.h (HAVE_SECONDARY_RELOADS): Remove.
21240
21241 2007-01-31  Anatoly Sokolov <aesok@post.ru>
21242
21243         PR target/19087
21244         * config/avr/avr.c (DWARF2_ADDR_SIZE): Define.
21245
21246 2007-01-31  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
21247
21248         PR middle-end/29335
21249         * builtins.c (fold_builtin_sqrt): Use MPFR for constant args.
21250
21251 2007-01-31  Zdenek Dvorak <dvorakz@suse.cz>
21252
21253         * cfgloop.h: Include vec-prim.h.
21254         (enum li_flags): Remove LI_ONLY_OLD.
21255         (loop_iterator): Changed.
21256         (fel_next, fel_init): Iterate over loop tree.
21257         (FOR_EACH_LOOP_BREAK): New macro.
21258         * loop-unswitch.c (unswitch_loops): Do not pass LI_ONLY_OLD to
21259         FOR_EACH_LOOP.
21260         * tree-ssa-loop-unswitch.c (tree_ssa_unswitch_loops): Ditto.
21261         * modulo-sched.c (sms_schedule): Ditto.
21262         * tree-vectorizer.c (vectorize_loops): Ditto.
21263         * doc/loop.texi: Update information on loop numbering and behavior of
21264         FOR_EACH_LOOP wrto new loops.
21265         * tree-scalar-evolution.c (compute_overall_effect_of_inner_loop,
21266         add_to_evolution_1): Test nestedness of loops instead of comparing
21267         their numbers.
21268         * tree-chrec.c (chrec_fold_plus_poly_poly,
21269         chrec_fold_multiply_poly_poly, chrec_evaluate,
21270         hide_evolution_in_other_loops_than_loop, chrec_component_in_loop_num,
21271         reset_evolution_in_loop): Ditto.
21272         * Makefile.in (CFGLOOP_H): Add vecprim.h dependency.
21273
21274 2007-01-31  Dirk Mueller  <dmueller@suse.de>
21275
21276         * c-common.c (warn_about_parentheses): Separate warning about
21277         un-parenthized sequence of comparison operators from the one
21278         which is supposed to warn about x <= y <= z.
21279
21280 2007-01-31  Uros Bizjak  <ubizjak@gmail.com>
21281
21282         * optabs.h (enum optab_index): Add new OTI_isinf.
21283         (isinf_optab): Define corresponding macro.
21284         * optabs.c (init_optabs): Initialize isinf_optab.
21285         * genopinit.c (optabs): Implement isinf_optab using isinf?f2
21286         patterns.
21287         * builtins.c (mathfn_built_in): Handle BUILT_IN_ISINF{,F,L}.
21288         (expand_builtin_interclass_mathfn): Expand BUILT_IN_ISINF{,F,L}
21289         using isinf_optab.
21290         (expand_builtin): Expand BUILT_IN_ISINF{,F,L} using
21291         expand_builtin_interclass_mathfn.
21292         * reg_stack.c (subst_stack_regs_pat): Handle UNSPEC_FXAM.
21293         * config/i386/i386.md (UNSPEC_FXAM): New constant.
21294         (fxam<mode>2_i387): New insn pattern.
21295         (isinf<mode>2) New expander to implement isinf, isinff and isinfl
21296         built-in functions as x87 inline asm.
21297
21298 2007-01-31  Kazu Hirata  <kazu@codesourcery.com>
21299
21300         * config/arm/unwind-arm.h (_sleb128_t, _uleb128_t): New.
21301
21302 2007-01-30  Eric Christopher  <echristo@apple.com>
21303
21304         * config.gcc: Add geode.
21305
21306 2007-01-31  Kazu Hirata  <kazu@codesourcery.com>
21307
21308         * cgraphunit.c, config/arm/arm.c, config/m68k/m68k.c,
21309         ipa-inline.c, tree-profile.c, tree-ssa-live.c,
21310         tree-ssa-math-opts.c, tree-ssanames.c, tree-vect-analyze.c,
21311         value-prof.c: Fix comment typos.
21312
21313 2007-01-30  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
21314
21315         PR c++/24745
21316         * doc/invoke.texi (Wpointer-arith): Document warning.
21317
21318 2007-01-30  Janis Johnson  <janis187@us.ibm.com>
21319
21320         * doc/extend.texi (Decimal Floating Types): Remove decfloat.h from
21321         the list of discrepancies from the draft TR.
21322
21323 2007-01-30  Dirk Mueller  <dmueller@suse.de>
21324
21325         PR c++/30601
21326         * doc/invoke.texi (-Wreturn-type): Update description to
21327         match new behavior.
21328
21329 2007-01-30  Richard Sandiford  <richard@codesourcery.com>
21330
21331         * cfgrtl.c (try_redirect_by_replacing_jump): Check only_sets_cc0_p.
21332
21333 2007-01-30  Uros Bizjak  <ubizjak@gmail.com>
21334
21335         * builtins.c (expand_builtin_int_interclass_roundingfn): New function
21336         to handle optabs that operate on floating point input argument and
21337         output to integer output.
21338         (expand_builtin_mathfn) [BUILT_IN_ILOGB]: Move from here ...
21339         (expand_builtin_interclass_mathfn) [BUILT_IN_ILOGB]: ... to here.
21340         (expand_builtin): Expand BUILT_IN_ILOGB{,F,L} using
21341         expand_builtin_interclass_mathfn ().
21342         * config/i386/i386.md (fxtractxf3_i387): Rename from *fxtractxf3_i387.
21343         (ilogbsi2): Remove.
21344         (ilogbxf2, ilogb<mode>2): New expanders to implement ilogb, ilogbf and
21345         ilogbl built-in functions as x87 intrinsics.
21346
21347 2007-01-30  Richard Guenther  <rguenther@suse.de>
21348
21349         PR middle-end/27657
21350         * dwarf2out.c (reference_to_unused): Query varpool if the
21351         variable was output.
21352
21353 2007-01-30  Richard Guenther  <rguenther@suse.de>
21354
21355         PR middle-end/30313
21356         * passes.c (execute_one_pass): Reset in_gimple_form to not
21357         confuse non-unit-at-a-time mode.
21358
21359 2007-01-29  Roger Sayle  <roger@eyesopen.com>
21360             Richard Guenther  <rguenther@suse.de>
21361
21362         * fold-const.c (round_up): Make HIGH an unsigned HOST_WIDE_INT to
21363         avoid undefined behaviour on overflow.  Use force_fit_type_double
21364         to construct the constant with the specified TREE_OVERFLOW.
21365
21366 2007-01-29  Janis Johnson  <janis187@us.ibm.com>
21367
21368         * config/dfp-bit.c: Add parameterized support for fp exceptions.
21369         * config/dfp-bit.h: Ditto.
21370
21371 2007-01-29  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
21372
21373         * c-decl.c (pop_scope): Replace warnings with call to
21374         warn_for_unused_label.
21375         * c-common.h (warn_for_unused_label): Declare.
21376         * c-common.c (warn_for_unused_label): Define.
21377
21378 2007-01-29  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
21379
21380         * tree-optimize.c (update_inlined_to_pointers): Delete unused
21381         function.
21382
21383 2007-01-29  Janis Johnson  <janis187@us.ibm.com>
21384
21385         * Makefile.in (USER_H): Remove decfloat.h.
21386         * ginclude/decfloat.h: Delete, moving contents to ...
21387         * ginclude/float.h: Add support for decimal floating point,
21388         guarded by __STDC_WANT_DEC_FP__.
21389
21390 2007-01-29  Mike Stump  <mrs@apple.com>
21391
21392         * doc/gccint.texi (Top): Rename Loop Representation to Loop
21393         Analysis and Representation to resolve case insensitive conflict.
21394         * doc/loop.texi (Loop Analysis and Representation): Likewise.
21395
21396 2007-01-28  Daniel Berlin  <dberlin@dberlin.org>
21397
21398         * tree.h (struct tree_memory_tag): Add aliases member.
21399         (MTAG_ALIASES): New macro.
21400         * tree-ssa-alias.c (alias_bitmap_obstack): New variable.
21401         (add_may_alias): Remove pointer-set. Update for may_aliases being
21402         a bitmap.
21403         (mark_aliases_call_clobbered): Update for may_aliases being a
21404         bitmap.
21405         (compute_tag_properties): Ditto.
21406         (create_partition_for): Ditto.
21407         (compute_memory_partitions): Ditto.
21408         (dump_may_aliases_for): Ditto.
21409         (is_aliased_with): Ditto.
21410         (add_may_alias_for_new_tag): Ditto.
21411         (rewrite_alias_set_for): Rewrite for may_aliases being a bitmap.
21412         (compute_is_aliased): New function.
21413         (compute_may_aliases): Call compute_is_aliased).
21414         (init_alias_info): Initialize alias_bitmap_obstack.
21415         (union_alias_set_into): New function.
21416         (compute_flow_sensitive_aliasing): Use union_aliases_into.
21417         (have_common_aliases_p): Rewrite to take two bitmaps and use
21418         intersection.
21419         (compute_flow_insensitive_aliasing): Stop using pointer-sets.
21420         Update for bitmaps.
21421         (finalize_ref_all_pointers): Update for add_may_alias changes.
21422         (new_type_alias): Ditto.
21423         * tree-flow-inline.h (may_aliases): Return a bitmap.
21424         * tree-dfa.c (dump_variable): Check for MTAG_P'ness.
21425         * tree-ssa.c (verify_flow_insensitive_alias_info): Update for
21426         may_aliases being a bitmap.
21427         * tree-flow.h (struct var_ann_d): Remove may_aliases member.
21428         may_aliases now returns a bitmap.
21429         * tree-ssa-structalias.c (merge_smts_into): Update for may_aliases
21430         being a bitmap.
21431         * tree-ssa-operands.c (add_virtual_operand): Update for
21432         may_aliases being a bitmap.
21433
21434 2007-01-29  Daniel Berlin  <dberlin@dberlin.org>
21435
21436         PR tree-optimization/30630
21437         * tree-ssa-structalias.c (do_complex_constraint): Mark correct
21438         variable as changed.
21439
21440 2007-01-29  Simon Martin  <simartin@users.sourceforge.net>
21441
21442         PR c++/28266
21443         * gimplify.c (gimplify_target_expr): Make sure that the TARGET_EXPR is
21444         expanded only once even if an error occurs.
21445
21446 2007-01-29  Ben Elliston  <bje@au.ibm.com>
21447
21448         * gcov-io.h (__gcov_indirect_call_profiler): Declare.
21449         (__gcov_average_profiler): Likewise.
21450         (__gcov_ior_profiler): Likewise.
21451         (__gcov_merge_ior): Likewise.
21452
21453 2007-01-28  Jan Hubicka  <jh@suse.cz>
21454
21455         * builtins.c (expand_builtin_memset): Fix typo in my last patch.
21456         * value-prof.c (stringop_block_profile): Likewise.
21457
21458 2007-01-28  Jan Hubicka  <jh@suse.cz>
21459
21460         * expr.c (emit_block_move_via_movmem, emit_block_move_via_libcall):
21461         Add variant handling histograms; add wrapper.
21462         (clear_storage_via_libcall): Export.
21463         (emit_block_move_hints): Break out from ...; add histograms.
21464         (emit_block_move): ... this one.
21465         (clear_storage_hints): Break out from ...; add histograms.
21466         (clear_storage): ... this one.
21467         (set_storage_via_memset): Handle histogram.
21468         * expr.h (emit_block_move_via_libcall, emit_block_move_hints): Declare.
21469         (clear_storage_hints, clear_storage_via_libcall): Declare.
21470         (set_storage_via_setmem): Update prototype.
21471         * doc/md.texi (movmem, setmem): Document new arguments.
21472
21473         * value-prof.c (dump_histogram_value, tree_find_values_to_profile):
21474         Add new histograms.
21475         (stringop_block_profile): New global function.
21476         (tree_stringops_values_to_profile): Profile block size and alignment.
21477         * value-prof.h (enum hist_type): add HIST_TYPE_AVERAGE and
21478         HIST_TYPE_IOR.
21479         (struct profile_hooks): Add gen_average_profiler and gen_ior_profiler.
21480         (stringop_block_profile): Declare.
21481         * builtins.c: Include value-prof.h.
21482         (expand_builtin_memcpy, expand_builtin_memset): Pass block profile.
21483         * gcov-ui.h (GCOV_COUNTER_NAMES): Add new counter.
21484         (GCOV_COUNTER_AVERAGE, GCOV_COUNTER_IOR): New constants.
21485         (GCOV_COUNTERS, GCOV_LAST_VALUE_COUNTER): Update.
21486         * profile.c (instrument_values): Add new counters.
21487         * cfgexpand.c (expand_gimple_basic_block): Propagate histograms to
21488         calls.
21489         * tree-profile.c (tree_average_profiler_fn, tree_ior_profiler_fn): New.
21490         (tree_init_edge_profiler): Build new profilers.
21491         (tree_gen_average_profiler, tree_gen_ior_profiler): New.
21492         (pass_tree_profile): Add dump.
21493         (tree_profile_hooks): Update.
21494         * Makefile.in (LIBGCOV): Add new constants.
21495         * libgcov.c (__gcov_merge_ior, __gcov_average_profiler,
21496         __gcov_ior_profiler): New.
21497         * i386.md (movmem/setmem expanders): Add new optional arguments.
21498
21499 2007-01-28  David Edelsohn  <edelsohn@gnu.org>
21500
21501         * doc/md.texi (Standard Pattern Names): Document blockage pattern.
21502
21503 2007-01-28  Zdenek Dvorak <dvorakz@suse.cz>
21504
21505         * tree-ssa-loop-unswitch.c: Include tree-inline.h.
21506         (tree_unswitch_single_loop): Pass eni_size_weights to
21507         tree_num_loop_insns.
21508         * tree-ssa-loop-manip.c: Include tree-inline.h.
21509         (can_unroll_loop_p): Pass eni_size_weights to
21510         tree_num_loop_insns.
21511         * tree-ssa-loop-ch.c (should_duplicate_loop_header_p):
21512         Pass eni_size_weights to estimate_num_insns.
21513         * tree.h (init_inline_once): Export.
21514         * toplev.c (backend_init): Call init_inline_once.
21515         * cgraphunit.c (cgraph_process_new_functions,
21516         cgraph_analyze_function): Pass eni_inlining_weights to
21517         estimate_num_insns.
21518         * ipa-inline.c (compute_inline_parameters): Ditto.
21519         * tree-ssa-loop-ivcanon.c (tree_num_loop_insns): Pass weights
21520         to estimate_num_insns.
21521         (try_unroll_loop_completely): Pass eni_size_weights to
21522         tree_num_loop_insns.
21523         * tree-eh.c (decide_copy_try_finally): Pass eni_size_weights
21524         ot estimate_num_insns.
21525         * tree-ssa-loop-prefetch.c: Include tree-inline.h.
21526         (loop_prefetch_arrays): Pass eni_time_weights to tree_num_loop_insns.
21527         * tree-inline.c (eni_inlining_weights, eni_size_weights,
21528         eni_time_weights): New variables.
21529         (init_inline_once): Initialize them.
21530         (struct eni_data): Mew.
21531         (estimate_num_insns_1, estimate_num_insns): Use weights.
21532         * tree-inline.h (struct eni_weights_d): New.
21533         (eni_inlining_weights, eni_size_weights, eni_time_weights): Declare.
21534         (estimate_num_insns): Declaration changed.
21535         * cfgloop.h (tree_num_loop_insns): Declaration changed.
21536         * Makefile.in (tree-ssa-loop-unswitch.o, tree-ssa-loop-prefetch.o,
21537         tree-ssa-loop-manip.o): Add TREE_INLINE_H dependency.
21538
21539 2007-01-28  Zdenek Dvorak <dvorakz@suse.cz>
21540
21541         * tree-data-ref.c (conflict_fn): Assert that the number of affine
21542         relations in the conflict function is valid.
21543
21544 2007-01-27  Ian Lance Taylor  <iant@google.com>
21545
21546         * common.opt: Add fstrict-overflow.
21547         * opts.c (decode_options): Set flag_strict_overflow if -O2.
21548         * flags.h (TYPE_OVERFLOW_WRAPS): Define.
21549         (TYPE_OVERFLOW_UNDEFINED): Define.
21550         (TYPE_OVERFLOW_TRAPS): Define.  This replaces TYPE_TRAP_SIGNED.
21551         Replace all uses.
21552         * tree.h (TYPE_TRAP_SIGNED): Don't define.
21553         * fold-const.c (negate_expr_p): Use TYPE_OVERFLOW_UNDEFINED.
21554         (fold_negate_expr): Likewise.
21555         (make_range): Likewise.
21556         (extract_muldiv_1): Likewise.
21557         (maybe_canonicalize_comparison): Likewise.
21558         (fold_comparison): Likewise.
21559         (fold_binary): Likewise.
21560         (tree_expr_nonnegative_p): Likewise.
21561         (tree_expr_nonzero_p): Likewise.
21562         * tree-vrp.c (compare_values): Likewise.
21563         (extract_range_from_binary_expr): Likewise.
21564         (extract_range_from_unary_expr): Likewise.
21565         * tree-ssa-loop-niter.c (infer_loop_bounds_from_signedness):
21566         Likewise.
21567         (nowrap_type_p): Likewise.
21568         * tree-scalar-evolution.c (simple_iv): Likewise.
21569         * fold-const.c (negate_expr_p): Use TYPE_OVERFLOW_WRAPS.
21570         (build_range_check): Likewise.
21571         (extract_muldiv_1): Likewise.
21572         (fold_comparison): Likewise.
21573         * tree-vrp.c (vrp_int_const_binop): Likewise.
21574         (extract_range_from_unary_expr): Likewise.
21575         * convert.c (convert_to_integer): Likewise.
21576         * fold-const.c (fold_negate_expr): Use TYPE_OVERFLOW_TRAPS.
21577         (fold_comparison): Likewise.
21578         (fold_binary): Likewise.
21579         * optabs.c (optab_for_tree_code): Likewise.
21580         * tree-vectorizer.c (vect_is_simple_reduction): Likewise.
21581         * simplify-rtx.c (simplify_const_relational_operation): Check
21582         flag_strict_overflow and flag_trapv.
21583         (simplify_const_relational_operation): Likewise.
21584         * doc/invoke.texi (Option Summary): Mention -fstrict-overflow.
21585         (Optimize Options): Add -fstrict-overflow to -O2 list.  Document
21586         -fstrict-overflow.
21587
21588 2007-01-27  Roger Sayle  <roger@eyesopen.com>
21589
21590         * tree.c (tree_fold_gcd): Delete.
21591         * tree.h (tree_fold_gcd): Remove prototype.
21592         * tree-data-ref.c (tree_fold_divides_p): Don't use tree_fold_gcd to
21593         test whether one constant integer is a multiple of another.  Instead
21594         call int_const_binop with TRUNC_MOD_EXPR and test for a zero result.
21595         * fold-const.c (multiple_of_p):  We've determined both TOP and
21596         BOTTOM are integer constants so we can call int_const_binop directly
21597         instead of the more generic const_binop.
21598
21599 2007-01-27  Roger Sayle  <roger@eyesopen.com>
21600
21601         * fold-const.c (size_binop): In the fast-paths for X+0, 0+X, X-0 and
21602         1*X check that the constant hasn't overflowed, to preserve the
21603         TREE_OVERFLOW bit.
21604         (round_up): Provide an efficient implementation when rouding-up an
21605         INTEGER_CST to a power-of-two.
21606
21607 2007-01-28  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
21608
21609         * doc/sourcebuild.texi: Add comma for clarity.
21610         * doc/extend.texi: Fix some typos.
21611         * doc/passes.texi: Likewise.
21612         * doc/cppinternals.texi: Likewise.
21613         * doc/c-tree.texi: Likewise.
21614         * doc/tree-ssa.texi: Likewise.
21615         * doc/install.texi: Likewise.
21616
21617 2007-01-27  Jan Hubicka  <jh@suse.cz>
21618
21619         * tree-sra.c (sra_walk_function): Don't rely on aliases being build.
21620         (pass_sra): Do not require alias information.
21621         * passes.c (init_optimization_passes): Add SRA
21622
21623 2007-01-27  Steven Bosscher  <steven@gcc.gnu.org>
21624
21625         * tracer.c (rest_of_handle_tracer): We already cleaned
21626         up the CFG in tracer() so don't do it here again.
21627         * cfgcleanup.c (rest_of_handle_jump2): Don't repeat
21628         cleanup_cfg here, either.  And don't call renumber_insns.
21629
21630         * cfgrtl.c (rtl_verify_flow_info_1): Don't verify that BB_END
21631         and BB_HEAD are in the insn stream here.  Instead make sure
21632         that BB_INSN is valid on all insns.  Also, do check here that
21633         there are no pending branch predictions...
21634         (rtl_verify_flow_info): ...instead of doing it here.  Checks
21635         for BB_END and BB_HEAD moved from rtl_verify_flow_info_1 to
21636         here.
21637
21638 2007-01-26  Roger Sayle  <roger@eyesopen.com>
21639
21640         * config/i386/i386.c (ix86_swap_binary_operands_p): New helper
21641         function to simplify/factorize operand order canonicalization.
21642         (ix86_fixup_binary_operands): Reorganize using the above function.
21643         (ix86_binary_operator_ok): Likewise.
21644
21645 2007-01-27  Jakub Jelinek  <jakub@redhat.com>
21646
21647         * genattrtab.c (struct attr_value_list, insn_code_values): Move to
21648         file scope from optimize_attrs.
21649         (simplify_test_exp): If insn_code_values is not NULL, use it to speed
21650         up search.
21651         (optimize_attrs): Clear insn_code_values after freeing it.
21652
21653 2007-01-26  Zdenek Dvorak <dvorakz@suse.cz>
21654
21655         * tree-ssa-address.c (create_mem_ref): Remove ", bsi" from
21656         a parts.base assignment.
21657
21658 2007-01-26  Zdenek Dvorak <dvorakz@suse.cz>
21659
21660         * tree-data-ref.c (dump_subscript): Use dump_conflict_function.
21661         (compute_subscript_distance, initialize_data_dependence_relation,
21662         finalize_ddr_dependent, analyze_ziv_subscript,
21663         analyze_siv_subscript_cst_affine,
21664         compute_overlap_steps_for_affine_univar,
21665         compute_overlap_steps_for_affine_1_2, analyze_subscript_affine_affine,
21666         analyze_siv_subscript, analyze_miv_subscript,
21667         analyze_overlapping_iterations, subscript_dependence_tester_1,
21668         compute_self_dependence, free_dependence_relation): Work
21669         with affine_fn instead of chrecs.
21670         (dump_affine_function, dump_conflict_function, affine_function_equal_p,
21671         common_affine_function, affine_function_base,
21672         affine_function_constant_p, affine_fn_op, affine_fn_plus,
21673         affine_fn_minus, affine_fn_free, conflict_fn_not_known,
21674         conflict_fn_no_dependence, free_conflict_function, free_subscripts,
21675         conflict_fn, affine_fn_cst, affine_fn_univar): New functions.
21676         (all_chrecs_equal_p): Removed.
21677         * tree-data-ref.h (affine_fn, conflict_function): New types.
21678         (struct subscript): Change type of conflicting_iterations_in_a
21679         and conflicting_iterations_in_b.
21680
21681 2007-01-26  Steve Ellcey  <sje@cup.hp.com>
21682
21683         PR other/30182
21684         * config/pa/pa.h (TARGET_HPUX_11): New.
21685         * config/pa/pa-hpux11.h (TARGET_HPUX_11): New.
21686         * config/pa/pa.c (pa_init_builtins): Use TARGET_HPUX_11.
21687
21688 2007-01-26  Daniel Berlin  <dberlin@dberlin.org>
21689         Richard Guenther  <rguenther@suse.de>
21690
21691         * tree-ssa-structalias.c (solve_graph): Handle case
21692         we merged the variable to another.
21693
21694 2007-01-25  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
21695
21696         * builtins.c (fold_builtin_1): Treat ccos and ccosh as 'even'
21697         functions.
21698
21699         * fold-const.c (negate_mathfn_p): Treat casin, casinh, catan,
21700         catanh, cproj, csin, csinh, ctan and ctanh as 'odd' functions.
21701
21702 2007-01-25  DJ Delorie  <dj@redhat.com>
21703
21704         * config/m32c/m32c.c (m32c_cannot_change_mode_class): We don't
21705         allow changes to modes which don't fit in those registers.
21706
21707         * reload1.c (choose_reload_regs): Check for invalid subregs before
21708         computing their locations, not after.
21709
21710 2007-01-25  Geoffrey Keating  <geoffk@apple.com>
21711
21712         PR 25127
21713         * config/rs6000/rs6000.c (first_altivec_reg_to_save): On Darwin,
21714         save Altivec registers in an eh_return function.
21715         (compute_vrsave_mask): Likewise.
21716         (rs6000_stack_info): Correct AIX/Darwin stack alignment computation
21717         for saving Altivec registers.
21718         (rs6000_emit_prologue): Don't allocate stack twice in
21719         eh_return function.  Correct expected value of altivec_save_offset
21720         when using save_world.  Describe save of R0 to stack when using
21721         save_world.  Describe stack pointer adjustment when using
21722         save_world.  Remove duplicated eh_return parameter register saving.
21723         Update sp_offset variable after save_world.
21724         * config/rs6000/t-darwin (LIB2FUNCS_STATIC_EXTRA): Remove
21725         darwin-world.asm.
21726         (LIB2FUNCS_EXTRA): Add darwin-world.asm.
21727         * config/rs6000/darwin.h (SUBTARGET_OVERRIDE_OPTIONS): -m64
21728         implies Altivec.
21729
21730 2007-01-25  Steve Ellcey  <sje@cup.hp.com>
21731
21732         * config.gcc (ia64*-*-hpux*): Make posix threads the default.
21733
21734 2007-01-25  Steve Ellcey  <sje@cup.hp.com>
21735
21736         PR other/30182
21737         * config/pa/pa.c (pa_init_builtins): Set asm names for finite routines.
21738         * config/ia64/ia64.c (ia64_init_builtins):  Ditto.
21739
21740 2007-01-25  Richard Guenther  <rguenther@suse.de>
21741
21742         * doc/invoke.texi (-Wcoverage-mismatch): Document.
21743         * common.opt (-Wcoverage-mismatch): New warning option.
21744         * coverage.c (get_coverage_counts): Ignore coverage mismatch
21745         if -Wcoverage-mismatch is given.
21746
21747 2007-01-25  Razya Ladelsky  <razya@il.ibm.com>
21748
21749         * ipa-cp.c (ipcp_insert_stage, ipcp_driver): Support for SSA.
21750         (ipcp_driver): Change to static definition.
21751         Add dumping of the ifunctions.
21752         (constant_val_insert): Remove unused parameter. Support for SSA.
21753         (ipcp_propagate_const): Support for SSA.
21754         (ipcp_profile_bb_print): Print only analyzed nodes.
21755         (ipcp_replace_map_create): Remove support for Fortran constant
21756         for now.
21757         * ipa-prop.c (ipa_method_modify_stmt,
21758         ipa_callsite_compute_param): Support for SSA.
21759         * ipa-prop.h (ipcp_driver): Remove declaration.
21760         (IS_VALID_TREE_MAP_INDEX): Add define.
21761
21762 2007-01-24  Geoffrey Keating  <geoffk@apple.com>
21763
21764         * unwind-dw2.c (execute_stack_op): Handle DW_OP_swap.
21765
21766 2007-01-24  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
21767
21768         PR middle-end/30447
21769         * builtins.c (fold_builtin_cabs): Use MPFR to evaluate a
21770         constant argument to cabs and do it without checking for
21771         -funsafe-math-optimizations.
21772
21773 2007-01-24  Douglas Gregor  <dgregor@osl.iu.edu>
21774
21775         * c-common.h (RID_FIRST_CXX0X): New.
21776         (RID_LAST_CXX0X): New.
21777         * c-opts.c (c_common_handle_option): -Wc++0x-compat is triggered
21778         by -Wall.
21779         * c.opt (Wc++0x-compat): New.
21780         * doc/invoke.texi (-Wc++0x-compat): Document.
21781
21782 2007-01-24  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
21783
21784         * builtins.c (fold_builtin_carg): New.
21785         (fold_builtin_1): Use it.
21786
21787 2007-01-24  Jan Hubicka  <jh@suse.cz>
21788
21789         * ipa-inline.c (cgraph_decide_inlining): Initialize initial_insns.
21790
21791         * ipa-inline.c (initial_insns, max_insns): Delete.
21792         (compute_max_insns): New function.
21793         (cgraph_decide_inlining_of_small_function): Use it; take minimal
21794         amount of insns as base for code growth.
21795         (cgraph_decide_inlining): Make initial_insns local; do not compute
21796         max_insns.
21797         * params.def (PARAM_INLINE_UNIT_GROWTH): Set to 60.
21798         * doc/invoke.texi (inline-unit-growth): Update docs.
21799
21800 2007-01-24  Jakub Jelinek  <jakub@redhat.com>
21801
21802         * config/i386/i386.h (x86_cmpxchg16b): Remove const.
21803         (TARGET_CMPXCHG16B): Define to x86_cmpxchg16b.
21804         * config/i386/i386.c (x86_cmpxchg16b): Remove const.
21805         (override_options): Add PTA_CX16 flag.  Set x86_cmpxchg16b
21806         for CPUs that have PTA_CX16 set.
21807
21808         PR middle-end/27416
21809         * gimplify.c (omp_check_private): New function.
21810         (gimplify_scan_omp_clauses): Use it for
21811         firstprivate/lastprivate/reduction.
21812
21813         PR middle-end/30494
21814         * gimplify.c (omp_add_variable): Don't call omp_notice_variable
21815         on TYPE_SIZE_UNIT for GOVD_LOCAL VLAs.
21816
21817         PR middle-end/30421
21818         * omp-low.c (lower_omp_for_lastprivate): Add dlist argument.
21819         If lower_lastprivate_clauses emits some statements, append them
21820         to dlist rather than body_p and to body_p append an initializer.
21821         (lower_omp_for): Adjust caller.
21822
21823 2007-01-24  Steve Ellcey  <sje@cup.hp.com>
21824
21825         * target.h (globalize_decl_name): New.
21826         * target-def.h (TARGET_ASM_GLOBALIZE_DECL_NAME): New.
21827         * output.h (default_globalize_decl_name): New.
21828         * varasm.c (asm_output_bss): Use globalize_decl_name instead of
21829         globalize_label.
21830         (globalize_decl): Ditto.
21831         (default_globalize_decl_name): New.
21832         * config/ia64/ia64.c (ia64_globalize_decl_name): New.
21833         (ia64_handle_version_id_attribute): New.
21834         (TARGET_ASM_GLOBALIZE_DECL_NAME): New.
21835         (ia64_asm_output_external): Use globalize_decl_name instead
21836         of globalize_label.
21837         * doc/extend.texi (version_id): New pragma.
21838         * doc/tm.texi (ARGET_ASM_GLOBALIZE_DECL_NAME): New target hook.
21839
21840 2007-01-24  Andreas Krebbel  <krebbel1@de.ibm.com>
21841
21842         * unwind-dw2-fde.c (get_cie_encoding): Replaced _Unwind_Word with
21843         _uleb128_t and _Unwind_SWord with _sleb128_t.
21844         * unwind-dw2.c (extract_cie_info, execute_stack_op,
21845         execute_cfa_program, uw_frame_state_for, uw_update_context_1):
21846         Likewise.
21847         * unwind-c.c (parse_lsda_header, PERSONALITY_FUNCTION): Likewise.
21848         * unwind-pe.h (read_uleb128, read_sleb128,
21849         read_encoded_value_with_base): Likewise.
21850         * unwind-generic.h: Define _sleb128_t and _uleb128_t types.
21851
21852 2007-01-24  Richard Guenther  <rguenther@suse.de>
21853
21854         * builtins.c (expand_builtin_cexpi): Get the fndecl
21855         for cexp in the correct way.
21856
21857 2007-01-24  Jan Hubicka  <jh@suse.cz>
21858
21859         * tree-ssa-dce.c (eliminate_unnecesary_stmts): Remove dead LHS
21860         of calls.
21861
21862 2007-01-24  Andreas Krebbel  <krebbel1@de.ibm.com>
21863
21864         * c-cppbuiltin.c (builtin_define_type_sizeof): New function.
21865         (c_cpp_builtins): New builtin macros: __SIZEOF_INT__, __SIZEOF_LONG__,
21866         __SIZEOF_LONG_LONG__, __SIZEOF_SHORT__, __SIZEOF_POINTER__,
21867         __SIZEOF_FLOAT__, __SIZEOF_DOUBLE__, __SIZEOF_LONG_DOUBLE__,
21868         __SIZEOF_SIZE_T__, __SIZEOF_WCHAR_T__, __SIZEOF_WINT_T__ and
21869         __SIZEOF_PTRDIFF_T__.
21870         * doc/cpp.texi: Documentation for the new builtin macros added.
21871
21872 2007-01-24  Uros Bizjak  <ubizjak@gmail.com>
21873
21874         * config/i386/i386.md (tanxf2, tan<mode>2, atan<mode>2, log<mode>2,
21875         log10<mode>2, log2<mode>2, expxf2, exp10xf2, exp2xf2): Use op2
21876         instead of operands[2] to avoid access past the end of array.
21877
21878 2007-01-24  Richard Sandiford  <richard@codesourcery.com>
21879
21880         * reload1.c (emit_reload_insns): Pass the reload register
21881         for a non-spill output reload through forget_old_reloads_1.
21882
21883 2007-01-23  Joseph Myers  <joseph@codesourcery.com>
21884
21885         * config/rs6000/rs6000-c.c (rs6000_cpu_cpp_builtins): Define
21886         _SOFT_DOUBLE if doubles use software floating-point.
21887         * config/rs6000/libgcc-ppc-glibc.ver: Export additional long
21888         double functions if _SOFT_DOUBLE, not _SOFT_FLOAT.
21889         * config/rs6000/darwin-ldouble.c: Also compile functions for
21890         hard-float without FPRs.  Use fmsub function for all __NO_FPRS__
21891         cases.  Compile extra functions if _SOFT_DOUBLE, not _SOFT_FLOAT.
21892         * config/rs6000/linuxspe.h (SUBSUBTARGET_OVERRIDE_OPTIONS): Remove
21893         commented-out long double override.
21894         (CPP_LONGDOUBLE_DEFAULT_SPEC): Likewise.
21895         * config/rs6000/eabispe.h: Likewise.
21896         * config/rs6000/rs6000.c (rs6000_override_options): Don't override
21897         long double for non-SPE.
21898         (rs6000_handle_option): Likewise.
21899         (invalid_e500_subreg): Disallow more subregs involding DImode,
21900         DFmode, TImode or TFmode.
21901         (rs6000_legitimate_offset_address_p): Check TFmode offsets for
21902         E500 double.
21903         (legitimate_lo_sum_address_p): Also check for TFmode for E500
21904         double.
21905         (rs6000_legitimize_address): Also handle TFmode for E500 double.
21906         (rs6000_legitimize_reload_address): Also handle TFmode for E500
21907         double.
21908         (rs6000_legitimate_address): Also check for TFmode for E500
21909         double.
21910         (rs6000_emit_move): Use DFmode subregs of TFmode for E500 double.
21911         (spe_build_register_parallel): Handle TFmode and TCmode.
21912         (rs6000_spe_function_arg): Handle TFmode and TCmode for E500
21913         double.
21914         (function_arg): Handle TFmode and TCmode for E500 double.
21915         (rs6000_init_libfuncs): Initialize extra libfuncs for soft double
21916         in general.
21917         (print_operand): Handle TFmode and TImode for %y.
21918         (rs6000_generate_compare): Handle TFmode comparisons for E500
21919         double.
21920         (spe_func_has_64bit_regs_p): Check for TFmode for E500 double.
21921         (rs6000_function_value): Handle TFmode and TCmode for E500 double.
21922         (rs6000_libcall_value): Handle TFmode and TCmode for E500 double.
21923         * config/rs6000/rs6000.h (CANNOT_CHANGE_MODE_CLASS): Check for
21924         TFmode for E500 double.
21925         * config/rs6000/rs6000.md (FP): Allow TF for E500 double.
21926         (floatsidf2): Enable for E500 double.
21927         (movtf_softfloat): Use rs6000_nonimmediate_operand.
21928         (extenddftf2): Change to extenddftf2_fprs.
21929         (extenddftf2): Call gen_spe_extenddftf2 or gen_extenddftf2_fprs
21930         depending on TARGET_E500_DOUBLE.
21931         (extendsftf2): Enable for E500 double.
21932         (trunctfdf2): Enable for E500 double.
21933         (trunctfsf2): Change to trunctfsf2_fprs.
21934         (trunctfsf2): Call gen_spe_trunctfsf2 or gen_trunctfsf2_fprs
21935         depending on TARGET_E500_DOUBLE.
21936         (floatsitf2): Enable for E500 double.
21937         (fix_trunctfsi2): Change to fix_trunctfsi2_fprs.
21938         (fix_trunctfsi2): Call gen_spe_fix_trunctfsi2 or
21939         gen_fix_trunctfsi2_fprs depending on TARGET_E500_DOUBLE.
21940         (negtf2): Change to negtf2_internal.
21941         (negtf2): New expander.
21942         (abstf2): Enable for E500 double.  Call gen_spe_abstf2_tst,
21943         gen_spe_abstf2_cmp or gen_abstf2_internal depending on
21944         TARGET_E500_DOUBLE and flag_unsafe_math_optimizations.
21945         (movdi_internal32): Use rs6000_nonimmediate_operand.
21946         (unnamed splitter): Likewise.
21947         * config/rs6000/spe.md (CMPTFEQ_GPR, TSTTFEQ_GPR, CMPTFGT_GPR,
21948         TSTTFGT_GPR, CMPTFLT_GPR, TSTTFLT_GPR): New unspecs.
21949         (SPE64TF, DITI): New mode macros.
21950         (frob_df_di): Change to frob_<SPE64:mode>_<DITI:mode>; allow more
21951         modes.
21952         (frob_tf_ti): New.
21953         (frob_<mode>_di_2): New.
21954         (frob_tf_di_8_2): New.
21955         (frob_di_df): Change to frob_di_<mode>; allow more modes.
21956         (frob_ti_tf): New.
21957         (frob_di_df_2): Change to frob_<DITI:mode>_<SPE64:mode>_2; allow
21958         more modes.
21959         (frob_ti_<mode>_8_2): New.
21960         (frob_ti_tf_2): New.
21961         (mov_si<mode>_e500_subreg0, mov_si<mode>_e500_subreg0_2,
21962         mov_si<mode>_e500_subreg4, mov_si<mode>_e500_subreg4_2): Allow
21963         TFmode.
21964         (mov_sitf_e500_subreg8, mov_sitf_e500_subreg8_2,
21965         mov_sitf_e500_subreg12, mov_sitf_e500_subreg12_2): New.
21966         (spe_trunctfdf2_internal1, spe_trunctfsf2, spe_extenddftf2,
21967         spe_fix_trunctfsi2, spe_fix_trunctfsi2_internal,
21968         spe_negtf2_internal, spe_abstf2_cmp, spe_abstf2_tst): New.
21969         (cmptfeq_gpr, tsttfeq_gpr, cmptfgt_gpr, tsttfgt_gpr, cmptflt_gpr,
21970         tsttflt_gp): New.
21971
21972 2007-01-23  Ian Lance Taylor  <iant@google.com>
21973
21974         * Makefile.in (OBJS-common): Reformat, alphabetize, but put
21975         insn-*.o first.
21976         (OBJS-archive): Reformat, alphabetize.
21977         (OBJS): Change out_object_file to OBJS-md.
21978
21979 2007-01-23  Uros Bizjak  <ubizjak@gmail.com>
21980
21981         * config/i386/i386.md: Use REG_P, MEM_P, CONST_INT_P, LABEL_P,
21982         JUMP_P and CALL_P predicates where applicable.
21983         * config/i386/i386.c: Ditto.
21984         * config/i386/i386.md: Ditto.
21985         * config/i386/mmx.md: Ditto.
21986         * config/i386/predicates.md: Ditto.
21987
21988 2007-01-22  Andreas Schwab  <schwab@suse.de>
21989
21990         * config/m68k/m68k.h: Fix comment.
21991
21992 2007-01-22  Jan Hubicka  <jh@suse.cz>
21993
21994         * passes.c (init_optimization_passes): Do not rerun
21995         pass_early_warn_uninitialized.
21996
21997 2007-01-22  Richard Guenther  <rguenther@suse.de>
21998
21999         PR tree-optimization/30038
22000         * tree-ssa-math-opts.c (maybe_record_sincos): New static helper
22001         function.
22002         (execute_cse_sincos_1): Likewise.
22003         (execute_cse_sincos): Likewise.
22004         (gate_cse_sincos): Likewise.
22005         (pass_cse_sincos): New pass CSEing sin() and cos() calls using
22006         the cexpi() canonicalization of sincos().
22007         * tree-pass.h (pass_cse_sincos): Declare.
22008         * passes.c (init_optimization_passes): New pass pas_cse_sincos.
22009
22010 2007-01-21  Eric Botcazou  <ebotcazou@libertysurf.fr>
22011
22012         PR rtl-optimization/29329
22013         * combine.c (replaced_rhs_insn): Rename to i2mod.
22014         (replaced_rhs_value): Rename to i2mod_new_rhs.
22015         (i2mod_old_rhs): New global variable.
22016         (combine_instructions): Adjust for above change.  Save a copy of
22017         the old RHS into i2mod_old_rhs when the contents of a REG_EQUAL
22018         note are substituted in the second instruction.
22019         (distribute_notes) <REG_DEAD>: Adjust for above change.  Do not
22020         ditch the note if it pertains to the second eliminated register
22021         and this register is mentioned in i2mod_old_rhs.
22022
22023         Revert:
22024         2006-09-12  Eric Botcazou  <ebotcazou@libertysurf.fr>
22025
22026         * combine.c (distribute_notes) <REG_DEAD>: Do not consider SETs past
22027         the insn to which the note was originally attached.
22028
22029 2007-01-21  Jan Hubicka  <jh@suse.cz>
22030
22031         * ipa-inline.c (inlining_mode): Comment, move up.
22032         (cgraph_decide_inlining_incrementally): Do not perform inlining
22033         itself; fix handling of flattening of self recursive functions.
22034         (cgraph_find_cycles): Remove.
22035         (cgraph_flatten_node): Remove.
22036         (cgraph_decide_inlining): Use incremental inliner to handle flattening.
22037         (try_inline): New function.
22038         (cgraph_early_inlining): Update call of
22039         cgraph_decide_inlining_incrementally.  Apply inlining here.
22040         (apply_inline): Update call of cgraph_decide_inlining_incrementally.
22041
22042 2007-01-21  Dirk Mueller  <dmueller@suse.de>
22043
22044         PR bootstrap/30511
22045         * tree-vrp.c (check_array_bounds): do not warn
22046         about ADDR_EXPR's of ARRAY_REF's which are immediately
22047         used in binary expressions.
22048
22049 2007-01-21  Ira Rosen  <irar@il.ibm.com>
22050
22051         * tree-vectorizer.h (struct _stmt_vec_info): Add new field
22052         read_write_dep and macros for its access.
22053         * tree-vectorizer.c (new_stmt_vec_info): Initialize the new field.
22054         * tree-vect-analyze.c (vect_analyze_data_ref_dependence): Remove
22055         argument, call vect_check_interleaving for every independent pair of
22056         data-refs. Mark loads that access the same memory location as a store
22057         in the loop.
22058         (vect_check_dependences): Remove.
22059         (vect_analyze_data_ref_dependences): Remove  vect_check_dependences
22060         call, fix the call to vect_analyze_data_ref_dependence.
22061         (vect_analyze_data_ref_access): For statements that access the same
22062         data-ref, check that they are not stores; for loads, check that there
22063         is no store that access the same location.
22064
22065 2007-01-20  Roger Sayle  <roger@eyesopen.com>
22066             Joseph Myers  <joseph@codesourcery.com>
22067
22068         * doc/invoke.texi (-fdump-rtl-combine): Fix under/overfull hbox.
22069         (-fdump-rtl-stack): Likewise.
22070         (-fno-signed-zeros): Use @minus{} for a minus sign.  Correct typo.
22071         (-mcheck-zero-division, -mcpu): Fix under/overfull hbox.
22072         (-mpt-fixed): Use @minus{} for minus sign.
22073         (Using Precompiled Headers): Fix under/overfull hbox.
22074
22075 2007-01-20  Jan Hubicka  <jh@suse.cz>
22076
22077         * tree-flow.h (struct stmt_ann_d): Move references_memory to proper
22078         place within annotation.
22079
22080 2007-01-20  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
22081
22082         * pa.c (output_move_double): Change array size of xoperands to 4.
22083
22084 2007-01-20  Jan Hubicka  <jh@suse.cz>
22085
22086         * tree-tailcall.c (adjust_return_value): Do not use RESULT_DECL
22087         as temporary.
22088
22089 2007-01-19  Ian Lance Taylor  <iant@google.com>
22090
22091         * expmed.c (expand_divmod) [TRUNC_MOD_EXPR, TRUNC_DIV_EXPR]: Cast
22092         constant to unsigned HOST_WIDE_INT before negating.
22093
22094 2007-01-19  Ian Lance Taylor  <iant@google.com>
22095
22096         * tree-ssa-operands.h (struct vuse_vec_d): Change num_vuse field
22097         to unsigned.
22098         (VUSE_VECT_ELEMENT) [ENABLE_CHECKING]: Use unsigned comparison.
22099         (VUSE_ELEMENT_PTR) [ENABLE_CHECKING]: Likewise.
22100         (SET_VUSE_VECT_ELEMENT) [ENABLE_CHECKING]: Likewise.
22101         (SET_VUSE_ELEMENT_VAR) [ENABLE_CHECKING]: Likewise.
22102         (SET_VUSE_ELEMENT_PTR) [ENABLE_CHECKING]: Likewise.
22103         (realloc_vdef, realloc_vuse): Change second parameter to
22104         unsigned.
22105         (ssa_operand_iterator_d): Change vuse_index and mayuse_index
22106         fields to unsigned.
22107         * tree-ssa-operands.c (realloc_vop): Change num_elem parameter to
22108         unsigned. Change x and lim locals to unsigned.
22109         (realloc_vdef, realloc_vuse): Change num_elem parameter to
22110         unsigned.
22111         (finalize_ssa_vuse_ops): Change old_i local to unsigned.
22112         (copy_virtual_operands): Change i and n locals to unsigned.
22113
22114 2007-01-19  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
22115
22116         PR middle-end/29335
22117         * builtins.c (fold_builtin_1): Handle builtin fdim.
22118
22119 2007-01-20  Jan Hubicka  <jh@suse.cz>
22120
22121         * tree-ssa.c (init_tree_ssa): Do not call init_alias_heapvars.
22122         * tree-ssa-structalias.c (compute_points_to_sets): Do call
22123         init_alias_heapvars.
22124         (init_alias_heapvars): Initialize only when not already initialized.
22125         (delete_alias_heapvars): Set heapvar_for_stmt to NULL.
22126
22127 2007-01-19  Roger Sayle  <roger@eyesopen.com>
22128
22129         * common.opt (fsigned-zeros): New command line option.
22130         * flags.h (HONOR_SIGNED_ZEROS): Control via flag_signed_zeros instead
22131         of flag_unsafe_math_optimizations.
22132         * opts.c (set_fast_math_flags): The -ffast-math command line option
22133         implies -fno-signed-zeros.
22134         (fast_math_flags_set_p): Likewise.
22135
22136         * doc/invoke.texi: Document new -fno-signed-zeros option, and update
22137         the documentation of -ffast-math appropriately.  Wrap long lines.
22138
22139 2007-01-19  Steve Ellcey  <sje@cup.hp.com>
22140
22141         * system.h (ASM_MAKE_LABEL_LINKONCE): Poison.
22142         * varasm.c (globalize_decl): Remove ASM_MAKE_LABEL_LINKONCE ifdef.
22143
22144 2007-01-19  Tomas Bily  <tbily@suse.cz>
22145
22146         * cgraphunit.c (cgraph_finalize_function): Updating of pid
22147         * tree-profile.c:
22148         (tree_init_ic_make_global_vars): New function
22149         (tree_init_edge_profiler): call of tree_init_ic_make_global_vars
22150         (tree_gen_ic_profiler): New function
22151         (tree_gen_ic_func_profiler): New function
22152         (tree_profiling): Added calling of tree_gen_ic_func_profiler
22153         (tree_profile_hooks): Added hook for indirec/virtual calls
22154         * value-prof.c (tree_find_values_to_profile): New case for
22155         indirect calls
22156         (tree_values_to_profile): Call for determining indirect/virtual
22157         counters
22158         (tree_indirect_call_to_profile): New function
22159         (tree_ic_transform): New function
22160         (tree_ic): New function
22161         (find_func_by_pid): New function
22162         (init_pid_map): New function
22163         (tree_value_profile_transformations): Added check for
22164         indirect/virtual call transformation
22165         * value-prof.h (enum hist_type): New counter type for
22166         indirect/virtual calls
22167         (profile_hooks): Added new hook for profiling indirect/virtual
22168         calls
22169         * profile.c (instrument_values): New case for indirect/virtual
22170         call added
22171         * gcov-io.h (GCOV_LAST_VALUE_COUNTER): Changed to 6
22172         (GCOV_COUNTER_V_INDIR): New counter type
22173         (GCOV_COUNTER_NAMES): New name of counter "indirect" added
22174         (GCOV_MERGE_FUNCTIONS): New merge function for indirect/virtual
22175         call added
22176         * cgraph.c: Definition of cgraph_max_pid
22177         (cgraph_create_node): Default init of pid attribute
22178         * cgraph.h: Declaration of cgraph_max_pid
22179         (struct cgraph_node): Added pid attribute
22180         * libgcov.c (__gcov_indirect_call_profiler): New function
22181         (__gcov_one_value_profiler_body): New function
22182         (__gcov_one_value_profiler): Body was moved to
22183         __gcov_one_value_profiler_body and calls it
22184
22185 2007-01-19  Basile Starynkevitch  <basile@starynkevitch.net>
22186
22187         * doc/gty.texi (Options): Document the mark_hook option to GTY.
22188         * gengtype.c (write_types_data, write_func_for_structure,
22189         write_types, ggc_wtd, pch_wtd): Add skip_hooks to
22190         write_types_data, ggc_wtd, pch_wtd for processing mark_hook.
22191         (walk_type, write_func_for_structure): Generate the mark_hook if
22192         needed.
22193
22194 2007-01-19  Jan Hubicka  <jh@suse.cz>
22195
22196         * ipa-inline.c (cgraph_decide_inlining_incrementally): Instead of
22197         'early' argument take inlining mode argument specifying whether to
22198         inline for size/speeed or all functions; add support for flattening;
22199         improve dumpting.
22200         (cgraph_early_inlining): Update call of decide_inlining_incrementally.
22201
22202 2007-01-19  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
22203
22204         PR c++/17947
22205         * toplev.c (warn_deprecated_use): Use %qD instead of %qs to print
22206         the name of the declared identifier.
22207
22208 2007-01-19  Dirk Mueller  <dmueller@suse.de>
22209
22210         * config/i386.h (CONDITIONAL_REGISTER_USAGE): Store
22211         result of PIC_OFFSET_TABLE_REGNUM in temporary variable to avoid
22212         duplicate evaluation.
22213
22214 2007-01-19  Uros Bizjak  <ubizjak@gmail.com>
22215
22216         * config/i386/i386.md (acos<mode>2): Rename from acossf2 and acosdf2.
22217         Macroize expander using X87MODEF12 mode macro.  Extend operand 1
22218         to XFMode, use acosxf2 and truncate result to requested mode.
22219         Use SSE_FLOAT_MODE_P to disable patterns for SSE math.
22220         (asin<mode>2): Similarly, with asin expanders.
22221         (*fscalexf4_i387): Rename from *fscalexf4.
22222         (expNcorexf3): New expander.
22223         (expxf2, exp10xf2, exp2xf2): Use expNcorexf3 expander.
22224         (exp<mode>2): Rename from expsf2 and expdf2. Macroize expander using
22225         X87MODEF12 mode macro.  Extend operand 1 to XFMode, use expxf2 and
22226         truncate result to requested mode. Use SSE_FLOAT_MODE_P to disable
22227         patterns for SSE math.
22228         (exp10<mode>2): Similarly, with exp10 expanders.
22229         (exp2<mode>2): Similarly, with exp2 expanders.
22230         (expm1<mode>2): Similarly, with expm1 expanders.
22231         (ldexp<mode>3): Similarly, with ldexp expanders.
22232         (log<mode>2, log10<mode>2, log2<mode>2, log1p<mode>2, logb<mode>2):
22233         Use gen_truncxf<mode>2_i387_noop to truncate result.
22234
22235 2007-01-19  Richard Sandiford  <richard@codesourcery.com>
22236
22237         * config/m68k/m68k.h (PREFERRED_STACK_BOUNDARY): Define to 32
22238         for ColdFire targets.
22239
22240 2007-01-19  Nathan Sidwell  <nathan@codesourcery.com>
22241             Richard Sandiford  <richard@codesourcery.com>
22242
22243         * config/m68k/m68k.h (M68K_STATIC_CHAIN_REG_NAME): New macro.
22244         (INITIALIZE_TRAMPOLINE): Use STATIC_CHAIN_REGNUM.
22245         (__transfer_from_trampoline): Use M68K_STATIC_CHAIN_REG_NAME.
22246         * config/m68k/m68kelf.h (STATIC_CHAIN_REGNUM): Override.
22247         (M68K_STATIC_CHAIN_REG_NAME): Likewise.
22248         * config/m68k/netbsd-elf.h (M68K_STATIC_CHAIN_REG_NAME): Likewise.
22249
22250 2007-01-19  Richard Sandiford  <richard@codesourcery.com>
22251
22252         * config/m68k/m68k.md (adddi_dilshr32): Rename to...
22253         (*adddi_dilshr32): ...this.  Fix formatting.  Remove commented-out
22254         non-canonical pattern.  Restrict to !TARGET_COLDFIRE.
22255         (*adddi_dilshr32_cf): New pattern.
22256         (adddi3, subdi3): Remove first alternatives.
22257
22258 2007-01-19  Richard Sandiford  <richard@codesourcery.com>
22259
22260         * config/m68k/m68k.c (notice_update_cc): If an SFmode move is
22261         implemented using move.l, do not use its cc result for floating-point
22262         comparisons.
22263
22264 2007-01-19  Richard Sandiford  <richard@codesourcery.com>
22265
22266         * config/m68k/m68k.h (EXTRA_CONSTRAINT): Stop the 'T' constraint
22267         from accepting 's' constraints if flag_pic.
22268
22269 2007-01-19  Richard Sandiford  <richard@codesourcery.com>
22270
22271         * config/m68k/m68k.md (bordered, bunordered, buneq, bunge, bungt)
22272         (bunle, bunlt, bltgt, bordered_rev, bunordered_rev, buneq_rev)
22273         (bunge_rev, bungt_rev, bunle_rev, bunlt_rev, bltgt_rev): Change
22274         condition from TARGET_68881 to TARGET_HARD_FLOAT.
22275
22276 2007-01-19  Sandra Loosemore  <sandra@codesourcery.com>
22277
22278         * longlong.h (count_leading_zeros, COUNT_LEADING_ZEROS_0): Add
22279         ColdFire alternatives.
22280         * config/m68k/m68k.h (CLZ_DEFINED_VALUE_AT_ZERO): New macro.
22281         * config/m68k/m68k.md (clzsi2):  Define for ColdFire
22282         architectures that support ff1 instruction.
22283
22284 2007-01-19  Richard Sandiford  <richard@codesourcery.com>
22285             Julian Brown  <julian@codesourcery.com>
22286
22287         * config/m68k/m68k.h (CONST_OK_FOR_LETTER_P): Add an 'R' case.
22288         * config/m68k/m68k.md (*movsi_cfv4): Fold into...
22289         (*movsi_cf): ...here.  Remove unnecessary 'R' from 'Rg'.
22290         Add commentary.
22291
22292 2007-01-19  Richard Sandiford  <richard@codesourcery.com>
22293
22294         * config/m68k/m68k-protos.h (valid_mov3q_const): Take a HOST_WIDE_INT
22295         and return a bool.
22296         (output_move_const_into_data_reg, output_move_simode_const): Delete.
22297         * config/m68k/m68k.c (const_method, const_int_cost): Take a
22298         HOST_WIDE_INT instead of an rtx.
22299         (m68k_rtx_costs): Update call accordingly.
22300         (output_move_const_into_data_reg): Likewise.  Fix formatting.
22301         (valid_mov3q_const): Take a HOST_WIDE_INT instead of an rtx.
22302         Return a bool.
22303         (output_move_simode_const): Update calls after above changes.
22304         Rework to use automatic variables and predicates like MEM_P.
22305         * config/m68k/m68k.md (pushexthisi_const): Update call to
22306         valid_mov3q_const.
22307
22308 2007-01-19  Dirk Mueller  <dmueller@suse.de>
22309
22310         * tree-ssa-alias.c (perform_var_substitution): Fix typo
22311         in dump_flags test.
22312
22313 2007-01-19  Richard Guenther  <rguenther@suse.de>
22314
22315         * builtins.c (expand_builtin_cexpi): Fall back to expanding
22316         via cexp in case sincos is not available.
22317
22318 2007-01-19  Richard Guenther  <rguenther@suse.de>
22319
22320         * doc/tm.texi (TARGET_HAS_SINCOS): Document new target macro.
22321         * defaults.h (TARGET_HAS_SINCOS): Default to off.
22322         * config/linux.h (TARGET_HAS_SINCOS): Set to on if we have glibc.
22323         * config/alpha/linux.h (TARGET_HAS_SINCOS): Likewise.
22324         * config/sparc/linux.h (TARGET_HAS_SINCOS): Likewise.
22325         * config/sparc/linux64.h (TARGET_HAS_SINCOS): Likewise.
22326         * config/rs6000/linux.h (TARGET_HAS_SINCOS): Likewise.
22327         * config/rs6000/linux64.h (TARGET_HAS_SINCOS): Likewise.
22328
22329 2007-01-19  Uros Bizjak  <ubizjak@gmail.com>
22330
22331         * config/i386/i386.md (*fpatanxf3_i387, fpatan_extend<mode>xf3_i387):
22332         New insn patterns.
22333         (atan2sf3_1, atan2df3_1, atan2xf3_1): Remove insn patterns.
22334         (atan2xf3): Directly generate RTL pattern.
22335         (atan2<mode>3): Rename from atan2sf3 and atan2df3 and macroize insn
22336         patterns using X87MODEF12 mode macro.  Use fpatan_extend<mode>xf3_i387
22337         and truncate result to requested mode.  Use SSE_FLOAT_MODE_P to
22338         disable patterns for SSE math.
22339         (atan<mode>2): Rename from atansf2 and atandf2 and macroize insn
22340         patterns using X87MODEF12 mode macro.  Use fpatan_extend<mode>xf3_i387
22341         and truncate result to requested mode.  Use SSE_FLOAT_MODE_P to
22342         disable patterns for SSE math.
22343
22344 2007-01-19  Alexandre Oliva  <aoliva@redhat.com>
22345
22346         * libgcc-std.ver: Fix typo in %inherit for GCC_4.3.0.
22347
22348 2007-01-18  Roger Sayle  <roger@eyesopen.com>
22349
22350         * fold-const.c (fold_unary) <VIEW_CONVERT_EXPR>: Optimize away a
22351         VIEW_CONVERT_EXPR to the same type as it's operand.
22352
22353 2007-01-18  David Edelsohn  <edelsohn@gnu.org>
22354
22355         * config/rs6000/darwin-ldouble.c: Only build _SOFT_FLOAT if
22356         configured for long double 128.
22357
22358 2007-01-18  Mike Stump  <mrs@apple.com>
22359
22360         * config/rs6000/rs6000.c (rs6000_emit_vector_compare): Fix build
22361         error.
22362
22363 2007-01-18  Michael Meissner  <michael.meissner@amd.com>
22364
22365         * i386.c (ix86_compute_frame_layout): Make fprintf's in #if 0 code
22366         type correct.
22367
22368 2007-01-18  Jan Hubicka  <jh@suse.cz>
22369
22370         * tree-ssa-operands.c (vop_free_bucket_size): Never return value
22371         greater than NUM_VOP_FREE_BUCKETS.
22372
22373 2007-01-18  Daniel Berlin  <dberlin@dberlin.org>
22374
22375         * tree-ssa-structalias.c: Update comments.
22376         (ptabitmap_obstack): Removed.
22377         (pta_obstack): New.
22378         (oldpta_obstack): Ditto.
22379         (stats): Add a few members.
22380         (struct variable_info): Remove node, complex, address_taken, and
22381         indirect_target members. Add oldsolution member.
22382         (new_var_info): Do not initialize removed members.
22383         (constraint_expr_type): Remove INCLUDES.
22384         (constraint_graph): Add size, implicit_preds, rep,
22385         indirect_cycles, eq_rep, label, direct_nodes, and complex members.
22386         (FIRST_REF_NODE): New macro.
22387         (LAST_REF_NODE): Ditto.
22388         (FIRST_ADDR_NODE): Ditto.
22389         (find): New function.
22390         (unite): Ditto.
22391         (dump_constraint): Do not handle INCLUDES.
22392         (insert_into_complex): Do not insert duplicate constraints.
22393         (condense_varmap_nodes): Renamed and rewritten into ...
22394         (merge_node_constraints): This. Also fix bug in handling of
22395         offseted copy constraints.
22396         (clear_edges_for_node): No longer need to deal with preds at all,
22397         or removing associated preds/succs.
22398         (merge_graph_nodes): Deal with indirect_cycles.
22399         Don't deal with predecessors.
22400         (add_implicit_graph_edge): New function.
22401         (add_pred_graph_edge): Ditto.
22402         (add_graph_edge): Don't deal with predecessors.
22403         (build_constraint_graph): Removed.
22404         (build_pred_graph): New function.
22405         (build_succ_graph): Ditto.
22406         (struct scc_info): Removed in_component. Added roots, dfs, and
22407         node_mapping. Remove visited_index, unification_queue.
22408         (scc_visit): Deal with union-find we do now.
22409         Deal with cycles with REF nodes.
22410         (collapse_nodes): Renamed and rewritten to ...
22411         (unify_nodes): This.
22412         (process_unification_queue): Removed.
22413         (topo_visit): Cleanup
22414         (do_da_constraint): Use find.
22415         (do_sd_constraint): Ditto.
22416         (do_ds_constraint): Ditto.
22417         (do_complex_constraint): Ditto.
22418         (init_scc_info): Update for removed and added members.
22419         (find_and_collapse_graph_cycles): Renamed and rewritten into ...
22420         (find_indirect_cycles): This.
22421         (equivalence_class): New variable.
22422         (label_visit): New function.
22423         (perform_variable_substitution): Rewritten.
22424         (free_var_substitution_info): New function.
22425         (find_equivalent_node): Ditto.
22426         (move_complex_constraints): Ditto.
22427         (eliminate_indirect_cycles): Ditto.
22428         (solve_graph): Only propagate changed bits.
22429         Use indirect cycle elimination.
22430         Use find.
22431         (tree_id_t): Rename to tree_vi_t, delete id member, add vi member.
22432         (tree_id_eq): Renamed to ...
22433         (tree_vi_eq): This. Update for member change
22434         (insert_id_for_tree): Renamed and rewritten to ...
22435         (insert_vi_for_tree): This.
22436         (lookup_id_for_tree): Renamed and rewritten to ...
22437         (lookup_vi_for_tree): This.
22438         (get_id_for_tree): Renamed and rewritten to ...
22439         (get_vi_for_tree): Ditto.
22440         (get_constraint_exp_from_ssa_var): Update to use get_vi_for_tree.
22441         (process_constraint): Don't handle INCLUDES.
22442         Remove special ADDRESSOF case.
22443         (find_func_aliases): Rewrite to use vi functions instead of id
22444         ones.
22445         (create_function_info_for): Ditto.
22446         (create_variable_info_for): Ditto.
22447         (intra_create_variable_infos): Ditto.
22448         (merge_smts_into): Ditto.
22449         (find_what_p_points_to): Ditto.
22450         (init_base_vars): Ditto.
22451         (init_alias_vars): Ditto.
22452         (remove_preds_and_fake_succs): New function.
22453         (dump_sa_points_to_info): Dump new stats.
22454         (dump_solution_for_var): Use find.
22455         (set_used_smts): Fix formatting.
22456         (compute_points_to_sets): Updated for new functions.
22457         (ipa_pta_execute): Ditto.
22458
22459 2007-01-18  Kazu Hirata  <kazu@codesourcery.com>
22460             Richard Sandiford  <richard@codesourcery.com>
22461
22462         * doc/tm.texi (TARGET_FUNCTION_VALUE): Expand documentation of
22463         parallels.
22464         * calls.c (expand_call): If the return value is a PARALLEL,
22465         extract its first member.
22466         * config/m68k/linux.h (FUNCTION_EXTRA_EPILOGUE): Remove.
22467         * config/m68k/m68k.c (m68k_output_function_epilogue): Don't
22468         use FUNCTION_EXTRA_EPILOGUE.
22469         (m68k_function_value): Return a PARALLEL if the return value
22470         is of a pointer type.
22471         * config/m68k/netbsd-elf.h (current_function_returns_pointer)
22472         (FUNCTION_EXTRA_EPILOGUE): Remove.
22473         * config/m68k/m68k.md (D0_REG): New constant.
22474
22475 2007-01-18  Kazu Hirata  <kazu@codesourcery.com>
22476
22477         * config/m68k/m68k.c (m68k_output_function_epilogue): Don't
22478         output a NOP for empty epilogues.
22479
22480 2007-01-18  Richard Sandiford  <richard@codesourcery.com>
22481
22482         * config/m68k/m68k.c (m68k_use_return_insn): Update comments
22483         before function.  Extend register save check to include all
22484         registers, not just integer ones.
22485
22486 2007-01-18  Kazu Hirata  <kazu@codesourcery.com>
22487
22488         * config/m68k/m68k-protos.h (use_return_insn): Rename to...
22489         (m68k_use_return_insn): ...this.
22490         * config/m68k/m68k.h (USE_RETURN_INSN): Delete.
22491         * config/m68k/m68k.c (use_return_insn): Rename to...
22492         (m68k_use_return_insn): ...this.
22493         * config/m68k/m68k.md (return): Use m68k_use_return_insn instead
22494         of USE_RETURN_INSN.
22495
22496 2007-01-18  Nathan Sidwell  <nathan@codesourcery.com>
22497
22498         * config/m68k/fpgnulib.c (__truncdfsf2): Implement round to
22499         nearest even, fix denormal rounding overflow.
22500
22501 2007-01-18  Richard Sandiford  <richard@codesourcery.com>
22502
22503         * config/m68k/m68k.md (movsf_cf_hard): Use fsmove instead of
22504         f%$smove and f%$move.
22505         (movdf_cf_hard): Use fdmove for cases 0 and 3 and fmove for case 1.
22506         (extendsfdf2_cf): Use fdmove instead of f%&move.
22507         (truncdfsf2_cf): Use fsmove instead of f%$smove.
22508         (add<mode>3_cf, sub<mode>3_cf): Use <FP:prec> instead of <FP:round>.
22509
22510 2007-01-18  Richard Sandiford  <richard@codesourcery.com>
22511
22512         * config/m68k/m68k.md (movdf_cf_hard): Use output_move_double for
22513         GPR<-GPR moves.
22514
22515 2007-01-18  Richard Sandiford  <richard@codesourcery.com>
22516
22517         * real.h (real_format): Add a canonical_nan_lsbs_set field.
22518         (coldfire_single_format): Declare.
22519         (coldfire_double_format): Likewise.
22520         * real.c (encode_ieee_single): Use canonical_nan_lsbs_set instead
22521         of qnan_msb_set to determine the lower bits of a canonical
22522         NaN significand.
22523         (encode_ieee_double): Likewise.
22524         (encode_ieee_quad): Likewise.
22525         (ieee_single_format): Initialize canonical_nan_lsbs_set.
22526         (mips_single_format): Likewise.
22527         (ieee_double_format): Likewise.
22528         (mips_double_format): Likewise.
22529         (ieee_extended_motorola_format): Likewise.
22530         (ieee_extended_intel_96_format): Likewise.
22531         (ieee_extended_intel_128_format): Likewise.
22532         (ieee_extended_intel_96_round_53_format): Likewise.
22533         (ibm_extended_format): Likewise.
22534         (mips_extended_format): Likewise.
22535         (ieee_quad_format): Likewise.
22536         (mips_quad_format): Likewise.
22537         (vax_f_format): Likewise.
22538         (vax_d_format): Likewise.
22539         (vax_g_format): Likewise.
22540         (i370_single_format): Likewise.
22541         (i370_double_format): Likewise.
22542         (decimal_single_format): Likewise.
22543         (decimal_double_format): Likewise.
22544         (decimal_quad_format): Likewise.
22545         (c4x_single_format): Likewise.
22546         (c4x_extended_format): Likewise.
22547         (real_internal_format): Likewise.
22548         (coldfire_single_format): New real_format.
22549         (coldfire_double_format): Likewise.
22550         * config/pdp11/pdp11.c (pdp11_f_format): Initialize
22551         canonical_nan_lsbs_set.
22552         (pdp11_d_format): Likewise.
22553         * config/m68k/m68k.c (override_options): Override REAL_FORMAT_MODE
22554         if TARGET_COLDFIRE_CPU.
22555
22556 2007-01-18  Richard Sandiford  <richard@codesourcery.com>
22557
22558         * config/m68k/m68k-protos.h (m68k_output_pic_call): Delete.
22559         (output_call, m68k_legitimize_call_address): Declare.
22560         * config/m68k/m68k.h (EXTRA_CONSTRAINT): Remove unnecessary
22561         parenthesees.  Add support for a 'W' constraint.
22562         (LEGITIMATE_PIC_OPERAND_P): Remove SYMBOL_REF_FLAG handling.
22563         (PRINT_OPERAND_PUNCT_VALID_P): Remove comment about 'o'.
22564         (m68k_symbolic_call, m68k_symbolic_jump): Declare.
22565         * config/m68k/m68k.c (m68k_symbolic_call, m68k_symbolic_jump): New
22566         variables.
22567         (override_options): Initialize them.  Do not set flag_no_function_cse
22568         for TARGET_ID_SHARED_LIBRARY.
22569         (m68k_output_pic_call): Delete.
22570         (m68k_legitimize_call_address): New function.
22571         (print_operand): Remove the %o prefix.  Handle the %p prefix.
22572         (output_call): New function.
22573         (m68k_output_mi_thunk): Use m68k_symbolic_jump.  Always load the
22574         target address from the GOT if symbolic jumps are not allowed.
22575         * config/m68k/m68k.md (call, general_operand): Do not set
22576         SYMBOL_REF_FLAG.  Use m68k_legitimize_call_address instead.
22577         Merge separate flag_pic and !flag_pic define_insns into...
22578         (*call, *call_value): ...these new patterns.  Match the address
22579         rather than the containing MEM and require it to be a call_operand.
22580         Use output_call to generate the asm template.
22581         * config/m68k/predicates.md (const_call_operand): New predicate.
22582         (call_operand): Likewise.
22583
22584 2007-01-18  Nathan Sidwell  <nathan@codesourcery.com>
22585
22586         * config/m68k/m68k.h (REGISTER_MOVE_COST): Simplify definition.
22587         (STACK_GROWS_DOWNWARD): Define to 1.
22588         (FUNCTION_VALUE, LIBCALL_VALUE, FUNCTION_VALUE_REGNO_P): Equivocate
22589         comments, emphasizing that these values are only defaults.
22590         * config/m68k/linux.h (LINK_SPEC): Fix formatting in #undef.
22591         * config/m68k/m68k.c (const_method): Remove trailing whitespace.
22592
22593 2007-01-18  Richard Sandiford  <richard@codesourcery.com>
22594
22595         * config/m68k/m68k.md (cmpsi): Remove outdated flag_pic handling.
22596
22597 2007-01-18  Kazu Hirata  <kazu@codesourcery.com>
22598             Richard Sandiford  <richard@codesourcery.com>
22599
22600         * config/m68k/m68k.h (DATA_REGNO_P, ADDRESS_REGNO_P, INT_REGNO_P)
22601         (FP_REGNO_P): New macros.
22602         (REGNO_OK_FOR_INDEX_P, REGNO_OK_FOR_BASE_P, REGNO_OK_FOR_DATA_P)
22603         (REGNO_OK_FOR_FP_P, REG_OK_FOR_INDEX_P, REG_OK_FOR_BASE_P): Use them.
22604         (EH_RETURN_STACKADJ_RTX): Use A0_REG.
22605         * config/m68k/m68k.c (m68k_regno_mode_ok): Use the new REGNO macros.
22606
22607 2007-01-18  Nathan Sidwell  <nathan@codesourcery.com>
22608
22609         * config.gcc (m68k-*-aout*, m68k-*-coff*, m68020-*-elf*, m68k-*-elf*)
22610         (m68k-*-uclinuxoldabi, m68k-*-uclinux*, m68k-*-rtems*): Add t-floatlib
22611         to $tmake_file.
22612         * config/m68k/t-floatlib: New file, extracting common code from...
22613         * config/m68k/t-m68kbare, config/m68k/t-m68kelf,
22614         * config/m68k/t-uclinux: Here.
22615         * config/m68k/fpgnulib.c: Do not compile extendeed precision
22616         routines on ColdFire targets.
22617
22618 2007-01-18  Nathan Sidwell  <nathan@codesourcery.com>
22619
22620         * config.gcc (m68k-*-aout*, m68k-*-coff*, m68020-*-elf*, m68k-*-elf*)
22621         (m68010-*-netbsdelf*, m68k*-*-netbsdelf*, m68k*-*-openbsd*)
22622         (m68k-*-uclinuxoldabi, m68k-*-uclinux*, m68k-*-linux*)
22623         (m68k-*-rtems*): Use tm_file rather than m68k/m68k.h and
22624         explicitly set MOTOROLA to 1.
22625         * config/m68k/m68k.h (MOTOROLA): Simplify definition accordingly.
22626
22627 2007-01-18  Richard Sandiford  <richard@codesourcery.com>
22628             Nathan Sidwell  <nathan@codesourcery.com>
22629
22630         * config/m68k/m68k.h (PCC_STATIC_STRUCT_RETURN): Delete.
22631         (ASM_OUTPUT_REG_PUSH, ASM_OUTPUT_REG_POP): Add MOTOROLA cases.
22632         * config/m68k/coff.h (REGISTER_PREFIX_MD): Delete.
22633         * config/m68k/m68020-elf.h (LIB_SPEC): Delete.
22634         * config/m68k/m68k-none.h (CC1_SPEC, CPP_SUBTARGET_SPEC): Delete.
22635         * config/m68k/m68kelf.h (IMMEDIATE_PREFIX, REGISTER_PREFIX_MD)
22636         (ASM_OUTPUT_REG_PUSH, ASM_OUTPUT_REG_POP): Delete.
22637         (NO_DOLLAR_IN_LABEL, PCC_STATIC_STRUCT_RETURN): Don't undefine.
22638         (BSS_ASM_OP, ASM_OUTPUT_SKIP, ASM_OUTPUT_ASCII): Delete.
22639         * config/m68k/m68kemb.h (PCC_STATIC_STRUCT_RETURN): Don't undefine.
22640         * config/m68k/linux.h (SIZE_TYPE, PTRDIFF_TYPE, WCHAR_TYPE)
22641         (WCHAR_TYPE_SIZE, TARGET_OBJFMT_CPP_BUILTINS): Delete.
22642         (TARGET_OS_CPP_BUILTINS): Don't define mc68000 and mc68020 here.
22643         (DBX_REGISTER_NUMBER): Delete.
22644         * config/m68k/netbsd-elf.h (IMMEDIATE_PREFIX): Delete.
22645         (PCC_STATIC_STRUCT_RETURN): Don't undefine.
22646         * config/m68k/openbsd.h (PCC_STATIC_STRUCT_RETURN): Define.
22647
22648 2007-01-18  Richard Sandiford  <richard@codesourcery.com>
22649
22650         * config.gcc (m68k-*-uclinux*): Add flat.h to $tm_file.
22651         * config/flat.h: New file.
22652         * crtstuff.c (USE_PT_GNU_EH_FRAME): Don't define if
22653         OBJECT_FORMAT_FLAT.
22654         * config/m68k/m68k.h (ASM_PREFERRED_EH_DATA_FORMAT): Do not use
22655         indirect references for -msep-data or -mid-shared-library.
22656         Do not use PC-relative code addresses either.
22657         * config/m68k/m68k.c (override_options): Restrict -fPIC error
22658         to -mpcrel.
22659         * config/m68k/uclinux.h (STARTFILE_SPEC): Define.  Use Scrt1.o
22660         for shared libraries and crt1.o for executables.  Use crti.o and
22661         crtbegin.o.
22662         (ENDFILE_SPEC): Use crtend.o and crtn.o.
22663         (LIB_SPEC): Suppress -Rlibc.gdb if -static-libc is given.
22664         Do not add -elf2flt or -shared-lib-id options here.
22665         (LINK_SPEC): Define.  Pass -elf2flt if no -elf2flt option is given.
22666         Pass -shared-lib-id if -mid-shared-library, taking the library
22667         identifier from -mshared-library-id if given, otherwise
22668         defaulting to 0.
22669         (EH_FRAME_IN_DATA_SECTION): Do not undefine.
22670         (INIT_SECTION_ASM_OP, FINI_SECTION_ASM_OP): Likewise.
22671         (TARGET_OS_CPP_BUILTINS): Define __GXX_MERGED_TYPEINFO_NAMES=0
22672         and __GXX_TYPEINFO_EQUALITY_INLINE=0 if -mid-shared-library.
22673         (DRIVER_SELF_SPECS): Map unadorned PIC options to -msep-data.
22674         * config/m68k/t-uclinux (EXTRA_MULTILIB_PARTS): Add crtbegin.o
22675         and crtend.o.
22676         * config/m68k/lb1sf68.asm (PICCALL): Use an lea and pc-relative
22677         jump sequence for ISA A and ISA A+.
22678         (PICJUMP): Likewise.
22679
22680 2007-01-18  Richard Sandiford  <richard@codesourcery.com>
22681
22682         * config.gcc (m68k-*-uclinux*): Base the port on the common
22683         and m68k GNU/Linux files rather than on the generic ELF ones.
22684         * config/m68k/uclinux.h (TARGET_VERSION): Override.
22685         (TARGET_OS_CPP_BUILTINS): Use LINUX_TARGET_OS_CPP_BUILTINS.
22686
22687 2007-01-18  Julian Brown  <julian@codesourcery.com>
22688             Richard Sandiford  <richard@codesourcery.com>
22689
22690         * config/m68k/m68k.h (LONG_DOUBLE_TYPE_SIZE): Make 64-bit on ColdFire.
22691         (LIBGCC2_LONG_DOUBLE_TYPE_SIZE): Likewise.
22692         * config/m68k/netbsd-elf.h (LIBGCC2_LONG_DOUBLE_TYPE_SIZE): Undefine
22693         before redefining.
22694         * config/m68k/uclinux-oldabi.h (LONG_DOUBLE_TYPE_SIZE): Redefine to
22695         80 unconditionally.
22696         (LIBGCC2_LONG_DOUBLE_TYPE_SIZE): Likewise.
22697
22698 2007-01-18  Richard Sandiford  <richard@codesourcery.com>
22699
22700         * doc/install.texi: Document m68k-uclinuxoldabi.
22701         * config.gcc (m68k-*-uclinuxoldabi): New configuration.
22702         * config/m68k/uclinux-oldabi.h: New file, copied from
22703         config/m68k/uclinux.h.
22704
22705 2007-01-18  Kaz Kojima  <kkojima@rr.iij4u.or.jp>
22706
22707         * config/m32r/m32r-protos.h (m32r_expand_epilogue): Declare it.
22708         * config/m32r/m32r.c (m32r_setup_incoming_varargs): Use gen_frame_mem.
22709         (m32r_compute_frame_size): Use unsigned for regno.
22710         (m32r_reload_lr): Use gen_frame_mem.
22711         (pop): New.
22712         (m32r_output_function_epilogue): Don't output the function epilogue
22713         textually here.
22714         (m32r_expand_epilogue): New.
22715         (direct_return): Return false if the function has the interrupt
22716         attribute.
22717         (m32r_hard_regno_rename_ok): Remove code for the textual epilogue.
22718         * config/m32r/m32r.md (epilogue): New expander.
22719         (return_lr, return_rte): New insns.
22720         (return): Make it expander.
22721         (return_normal): New expander.
22722
22723 2007-01-18  Josh Conner  <jconner@apple.com>
22724
22725         PR target/30485
22726         * config/rs6000/rs6000.c (rs6000_emit_vector_compare): Add
22727         support for UNLE, UNLT, UNGE, and UNGT.
22728
22729 2007-01-18  Jan Hubicka  <jh@suse.cz>
22730
22731         * tree-vrp.c (finalize_jump_threads): Do not call cleanup_cfg by hand.
22732         * tree-tailcall (add_virtual_phis): Likewise.
22733         (optimize_tail_call): Return TODOs.
22734         (execute_tail_calls): Return TODOs.
22735         * tree-ssa-ccp (execute_fold_all_builtins): Do cleanup_cfg via TODO.
22736         * tree-cfgcleanup.c (cleanup_tree_cfg_loop): Return if something
22737         changed.
22738         * tree-ssa-forwprop.c (tree_ssa_forward_propagate_single_use_value):
22739         Cleanup cfg using TODO.
22740         * tree-flow.h (cleanup_tree_cfg_loop): Update prototype.
22741         * passes.c (execute_function_todo): When cleanup did something, remove
22742         unused locals.
22743         * tree-cfg.c (pass_build_cfg): Add cleanup_cfg TODO.
22744         (make_edges): Don't cleanup_cfg.
22745
22746 2007-01-18  Uros Bizjak  <ubizjak@gmail.com>
22747
22748         * reg-stack.c (subst_stack_regs_pat) [UNSPEC_SINCOS_COS,
22749         UNSPEC_XTRACT_FRACT]: Use generic code for instructions that
22750         operate on the top of stack.
22751         [UNSPEC_SINCOS_SIN, UNSPEC_XTRACT_EXP, UNSPEC_TAN]: Rewrite
22752         register handling of instructions that output to the second
22753         stack slot.
22754         [UNSPEC_TAN_ONE, UNSPEC_TAN_TAN]: Remove.
22755         (move_for_stack_reg): Special-case check for dead destination
22756         stack slot for constant load of 1.0 inside UNSPEC_TAN.
22757
22758         * config/i386/i386.md (UNSPEC_TAN): New constant.
22759         (UNSPEC_TAN_ONE, UNSPEC_TAN_TAN): Remove.
22760         (fptanxf4_i387, fptan_extend<mode>xf4_i387): New patterns
22761         to correctly model move of constant 1.0 to top stack slot.
22762         (*tandf3_1, *tansf3_1, *tanxf3_1): Remove insn patterns.
22763         (unnamed peephole2 pattern): Remove corresponding peephole2
22764         pattern that optimizes tan insn and loading of constant 1.0.
22765         (tanxf2): Use fptanxf4_i387.
22766         (tan<mode>2): Rename from tansf2 and tandf2 and macroize insn
22767         patterns using X87MODEF12 mode macro.  Use fptan_extend<mode>xf4_i387
22768         and truncate result to requested mode.  Use SSE_FLOAT_MODE_P to
22769         disable patterns for SSE math.
22770         (sincos<mode>3): Use truncxf<mode>2_i387_noop for truncation.
22771         (fyl2x_extend<mode>xf3_i387): Use X87MODEF12 for operand 1.
22772
22773 2007-01-18  Dirk Mueller  <dmueller@suse.de>
22774             Richard Guenther <rguenther@suse.de>
22775
22776         PR diagnostic/8268
22777         * doc/invoke.texi (Warray-bounds): Document -Warray-bounds.
22778         * common.opt (Warray-bounds): Add new warning option.
22779         * c-opts.c (c_common_handle_option): Define -Warray-bounds
22780         if -Wall is given.
22781         * Makefile.in: make tree-vrp.o depend on toplev.h
22782         * tree-vrp.c (vrp_finalize): Call check_array_refs if -Warray-bounds
22783         is enabled.
22784         (check_array_refs, check_array_bounds, check_array_ref): New.
22785
22786 2007-01-18  Jan Hubicka  <jh@suse.cz>
22787
22788         * tree-ssa-ccp.c (ccp_finalize): Return if something changed.
22789         (execute_ssa_ccp): Return flags conditionally.
22790         * tree-ssa-propagate.c (substitue_and_fold): Return if something was
22791         changed.
22792         * tree-ssa-propagate.h (substitute_and_fold): Update prototype.
22793
22794 2007-01-18  Steven Bosscher  <steven@gcc.gnu.org>
22795
22796         * cfgcleanup.c (cleanup_cfg): Detect cfglayout mode and set
22797         the CLEANUP_CFGLAYOUT flag when in cfglayout mode.
22798
22799         * Makefile.c (GTFILES): Add cfglayout.h.
22800         * gengtype.c (open_base_files): Likewise.
22801         * cfglayout.c (cfg_layout_function_footer,
22802         cfg_layout_function_header) Reindent to make gengtype happy.
22803         * cfglayout.h (cfg_layout_function_footer,
22804         cfg_layout_function_header): Add GTY(()) marker.
22805
22806         * ifcvt.c (noce_try_sign_mask): Make sure INSN_B is non-null.
22807
22808 2007-01-18  Ben Elliston  <bje@au.ibm.com>
22809
22810         * genautomata.c (write_automata): Include xstrerror output in the
22811         error message if writing the DFA description file fails.
22812
22813 2007-01-17  H.J. Lu  <hongjiu.lu@intel.com>
22814
22815         * config/mips/mips-protos.h (mips_output_external): Make it
22816         return void.
22817         * config/mips/iris.h (TARGET_ASM_EXTERNAL_LIBCALL): Removed.
22818         * config/mips/mips.c (irix_output_external_libcall): Likewise.
22819         (extern_list): Likewise.
22820         (extern_head): Likewise.
22821         (TARGET_ASM_FILE_END): Likewise.
22822         (mips_file_end): Likewise.
22823         (mips_output_external): Rewritten.
22824
22825 2007-01-18  Ben Elliston  <bje@au.ibm.com>
22826
22827         * genpreds.c (write_insn_preds_c): Only write out the function
22828         body for regclass_for_constraint if we have register constraints.
22829
22830 2007-01-17  Tom Tromey  <tromey@redhat.com>
22831
22832         * doc/sourcebuild.texi (libgcj Tests): Use sourceware.org.
22833         * doc/install.texi (Testing): Use sourceware.org.
22834         (Binaries): Likewise.
22835         (Specific): Likewise.
22836         * doc/contrib.texi (Contributors): Use sourceware.org.
22837
22838 2007-01-17  Anatoly Sokolov <aesok@post.ru>
22839
22840         * config/avr/avr.h (AVR_HAVE_LPMX): New macro.
22841         (AVR_ENHANCED): Rename to ...
22842         (AVR_HAVE_MUL): ... new.
22843         (avr_enhanced_p): Rename to ...
22844         (avr_have_mul_p): ... new.
22845         (TARGET_CPU_CPP_BUILTINS): Use 'avr_have_mul_p' instead of
22846         'avr_enhanced_p' for "__AVR_ENHANCED__". Define "__AVR_HAVE_MUL__".
22847         * config/avr/avr.c (avr_enhanced_p): Rename to ...
22848         (avr_have_mul_p): ... new.
22849         (base_arch_s): Rename 'enhanced' to 'have_mul'.
22850         (avr_override_options): Use 'avr_have_mul_p' and 'have_mul' instead of
22851         'avr_enhanced_p' and 'enhanced'.
22852         (ashlhi3_out, ashrhi3_out, lshrhi3_out, avr_rtx_costs): Use
22853         AVR_HAVE_MUL instead of AVR_ENHANCED.
22854         * avr.md (*tablejump_enh): Use AVR_HAVE_LPMX instead of AVR_ENHANCED.
22855         (mulqi3, *mulqi3_enh, *mulqi3_call, mulqihi3, umulqihi3, mulhi3,
22856         *mulhi3_enh, *mulhi3_call, mulsi3, *mulsi3_call): Use AVR_HAVE_MUL
22857         instead of AVR_ENHANCED.
22858         (*tablejump_enh): Use AVR_HAVE_LPMX instead of AVR_ENHANCED.
22859         * libgcc.S: Use __AVR_HAVE_MUL__ instead of __AVR_ENHANCED__.
22860         (__tablejump__): Use __AVR_HAVE_LPMX__ instead of __AVR_ENHANCED__.
22861
22862 2007-01-17  Ian Lance Taylor  <iant@google.com>
22863
22864         * vec.h (VEC_reserve_exact): Define.
22865         (vec_gc_p_reserve_exact): Declare.
22866         (vec_gc_o_reserve_exact): Declare.
22867         (vec_heap_p_reserve_exact): Declare.
22868         (vec_heap_o_reserve_exact): Declare.
22869         (VEC_OP (T,A,reserve_exact)): New static inline function, three
22870         versions.
22871         (VEC_OP (T,A,reserve)) [all versions]: Remove handling of
22872         negative parameter.
22873         (VEC_OP (T,A,alloc)) [all versions]: Call ...reserve_exact.
22874         (VEC_OP (T,A,copy)) [all versions]: Likewise.
22875         (VEC_OP (T,a,safe_grow)) [all versions]: Likewise.
22876         * vec.c (calculate_allocation): Add exact parameter.  Change all
22877         callers.
22878         (vec_gc_o_reserve_1): New static function, from vec_gc_o_reserve.
22879         (vec_gc_p_reserve, vec_gc_o_reserve): Call vec_gc_o_reserve_1.
22880         (vec_gc_p_reserve_exact, vec_gc_o_reserve_exact): New functions.
22881         (vec_heap_o_reserve_1): New static function, from vec_heap_o_reserve.
22882         (vec_heap_p_reserve, vec_heap_o_reserve): Call vec_heap_o_reserve_1.
22883         (vec_heap_p_reserve_exact): New function.
22884         (vec_heap_o_reserve_exact): New function.
22885
22886 2007-01-17  Jan Hubicka  <jh@suse.cz>
22887
22888         * ipa-type-escape.c (look_for_casts): Revamp using handled_component_p.
22889
22890 2007-01-17  Eric Christopher  <echristo@apple.com>
22891
22892         * config.gcc: Support core2 processor.
22893
22894 2007-01-16  Jan Hubicka  <jh@suse.cz>
22895
22896         * tree-ssanames.c (release_dead_ssa_names): Instead of ggc_freeing
22897         the names, just unlink the chain so we don't crash on dangling
22898         pointers
22899         to dead SSA names.
22900
22901 2007-01-16  Jan Hubicka  <jh@suse.cz>
22902
22903         * cgraph.h (cgraph_decide_inlining_incrementally): Kill.
22904         * tree-pass.h: Reorder to make IPA passes appear toegher.
22905         (pass_early_inline, pass_inline_parameters, pass_apply_inline):
22906         Declare.
22907         * cgraphunit.c (cgraph_finalize_function): Do not compute inling
22908         parameters, do not call early inliner.
22909         * ipa-inline.c: Update comments.  Include tree-flow.h
22910         (cgraph_decide_inlining): Do not compute inlining parameters.
22911         (cgraph_decide_inlining_incrementally): Return TODOs; assume to
22912         be called with function context set up.
22913         (pass_ipa_inline): Remove unreachable functions before pass.
22914         (cgraph_early_inlining): Simplify assuming to be called from the
22915         PM as local pass.
22916         (pass_early_inline): New pass.
22917         (cgraph_gate_ipa_early_inlining): New gate.
22918         (pass_ipa_early_inline): Turn into simple wrapper.
22919         (compute_inline_parameters): New function.
22920         (gate_inline_passes): New gate.
22921         (pass_inline_parameters): New pass.
22922         (apply_inline): Move here from tree-optimize.c
22923         (pass_apply_inline): New pass.
22924         * ipa.c (cgraph_remove_unreachable_nodes): Verify cgraph after
22925         transforming.
22926         * tree-inline.c (optimize_inline_calls): Return TODOs rather than
22927         doing them by hand.
22928         (tree_function_versioning): Do not allocate dummy struct function.
22929         * tree-inline.h (optimize_inline_calls): Update prototype.
22930         * tree-optimize.c (execute_fixup_cfg): Export.
22931         (pass_fixup_cfg): Remove
22932         (tree_rest_of_compilation): Do not apply inlines.
22933         * tree-flow.h (execute_fixup_cfg): Declare.
22934         * Makefile.in (gt-passes.c): New.
22935         * passes.c: Include gt-passes.h
22936         (init_optimization_passes): New passes.
22937         (nnodes, order): New static vars.
22938         (do_per_function_toporder): New function.
22939         (execute_one_pass): Dump current pass here.
22940         (execute_ipa_pass_list): Don't dump current pass here.
22941
22942 2007-01-16  Janis Johnson  <janis187@us.ibm.com>
22943
22944         * config/dfp-bit.c (dfp_compare_op): Return separate value for NaN.
22945         (DFP_NE, DFP_LE, DFP_GE): Return false for NaN.
22946
22947 2007-01-16  David Edelsohn  <edelsohn@gnu.org>
22948
22949         * config/rs6000/darwin-ldouble.c: Build file for SOFT_FLOAT.
22950         (strong_alias): Define.
22951         (__gcc_qmul): Provide non-FMA for soft-float.
22952         (__gcc_qdiv): Same.
22953         (__gcc_qneg): New.
22954         (__gcc_qeq): New.
22955         (__gcc_qle): New.
22956         (__gcc_qge): New.
22957         (__gcc_qunord): New.
22958         (__gcc_stoq): New.
22959         (__gcc_dtoq): New.
22960         (__gcc_qtos): New.
22961         (__gcc_qtod): New.
22962         (__gcc_qtoi): New.
22963         (__gcc_qtou): New.
22964         (__gcc_itoq): New.
22965         (__gcc_utoq): New.
22966         (fmsub): New.
22967         * config/rs6000/rs6000.c (rs6000_init_libfuncs): Initialize
22968         soft-float functions.
22969         * config/rs6000/libgcc-ppc-glibc.ver: Version soft-float symbols.
22970         * config/rs6000/sysv4.h (SUBTARGET_OVERRIDE_OPTIONS): Do not warn
22971         about long double soft float.
22972
22973 2007-01-16  Dorit Nuzman  <dorit@il.ibm.com>
22974             Tehila Meyzels  <tehila@il.ibm.com>
22975
22976         * tree-vectorizer.h (is_pattern_stmt_p): New.
22977         * tree-vect-analyze.c (vect_determine_vectorization_factor): Fix
22978         formatting (tabs instead of spaces). Cleanup and clarify setting
22979         of STMT_VINFO_VECTYPE. Call is_pattern_stmt_p.
22980         * tree-vect-transform.c (vect_get_vec_def_for_operand): Fix typo.
22981         (vectorizable_type_demotion): Check that types are integral.
22982         (vectorizable_type_promotion): Likewise.
22983         (vectorizable_store): Fix typo.  Eliminate new-line at end of
22984         comments.
22985
22986 2007-01-16  Jan Hubicka  <jh@suse.cz>
22987
22988         * tree-ssanames.c (release_dead_ssa_names): Remove invalidated
22989         cgraph edges too.
22990
22991 2007-01-15  Eric Christopher  <echristo@apple.com>
22992
22993         * ifcvt.c: Include vec.h, vecprim.h.
22994         (check_cond_move_block): New argument regs.
22995         Reorganize. Add registers used to regs.
22996         (cond_move_process_if_block): Use regs set above as
22997         loop bounds.
22998
22999 2007-01-15  Eric Christopher  <echristo@apple.com>
23000
23001         * config/darwin.h: Update copyright.
23002         (TARGET_OPTION_TRANSLATE_TABLE): Add umbrella.
23003         (LINK_COMMAND_SPEC): Add -u.
23004         (LINK_SPEC): Fix umbrella for above.
23005
23006 2007-01-15  Joseph S. Myers  <joseph@codesourcery.com>
23007
23008         * config/soft-fp/op-common.h, config/soft-fp/op-4.h: Update from
23009         glibc CVS.
23010
23011 2007-01-15  Tom Tromey  <tromey@redhat.com>
23012
23013         * doc/sourcebuild.texi (libgcj Tests): Don't mention jacks.
23014         * doc/install.texi (Testing): Don't mention jacks.
23015         (Configuration): Document --enable-java-maintainer-mode.  Move
23016         --with-java-home to libgcj-specific section.  Document
23017         --with-ecj-jar.
23018         (Prerequisites): Mention --enable-java-maintainer-mode, ecj1.
23019
23020 2007-01-15  Jan Hubicka  <jh@suse.cz>
23021
23022         * tree-ssa-dce.c (DCE_TODOs): New.
23023         (propagate_necessity): Return if something changed.
23024         (eliminate_unnecessary_stmts): Likewise.
23025         (perform_tree_ssa_dce): Return TODO flags when needed.
23026         (pass_dce, pass_dce_loop, pass_cd_dce): Remove TODO flags.
23027
23028 2007-01-15  Uros Bizjak  <ubizjak@gmail.com>
23029
23030         * config/i386/i386.md (fyl2xxf3_i387): Rename from fyl2x_xf3.
23031         (fyl2x_extend<mode>xf3_i387): New insn pattern.
23032         (log<mode>2): Rename from logsf2 and logdf2 and macroize insn
23033         patterns using X87MODEF12 mode macro.  Extend operand 1
23034         to XFmode. Use SSE_FLOAT_MODE_P to disable patterns for SSE math.
23035         (log10<mode>2): Ditto.
23036         (log2<mode>2): Ditto.
23037         (log1p<mode>2): Ditto.
23038         (logb<mode>2): Ditto.
23039         (fyl2xp1xf3_i387): Rename from fyl2xp1_xf3.
23040         (fyl2xp1_extend<mode>xf3_i387): New insn pattern.
23041         (*fxtractxf3_i387): Rename from *fxtractxf3.
23042         (fxtract_extend<mode>xf3_i387): New insn pattern.
23043         (ilogbsi2): Use match_dup 3, not match_operand:XF 3.
23044         * config/i386/i386.c (ix86_emit_i387_log1p): Use gen_fyl2xp1xf3_i387()
23045         and gen_fyl2xxf3_i387().
23046
23047 2007-01-14  Zdenek Dvorak <dvorakz@suse.cz>
23048
23049         * loop-unswitch.c (unswitch_loop): Do not call fix_loop_placement.
23050         * cfgloopmanip.c (fix_loop_placement): Made static.  Use
23051         get_loop_exit_edges.  Changed return type to bool.
23052         * cfgloop.h (fix_loop_placement): Declaration removed.
23053
23054 2007-01-14  Dorit Nuzman  <dorit@il.ibm.com>
23055
23056         * param.h (MIN_VECT_LOOP_BOUND): New.
23057         * params.def (MIN_VECT_LOOP_BOUND): New.
23058         * tree-vectorizer.c (slpeel_tree_peel_loop_to_edge): Takes another
23059         argument - minimum threshold for number of iterations.
23060         * tree-vectorizer.h (slpeel_tree_peel_loop_to_edge): Add another
23061         argument to declaration.
23062         * tree-vect-analyze.c (vect_analyze_operations): Check value of
23063         MIN_VECT_LOOP_BOUND.
23064         * tree-vect-transform.c (vect_do_peeling_for_loop_bound): Call
23065         slpeel_tree_peel_loop_to_edge with additional argument.
23066         (vect_do_peeling_for_alignment): Likewise.
23067         * doc/invoke.texi (min-vect-loop-bound): Document new param option.
23068
23069 2007-01-14  Uros Bizjak  <ubizjak@gmail.com>
23070
23071         PR target/30413
23072         * config/i386/i386.c (print_operand) ['z']: Output 'b' for
23073         operands of size 1.
23074
23075 2007-01-14  Jan Hubicka  <jh@suse.cz>
23076
23077         * tree-dfa.c (remove_referenced_var): New function.
23078         * tree-ssa-live.c (remove_unused_locals): Walk referenced vars and
23079         prune referenced vars list too.
23080         * tree-flow.h (remove_referenced_var): Declare.
23081
23082 2007-01-14  Jan Hubicka  <jh@suse.cz>
23083
23084         * tree-eh.c (add_stmt_to_eh_region_fn): Do not add call_exprs
23085         separately.
23086         (remove_stmt_from_eh_region_fn): Do not remove call_exprs.
23087         (verify_eh_throw_stmt_node, verify_eh_throw_table_statements): Kill.
23088         * except.h (verify_eh_throw_table_statements): Kill prototype.
23089         * cfgexpand.c (expand_gimple_basic_block): Propagate Eh regions
23090         into call exrepssions.
23091         * tree-optimize.c (execute_free_cfg_annotatiosn): Do not call
23092         eh trhow verifier.
23093         * tree-cfg.c: Include pointer-set.h.
23094         (verify_node_sharing): Work on pointer set.
23095         (verify_eh_throw_stmt_node): New.
23096         (verify_stmts): Use pointers sets, verify throw_stmt.
23097
23098 2007-01-13  Zdenek Dvorak <dvorakz@suse.cz>
23099
23100         * ipa-reference.c (analyze_function): Consider also addresses taken
23101         in phi nodes.
23102
23103 2007-01-12  Roger Sayle  <roger@eyesopen.com>
23104
23105         * c-typeck.c (null_pointer_constant_p): Replace use of
23106         TREE_CONSTANT_OVERFLOW with TREE_OVERFLOW.
23107         (build_c_cast): Likewise.
23108
23109 2007-01-12  Roger Sayle  <roger@eyesopen.com>
23110
23111         * tree.h (force_fit_type_double): Remove unused final argument.
23112         * c-common.c (constant_expression_warning): Replace use of
23113         TREE_CONSTANT_OVERFLOW with TREE_OVERFLOW.
23114         (convert_and_check): Likewise.
23115         (shorten_compare): Update call to force_fit_type_double.
23116         (c_common_truthvalue_conversion) <INTEGER_CST>: Use integer_zerop.
23117         * convert.c (convert_to_pointer): Update call to
23118         force_fit_type_double.
23119         * fold-const.c (force_fit_type_double): Remove overflowed_const
23120         argument.
23121         (int_const_binop, fold_convert_const_int_from_int,
23122         fold_convert_const_int_from_real, fold_div_compare,
23123         fold_sign_changed_comparison, fold_unary, fold_negate_const,
23124         fold_abs_const, fold_not_const): Remove the final argument from
23125         calls to force_fit_type_double.
23126
23127 2007-01-12  Andrew Pinski  <andrew_pinski@playstation.sony.com>
23128
23129         * configure.ac: Set insn to "nop" for spu-*-* also.
23130         * configure: Regenerate.
23131
23132 2007-01-12  Olga Golovanevsky  <olga@il.ibm.com>
23133
23134         * builtins.def : Add BUILT_IN_FREE.
23135
23136 2007-01-12  Jan Hubicka  <jh@suse.cz>
23137
23138         PR tree-optimization/30443
23139         * tree-inline.c (tree_function_versioning): Do not optimize when
23140         cloning for inlining.
23141
23142 2007-01-12  Zdenek Dvorak <dvorakz@suse.cz>
23143
23144         * doc/loop.texi: Document recording of loop exits.
23145         * cfgloopmanip.c (loopify, duplicate_loop): Use alloc_loop.
23146         (update_single_exits_after_duplication,
23147         update_single_exit_for_duplicated_loop,
23148         update_single_exit_for_duplicated_loops): Removed.
23149         (duplicate_loop_to_header_edge): Do not call
23150         update_single_exits_after_duplication and
23151         update_single_exit_for_duplicated_loops.
23152         (loop_version): Do not update single_exit information.
23153         (fix_loop_structure): Use record_loop_exits instead of
23154         mark_single_exit_loops.
23155         * tree-ssa-loop-manip.c (tree_transform_and_unroll_loop): Update
23156         the lists of loop exits.
23157         * cfghooks.c (redirect_edge_and_branch, redirect_edge_and_branch_force,
23158         split_edge, merge_blocks): Update the lists of loop exits.
23159         * modulo-sched.c (sms_schedule): Pass LOOPS_HAVE_RECORDED_EXITS to
23160         loop_optimizer_init.
23161         * loop-init.c (loop_optimizer_init): Call record_loop_exits instead
23162         of mark_single_exit_loops.
23163         (loop_optimizer_finalize): Call release_recorded_exits.
23164         * tree-ssa-loop.c (tree_loop_optimizer_init): Pass
23165         LOOPS_HAVE_RECORDED_EXITS to loop_optimizer_init.
23166         * tree-vectorizer.c (slpeel_tree_duplicate_loop_to_edge_cfg): Do not
23167         update single exit information.
23168         * lambda-code.c (perfect_nestify): Ditto.
23169         * cfgloop.c (flow_loop_free): Destroy the list of exits of the loop.
23170         (mark_single_exit_loops): Removed.
23171         (alloc_loop, loop_exit_hash, loop_exit_eq, loop_exit_free,
23172         get_exit_descriptions, rescan_loop_exit, record_loop_exits,
23173         dump_recorded_exit, dump_recorded_exits, release_recorded_exits): New
23174         functions.
23175         (get_loop_exit_edges, single_exit): Use recorded exit lists.
23176         (add_bb_to_loop, remove_bb_from_loops): Update the lists of loop exits.
23177         (verify_loop_structure): Verify consistency of the exit lists.
23178         (flow_loops_find): Use alloc_loop.  Initialize exits hash.
23179         (set_single_exit): Removed.
23180         * cfgloop.h (struct loop_exit): New function.
23181         (struct loop): single_exit_ field replaced by exits field.
23182         (LOOPS_HAVE_MARKED_SINGLE_EXITS): Replaced by
23183         LOOPS_HAVE_RECORDED_EXITS.
23184         (struct loops): Added exits hash.
23185         (mark_single_exit_loops, set_single_exit): Declaration removed.
23186         (release_recorded_exits, record_loop_exits, rescan_loop_exit): Declare.
23187
23188 2007-01-12  Richard Sandiford  <richard@codesourcery.com>
23189
23190         * doc/invoke.texi: Avoid use of @headitem.
23191
23192 2007-01-12  Richard Sandiford  <richard@codesourcery.com>
23193
23194         * cse.c (cse_insn): Move HAVE_CC0 code after declarations.
23195
23196 2007-01-12  Richard Sandiford  <richard@codesourcery.com>
23197
23198         * doc/install.texi: Fix m68k-*-* anchor and add m68k-*-* to the
23199         list of targets.
23200
23201 2007-01-12  Nathan Sidwell  <nathan@codesourcery.com>
23202             Richard Sandiford  <richard@codesourcery.com>
23203
23204         * doc/invoke.texi: Document -mno-bitfield, -mno-rtd and -mno-short.
23205         * config/m68k/m68k.opt: Resort options.
23206         (mbitfield, mrtd, mshort): Remove RejectNegative properties.
23207
23208 2007-01-12  Nathan Sidwell  <nathan@codesourcery.com>
23209             Richard Sandiford  <richard@codesourcery.com>
23210
23211         * doc/invoke.texi: Document the macros that are defined by
23212         m68k's -mtune and -mhard-float options.
23213         * config/m68k/m68k-protos.h (m68k_cpp_cpu_ident) Declare.
23214         (m68k_cpp_cpu_family): Likewise.
23215         * config/m68k/m68k.h (TARGET_CPU_CPP_BUILTINS): Add a full set
23216         of __ucfv*__ macros.  Define __mcffpu__ if generating code for
23217         ColdFire FPUs.  Define __mcf_cpu_* and __mcf_family_* macros.
23218         * config/m68k/m68k.c (m68k_cpp_cpu_ident): New function.
23219         (m68k_cpp_cpu_family): Likewise.
23220
23221 2007-01-12  Richard Sandiford  <richard@codesourcery.com>
23222
23223         * config/m68k/m68k.h (TARGET_CPU_CPP_BUILTINS): Treat all mc68*
23224         macros besides mc68000 as tuning macros.  Use a switch statement
23225         to set them and mcpu32.
23226
23227 2007-01-12  Julian Brown  <julian@codesourcery.com>
23228
23229         * config/m68k/m68k.h: Use TARGET_68040 instead of TARGET_68040_ONLY.
23230         (TARGET_68040_ONLY): Rename to...
23231         (TARGET_68040): ...this.
23232         * config/m68k/m68k.c: Use TARGET_68040 instead of TARGET_68040_ONLY.
23233         * config/m68k/m68k.md: Likewise.
23234
23235 2007-01-12  Julian Brown  <julian@codesourcery.com>
23236             Nathan Sidwell  <nathan@codesourcery.com>
23237             Richard Sandiford  <richard@codesourcery.com>
23238
23239         * config.gcc (m680[012]0-*-*, m68k*-*-*): Set m68k_cpu_ident to
23240         the -mcpu= argument associated with the --with-cpu setting.
23241         Define M68K_DEFAULT_TUNE to the default -mtune= option,
23242         if different from the one implied by the -mcpu setting.
23243         Accept --with-cpu=FOO if FOO is listed in m68k-devices.def,
23244         using mcpu=FOO as the default CPU option.  Set target_cpu_default2.
23245         * doc/invoke.texi: Mention ColdFire in the introduction to the
23246         m68k options.  Document the new -march, -mcpu, -mtune, -mdiv,
23247         -mno-div and -mhard-float options.  Make -m68881 a synonym for
23248         -mhard-float.  Document the previously-undocumented -m5206e,
23249         -m528x, -m5307 and -m5407 options.  Tweak the existing option
23250         documentation for consistency.
23251         * doc/install.texi: Mention new --with-cpu arguments.
23252         * config/m68k/m68k.h (OPTION_DEFAULT_SPECS): Only use the
23253         default CPU if neither -mcpu nor -march are specified.
23254         (ASM_CPU_SPEC): Pass down -mcpu and -march options.
23255         (TARGET_CPU_CPP_BUILTINS): Set __mcfisa*__ macros from
23256         TARGET_ISA*.  Set the legacy __mcf*__ cpu macros in the same way,
23257         using m68k_tune to decide between families that implement the
23258         same ISA.  Use m68k_tune to set __mcfv4e__.
23259         (FL_BITFIELD, FL_68881, FL_COLDFIRE, FL_CF_HWDIV, FL_CF_MAC)
23260         (FL_CF_EMAC, FL_CF_EMAC_B, FL_CF_USP, FL_CF_FPU, FL_ISA_68000)
23261         (FL_ISA_68010, FL_ISA_68020, FL_ISA_68040, FL_ISA_A, FL_ISA_B)
23262         (FL_ISA_C, FL_ISA_MMU): New macros.
23263         (MASK_COLDFIRE): Delete.
23264         (TARGET_68010, TARGET_68020, TARGET_68040_ONLY, TARGET_COLDFIRE)
23265         (TARGET_ISAB): Redefine in terms of m68k_cpu_flags.
23266         (TARGET_68881, TARGET_COLDFIRE_FPU): Redefine in terms of m68k_fpu.
23267         (TARGET_HARD_FLOAT): Do not define here.
23268         (TARGET_ISAAPLUS, TARGET_ISAC): New macros.
23269         (TUNE_68000): New macro.
23270         (TUNE_68000_10): Redefine in terms of TUNE_68000 and TUNE_68010.
23271         (TUNE_68010, TUNE_68030, TUNE_68040, TUNE_68060, TUNE_CPU32)
23272         (TUNE_CFV2): Redefine in terms of m68k_tune.
23273         (uarch_type, target_device, fpu_type): New enums.
23274         (m68k_cpu, m68k_tune, m68k_fpu, m68k_cpu_flags): Declare.
23275         * config/m68k/m68k.c (TARGET_DEFAULT): Remove MASK_68881.
23276         (FL_FOR_isa_00, FL_FOR_isa_10, FL_FOR_isa_20, FL_FOR_isa_40)
23277         (FL_FOR_isa_cpu32, FL_FOR_isa_a, FL_FOR_isa_aplus, FL_FOR_isa_b)
23278         (FL_FOR_isa_c): New macros.
23279         (m68k_isa): New enum.
23280         (m68k_target_selection): New structure.
23281         (all_devices, all_isas, all_microarchs): New tables.
23282         (m68k_cpu_entry, m68k_arch_entry, m68k_tune_entry, m68k_cpu)
23283         (m68k_tune, m68k_fpu, m68k_cpu_flags): New variables.
23284         (MASK_ALL_CPU_BITS): Delete.
23285         (m68k_find_selection): New function.
23286         (m68k_handle_option): Handle -mcpu=, -march= and -mtune=.
23287         Map the legacy target options to a combination of the new ones.
23288         (override_options): Set m68k_cpu, m68k_tune, m68k_fpu and
23289         m68k_cpu_flags.  Handle M68K_DEFAULT_TUNE.  Use m68k_cpu_flags
23290         to derive default MASK_BITFIELD, MASK_CF_HWDIV and MASK_HARD_FLOAT
23291         settings.
23292         * config/m68k/m68k.opt (m5200, m5206e, m528x, m5307, m5407, mcfv4e)
23293         (m68010, m68020, m68020-40, m68020-60, m68030, m68040): Remove Mask
23294         properties.
23295         (m68881, msoft-float): Change mask from 68881 to HARD_FLOAT.
23296         (march=, mcpu=, mdiv, mhard-float, mtune=): New options.
23297         * config/m68k/m68k-devices.def: New file.
23298
23299 2007-01-12  Richard Sandiford  <richard@codesourcery.com>
23300             Nathan Sidwell  <nathan@codesourcery.com>
23301
23302         * config/m68k/m68k.h (ASM_CPU_SPEC, ASM_SPEC, EXTRA_SPECS)
23303         (SUBTARGET_EXTRA_SPECS): New macros.
23304         * config/m68k/linux.h (ASM_SPEC): Remove CPU flags;
23305         use %(asm_cpu_spec) instead.
23306         * config/m68k/m68k-none.h (ASM_SPEC): Likewise.
23307         * config/m68k/openbsd.h (ASM_SPEC): Likewise.
23308         * config/m68k/netbsd-elf.h (ASM_SPEC): Likewise.
23309         (EXTRA_SPECS): Rename to...
23310         (SUBTARGET_EXTRA_SPECS): ...this.
23311
23312 2007-01-12  Nathan Sidwell  <nathan@codesourcery.com>
23313             Richard Sandiford  <richard@codesourcery.com>
23314             Julian Brown  <julian@codesourcery.com>
23315
23316         * config.gcc (m68k-*-aout*, m68k-*-coff*, m68020-*-elf*, m68k-*-elf*)
23317         (m68k-*-uclinux*, m68k-*-linux*, m68k-*-rtems*): Set default_m68k_cpu
23318         to the configuration's default CPU.
23319         (m68010-*-netbsdelf*, m68k*-*-netbsdelf*, m68k*-*-openbsd*): Likewise.
23320         Remove default masks.
23321         (m680[012]0-*-*): Set the default with_cpu to the first part of
23322         the target name.
23323         (m68k*-*-*): Set the default with_cpu to m$default_m68k_cpu.
23324         (m68k*-*-linux): Extend the --with-cpu handling to...
23325         (m680[012]0-*-*, m68k*-*-*): ...these configurations.  Allow m68000
23326         and m68010.  Don't set target_cpu_default2.
23327         * doc/install.texi: Document --with-cpu for m68k.
23328         * config/m68k/m68k.h (OPTION_DEFAULT_SPECS): Define.
23329         * config/m68k/m68k-none.h (TARGET_CPU_DEFAULT, M68K_CPU_m68k)
23330         (M68K_CPU_m68000, M68K_CPU_m68010, M68K_CPU_m68020, M68K_CPU_m68030)
23331         (M68K_CPU_m68040, M68K_CPU_m68302, M68K_CPU_m68332, TARGET_DEFAULT)
23332         (ASM_CPU_DEFAULT_SPEC, CC1_CPU_DEFAULT_SPEC): Delete.
23333         (ASM_SPEC): Remove use of %(asm_cpu_default).
23334         (EXTRA_SPECS, SUBTARGET_EXTRA_SPECS, MULTILIB_DEFAULTS): Delete.
23335         * config/m68k/linux.h (TARGET_DEFAULT): Delete.
23336         (CPP_SPEC): Merge definitions.  Do not handle __HAVE_68881__ here.
23337         * config/m68k/netbsd-elf.h (TARGET_OS_CPP_BUILTINS): Define
23338         __HAVE_FPU__ if TARGET_HARD_FLOAT.
23339         (TARGET_DEFAULT): Delete.
23340         (EXTRA_SPECS): Delete cpp_cpu_default_spec, cpp_cpu_spec,
23341         cpp_fpu_spec, asm_default_spec and netbsd_cpp_spec.
23342         (CPP_CPU_SPEC): Delete.
23343         (TARGET_VERSION): Merge definitions, using TARGET_68010 to pick
23344         the appropriate string.
23345         (CPP_CPU_DEFAULT_SPEC, ASM_DEFAULT_SPEC, CPP_FPU_SPEC): Delete.
23346         (CPP_SPEC): Define to NETBSD_CPP_SPEC.
23347         (ASM_SPEC): Don't use %(asm_default_spec).
23348         * config/m68k/m68k.c (TARGET_DEFAULT_TARGET_FLAGS): Remove
23349         TARGET_DEFAULT and add MASK_68881.
23350         * config/m68k/m68k.md: Remove mention of TARGET_DEFAULT from comments.
23351
23352 2007-01-12  Richard Sandiford  <richard@codesourcery.com>
23353
23354         * config.gcc (m68010-*-netbsdelf*): Add MASK_68010.
23355         (m68k*-*-netbsdelf*, m68k*-*-openbsd*, m68k*-linux*): Add
23356         MASK_68010 alongside MASK_68020.
23357         * doc/invoke.texi: Document -m68010.
23358         * config/m68k/m68k.opt (m68010): New.
23359         * config/m68k/m68k.h (TARGET_CPU_CPP_BUILTINS): Define mc68010
23360         if TUNE_68010.
23361         (TUNE_68010): New macro.
23362         * config/m68k/m68k-none.h (M68K_CPU_m68k, M68K_CPU_m68010)
23363         (M68K_CPU_m68020, M68K_CPU_m68030, M68K_CPU_m68040)
23364         (M68K_CPU_m68332): Add MASK_68010.
23365         * config/m68k/linux.h (TARGET_DEFAULT): Add MASK_68010 to
23366         fallback definition.
23367         * config/m68k/netbsd-elf.h (CPP_CPU_SPEC): Remove now-redundant
23368         defines.
23369         * config/m68k/m68k.c (MASK_ALL_CPU_BITS): Add MASK_68010.
23370         (m68k_handle_option): Handle OPT_m68010.  Add MASK_68010
23371         to all entries that use MASK_68020.
23372         (output_move_simode_const, output_move_himode, output_move_qimode)
23373         (output_move_stricthi, output_move_strictqi): Use TARGET_68010
23374         instead of TARGET_68020 to select clr behavior.  Remove comment
23375         about there being no TARGET_68010.
23376         * config/m68k/m68k.md: Likewise throughout.
23377
23378 2007-01-12  Julian Brown  <julian@codesourcery.com>
23379
23380         * config/m68k/m68k.h (TARGET_ISAB): New macro.
23381         * config/m68k/m68k.c: Use TARGET_ISAB rather than TARGET_CFV4.
23382         * config/m68k/m68k.md: Likewise.
23383
23384 2007-01-12  Julian Brown  <julian@codesourcery.com>
23385
23386         * config/m68k/m68k.h (LEGITIMATE_INDEX_P, LEGITIMIZE_ADDRESS): Use
23387         TARGET_COLDFIRE_FPU instead of TARGET_CFV4E.
23388
23389 2007-01-12  Julian Brown  <julian@codesourcery.com>
23390
23391         * config/m68k/m68k.h (TUNE_68040_60): New macro.
23392         * config/m68k/m68k.c (standard_68881_constant_p): Use it.
23393         * config/m68k/m68k.md: Likewise.
23394
23395 2007-01-12  Julian Brown  <julian@codesourcery.com>
23396             Richard Sandiford  <richard@codesourcery.com>
23397
23398         * config/m68k/m68k.h (TARGET_CPU_CPP_BUILTINS): Use TUNE_68030
23399         instead of TARGET_68030, TUNE_68040 instead of TARGET_68040,
23400         TUNE_68060 instead of TARGET_68060 and TUNE_CPU32 instead of
23401         TARGET_CPU32.
23402         (TARGET_CPU32): Rename to...
23403         (TUNE_CPU32): ...this.
23404         (TUNE_68000_10, TUNE_68030, TUNE_68040, TUNE_68060)
23405         (TUNE_CFV2): New macros.
23406         * config/m68k/netbsd-elf.h (LONG_DOUBLE_TYPE_SIZE): Simplify;
23407         remove conditions that are implied by TARGET_68020.
23408         * config/m68k/m68k.c (m68k_output_function_prologue): Use TUNE_68040
23409         instead of TARGET_68040 and TUNE_CPU32 instead of TARGET_CPU32.
23410         (m68k_output_function_epilogue): Likewise.
23411         (m68k_rtx_costs): Likewise.  Use TUNE_68060 instead of TARGET_68060
23412         and TUNE_CFV2 instead of TARGET_5200.  Use TUNE_68000_10 instead of
23413         "!TARGET_68020 && !TARGET_COLDFIRE" to choose between 68000 and
23414         non-68000 timings.  Refactor multiplication and division costs.
23415         (output_addsi3): Use TUNE_68040 instead of TARGET_68040 and
23416         TUNE_CPU32 instead of TARGET_CPU32.
23417         (standard_68881_constant_p): Use TUNE_68040 instead of TARGET_68040
23418         and TUNE_68060 instead of TARGET_68060.
23419         * config/m68k/m68k.md: Use TUNE_68040 instead of TARGET_68040,
23420         TUNE_68060 instead of TARGET_68060, and TUNE_CPU32 instead of
23421         TARGET_CPU32.
23422         (movsi_const0): Use TUNE_68000_10 rather than "!TARGET_68020
23423         && !TARGET_COLDFIRE" to choose between moveq and clr.
23424         Likewise in the unnamed movsf pattern.
23425         (ashlsi_17_24, lshrsi_17_24): Guard with TUNE_68000_10 rather than
23426         "!TARGET_68020 && !TARGET_COLDFIRE".  Likewise the unnamed
23427         ashiftrt pattern.
23428
23429 2007-01-12  Richard Sandiford  <richard@codesourcery.com>
23430
23431         * config/m68k/m68k.h (TARGET_CPU_CPP_BUILTINS): Increase amount
23432         of tabbing before backslashes.
23433
23434 2007-01-11  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
23435
23436         * pa-linux.h (ASM_OUTPUT_INTERNAL_LABEL): Undefine.
23437         * pa.h (ASM_OUTPUT_LABEL): Output colon when using GAS.
23438         (ASM_OUTPUT_INTERNAL_LABEL): Define.
23439
23440 2007-01-11  Zdenek Dvorak <dvorakz@suse.cz>
23441
23442         * tree-ssa-loop-ivopts.c (extract_cond_operands): Split from
23443         find_interesting_uses_cond.
23444         (find_interesting_uses_cond): Use extract_cond_operands.
23445         (rewrite_use_compare): Use extract_cond_operands and
23446         force_gimple_operand_bsi.  Do not call update_stmt.
23447         (determine_use_iv_cost_condition): Use extract_cond_operands.
23448         Return cheaper of using original bound and changing the exit bound.
23449
23450 2007-01-11  Zdenek Dvorak <dvorakz@suse.cz>
23451
23452         PR tree-optimization/29516
23453         * tree-ssa-address.c (tree_mem_ref_addr, add_to_parts,
23454         most_expensive_mult_to_index, addr_to_parts,
23455         create_mem_ref, maybe_fold_tmr): Make the type of
23456         fields of TARGET_MEM_REF sizetype.
23457         (move_fixed_address_to_symbol, move_pointer_to_base):
23458         New functions.
23459         * tree.def (TARGET_MEM_REF): Add comment on types of
23460         the operands.
23461
23462 2007-01-11  Joseph Myers  <joseph@codesourcery.com>
23463
23464         * c-common.c (vector_types_convertible_p): Treat opaque types as
23465         always convertible if they have the same size, but not otherwise.
23466
23467 2007-01-11  Steven Bosscher  <steven@gcc.gnu.org>
23468
23469         * ifcvt.c (struct noce_if_info): Add comments to the fields.
23470         Remove the b_unconditional field.
23471         (noce_try_sign_mask): Do not look at b_unconditional.
23472         (noce_process_if_block): Do not use merge_if_blocks.  Update
23473         the CFG here.  Do not set b_unconditional.
23474         (cond_move_process_if_block): Likewise.
23475         (find_cond_trap): Likewise.
23476         (check_cond_move_block): Require simple jump insns at the end
23477         of the basic block.
23478
23479 2007-01-11  Jan Hubicka  <jh@suse.cz>
23480
23481         PR tree-optimization/1046
23482         * tree-tailcall.c (suitable_for_tail_call_opt_p): Use TREE_ADDRESSABLE
23483         when alias info is not ready.
23484         (pass_tail_recursion): Do not require aliasing.
23485         * tree-ssa-copyrename.c (pass_rename_ssa_cop): Likewise.
23486         * tree-ssa-ccp.c (pass_ccp, pass_fold_builtins): Likewise.
23487         * tree-ssa-copy.c (pass_copy_prop): Likewise.
23488         * tree-ssa-forwprop.c (pass_forwprop): Likewise.
23489         * tree-ssa-dce.c (pass_dce, pass_dce_loop, pass_cd_dce): Likewise.
23490         * passes.c (init_optimization_passes): Execute rename_ssa_copies,
23491         ccp, forwprop, copy_prop, merge_phi, copy_prop, dce and tail recursion
23492         before inlining.
23493         * tree-ssa-operands.c (add_virtual_operand, get_indirect_ref_operand):
23494         When aliasing is not build, mark statement as volatile.
23495
23496 2007-01-11  Tom Tromey  <tromey@redhat.com>
23497
23498         PR preprocessor/15185, PR preprocessor/20989:
23499         * doc/cppopts.texi <-MT>: Update description of algorithm for
23500         computing default target.
23501         <-M, -MD>: Reword "basename" text.
23502
23503 2007-01-11  Roger Sayle  <roger@eyesopen.com>
23504
23505         * builtins.c (expand_builtin_pow, expand_builtin_powi,
23506         fold_builtin_cabs, fold_builtin_sqrt, fold_builtin_trunc,
23507         fold_builtin_floor, fold_builtin_ceil, fold_builtin_round,
23508         fold_builtin_int_int_roundingfn, fold_builtin_bitop,
23509         fold_builtin_bswap, real_constp, fold_builtin_pow,
23510         fold_builtin_powi, fold_builtin_signbit, fold_builtin_copysign,
23511         do_mpfr_arg1, do_mpfr_arg2, do_mpfr_arg3, do_mpfr_sincos): Replace
23512         uses of the macro TREE_CONSTANT_OVERFLOW with TREE_OVERFLOW.
23513         * convert.c (convert_to_pointer): Likewise.
23514         * expr.c (highest_pow2_factor, expand_expr_real_1): Likewise.
23515         * fold-const.c (force_fit_type, fold_negate_expr, int_const_binop,
23516         const_binop, fold_convert_const_int_from_int,
23517         fold_convert_const_int_from_real,
23518         fold_convert_const_real_from_real, sign_bit_p,
23519         optimize_minmax_comparison, extract_muldiv_1, fold_div_compare,
23520         fold_sign_changed_comparison, fold_unary, fold_comparison,
23521         fold_binary, multiple_of_p, tree_Expr_non_zero_p,
23522         fold_negate_const, fold_abs_const, fold_not_const): Likewise.
23523         * print-tree.c (print_node_brief, print_node): Likewise.
23524         * stor-layout.c (place_field, layout_type): Likewise.
23525         * tree-chrec.c (keep_cast): Likewise.
23526         * tree.c (build_vector, build_real, build_real_from_int_cst,
23527         build_complex): Likewise.
23528
23529 2007-01-11  Roger Sayle  <roger@eyesopen.com>
23530
23531         * tree.h (TREE_CONSTANT_OVERFLOW): Obsolete.  For the time being,
23532         treat TREE_CONSTANT_OVERFLOW as a synonym of TREE_OVERFLOW.
23533
23534 2007-01-11  Paolo Bonzini  <bonzini@gnu.org>
23535
23536         * configure.ac (strict1_warn): Rename to strict_warn.
23537         (WERROR, --enable-werror, symlink hacks, stage1_cflags,
23538         cc_set_by_configure, quoted_cc_set_by_configure,
23539         stage_prefix_set_by_configure, quoted_stage_prefix_set_by_configure,
23540         all_boot_languages, all_stagestuff): Remove.
23541         (target_list): Remove bootstrap targets.
23542         * Makefile.in (quickstrap): Unconditionally make a synonym of all.
23543         (BOOT_LANGUAGES, STAGE1_CFLAGS, STAGE1_CHECKING,
23544         REMAKEFLAGS, FLAGS_TO_PASS, PREPEND_DOTDOT_TO_RELATIVE_PATHS,
23545         SUBDIR_FLAGS_TO_PASS, WERROR_FLAGS, STRICT2_WARN, LANG_STAGESTUFF,
23546         VOL_FILES, POSTSTAGE1_FLAGS_TO_PASS, STAGE2_FLAGS_TO_PASS,
23547         STAGEPROFILE_FLAGS_TO_PASS, STAGEFEEDBACK_FLAGS_TO_PASS, stage1_build,
23548         stage1_copy, stage2_build, stage2_copy, stageprofile_build,
23549         stageprofile_copy, stage3_build, stage3_copy, stagefeedback_build,
23550         stagefeedback_copy, stage4_build, clean_s1, clean_sw, bootstrap,
23551         bootstrap-lean, bootstrap2, bootstrap2-lean, bootstrap3,
23552         bootstrap3-lean, bootstrap4, bootstrap4-lean, unstage1, unstage2,
23553         unstage3, unstage4, unstageprofile, unstagefeedback, restage, restage2,
23554         restage3, restage4, restageprofile, restagefeedback, bubbleestrap,
23555         cleanstrap, unstrap, restrap, *compare, *compare3, *compare4,
23556         *compare-lean, *compare3-lean, *compare4-lean, stage1-start, stage1,
23557         stage2-start, stage2, stage3-start, stage3, stage4-start, stage4,
23558         stageprofile-start, stageprofile, stagefeedback-start, stagefeedback,
23559         risky-stage1, risky-stage2, risky-stage3, risky-stage4): Remove.
23560         (ORDINARY_FLAGS_TO_PASS): Rename to FLAGS_TO_PASS.
23561         (STAGECOPYSTUFF, STAGEMOVESTUFF): Consolidate into MOSTLYCLEANFILES.
23562         (mostlyclean): Adjust.
23563         (clean, distclean): Don't mention bootstrap stuff.
23564         * configure: Regenerate.
23565         * ada/config-lang.in, cp/config-lang.in, forttran/config-lang.in,
23566         java/config-lang.in, objc/config-lang.in, objcp/config-lang.in,
23567         treelang/config-lang.in (stagestuff): Remove.
23568         * doc/sourcebuild.texi (stage1, stage2, stage3, stage4,
23569         stageprofile, stagefeedback, stagestuff): Remove mention.
23570
23571 2007-01-11  Nick Clifton  <nickc@redhat.com>
23572
23573         * config/mcore/predicates.md (mcore_general_movesrc_operand):
23574         Accept CONSTs.
23575         (mcore_general_movdst_operand): Do not accept CONST_INTs.
23576         (mcore_arith_K_S_operand): Run the test for the S constraint not
23577         the test for the M constraint.
23578         (mcore_addsub_operand): Do not accept integer values that are
23579         larger than 32 bits.
23580         * config/mcore/mcore.md: Remove unused constraints from split.
23581         (andsi3): Use HOST_WIDE_INT instead of int to hold an INTVAL.
23582         (addsi3): Likewise.
23583         (allocate_stack): Likewise.
23584         * config/mcore/mcore.c (mcore_print_operand): Restrict output of P
23585         operands to 32 bits.
23586         (mcore_const_costs): Use HOST_WIDE_INT instead of int to hold an
23587         INTVAL.
23588         (mcore_and_cost, mcore_modify_comparison, const_ok_for_mcore,
23589         mcore_const_ok_for_inline, mcore_const_trick_uses_not,
23590         try_constant_tricks, mcore_num_ones, mcore_num_zeros,
23591         mcore_output_bclri, mcore_output_andn, output_inline_const,
23592         mcore_output_move, mcore_output_movedouble): Likewise.
23593         (mcore_output_cmov): Use CONST_OK_FOR_M and CONST_OK_FOR_N.
23594         (output_inline_const): Likewise.
23595         (output_inline_const): Fix format strings used in sprintf
23596         statements.
23597         * config/mcore/mcore-protos.h: Update prototypes for changed
23598         functions in mcore.c.
23599         * config/mcore/mcore.h (CONST_OK_FOR_I): Cast values to
23600         HOST_WIDE_INT and not int.
23601         (CONST_OK_FOR_J, CONST_OK_FOR_K, CONST_OK_FOR_L, CONST_OK_FOR_M,
23602         CONST_OK_FOR_N): Likewise.
23603         (LEGITIMATE_CONSTANT_P): Also check CONSTANT_P.
23604         (GO_IF_LEGITIMATE_INDEX): Use HOST_WIDE_INT instead of int to hold
23605         an INTVAL.
23606
23607 2007-01-10  Jan Hubicka  <jh@suse.cz>
23608
23609         * tree-vrp.c (remove_range_assertions): Release defs.
23610         * tree-ssa-loop-ivopts.c (rmeove_statement): Likewise.
23611         * tree-ssa-dom.c (remove_stmt_or_phi): Likewise.
23612
23613 2007-01-10  Paul Brook  <paul@codesourcery.com>
23614
23615         * config/arm/arm.c (arm_rtx_costs_1): Handle mutiply-subtract.
23616         * config/arm/arm.md (mulsi3subsi): New insn.
23617
23618 2007-01-10  Zdenek Dvorak <dvorakz@suse.cz>
23619
23620         * tree-ssa-loop-manip.c (tree_unroll_loop): Make it a wrapper over ...
23621         (tree_transform_and_unroll_loop): New.
23622         * tree-flow.h (transform_callback, tree_transform_and_unroll_loop):
23623         Declare.
23624
23625 2007-01-10  Robert Kennedy <jimbob@google.com>
23626
23627         * fold-const.c (fold_comparison): Fold comparisons like (x *
23628         1000 < 0) to (x < 0).
23629
23630 2007-01-10  Ian Lance Taylor  <iant@google.com>
23631
23632         * tree-pretty-print.c (dump_generic_node): Print parentheses when
23633         operands have the same priority.
23634
23635 2007-01-10  Tom Tromey  <tromey@redhat.com>
23636
23637         * fold-const.c (fold_truthop): Don't check can_use_bit_fields_p.
23638         (fold_binary): Likewise.
23639         * langhooks.c (lhd_can_use_bit_fields_p): Removed.
23640         * langhooks-def.h (lhd_can_use_bit_fields_p): Removed.
23641         (LANG_HOOKS_CAN_USE_BIT_FIELDS_P): Removed.
23642         (LANG_HOOKS_INITIALIZER): Remove LANG_HOOKS_CAN_USE_BIT_FIELDS_P.
23643         * langhooks.h (struct lang_hooks): Removed field
23644         'can_use_bit_fields_p'.
23645
23646 2007-01-10  Ralf Corsépius <ralf.corsepius@rtems.org>
23647
23648         * config/bfin/t-bfin, config/bfin/t-bfin-elf: Remove GCC_CFLAGS.
23649
23650 2007-01-10  Razya Ladelsky  <razya@il.ibm.com>
23651
23652         * function.c (get_last_funcdef_no): New function.
23653         * function.h (get_last_funcdef_no): Declare.
23654         * tree-inline.c (initialize_cfun): Add initialization.
23655         (tree_function_versioning): Cleanup.
23656
23657 2007-01-10  Jan Hubicka  <jh@suse.cz>
23658
23659         * tree-inline.c (setup_one_parameter): Do not propagate into abnormal
23660         PHIs.
23661
23662 2007-01-10  Sa Liu  <saliu@de.ibm.com>
23663             Ben Elliston  <bje@au.ibm.com>
23664
23665         * spu.h (STACK_SAVE_AREA): Use VOIDmode for SAVE_FUNCTION, SImode
23666         for SAVE_NONLOCAL and Pmode for any other save level.
23667         * spu-protos.h (spu_restore_stack_block): Declare.
23668         * spu.md (save_stack_block): Remove.
23669         (restore_stack_block): Call spu_restore_stack_block.
23670         * spu.c (spu_restore_stack_block): New function.
23671         (spu_expand_epilogue): Remove old comment.
23672
23673 2007-01-09  Zdenek Dvorak <dvorakz@suse.cz>
23674
23675         PR tree-optimization/30322
23676         * tree-ssa-loop-ivopts.c (fold_affine_expr, iv_value): Removed.
23677         (cand_value_at): Return the value as aff_tree.
23678         (may_eliminate_iv): Convert the bound from aff_tree to tree.
23679         * tree-affine.c (aff_combination_add_cst, aff_combination_add_product,
23680         aff_combination_mult): New functions.
23681         (aff_combination_add): Use aff_combination_add_cst.
23682         (aff_combination_convert): Allow conversions to a wider type.
23683         (tree_to_aff_combination): Handle BIT_NOT_EXPR.
23684         * tree-affine.h (aff_combination_mult): Declare.
23685
23686 2007-01-09  Carlos O'Donell  <carlos@codesourcery.com>
23687
23688         * doc/tm.texi: Update documentation to reflect reality of exec
23689         and start file search behaviours. Update copyright year.
23690         * doc/invoke.texi: Explain how GCC_EXEC_PREFIX is used to find
23691         header file directories.
23692
23693 2007-01-09  Uros Bizjak  <ubizjak@gmail.com>
23694
23695         * config/i386/i386.md (*sinxf2): Rename to *sinxf2_i387.
23696         (*cosxf2): Rename to cosxf2_i387.
23697         (*sindf2, *sinsf2): Extend operand 1 to XFmode.  Macroize patterns
23698         using X87MODEF12 mode macro. Rename patterns to
23699         *sin_extend<mode>xf2_i387.  Use SSE_FLOAT_MODE_P to disable patterns
23700         for SSE math.
23701         (*cosdf2, *cossf2): Ditto.
23702         (sincosdf3, sincossf3): Ditto.  Rewrite corresponding splitters
23703         to match extended input operands.
23704         (sincos<mode>3): New expander.
23705         (*sinextendsfdf2, *cosextendsfdf2, *sincosextendsfdf3): Remove
23706         insn patterns and corresponding splitters.
23707
23708 2007-01-09  Kaz Kojima  <kkojima@gcc.gnu.org>
23709
23710         * config/sh/t-linux (TARGET_LIBGCC2_CFLAGS): Delete.
23711         (SHLIB_MAPFILES, SHLIB_LINK, SHLIB_INSTALL): Likewise.
23712
23713 2007-01-09  Nicolas Pitre  <nico@cam.org>
23714
23715         PR target/30173
23716         * arm/ieee754-df.S (Lad_s): Also test the low word of X for zero.
23717
23718 2007-01-08  Geoffrey Keating  <geoffk@apple.com>
23719
23720         * target.h (struct gcc_target): New field library_rtti_comdat.
23721         * target-def.h (TARGET_CXX_LIBRARY_RTTI_COMDAT): New.
23722         (TARGET_CXX): Add TARGET_CXX_LIBRARY_RTTI_COMDAT.
23723         * doc/tm.texi (C++ ABI): Document TARGET_CXX_LIBRARY_RTTI_COMDAT.
23724         * config/darwin.h (TARGET_CXX_LIBRARY_RTTI_COMDAT): Define.
23725
23726 2007-01-08  Geoffrey Keating  <geoffk@apple.com>
23727
23728         * doc/invoke.texi (Optimize Options): Correct description of -O0.
23729
23730 2007-01-08  Richard Guenther  <rguenther@suse.de>
23731
23732         * tree.h (force_fit_type_double): Export.
23733         (force_fit_type): Remove.
23734         * fold-const.c (force_fit_type_double): New function.
23735         (force_fit_type): Remove.
23736         (int_const_binop): Use it.
23737         (fold_convert_const_int_from_int): Likewise.
23738         (fold_convert_const_int_from_real): Likewise.
23739         (fold_div_compare): Likewise.
23740         (fold_sign_changed_comparison): Likewise.
23741         (fold_unary): Likewise.
23742         (fold_negate_const): Likewise.
23743         (fold_abs_const): Likewise.
23744         (fold_not_const): Likewise.
23745         * c-common.c (shorten_compare): Use force_fit_type_double.
23746         * convert.c (convert_to_pointer): Likewise.
23747
23748 2007-01-08  Richard Guenther  <rguenther@suse.de>
23749
23750         * tree.h (build_int_cst_wide_type): Export.
23751         * tree.c (build_int_cst_wide_type): New function.
23752         (build_int_cst_wide): Fix comment.
23753         * builtins.c (fold_builtin_object_size): Use build_int_cst
23754         to build -1 or 0 of the correct type.  Use fit_double_type
23755         to check for overflow.
23756         * fold-const.c (optimize_bit_field_compare): Use build_int_cst_type
23757         to build the mask.
23758         (decode_field_reference): Likewise.
23759         (all_ones_mask_p): Likewise.
23760         (native_interpret_int): Use build_int_cst_wide_type.
23761         (fold_binary): Use build_int_cst_type to build an all-ones
23762         value.
23763         * stor-layout.c (set_sizetype): Use build_int_cst_wide_type.
23764
23765 2007-01-08  Daniel Jacobowitz  <dan@codesourcery.com>
23766
23767         * config/pa/t-pa64 (libgcc_stub.a): Use $(T).
23768
23769 2007-01-09  Ben Elliston  <bje@au.ibm.com>
23770
23771         * genautomata.c (STATS_OPTION): New option.
23772         (stats_flag): New flag.
23773         (gen_automata_option): Handle it.
23774         (initiate_automaton_gen): Ditto.
23775         (write_automata): Output statistics only if stats_flag is
23776         set. Likewise, output time statistics only if time_flag is set.
23777         * doc/md.texi (Processor pipeline description): Document new flag.
23778
23779 2007-01-08  Richard Guenther  <rguenther@suse.de>
23780
23781         * builtins.c (fold_builtin_int_roundingfn): Use fit_double_type.
23782         * tree.c (build_int_cst_type): Likewise.
23783         (size_in_bytes): Don't call force_fit_type on the result.
23784         (int_fits_type_p): Use fit_double_type.
23785         * fold-const.c (fit_double_type): New function.
23786         (force_fit_type): Use it.
23787         * tree.h (fit_double_type): Export.
23788
23789 2007-01-08  Jan Hubicka  <jh@suse.cz>
23790
23791         * tree-vectorizer.c (gate_increase_alignment): Fix return type.
23792         * ipa.c (function_and_variable_visibility): Fix return type.
23793
23794 2007-01-08  Richard Guenther  <rguenther@suse.de>
23795
23796         * tree-ssa-ccp.c (maybe_fold_offset_to_array_ref): Use type
23797         of offset to build the index.
23798         * tree-pretty-print.c (dump_generic_node): Don't build negated
23799         const just for printing.
23800         * c-pretty-print.c (pp_c_integer_constant): Likewise.
23801         * builtins.c (fold_builtin_int_roundingfn): Check if result
23802         fits the type by using force_fit_type and comparing the result.
23803         * predict.c (predict_loops): Use compare_tree_int for comparison.
23804         * tree.c (build_int_cst): Fall back to integer_type_node for
23805         NULL_TREE type.
23806         (build_int_cst_wide): Assert type is non-null.
23807
23808 2007-01-08  Roberto Costa  <roberto.costa@st.com>
23809
23810         * tree-vrp.c (extract_range_from_cond_expr): New.
23811         (extract_range_from_expr): Handle COND_EXPR nodes used as expressions.
23812         * tree-ssa-ccp.c (get_maxval_strlen): Handle COND_EXPR nodes used
23813         as expressions.
23814         (fold_stmt): Bug fix, avoid infinite recursion when folding COND_EXPRs.
23815         * tree-ssa-forwprop.c (simplify_cond, forward_propagate_into_cond,
23816         tree_ssa_forward_propagate_single_use_vars): Handle COND_EXPR nodes
23817         used as expressions.
23818         * tree-object-size.c (cond_expr_object_size): New.
23819         (collect_object_sizes_for): Handle COND_EXPR nodes used as expressions.
23820
23821 2007-01-08  Jan Hubicka  <jh@suse.cz>
23822
23823         * tree-ssa-forwprop.c (forward_propagate_into_cond,
23824         tree_ssa_forward_propagate_single_use_va): Release defs of propagated
23825         statement.
23826
23827 2007-01-08  Richard Guenther  <rguenther@suse.de>
23828
23829         PR tree-optimization/23603
23830         * tree-vrp.c (set_value_range_to_truthvalue): New function.
23831         (extract_range_from_binary): Fall back to truthvalue instead of
23832         varying for TRUTH_*_EXPR.
23833         (extract_range_from_comparison): Fall back to truthvalue instead of
23834         varying.
23835         (vrp_visit_phi_node): Don't adjust new range bounds to +INF/-INF
23836         if all visited PHI values were constant.
23837
23838 2007-01-08  Jan Hubicka  <jh@suse.cz>
23839
23840         * cgraphunit.c (cgraph_process_new_functions): Reset reachable flag.
23841         (cgraph_analyze_function): break out from ...
23842         (cgraph_finalize_compilation_unit): ... here.
23843         (cgraph_expand_function): Remove forgoten commented out line.
23844         (cgraph_optimize): Analyze functions.
23845
23846 2007-01-08  Jan Hubicka  <jh@suse.cz>
23847
23848         * tree-pas.h (TODO_remove_function): New flag.
23849         (TODO_update*): Renumber.
23850         (pass_ipa_increase_alignment,
23851         pass_ipa_function_and_variable_visibility): New passes.
23852         * cgraphunit.c (cgraph_increase_alignment): Move to tree-vectorizer.c
23853         (cgraph_function_and_variable_visibility): Move to ipa.c
23854         (cgraph_optimize): Don't call cgraph_function_and_variable_visibility,
23855         cgraph_increase_alignment.
23856         * ipa-inline.c (cgraph_decide_inlining): Don't push timevar.
23857         (cgraph_decide_inlining_incrementally): Push TV_INTEGRATION before
23858         calling tree-inline.
23859         (cgraph_early_inlining): Do not call cgraph_remove_unreachable_nodes.
23860         (pass_ipa_inline, pass_early_ipa_inlining): Set TODO_remove_functions
23861         * tree-vectorizer.c (increase_alignment): Move here from cgraphunit.c
23862         (gate_increase_alignment): New function.
23863         (pass_ipa_increase_alignment): New pass.
23864         * ipa.c: Inline tree-pass.h and timevar.h
23865         (function_and_variable_visibility): Move here from cgraphunit.c
23866         * tree-optimize.c (pass_early_local_passes): Add TODO_remove_functions.
23867         * passes.c (init_optimization_passes): Add the two new passes.
23868         (execute_todo): Handle cgraph_remove_functions.
23869
23870 2007-01-08  Nick Clifton  <nickc@redhat.com>
23871
23872         * config/frv/predicates.md (reg_or_0_operand): Accept
23873         CONST_DOUBLEs.
23874
23875 2007-01-08  Ralf Corsépius <ralf.corsepius@rtems.org>
23876
23877         * config/bfin/rtems.h, config/bfin/t-rtems: New.
23878         * config.gcc: Add bfin*-rtems*.
23879
23880 2007-01-08  Mark Shinwell  <shinwell@codesourcery.com>
23881
23882         * c.opt: Add -flax-vector-conversions.
23883         * c-typeck.c (convert_for_assignment): Pass flag to
23884         vector_types_convertible_p to allow emission of note.
23885         (digest_init): Likewise.
23886         * c-opts.c: Handle -flax-vector-conversions.
23887         * c-common.c (flag_lax_vector_conversions): New.
23888         (vector_types_convertible_p): Unless -flax-vector conversions
23889         has been passed, disallow conversions between vectors with
23890         differing numbers of subparts and/or element types.  If such
23891         a conversion is disallowed, possibly emit a note on the first
23892         occasion only to inform the user of -flax-vector-conversions.
23893         The new last argument specifies this.
23894         * c-common.h (flag_lax_vector_conversions): New.
23895         (vector_types_convertible_p): Add extra argument.
23896         * config/i386/i386.c (ix86_init_mmx_sse_builtins): Use
23897         char_type_node for V*QI type vectors.
23898         * config/rs6000/rs6000-c.c (altivec_overloaded_builtins):
23899         Update to satisfy new typechecking rules.
23900         * config/rs6000/altivec.h (vec_cmple): Use vec_cmpge, for both
23901         C and C++ variants.
23902         * doc/invoke.texi (C Dialect Options): Document
23903         -flax-vector-conversions.
23904
23905 2007-01-08  Mark Shinwell  <shinwell@codesourcery.com>
23906
23907         PR tree-optimization/29877
23908         * tree-ssa-ter.c (is_replaceable_p): Deem assignments with
23909         a register variable on the RHS to not be replaceable.
23910
23911 2007-01-08  Chen Liqin  <liqin@sunnorth.com.cn>
23912         * config/score/t-score-elf (MULTILIB_OPTIONS): Change.
23913         * config/score/predicates.md (const_uimm5, sr0_operand, const_simm12,
23914         const_simm15, const_pow2, const_npow2): Added.
23915         * config/score/misc.md (insv, extv, extzv, movmemsi,
23916         move_lbu_a/b, mov_lhu_a/b etc): Added and fix some bug.
23917         * config/score/score.c (score_address_cost, score_select_cc_mode):
23918         Added.
23919         Change CONST_OK_FOR_LETTER_P/EXTRA_CONSTRAINT define.
23920         Update score_rtx_costs for MACRO TARGET_RTX_COSTS.
23921         Update score_print_operand.
23922         * config/score/score.h (DATA_ALIGNMENT, SELECT_CC_MODE): Added.
23923         Adjust register allocate order and update some macro define.
23924         * config/score/score-mdaux.c (mdx_unaligned_load, mdx_unsigned_store,
23925         mdx_block_move_straight, mdx_block_move_loop_head,
23926         mdx_block_move_loop_body, mdx_block_move_loop_foot,
23927         mdx_block_move_loop, mdx_block_move): Added.
23928         (mdx_movsicc, mdp_select_add_imm, mdp_select, mds_zero_extract_andi,
23929         mdp_limm): Updated and fix some bug and typo.
23930         * config/score/score.md (movqi/hi/si, add/sub/zero/ext): Updated.
23931         (movsf, movdf, doloop_end): Added.
23932
23933 2007-01-08  Kazu Hirata  <kazu@codesourcery.com>
23934
23935         * config/arm/arm.c, config/arm/arm.h, config/arm/arm.md,
23936         config/arm/thumb2.md: Fix comment typos.
23937         * doc/extend.texi: Fix a typo.
23938
23939 2007-01-07  Eric Christopher  <echristo@apple.com>
23940
23941         * configure.ac: Check for __stack_chk_fail for darwin.
23942         * configure: Regenerate.
23943
23944 2007-01-07  Richard Guenther  <rguenther@suse.de>
23945
23946         * tree-vrp.c (extract_range_from_assert): CSE calls to
23947         compare_values where possible.
23948         (extract_range_from_unary_expr): Likewise.
23949
23950 2007-01-07  Anatoly Sokolov <aesok@post.ru>
23951
23952         * config/avr/avr-protos.h (call_insn_operand): Delete prototype.
23953         * config/avr/avr.c (call_insn_operand): Delete function.
23954         * config/avr/avr.md (*pushqi, *pushhi, *pushsi, *pushsf): Use REG_SP
23955         instead of register number. Use predicates.
23956         * config/avr/predicates.md (const0_operand, reg_or_0_operand,
23957         call_insn_operand): Add.
23958
23959 2007-01-06  Jan Hubicka  <jh@suse.cz>
23960
23961         * tree-pass.h (pass_build_cgraph_edges): Declare.
23962         * cgraphunit.c (record_refernece): Move to cgraphbuild.c
23963         (visited_nodes): Remove.
23964         (cgraph_create_edges): Move to cgraphbuild.c; rename to
23965         build_cgrpah_edges; make visited_nodes local.
23966         (cgraph_process_new_functions): DO not call initialize_inline_failed.
23967         (record_references_in_initializer): Move to cgraphbuild.c
23968         (initialize_inline_failed, rebuild_cgraph_edges,
23969         pass_rebuild_cgraph_edges): Move to cgraphbuild.c.
23970         (verify_cgraph_node): Make visited_nodes local.
23971         (cgraph_analyze_function): Do not call cgraph_create_edges and
23972         initialize_inline_failed.
23973         (cgraph_expand_function): Do not call cgraph_lower_function;
23974         assert that function is already lowered.
23975         * Makefile.in (cgraphbuild.o): New.
23976         * passes.c (init_optimization_passes): Add pass_build_cgraph_edges
23977         at the end of lowering passes.
23978
23979 2007-01-06  Steven Bosscher  <steven@gcc.gnu.org>
23980
23981         * ifcvt.c (cond_move_convert_if_block): New function, code
23982         factored out from...
23983         (cond_move_process_if_block): ...here.  Call the new function
23984         on the THEN and ELSE blocks.
23985         (merge_if_block): Do not copy global_live_at_end, merge_blocks
23986         already takes care of this.
23987
23988 2007-01-05  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
23989
23990         PR c/19978
23991         * tree.h (TREE_OVERFLOW_P): New.
23992         * c-typeck.c (parser_build_unary_op): Warn only if result
23993         overflowed and operands did not.
23994         (parser_build_binary_op): Likewise.
23995         (convert_for_assignment): Remove redundant overflow_warning.
23996         * c-common.c (overflow_warning): Don't check or set TREE_OVERFLOW.
23997
23998 2007-01-05  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
23999
24000         * c-typeck.c (store_init_value): Split over two lines to follow
24001         the GNU coding style.
24002
24003 2007-01-05  Benjamin Kosnik  <bkoz@redhat.com>
24004
24005         * c-cppbuiltin.c (c_cpp_builtins): __GXX_EXPERIMENTAL_CPP0X__ to
24006         __GXX_EXPERIMENTAL_CXX0X__.
24007         * doc/cpp.texi: Same.
24008
24009 2007-01-05  Richard Guenther  <rguenther@suse.de>
24010
24011         PR middle-end/27826
24012         * tree.c (get_narrower): Do not construct COMPONENT_REFs
24013         with mismatched types.  Instead explicitly build a
24014         conversion NOP_EXPR.
24015
24016 2007-01-05  Ian Lance Taylor  <iant@google.com>
24017
24018         * c-common.c (decl_with_nonnull_addr_p): New function.
24019         (c_common_truthvalue_conversion): Call it.
24020         * c-typeck.c (build_binary_op): Likewise.
24021         * c-common.h (decl_with_nonnull_addr_p): Declare.
24022
24023 2007-01-05  Jakub Jelinek  <jakub@redhat.com>
24024
24025         PR c/30360
24026         * libgcc2.c (__divdc3): Compare c and d against 0.0 instead of
24027         denom against 0.0.
24028
24029 2007-01-05  Joel Brobecker  <brobecker@adacore.com>
24030
24031         * doc/install.texi (Final install): Document the fact that
24032         the GNAT runtime should not be stripped.
24033
24034 2007-01-04  Jan Hubicka  <jh@suse.cz>
24035
24036         * tree-inline.c (fold_marked_statements): Update operand caches
24037         and EH after folding
24038
24039 2007-01-04  Ian Lance Taylor  <iant@google.com>
24040
24041         * c-common.c (check_function_nonnull): Whitespace fix.
24042
24043 2007-01-04  Jan Hubicka  <jh@suse.cz>
24044
24045         * tree-optimize.c (execute_fixup_cfg): Correct previously mistakely
24046         comitted older version of patch.
24047         (pass_fixup_cfg): Add TODOs to verify flow and statements, dump
24048         function, celanup cfg and collect garbage.
24049
24050 2007-01-04  Mike Stump  <mrs@apple.com>
24051
24052         * Makefile.in (mostlyclean): Don't remove libgcc anymore.
24053         (clean): Likewise.
24054
24055 2007-01-04  Eric Christopher  <echristo@apple.com>
24056
24057         * libgcc2.c (__bswapsi2): Use SItype.
24058         (__bswapdi2): Use DItype.
24059         * libgcc2.h: Update for above.
24060
24061 2007-01-04  Paul Brook  <paul@codesourcery.com>
24062
24063         * config/arm/arm.md (arm_mulsi3, thumb_mulsi3, mulsi3_compare0,
24064         mulsi_compare0_scratch, mulsi3addsi, mulsi3addsi_compare0,
24065         mulsi3addsi_compare0_scratch, mulsidi3adddi, mulsidi3,
24066         umulsidi3, umulsidi3adddi, smulsi3_highpart,
24067         umulsi3_highpart): Make conditional on !arm_arch6.
24068         (arm_mulsi3_v6, thumb_mulsi3_v6, mulsi3_compare0_v6,
24069         mulsi_compare0_scratch_v6, mulsi3addsi_v6, mulsi3addsi_compare0_v6,
24070         mulsi3addsi_compare0_scratch_v6, mulsidi3adddi_v6, mulsidi3_v6,
24071         umulsidi3_v6, umulsidi3adddi_v6, smulsi3_highpart_v6,
24072         umulsi3_highpart_v6): New insns.
24073
24074 2007-01-04  Roger Sayle  <roger@eyesopen.com>
24075
24076         * fold-const.c (fold_convert): When casting an expression to void,
24077         fold_ignored_result may discover a GIMPLE_MODIFY_STMT which doesn't
24078         have a type.  Instead of attempting to build a NOP_EXPR, return
24079         these "special" trees directly.
24080
24081 2007-01-04  Joseph Myers  <joseph@codesourcery.com>
24082
24083         * config/rs6000/rs6000.c (rs6000_rtx_costs): Make adjustment for
24084         MULT inside MINUS as either argument.  Use rs6000_cost->dmul -
24085         rs6000_cost->fp not 0 as adjustment for outer NEG.
24086
24087 2007-01-04  Jan Hubicka  <jh@suse.cz>
24088
24089         * cgraph.c (cgraph_release_function_body): New function.
24090         (cgraph_remove_node): Use it.
24091         * cgraph.h (cgraph_release_function_body): Declare.
24092         * cgraphunit.c (cgraph_expand_function): Use it.
24093         * ipa.c (cgraph_remove_unreahchable_nodes): Use it.
24094         * tree-ssa.c (delete_tree_ssa): Allow to be called before aliasing
24095         is initialized and while compilation of other function is running.
24096         * tree-optimize.c (execute_free_cfg_annotations): Move code to clear
24097         statement CFG annotations from here to ...
24098         * tree-cfg.c (delete_tree_cfg_annotations): ... here.
24099
24100 2007-01-04  Zdenek Dvorak <dvorakz@suse.cz>
24101
24102         * cfgloop.h (enum li_flags): Make the constants powers of two.
24103
24104 2007-01-04  Jan Hubicka  <jh@suse.cz>
24105
24106         * tree-inline.c (copy_bb): Insert new statements to statements_to_fold
24107         set.
24108         (fold_marked_statements): New function.
24109         (optimize_inline_calls, tree_function_versioning): Fold new statements.
24110         * tree-inline.h (copy_body_data): Add statements_to_fold.
24111
24112 2007-01-03  Daniel Jacobowitz  <dan@codesourcery.com>
24113
24114         * config.gcc: Mention libgcc/config.host.
24115         * Makefile.in: Update comments mentioning libgcc.
24116         (LIBGCC, INSTALL_LIBGCC, GCC_PARTS, mklibgcc): Delete.
24117         (all.cross, start.encap, rest.encap, rest.cross): Update
24118         dependencies for libgcc move.
24119         (libgcc.mk, LIBGCC_DEPS, libgcov.a, libgcc.a, stmp-multilib)
24120         (clean-target, clean-target-libgcc): Delete.
24121         (srcdirify, GCC_EXTRA_PARTS): New macros.
24122         (libgcc-support, libgcc.mvars): New rules.
24123         (distclean): Remove mention of mklibgcc.
24124         (install): Don't reference INSTALL_LIBGCC.
24125         (install-common): Don't reference EXTRA_PARTS.
24126         (install-libgcc, install-multilib): Delete rules.
24127         * mklibgcc.in: Delete file.
24128         * doc/configfiles.texi: Don't mention mklibgcc.
24129
24130         * config/i386/t-darwin (SHLIB_VERPFX): Delete (moved to libgcc).
24131         * config/i386/t-darwin64 (SHLIB_VERPFX): Likewise.
24132         * config/rs6000/t-darwin (SHLIB_VERPFX): Likewise.
24133         * config/rs6000/t-ppccomm (TARGET_LIBGCC2_CFLAGS, SHLIB_MAPFILES)
24134         (mklibgcc, ldblspecs): Likewise.
24135
24136         * config/i386/t-nwld (libgcc.def, libc.def, libpcre.def)
24137         (posixpre.def): Use $(T).
24138         (SHLIB_EXT, SHLIB_NAME, SHLIB_SLIBDIR_QUAL, SHLIB_DEF, SHLIB_MAP)
24139         (SHLIB_SRC, SHLIB_INSTALL): Delete.
24140         (SHLIB_LINK): Make dummy.
24141         * config/t-slibgcc-darwin: Delete contents except for dummy SHLIB_LINK.
24142
24143         * config/frv/t-linux (EXTRA_MULTILIB_PARTS): Clear.
24144
24145         * config/alpha/t-crtfm: Use $(T) in rules for EXTRA_PARTS.
24146         * config/alpha/t-vms, config/alpha/t-vms64, config/fr30/t-fr30,
24147         config/i386/t-rtems-i386, config/ia64/t-ia64, config/rs6000/t-beos,
24148         config/rs6000/t-newas, config/sparc/t-elf: Likewise.
24149
24150         * configure.ac (all_outputs): Remove mklibgcc.
24151         * configure: Regenerated.
24152
24153 2007-01-03  Josh Conner  <jconner@apple.com>
24154
24155         PR middle-end/29683
24156         * calls.c (compute_argument_addresses): Set stack and stack_slot
24157         for partial args, too.
24158         (store_one_arg): Use locate.size.constant for the size when
24159         generating a save_area.
24160
24161 2007-01-03  Robert Kennedy <jimbob@google.com>
24162
24163         * tree-cfg.c (tree_merge_blocks): Release SSA_NAME phi results
24164         whose definitions are deleted due to basic block merging.
24165
24166 2007-01-03  Paul Brook  <paul@codesourcery.com>
24167
24168         PR target/16634
24169         * config/arm/arm.c (output_return_instruction): Pop PC in interrupt
24170         functions.
24171         (use_return_insn): Return 0 for Thumb interrupt functions.
24172         (print_multi_reg): Add rfe argument for IRQ returns.
24173         (arm_output_epilogue): Pop interrupt return address directly into PC.
24174         (arm_expand_prologue): Only adjust IRQ return address in Arm mode.
24175
24176 2007-01-03  Paul Brook  <paul@codesourcery.com>
24177
24178         Merge from sourcerygxx-4_1.
24179         * config/arm/thumb2.md: New file.
24180         * config/arm/elf.h (JUMP_TABLES_IN_TEXT_SECTION): Return True for
24181         Thumb-2.
24182         * config/arm/coff.h (JUMP_TABLES_IN_TEXT_SECTION): Ditto.
24183         * config/arm/aout.h (ASM_OUTPUT_ADDR_VEC_ELT): Add !Thumb-2 assertion.
24184         (ASM_OUTPUT_ADDR_DIFF_ELT): Output Thumb-2 jump tables.
24185         * config/arm/aof.h (ASM_OUTPUT_ADDR_DIFF_ELT): Output Thumb-2 jump
24186         tables.
24187         (ASM_OUTPUT_ADDR_VEC_ELT): Add !Thumb-2 assertion.
24188         * config/arm/ieee754-df.S: Use macros for Thumb-2/Unified asm
24189         comptibility.
24190         * config/arm/ieee754-sf.S: Ditto.
24191         * config/arm/arm.c (thumb_base_register_rtx_p): Rename...
24192         (thumb1_base_register_rtx_p): ... to this.
24193         (thumb_index_register_rtx_p): Rename...
24194         (thumb1_index_register_rtx_p): ... to this.
24195         (thumb_output_function_prologue): Rename...
24196         (thumb1_output_function_prologue): ... to this.
24197         (thumb_legitimate_address_p): Rename...
24198         (thumb1_legitimate_address_p): ... to this.
24199         (thumb_rtx_costs): Rename...
24200         (thumb1_rtx_costs): ... to this.
24201         (thumb_compute_save_reg_mask): Rename...
24202         (thumb1_compute_save_reg_mask): ... to this.
24203         (thumb_final_prescan_insn): Rename...
24204         (thumb1_final_prescan_insn): ... to this.
24205         (thumb_expand_epilogue): Rename...
24206         (thumb1_expand_epilogue): ... to this.
24207         (arm_unwind_emit_stm): Rename...
24208         (arm_unwind_emit_sequence): ... to this.
24209         (thumb2_legitimate_index_p, thumb2_legitimate_address_p,
24210         thumb1_compute_save_reg_mask, arm_dwarf_handle_frame_unspec,
24211         thumb2_index_mul_operand, output_move_vfp, arm_shift_nmem,
24212         arm_save_coproc_regs, thumb_set_frame_pointer, arm_print_condition,
24213         thumb2_final_prescan_insn, thumb2_asm_output_opcode, arm_output_shift,
24214         thumb2_output_casesi): New functions.
24215         (TARGET_DWARF_HANDLE_FRAME_UNSPEC): Define.
24216         (FL_THUMB2, FL_NOTM, FL_DIV, FL_FOR_ARCH6T2, FL_FOR_ARCH7,
24217         FL_FOR_ARCH7A, FL_FOR_ARCH7R, FL_FOR_ARCH7M, ARM_LSL_NAME,
24218         THUMB2_WORK_REGS): Define.
24219         (arm_arch_notm, arm_arch_thumb2, arm_arch_hwdiv, arm_condexec_count,
24220         arm_condexec_mask, arm_condexec_masklen)): New variables.
24221         (all_architectures): Add armv6t2, armv7, armv7a, armv7r and armv7m.
24222         (arm_override_options): Check new CPU capabilities.
24223         Set new architecture flag variables.
24224         (arm_isr_value): Handle v7m interrupt functions.
24225         (user_return_insn): Return 0 for v7m interrupt functions.  Handle
24226         Thumb-2.
24227         (const_ok_for_arm): Handle Thumb-2 constants.
24228         (arm_gen_constant): Ditto.  Use movw when available.
24229         (arm_function_ok_for_sibcall): Return false for v7m interrupt
24230         functions.
24231         (legitimize_pic_address, arm_call_tls_get_addr): Handle Thumb-2.
24232         (thumb_find_work_register, arm_load_pic_register,
24233         legitimize_tls_address, arm_address_cost, load_multiple_sequence,
24234         emit_ldm_seq, emit_stm_seq, arm_select_cc_mode, get_jump_table_size,
24235         print_multi_reg, output_mov_long_double_fpa_from_arm,
24236         output_mov_long_double_arm_from_fpa, output_mov_double_fpa_from_arm,
24237         output_mov_double_fpa_from_arm, output_move_double,
24238         arm_compute_save_reg_mask, arm_compute_save_reg0_reg12_mask,
24239         output_return_instruction, arm_output_function_prologue,
24240         arm_output_epilogue, arm_get_frame_offsets, arm_regno_class,
24241         arm_output_mi_thunk, thumb_set_return_address): Ditto.
24242         (arm_expand_prologue): Handle Thumb-2.  Use arm_save_coproc_regs.
24243         (arm_coproc_mem_operand): Allow POST_INC/PRE_DEC.
24244         (arithmetic_instr, shift_op): Use arm_shift_nmem.
24245         (arm_print_operand): Use arm_print_condition.  Handle '(', ')', '.',
24246         '!' and 'L'.
24247         (arm_final_prescan_insn): Use extract_constrain_insn_cached.
24248         (thumb_expand_prologue): Use thumb_set_frame_pointer.
24249         (arm_file_start): Output directive for unified syntax.
24250         (arm_unwind_emit_set): Handle stack alignment instruction.
24251         * config/arm/lib1funcs.asm: Remove default for __ARM_ARCH__.
24252         Add v6t2, v7, v7a, v7r and v7m.
24253         (RETLDM): Add Thumb-2 code.
24254         (do_it, shift1, do_push, do_pop, COND, THUMB_SYNTAX): New macros.
24255         * config/arm/arm.h (TARGET_CPU_CPP_BUILTINS): Define __thumb2__.
24256         (TARGET_THUMB1, TARGET_32BIT, TARGET_THUMB2, TARGET_DSP_MULTIPLY,
24257         TARGET_INT_SIMD, TARGET_UNIFIED_ASM, ARM_FT_STACKALIGN, IS_STACKALIGN,
24258         THUMB2_TRAMPOLINE_TEMPLATE, TRAMPOLINE_ADJUST_ADDRESS,
24259         ASM_OUTPUT_OPCODE, THUMB2_GO_IF_LEGITIMATE_ADDRESS,
24260         THUMB2_LEGITIMIZE_ADDRESS, CASE_VECTOR_PC_RELATIVE,
24261         CASE_VECTOR_SHORTEN_MODE, ADDR_VEC_ALIGN, ASM_OUTPUT_CASE_END,
24262         ADJUST_INSN_LENGTH): Define.
24263         (TARGET_REALLY_IWMMXT, TARGET_IWMMXT_ABI, CONDITIONAL_REGISTER_USAGE,
24264         STATIC_CHAIN_REGNUM, HARD_REGNO_NREGS, INDEX_REG_CLASS,
24265         BASE_REG_CLASS, MODE_BASE_REG_CLASS, SMALL_REGISTER_CLASSES,
24266         PREFERRED_RELOAD_CLASS, SECONDARY_OUTPUT_RELOAD_CLASS,
24267         SECONDARY_INPUT_RELOAD_CLASS, LIBCALL_VALUE, FUNCTION_VALUE_REGNO_P,
24268         TRAMPOLINE_SIZE, INITIALIZE_TRAMPOLINE, HAVE_PRE_INCREMENT,
24269         HAVE_POST_DECREMENT, HAVE_PRE_DECREMENT, HAVE_PRE_MODIFY_DISP,
24270         HAVE_POST_MODIFY_DISP, HAVE_PRE_MODIFY_REG, HAVE_POST_MODIFY_REG,
24271         REGNO_MODE_OK_FOR_BASE_P, LEGITIMATE_CONSTANT_P,
24272         REG_MODE_OK_FOR_BASE_P, REG_OK_FOR_INDEX_P, GO_IF_LEGITIMATE_ADDRESS,
24273         LEGITIMIZE_ADDRESS, THUMB2_LEGITIMIZE_ADDRESS,
24274         GO_IF_MODE_DEPENDENT_ADDRESS, MEMORY_MOVE_COST, BRANCH_COST,
24275         ASM_APP_OFF, ASM_OUTPUT_CASE_LABEL, ARM_DECLARE_FUNCTION_NAME,
24276         FINAL_PRESCAN_INSN, PRINT_OPERAND_PUNCT_VALID_P,
24277         PRINT_OPERAND_ADDRESS): Adjust for Thumb-2.
24278         (arm_arch_notm, arm_arch_thumb2, arm_arch_hwdiv): New declarations.
24279         * config/arm/arm-cores.def: Add arm1156t2-s, cortex-a8, cortex-r4 and
24280         cortex-m3.
24281         * config/arm/arm-tune.md: Regenerate.
24282         * config/arm/arm-protos.h: Update prototypes.
24283         * config/arm/vfp.md: Enable patterns for Thumb-2.
24284         (arm_movsi_vfp): Add movw alternative.  Use output_move_vfp.
24285         (arm_movdi_vfp, movsf_vfp, movdf_vfp): Use output_move_vfp.
24286         (thumb2_movsi_vfp, thumb2_movdi_vfp, thumb2_movsf_vfp,
24287         thumb2_movdf_vfp, thumb2_movsfcc_vfp, thumb2_movdfcc_vfp): New.
24288         * config/arm/libunwind.S: Add Thumb-2 code.
24289         * config/arm/constraints.md: Update include Thumb-2.
24290         * config/arm/ieee754-sf.S: Add Thumb-2/Unified asm support.
24291         * config/arm/ieee754-df.S: Ditto.
24292         * config/arm/bpabi.S: Ditto.
24293         * config/arm/t-arm (MD_INCLUDES): Add thumb2.md.
24294         * config/arm/predicates.md (low_register_operand,
24295         low_reg_or_int_operand, thumb_16bit_operator): New.
24296         (thumb_cmp_operand, thumb_cmpneg_operand): Rename...
24297         (thumb1_cmp_operand, thumb1_cmpneg_operand): ... to this.
24298         * config/arm/t-arm-elf: Add armv7 multilib.
24299         * config/arm/arm.md: Update patterns for Thumb-2 and Unified asm.
24300         Include thumb2.md.
24301         (UNSPEC_STACK_ALIGN, ce_count): New.
24302         (arm_incscc, arm_decscc, arm_umaxsi3, arm_uminsi3,
24303         arm_zero_extendsidi2, arm_zero_extendqidi2): New
24304         insns/expanders.
24305         * config/arm/fpa.md: Update patterns for Thumb-2 and Unified asm.
24306         (thumb2_movsf_fpa, thumb2_movdf_fpa, thumb2_movxf_fpa,
24307         thumb2_movsfcc_fpa, thumb2_movdfcc_fpa): New insns.
24308         * config/arm/cirrus.md: Update patterns for Thumb-2 and Unified asm.
24309         (cirrus_thumb2_movdi, cirrus_thumb2_movsi_insn,
24310         thumb2_cirrus_movsf_hard_insn, thumb2_cirrus_movdf_hard_insn): New
24311         insns.
24312         * doc/extend.texi: Document ARMv7-M interrupt functions.
24313         * doc/invoke.texi: Document Thumb-2 new cores+architectures.
24314
24315 2007-01-03  Jakub Jelinek  <jakub@redhat.com>
24316
24317         * unwind-dw2.c (SIGNAL_FRAME_BIT, EXTENDED_CONTEXT_BIT): Define.
24318         (struct _Unwind_Context): Rename args_size to flags, remove
24319         signal_frame field, add a new args_size field and version field.
24320         (_Unwind_IsSignalFrame, _Unwind_SetSignalFrame,
24321         _Unwind_IsExtendedContext): New inline functions.
24322         (_Unwind_GetGR, _Unwind_SetGR, _Unwind_GetGRPtr, _Unwind_SetGRPtr):
24323         Assume by_value array is only present if _Unwind_IsExtendedContext.
24324         (_Unwind_GetIPInfo, execute_cfa_program, uw_frame_state_for): Use
24325         _Unwind_IsSignalFrame.
24326         (__frame_state_for): Initialize context.flags to EXTENDED_CONTEXT_BIT.
24327         (uw_update_context_1): Use _Unwind_SetSignalFrame.
24328         (uw_init_context_1): Initialize context->flags to
24329         EXTENDED_CONTEXT_BIT.
24330         * config/rs6000/linux-unwind.h (frob_update_context): Use
24331         _Unwind_SetSignalFrame.
24332
24333 2007-01-03  Andrew Pinski  <andrew_pinski@playstation.sony.com>
24334
24335         PR middle-end/30353
24336         * gimplify.c (gimplify_modify_expr_complex_part): Move below
24337         tree_to_gimple_tuple.  Call tree_to_gimple_tuple when we need
24338         the value.
24339
24340 2007-01-03  Kazu Hirata  <kazu@codesourcery.com>
24341
24342         * config/i386/i386.h (NON_STACK_REG_P, REGNO_OK_FOR_SIREG_P,
24343         REGNO_OK_FOR_DIREG_P, REWRITE_ADDRESS, ASM_OPERAND_LETTER,
24344         RET, AT_SP): Remove.
24345         * config/i386/i386.md (*sse_prologue_save_insn): Use return
24346         instead of RET.
24347
24348         * alias.c (init_alias_analysis): Use VEC_safe_grow_cleared.
24349         * cfgbuild.c (find_basic_blocks): Likewise.
24350         * cfgrtl.c (rtl_create_basic_block): Likewise.
24351         * function.c (temp_slots_at_level): Likewise.
24352         * reg-stack.c (stack_regs_mentioned): Likewise.
24353         * regclass.c (allocate_reg_info): Likewise.
24354         * tree-cfg.c (init_empty_tree_cfg, build_tree_cfg, create_bb,
24355         set_bb_for_stmt, move_block_to_fn): Likewise.
24356         * tree-complex.c (tree_lower_complex): Likewise.
24357         * vec.h (VEC_safe_grow_cleared): New.
24358
24359         * cgraphunit.c, tree-ssa-alias.c: Fix comment typos.
24360
24361 2007-01-03  Zdenek Dvorak <dvorakz@suse.cz>
24362
24363         * loop-unswitch.c (unswitch_loop): Pass probabilities to loopify.
24364         * tree-ssa-loop-unswitch.c (tree_unswitch_loop): Pass probabilities
24365         to loop_version.
24366         * cfgloopmanip.c (scale_loop_frequencies): Export.
24367         (loopify): Scale the frequencies by prescribed coefficients.
24368         (set_zero_probability): New function.
24369         (duplicate_loop_to_header_edge): Improve updating of frequencies.
24370         (lv_adjust_loop_entry_edge, loop_version): Set probabilities
24371         and frequencies according to arguments.
24372         * tree-ssa-loop-manip.c (tree_unroll_loop): Set probabilities
24373         correctly.
24374         * cfg.c (scale_bbs_frequencies_int): Allow scaling the frequencies up.
24375         * modulo-sched.c (sms_schedule): Set probabilities for entering
24376         versioned loop correctly.
24377         * tree-vect-transform.c (vect_transform_loop): Ditto.
24378         * cfgloop.h (loopify, loop_version): Declaration changed.
24379         (scale_loop_frequencies): Declared.
24380
24381 2007-01-02  Jan Hubicka  <jh@suse.cz>
24382
24383         * cgraph.c: Include tree-flow.h
24384         (cgraph_add_new-function): Handle IPA_SSA mode; execute
24385         early_local_passes.
24386         * cgraph.h (enum cgraph_state): Add CGRAPH_STATE_IPA_SSA.
24387         * tree-pass.h (pass_all_early_optimizations): Declare.
24388         * cgraphunit.c (cgraph_process_new_functions): Add IPA_SSA; execute
24389         early_local_passes.
24390         (cgraph_analyze_function): Do early_local_passes.
24391         * tree-mudflap.c (mf_decl_cache_locals, mf_build_check_statement_for):
24392         Do not add referenced vars.
24393         * tree-optimize.c (gate_all_optimizations): Do not execute when not in
24394         SSA form.
24395         (gate_all_early_local_passes): New gate.
24396         (pass_early_local_passes): Use new gate.
24397         (execute_early_local_optimizations): New functions.
24398         (gate_all_early_optimizations): New gate.
24399         (pass_all_early_optimizations): New pass.
24400         (execute_free_datastructures): Free SSA only when initialized.
24401         (gate_init_datastructures): Init only when optimizing.
24402         (tree_lowering_passes): Do early local passes when called late.
24403         * tree-profile.c (do_tree_profiling): Don't profile functions added
24404         late.
24405         (do_early_tree_profiling, pass_early_tree_profile): Kill.
24406         * tree-cfg.c (update_modified_stmts): Do not update when operands are
24407         not active.
24408         * passes.c (init_optimizations_passes): Reorder so we go into SSA
24409         during early_local_passes.
24410         * Makefile.in (cgraph.o): Add dependency on tree-flow.h.
24411
24412
24413 2007-01-02  Carlos O'Donell  <carlos@codesourcery.com>
24414
24415         * Makefile.in: Update copyright year.
24416
24417 2007-01-02  Carlos O'Donell  <carlos@codesourcery.com>
24418
24419         * Makefile.in: Export GCC_EXEC_PREFIX before calling $(RUNTEST)
24420         in $(lang_checks) and check-consistency targets.
24421
24422 2007-01-02  Jan Hubicka  <jh@suse.cz>
24423
24424         * tree-mudflap.c (mf_decl_cache_locals, mf_build_check_statement_for):
24425         Do not add referenced vars.
24426         * tree-cfg.c (update_modified_stmts): Do not update when SSA operands
24427         are not active.
24428         * passes.c (init_optimization_passes): Put mudflap_2 after
24429         free_datastructures.
24430
24431 2007-01-02  Jan Hubicka  <jh@suse.cz>
24432
24433         * tree-optimize (execute_fixup_cfg): Set after_inlining flag.
24434         Set NOTHROW flag on call statements proved to be nothrow.
24435         Update statement of local calls so new pure/const functions are
24436         updated. Update_ssa when in ssa form. Mark PHI nodes of nonlocal
24437         goto receivers.
24438         (tree_rest_of_compilation): Register hooks and initialize bitmap
24439         early. Do not set after_inlining flag.
24440
24441 2007-01-02  Steve Ellcey  <sje@cup.hp.com>
24442
24443         * sbitmap.c (HOST_BITS_PER_LONG_LONG):  Change to
24444         HOST_BITS_PER_LONGLONG
24445
24446 2007-01-02  Manuel Lopez-Ibanez <manu@gcc.gnu.org>
24447
24448         PR c/19977
24449         * c-typeck.c (store_init_value): Don't emit pedantic overflow
24450         warning for non-static initializers.
24451
24452 2007-01-02  Steven Bosscher  <steven@gcc.gnu.org>
24453
24454         * config/alpha/alpha.md, arm/arm.c, darwin.c, frv/frv.md,
24455         m32r/m32r.c, m32r/m32r.c, mn10300/mn10300.md, pa/pa.c,
24456         rs6000/rs6000.c, s390/s390.md, sh/sh.md, sparc/sparc.c:
24457         Always use set_unique_reg_note to add REG_EQUAL notes.
24458
24459 2007-01-02  Kazu Hirata  <kazu@codesourcery.com>
24460
24461         Revert:
24462         2007-01-02  Kazu Hirata  <kazu@codesourcery.com>
24463
24464         * alias.c (init_alias_analysis): Use VEC_safe_grow_cleared.
24465         * cfgbuild.c (find_basic_blocks): Likewise.
24466         * cfgrtl.c (rtl_create_basic_block): Likewise.
24467         * function.c (temp_slots_at_level): Likewise.
24468         * reg-stack.c (stack_regs_mentioned): Likewise.
24469         * regclass.c (allocate_reg_info): Likewise.
24470         * tree-cfg.c (init_empty_tree_cfg, build_tree_cfg, create_bb,
24471         set_bb_for_stmt, move_block_to_fn): Likewise.
24472         * tree-complex.c (tree_lower_complex): Likewise.
24473         * vec.h (VEC_safe_grow_cleared): New.
24474
24475 2007-01-02  Ian Lance Taylor  <iant@google.com>
24476
24477         * c-common.c (c_common_truthvalue_conversion): When warning about
24478         using an assignment as a truth value, set TREE_NO_WARNING.
24479
24480 2007-01-02  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
24481
24482         PR middle-end/7651
24483         * c.opt (Wold-style-declaration): New.
24484         * doc/invoke.texi (C-only Warning Options): New.
24485         (Wold-style-declaration): Document it.
24486         (Wextra): Enabled by -Wextra.
24487         * c-opts.c (c_common_post_options): Enabled by -Wextra.
24488         * c-decl.c (declspecs_add_scspec): Replace -Wextra with
24489         -Wold-style-declaration.
24490
24491 2007-01-02  Kazu Hirata  <kazu@codesourcery.com>
24492
24493         * alias.c (init_alias_analysis): Use VEC_safe_grow_cleared.
24494         * cfgbuild.c (find_basic_blocks): Likewise.
24495         * cfgrtl.c (rtl_create_basic_block): Likewise.
24496         * function.c (temp_slots_at_level): Likewise.
24497         * reg-stack.c (stack_regs_mentioned): Likewise.
24498         * regclass.c (allocate_reg_info): Likewise.
24499         * tree-cfg.c (init_empty_tree_cfg, build_tree_cfg, create_bb,
24500         set_bb_for_stmt, move_block_to_fn): Likewise.
24501         * tree-complex.c (tree_lower_complex): Likewise.
24502         * vec.h (VEC_safe_grow_cleared): New.
24503
24504 2007-01-02  Douglas Gregor  <doug.gregor@gmail.com>
24505
24506         * c-common.c (c_common_nodes_and_builtins): Since variants of
24507         void_type_node get built before it is given a name, we need to
24508         give those variants the name, too.
24509         (complete_array_type): We need to work with the canonical main
24510         type of the array, from which we will build the qualified version.
24511         * params.def (PARAM_VERIFY_CANONICAL_TYPES): New.
24512         * print-tree.c (print_node): Display canonical type information
24513         for each type.
24514         * stor-layout.c (layout_type): When we don't know the
24515         alignment of a type for which we're building an array, we end up
24516         guessing wrong, so make the type require structural equality.
24517         * tree.c (make_node_stat): When we build a new type, it is its
24518         own canonical type.
24519         (build_type_attribute_qual_variant): When building an attribute
24520         variant, its canonical type is the non-attribute variant. However,
24521         if the attributes are target-dependent and they differ, we need to
24522         use structural equality checks for this type.
24523         (build_qualified_type): A qualified type is not equivalent to its
24524         unqualified variant; set the canonical type appropriately.
24525         (build_distinct_type_copy): When building a distinct type from
24526         another type, the new type is its own canonical type.
24527         (build_variant_type_copy): When building a new type variant, we
24528         assume that it is equivalent to the original type.
24529         (build_pointer_type_for_mode): When building a pointer type, also
24530         build a canonical type pointer.
24531         (build_reference_type_for_mode): When building a reference type,
24532         also build a canonical type reference.
24533         (build_index_type): When we can't hash an index type (e.g.,
24534         because its maximum value is negative), the index type requires
24535         structural equality tests.
24536         (build_array_type): Build the canonical form of an array type.
24537         (build_function_type): Function types require structural equality,
24538         because they contain default arguments, attributes, etc.
24539         (build_method_type_directly): Ditto for method types.
24540         (build_offset_type): Build the canonical offset type.
24541         (build_complex_type): Build the canonical vector type.
24542         (make_vector_type): Build the canonical vector type.
24543         * tree.h (TYPE_CANONICAL): New.
24544         (TYPE_STRUCTURAL_EQUALITY_P): New.
24545         (SET_TYPE_STRUCTURAL_EQUALITY): New.
24546         (struct tree_type): Added "canonical" field.
24547         * params.h (VERIFY_CANONICAL_TYPES): New.
24548         * doc/c-tree.texi (TYPE_CANONICAL): Document.
24549         (TYPE_STRUCTURAL_EQUALITY_P): Document.
24550         (SET_TYPE_STRUCTURAL_EQUALITY): Document.
24551         * doc/invoke.texi (verify-canonical-types): Document --param
24552         parameter for verifying canonical types.
24553
24554 2007-01-02  Joseph Myers  <joseph@codesourcery.com>
24555
24556         * config.gcc (powerpc-*-eabispe*, powerpc-*-eabisimaltivec*,
24557         powerpc-*-eabisim*, powerpc-*-eabialtivec*, powerpc-*-eabi*,
24558         powerpc-*-rtems*, powerpc-wrs-vxworks, powerpc-wrs-vxworksae,
24559         powerpcle-*-eabisim*, powerpcle-*-eabi*): Add rs6000/e500.h to
24560         tm_file.
24561         * config/rs6000/e500.h: New.
24562         * config/rs6000/eabi.h (TARGET_SPE_ABI, TARGET_SPE, TARGET_E500,
24563         TARGET_ISEL, TARGET_FPRS, TARGET_E500_SINGLE, TARGET_E500_DOUBLE):
24564         Remove.
24565         * config/rs6000/linuxspe.h (TARGET_SPE_ABI, TARGET_SPE,
24566         TARGET_E500, TARGET_ISEL, TARGET_FPRS, TARGET_E500_SINGLE,
24567         TARGET_E500_DOUBLE): Remove.
24568         * config/rs6000/vxworks.h (TARGET_SPE_ABI, TARGET_SPE,
24569         TARGET_E500, TARGET_ISEL, TARGET_FPRS): Remove.
24570         * config/rs6000/rs6000.h (CHECK_E500_OPTIONS): Define.
24571         * config/rs6000/rs6000.c (rs6000_override_options): Use
24572         CHECK_E500_OPTIONS.
24573
24574 2007-01-02  Joseph Myers  <joseph@codesourcery.com>
24575
24576         * config/rs6000/rs6000.c (print_operand): Check (TARGET_SPE ||
24577         TARGET_E500_DOUBLE), not TARGET_E500, for %y.
24578         (rs6000_generate_compare, rs6000_emit_sCOND, output_cbranch,
24579         rs6000_emit_cmove): Don't check TARGET_E500.
24580         * config/rs6000/rs6000.md (bunordered, bordered, sunordered,
24581         sordered): Don't check TARGET_E500.
24582
24583 2007-01-01  Eric Christopher  <echristo@apple.com>
24584
24585         * config/mips/mips.c (mips_regno_mode_ok_for_base_p): Use
24586         HARD_REGISTER_NUM_P.
24587
24588 2007-01-01  Roger Sayle  <roger@eyesopen.com>
24589
24590         * fold-const.c (fold_binary) <EQ_EXPR>: Fold "(X^C1) eq/ne C2" into
24591         "X eq/ne (C1^C2)".  Fold "(X^Z) eq/ne (Y^Z)" as "X eq/ne Y" when Z
24592         has no side-effects.  Fold "(X^C1) eq/ne (Y^C2)" as "(X^(C1^C2))
24593         eq/ne Y".
24594
24595 2007-01-01  Mike Stump  <mrs@apple.com>
24596
24597         * configure.ac: Remove support for building with Apple's gcc-3.1.
24598
24599 2007-01-02  Joseph Myers  <joseph@codesourcery.com>
24600
24601         PR middle-end/30311
24602         * caller-save.c (add_stored_regs): Only handle SUBREGs if inner
24603         REG is a hard register.  Do not modify REG before calling
24604         subreg_nregs.
24605         * rtlanal.c (subreg_get_info): Don't assert size of XMODE is a
24606         multiple of the size of YMODE for certain lowpart cases.
24607
24608 2007-01-01  Andrew Pinski  <pinskia@gmail.com>
24609
24610         PR middle-end/30253
24611         * gimplify (voidify_wrapper_expr): Update for
24612         GIMPLE_MODIFY_STMT.
24613
24614 2007-01-01  Andreas Schwab  <schwab@suse.de>
24615
24616         PR target/29166
24617         * config/ia64/ia64.c (ia64_compute_frame_size): Account space for
24618         save of BR0 in extra_spill_size instead of spill_size.
24619         (ia64_expand_prologue): Save BR0 outside of the gr/br/fr spill
24620         area.
24621         (ia64_expand_epilogue): Restore BR0 from its new location.
24622
24623 2007-01-01  Andrew Pinski  <pinskia@gmail.com>
24624
24625         * gimplify.c (gimplify_init_constructor <case VECTOR_TYPE>):
24626         Use a temporary variable if the left hand side is not a gimple
24627         register.
24628
24629 2007-01-01  Andrew Pinski  <pinskia@gmail.com>
24630
24631         * gimplify.c (gimplify_return_expr): Make the temporary variable
24632         for the return expression, a gimple register variable.
24633
24634 2007-01-01  Jan Hubicka  <jh@suse.cz>
24635
24636         * emit-rtl.c (emit_copy_of_insn_after): Do not call copy_insn_1 for
24637         INSN_LIST.
24638
24639 2007-01-01  Mike Stump  <mrs@apple.com>
24640
24641         * configure.ac (HAVE_GAS_LITERAL16): Add autoconf check for
24642         .literal16.
24643         * config/darwin.c (machopic_select_rtx_section): Use
24644         HAVE_GAS_LITERAL16.
24645         (darwin_mergeable_constant_section): Likewise.
24646         * configure: Regenerate.
24647         * config.in: Regenerate.
24648
24649 2007-01-01  Jan Hubicka  <jh@suse.cz>
24650             Andrew Pinski  <pinskia@gmail.com>
24651
24652         * cgraphunit.c (cgraph_optimize): Call cgraph_add_new_functions
24653         before starting IPA passes.