OSDN Git Service

gcc/
[pf3gnuchains/gcc-fork.git] / gcc / ChangeLog
1 2007-08-27  H.J. Lu  <hongjiu.lu@intel.com>
2
3         PR target/31385
4         * config/i386/i386.h (VALID_DFP_MODE_P): New.
5         * config/i386/i386.c (ix86_hard_regno_mode_ok): Allow DFP in
6         GPR.
7
8 2007-08-27  Sandra Loosemore  <sandra@codesourcery.com>
9             David Ung  <davidu@mips.com>
10             Nigel Stephens <nigel@mips.com>
11
12         Separate target-specific initialization from general
13         back-end initialization.
14
15         * toplev.c (init_alignments): New, split out from...
16         (process_options): ...here.
17         (backend_init_target):  New, split out from...
18         (backend_init): ...here.
19         (lang_dependent_init_target):  New, split out from...
20         (lang_dependent_init): ...here.
21         (target_reinit): New.
22         * toplev.h (target_reinit): Declare.
23         * expr.c (init_expr_target): Renamed from init_expr_once, since it
24         now can be called more than once.  Update comments.
25         * expr.h (init_expr_target): Likewise.
26         * alias.c (init_alias_target): Renamed from init_alias_once, since it
27         now can be called more than once.  Explicitly zero
28         static_reg_base_value.
29         * emit-rtl.c (init_emit_regs): New, split out from...
30         (init_emit_once): Here.
31         * regclass.c (initial_fixed_regs, initial_call_used_regs): Make
32         non-const, so that changes from command-line arguments can overwrite
33         values provided by the static initializers.
34         (initial_call_really_used_regs): New, used similarly to the above.
35         (initial_reg_names): Likewise.
36         (last_mode_for_init_move_cost): Promoted function-local static to
37         file-scope static to make it accessible outside init_move_cost.
38         (init_reg_sets): Do not initialize fixed_regs and call_used_regs yet.
39         Do not initialize inv_reg_alloc_order yet, either.  Do initialize
40         reg_names since it is needed for parsing command-line options.
41         (init_move_cost): Use last_mode_for_init_move_cost instead of
42         function-local static.
43         (init_reg_sets_1): Initialize fixed_regs, call_used_regs, and
44         call_really_used_regs now.  Reinitialize reg_names.  Also
45         initialize inv_reg_alloc_order.  Zero reg_class_subunion and
46         reg_class_superunion.  Clear losing_caller_save_reg_set.
47         Preserve global registers if called more than once.  Reset
48         move cost, may_move_in_cost, may_move_out_cost, and
49         last_mode_for_init_move_cost.
50         (init_reg_modes_target): Renamed from init_reg_modes_once, since it
51         can now be invoked more than once.  Update comments.
52         (init_regs): Update comments.
53         (fix_register): Update initial_fixed_regs, initial_call_used_regs,
54         and initial_call_really_used_regs, instead of the non-initial 
55         variables.  This allows us to save the command-line register settings
56         after target reinitialization.
57         (init_reg_autoinc): Zero forbidden_inc_dec_classes.
58         * rtl.h (init_emit_regs): Declare.
59         (init_reg_modes_target, init_alias_target): Renamed as described
60         above.
61         * reload1.c (init_reload): Update comments.
62         * optabs.c (init_optabs): Likewise.
63         * cfgloopanal.c (init_set_costs): Explicitly zero target_avail_regs.
64         
65 2007-08-26  Chao-ying Fu  <fu@mips.com>
66
67         * rtl.h (XCNMPFV): Preserve const-ness of parameters through use of
68         __typeof().
69
70 2007-08-26  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
71
72         * alias.c (memory_modified_1, memory_modified_in_insn_p):
73         Constify.
74         * basic-block.h (tree_predicted_by_p, rtl_predicted_by_p):
75         Likewise.
76         * bb-reorder.c (copy_bb_p): Likewise.
77         * cfghooks.c (can_remove_branch_p, can_merge_blocks_p,
78         predicted_by_p, can_duplicate_block_p, block_ends_with_call_p,
79         block_ends_with_condjump_p): Likewise.
80         * cfghooks.h (can_remove_branch_p, can_merge_blocks_p,
81         predicted_by_p, can_duplicate_block_p, block_ends_with_call_p,
82         block_ends_with_condjump_p): Likewise.
83         * cfglayout.c (cfg_layout_can_duplicate_bb_p): Likewise.
84         * cfgrtl.c (can_delete_note_p, can_delete_label_p,
85         rtl_can_merge_blocks, cfg_layout_can_merge_blocks_p,
86         rtl_block_ends_with_call_p, rtl_block_ends_with_condjump_p,
87         need_fake_edge_p, rtl_can_remove_branch_p): Likewise.
88         * dbxout.c (dbx_debug_hooks, xcoff_debug_hooks): Use
89         debug_true_const_tree instad of debug_true_tree.
90         * debug.c (do_nothing_debug_hooks): Likewise.
91         * debug.h (ignore_block, debug_true_const_tree): Constify.
92         * dwarf2out.c (stack_adjust_offset, clobbers_queued_reg_save,
93         dwarf2out_ignore_block, is_pseudo_reg, is_tagged_type,
94         decl_ultimate_origin, block_ultimate_origin, lookup_decl_loc,
95         same_dw_val_p, add_ranges, is_subrange_type, type_is_enum,
96         dbx_reg_number, is_based_loc, field_type,
97         simple_type_align_in_bits, simple_decl_align_in_bits,
98         simple_type_size_in_bits, field_byte_offset, insert_float,
99         type_tag, member_declared_type, is_redundant_typedef,
100         secname_for_decl, is_inlined_entry_point): Likewise.
101         * emit-rtl.c (const_next_insn, const_previous_insn,
102         const_next_nonnote_insn, const_prev_nonnote_insn,
103         const_next_real_insn, const_prev_real_insn,
104         const_next_active_insn, const_prev_active_insn, const_next_label,
105         const_prev_label): Likewise.
106         * except.h (lookup_stmt_eh_region_fn, lookup_stmt_eh_region):
107         Likewise.
108         * haifa-sched.c (may_trap_exp, haifa_classify_insn,
109         find_set_reg_weight, no_real_insns_p, find_set_reg_weight,
110         sched_insn_is_legitimate_for_speculation_p): Likewise.
111         * jump.c (reversed_comparison_code_parts,
112         reversed_comparison_code, reversed_comparison, condjump_label):
113         Likewise.
114         * predict.c (rtl_predicted_by_p, tree_predicted_by_p): Likewise.
115         * reg-stack.c (stack_regs_mentioned_p, stack_regs_mentioned):
116         Likewise.
117         * rtl.h (const_previous_insn, const_next_insn,
118         const_prev_nonnote_insn, const_next_nonnote_insn,
119         const_prev_real_insn, const_next_real_insn,
120         const_prev_active_insn, const_next_active_insn, const_prev_label,
121         const_next_label, modified_between_p, modified_in_p,
122         const_note_storeskeep_with_call_p, condjump_label,
123         reversed_comparison, reversed_comparison_code,
124         reversed_comparison_code_parts, memory_modified_in_insn_p,
125         stack_regs_mentioned): Likewise.
126         * rtlanal.c (modified_between_p, modified_in_p, const_note_stores,
127         keep_with_call_p): Likewise.
128         * sched-deps.c (deps_may_trap_p, sched_get_condition,
129         conditions_mutex_p, sched_insns_conditions_mutex_psd_next_list,
130         sd_lists_size, sd_lists_empty_p): Likewise.
131         * sched-int.h (sched_insns_conditions_mutex_p,
132         haifa_classify_insn, no_real_insns_p,
133         sched_insn_is_legitimate_for_speculation_p, sd_next_list,
134         sd_lists_size, sd_lists_empty_p): Likewise.
135         * sdbout.c (sdb_debug_hooks): Likewise.
136         * tree-cfg.c (tree_can_merge_blocks_p, is_ctrl_altering_stmt,
137         stmt_ends_bb_p, tree_can_remove_branch_p, tree_can_duplicate_bb_p,
138         -tree_block_ends_with_call_p, tree_block_ends_with_condjump_p):
139         Likewise.
140         * tree-eh.c (lookup_stmt_eh_region_fn, lookup_stmt_eh_region,
141         tree_can_throw_internal): Likewise.
142         * tree-flow-inline.h (phi_nodes): Likewise.
143         * tree-flow.h (phi_nodesstmt_ends_bb_p, is_ctrl_altering_stmt,
144         tree_can_throw_internal, lookup_stmt_eh_region): Likewise.
145         * tree-gimple.c (const_get_call_expr_in): Likewise.
146         * tree-gimple.h (const_get_call_expr_in): Likewise.
147         * tree.c (const_lookup_attribute, attribute_list_equal,
148         attribute_list_contained): Likewise.
149         * tree.h (attribute_list_equal, attribute_list_contained,
150         const_lookup_attribute): Likewise.
151         * vmsdbgout.c (vmsdbgout_ignore_block): Likewise.
152
153 2007-08-26  Bernhard Fischer  <aldot@gcc.gnu.org>
154
155         * tree-ssa-sccvn.c, tree-ssa-sccvn.h, tree-vn.c,
156         tree-ssa-pre.c: Remove unnecessary trailing whitespace.
157
158 2007-08-26  H.J. Lu  <hongjiu.lu@intel.com>
159
160         PR target/32991
161         * config/alpha/constraints.md: Delete "svn:mime-type" property
162         with svn propdel "svn:mime-type".
163
164 2007-08-26  H.J. Lu  <hongjiu.lu@intel.com>
165
166         PR middle-end/33181
167         * ifcvt.c (noce_get_alt_condition): Make sure that the previous
168         non NOTE insn doesn't cross basic block.
169         (noce_try_abs): Likewise.
170         (noce_process_if_block): Likewise.
171
172 2007-08-26  David Edelsohn  <edelsohn@gnu.org>
173
174         PR target/33151
175         * config/rs6000/predicates.md (offsettable_mem_operand): Memory
176         operand without auto-inc-dec.
177         * config/rs6000/rs6000.md (floatsidf2_internal): Use
178         offsettable_mem_operand.
179         (floatunssidf2_internal): Same.
180         (fix_truncdfsi2_internal): Same.
181         (floatsidf_ppc64): Same.
182         (floatunssidf_ppc64): Same.
183         (fix_trunctfsi2_internal): Same.
184
185 2007-08-26  Bernhard Fischer  <aldot@gcc.gnu.org>
186
187         PR bootstrap/30620
188         * Makefile.in (libbackend.o): Add gcov-iov.h dependency and
189         pass defines needed for version.c.
190
191 2007-08-25  Joseph Myers  <joseph@codesourcery.com>
192
193         * configure.ac (--debug-prefix-map check): Change assembler
194         version presumed to have feature to 2.18.
195         * configure: Regenerate.
196
197 2007-08-25  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
198
199         * c-common.c (vector_types_convertible_p,
200         decl_with_nonnull_addr_p, c_promoting_integer_type_p,
201         self_promoting_args_p): Constify.
202         * c-common.h (has_c_linkage, decl_with_nonnull_addr_p,
203         c_promoting_integer_type_p, self_promoting_args_p,
204         anon_aggr_type_p, vector_types_convertible_p): Likewise.
205         * c-decl.c (anon_aggr_type_p): Likewise.
206         * * c-dump.c (dump_stmt): Likewise.
207         * c-objc-common.c (has_c_linkage): Likewise.
208         * c-tree.h (same_translation_unit_p): Likewise.
209         * c-typeck.c (null_pointer_constant_p,
210         tagged_types_tu_compatible_p, function_types_compatible_p,
211         type_lists_compatible_p, lvalue_or_else, lvalue_p,
212         comptypes_internal, struct tagged_tu_seen_cache,
213         same_translation_unit_p, alloc_tagged_tu_seen_cache,
214         c_size_in_bytes): Likewise.
215         * ggc-common.c (compare_ptr_data, hash_descriptor, eq_descriptor,
216         hash_ptr, eq_ptr): Likewise.
217         * langhooks-def.h (lhd_decl_ok_for_sibcall,
218         LANG_HOOKS_OMP_PRIVATIZE_BY_REFERENCE): Likewise.
219         * langhooks.c (lhd_decl_ok_for_sibcall): Likewise.
220         * langhooks.h (ok_for_sibcall, omp_privatize_by_reference):
221         Likewise.
222         * optabs.c (optab_for_tree_code): Likewise.
223         * optabs.h (optab_for_tree_code): Likewise.
224         * rtl.h (simplify_rtx): Likewise.
225         * simplify-rtx.c (simplify_rtx): Likewise.
226         * tree-dump.c (queue, queue_and_dump_index, queue_and_dump_type,
227         dump_flag, dump_node): Likewise.
228         * tree-dump.h (struct dump_info, dump_stmt, queue_and_dump_index,
229         queue_and_dump_type, dump_flag): Likewise.
230         * tree-flow.h (vect_can_force_dr_alignment_p): Likewise.
231         * tree-pass.h (dump_node): Likewise.
232         * tree-vectorizer.c (vect_can_force_dr_alignment_p,
233         supportable_narrowing_operation): Likewise.
234         * tree-vectorizer.h (vect_can_force_dr_alignment_p,
235         supportable_narrowing_operation): Likewise.
236         * tree-vrp.c (needs_overflow_infinity, supports_overflow_infinity,
237         is_negative_overflow_infinity, is_positive_overflow_infinity,
238         is_overflow_infinity, vrp_val_is_max, vrp_val_is_min,
239         nonnull_arg_p, get_value_range, vrp_operand_equal_p,
240         update_value_range, add_equivalence, ssa_name_nonnegative_p,
241         ssa_name_nonzero_p, fp_predicate): Likewise.
242         * tree.c (auto_var_in_fn_p, empty_body_p): Likewise.
243         * tree.h (empty_body_p, auto_var_in_fn_p, ssa_name_nonzero_p,
244         ssa_name_nonnegative_p): Likewise.
245
246 2007-08-25  Hans Kester  <hans.kester@ellips.nl>
247
248         * config.gcc : Add x86_64-elf target.
249
250 2007-08-25  Jakub Jelinek  <jakub@redhat.com>
251
252         * expr.c (store_expr): Fix order of store_by_pieces arguments.
253
254 2007-08-24  Sandra Loosemore  <sandra@codesourcery.com>
255             Nigel Stephens <nigel@mips.com>
256
257         PR target/11787
258
259         * doc/tm.texi (SET_RATIO, SET_BY_PIECES_P): Document new macros.
260         (STORE_BY_PIECES_P): No longer applies to __builtin_memset.
261         * expr.c (SET_BY_PIECES_P): Define.
262         (can_store_by_pieces, store_by_pieces): Add MEMSETP argument; use
263         it to decide whether to use SET_BY_PIECES_P or STORE_BY_PIECES_P.
264         (store_expr): Pass MEMSETP argument to can_store_by_pieces and
265         store_by_pieces.
266         * expr.h (SET_RATIO): Define.
267         (can_store_by_pieces, store_by_pieces): Update prototypes.
268         * builtins.c (expand_builtin_memcpy): Pass MEMSETP argument to
269         can_store_by_pieces/store_by_pieces.
270         (expand_builtin_memcpy_args): Likewise.
271         (expand_builtin_strncpy): Likewise.
272         (expand_builtin_memset_args): Likewise.  Also remove special case
273         for optimize_size so that can_store_by_pieces/SET_BY_PIECES_P can
274         decide what to do instead.
275         * value-prof.c (tree_stringops_transform): Pass MEMSETP argument
276         to can_store_by_pieces.
277
278         * config/sh/sh.h (SET_BY_PIECES_P): Clone from STORE_BY_PIECES_P.
279         * config/s390/s390.h (SET_BY_PIECES_P): Likewise.
280
281         * config/mips/mips.opt (mmemcpy): Change from Var to Mask.
282         * config/mips/mips.c (override_options): Make -Os default to -mmemcpy.
283         * config/mips/mips.h (MIPS_CALL_RATIO): Define.
284         (MOVE_RATIO, CLEAR_RATIO, SET_RATIO): Define.
285         (STORE_BY_PIECES_P): Define.
286
287 2007-08-24  Tom Tromey  <tromey@redhat.com>
288
289         * varpool.c (varpool_last_needed_node): Fix comment typo.
290         * c-decl.c (duplicate_decls): Fix comment typo.
291         (clone_underlying_type): Update comment.
292
293 2007-08-24  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
294
295         * config/alpha/alpha.c (alpha_mangle_type, decl_has_samegp,
296         alpha_in_small_data_p, alpha_split_complex_arg,
297         alpha_stdarg_optimize_hook, TARGET_ASM_CAN_OUTPUT_MI_THUNK):
298         Constify.
299         * config/arm/arm-protos.h (arm_mangle_type): Likewise.
300         * config/arm/arm.c (arm_comp_type_attributes, arm_mangle_type):
301         Likewise.
302         * config/bfin/bfin.c (funkind, bfin_comp_type_attributes,
303         TARGET_ASM_CAN_OUTPUT_MI_THUNK): Likewise.
304         * config/darwin-protos.h (darwin_binds_local_p): Likewise.
305         * config/darwin.c (darwin_binds_local_p): Likewise.
306         * config/frv/frv.c (frv_string_begins_with, frv_in_small_data_p):
307         Likewise.
308         * config/i386/i386-protos.h (i386_pe_binds_local_p,
309         i386_pe_valid_dllimport_attribute_p): Likewise.
310         * config/i386/i386.c (ix86_function_regparm,
311         ix86_comp_type_attributes, ix86_ms_bitfield_layout_p,
312         x86_can_output_mi_thunk, ix86_mangle_type,
313         TARGET_USE_BLOCKS_FOR_CONSTANT_P): Likewise.
314         * config/i386/winnt.c (i386_pe_valid_dllimport_attribute_p,
315         i386_pe_binds_local_p): Likewise.
316         * config/ia64/ia64.c
317         (ia64_first_cycle_multipass_dfa_lookahead_guard_spec,
318         ia64_needs_block_p, ia64_in_small_data_p, ia64_mangle_type,
319         ia64_invalid_conversion, ia64_invalid_unary_op,
320         ia64_invalid_binary_op, TARGET_ASM_CAN_OUTPUT_MI_THUNK):
321         Likewise.
322         * config/m32c/m32c.c (m32c_comp_type_attributes): Likewise.
323         * config/m32r/m32r.c (m32r_in_small_data_p): Likewise.
324         * config/m68k/m68k.c (TARGET_ASM_CAN_OUTPUT_MI_THUNK): Likewise.
325         * config/mips/mips.c (mips_use_blocks_for_constant_p,
326         mips_in_small_data_p, mips_use_anchors_for_symbol_p,
327         mips_comp_type_attributes, TARGET_ASM_CAN_OUTPUT_MI_THUNK,
328         mips_near_type_p, mips_far_type_p, mips_global_symbol_p,
329         mips_symbol_binds_local_p, mips_classify_symbol): Likewise.
330         * config/pa/pa.c (pa_commutative_p): Likewise.
331         * config/rs6000/rs6000-protos.h (rs6000_elf_in_small_data_p):
332         Likewise.
333         * config/rs6000/rs6000.c (rs6000_invalid_within_doloop,
334         rs6000_ms_bitfield_layout_p, rs6000_mangle_type,
335         rs6000_use_blocks_for_constant_p,
336         rs6000_vector_alignment_reachable, rs6000_is_opaque_type,
337         invalid_arg_for_unprototyped_fn, TARGET_ASM_CAN_OUTPUT_MI_THUNK,
338         TARGET_SPLIT_COMPLEX_ARG, rs6000_elf_in_small_data_p): Likewise.
339         * config/s390/s390.c (s390_mangle_type,
340         TARGET_ASM_CAN_OUTPUT_MI_THUNK, TARGET_INVALID_WITHIN_DOLOOP):
341         Likewise.
342         * config/score/score.c (TARGET_ASM_CAN_OUTPUT_MI_THUNK,
343         th_in_small_data_p): Likewise.
344         * config/sh/sh.c (sh_ms_bitfield_layout_p,
345         sh_dwarf_calling_convention, TARGET_ASM_CAN_OUTPUT_MI_THUNK):
346         Likewise.
347         * config/sparc/sparc.c (sparc_can_output_mi_thunk,
348         sparc_mangle_type): Likewise.
349         * config/spu/spu.c (spu_vector_alignment_reachable): Likewise.
350         * config/xtensa/xtensa.c (TARGET_SPLIT_COMPLEX_ARG): Likewise.
351         * emit-rtl.c (const_fixed_htab_hash, const_fixed_htab_eq):
352         Likewise.
353         * hooks.c (hook_bool_mode_const_rtx_false,
354         hook_bool_mode_const_rtx_true,
355         hook_bool_const_tree_hwi_hwi_const_tree_false,
356         hook_bool_const_tree_hwi_hwi_const_tree_true,
357         hook_int_const_tree_0, hook_int_const_tree_const_tree_1,
358         hook_constcharptr_const_tree_null,
359         hook_constcharptr_const_rtx_null,
360         hook_constcharptr_const_tree_const_tree_null,
361         hook_constcharptr_int_const_tree_null,
362         hook_constcharptr_int_const_tree_const_tree_null): New.
363         (hook_bool_mode_rtx_false, hook_bool_mode_rtx_true,
364         hook_bool_tree_hwi_hwi_tree_false,
365         hook_bool_tree_hwi_hwi_tree_true, hook_int_tree_0,
366         hook_int_tree_tree_1, hook_constcharptr_tree_null,
367         hook_constcharptr_rtx_null, hook_constcharptr_tree_tree_null,
368         hook_constcharptr_int_tree_null,
369         hook_constcharptr_int_tree_tree_null): Delete.
370         (default_can_output_mi_thunk_no_vcall): Constify.
371         * hooks.h (hook_bool_mode_rtx_false, hook_bool_mode_rtx_true,
372         hook_bool_tree_hwi_hwi_tree_false,
373         hook_bool_tree_hwi_hwi_tree_true, hook_int_tree_0,
374         hook_int_tree_tree_1, hook_constcharptr_tree_null,
375         hook_constcharptr_rtx_null, hook_constcharptr_tree_tree_null,
376         hook_constcharptr_int_tree_null,
377         hook_constcharptr_int_tree_tree_null): Delete.
378         (hook_bool_mode_const_rtx_false, hook_bool_mode_const_rtx_true,
379         hook_bool_const_tree_hwi_hwi_const_tree_false,
380         hook_bool_const_tree_hwi_hwi_const_tree_true,
381         hook_int_const_tree_0, hook_int_const_tree_const_tree_1,
382         hook_constcharptr_const_tree_null,
383         hook_constcharptr_const_rtx_null,
384         hook_constcharptr_const_tree_const_tree_null,
385         hook_constcharptr_int_const_tree_null,
386         hook_constcharptr_int_const_tree_const_tree_null): New.
387         (default_can_output_mi_thunk_no_vcall): Constify.
388         * integrate.c (function_attribute_inlinable_p): Likewise.
389         * integrate.h (function_attribute_inlinable_p): Likewise.
390         * jump.c (rtx_renumbered_equal_p): Likewise.
391         * output.h (decl_readonly_section, categorize_decl_for_section,
392         default_use_anchors_for_symbol_p, default_binds_local_p,
393         default_binds_local_p_1): Likewise.
394         * rtl.h (rtx_renumbered_equal_p, decl_default_tls_model):
395         Likewise.
396         * target-def.h (TARGET_ASM_CAN_OUTPUT_MI_THUNK,
397         TARGET_VALID_DLLIMPORT_ATTRIBUTE_P, TARGET_VECTOR_OPAQUE_P,
398         TARGET_COMMUTATIVE_P, TARGET_USE_BLOCKS_FOR_CONSTANT_P,
399         TARGET_COMP_TYPE_ATTRIBUTES,
400         TARGET_FUNCTION_ATTRIBUTE_INLINABLE_P,
401         TARGET_MS_BITFIELD_LAYOUT_P, TARGET_MANGLE_TYPE,
402         TARGET_IN_SMALL_DATA_P, TARGET_INVALID_CONVERSION,
403         TARGET_INVALID_UNARY_OP, TARGET_INVALID_BINARY_OP,
404         TARGET_DWARF_CALLING_CONVENTION): Likewise.
405         * target.h (can_output_mi_thunk, needs_block_p,
406         first_cycle_multipass_dfa_lookahead_guard_spec,
407         vector_alignment_reachable, comp_type_attributes,
408         function_attribute_inlinable_p, ms_bitfield_layout_p, mangle_type,
409         commutative_p, use_blocks_for_constant_p,
410         use_anchors_for_symbol_p, in_small_data_p, binds_local_p,
411         vector_opaque_p, dwarf_calling_convention, stdarg_optimize_hook,
412         invalid_within_doloop, valid_dllimport_attribute_p,
413         split_complex_arg, invalid_arg_for_unprototyped_fn,
414         invalid_conversion, invalid_unary_op, invalid_binary_op):
415         Likewise.
416         * targhooks.c (default_invalid_within_doloop,
417         hook_invalid_arg_for_unprototyped_fn,
418         default_builtin_vector_alignment_reachable): Likewise.
419         (hook_bool_rtx_commutative_p): Delete.
420         (hook_bool_const_rtx_commutative_p): New.
421         * targhooks.h (default_invalid_within_doloop,
422         default_builtin_vector_alignment_reachable,
423         hook_invalid_arg_for_unprototyped_fn): Constify.
424         (hook_bool_rtx_commutative_p): Delete.
425         (hook_bool_const_rtx_commutative_p): New.
426         * varasm.c (bss_initializer_p, decl_default_tls_model,
427         categorize_decl_for_section, decl_readonly_section,
428         default_use_anchors_for_symbol_p, default_binds_local_p,
429         default_binds_local_p_1): Constify.
430
431 2007-08-24  Jie Zhang  <jie.zhang@analog.com>
432
433         * config/bfin/bfin.h (TARGET_CPU_CPP_BUILTINS): Define
434         __NO_BUILTIN if -fno-builtin.
435
436 2007-08-24  Jie Zhang  <jie.zhang@analog.com>
437
438         * config/bfin/bfin.c (print_operand): Report error instead of
439         ICE for wrong operand.
440
441 2007-08-24  Michael Matz  <matz@suse.de>
442
443         * Makefile.in (GTFILES_H): Use $(patsubst) instead of $(subst).
444
445 2007-08-24  Richard Guenther  <rguenther@suse.de>
446
447         PR middle-end/33166
448         * tree-ssa.c (useless_type_conversion_p): Split into a
449         recursive and a non-recursive part.
450         (useless_type_conversion_p_1): New function.
451         * tree-ssa-ccp.c (fold_stmt_r): Make sure that the result
452         from maybe_fold_offset_to_reference is trivially convertible
453         to the desired type before doing the simplification.
454
455 2007-08-24  Jakub Jelinek  <jakub@redhat.com>
456
457         * expr.c (store_expr): Optimize initialization of an array
458         with STRING_CST.
459         * expr.h (builtin_strncpy_read_str): New prototype.
460         * builtins.c (builtin_strncpy_read_str): Remove prototype.
461         No longer static.
462
463 2007-08-24  Uros Bizjak  <ubizjak@gmail.com>
464
465         PR middle-end/33157
466         * ifcvt.c (noce_find_if_block): Do not clear if_info.cond_earliest
467         field when initializing if_info structure.
468
469 2007-08-24  Richard Guenther  <rguenther@suse.de>
470
471         * Makefile.in (tree-inline.o): Add $(TARGET_H) and $(INTEGRATE_H)
472         dependencies.
473         * c-objc-common.c (c_cannot_inline_tree_fn): Remove.
474         * langhooks.c (lhd_tree_inlining_cannot_inline_tree_fn): Likewise.
475         * tree-inline.c (inlinable_function_p): Fold in common parts of
476         the cannot_inline_tree_fn langhook.
477         * langhooks-def.h (lhd_tree_inlining_cannot_inline_tree_fn): Remove.
478         (LANG_HOOKS_TREE_INLINING_CANNOT_INLINE_TREE_FN): Likewise.
479         (LANG_HOOKS_TREE_INLINING_INITIALIZER): Remove initializer for
480         cannot_inline_tree_fn langhook.
481         * langhooks.h (struct lang_hooks_for_tree_inlining): Remove
482         cannot_inline_tree_fn member.
483
484 2007-08-24  Richard Guenther  <rguenther@suse.de>
485
486         * expr.c (get_inner_reference): Do computation of bitoffset
487         from offset in a way we can detect overflow reliably.
488
489 2007-08-24  Jie Zhang  <jie.zhang@analog.com>
490
491         * crtstuff.c (USE_PT_GNU_EH_FRAME): Don't define for uClibc.
492
493 2007-08-24  Jie Zhang  <jie.zhang@analog.com>
494
495         * config/bfin/bfin.opt (mfast-fp): Add.
496         * config/bfin/linux.h (LINK_GCC_C_SEQUENCE_SPEC): Let
497         libbffastfp override libgcc if -mfast-fp.
498         * config/bfin/bfin.h (LINK_GCC_C_SEQUENCE_SPEC): Likewise.
499         * doc/invoke.texi (Option Summary): Mention -mfast-fp.
500         (Blackfin Options): Document -mfast-fp.
501
502 2007-08-24  Jakub Jelinek  <jakub@redhat.com>
503
504         PR tree-optimization/32573
505         PR middle-end/32946
506         * tree-data-ref.c (initialize_data_dependence_relation): Clear
507         DDR_SUBSCRIPTS, DDR_DIR_VECTS and DDR_DIST_VECTS at the beginning.
508         (finalize_ddr_dependent): Clear DDR_SUBSCRIPTS after freeing it.
509         (build_classic_dist_vector): Return false rather than true if
510         DDR_ARE_DEPENDENT is non-NULL at the beginning.  Return false
511         if either subscript_dependence_tester_1 or build_classic_dist_vector_1
512         returned false.  Don't call save_dist_v before calling
513         build_classic_dist_vector_1.
514         (free_dependence_relation): Don't guard freeing DDR_SUBSCRIPTS
515         with NULL DDR_ARE_DEPENDENT.  Also free DDR_DIST_VECTS and/or
516         DDR_DIR_VECTS vectors.
517
518 2007-08-23  Brian Sidebotham  <brian.sidebotham@gmail.com>
519
520         * configure.ac (leb128): Modify sed statement to work with any binutils
521         version string.
522         * configure: Regenerate
523
524 2007-08-23  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
525
526         * config/arc/arc-protos.h arc_select_cc_mode, gen_compare_reg):
527         Wrap in RTX_CODE macro guard.
528         * config/arm/pe.c (arm_dllexport_p, arm_dllimport_p,
529         arm_dllexport_name_p, arm_dllimport_name_p, arm_mark_dllexport,
530         arm_mark_dllimport, arm_pe_encode_section_info,
531         arm_pe_unique_section): Use ISO-C function declarations.
532         * config/c4x/c4x-c.c (c4x_parse_pragma, c4x_pr_CODE_SECTION,
533         c4x_pr_DATA_SECTION, c4x_pr_FUNC_IS_PURE,
534         c4x_pr_FUNC_NEVER_RETURNS, c4x_pr_INTERRUPT, c4x_pr_ignored):
535         Likewise.
536         * config/iq2000/iq2000.h (ASM_OUTPUT_SKIP): Fix format warning.
537         * config/m68hc11/m68hc11.h (ASM_OUTPUT_EXTERNAL): Undef before
538         defining.
539         * config/mips/mips.h (ASM_DECLARE_OBJECT_NAME): Fix format
540         warnings.
541         * config/mn10300/mn10300.h (OUTPUT_ADDR_CONST_EXTRA): Likewise.
542         * config/pdp11/pdp11.c (pdp11_output_function_epilogue): Likewise.
543         (register_move_cost): Use ISO-C function declarations.
544         * config/pdp11/pdp11.h (PRINT_OPERAND): Fix format warnings.
545         * config/score/score-protos.h (score_declare_object): Add
546         ATTRIBUTE_PRINTF_4.
547         * config/score/score.h (ASM_DECLARE_OBJECT_NAME): Fix format
548         warnings.
549         * final.c (profile_function): Avoid empty if-bodies.
550         
551         
552         * calls.c (must_pass_in_stack_var_size,
553         must_pass_in_stack_var_size_or_pad): Constify.
554         * config/alpha/alpha-protos.h (function_value): Likewise.
555         * config/alpha/alpha.c (alpha_return_in_memory,
556         alpha_pass_by_reference, function_value,
557         unicosmk_must_pass_in_stack, TARGET_PROMOTE_FUNCTION_ARGS,
558         TARGET_PROMOTE_FUNCTION_RETURN, TARGET_PROMOTE_PROTOTYPES):
559         Likewise.
560         * config/arc/arc.c (arc_return_in_memory, arc_pass_by_reference,
561         TARGET_PROMOTE_FUNCTION_ARGS, TARGET_PROMOTE_FUNCTION_RETURN,
562         TARGET_PROMOTE_PROTOTYPES): Likewise.
563         * config/arm/arm-protos.h (arm_return_in_memory,
564         arm_pad_arg_upward, arm_function_value): Likewise.
565         * config/arm/arm.c (arm_pass_by_reference,
566         arm_promote_prototypes, arm_return_in_msb, arm_must_pass_in_stack,
567         TARGET_PROMOTE_FUNCTION_ARGS, TARGET_PROMOTE_FUNCTION_RETURN,
568         arm_function_value, arm_return_in_memory, arm_pad_arg_upward):
569         Likewise.
570         * config/arm/arm.h (ARM_DECLARE_FUNCTION_NAME): Likewise.
571         * config/avr/avr-protos.h (avr_function_value): Likewise.
572         * config/avr/avr.c (avr_return_in_memory,
573         gas_output_limited_string, gas_output_ascii, avr_function_value,
574         avr_return_in_memory): Likewise.
575         * config/bfin/bfin-protos.h (bfin_return_in_memory): Likewise.
576         * config/bfin/bfin.c (bfin_pass_by_reference,
577         bfin_return_in_memory, TARGET_PROMOTE_PROTOTYPES,
578         TARGET_PROMOTE_FUNCTION_ARGS, TARGET_PROMOTE_FUNCTION_RETURN):
579         Likewise.
580         * config/cris/cris.c (cris_pass_by_reference,
581         TARGET_PROMOTE_FUNCTION_ARGS): Likewise.
582         * config/crx/crx.c (crx_return_in_memory): Likewise.
583         * config/darwin.c (function_base, machopic_function_base_name):
584         Likewise.
585         * config/fr30/fr30.c (fr30_must_pass_in_stack,
586         TARGET_PROMOTE_PROTOTYPES): Likewise.
587         * config/frv/frv.c (frv_must_pass_in_stack): Likewise.
588         * config/h8300/h8300.c (h8300_return_in_memory): Likewise.
589         * config/i386/i386-protos.h (ix86_return_in_memory,
590         ix86_sol10_return_in_memory): Likewise.
591         * config/i386/i386.c (ix86_function_value,
592         ix86_function_sseregparm, ix86_must_pass_in_stack,
593         type_natural_mode, classify_argument, examine_argument,
594         construct_container, ix86_pass_by_reference, function_value_32,
595         function_value_64, ix86_function_value_1, return_in_memory_32,
596         return_in_memory_64, return_in_memory_ms_64,
597         ix86_return_in_memory, ix86_sol10_return_in_memory,
598         TARGET_PROMOTE_PROTOTYPES): Likewise.
599         * config/ia64/ia64-protos.h (ia64_function_value,
600         ia64_hpux_function_arg_padding): Likewise.
601         * config/ia64/ia64.c (hfa_element_mode, ia64_return_in_memory,
602         ia64_function_value, bundle_state_hash, bundle_state_eq_p,
603         ia64_hpux_function_arg_padding): Likewise.
604         * config/iq2000/iq2000-protos.h (function_arg,
605         iq2000_function_value): Likewise.
606         * config/iq2000/iq2000.c (iq2000_return_in_memory,
607         iq2000_pass_by_reference, TARGET_PROMOTE_FUNCTION_ARGS,
608         TARGET_PROMOTE_FUNCTION_RETURN, TARGET_PROMOTE_PROTOTYPES,
609         function_arg, iq2000_function_value): Likewise.
610         * config/m32c/m32c-protos.h (m32c_function_value,
611         m32c_promote_function_return): Likewise.
612         * config/m32c/m32c.c (m32c_pass_by_reference,
613         m32c_promote_prototypes, m32c_promote_function_return,
614         m32c_function_value): Likewise.
615         * config/m32r/m32r.c (m32r_return_in_memory,
616         m32r_pass_by_reference, TARGET_PROMOTE_PROTOTYPES,
617         m32r_in_small_data_p): Likewise.
618         * config/m68hc11/m68hc11-protos.h (m68hc11_function_arg_padding):
619         Likewise.
620         * config/m68hc11/m68hc11.c (m68hc11_return_in_memory,
621         m68hc11_function_arg_padding): Likewise.
622         * config/m68k/m68k-protos.h (m68k_function_value): Likewise.
623         * config/m68k/m68k.c (TARGET_PROMOTE_PROTOTYPES,
624         m68k_function_value): Likewise.
625         * config/mcore/mcore-protos.h (mcore_num_arg_regs,
626         mcore_function_value): Likewise.
627         * config/mcore/mcore.c (handle_structs_in_regs,
628         mcore_return_in_memory, TARGET_PROMOTE_FUNCTION_ARGS,
629         TARGET_PROMOTE_FUNCTION_RETURN, TARGET_PROMOTE_PROTOTYPES,
630         mcore_num_arg_regs, mcore_function_value): Likewise.
631         * config/mips/mips-protos.h (mips_pad_arg_upward,
632         mips_function_value): Likewise.
633         * config/mips/mips.c (mips_fpr_return_fields, mips_return_in_msb,
634         mips_return_in_memory, mips_pass_by_reference, mips_callee_copies,
635         TARGET_PROMOTE_FUNCTION_ARGS, TARGET_PROMOTE_FUNCTION_RETURN,
636         TARGET_PROMOTE_PROTOTYPES, mips_pad_arg_upward,
637         mips_function_value): Likewise.
638         * config/mmix/mmix-protos.h (mmix_function_outgoing_value):
639         Likewise.
640         * config/mmix/mmix.c (mmix_pass_by_reference,
641         TARGET_PROMOTE_FUNCTION_ARGS, mmix_function_outgoing_value,
642         mmix_encode_section_info): Likewise.
643         * config/mn10300/mn10300-protos.h (mn10300_function_value):
644         Likewise.
645         * config/mn10300/mn10300.c (mn10300_return_in_memory,
646         mn10300_pass_by_reference, TARGET_PROMOTE_PROTOTYPES,
647         mn10300_function_value): Likewise.
648         * config/mt/mt-protos.h (mt_function_value): Likewise.
649         * config/mt/mt.c (mt_pass_by_reference, mt_function_value,
650         mt_pass_in_stack, TARGET_PROMOTE_PROTOTYPES): Likewise.
651         * config/pa/pa-protos.h (function_arg_padding, function_value,
652         pa_return_in_memory): Likewise.
653         * config/pa/pa.c (pa_pass_by_reference,
654         TARGET_PROMOTE_FUNCTION_RETURN, TARGET_PROMOTE_PROTOTYPES,
655         function_arg_padding, function_value, pa_return_in_memory):
656         Likewise.
657         * config/pdp11/pdp11.c (pdp11_return_in_memory): Likewise.
658         * config/rs6000/rs6000-protos.h (rs6000_function_value,
659         function_arg_padding): Likewise.
660         * config/rs6000/rs6000.c (rs6000_return_in_memory,
661         rs6000_darwin64_record_arg_recurse, rs6000_darwin64_record_arg,
662         rs6000_pass_by_reference, rs6000_must_pass_in_stack,
663         TARGET_PROMOTE_FUNCTION_ARGS, TARGET_PROMOTE_FUNCTION_RETURN,
664         function_arg_padding, altivec_expand_dst_builtin,
665         altivec_expand_builtin, rs6000_expand_builtin, spe_init_builtins,
666         altivec_init_builtins, rs6000_common_init_builtins,
667         rs6000_function_value): Likewise.
668         * s390/s390-protos.h (s390_function_value): Likewise.
669         * config/s390/s390.c (s390_function_arg_size,
670         s390_pass_by_reference, s390_return_in_memory,
671         s390_function_value, TARGET_PROMOTE_FUNCTION_ARGS,
672         TARGET_PROMOTE_FUNCTION_RETURN): Likewise.
673         * config/score/score-protos.h (score_function_value): Likewise.
674         * config/score/score.c (score_arg_partial_bytes,
675         TARGET_PROMOTE_FUNCTION_ARGS, TARGET_PROMOTE_FUNCTION_RETURN,
676         TARGET_PROMOTE_PROTOTYPES, score_return_in_memory,
677         score_pass_by_reference, score_add_offset, score_function_value):
678         Likewise.
679         * config/sh/sh-protos.h (sh_attr_renesas_p,
680         sh_promote_prototypes): Likewise.
681         * config/sh/sh.c (sh_return_in_memory, sh_pass_by_reference,
682         sh_callee_copies, sh_promote_prototypes, shcompact_byref,
683         sh_attr_renesas_p): Likewise.
684         * config/sparc/sparc-protos.h (function_value,
685         function_arg_padding): Likewise.
686         * config/sparc/sparc.c (sparc_promote_prototypes,
687         sparc_return_in_memory, sparc_pass_by_reference,
688         TARGET_PROMOTE_FUNCTION_ARGS, TARGET_PROMOTE_FUNCTION_RETURN,
689         function_arg_record_value_2, function_arg_record_value_1,
690         function_arg_record_value, function_arg_record_value,
691         function_arg_padding, function_value): Likewise.
692         * config/spu/spu-protos.h (spu_function_value): Likewise.
693         * config/spu/spu.c (spu_pass_by_reference, spu_return_in_memory,
694         spu_function_value): Likewise.
695         * config/stormy16/stormy16-protos.h (xstormy16_function_value):
696         Likewise.
697         * config/stormy16/stormy16.c (xstormy16_return_in_memory,
698         xstormy16_function_value, TARGET_PROMOTE_FUNCTION_ARGS,
699         TARGET_PROMOTE_FUNCTION_RETURN, TARGET_PROMOTE_PROTOTYPES):
700         Likewise.
701         * config/v850/v850.c (v850_return_in_memory,
702         v850_pass_by_reference, TARGET_PROMOTE_PROTOTYPES): Likewise.
703         * config/vax/vax.c (TARGET_PROMOTE_PROTOTYPES): Likewise.
704         * config/xtensa/xtensa.c (xtensa_return_in_msb,
705         xtensa_return_in_memory, TARGET_PROMOTE_FUNCTION_ARGS,
706         TARGET_PROMOTE_FUNCTION_RETURN, TARGET_PROMOTE_PROTOTYPES):
707         Likewise.
708         * explow.c (promote_mode, hard_function_value): Likewise.
709         * expr.h (hard_function_value, promote_mode): Likewise.
710         * function.c (aggregate_value_p): Likewise.
711         * hooks.c (hook_bool_const_tree_true): New.
712         * hooks.h (hook_bool_const_tree_true): New.
713         * sdbout.c (SET_KNOWN_TYPE_TAG, plain_type_1): Constify.
714         * target-def.h (TARGET_PROMOTE_FUNCTION_ARGS,
715         TARGET_PROMOTE_FUNCTION_RETURN, TARGET_PROMOTE_PROTOTYPES,
716         TARGET_RETURN_IN_MSB): Likewise.
717         * target.h (promote_function_args, promote_function_return,
718         promote_prototypes, return_in_memory, return_in_msb,
719         pass_by_reference, must_pass_in_stack, callee_copies,
720         function_value): Likewise.
721         * targhooks.c (default_return_in_memory,
722         hook_pass_by_reference_must_pass_in_stack,
723         hook_callee_copies_named,
724         hook_bool_CUMULATIVE_ARGS_mode_tree_bool_false,
725         hook_bool_CUMULATIVE_ARGS_mode_tree_bool_true,
726         default_function_value): Likewise. 
727         * targhooks.h (default_return_in_memory,
728         hook_pass_by_reference_must_pass_in_stack,
729         hook_callee_copies_named,
730         hook_bool_CUMULATIVE_ARGS_mode_tree_bool_false,
731         hook_bool_CUMULATIVE_ARGS_mode_tree_bool_true,
732         default_function_value): Likewise.
733         * tree-ssa-structalias.c (const_equiv_class_label_t): New.
734         (equiv_class_label_hash, equiv_class_label_eq): Constify.
735         * tree-vectorizer.c (bb_in_loop_p): Likewise.
736         * tree.c (needs_to_live_in_memory): Likewise.
737         * tree.h (struct tree_type, needs_to_live_in_memory,
738         aggregate_value_p, must_pass_in_stack_var_size,
739         must_pass_in_stack_var_size_or_pad): Likewise.
740         * vmsdbgout.c (write_debug_addr, write_debug_delta4,
741         write_debug_string, ASM_OUTPUT_DEBUG_STRING, write_rtnbeg,
742         lookup_filename): Likewise.
743
744 2007-08-23  Uros Bizjak  <ubizjak@gmail.com>
745
746         PR target/17390
747         * config/i386/i386.c (ix86_expand_fp_compare): Expand fp comparison to
748         fake fcomi i387 instruction for !TARGET_CMOVE.
749         (ix86_expand_branch): Expand natural sequence with one jump for
750         all targets, not only TARGET_CMOVE.
751         * config/i386/i386.md (*cmpfp_0_cc): New define_insn_and_split
752         pattern to implement fake fcomi sequence.  Split instruction after
753         reload to correct compare sequences.
754         (*cmpfp_xf_cc): Ditto.
755         (*cmpfp_<mode>_cc): Ditto.
756         (*cmpfp_u_cc): Ditto.
757         (*cmpfp_<mode>_cc): Ditto.
758
759 2007-08-23  Richard Guenther  <rguenther@suse.de>
760
761         * tree-pretty-print.c (dump_generic_node): Annotate
762         GIMPLE_MODIFY_STMTs with volatile ops with "{v}".
763
764 2007-08-23  Richard Guenther  <rguenther@suse.de>
765
766         * builtins.c (expand_builtin_mathfn): Wrap argument in
767         save_expr directly instead of re-building the call.
768         (expand_builtin_mathfn_2): Likewise.
769         (expand_builtin_mathfn_3): Likewise.
770         (expand_builtin_interclass_mathfn): Likewise.
771         (expand_builtin_int_roundingfn): Set arg.
772         (expand_builtin_int_roundingfn_2): Likewise.
773
774 2007-08-23  Paolo Bonzini  <bonzini@gnu.org>
775
776         * config/i386/sse.md (*sse_and<mode>3, *sse_ior<mode>3,
777         *sse_nand<mode>3, *sse_xor<mode>3): New.
778
779 2007-08-23  Uros Bizjak  <ubizjak@gmail.com>
780
781         * config/i386/i386.h (PRINT_OPERAND_PUNCT_VALID_P): Add ';' code.
782         * config/i386/i386.c (print_operand): Handle ';' code.  Output
783         semicolon for TARGET_MACHO.
784         * config/i386/sync.md (*sync_compare_and_swap<mode>): Use '%;' to
785         emit semicolon after 'lock' prefix.
786         (sync_double_compare_and_swap<mode>): Ditto.
787         (*sync_double_compare_and_swapdi_pic): Ditto.
788         (*sync_compare_and_swap_cc<mode>): Ditto.
789         (sync_double_compare_and_swap_cc<mode>): Ditto.
790         (*sync_double_compare_and_swap_ccdi_pic): Ditto.
791         (sync_old_add<mode>): Ditto.
792         (sync_add<mode>): Ditto.
793         (sync_sub<mode>): Ditto.
794         (sync_ior<mode>): Ditto.
795         (sync_and<mode>): Ditto.
796         (sync_xor<mode>): Ditto.
797
798 2007-08-22  Chao-ying Fu  <fu@mips.com>
799
800         * rtl.c (rtx_code_size): Check CONST_FIXED to calcualte correct sizes
801         in DEF_RTL_EXPR.
802         (copy_rtx): Handle CONST_FIXED.
803         (rtx_equal_p): Likewise.
804         * rtl.h (fixed_value.h): New include.
805         (rtx_def): Add a new field of fixed_value to u.
806         (XCNMPFV): Define for accessing fixed_value.
807         (CONST_FIXED_VALUE, CONST_FIXED_VALUE_HIGH, CONST_FIXED_VALUE_LOW):
808         Define.
809         * rtl.def (CONST_FIXED): New constant.
810         (SS_MULT, US_MULT, SS_DIV, US_DIV, FRACT_CONVERT,
811         UNSIGNED_FRACT_CONVERT, SAT_FRACT, UNSIGNED_SAT_FRACT, US_NEG,
812         US_ASHIFT): New codes.
813         * doc/rtl.texi (Expressions): Document const_fixed, us_neg, ss_mult,
814         us_mult, ss_div, us_div, us_ashift, fract_convert, sat_fract,
815         unsigned_fract_convert, unsigned_sat_fract): Document them.
816         * varasm.c (assemble_integer): Extend to support fixed-point constants
817         by using different machine classes.
818         (decode_addr_const): Handle FIXED_CST.
819         (const_hash_1): Likewise.
820         (compare_constant): Likewise.
821         (copy_constant): Likewise.
822         (const_rtx_hash_1): Handle CONST_FIXED.
823         (output_constant_pool_2): Handle MODE_FRACT, MODE_UFRACT, MODE_ACCUM,
824         MODE_UACCUM, MODE_VECTOR_FRACT, MODE_VECTOR_UFRACT, MODE_VECTOR_ACCUM,
825         MODE_VECTOR_UACCUM.
826         (initializer_constant_valid_p): Handle FIXED_CST.
827         (output_constant): Support FIXED_POINT_TYPE.
828         * gengenrtl.c (excluded_rtx): Check CONST_FIXED to exclude.
829         * cse.c (hash_rtx): Support CONST_FIXED.
830         (exp_equiv_p): Likewise.
831         (cannon_reg): Likewise.
832         (fold_rtx): Likewise.
833         (equiv_constant): Likewise.
834         (cse_process_notes_1): Likewise.
835         (count_reg_usage): Likewise.
836         * cselib.c (entry_and_rtx_equal_p): Check CONST_FIXED.
837         (rtx_equal_for_cselib_p): Handle CONST_FIXED.
838         (wrap_constant): Check CONST_FIXED.
839         (cselib_hash_rtx): Support CONST_FIXED.
840         (cselib_subst_to_values): Likewise.
841         * df-scan.c (df_uses_record): Likewise.
842         * gcse.c (want_to_gcse_p): Likewise.
843         (oprs_unchanged_p): Likewise.
844         (oprs_not_set_p): Likewise.
845         (compute_transp): Likewise.
846         (extract_mentioned_regs_helper): Likewise.
847         * genemit.c (gen_exp): Likewise.
848         * local-alloc.c (equiv_init_varies_p): Likewise.
849         (contains_replace_regs): Likewise.
850         (memref_referenced_p): Likewise.
851         * loop-invariant.c (check_maybe_invariant): Likewise.
852         (hash_invariant_expr_1): Likewise.
853         (invariant_expr_equal_p): Likewise.
854         * postreload-gcse.c (oprs_unchanged_p): Likewise.
855         * regclass.c (reg_scan_mark_refs): Likewise.
856         * regrename.c (scan_rtx): Likewise.
857         * resource.c (mark_referenced_resources): Likewise.
858         (mark_set_resources): Likewise.
859         * rtlanal.c (rtx_unstable_p): Likewise.
860         (rtx_varies_p): Likewise.
861         (count_occurrences): Likewise.
862         (reg_mentioned_p): Likewise.
863         (modified_between_p): Likewise.
864         (modified_in_p): Likewise.
865         (volatile_insn_p): Likewise.
866         (volatile_refs_p): Likewise.
867         (side_effects_p): Likewise.
868         (may_trap_p_1): Likewise.
869         (inequality_comparisons_p): Likewise.
870         (computed_jump_p_1): Likewise.
871         (commutative_operand_precedence): Likewise.
872         * sched-deps.c (sched_analyze_2): Likewise.
873         * sched-vis.c (print_value): Likewise.
874         * reload.c (operands_match_p): Likewise.
875         (subst_reg_equivs): Likewise.
876         * reload1.c (eliminate_regs_1): Likewise.
877         (elimination_effects): Likewise.
878         (scan_paradoxical_subregs): Likewise.
879         * alias.c (rtx_equal_for_memref_p): Likewise.
880         * Makefile.in (RTL_BASE_H): Add fixed-value.h.
881         * emit-rtl.c (const_fixed_htab): New hash table.
882         (const_fixed_htab_hash, const_fixed_htab_eq, lookup_const_fixed):
883         Declare.
884         (const_fixed_htab_hash, const_fixed_htab_eq, lookup_const_fixed,
885         const_fixed_from_fixed_value): New functions.
886         (verify_rtx_sharing): Handle CONST_FIXED.
887         (copy_rtx_if_shared_1): Likewise.
888         (reset_used_flags): Likewise.
889         (set_used_flags): Likewise.
890         (copy_insn_1): Likewise.
891         (init_emit_once): Create const_fixed_htab.
892         Store fixed-point scalar and vector zero and one to const_tiny_rtx.
893
894 2007-08-22  Zdenek Dvorak  <ook@ucw.cz>
895
896         PR tree-optimization/32949
897         * tree-ssa-loop-niter.c (scev_probably_wraps_p): Test nowrap_type_p
898         before failing for ivs with non-constant step.
899
900 2007-08-22  Hans-Peter Nilsson  <hp@axis.com>
901
902         * doc/md.texi (Iterators): Renamed from Macros.  All contents
903         changed to reflect rename of respectively define_code_macro and
904         define_mode_macro to define_code_iterator and define_mode_iterator.
905         (Mode Iterators, Code Iterators): Similar.
906         * read-rtl.c (struct iterator_group, struct iterator_traverse_data)
907         (uses_mode_iterator_p, apply_mode_iterator, uses_code_iterator_p)
908         (apply_iterator_to_string, uses_iterator_p, apply_iterator_traverse)
909         (initialize_iterators, find_iterator, check_code_iterator)
910         (map_attr_string, apply_mode_maps, apply_iterator_to_rtx, add_mapping)
911         (read_mapping, read_rtx_1): Similar.
912         * config/alpha/sync.md, config/alpha/alpha.md, config/frv/frv.md,
913         config/s390/s390.md, config/m32c/blkmov.md, config/m32c/m32c.md,
914         config/spu/spu.md, config/sparc/sparc.md, config/sparc/sync.md,
915         config/i386/i386.md, config/i386/mmx.md, config/i386/sse.md,
916         config/i386/sync.md, config/crx/crx.md, config/xtensa/xtensa.md,
917         config/cris/cris.c, config/cris/cris.md, config/ia64/sync.md,
918         config/ia64/div.md, config/ia64/vect.md, config/ia64/ia64.md,
919         config/m68k/m68k.md, config/rs6000/spe.md, config/rs6000/altivec.md,
920         config/rs6000/sync.md, config/rs6000/rs6000.md,
921         config/arm/vec-common.md, config/arm/neon.md, config/arm/iwmmxt.md,
922         config/arm/arm.md, config/mips/mips-dsp.md, config/mips/mips.md,
923         config/vax/vax.md, config/bfin/bfin.md: Similar.
924
925 2007-08-22  David Daney  <ddaney@avtrex.com>
926
927         * doc/install.texi (Testing): Mention testing on a simulator.
928
929 2007-08-22  Janis Johnson  <janis187@us.ibm.com>
930
931         * config/dfp-bit.c (DFP_TO_DFP): Check for overflow.
932
933         * doc/libgcc.texi (Decimal float library routines): Fix formatting
934         and rearrange floating point conversion functions into different
935         categories.
936
937 2007-08-22  Maxim Kuvyrkov  <maxim@codesourcery.com>
938
939         * target.h (struct gcc_target.sched: dfa_pre_advance_cycle,
940         dfa_post_advance_cycle): New scheduler hooks.
941         * target-def.h (TARGET_SCHED_DFA_PRE_ADVANCE_CYCLE,
942         TARGET_SCHED_DFA_POST_ADVANCE_CYCLE): New macros to initialize
943         new hooks.
944         (TARGET_SCHED): Use them.
945         * doc/tm.texi (TARGET_SCHED_DFA_PRE_ADVANCE_CYCLE,
946         TARGET_SCHED_DFA_POST_ADVANCE_CYCLE): Document new hooks.
947         * haifa-sched.c (advance_one_cycle): Invoke new hooks.
948
949         * genautomata.c (insn_has_dfa_reservation_p): New DFA interface
950         function to facilitate debugging.
951         (INSN_HAS_DFA_RESERVATION_P_FUNC_NAME): New macro.
952         (output_insn_has_dfa_reservation_p): New static function to output
953         insn_has_dfa_reservation_p ().
954         (write_automata): Use it.
955         * genattr.c (main): Output declaration for
956         insn_has_dfa_reservation_p ().
957
958 2007-08-22  Christian Bruel  <christian.bruel@st.com>   
959             Richard Guenther <rguenther@suse.de>
960         
961         * fold-const.c (fold_binary): Optimize A-A if -ffinite-math-only.
962         * simplify_rtx (simplify_binary_operation_1): Likewise.
963                 
964 2007-08-22  Rask Ingemann Lambertsen  <rask@sygehus.dk>
965
966         PR rtl-optimization/32557
967         * df-problems.c (df_note_bb_compute): Use mws->start_regno instead
968         of REGNO (mws->mw_reg).
969
970 2007-08-22  Richard Guenther  <rguenther@suse.de>
971
972         PR middle-end/33007
973         * builtins.c (expand_builtin_int_roundingfn): Replace call
974         argument wrapped with SAVE_EXPR directly.
975         (expand_builtin_int_roundingfn_2): Likewise.
976
977 2007-08-22  Richard Guenther  <rguenther@suse.de>
978
979         * tree-inline.c (inlinable_function_p): Restore disregarding
980         inline limits for GNU extern inline functions.
981
982 2007-08-22  Richard Guenther  <rguenther@suse.de>
983
984         PR middle-end/32563
985         * tree.c (host_integerp): Treat sizetype as signed as it is
986         sign-extended.
987
988 2007-08-21  Ian Lance Taylor  <iant@google.com>
989
990         PR tree-optimization/33134
991         * tree-vrp.c (adjust_range_with_scev): Call
992         set_value_range_to_value.
993
994 2007-08-21  Aldy Hernandez  <aldyh@redhat.com>
995
996         * value-prof.h (gimple_remove_histogram_value): Remove duplicate
997         prototype.
998         
999 2007-08-21  Aldy Hernandez  <aldyh@redhat.com>
1000
1001         * tree-flow-inline.h (next_imm_use_stmt): Remove unecessary
1002         whitespace.
1003
1004 2007-08-21  Nathan Froyd  <froydnj@codesourcery.com>
1005
1006         * config/rs6000/rs6000.c (expand_block_clear): Add TARGET_SPE
1007         cases to set eight bytes at a time.
1008         (expand_block_move): Likewise.
1009         
1010 2007-08-21  Jakub Jelinek  <jakub@redhat.com>
1011
1012         PR debug/32610
1013         * dwarf2out.c (gen_decl_die): Don't call
1014         gen_tagged_type_instantiation_die if decl doesn't have tagged type.
1015
1016 2007-08-21  Paul Brook  <paul@codesourcery.com>
1017             Nathan Sidwell  <nathan@codesourcery.com>
1018             Mark Mitchell  <mark@codesourcery.com>
1019             Joseph Myers  <joseph@codesourcery.com>
1020
1021         * configure.ac: Add --with-pkgversion and --with-bugurl.
1022         * configure: Regenerate.
1023         * doc/install.texi: Document them.
1024         * version.c (version_string): Remove VERSUFFIX.
1025         (VERSUFFIX): Remove.
1026         (pkgversion_string): New.
1027         (bug_report_url): Do not hard-code initializer.
1028         * version.h (pkgversion_string): Declare.
1029         * Makefile.in (PKGVERSION_s, BUGURL_s, PKGVERSION, BUGURL_TEXI):
1030         Define.
1031         (version.o): Define PKGVERSION and BUGURL.
1032         (gcc-vers.texi): Define VERSION_PACKAGE and BUGURL.
1033         (%.pod): Define BUGURL.
1034         * gcc.c (process_command, main): Use pkgversion_string.
1035         * toplev.c (compile_file, print_version): Likewise.
1036         * protoize.c (main): Likewise.
1037         * gcov.c (print_version): Likewise.  Update copyright date.
1038         * gcov-dump.c (print_version): Likewise.  Update copyright date.
1039         * mips-tdump.c (main): Likewise.  Update copyright date.
1040         * mips-tfile.c (main): Likewise.  Update copyright date.
1041         * doc/include/gcc-common.texi: Include VERSION_PACKAGE as subtitle.
1042         * doc/bugreport.texi: Use BUGURL for bug-reporting instructions;
1043         shorten description.
1044         * doc/gcc.texi: Include VERSION_PACKAGE in version description.
1045         * doc/gccint.texi: Likewise.
1046         * doc/invoke.texi: Use BUGURL for bug-reporting instructions.
1047         Update copyright date.
1048
1049 2007-08-21  Uros Bizjak  <ubizjak@gmail.com>
1050
1051         * config/i386/i386.c (ix86_expand_clear): Use FLAGS_REG.
1052         (ix86_expand_strlensi_unroll_1): Ditto.
1053         (ix86_expand_branch): Use FLAGS_REG and FPSR_REG.
1054         (ix86_expand_carry_flag_compare): Update comment.
1055
1056 2007-08-21  Jakub Jelinek  <jakub@redhat.com>
1057
1058         PR middle-end/32912
1059         * fold-const.c (fold_unary): Optimize BIT_NOT_EXPR of VECTOR_CST.
1060         (fold_binary): Handle vectors in X | ~X and X ^ ~X optimizations.
1061
1062 2007-08-21  Richard Guenther  <rguenther@suse.de>
1063
1064         * fold-const.c (fold_binary): Revert removing of index +p PTR folding.
1065
1066 2007-08-21  Richard Guenther  <rguenther@suse.de>
1067
1068         PR middle-end/33122
1069         * fold-const.c (fold_binary): Remove index +p PTR folding.
1070         Fix types of POINTER_PLUS_EXPR generated by folding of
1071         (PTR +p B) +p A.
1072
1073 2007-08-20  Chao-ying Fu  <fu@mips.com>
1074
1075         * c-common.h (enum rid): Add new enumeration values of RID_SAT,
1076         RID_FRACT, and RID_ACCUM.  RID_SAT needs to be inserted before
1077         RID_ONEWAY, so that it can be checked in declspecs_add_type.
1078         (c_common_fixed_point_type_for_size): Declare.
1079         * c-parser.c (reswords): Add _Fract, _Accum, and _Sat.
1080         (c_token_starts_typename): Handle RID_FRACT, RID_ACCUM, and RID_SAT.
1081         (c_token_starts_declspecs): Likewise.
1082         (c_parser_declspecs): Likewise.
1083         (c_parser_attributes): Likewise.
1084         * c-tree.h (enum c_typespec_keyword): Add cts_fract and cts_accum.
1085         (c_declspecs): Add saturating_p.
1086         * c-decl.c (build_null_declspecs): Initialize saturating_p.
1087         (declspecs_add_type): Avoid using complex with _Fract, _Accum, or
1088         _Sat.  Handle RID_SAT.
1089         Avoid using void, bool, char, int, float, double, _Decimal32,
1090         _Decimal64, _Decimal128, and complex with _Sat.
1091         Handle RID_FRACT and RID_ACCUM.
1092         Make sure _Sat is used with _Fract or _Accum.
1093         (finish_declspecs): Handle cts_fract and cts_accum.
1094         * c-common.c (fixed-value.h): New include.
1095         (constant_expression_warning): Handle FIXED_CST.
1096         (overflow_warning): Likewise.
1097         (warnings_for_convert_and_check): Likewise.
1098         (c_common_fixed_point_type_for_size): New.
1099         (c_common_type_for_mode): Handle fixed-point modes to
1100         return various saturating/non-saturating, signed/unsigned types.
1101         (c_common_signed_or_unsigned_type): Support fixed-point types.
1102         (shorten_compare): Check fixed-point zero.
1103         Handle FIXED_POINT_TYPE.
1104         (c_common_truthvalue_conversion): Handle FIXED_CST.
1105         Handle FIXED_POINT_TYPE.
1106         (c_common_nodes_and_builtins): Record builtin types for fixed-point
1107         types.
1108         (handle_mode_attribute): Handle fixed-point modes.  Need to check
1109         if the signness of base type and fixed-point modes are consistent.
1110         (handle_vector_size_attribute): Handle fixed-point modes.
1111         (same_scalar_type_ignoring_signedness): Handle FIXED_POINT_TYPE.
1112         (warn_for_div_by_zero): Check fixed-point zero.
1113         * c-typeck.c (c_common_type): Check FIXED_POINT_TYPE.  Build
1114         a common fixed-point type based on fbit, ibit, sign, and saturation.
1115         (build_unary_op): Allow FIXED_POINT_TYPE for CONVERT_EXPR,
1116         NEGATE_EXPR, TRUTH_NOT_EXPR, PREINCREMENT_EXPR, POSTINCREMENT_EXPR,
1117         PREDECREMENT_EXPR, and POSTDECREMENT_EXPR.
1118         (convert_for_assignment): Support FIXED_POINT_TYPE.
1119         (digest_init): Handle FIXED_POINT_TYPE.
1120         (build_binary_op): Support FIXED_POINT_TYPE in *_DIV_EXPR,
1121         TRUTH_ANDIF_EXPR, TRUTH_ORIF_EXPR, TRUTH_AND_EXPR, TRUTH_OR_EXPR,
1122         TRUTH_XOR_EXPR, RSHIFT_EXPR, LSHIFT_EXPR, EQ_EXPR, NE_EXPR, LE_EXPR,
1123         GE_EXPR, LT_EXPR, GT_EXPR.
1124         * target-def.h (TARGET_FIXED_POINT_SUPPORTED_P): New.
1125         (TARGET_INITIALIZER): Add TARGET_FIXED_POINT_SUPPORTED_P.
1126         * target.h (gcc_target): Add fixed_point_supported_p.
1127         * targhooks.c (default_scalar_mode_supported_p): Handle MODE_FRACT,
1128         MODE_UFRACT, MODE_ACCUM, and MODE_UACCUM.
1129         (default_fixed_point_supported_p): Define.
1130         * targhooks.h (default_fixed_point_supported_p): Declare.
1131         * doc/tm.texi (TARGET_FIXED_POINT_SUPPORTED_P): Add.
1132         * doc/install.texi (Configuration): Add --enable-fixed-point.
1133         * configure.ac (--enable-fixed-point): New to enable fixed-point
1134         arithmetic extension to C.  For mips targets, we enable it by default.
1135         * configure, config.in: Regenerate.
1136
1137 2007-08-20  Pawel Sikora  <pluto@pld-linux.org>
1138
1139         * doc/invoke.texi (-Wnon-virtual-dtor): Update documentation.
1140
1141 2007-08-20  David Edelsohn  <edelsohn@gnu.org>
1142
1143         * dwarf2out.c (text_section_used): Move declaration outside ifdef
1144         DWARF2_DEBUGGING_INFO.
1145         (cold_text_section_used): Same.
1146         (cold_text_section): Same.
1147
1148 2007-08-20  Richard Guenther  <rguenther@suse.de>
1149
1150         * c-typeck.c (convert_for_assignment): Use the type of
1151         the member for the initialization.
1152
1153 2007-08-20  Richard Guenther  <rguenther@suse.de>
1154
1155         * c-objc-common.c (c_disregard_inline_limits): Remove.
1156         * c-objc-common.h (c_disregard_inline_limits): Likewise.
1157         * cgraphunit.c (cgraph_process_new_functions): Call
1158         disregard_inline_limits_p.
1159         (cgraph_preserve_function_body_p): Likewise.
1160         * ipa-inline.c (compute_inline_parameters): Likewise.
1161         * langhooks-def.h (lhd_tree_inlining_disregard_inline_limits):
1162         Remove.
1163         (LANG_HOOKS_TREE_INLINING_DISREGARD_INLINE_LIMITS): Remove.
1164         (LANG_HOOKS_TREE_INLINING_INITIALIZER): Remove initializer for
1165         disregard_inline_limits langhook.
1166         * langhooks.c (lhd_tree_inlining_disregard_inline_limits):
1167         Remove.
1168         * langhooks.h (lang_hooks_for_tree_inlining): Remove
1169         disregard_inline_limits langhook.
1170         * tree-inline.c (disregard_inline_limits_p): New function.
1171         * tree-inline.h (disregard_inline_limits_p): Declare.
1172
1173 2007-08-20  Richard Guenther  <rguenther@suse.de>
1174
1175         * langhooks-def.h (lhd_tree_inlining_auto_var_in_fn_p): Remove.
1176         (LANG_HOOKS_TREE_INLINING_AUTO_VAR_IN_FN_P): Likewise.
1177         (LANG_HOOKS_TREE_INLINING_INITIALIZER): Remove initializer for
1178         auto_var_in_fn_p langhook.
1179         * langhooks.c (lhd_tree_inlining_auto_var_in_fn_p): Rename and
1180         move ...
1181         * tree.c (auto_var_in_fn_p): ... here.
1182         (find_var_from_fn): Call auto_var_in_fn_p directly.
1183         * langhooks.h (lang_hooks_for_tree_inlining): Remove
1184         auto_var_in_fn_p langhook.
1185         * tree-inline.c (remap_decls): Call auto_var_in_fn_p directly.
1186         (copy_body_r): Likewise.
1187         (self_inlining_addr_expr): Likewise.
1188         * tree.h (auto_var_in_fn_p): Declare.
1189
1190 2007-08-20  Richard Guenther  <rguenther@suse.de>
1191
1192         * tree.c (WALK_SUBTREE): Call walk_tree_1.
1193         (walk_type_fields): Take lh parameter.
1194         (walk_tree): Rename to ...
1195         (walk_tree_1): ... this.  Do not call the walk_subtrees
1196         langhook but the now passed callback.  Pass lh on recursion.
1197         (walk_tree_without_duplicates): Rename to ...
1198         (walk_tree_without_duplicates_1): ... this.  Take lh parameter
1199         and call walk_tree_1.
1200         * tree.h (walk_tree_lh): New typedef.
1201         (walk_tree_1): Declare.
1202         (walk_tree_without_duplicates_1): Likewise.
1203         (walk_tree): New define to walk_tree_1 with NULL lh parameter.
1204         (walk_tree_without_duplicates): New define to
1205         walk_tree_without_duplicates_1 with NULL lh parameter.
1206         * langhooks.c (lhd_tree_inlining_walk_subtrees): Remove.
1207         * langhooks.h (lang_hooks_for_tree_inlining): Remove walk_subtrees
1208         langhook.
1209         * langhooks-def.h (lhd_tree_inlining_walk_subtrees): Remove.
1210         (LANG_HOOKS_TREE_INLINING_WALK_SUBTREES): Likewise.
1211         (LANG_HOOKS_TREE_INLINING_INITIALIZER): Remove walk_subtrees
1212         initializer.
1213
1214 2007-08-20  Andrew Pinski  <andrew_pinski@playstation.sony.com>
1215
1216         PR middle-end/30564
1217         * tree-inline.c (optimize_inline_calls): Move the cgraph checking
1218         code in front of the compacting of basic blocks.
1219         Move the folding of statements inbetween the cgraph checking
1220         and compacting of basic blocks.
1221
1222 2007-08-19  Andrew Pinski  <andrew_pinski@playstation.sony.com>
1223            Serge Belyshev  <belyshev@depni.sinp.msu.ru>
1224
1225         PR target/32522
1226         * config/alpha/alpha.c (va_list_skip_additions): Check for
1227         POINTER_PLUS_EXPR in addition to PLUS_EXPR.
1228         (alpha_stdarg_optimize_hook): Look for POINTER_PLUS_EXPR instead of
1229         PLUS_EXPR when checking ap.__base.
1230         (alpha_va_start): Create POINTER_PLUS_EXPR instead of PLUS_EXPR
1231         when doing addition on pointer types.  Use size_int instead of
1232         build_int_cst.
1233         (alpha_gimplify_va_arg_1): Likewise, but use sizetype instead of
1234         ptr_type in the second operand.
1235
1236 2007-08-19  Andrew Pinski  <pinskia@gmail.com>
1237
1238         PR target/33115
1239         * config/i386/darwin.h (CC1_SPEC): Add %(cc1_cpu) in front.
1240
1241 2007-08-19  Andrew Pinski  <andrew_pinski@playstation.sony.com>
1242
1243         PR middle-end/32940
1244         * cfgexpand.c  (expand_one_register_var): Mark pointer
1245         DECL_ARTIFICIAL as REG_POINTER also.
1246         * stmt.c (expand_decl): Likewise.
1247
1248 2007-08-19  Daniel Berlin  <dberlin@dberlin.org>
1249
1250         Fix PR 32772
1251         Fix PR 32716
1252         Fix PR 32328
1253         Fix PR 32303
1254
1255         * tree-flow.h (struct stmt_ann_d): Remove makes_clobbering_call.
1256         * tree-ssa-alias.c (init_transitive_clobber_worklist): Add
1257         on_worklist argument and avoid adding things to worklist multiple
1258         times.
1259         (add_to_worklist): Ditto.
1260         (mark_aliases_call_clobbered): Mark entire structure clobbered if
1261         single SFT is clobbered.
1262         (set_initial_properties): Ditto.
1263         (compute_call_clobbered): Update for changes to function
1264         arguments.
1265         (create_overlap_variables_for): Always create SFT for offset 0.
1266         (create_structure_vars): Handle PHI's, since we are in SSA form at
1267         this point.
1268         * tree-ssa-loop-ivopts.c (get_ref_tag): Don't return subvars.
1269         * tree-ssa-operands.c (access_can_touch_variable): Don't handle
1270         TARGET_MEM_REF.
1271         (add_vars_for_offset): Figure out aliases from access + points-to.
1272         (add_virtual_operand): Use add_vars-for_offset.
1273         (get_tmr_operands): Update for NMT changes, rewrite to be correct.
1274         (add_call_clobber_ops): Remove makes_clobbering_call set.
1275         (get_expr_operands): Always pass through the INDIRECT_REF
1276         reference.
1277         * tree-ssa-structalias.c (struct constraint_graph): Remove
1278         variables member.
1279         Add pe, pe_rep, pointer_label, loc_label, pointed_by, points_to,
1280         address_taken, pt_used, number_incoming.
1281         (FIRST_ADDR_NODE): Removed.
1282         (merge_graph_nodes): Remove broken code for the moment.
1283         (init_graph): New function.
1284         (build_pred_graph): Remove code to init_graph.
1285         Add location equivalence support.
1286         (struct scc_info): Rename roots to deleted.
1287         (scc_visit): Ditto.
1288         (init_scc_info): Ditto
1289         (init_topo_info): Use graph->size.
1290         (compute_topo_order): Ditto.
1291         (do_da_constraint): Removed.
1292         (do_sd_constraint): Remove calls to find().
1293         set_union_with_increment should always get 0 as last arg here.
1294         (do_complex_constraint): Replace do_da_constraint with assert.
1295         Stop calling find.
1296         (struct equiv_class_label): New.
1297         (pointer_equiv_class_table): Ditto.
1298         (location_equiv_class_table): Ditto.
1299         (equiv_class_label_hash): Ditto.
1300         (equiv_class_label_eq): Ditto
1301         (equiv_class_lookup): Ditto.
1302         (equiv_class_ladd): Ditto.
1303         (pointer_equiv_class): Ditto.
1304         (location_equiv_class): Ditto.
1305         (condense_visit): Rename and rewrite from label_visit to do only
1306         SCC related stuff for HU.
1307         (label_visit): Do HU work for HU.
1308         (perform_var_substitution): Update to do HU and location
1309         equivalence.
1310         (free_var_substitution_info): Update to free HU and location
1311         equivalence structures.  */
1312         (find_equivalent_node): Update for pointer but not location
1313         equivalence.
1314         (unite_pointer_equivalences): New function.
1315         (move_complex_constraints): Rewrite to only do moving.
1316         (rewrite_constraints): Split out of move_complex_constraints.
1317         (solve_graph): Use graph->size.
1318         (process_constraint_1): Add from_call argument, use it.
1319         Split *a = &b into two constraints.
1320         (process_constraint): Use new process_constraint_1.
1321         (get_constraint_for_component_ref): Handle bitmaxsize == -1 case.
1322         (get_constraint_for): Handle non-pointer integers properly.
1323         Remove code that used to handle structures.
1324         (handle_ptr_arith): Fix a few bugs in pointer arithmetic handling
1325         with unknown addends.
1326         (handle_rhs_call): New function.
1327         (find_func_aliases): Use handle_rhs_call.
1328         (set_uids_in_ptset): Add an assert.
1329         (set_used_smts): Fix bug in not considering unified vars.
1330         (compute_tbaa_pruning): Stop initing useless iteration_obstack.
1331         (compute_points_to_sets): Update for other function changes.
1332         (delete_points_to_sets): Ditto.
1333         (ipa_pta_execute): Ditto.
1334         (pass_ipa_pta): We need to update SSA after ipa_pta.
1335         
1336 2007-08-19  Jan Hubicka  <jh@suse.cz>
1337
1338         * i386.md: Replace "rim" and "mri" constraints by "g".
1339
1340 2007-08-19  Joseph Myers  <joseph@codesourcery.com>
1341
1342         * dwarf2out.c (text_section_used, cold_text_section_used,
1343         cold_text_section, dwarf2out_note_section_used): New.
1344         (dwarf2out_init): Initialize cold_text_section.
1345         (dwarf2out_switch_text_section, dwarf2out_begin_function): Call
1346         dwarf2out_note_section_used.
1347         (size_of_aranges): Only count entry for text section if it was
1348         used.  Count entry for cold text section if it was used.
1349         (output_aranges): Only output entries for text section and cold
1350         text section if they were used.
1351
1352 2007-08-19  Andrew Pinski  <pinskia@gmail.com>
1353
1354         * tree-pretty-print.c (debug_generic_expr): Add a comment about
1355         the function.
1356         (debug_generic_stmt): Likewise.
1357         (debug_tree_chain): Likewise.
1358
1359 2007-08-19  Dorit Nuzman  <dorit@il.ibm.com>
1360
1361         * tree-data-refs.c (split_constant_offset): Expose.
1362         * tree-data-refs.h (split_constant_offset): Add declaration.
1363
1364         * tree-vectorizer.h (dr_alignment_support): Renamed
1365         dr_unaligned_software_pipeline to dr_explicit_realign_optimized.
1366         Added a new value dr_explicit_realign.
1367         (_stmt_vec_info): Added new fields: dr_base_address, dr_init,
1368         dr_offset, dr_step, and dr_aligned_to, along with new access
1369         functions for these fields: STMT_VINFO_DR_BASE_ADDRESS,
1370         STMT_VINFO_DR_INIT, STMT_VINFO_DR_OFFSET, STMT_VINFO_DR_STEP, and
1371         STMT_VINFO_DR_ALIGNED_TO.
1372
1373         * tree-vectorizer.c (vect_supportable_dr_alignment): Add
1374         documentation.
1375         In case of outer-loop vectorization with non-fixed misalignment - use
1376         the dr_explicit_realign scheme instead of the optimized realignment
1377         scheme.
1378         (new_stmt_vec_info): Initialize new fields.
1379
1380         * tree-vect-analyze.c (vect_compute_data_ref_alignment): Handle the
1381         'nested_in_vect_loop' case. Change verbosity level.
1382         (vect_analyze_data_ref_access): Handle the 'nested_in_vect_loop' case.
1383         Don't fail on zero step in the outer-loop for loads.
1384         (vect_analyze_data_refs): Call split_constant_offset to calculate
1385         base, offset and init relative to the outer-loop.
1386
1387         * tree-vect-transform.c (vect_create_data_ref_ptr): Replace the unused
1388         BSI function argument with a new function argument - at_loop.
1389         Simplify the condition that determines STEP. Takes additional argument
1390         INV_P. Support outer-loop vectorization (handle the
1391         nested_in_vect_loop case), including zero step in the outer-loop. Call
1392         vect_create_addr_base_for_vector_ref with additional argument.
1393         (vect_create_addr_base_for_vector_ref): Takes additional argument LOOP.
1394         Updated function documentation. Handle the 'nested_in_vect_loop' case.
1395         Fixed and simplified calculation of step.
1396         (vectorizable_store): Call vect_create_data_ref_ptr with loop instead
1397         of bsi, and with additional argument. Call bump_vector_ptr with
1398         additional argument. Fix typos. Handle the 'nested_in_vect_loop' case.
1399         (vect_setup_realignment): Takes additional arguments INIT_ADDR and
1400         DR_ALIGNMENT_SUPPORT. Returns another value AT_LOOP. Handle the case
1401         when the realignment setup needs to take place inside the loop.
1402         Support the dr_explicit_realign scheme. Allow generating the optimized
1403         realignment scheme for outer-loop vectorization. Added documentation.
1404         (vectorizable_load): Support the dr_explicit_realign scheme. Handle
1405         the 'nested_in_vect_loop' case, including loads that are invariant in
1406         the outer-loop and the realignment schemes. Handle the case when the
1407         realignment setup needs to take place inside the loop. Call
1408         vect_setup_realignment with additional arguments.  Call
1409         vect_create_data_ref_ptr with additional argument and with loop instead
1410         of bsi. Fix 80-column overflow. Fix typos. Rename PHI_STMT to PHI.
1411         (vect_gen_niters_for_prolog_loop): Call
1412         vect_create_addr_base_for_vector_ref with additional arguments.
1413         (vect_create_cond_for_align_checks): Likewise.
1414         (bump_vector_ptr): Updated to support the new dr_explicit_realign
1415         scheme: takes additional argument bump; argument ptr_incr is now
1416         optional; updated documentation.
1417         (vect_init_vector): Takes additional argument (bsi). Use it, if
1418         available, to insert the vector initialization.
1419         (get_initial_def_for_induction): Pass additional argument in call to
1420         vect_init_vector.
1421         (vect_get_vec_def_for_operand): Likewise.
1422         (vect_setup_realignment): Likewise.
1423         (vectorizable_load): Likewise.
1424
1425 2007-08-19  Dorit Nuzman  <dorit@il.ibm.com>
1426
1427         * tree-vectorizer.h (vect_is_simple_reduction): Takes a loop_vec_info
1428         as argument instead of struct loop.
1429         (nested_in_vect_loop_p): New function.
1430         (vect_relevant): Add enum values vect_used_in_outer_by_reduction and
1431         vect_used_in_outer.
1432         (is_loop_header_bb_p): New. Used to differentiate loop-header phis
1433         from other phis in the loop.
1434         (destroy_loop_vec_info): Add additional argument to declaration.
1435
1436         * tree-vectorizer.c (supportable_widening_operation): Also check if
1437         nested_in_vect_loop_p (don't allow changing the order in this case).
1438         (vect_is_simple_reduction): Takes a loop_vec_info as argument instead
1439         of struct loop. Call nested_in_vect_loop_p and don't require
1440         flag_unsafe_math_optimizations if it returns true.
1441         (new_stmt_vec_info): When setting def_type for phis differentiate 
1442         loop-header phis from other phis.
1443         (bb_in_loop_p): New function.
1444         (new_loop_vec_info): Inner-loop phis already have a stmt_vinfo, so
1445         just update their loop_vinfo.  Order of BB traversal now matters -
1446         call dfs_enumerate_from with bb_in_loop_p.
1447         (destroy_loop_vec_info): Takes additional argument to control whether
1448         stmt_vinfo of the loop stmts should be destroyed as well.
1449         (vect_is_simple_reduction): Allow the "non-reduction" use of a
1450         reduction stmt to be defines by a non loop-header phi.
1451         (vectorize_loops): Call destroy_loop_vec_info with additional argument.
1452
1453         * tree-vect-transform.c (vectorizable_reduction): Call
1454         nested_in_vect_loop_p. Check for multitypes in the inner-loop.
1455         (vectorizable_call): Likewise.
1456         (vectorizable_conversion): Likewise.
1457         (vectorizable_operation): Likewise.
1458         (vectorizable_type_promotion): Likewise.
1459         (vectorizable_type_demotion): Likewise.
1460         (vectorizable_store): Likewise.
1461         (vectorizable_live_operation): Likewise.
1462         (vectorizable_reduction): Likewise. Also pass loop_info to
1463         vect_is_simple_reduction instead of loop.
1464         (vect_init_vector): Call nested_in_vect_loop_p.
1465         (get_initial_def_for_reduction): Likewise.
1466         (vect_create_epilog_for_reduction): Likewise.
1467         (vect_init_vector): Check which loop to work with, in case there's an
1468         inner-loop.
1469         (get_initial_def_for_inducion): Extend to handle outer-loop
1470         vectorization. Fix indentation.
1471         (vect_get_vec_def_for_operand): Support phis in the case vect_loop_def.
1472         In the case vect_induction_def get the vector def from the induction
1473         phi node, instead of calling get_initial_def_for_inducion.
1474         (get_initial_def_for_reduction): Extend to handle outer-loop 
1475         vectorization.
1476         (vect_create_epilog_for_reduction): Extend to handle outer-loop
1477         vectorization.
1478         (vect_transform_loop): Change assert to just skip this case.  Add a
1479         dump printout.
1480         (vect_finish_stmt_generation): Add a couple asserts.
1481
1482         (vect_estimate_min_profitable_iters): Multiply
1483         cost of inner-loop stmts (in outer-loop vectorization) by estimated
1484         inner-loop bound.
1485         (vect_model_reduction_cost): Don't add reduction epilogue cost in case
1486         this is an inner-loop reduction in outer-loop vectorization.
1487
1488         * tree-vect-analyze.c (vect_analyze_scalar_cycles_1): New function.
1489         Same code as what used to be vect_analyze_scalar_cycles, only with
1490         additional argument loop, and loop_info passed to
1491         vect_is_simple_reduction instead of loop.
1492         (vect_analyze_scalar_cycles): Code factored out into
1493         vect_analyze_scalar_cycles_1. Call it for each relevant loop-nest.
1494         Updated documentation.
1495         (analyze_operations): Check for inner-loop loop-closed exit-phis during
1496         outer-loop vectorization that are live or not used in the outerloop,
1497         cause this requires special handling.
1498         (vect_enhance_data_refs_alignment): Don't consider versioning for
1499         nested-loops.
1500         (vect_analyze_data_refs): Check that there are no datarefs in the
1501         inner-loop.
1502         (vect_mark_stmts_to_be_vectorized): Also consider vect_used_in_outer
1503         and vect_used_in_outer_by_reduction cases.
1504         (process_use): Also consider the case of outer-loop stmt defining an
1505         inner-loop stmt and vice versa.
1506         (vect_analyze_loop_1): New function.
1507         (vect_analyze_loop_form): Extend, to allow a restricted form of nested
1508         loops.  Call vect_analyze_loop_1.
1509         (vect_analyze_loop): Skip (inner-)loops within outer-loops that have
1510         been vectorized.  Call destroy_loop_vec_info with additional argument.
1511
1512         * tree-vect-patterns.c (vect_recog_widen_sum_pattern): Don't allow
1513         in the inner-loop when doing outer-loop vectorization. Add
1514         documentation and printout.
1515         (vect_recog_dot_prod_pattern): Likewise. Also add check for
1516         GIMPLE_MODIFY_STMT (in case we encounter a phi in the loop).
1517
1518 2007-08-18  Andrew Pinski  <pinskia@gmail.com>
1519
1520         * tree-affine.h (print_aff): New prototype.
1521         (debug_aff): Likewise.
1522         * tree-affine.c (print_aff): New function.
1523         (debug_aff): Likewise.
1524
1525 2007-08-18  Paul Brook  <paul@codesourcery.com>
1526             Joseph Myers  <joseph@codesourcery.com>
1527
1528         * common.opt (-fdebug-prefix-map=): New option.
1529         * opts.c: Include debug.h.
1530         (common_handle_option): Handle -fdebug-prefix-map.
1531         * final.c: Include ggc.h.
1532         (struct debug_prefix_map, debug_prefix_maps, add_debug_prefix_map,
1533         remap_debug_filename): New.
1534         * Makefile.in (final.o, opts.o): Update dependencies.
1535         * debug.h (remap_debug_filename, add_debug_prefix_map): Declare.
1536         * configure.ac: Check for assembler --debug-prefix-map support.
1537         * configure, config.in: Regenerate.
1538         * gcc.c (ASM_MAP): Define conditional on HAVE_AS_DEBUG_PREFIX_MAP.
1539         (ASM_DEBUG_SPEC): Include ASM_MAP.
1540         * doc/install.texi (--with-debug-prefix-map): Document.
1541         * doc/invoke.texi (-fdebug-prefix-map): Document.
1542         * dbxout.c (dbxout_init, dbxout_start_source_file,
1543         dbxout_source_file): Call remap_debug_filename.
1544         * dwarf2out.c (add_comp_dir_attribute, maybe_emit_file,
1545         dwarf2out_start_source_file, dwarf2out_finish): Call
1546         remap_debug_filename.
1547         (file_table_relative_p): Do not check d->emitted_number.
1548         * toplev.c (output_file_directive): Call remap_debug_filename.
1549         * vmsdbgout.c (write_srccorr): Call remap_debug_filename.
1550         * xcoffout.c (xcoffout_source_file): Call remap_debug_filename.
1551
1552 2007-08-17  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
1553
1554         * loop-invariant.c (find_invariants_to_move): Add missing macro
1555         argument.
1556
1557 2007-08-17  Tom Tromey  <tromey@redhat.com>
1558
1559         * tree.h (struct tree_label_decl): Removed old "java" fields.
1560
1561 2007-08-17  Richard Sandiford  <richard@codesourcery.com>
1562             Nigel Stephens  <nigel@mips.com>
1563
1564         * config/mips/sde.h (DRIVER_SELF_SPECS): Add commas.
1565         Treat -mno-data-in-code and -mcode-xonly as aliases for
1566         -mcode-readable=no and -mcode-readable=pcrel respectively.
1567         * config/mips/t-sde (TARGET_LIBGCC2_CFLAGS): Add -mcode-xonly.
1568         (MULTILIB_OPTIONS): Add -mcode-readable=no multilibs.
1569         (MULTILIB_DIRNAMES): Update accordingly.
1570
1571 2007-08-17  H.J. Lu  <hongjiu.lu@intel.com>
1572
1573         * Makefile.in (version.o): Depend on $(REVISION) only if
1574         REVISION_s is defined.
1575
1576 2007-08-17  Sa Liu  <saliu@de.ibm.com>
1577             Ulrich Weigand  <uweigand@de.ibm.com>
1578
1579         PR middle-end/32970
1580         * tree.c (reconstruct_complex_type): For a pointer to a vector,
1581         use build_qualified_type to retain qualifiers of the base type.
1582
1583 2007-08-17  Chen Liqin  <liqin@sunnorth.com.cn>
1584
1585         * config/score/score.md : Update pattern tablejump.
1586         * config/score/score.c : Update score_initialize_trampoline 
1587         function.
1588         * config/score/score.h (TRAMPOLINE_TEMPLATE): Added macro.
1589         (TRAMPOLINE_INSNS, TRAMPOLINE_SIZE) Update macro.
1590         * doc/contrib.texi: Add my entry.
1591
1592 2007-08-16  H.J. Lu  <hongjiu.lu@intel.com>
1593
1594         * Makefile.in (REVISION): New.
1595         (REVISION_c): New.
1596         (REVISION_s): New.
1597         (version.o): Also depend on $(REVISION). Add
1598         -DREVISION=$(REVISION_s).
1599
1600         * version.c (version_string): Add REVISION.
1601
1602 2007-08-16  Seongbae Park <seongbae.park@gmail.com>
1603
1604         * tree-eh.c (lower_try_finally_onedest): Reset the locus
1605         of GOTO that's relocated to a different block.
1606
1607 2007-08-16  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
1608
1609         * c-common.c (const_strip_array_types): New.
1610         * c-common.h (lang_missing_noreturn_ok_p): Delete.
1611         (const_strip_array_types): New.
1612         * c-objc-common.c (c_disregard_inline_limits,
1613         c_warn_unused_global_decl): Constify.
1614         * c-tree.h (c_disregard_inline_limits, c_warn_unused_global_decl,
1615         c_vla_type_p, c_incomplete_type_error): Likewise.
1616         * c-typeck.c (c_incomplete_type_error, c_vla_type_p): Likewise.
1617         * hooks.c (hook_bool_const_tree_false): New.
1618         * hooks.h (hook_bool_const_tree_false): Likewise.
1619         * langhooks-def.h (lhd_warn_unused_global_decl,
1620         lhd_incomplete_type_error, lhd_expr_size,
1621         lhd_tree_inlining_disregard_inline_limits,
1622         lhd_tree_inlining_auto_var_in_fn_p, lhd_tree_dump_type_quals,
1623         LANG_HOOKS_GENERIC_TYPE_P, LANG_HOOKS_TYPE_MAX_SIZE): Constify.
1624         * langhooks.c (lhd_warn_unused_global_decl,
1625         lhd_incomplete_type_error,
1626         lhd_tree_inlining_disregard_inline_limits,
1627         lhd_tree_inlining_auto_var_in_fn_p, lhd_tree_dump_type_quals,
1628         lhd_expr_size): Likewise.
1629         * langhooks.h (lang_hooks_for_tree_inlining,
1630         lang_hooks_for_tree_dump, lang_hooks_for_types,
1631         lang_hooks_for_decls, lang_hooks): Likewise.
1632         * pointer-set.c (pointer_set_t, pointer_set_create,
1633         pointer_set_contains, insert_aux, pointer_set_insert,
1634         pointer_set_traverse, pointer_map_t, pointer_map_create,
1635         pointer_map_contains, pointer_map_insert, pointer_map_traverse):
1636         Likewise.
1637         * pointer-set.h (pointer_set_contains, pointer_set_insert,
1638         pointer_set_traverse, pointer_map_contains, pointer_map_insert,
1639         pointer_map_traverse): Likewise.
1640         * predict.c (assert_is_empty): Likewise.
1641         * tree-affine.c (free_name_expansion): Likewise.
1642         * tree-cfg.c (edge_to_cases_cleanup): Likewise.
1643         * tree.c (size_in_bytes, max_int_size_in_bytes): Likewise.
1644         * tree.h (size_in_bytes, max_int_size_in_bytes): Likewise.
1645
1646 2007-08-16  Victor Kaplansky <victork@il.ibm.com>
1647
1648         * tree-vectorizer.c (new_loop_vec_info): Initialize new 
1649         field.
1650         (destroy_loop_vec_info): Add call to VEC_free.
1651         * tree-vectorizer.h (may_alias_ddrs): Define.
1652         (LOOP_VINFO_MAY_ALIAS_DDRS): Define.
1653         * tree-vect-analyze.c (vect_analyze_data_ref_dependence):
1654         Change reporting to dump.
1655         (vect_is_duplicate_ddr): New.
1656         (vect_mark_for_runtime_alias_test): New.
1657         (vect_analyze_data_ref_dependences) Add call to
1658         vect_mark_for_runtime_alias_test.
1659         (vect_enhance_data_refs_alignment): Define local variable
1660         vect_versioning_for_alias_required, don't perform
1661         peeling for alignment if versioning for alias is
1662         required.
1663         (vect_enhance_data_refs_alignment): Use
1664         PARAM_VECT_MAX_VERSION_FOR_ALIGNMENT_CHECKS instead of
1665         PARAM_VECT_MAX_VERSION_CHECKS.
1666         * tree-vect-transform.c
1667         (vect_create_cond_for_alias_checks): New.
1668         (vect_transform_loop): Add call to
1669         vect_create_cond_for_alias_checks.
1670         (vect_vfa_segment_size): New.
1671         * params.def (PARAM_VECT_MAX_VERSION_FOR_ALIGNMENT_CHECKS):
1672         Rename.
1673         (PARAM_VECT_MAX_VERSION_FOR_ALIAS_CHECKS): Define.
1674         * gcc/doc/invoke.texi
1675         (vect-max-version-for-alignment-checks): Document.
1676         (vect-max-version-for-alias-checks): Document.
1677         (vect-max-version-checks): Remove.
1678      
1679 2007-08-16  Uros Bizjak  <ubizjak@gmail.com>
1680
1681         * config/i386/i386.md (*rep_movdi_rex64): Emit "rep" prefix on
1682         the same line as the instruction for all asm dialects.
1683         (*rep_movsi): Ditto.
1684         (*rep_movsi_rex64): Ditto.
1685         (*rep_movqi): Ditto.
1686         (*rep_movqi_rex64): Ditto.
1687         (*rep_stosdi_rex64): Ditto.
1688         (*rep_stossi): Ditto.
1689         (*rep_stossi_rex64): Ditto.
1690         (*rep_stosqi): Ditto.
1691         (*rep_stosqi_rex64): Ditto.
1692         (*cmpstrnqi_nz_1): Ditto.
1693         (*cmpstrnqi_nz_rex_1): Ditto.
1694         (*cmpstrnqi_1): Ditto.
1695         (*cmpstrnqi_rex_1): Ditto.
1696         (*strlenqi_1): Ditto.
1697         (*strlenqi_rex_1): Ditto.
1698         * config/i386/sync.md (*sync_compare_and_swap<mode>): Emit "lock"
1699         prefix on the same line as the instruction for all asm dialects.
1700         (sync_double_compare_and_swap<mode>): Ditto.
1701         (*sync_double_compare_and_swapdi_pic): Ditto.
1702         (*sync_compare_and_swap_cc<mode>): Ditto.
1703         (sync_double_compare_and_swap_cc<mode>): Ditto.
1704         (*sync_double_compare_and_swap_ccdi_pic): Ditto.
1705         (sync_old_add<mode>): Ditto.
1706         (sync_add<mode>): Ditto.
1707         (sync_sub<mode>): Ditto.
1708         (sync_ior<mode>): Ditto.
1709         (sync_and<mode>): Ditto.
1710         (sync_xor<mode>): Ditto.
1711
1712 2007-08-16  Richard Sandiford  <richard@codesourcery.com>
1713
1714         PR middle-end/32897
1715         * reload.c (find_reloads): Check that the memory returned by
1716         find_reloads_toplev was not the result of forcing a constant
1717         to memory.
1718         (find_reloads_toplev): Always use simplify_gen_subreg to get
1719         the subreg of a constant.  If the result is also a constant,
1720         but not a legitimate one, force it into the constant pool
1721         and reload its address.
1722
1723 2007-08-15  David Edelsohn  <edelsohn@gnu.org>
1724
1725         * config/rs6000/rs6000.c (rs6000_rtx_costs): Add CLZ, CTZ, and
1726         POPCOUNT.
1727
1728 2007-08-15  Daniel Jacobowitz  <dan@codesourcery.com>
1729
1730         * config/rs6000/rs6000.c (rs6000_file_start): Output a .gnu_attribute
1731         directive for the current vector ABI.
1732
1733 2007-08-15  Steve Ellcey  <sje@cup.hp.com>
1734
1735         PR target/32963
1736         * caller-save.c (reg_save_code): Set invalide status on restore code.
1737         
1738 2007-08-15  Diego Novillo  <dnovillo@google.com>
1739
1740         * tree-ssa-alias.c (compute_memory_partitions): Use
1741         alias_bitmap_obstack to allocate bitmaps.
1742         (reset_alias_info): Factor out of init_alias_info.
1743         Mark all name tags not associated to an SSA name for renaming.
1744         (init_alias_info): Call it.
1745         (create_name_tags): Tidy.  Add comments.
1746         (dump_points_to_info_for): Do not call get_mem_sym_stats_for.
1747
1748 2007-08-15  Maxim Kuvyrkov  <maxim@codesourcery.com>
1749
1750         * config/mips/mips.c (vr4130_swap_insns_p): Use new interface to
1751         scheduler dependencies.
1752
1753 2007-08-15  Rask Ingemann Lambertsen  <rask@sygehus.dk>
1754
1755         * config/i386/i386.md (subsi3_carry_zext): Remove "m" constraint for
1756         "register_operand".
1757         (*iorsi_1_zext): Likewise.
1758         (*iorsi_1_zext_imm): Likewise.
1759         * config/i386/sse.md: (*sse4_1_extractps): Use "nonimmediate_operand"
1760         with "rm"/"xm" constraint.
1761         (sse2_vmsqrtv2df2): Likewise.
1762
1763 2007-08-15  Jakub Jelinek  <jakub@redhat.com>
1764
1765         PR middle-end/33074
1766         * emit-rtl.c (try_split): Use INSN_LIST instead of EXPR_LIST for
1767         REG_LIBCALL note.
1768
1769 2007-08-14  Daniel Berlin  <dberlin@dberlin.org>
1770
1771         * tree-pass.h (PROP_pta): Removed.
1772         (TODO_rebuild_alias): New.
1773         (pass_may_alias): Removed.
1774         * tree-ssa-ccp.c (execute_fold_all_builtins): Only rebuild
1775         aliasing if we changed something.
1776         * tree-ssa-alias.c (compute_may_aliases): Make non-static.  Update
1777         SSA internally.
1778         (pass_may_alias): Removed.
1779         (create_structure_vars): Return TODO_rebuild_alias.
1780         * tree-ssa-pre.c (do_pre): Return TODO_rebuild_alias.
1781         * tree-sra.c (tree_sra): Only rebuild aliasing if something
1782         changed.
1783         (tree_sra_early): We never affect aliasing right now.
1784         * tree-flow.h (compute_may_aliases): New prototype.
1785         * passes.c: Remove pass_may_alias from the passes.
1786         (execute_function_todo): Support TODO_rebuild_alias.    
1787
1788 2007-08-14  Kai Tietz  <kai.tietz@onevision.com>
1789
1790         * i386.c: (legitimize_address): Move dllimported variable check
1791         infront of legitimizing pic address of CONST symbols.
1792
1793 2007-08-14  Steve Ellcey  <sje@cup.hp.com>
1794
1795         PR tree-optimization/32941
1796         * tree-eh.c (struct leh_tf_state): Add goto_queue_map field.
1797         (goto_queue_cmp): Remove.
1798         (find_goto_replacement): Change search method.
1799         (maybe_record_in_goto_queue): Add assert.
1800         (lower_try_finally): Remove qsort call, add pointer_map_destroy call.
1801         * Makefile.in (tree-eh.o): Add pointer-set.h dependency.
1802
1803 2007-08-14  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
1804
1805         * alias.c (component_uses_parent_alias_set): Constify.
1806         * alias.h (component_uses_parent_alias_set): Likewise.
1807         * cfgrtl.c (print_rtl_with_bb): Likewise.
1808         * double-int.c (tree_to_double_int, double_int_fits_to_tree_p,
1809         mpz_get_double_int): Likewise.
1810         * double-int.h (double_int_fits_to_tree_p, tree_to_double_int,
1811         mpz_get_double_int): Likewise.
1812         * expr.c (is_aligning_offset, undefined_operand_subword_p,
1813         mostly_zeros_p, all_zeros_p, safe_from_p, is_aligning_offset):
1814         Likewise.
1815         * expr.h (safe_from_p): Likewise.
1816         * gimple-low.c (try_catch_may_fallthru, block_may_fallthru):
1817         Likewise.
1818         * gimplify.c (should_carry_locus_p, zero_sized_field_decl,
1819         zero_sized_type, goa_lhs_expr_p): Likewise.
1820         * omp-low.c (is_variable_sized, use_pointer_for_field): Likewise.
1821         * rtl.h (print_rtl_with_bb): Likewise.
1822         * sched-vis.c (print_exp, print_value, print_pattern): Likewise.
1823         * tree-cfg.c (const_first_stmt, const_last_stmt): New.
1824         * tree-flow-inline.h (bb_stmt_list): Constify.
1825         (cbsi_start, cbsi_last, cbsi_end_p, cbsi_next, cbsi_prev,
1826         cbsi_stmt): New.
1827         * tree-flow.h (const_block_stmt_iterator, cbsi_start, cbsi_last,
1828         const_first_stmt, const_last_stmt): New.
1829         (block_may_fallthru, empty_block_p): Constify.
1830         * tree-iterator.c (EXPR_FIRST_BODY, EXPR_LAST_BODY,
1831         EXPR_ONLY_BODY): New.
1832         (expr_first, expr_last, expr_only): Use macro for body.
1833         (const_expr_first, const_expr_last, const_expr_only): New.
1834         * tree-iterator.h (const_tree_stmt_iterator, ctsi_start,
1835         ctsi_last, ctsi_end_p, ctsi_one_before_end_p, ctsi_next,
1836         ctsi_prev, ctsi_stmt): New.
1837         * tree-scalar-evolution.c (get_loop_exit_condition): Constify.
1838         * tree-scalar-evolution.h (get_loop_exit_condition): Likewise.
1839         * tree-ssa-loop-niter.c (loop_only_exit_p,
1840         derive_constant_upper_bound): Likewise.
1841         * tree-ssa-phiopt.c (empty_block_p): Likewise.
1842         * tree-ssa-threadupdate.c (redirection_block_p): Likewise.
1843         * tree-vectorizer.c (slpeel_can_duplicate_loop_p): Likewise.
1844         * tree-vectorizer.h (slpeel_can_duplicate_loop_p): Likewise.
1845         * tree-vrp.c (vrp_bitmap_equal_p): Likewise.
1846         * tree.c (get_type_static_bounds): Likewise.
1847         * tree.h (const_expr_first, const_expr_last, const_expr_only): New.
1848         (get_type_static_bounds): Constify.
1849
1850 2007-08-14  Rask Ingemann Lambertsen  <rask@sygehus.dk>
1851
1852         PR target/30315
1853         * config/i386/i386.h (CANONICALIZE_COMPARISON): New.
1854         * config/i386/i386.md (plusminus)(addsub)(SWI): New.
1855         (*<addsub><mode>3_cc_overflow): New.
1856         (*add<mode>3_cconly_overflow): New.
1857         (*sub<mode>3_cconly_overflow): New.
1858         (*<addsub>si3_zext_cc_overflow): New.
1859         * config/i386/predicates.md (fcmov_comparison_operator): Accept
1860         CCCmode for LTU, GTU, LEU and GEU.
1861         (ix86_comparison_operator): Likewise.
1862         (ix86_carry_flag_operator): Carry flag is set if LTU or GTU in CCCmode.
1863         * config/i386/i386.c (put_condition_code): Support CCCmode.
1864         (ix86_cc_mode): Use CCCmode when testing for overflow of PLUS
1865         or MINUS expressions.
1866
1867 2007-08-14  Andrew Pinski  <pinskia@gmail.com>
1868
1869         PR c/30428
1870         * c-typeck.c (build_binary_op): Disallow vector float types with
1871         BIT_IOR_EXPR, BIT_AND_EXPR, and BIT_XOR_EXPR.
1872
1873 2007-08-14  Maxim Kuvyrkov  <maxim@codesourcery.com>
1874
1875         * sched-int.h (struct _dep): Rename field 'kind' to 'type'.
1876         (DEP_KIND): Rename to DEP_TYPE.  Update all uses.
1877         (dep_def): New typedef.
1878         (init_dep_1, sd_debug_dep): Declare functions.
1879         (DEP_LINK_KIND): Rename to DEP_LINK_TYPE.
1880         (debug_dep_links): Remove.
1881         (struct _deps_list): New field 'n_links'.
1882         (DEPS_LIST_N_LINKS): New macro.
1883         (FOR_EACH_DEP_LINK): Remove.
1884         (create_deps_list, free_deps_list, delete_deps_list): Remove
1885         declaration.
1886         (deps_list_empty_p, debug_deps_list, add_back_dep_to_deps_list): Ditto.
1887         (find_link_by_pro_in_deps_list, find_link_by_con_in_deps_list): Ditto.
1888         (copy_deps_list_change_con, move_dep_link): Ditto.
1889         (struct haifa_insn_data): Split field 'back_deps' into 'hard_back_deps'
1890         and 'spec_back_deps'.  New field 'resolved_forw_deps'.  Remove field
1891         'dep_count'.
1892         (INSN_BACK_DEPS): Remove.
1893         (INSN_HARD_BACK_DEPS, INSN_SPEC_BACK_DEPS, INSN_RESOLVED_FORW_DEPS):
1894         New macros.
1895         (INSN_DEP_COUNT): Remove.
1896         (enum DEPS_ADJUST_RESULT): Add new constant DEP_NODEP.  Fix comments.
1897         (spec_info, haifa_recovery_block_was_added_during_scheduling_p):
1898         Declare global variables.
1899         (deps_pools_are_empty_p, sched_free_deps): Declare functions.
1900         (add_forw_dep, compute_forward_dependences): Remove declarations.
1901         (add_or_update_back_dep, add_or_update_back_forw_dep): Ditto.
1902         (add_back_forw_dep, delete_back_forw_dep): Ditto.
1903         (debug_ds, sched_insn_is_legitimate_for_speculation_p): Declare
1904         functions.
1905         (SD_LIST_NONE, SD_LIST_HARD_BACK, SD_LIST_SPEC_BACK, SD_LIST_FORW):
1906         New constants.
1907         (SD_LIST_RES_BACK, SD_LIST_RES_FORW, SD_LIST_BACK): Ditto.
1908         (sd_list_types_def): New typedef.
1909         (sd_next_list): Declare function.
1910         (struct _sd_iterator): New type.
1911         (sd_iterator_def): New typedef.
1912         (sd_iterator_start, sd_iterator_cond, sd_iterator_next): New inline
1913         functions.
1914         (FOR_EACH_DEP): New cycle wrapper.
1915         (sd_lists_size, sd_lists_empty_p, sd_init_insn, sd_finish_insn):
1916         Declare functions.
1917         (sd_find_dep_between, sd_add_dep, sd_add_or_update_dep): Ditto.
1918         (sd_resolve_dep, sd_copy_back_deps, sd_delete_dep, sd_debug_lists):
1919         Ditto.
1920
1921         * sched-deps.c (init_dep_1): Make global.
1922         (DUMP_DEP_PRO, DUMP_DEP_CON, DUMP_DEP_STATUS, DUMP_DEP_ALL): New
1923         constants.
1924         (dump_dep): New static function.
1925         (dump_dep_flags): New static variable.
1926         (sd_debug_dep): New function.
1927         (add_to_deps_list, remove_from_deps_list): Update 'n_links' field of
1928         the list.
1929         (move_dep_link): Use remove_from_deps_list (), instead of
1930         detach_dep_link ().
1931         (dep_links_consistent_p, dump_dep_links, debug_dep_links): Remove.
1932         (dep_link_is_detached_p): New static function.
1933         (deps_obstack, dl_obstack, dn_obstack): Remove.  Use dn_pool, dl_pool
1934         instead.
1935         (dn_pool, dl_pool): New alloc_pools.
1936         (dn_pool_diff, dl_pool_diff): New static variables.
1937         (create_dep_node, delete_dep_node): New static function.
1938         (create_deps_list): Make it static.  Use alloc_pool 'dl_pool'.
1939         (deps_list_empty_p): Make it static.  Use 'n_links' field.
1940         (deps_pools_are_empty_p): New static function.
1941         (alloc_deps_list, delete_deps_list): Remove.
1942         (dump_deps_list, debug_deps_list, add_back_dep_to_deps_list): Remove.
1943         (find_link_by_pro_in_deps_list, find_link_by_con_in_deps_list): Ditto.
1944         (copy_deps_list_change_con): Remove.  Use sd_copy_back_deps () instead.
1945         (forward_dependency_cache): Remove.
1946         (maybe_add_or_update_back_dep_1, add_or_update_back_dep_1): Remove
1947         'back' from the names.  Change signature to use dep_t instead of
1948         equivalent quad.
1949         (add_back_dep): Ditto.  Make global.
1950         (check_dep_status): Rename to check_dep ().
1951         (sd_next_list, sd_lists_size, sd_lists_empty_p, sd_init_insn):
1952         New functions.
1953         (sd_finish_insn): Ditto.
1954         (sd_find_dep_between_no_cache): New static function.
1955         (sd_find_dep_between): New function.
1956         (ask_dependency_caches, set_dependency_caches): New static functions.
1957         (update_dependency_caches, change_spec_dep_to_hard, update_dep): Ditto.
1958         (add_or_update_dep_1): Separate pieces of functionality into
1959         ask_dependency_caches (), update_dependency_caches (),
1960         change_spec_dep_to_hard (), update_dep ().
1961         (get_back_and_forw_lists): New static function.
1962         (sd_add_dep): Separate setting of dependency caches into
1963         set_dependency_caches ().
1964         (sd_add_or_update_dep, sd_resolve_dep, sd_copy_back_deps):
1965         New functions.
1966         (sd_delete_dep): Ditto.
1967         (DUMP_LISTS_SIZE, DUMP_LISTS_DEPS, DUMP_LISTS_ALL): New constants.
1968         (dump_lists): New static function.
1969         (sd_debug_lists): New debug function.
1970         (delete_all_dependences, fixup_sched_groups): Update to use
1971         sd_* infrastructure.
1972         (sched_analyze_2): Create data-speculative dependency only if
1973         data-speculation is enabled.
1974         (sched_analyze_insn): If insn cannot be speculative, make all its
1975         dependencies non-speculative.
1976         (sched_analyze): Use sd_init_insn ().
1977         (add_forw_dep, compute_forward_dependencies): Remove.
1978         (delete_dep_nodes_in_back_deps): New static function.
1979         (sched_free_deps): New function.
1980         (init_dependency_caches): Init alloc_pools.
1981         (extend_depedency_caches): Update after removing of
1982         forward_dependency_cache.
1983         (free_dependency_caches): Ditto.  Free alloc_pools.
1984         (adjust_add_sorted_back_dep, adjust_back_add_forw_dep): Remove.
1985         (delete_forw_dep, add_or_update_back_dep, add_or_update_back_forw_dep):
1986         Ditto.
1987         (add_back_forw_dep, delete_back_forw_dep): Ditto.
1988         (add_dependence): Use init_dep ().
1989         (get_dep_weak_1): New static function.
1990         (get_dep_weak): Move logic to get_dep_weak_1 ().
1991         (dump_ds): New static function moved from haifa-sched.c:
1992         debug_spec_status ().
1993         (debug_ds): New debug function.
1994         (check_dep_status): Rename to check_dep ().  Update to check whole
1995         dependencies.
1996
1997         * haifa-sched.c (spec_info): Make global.
1998         (added_recovery_block_p): Rename to
1999         'haifa_recovery_block_was_added_during_current_schedule_block_p'.
2000         (haifa_recovery_block_was_added_during_scheduling_p): New variable.
2001         (dep_cost, priority, rank_for_schedule, schedule_insn): Update
2002         to use new interfaces.
2003         (ok_for_early_queue_removal): Ditto.
2004         (schedule_block): Initialize logical uids of insns emitted by the
2005         target.
2006         (sched_init): Initialize new variable.
2007         (fix_inter_tick, try_ready, fix_tick_ready): Update to use new
2008         interfaces.
2009         (extend_global): Initialize insn data.
2010         (init_h_i_d): Remove code that is now handled in sd_init_insn ().
2011         (process_insn_forw_deps_be_in_spec): Change signature.  Update to use
2012         new interfaces.
2013         (add_to_speculative_block): Update to use new interfaces.
2014         (create_recovery_block): Set new variables.
2015         (create_check_block_twin, fix_recovery_deps): Update to use new
2016         interfaces.
2017         (sched_insn_is_legitimate_for_speculation_p): New function.
2018         (speculate_insn): Move checking logic to
2019         sched_insn_is_legitimate_for_speculation_p ().
2020         (sched_remove_insn): Finalize sched-deps information of instruction.
2021         (clear_priorities, add_jump_dependencies): Update to use new
2022         interfaces.
2023         (debug_spec_status): Rename to dump_ds () and move to sched-deps.c.
2024         
2025         * sched-rgn.c (set_spec_fed, find_conditional_protection): Update
2026         to use new interfaces.
2027         (is_conditionally_protected, is_pfree, is_prisky) Ditto.
2028         (new_ready): Try to use control speculation only if it is available.
2029         (add_branch_dependences): Update to use new interfaces.
2030         (compute_block_backward_dependences): Rename to
2031         compute_block_dependences ().  Call
2032         targetm.sched.dependencies_evaluation_hook ().
2033         (free_block_dependencies): New static function.
2034         (debug_dependencies): Update to use new interfaces.
2035         (schedule_region): Remove separate computation of forward dependencies.
2036         Move call of targetm.sched.dependencies_evaluation_hook () to
2037         compute_block_dependences ().  Free dependencies at the end of
2038         scheduling the region.
2039
2040         * sched-ebb.c (earliest_block_with_similiar_load): Update to use
2041         new interfaces.
2042         (add_deps_for_risky_insns): Ditto.
2043         (schedule_ebb): Remove separate computation of forward dependencies.
2044         Free dependencies at the end of scheduling the ebb.
2045
2046         * ddg.c (create_ddg_dependence): Update to use new interfaces.
2047         (build_intra_loop_deps): Ditto.  Remove separate computation of
2048         forward dependencies.  Free sched-deps dependencies.
2049
2050         * config/ia64/ia64.c (ia64_dependencies_evaluation_hook): Update
2051         to use new interfaces.
2052         (ia64_dfa_new_cycle, ia64_gen_check): Ditto.
2053
2054         * config/rs6000/rs6000.c (rs6000_is_costly_dependence): Update to use
2055         new interfaces.
2056         (is_costly_group): Ditto.
2057
2058 2007-08-14  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
2059
2060         * alias.c (rtx_equal_for_memref_p): Constify.
2061         * basic-block.h (const_edge, const_basic_block): New.
2062         (reg_set_to_hard_reg_set, dfs_enumerate_from, single_succ_p,
2063         single_pred_p, single_succ_edge, single_pred_edge, single_succ,
2064         single_pred, maybe_hot_bb_p, probably_cold_bb_p,
2065         probably_never_executed_bb_p, edge_probability_reliable_p,
2066         br_prob_note_reliable_p, forwarder_block_p, flow_nodes_print,
2067         inside_basic_block_p, control_flow_insn_p, dominated_by_p):
2068         Likewise.
2069         * bb-reorder.c (better_edge_p, push_to_next_round_p): Likewise.
2070         * bt-load.c (basic_block_freq, insn_sets_btr_p, can_move_up):
2071         Likewise.
2072         * cfganal.c (flow_active_insn_p, forwarder_block_p,
2073         flow_nodes_print, dfs_enumerate_from): Likewise.
2074         * cfgbuild.c (count_basic_blocks, inside_basic_block_p,
2075         control_flow_insn_p, count_basic_blocks): Likewise.
2076         * cfgloop.c (flow_bb_inside_loop_p, glb_enum_p,
2077         get_loop_body_with_size, loop_exit_edge_p): Likewise.
2078         * cfgloop.h (flow_bb_inside_loop_p, num_loop_insns,
2079         average_num_loop_insns, loop_exit_edge_p,
2080         just_once_each_iteration_p, can_duplicate_loop_p): Likewise.
2081         * cfgloopanal.c (just_once_each_iteration_p, num_loop_insns,
2082         average_num_loop_insns, seq_cost): Likewise.
2083         * cfgloopmanip.c (rpe_enum_p, can_duplicate_loop_p): Likewise.
2084         * dominance.c (dominated_by_p): Likewise.
2085         * emit-rtl.c (validate_subreg): Likewise.
2086         * except.c (can_throw_internal, can_throw_external): Likewise.
2087         * except.h (can_throw_internal, can_throw_external): Likewise.
2088         * gcse.c (gcse_constant_p, oprs_unchanged_p, oprs_anticipatable_p,
2089         oprs_available_p, hash_expr, expr_equiv_p, oprs_not_set_p,
2090         compute_transp, load_killed_in_block_p, reg_killed_on_edge,
2091         simple_mem, store_ops_ok, load_kills_store, find_loads,
2092         store_killed_in_insn, store_killed_after, store_killed_before,
2093         gcse_mem_operand, implicit_set_cond_p, store_killed_in_pat):
2094         Likewise.
2095         * ifcvt.c (count_bb_insns, cheap_bb_rtx_cost_p, noce_operand_ok,
2096         noce_mem_write_may_trap_or_fault_p): Likewise.
2097         * pointer-set.c (pointer_set_contains, pointer_map_contains):
2098         Likewise.
2099         * pointer-set.h (pointer_set_contains, pointer_map_contains):
2100         Likewise.
2101         * predict.c (can_predict_insn_p, maybe_hot_bb_p,
2102         probably_cold_bb_p, probably_never_executed_bb_p,
2103         edge_probability_reliable_p, br_prob_note_reliable_p,
2104         can_predict_insn_p): Likewise.
2105         * regclass.c (reg_set_to_hard_reg_set): Likewise.
2106         * resource.c (return_insn_p): Likewise.
2107         * rtl.h (reg_set_between_p, reg_set_p, validate_subreg):
2108         Likewise.
2109         * rtlanal.c (reg_set_between_p, reg_set_p): Likewise.
2110         * tracer.c (count_insns, ignore_bb_p, better_p): Likewise.
2111         * tree-cfg.c (verify_gimple_unary_expr, verify_gimple_binary_expr,
2112         verify_gimple_modify_stmt): Likewise.
2113         * tree-chrec.c (is_not_constant_evolution,
2114         is_multivariate_chrec_rec, is_multivariate_chrec,
2115         chrec_contains_symbols, chrec_contains_undetermined,
2116         tree_contains_chrecs, evolution_function_is_affine_multivariate_p,
2117         evolution_function_is_univariate_p, avoid_arithmetics_in_type_p,
2118         eq_evolutions_p, scev_direction): Likewise.
2119         * tree-chrec.h (automatically_generated_chrec_p, tree_is_chrec,
2120         eq_evolutions_p, is_multivariate_chrec, chrec_contains_symbols,
2121         chrec_contains_symbols_defined_in_loop,
2122         chrec_contains_undetermined, tree_contains_chrecs,
2123         evolution_function_is_affine_multivariate_p,
2124         evolution_function_is_univariate_p, chrec_zerop,
2125         evolution_function_is_constant_p, evolution_function_is_affine_p,
2126         evolution_function_is_affine_or_constant_p,
2127         tree_does_not_contain_chrecs, chrec_type): Likewise.
2128         * tree-data-ref.c (tree_fold_divides_p,
2129         object_address_invariant_in_loop_p, dr_may_alias_p,
2130         ziv_subscript_p, siv_subscript_p, gcd_of_steps_may_divide_p,
2131         same_access_functions, constant_access_functions,
2132         access_functions_are_affine_or_constant_p, find_vertex_for_stmt):
2133         Likewise.
2134         * tree-flow.h (scev_direction): Likewise.
2135         * tree-gimple.c (is_gimple_stmt): Likewise.
2136         * tree-outof-ssa.c (identical_copies_p, identical_stmt_lists_p):
2137         Likewise.
2138         * tree-pretty-print.c (op_prio): Likewise.
2139         * tree-scalar-evolution.c (chrec_contains_symbols_defined_in_loop,
2140         analyzable_condition, backedge_phi_arg_p): Likewise.
2141         * tree-scalar-evolution.h (get_chrec_loop): Likewise.
2142         * tree-ssa-operands.c (get_name_decl, operand_build_cmp): Likewise.
2143         * tree-ssa-threadupdate.c (dbds_continue_enumeration_p):
2144         Likewise.
2145
2146 2007-08-13  Dan Hipschman  <dsh@google.com>
2147
2148         PR c/32953
2149         * c-format.c (check_format_arg): Move check for zero-length
2150         format strings below the check for unterminated strings.
2151
2152 2007-08-13  Andrew Pinski  <pinskia@gmail.com>
2153
2154         PR C/30427
2155         * c-typeck.c (build_unary_op <case BIT_NOT_EXPR>): Reject vector float
2156         types.
2157
2158 2007-08-13  Nick Clifton  <nickc@redhat.com>
2159
2160         * config/arm/arm_neon.h: Revert GPLv3 patch to this file.
2161
2162 2007-08-12  Francois-Xavier Coudert  <fxcoudert@gcc.gnu.org>
2163
2164         PR fortran/32860
2165         * c-format.c (gcc_gfc_length_specs): New array.
2166         (gcc_gfc_char_table): Add unsigned specifier, and references to
2167         the l length modifier.
2168         (format_types_orig): Use the new gcc_gfc_length_specs.
2169
2170 2007-08-12  Sa Liu  <saliu@de.ibm.com>
2171
2172         * emit-rtl.c (try_split): Relink the insns with REG_LIBCALL note
2173         and with REG_RETVAL note after split.
2174
2175 2007-08-11  David Daney  <ddaney@avtrex.com>
2176
2177         * config/mips/mips.c (mips_sched_reorder):  Mark cycle parameter
2178         as ATTRIBUTE_UNUSED.
2179
2180 2007-08-11  David Edelsohn  <edelsohn@gnu.org>
2181             Segher Boessenkool  <segher@kernel.crashing.org>
2182
2183         * config/rs6000/rs6000.h (CC1_CPU_SPEC): Define as empty string if
2184         HAVE_LOCAL_CPU_DETECT not defined.
2185
2186 2007-08-11  Jan Hubicka  <jh@suse.cz>
2187
2188         * cgraphunit.c (record_cdtor_fn): Declare all cdtors always inlined.
2189         (cgraph_process_new_functions): Honor previous value of
2190         disregard_inline_limits.
2191         * ipa-inline.c (compute_inline_parameters): Likewise.
2192
2193 2007-08-11  Ian Lance Taylor  <iant@google.com>
2194
2195         * alias.h (alias_set_type): Define new type.
2196         (ALIAS_SET_MEMORY_BARRIER): Use it.
2197         * rtl.h: Include alias.h.
2198         (struct mem_attrs): Use alias_set_type.
2199         * tree.h: Include alias.h
2200         (struct tree_type): Use alias_set_type.
2201         (struct tree_struct_field_tag): Likewise.
2202         (struct tree_decl_common): Likewise.
2203         * alias.c (struct alias_set_entry): Use alias_set_type.
2204         (get_alias_set_entry, alias_set_subset_of): Likewise.
2205         (alias_sets_conflict_p): Likewise.
2206         (alias_sets_must_conflict_p): Likewise.
2207         (objects_must_conflict_p): Likewise.
2208         (get_alias_set, new_alias_set): Likewise.
2209         (record_alias_subset, record_component_aliases): Likewise.
2210         (varargs_set, frame_set): Change to alias_set_type.
2211         (get_varargs_alias_set): Use alias_set_type.
2212         (get_frame_alias_set): Likewise.
2213         * builtins.c (setjmp_alias_set): Change to alias_set_type.
2214         * dse.c (struct store_info): Use alias_set_type.
2215         (struct read_info, struct clear_alias_mode_holder): Likewise.
2216         (clear_alias_set_lookup, canon_address): Likewise.
2217         (record_store, check_mem_read_rtx): Likewise.
2218         (dse_record_singleton_alias_set): Likewise.
2219         (dse_invalidate_singleton_alias_set): Likewise.
2220         * emit-rtl.c (get_mem_attrs): Likewise.
2221         (set_mem_attributes_minus_bitpos): Likewise.
2222         (set_mem_alias_set): Likewise.
2223         * expr.c (store_constructor_field, store_field): Likewise.
2224         * gimplify.c (struct gimplify_init_ctor_preeval_data): Likewise.
2225         * langhooks.c (lhd_get_alias_set): Likewise.
2226         * langhooks-def.h (lhd_get_alias_set): Likewise.
2227         * reload1.c (alter_reg): Likewise.
2228         * tree-flow.h (struct fieldoff): Likewise.
2229         * tree-ssa-alias.c (struct alias_map_d): Likewise.
2230         (may_alias_p, get_smt_for, create_sft): Likewise.
2231         * tree-ssa-alias-warnings.c (nonstandard_alias_types_p): Likewise.
2232         * tree-ssa-structalias.c (set_uids_in_ptset): Likewise.
2233         (merge_smts_into): Likewise.
2234         * varasm.c (const_alias_set): Likewise.
2235         * c-common.c (strict_aliasing_warning): Likewise.
2236         (c_common_get_alias_set): Likewise.
2237         * dse.h (dse_record_singleton_alias_set): Update declaration.
2238         (dse_invalidate_singleton_alias_set): Likewise.
2239         * emit-rtl.h (set_mem_alias_set): Likewise.
2240         * c-common.h (c_common_get_alias_set): Likewise.
2241         * print-rtl.c (print_rtx): Cast MEM_ALIAS_SET when printing it.
2242         * print-tree.c (print_node): Likewise.
2243         * config/alpha/alpha.c (alpha_sr_alias_set): Change to
2244         alias_set_type.
2245         (alpha_setup_incoming_varargs): Use alias_set_type.
2246         * config/i386/i386.c (setup_incoming_varargs_64): Use
2247         alias_set_type.
2248         (setup_incoming_varargs_ms_64): Likewise.
2249         (ix86_GOT_alias_set): Likewise.
2250         * config/mn10300/mn10300.c (mn10300_builtin_saveregs): Likewise.
2251         * config/rs6000/rs6000.c (setup_incoming_varargs): Likewise.
2252         (set): Change to alias_set_type.
2253         (get_TOC_alias_set): Use alias_set_type.
2254         * config/rs6000/rs6000-protos.h (get_TOC_alias_set): Update
2255         declaration.
2256         * config/sh/sh.c (sh_builtin_saveregs): Use alias_set_type.
2257         * config/sparc/sparc.c (sparc_sr_alias_set): Change to
2258         alias_set_type.
2259         (struct_value_alias_set): Likewise.
2260         * Makefile.in (GTFILES): Add $(srcdir)/alias.h.
2261
2262 2007-08-11  Richard Sandiford  <richard@codesourcery.com>
2263
2264         * config/vxworks-dummy.h (TARGET_VXWORKS): Define.
2265         * config/vxworks.h (TARGET_VXWORKS): Override.
2266         * config/mips/mips.h (TARGET_CPU_CPP_BUILTINS): Don't define
2267         "mips" if TARGET_VXWORKS.
2268
2269 2007-08-11  Richard Sandiford  <richard@codesourcery.com>
2270
2271         * calls.c (avoid_likely_spilled_reg): New function.
2272         (expand_call): Use it.
2273
2274 2007-08-11  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
2275
2276         * c-typeck.c (build_c_cast): Add OPT_Wcast_qual to warnings.
2277
2278 2007-08-10  Adam Nemet  <anemet@caviumnetworks.com>
2279
2280         * config/mips/predicates.md (const_call_insn_operand): Invoke
2281         SYMBOL_REF_LONG_CALL_P only on SYMBOL_REFs.
2282
2283 2007-08-10  David Edelsohn  <edelsohn@gnu.org>
2284
2285         PR target/33042
2286         * config/rs6000/driver-rs6000.c: Include link.h.
2287         Use ElfW instead of wordsize-specif typedef.
2288
2289 2007-08-10  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
2290
2291         * system.h (CONST_CAST): New.
2292         * c-decl.c (c_make_fname_decl): Use it.
2293         * c-lex.c (cb_ident, lex_string): Likewise.
2294         * c-typeck.c (free_all_tagged_tu_seen_up_to): Likewise.
2295         * gcc.c (set_spec, read_specs, for_each_path, execute, do_spec_1,
2296         give_switch, set_multilib_dir): Likewise.
2297         * gengtype-parse.c (string_seq, typedef_name): Likewise.
2298         * passes.c (execute_one_pass): Likewise.
2299         * prefix.c (update_path): Likewise.
2300         * pretty-print.c (pp_base_destroy_prefix): Likewise.
2301         * tree.c (build_string): Likewise.
2302
2303 2007-08-10  Aldy Hernandez  <aldyh@redhat.com>
2304
2305         * tree-flow-inline.h (is_exec_stmt): Remove.
2306         (is_label_stmt): Remove.
2307         * tree-flow.h: Remove prototypes for is_exec_stmt, get_filename, and
2308         is_label_stmt.
2309
2310 2007-08-10  Andreas Krebbel  <krebbel1@de.ibm.com>
2311
2312         * lower-subreg.c (resolve_shift_zext): Don't adjust
2313         src_reg_num for wordmode operands.
2314
2315 2007-08-10  Sandra Loosemore  <sandra@codesourcery.com>
2316             David Ung  <davidu@mips.com>
2317
2318         * config/mips/mips.c (TARGET_SCHED_INIT): Define.
2319         (TARGET_SCHED_REORDER2): Define.
2320         (mips_maybe_swap_ready): New.
2321         (mips_last_74k_agen_insn): New.
2322         (mips_74k_agen_init): New.
2323         (mips_74k_agen_reorder): New function to group loads and stores
2324         in the ready queue.
2325         (mips_sched_init): New.  
2326         (mips_sched_reorder): Don't do initialization here.  Call
2327         mips_74k_agen_reorder.
2328         (mips_variable_issue): Call mips_74k_agen_init.
2329
2330 2007-08-10  Aldy Hernandez  <aldyh@redhat.com>
2331
2332         * tree-flow-inline.h (get_filename): Remove.
2333
2334 2007-08-10  Richard Sandiford  <richard@codesourcery.com>
2335
2336         * config/mips/mips-protos.h (mips_address_insns): Add a boolean
2337         argument.
2338         (mips_fetch_insns): Delete in favor of...
2339         (mips_load_store_insns): ...this new function.
2340         * config/mips/mips.c (mips_address_insns): Add a boolean argument
2341         to say whether multiword moves _might_ be split.
2342         (mips_fetch_insns): Delete in favor of...
2343         (mips_load_store_insns): ...this new function.
2344         (mips_rtx_costs): Update the call to mips_address_insns.
2345         (mips_address_cost): Likewise.
2346         * config/mips/mips.md (length): Use mips_load_store_insns instead
2347         of mips_fetch_insns.
2348         * config/mips/constraints.md (R): Use mips_address_insns rather
2349         than mips_fetch_insns.  Assume that the move never needs to be split.
2350
2351 2007-08-09  Sandra Loosemore  <sandra@codesourcery.com>
2352
2353         * config/mips/mips.opt (mhard-float, msoft-float):  Make these
2354         control TARGET_HARD_FLOAT_ABI and TARGET_SOFT_FLOAT_ABI, rather
2355         than TARGET_HARD_FLOAT and TARGET_SOFT_FLOAT.  
2356         * config/mips/mips.h (mips16_hard_float): Delete.
2357         (TARGET_HARD_FLOAT_ABI, TARGET_SOFT_FLOAT_ABI):  Delete these
2358         definitions, and replace with....
2359         (TARGET_HARD_FLOAT, TARGET_SOFT_FLOAT): Define.
2360         * config/mips/mips.c (mips16_hard_float): Delete.  Replace
2361         all references with (TARGET_MIPS16 && TARGET_HARD_FLOAT_ABI).
2362         (MIPS_MARCH_CONTROLS_SOFT_FLOAT): Update comments.
2363         (override_options):  Replace MASK_SOFT_FLOAT references with
2364         MASK_SOFT_FLOAT_ABI.  Delete twiddling with MASK_SOFT_FLOAT
2365         and mips16_hard_float when TARGET_MIPS16.
2366         
2367 2007-08-09  Andrew Pinski  <andrew_pinski@playstation.sony.com>
2368
2369         PR c/32796
2370         * c-typeck.c (build_binary_op): Check for non pointer types before
2371         calling int_fits_type_p.
2372
2373 2007-08-09  Andrew Pinski  <andrew_pinski@playstation.sony.com>
2374
2375         PR middle-end/32813
2376         * fold-const.c (omit_one_operand): Return only the ommitted expression
2377         if the result is an empty statement.
2378         (pedantic_omit_one_operand): Likewise.
2379
2380 2007-08-09  Daniel Berlin  <dberlin@dberlin.org>
2381
2382         * c-typeck.c (readonly_error): Improve error for assignment.
2383         
2384         * c-pretty-print.c (pp_c_additive_expression): Handle pointer-plus
2385         expression. 
2386         (pp_c_expression): Ditto.
2387
2388 2007-08-09  Simon Baldwin  <simonb@google.com>
2389
2390         * simplify-rtx.c (simplify_binary_operation_1): Removed erroneous
2391         break that was preventing simplify_associative_operation() for xor.
2392
2393 2007-08-09  Sandra Loosemore  <sandra@codesourcery.com>
2394             Nigel Stephens  <nigel@mips.com>
2395
2396         * doc/tm.texi (CLZ_DEFINED_VALUE_AT_ZERO, CTZ_DEFINED_VALUE_AT_ZERO):
2397         Document change in interpretation of value from boolean to
2398         tri-state integer.
2399         * optabs.c (expand_ffs, expand_ctz): New functions to compute
2400         ffs and ctz using clz.
2401         (expand_unop):  Call them.
2402         * config/rs6000/rs6000.h (CLZ_DEFINED_VALUE_AT_ZERO): Fix its
2403         result value.
2404         (CTZ_DEFINED_VALUE_AT_ZERO): Likewise.
2405         * config/mips/mips.h (CLZ_DEFINED_VALUE_AT_ZERO): Likewise, to
2406         enable the new ffs expansion on this target.
2407
2408 2007-08-09  Jan Hubicka  <jh@suse.cz>
2409
2410         * optabs.c (expand_widen_pattern_expr): Use optabs accestors.
2411         (expand_ternary_op): Likewise.
2412         (expand_vec_shift_expr): Likewise.
2413         (expand_binop_directly): Likewise.
2414         (expand_binop): Likewise.
2415         (sign_expand_binop): Likewise.
2416         (expand_twoval_unop): Likewise.
2417         (expand_twoval_binop): Likewise.
2418         (expand_twoval_binop_libfunc): Likewise.
2419         (widen_clz): Likewise.
2420         (widen_bswap): Likewise.
2421         (expand_parity): Likewise.
2422         (expand_unop): Likewise.
2423         (expand_abs_nojump): Likewise.
2424         (expand_copysign): Likewise.
2425         (emit_no_conflict_block): Likewise.
2426         (emit_libcall_block): Likewise.
2427         (can_compare_p): Likewise.
2428         (prepare_cmp_insn): Likewise.
2429         (emit_cmp_and_jump_insn_1): Likewise.
2430         (prepare_float_lib_cmp): Likewise.
2431         (emit_conditional_add): Likewise.
2432         (gen_add2_insn): Likewise.
2433         (have_add2_insn): Likewise.
2434         (gen_sub2_insn): Likewise.
2435         (have_sub2_insn): Likewise.
2436         (can_extend_p): Likewise.
2437         (can_fix_p): Likewise.
2438         (can_float_p): Likewise.
2439         (expand_float): Likewise.
2440         (expand_fix): Likewise.
2441         (expand_sfix_optab): Likewise.
2442         (new_optab): Likewise.
2443         (new_convert_optab): Likewise.
2444         (init_libfuncs): Likewise.
2445         (init_interclass_conv_libfuncs): Likewise.
2446         (init_intraclass_conv_libfuncs): Likewise.
2447         (set_conv_libfunc): Likewise.
2448         (init_optabs): Likewise.
2449         (debug_optab_libfuncs): Likewise.
2450         (gen_cond_trap): Likewise.
2451         * optabs.h (optab_handler, convert_optab_hanlder): New.
2452         * genopinit.c: Update optabs generation table.
2453         * reload.c (find_reloads_address_1): Use optabs accestors.
2454         * builtins.c (expand_builtin_mathfn): Likewise.
2455         (expand_builtin_mathfn_2): Likewise.
2456         (expand_builtin_mathfn_3): Likewise.
2457         (expand_builtin_interclass_mathfn): Likewise.
2458         (expand_builtin_sincos): Likewise.
2459         (expand_builtin_cexpi): Likewise.
2460         (expand_builtin_powi): Likewise.
2461         (expand_builtin_strlen): Likewise.
2462         * dojump.c (do_jump): Likewise.
2463         * expr.c (convert_move): Likewise.
2464         (move_by_pieces): Likewise.
2465         (move_by_pieces_ninsns): Likewise.
2466         (can_store_by_pieces): Likewise.
2467         (store_by_pieces_1): Likewise.
2468         (emit_move_via_integer): Likewise.
2469         (emit_move_complex): Likewise.
2470         (emit_move_ccmode): Likewise.
2471         (emit_move_insn_1): Likewise.
2472         (emit_single_push_insn): Likewise.
2473         (store_constructor): Likewise.
2474         (expand_expr_real_1): Likewise.
2475         (do_store_flag): Likewise.
2476         * ada/misc.c (gnat_compute_largest_alignment): Likewise.
2477         (enumerate_modes): Likewise.
2478         * tree-vectorizer.c (vect_supportable_dr_alignment): Likewise.
2479         (supportable_widening_operation): Likewise.
2480         (supportable_narrowing_operation): Likewise.
2481         * expmed.c (store_bit_field_1): Likewise.
2482         (extract_bit_field_1): Likewise.
2483         (expand_mult_highpart_optab): Likewise.
2484         (expand_smod_pow2): Likewise.
2485         (expand_divmod): Likewise.
2486         (emit_store_flag): Likewise.
2487         * tree-vect-patterns.c
2488         (vect_pattern_recog_1): Likewise.
2489         * tree-ssa-loop-prefetch.c
2490         (nontemporal_store_p): Likewise.
2491         * tree-vect-transform.c (vect_model_reduction_cost): Likewise.
2492         (vect_create_epilog_for_reduction): Likewise.
2493         (vectorizable_reduction): Likewise.
2494         (vectorizable_operation): Likewise.
2495         (vect_strided_store_supported): Likewise.
2496         (vectorizable_store): Likewise.
2497         (vect_strided_load_supported): Likewise.
2498         (vectorizable_load): Likewise.
2499         * combine.c (simplify_comparison): Likewise.
2500         * tree-vect-generic.c
2501         (type_for_widest_vector_mode): Likewise.
2502         (expand_vector_operations_1): Likewise.
2503         * config/spu/spu.c (spu_expand_mov): Likewise.
2504         (spu_emit_vector_compare): Likewise.
2505         * config/rs6000/rs6000.c
2506         (rs6000_emit_vector_compare): Likewise.
2507         * stmt.c (add_case_node): Likewise.
2508         * reload1.c (gen_reload):
2509
2510 2007-08-09  Michael Matz  <matz@suse.de>
2511
2512         * tree.h (fixed_zerop): Declare as taking a const_tree.
2513         * tree.c (fixed_zerop): Take a const_tree.
2514
2515 2007-08-09  Ira Rosen  <irar@il.ibm.com>
2516
2517         * tree-vect-transform.c (vectorizable_store): Remove call to
2518         copy_virtual_operands() and call mark_symbols_for_renaming() for
2519         the created vector store.
2520         (vect_setup_realignment): Don't call copy_virtual_operands() and
2521         update_vuses_to_preheader(). 
2522         (vectorizable_load): Don't call copy_virtual_operands(). 
2523         (update_vuses_to_preheader): Remove.
2524
2525 2007-08-08  Chao-ying Fu  <fu@mips.com>
2526
2527         * tree.def (FIXED_POINT_TYPE): New type.
2528         (FIXED_CST): New constant.
2529         (FIXED_CONVERT_EXPR): New expr.
2530         * doc/c-tree.texi (Types): Document FIXED_POINT_TYPE.
2531         (Expressions): Document FIXED_CST and FIXED_CONVERT_EXPR.
2532         * tree.h (struct tree_base): Add saturating_flag.
2533         Remove one bit of spare for saturating_flag.
2534         (NUMERICAL_TYPE_CHECK): Support FIXED_POINT_TYPE.
2535         (NON_SAT_FIXED_POINT_TYPE_P, SAT_FIXED_POINT_TYPE_P,
2536         FIXED_POINT_TYPE_P): Define.
2537         (TYPE_SATURATING): Define.
2538         (TREE_FIXED_CST_PTR, TREE_FIXED_CST): Define.
2539         (struct tree_fixed_cst): New.
2540         (TYPE_IBIT, TYPE_FBIT): Define.
2541         (tree_node): Add fixed_cst.
2542         (enum tree_index): Add new enumeration values of
2543         TI_SAT_SFRACT_TYPE, TI_SAT_FRACT_TYPE, TI_SAT_LFRACT_TYPE,
2544         TI_SAT_LLFRACT_TYPE, TI_SAT_USFRACT_TYPE, TI_SAT_UFRACT_TYPE,
2545         TI_SAT_ULFRACT_TYPE, TI_SAT_ULLFRACT_TYPE, TI_SFRACT_TYPE,
2546         TI_FRACT_TYPE, TI_LFRACT_TYPE, TI_LLFRACT_TYPE, TI_USFRACT_TYPE,
2547         TI_UFRACT_TYPE, TI_ULFRACT_TYPE, TI_ULLFRACT_TYPE,
2548         TI_SAT_SACCUM_TYPE, TI_SAT_ACCUM_TYPE, TI_SAT_LACCUM_TYPE,
2549         TI_SAT_LLACCUM_TYPE, TI_SAT_USACCUM_TYPE, TI_SAT_UACCUM_TYPE,
2550         TI_SAT_ULACCUM_TYPE, TI_SAT_ULLACCUM_TYPE, TI_SACCUM_TYPE,
2551         TI_ACCUM_TYPE, TI_LACCUM_TYPE, TI_LLACCUM_TYPE, TI_USACCUM_TYPE,
2552         TI_UACCUM_TYPE, TI_ULACCUM_TYPE, TI_ULLACCUM_TYPE,
2553         TI_QQ_TYPE, TI_HQ_TYPE,_TYPE, TI_SQ_TYPE, TI_DQ_TYPE, TI_TQ_TYPE,
2554         TI_UQQ_TYPE, TI_UHQ_TYPE, TI_USQ_TYPE, TI_UDQ_TYPE, TI_UTQ_TYPE,
2555         TI_SAT_QQ_TYPE, TI_SAT_HQ_TYPE, TI_SAT_SQ_TYPE, TI_SAT_DQ_TYPE,
2556         TI_SAT_TQ_TYPE, TI_SAT_UQQ_TYPE, TI_SAT_UHQ_TYPE, TI_SAT_USQ_TYPE,
2557         TI_SAT_UDQ_TYPE, TI_SAT_UTQ_TYPE, TI_HA_TYPE, TI_SA_TYPE, TI_DA_TYPE,
2558         TI_TA_TYPE, TI_UHA_TYPE, TI_USA_TYPE, TI_UDA_TYPE, TI_UTA_TYPE,
2559         TI_SAT_HA_TYPE, TI_SAT_SA_TYPE, TI_SAT_DA_TYPE, TI_SAT_TA_TYPE,
2560         TI_SAT_UHA_TYPE, TI_SAT_USA_TYPE, TI_SAT_UDA_TYPE, TI_SAT_UTA_TYPE.
2561         (sat_short_fract_type_node, sat_fract_type_node,
2562         sat_long_fract_type_node, sat_long_long_fract_type_node,
2563         sat_unsigned_short_fract_type_node, sat_unsigned_fract_type_node,
2564         sat_unsigned_long_fract_type_node,
2565         sat_unsigned_long_long_fract_type_node, short_fract_type_node,
2566         fract_type_node, long_fract_type_node, long_long_fract_type_node,
2567         unsigned_short_fract_type_node, unsigned_fract_type_node,
2568         unsigned_long_fract_type_node, unsigned_long_long_fract_type_node,
2569         sat_short_accum_type_node, sat_accum_type_node,
2570         sat_long_accum_type_node, sat_long_long_accum_type_node,
2571         sat_unsigned_short_accum_type_node, sat_unsigned_accum_type_node,
2572         sat_unsigned_long_accum_type_node,
2573         sat_unsigned_long_long_accum_type_node, short_accum_type_node,
2574         accum_type_node, long_accum_type_node, long_long_accum_type_node,
2575         unsigned_short_accum_type_node, unsigned_accum_type_node,
2576         unsigned_long_accum_type_node, unsigned_long_long_accum_type_node,
2577         qq_type_node, hq_type_node, sq_type_node, dq_type_node, tq_type_node,
2578         uqq_type_node, uhq_type_node, usq_type_node, udq_type_node,
2579         utq_type_node, sat_qq_type_node, sat_hq_type_node, sat_sq_type_node,
2580         sat_dq_type_node, sat_tq_type_node, sat_uqq_type_node,
2581         sat_uhq_type_node, sat_usq_type_node, sat_udq_type_node,
2582         sat_utq_type_node, ha_type_node, sa_type_node, da_type_node,
2583         ta_type_node, uha_type_node, usa_type_node, uda_type_node,
2584         uta_type_node, sat_ha_type_node, sat_sa_type_node, sat_da_type_node,
2585         sat_ta_type_node, sat_uha_type_node, sat_usa_type_node,
2586         sat_uda_type_node, sat_uta_type_node): New macro.
2587         (make_fract_type, make_accum_type): Declare.
2588         (make_signed_fract_type, make_unsigned_fract_type,
2589         make_sat_signed_fract_type, make_sat_unsigned_fract_type,
2590         make_signed_accum_type, make_unsigned_accum_type,
2591         make_sat_signed_accum_type, make_sat_unsigned_accum_type,
2592         make_or_reuse_signed_fract_type, make_or_reuse_unsigned_fract_type,
2593         make_or_reuse_sat_signed_fract_type,
2594         make_or_reuse_sat_unsigned_fract_type, make_or_reuse_signed_accum_type,
2595         make_or_reuse_unsigned_accum_type, make_or_reuse_sat_signed_accum_type,
2596         make_or_reuse_sat_unsigned_accum_type): New macro.
2597         (fixed_zerop): Declare.
2598         * defaults.h (SHORT_FRACT_TYPE_SIZE, FRACT_TYPE_SIZE,
2599         LONG_FRACT_TYPE_SIZE, LONG_LONG_FRACT_TYPE_SIZE,
2600         SHORT_ACCUM_TYPE_SIZE, ACCUM_TYPE_SIZE, LONG_ACCUM_TYPE_SIZE,
2601         LONG_LONG_ACCUM_TYPE_SIZE): Define.
2602         * treestruct.def: Add TS_FIXED_CST.
2603         * Makefile.in (c-pretty-print.o): Add dependence on fixed-value.h.
2604         (tree.o): Likewise.
2605         (tree-dump.o): Likewise.
2606         (print-tree.o): Likewise.
2607         (tree-pretty-print.o): Likewise.
2608         (fold-const.o): Likewise.
2609         * tree-complex.c (some_nonzerop): Handle FIXED_CST.
2610         * tree-gimple.c (is_gimple_formal_tmp_rhs): Handle FIXED_CST.
2611         (is_gimple_min_invariant): Handle FIXED_CST.
2612         * stor-layout.c (int_mode_for_mode): Handle MODE_FRACT, MODE_UFRACT,
2613         MODE_ACCUM, MODE_UACCUM, MODE_VECTOR_FRACT, MODE_VECTOR_UFRACT,
2614         MODE_VECTOR_ACCUM, MODE_VECTOR_UACCUM.
2615         (layout_type): Handle FIXED_POINT_TYPE.
2616         (make_fract_type, make_accum_type): New functions.
2617         * tree-browser.c (browse_tree): Handle FIXED_POINT_TYPE.
2618         * tree-dump.c (fixed-value.h): New include.
2619         (dump_fixed): New function.
2620         (dequeue_and_dump): Handle FIXED_POINT_TYPE and FIXED_CST.
2621         * tree-inline.c (remap_type_1): Handle FIXED_POINT_TYPE.
2622         (estimate_num_insns_1): Handle FIXED_CST and FIXED_CONVERT_EXPR.
2623         * tree-pretty-print.c (fixed-value.h): New include.
2624         (dump_generic_node): Handle FIXED_POINT_TYPE, FIXED_CST, and
2625         FIXED_CONVERT_EXPR.
2626         * tree-scalar-evolution.c (get_scalar_evolution): Handle FIXED_CST.
2627         * tree-ssa-loop-im.c (for_each_index): Handle FIXED_CST.
2628         * tree-ssa-pre.c (poolify_tree): Handle FIXED_CST.
2629         * tree-ssa-reassoc.c (break_up_subtract_bb): We can do reassociation
2630         for non-saturating fixed-point types.
2631         (reassociate_bb): Likewise.
2632         * emit-rtl.c (fixed-value.h): New include.
2633         (fconst0, fconst1): New array.
2634         (init_emit_once): Initialize fconst0 and fconst1 for fixed-point modes.
2635         * tree-vect-generic.c expand_vector_operation): Support
2636         MODE_VECTOR_FRACT, MODE_VECTOR_UFRACT, MODE_VECTOR_ACCUM, and
2637         MODE_VECTOR_UACCUM.
2638         (type_for_widest_vector_mode): Add one parameter for the 
2639         saturating flag.
2640         Check scalar FRACT, UFRACT, ACCUM, and UACCUM mode to select their
2641         vector mode.
2642         Pass the satp parameter to type_for_mode for fixed-point types.
2643         (expand_vector_operations_1): Pass the saturating flag to
2644         type_for_widest_vector_mode.
2645         Support MODE_VECTOR_FRACT, MODE_VECTOR_UFRACT, MODE_VECTOR_ACCUM,
2646         and MODE_VECTOR_UACCUM.
2647         * tree-vect-transform.c (vect_is_simple_cond): Support FIXED_CST.
2648         (vectorizable_condition): Likewise.
2649         * tree.c (fixed-value.h): New include.
2650         (tree_code_size): Support FIXED_CST.
2651         (build_fixed): New function.
2652         (build_one_cst): Support FIXED_POINT_TYPE for accum types.
2653         (fixed_zerop): New function.
2654         (tree_node_structure): Support FIXED_CST.
2655         (type_contains_placeholder_1): Support FIXED_POINT_TYPE.
2656         (build_type_attribute_qual_variant): Handle FIXED_POINT_TYPE.
2657         (type_hash_eq): Handle FIXED_POINT_TYPE.
2658         (simple_cst_equal): Support FIXED_CST.
2659         (iterative_hash_expr): Handle FIXED_CST.
2660         (get_unwidened): Make sure type is not FIXED_POINT_TYPE.
2661         (get_narrower): Likewise.
2662         (variably_modified_type_p): Handle FIXED_POINT_TYPE.
2663         (make_or_reuse_fract_type, make_or_reuse_accum_type): New functions.
2664         (build_common_tree_nodes_2): Use MAKE_FIXED_TYPE_NODE_FAMILY and
2665         MAKE_FIXED_MODE_NODE macros to initialize fixed-point type
2666         nodes.
2667         (build_vector_type_for_mode): Handle MODE_VECTOR_FRACT,
2668         MODE_VECTOR_UFRACT, MODE_VECTOR_ACCUM, MODE_VECTOR_UACCUM.
2669         (initializer_zerop): Support FIXED_CST.
2670         (walk_tree): Handle FIXED_CST and FIXED_POINT_TYPE.
2671         * dwarf2out.c (base_type_die): Use DW_ATE_signed_fixed or
2672         DW_ATE_unsigned_fixed to describe FIXED_POINT_TYPE.
2673         (is_base_type): Handle FIXED_POINT_TYPE.
2674         (add_type_attribute): Handle FIXED_POINT_TYPE.
2675         (gen_type_die_with_usage): Handle FIXED_POINT_TYPE.
2676         * print-tree.c (fixed-value.h): New include.
2677         (print_node_brief): Support FIXED_CST.
2678         (print_node): Support FIXED_POINT_TYPE and FIXED_CST.
2679         * c-pretty-print.c (fixed-value.h): New include.
2680         (pp_c_type_specifier): Handle FIXED_POINT_TYPE.  Need to pass
2681         TYPE_SATURATING to c_common_type_for_mode for fixed-point modes.
2682         (pp_c_direct_abstract_declarator): Handle FIXED_POINT_TYPE.
2683         Support fixed-point types for inner items in VECTOR_TYPE.
2684         (pp_c_direct_declarator): Likewise.
2685         (pp_c_declarator): Likewise.
2686         (pp_c_fixed_constant): New function.
2687         (pp_c_constant): Handle FIXED_CST.
2688         (pp_c_primary_expression): Likewise.
2689         (pp_c_expression): Likewise.
2690         * fold-const.c (fixed-value.h): New include.
2691         (negate_expr_p): Return true for FIXED_CST.
2692         (fold_negate_expr): Support FIXED_CST.
2693         (split_tree): Support FIXED_CST.
2694         (const_binop): Support FIXED_CST.
2695         (fold_convert_const_int_from_fixed): New function to convert from
2696         fixed to int.
2697         (fold_convert_const_real_from_fixed): New function to convert from
2698         fixed to real.
2699         (fold_convert_const_fixed_from_fixed): New function to convert from
2700         fixed to another fixed.
2701         (fold_convert_const_fixed_from_int): New function to convert from
2702         int to fixed.
2703         (fold_convert_const_fixed_from_real): New function to convert from
2704         real to fixed.
2705         (fold_convert_const): Support conversions from fixed to int, from
2706         fixed to real, from fixed to fixed, from int to fixed, and from real
2707         to fixed.
2708         (fold_convert): Support FIXED_CST and FIXED_POINT_TYPE.
2709         (operand_equal_p): Support FIXED_CST.
2710         (make_range): For fixed-point modes, we need to pass the
2711         saturating flag as the 2nd parameter.
2712         (tree_swap_operands_p): Handle FIXED_CST.
2713         (fold_plusminus_mult_expr): For fract modes, we cannot generate
2714         constant 1.
2715         (fold_unary): Support FIXED_CONVERT_EXPR.
2716         (fold_binary): Handle FIXED_CST.
2717         Make sure the type is not saturating, before associating operations.
2718         Ex: A + B + C, A * B * C, (A1 * C1) +/- (A2 * C2).
2719         (tree_expr_nonnegative_warnv_p): Handle FIXED_CST.
2720         (fold_negate_const): Support FIXED_CST.
2721         (fold_relational_const): Support FIXED_CST.
2722         * gimplify.c (omp_firstprivatize_type_sizes): Handle FIXED_POINT_TYPE.
2723         (gimplify_expr): Handle FIXED_CST.
2724         (gimplify_type_sizes): Handle FIXED_POINT_TYPE.
2725         * ipa-prop.c (ipa_callsite_compute_param): Support FIXED_CST.
2726         * ipa-type-escape.c (type_to_consider): Handle FIXED_POINT_TYPE.
2727         * doc/tm.texi (Type Layout): Document SHORT_FRACT_TYPE_SIZE,
2728         FRACT_TYPE_SIZE, LONG_FRACT_TYPE_SIZE, LONG_LONG_FRACT_TYPE_SIZE,
2729         SHORT_ACCUM_TYPE_SIZE, ACCUM_TYPE_SIZE, LONG_ACCUM_TYPE_SIZE,
2730         LONG_LONG_ACCUM_TYPE_SIZE.
2731         * dbxout.c (dbxout_type): Handle FIXED_POINT_TYPE.
2732         * c-aux-info.c (gen_type): Handle FIXED_POINT_TYPE.
2733         * tree-sra.c (is_sra_scalar_type): Support FIXED_POINT_TYPE.
2734         * expmed.c (extract_bit_field): Support MODE_FRACT, MODE_UFRACT,
2735         MODE_ACCUM, and MODE_UACCUM.
2736         * tree-vectorizer.c (vect_is_simple_reduction): Check for saturating
2737         fixed-point types to disable reduction.
2738         * explow.c (promote_mode): Support FIXED_POINT_TYPE.
2739
2740 2007-08-08  David Edelsohn  <edelsohn@gnu.org>
2741
2742         * config/rs6000/x-rs6000: New file.
2743         * config/rs6000/darwin.h (CC1_SPEC): Add cc1_cpu.
2744         * config/rs6000/rs6000.h (EXTRA_SPECS): Add cc1_cpu.
2745         (EXTRA_SPEC_FUNCTIONS): Define.
2746         (HAVE_LOCAL_CPU_DETECT): Define.
2747         (CC1_CPU_SPEC): Define.
2748         * config/rs6000/driver-rs6000.c: New file.
2749         * config/rs6000/aix.h (CC1_SPEC): Define.
2750         * config/rs6000/sysv4.h (CC1_SPEC): Add cc1_cpu.
2751         * config.host: Add x-rs6000 to host_xmake_file if host and target
2752         are rs6000 or powerpc.
2753
2754 2007-08-08  Paolo Bonzini <paolo.bonzini@lu.unisi.ch>
2755
2756         * config/i386/t-crtstuff (CRTSTUFF_T_CFLAGS): Use +=.
2757
2758 2007-08-08  Richard Sandiford  <richard@codesourcery.com>
2759             Sandra Loosemore  <sandra@codesourcery.com>
2760             Chao-ying Fu  <fu@mips.com>
2761             Nigel Stephens  <nigel@mips.com>
2762             David Ung  <davidu@mips.com>
2763
2764         * doc/invoke.texi (-mcode-readable): Document.
2765         * config/mips/mips.opt (mcode-readable): New option.
2766         * config/mips/mips-protos.h (SYMBOL_32_HIGH): New symbol type.
2767         * config/mips/mips.h (mips_code_readable_setting): New enum.
2768         (mips_code_readable): Declare.
2769         (TARGET_MIPS16_TEXT_LOADS, TARGET_MIPS16_PCREL_LOADS): New macros.
2770         (TARGET_MIPS16_SHORT_JUMP_TABLES): New macro.
2771         (JUMP_TABLES_IN_TEXT_SECTION): Use it.
2772         (CASE_VECTOR_MODE, CASE_VECTOR_PC_RELATIVE): Likewise.  Remove
2773         boiler-plate comments.
2774         (ASM_OUTPUT_ADDR_DIFF_ELT): Use TARGET_MIPS16_SHORT_JUMP_TABLES.
2775         * config/mips/mips.c (mips_code_readable): New variable.
2776         (mips_classify_symbol): Only return SYMBOL_PC_RELATIVE for
2777         MIPS16 labels if TARGET_MIPS16_SHORT_JUMP_TABLES.  Use both the
2778         context and -mcode-readable setting to restrict the use of
2779         SYMBOL_PC_RELATIVE for MIPS16 constant pool references.
2780         Only return TARGET_FORCE_TO_MEM if PC-relative loads are allowed.
2781         (mips_symbolic_constant_p): Handle SYMBOL_32_HIGH.
2782         (mips_blocks_for_constant_p): Only return false for
2783         TARGET_MIPS16_PCREL_LOADS.
2784         (mips_symbol_insns_1): Treat HIGHs as 2 extended instructions
2785         for MIPS16.  Handle SYMBOL_32_HIGH.
2786         (mips_const_insns): Allow HIGHs for MIPS16 too.
2787         (mips_unspec_address_offset): New function, split out from...
2788         (mips_unspec_address): ...here.
2789         (mips_output_move): Handle MIPS16 HIGH moves.  Use "li" to load
2790         16-bit symbolic constants.  Assert approropiate conditions for
2791         using the "la" and "dla" macros.
2792         (mips_handle_option): Handle -mcode-readable=.
2793         (override_options): Use %hi/%lo relocations for TARGET_MIPS16 too.
2794         Set up mips_lo_relocs[SYMBOL_32_HIGH].
2795         (mips_strip_unspec_address): New function, split out from...
2796         (print_operand_reloc): ...here.
2797         (print_operand): Pass constants through mips_strip_unspec_address.
2798         (print_operand_address): Likewise.
2799         (mips_output_mi_thunk): Remove guard of mips16_lay_out_constants.
2800         (mips_select_rtx_section): Remove MIPS16 handling.
2801         (mips16_gp_pseudo_reg): Check currently_expanding_to_rtl.
2802         (mips16_rewrite_pool_refs): Wrap the labels in an address UNSPEC.
2803         (mips16_lay_out_constants): Do nothing unless
2804         TARGET_MIPS16_PCREL_LOADS.
2805         (mips_avoid_hazards): Remove guard of mips16_lay_out_constants.
2806         * config/mips/mips.md: Split HIGHs for MIPS16.
2807         (tablejump): Use TARGET_MIPS16_SHORT_JUMP_TABLES.
2808
2809 2007-08-08  Richard Sandiford  <richard@codesourcery.com>
2810
2811         * config/mips/mips-protos.h (mips_emit_move): Declare.
2812         * config/mips/mips.c (mips_emit_move): New function.
2813         (mips_force_temporary): Use mips_emit_move instead of emit_move_insn.
2814         (mips_legitimize_const_move): Likewise.
2815         (mips_legitimize_move): Likewise.
2816         (mips_split_64bit_move): Likewise.
2817         (mips_restore_gp): Likewise.
2818         (mips_load_call_address): Likewise.
2819         (mips_emit_fcc_reload): Likewise.
2820         (mips_set_return_address): Likewise.
2821         (mips_block_move_straight): Likewise.
2822         (mips_block_move_loop): Likewise.
2823         (mips_setup_incoming_varargs): Likewise.
2824         (mips_save_reg): Likewise.
2825         (mips_expand_prologue): Likewise.
2826         (mips_restore_reg): Likewise.
2827         (mips_expand_epilogue): Likewise.
2828         (mips_output_mi_thunk): Likewise.
2829         (build_mips16_call_stub): Likewise.
2830         (mips_builtin_branch_and_move): Likewise.
2831         * config/mips/mips.h (INITIALIZE_TRAMPOLINE): Likewise.
2832         * config/mips/mips.md (fixuns_truncdfsi2): Likewise.
2833         (fixuns_truncdfdi2): Likewise.
2834         (fixuns_truncsfsi2): Likewise.
2835         (fixuns_truncsfdi2): Likewise.
2836         (loadgp_absolute): Likewise.
2837         (builtin_setjmp_setup): Likewise.
2838         (builtin_longjmp): Likewise.
2839         (untyped_call): Likewise.
2840
2841 2007-08-08  Richard Sandiford  <richard@codesourcery.com>
2842
2843         * config/mips/mips-protos.h (mips_split_symbol): Add a mode and
2844         an "rtx *" argument.  Return a bool.
2845         * config/mips/mips.c (mips_split_symbol): Accept arbitrary source
2846         values and return true if they can be split.  Take the same kind of
2847         mode argument as mips_symbol_insns.  Add a "lo_sum_out" parameter
2848         and store the lo_sum there if nonnull.  Use the symbol type to
2849         determine whether a $gp or HIGH is needed.
2850         (mips_legitimize_address): Update call to mips_split_symbol and
2851         simplify accordingly.
2852         (mips_legitimize_const_move): Likewise.
2853         * config/mips/mips.md: In the combine define_split,
2854         check mips_split_symbol instead of splittable_symbolic_operand.
2855         Update use of mips_split_symbol in the generator code.
2856         * config/mips/predicates.md (splittable_symbolic_operand): Delete.
2857
2858 2007-08-08  Richard Sandiford  <richard@codesourcery.com>
2859
2860         * config/mips/mips.c (mips_symbolic_address_p): Delete.
2861         (mips_symbol_insns_1): New function, split out from...
2862         (mips_symbol_insns): ...here.  Take a mode argument.  Treat loads
2863         and stores separately from load addresses.
2864         (mips_classify_address): Replace uses of mips_symbolic_address_p
2865         with uses of mips_symbol_insns.
2866         (mips_address_insns): Update calls to mips_symbol_insns.
2867         (mips_const_insns): Likewise.
2868         (mips_legitimize_address): Likewise.
2869
2870 2007-08-08  Richard Sandiford  <richard@codesourcery.com>
2871
2872         * config/mips/mips-protos.h (SYMBOL_FORCE_TO_MEM): New symbol type.
2873         * config/mips/mips.c (mips_classify_symbol): Skip TARGET_ABICALLS
2874         block for locally-binding symbols if TARGET_ABSOLUTE_ABICALLS.
2875         Return SYMBOL_FORCE_TO_MEM instead of SYMBOL_ABSOLUTE for
2876         non-call contexts if TARGET_MIPS16.
2877         (mips_symbolic_constant_p): Handle SYMBOL_FORCE_TO_MEM.
2878         (mips_symbolic_address_p): Likewise.  Remove special TARGET_MIPS16
2879         code for SYMBOL_ABSOLUTE.
2880         (mips_symbol_insns): Likewise.
2881
2882 2007-08-08  Richard Sandiford  <richard@codesourcery.com>
2883
2884         * config/mips/mips-protos.h (mips_symbol_context): New enumeration.
2885         * config/mips/mips.c (mips_classify_symbol): Take a context argument.
2886         (mips_symbolic_constant_p): Likewise.  Update the call to
2887         mips_classify_symbol.
2888         (mips_classify_address): Update the calls to mips_symbolic_constant_p.
2889         (mips_const_insns): Likewise.  Update the call to mips_classify_symbol.
2890         (mips_legitimize_address): Update the call to mips_symbolic_constant_p.
2891         (print_operand_reloc): Add a context argument.  Update the call to
2892         mips_symbolic_constant_p.
2893         (print_operand): Update the calls to print_operand_reloc.
2894         (print_operand_address): Use print_operand_reloc rather than
2895         print_operand.
2896         (mips_rewrite_small_data_p): Add a context argument.  Update the call
2897         to mips_symbolic_constant_p.
2898         (mips_small_data_pattern_1): Make DATA the containing mem.
2899         Update the call to mips_rewrite_small_data_p.
2900         (mips_rewrite_small_data_1): Likewise.
2901         (mips_use_anchors_for_symbol_p): Update the call to
2902         mips_symbolic_constant_p.
2903         * config/mips/predicates.md (const_call_insn_operand): Likewise.
2904         (splittable_symbolic_operand): Likewise.
2905         (move_operand): Likewise.
2906         (absolute_symbolic_operand): Likewise.
2907         (got_disp_operand): Likewise.
2908         (got_page_ofst_operand): Likewise.
2909
2910 2007-08-08  Richard Sandiford  <richard@codesourcery.com>
2911
2912         * config/mips/mips-protos.h (SYMBOL_GENERAL): Rename to...
2913         (SYMBOL_ABSOLUTE): ...this.
2914         (SYMBOL_SMALL_DATA): Rename to...
2915         (SYMBOL_GP_RELATIVE): ...this.
2916         (SYMBOL_CONSTANT_POOL): Rename to...
2917         (SYMBOL_PC_RELATIVE): ...this.
2918         * config/mips/mips.c (mips_classify_symbol, mips_symbolic_constant_p)
2919         (mips_symbolic_address_p, mips_symbol_insns, override_options)
2920         (mips_rewrite_small_data_p, mips_use_anchors_for_symbol_p): Update
2921         after above changes.
2922         * config/mips/predicates.md (const_call_insn_operand): Likewise.
2923         (general_symbolic_operand): Rename to...
2924         (absolute_symbolic_operand): ...this.
2925         * config/mips/mips.md: Update after above changes.
2926
2927 2007-08-08  Vladimir Yanovsky  <yanov@il.ibm.com>
2928             Revital Eres  <eres@il.ibm.com>
2929
2930         * ddg.c (print_ddg): Add dump information.
2931         * modulo-sched.c (print_node_sched_params): Add parameter and
2932         verbosity.
2933         (calculate_maxii): Remove function.
2934         (undo_generate_reg_moves): Likewise.
2935         (undo_permute_partial_schedule): Likewise.
2936         (kernel_number_of_cycles): Likewise.
2937         (MAXII_FACTOR): New definition to calculate the upper bound of II.
2938         (sms_schedule): Use it.  Remove profitability checks.
2939         (sms_schedule_by_order): Fix order of nodes within the cycle.
2940
2941 2007-08-08  Samuel Thibault  <samuel.thibault@ens-lyon.org>
2942
2943         * config/i386/gnu.h (STARTFILE_SPEC): Use gcrt0.o in profile mode, add
2944         -profile option, add pie support.
2945         (ENDFILE_SPEC): New spec.
2946         * config/gnu.h (LIB_SPEC): Add -profile option.
2947
2948 2007-08-08  Samuel Thibault  <samuel.thibault@ens-lyon.org>
2949
2950         * config/i386/gnu.h (CPP_SPEC): Add -pthread option.
2951         * config/gnu.h (LIB_SPEC): Likewise.
2952
2953 2007-08-07  Yaz Saito  <saito@google.com>
2954             Ian Lance Taylor  <iant@google.com>
2955
2956         * common.opt (finstrument-functions-exclude-function-list): New
2957         option.
2958         (finstrument-functions-exclude-file-list): New option.
2959         * opts.c (char_p): Define and DEF_VEC.
2960         (flag_instrument_functions_exclude_functions): New static
2961         variable.
2962         (flag_instrument_functions_exclude_files): New static variable.
2963         (add_instrument_functions_exclude_list): New static function.
2964         (flag_instrument_functions_exclude_p): New function.
2965         (common_handle_option): Handle new options.
2966         * flags.h (flag_instrument_functions_exclude_p): Declare.
2967         * gimplify.c (gimplify_function_tree): Call
2968         flag_instrument_functions_exclude_p.
2969         * doc/invoke.texi (Option Summary): Mention new options.
2970         (Code Gen Options): Document new options.
2971
2972 2007-08-07  Ian Lance Taylor  <iant@google.com>
2973
2974         PR rtl-optimization/32776
2975         * lower-subreg.c (resolve_clobber): Call resolve_reg_notes.
2976         (resolve_use): Likewise.
2977         (decompose_multiword_subregs): Remove "changed" local variable.
2978
2979 2007-08-07  Carlos O'Donell  <carlos@codesourcery.com>
2980
2981         * configure.ac: Define HAVE_GNU_AS if $gas_flag is yes.
2982         * configure: Regenerate.
2983         * config.in: Regenerate.
2984         * gcc.c [HAVE_GNU_AS]: Add "%{v} %{w:-W} %{I*} " to asm_options
2985         spec string.
2986
2987 2007-08-07  Ian Lance Taylor  <iant@google.com>
2988
2989         * lower-subreg.c (resolve_clobber): If the clobber has a LIBCALL
2990         note, just delete the insn.
2991
2992 2007-08-07  Andreas Schwab  <schwab@suse.de>
2993
2994         PR bootstrap/32973
2995         * gengtype-lex.l: Ignore backslash/newline pair while scanning a
2996         struct definition.
2997
2998 2007-08-07  Andreas Krebbel  <krebbel1@de.ibm.com>
2999
3000         * lower-subreg.c (resolve_subreg_use): Remove assertion.
3001         (find_decomposable_shift_zext, resolve_shift_zext): New functions.
3002         (decompose_multiword_subregs): Use the functions above to decompose
3003         multiword shifts and zero-extends.
3004
3005 2007-08-07  Rask Ingemann Lambertsen  <rask@sygehus.dk>
3006
3007         * doc/sourcebuild.texi (Test Directives): Fix "compile" and
3008         "assemble" descriptions which were swapped.
3009
3010 2007-08-06  Chao-ying Fu  <fu@mips.com>
3011
3012         * fixed-value.h: New file.
3013         * fixed-value.c: New file.
3014         * Makefile.in (OBJS-common): Add fixed-value.o.
3015         (fixed-value.o): New rule.
3016         (GTFILES): Add fixed-value.h.
3017         * double-int.c (double_int_scmp): We should use unsigned HOST_WIDE_INT
3018         to compare a.low and b.low.
3019         * gengtype.c (main): Handle FIXED_VALUE_TYPE type as scalar typedef.
3020
3021 2007-08-06  H.J. Lu  <hongjiu.lu@intel.com>
3022             Daniel Jacobowitz  <dan@codesourcery.com>
3023
3024         PR target/31868
3025         * config.gcc (x86_64-*-freebsd*): Add i386/t-crtstuff to
3026         tmake_file.
3027         (x86_64-*-netbsd*): Likewise.
3028         (x86_64-*-linux*): Likewise.
3029         (x86_64-*-kfreebsd*-gnu): Likewise.
3030         (x86_64-*-knetbsd*-gnu): Likewise.
3031         (i[34567]86-*-solaris2.1[0-9]*): Likewise.
3032
3033         * config/i386/t-linux64 (CRTSTUFF_T_CFLAGS): Removed.
3034
3035         * config/i386/t-crtstuff (CRTSTUFF_T_CFLAGS): Update comments.
3036         Add -fno-asynchronous-unwind-tables.
3037
3038         * config/t-freebsd (CRTSTUFF_T_CFLAGS_S): Add $(CRTSTUFF_T_CFLAGS).
3039         * config/t-libc-ok (CRTSTUFF_T_CFLAGS_S): Likewise.
3040         * config/t-lynx (CRTSTUFF_T_CFLAGS_S): Likewise.
3041         * config/t-netbsd (CRTSTUFF_T_CFLAGS_S): Likewise.
3042         * config/t-svr4 (CRTSTUFF_T_CFLAGS_S): Likewise.
3043
3044 2007-08-06  Steve Ellcey  <sje@cup.hp.com>
3045
3046         * config/ia64/ia64.c (ia64_c_mode_for_suffix): New.
3047         (TARGET_C_MODE_FOR_SUFFIX): New.
3048
3049 2007-08-06  Steve Ellcey  <sje@cup.hp.com>
3050
3051         * config/ia64/div.md (m2subrf4_cond): Change 'g' to 'G'.
3052
3053 2007-08-06  Steve Ellcey  <sje@cup.hp.com>
3054
3055         * config/ia64/ia64.h (MODES_TIEABLE_P): Fix typo.
3056
3057 2007-08-06  H.J. Lu  <hongjiu.lu@intel.com>
3058
3059         * config/i386/i386.md: Check TARGET_ macros and optimize_size
3060         before checking function returns in conditional expressions.
3061
3062 2007-08-06  Alfred Minarik  <a.minarik@aon.at>
3063
3064         PR pch/13676
3065         * doc/invoke.texi: Add .hp, .hxx, .hpp, .h, .HPP, .tcc as c++ header.
3066
3067 2008-08-05  Andrew Pinski  <andrew_pinski@playstation.sony.com>
3068
3069         PR middle-end/32988
3070         * tree.c (build2_stat): Instead of checking for INTEGER_TYPE, check
3071         for INTEGRAL_TYPE_P.
3072
3073 2008-08-05  Paolo Bonzini  <bonzini@gnu.org>
3074
3075         * configure.ac: Remove --enable-checking=df from default settings.
3076         * tree-pass.h (TODO_df_verify): New.  Shift TODO_mark_first_instance.
3077         * df-core.c (df_finish_pass) [ENABLE_CHECKING]: Schedule verification
3078         if the parameter is true.
3079         (df_analyze) [!ENABLE_DF_CHECKING]: Also do verification if the
3080         DF_VERIFY_SCHEDULED flag is true.
3081         * df.h (enum df_changeable_flags): Add DF_VERIFY_SCHEDULED.
3082         (df_finish_pass): Adjust prototype.
3083         * passes.c (execute_todo): Schedule verification if TODO_df_verify is
3084         true.
3085
3086         * see.c (pass_see): Add TODO_df_verify.
3087         * loop-init.c (pass_rtl_move_loop_invariants): Add TODO_df_verify.
3088         * global.c (rest_of_handle_global_alloc): Schedule verification
3089         after the pass.
3090         * local-alloc.c (rest_of_handle_local_alloc): Schedule verification
3091         before the pass.
3092         * function.c (pass_thread_prologue_and_epilogue): Add TODO_df_verify.
3093         * gcse.c (rest_of_handle_gcse): Adjust call to df_finish_pass.
3094         * loop-iv.c (iv_analysis_done): Schedule verification after the pass.
3095
3096         * config/sh/sh.c (sh_output_mi_thunk): Remove dead code.
3097         * config/ia64/ia64.c (ia64_reorg): Adjust call to df_finish_pass.
3098         * config/bfin/bfin.c (bfin_reorg): Adjust call to df_finish_pass.
3099
3100 2007-08-05  Vladimir Yanovsky  <yanov@il.ibm.com>
3101             Revital Eres <eres@il.ibm.com>
3102
3103         * doc/invoke.texi (-fmodulo-sched-allow-regmoves): Document new
3104         flag.
3105         * ddg.c (create_ddg_dependence): Rename to...
3106         (create_ddg_dep_from_intra_loop_link): This.  Do not check
3107         for interloop edges.  Do not create anti dependence edge when
3108         a true dependence edge exists in the opposite direction and
3109         -fmodulo-sched-allow-regmoves is set.
3110         (build_intra_loop_deps): Call create_ddg_dep_from_intra_loop_link.
3111         (add_cross_iteration_register_deps): Create anti dependence edge
3112         when -fno-modulo-sched-allow-regmoves is set.
3113         * common.opt (-fmodulo-sched-allow-regmoves): New flag.
3114
3115 2007-08-04  Richard Sandiford  <richard@codesourcery.com>
3116
3117         * config/arm/arm.md (movsi): Add braces.
3118
3119 2007-08-04  Andrew Pinski  <andrew_pinski@playstation.sony.com>
3120
3121         PR middle-end/32780
3122         * fold-const.c (fold_binary <case MINUS_EXPR>): Fix the type of
3123         operands for the folding of "A - (A & B)" into "~B & A"; cast them
3124         to type.
3125
3126 2007-08-03  Zdenek Dvorak  <ook@ucw.cz>
3127
3128         * tree-ssa-threadupdate.c (thread_through_all_blocks): Use loops'
3129         state accessor functions.
3130         * cfgloopmanip.c (remove_path, create_preheaders,
3131         force_single_succ_latches, fix_loop_structure): Ditto.
3132         * tree-ssa-loop-manip.c (rewrite_into_loop_closed_ssa,
3133         tree_duplicate_loop_to_header_edge): Ditto.
3134         * cfgloopanal.c (mark_irreducible_loops): Ditto.
3135         * loop-init.c (loop_optimizer_init, loop_optimizer_finalize):
3136         Ditto.
3137         * tree-cfgcleanup.c (cleanup_tree_cfg_noloop, repair_loop_structures,
3138         cleanup_tree_cfg): Ditto.
3139         * tree-cfg.c (tree_merge_blocks): Ditto.
3140         * cfgloop.c (rescan_loop_exit, record_loop_exits,
3141         release_recorded_exits, get_loop_exit_edges, verify_loop_structure,
3142         loop_preheader_edge, single_exit): Ditto.
3143         (flow_loops_find): Do not clear loops->state.
3144         * cfgloop.h (loops_state_satisfies_p, loops_state_set,
3145         loops_state_clear): New functions.
3146
3147 2007-08-03  Andrew Pinski  <andrew_pinski@playstation.sony.com>
3148
3149         PR middle-end/32399
3150         * tree-ssa-address.c (add_to_parts): Use POINTER_PLUS_EXPR
3151         when adding to the base and convert ELT to sizetype instead of type.
3152
3153 2007-08-03  Andrew Pinski  <andrew_pinski@playstation.sony.com>
3154
3155         PR middle-end/32304
3156         * ipa-reference.c (has_proper_scope_for_analysis): Return false when
3157         the decl's type has TYPE_NEEDS_CONSTRUCTING set.
3158
3159 2007-08-03  Andrew Pinski  <andrew_pinski@playstation.sony.com>
3160
3161         PR middle-end/32935
3162         * fold-convert.c (fold_negate_expr <NOP_EXPR>): Convert back to the
3163          correct type the negate expression.
3164
3165 2007-08-03  Jan Hubicka  <jh@suse.cz>
3166
3167         * i386.c (setup_incoming_varargs_64): Tolerate 64bit preferred
3168         stack boundary.
3169
3170 2007-08-03  David Edelsohn  <edelsohn@gnu.org>
3171
3172         * config/rs6000/rs6000.c (struct processor_cost): Change
3173         l1_cache_lines to l1_cache_size.  Add l2_cache_size.
3174         (*_cost): Convert l1 cache information to kilobytes.  Add l2 cache
3175         information.
3176         (rios1_costs, rios2_cost): Correct cache line size.
3177         (rs6000_override_options): Set l2-cache-size parameter.
3178
3179 2007-08-03  Andrew Pinski  <andrew_pinski@playstation.sony.com>
3180             Diego Novillo  <dnovillo@google.com>
3181
3182         PR 31521
3183         * tree-vrp.c (simplify_div_or_mod_using_ranges): Also simplify
3184         if the range includes 0.
3185
3186 2007-08-03  Ben Elliston  <bje@au.ibm.com>
3187
3188         * config/spu/spu.md (dftsv, dftsv_celledp): Attach the appropriate
3189         mode to unspec expressions to silence a warning from the generator
3190         programs.
3191         
3192 2007-08-02  Steve Ellcey  <sje@cup.hp.com>
3193
3194         * config/ia64/constraints.md ("U"): Make constraint vector only.
3195
3196 2007-08-02  Nathan Froyd  <froydnj@codesourcery.com>
3197
3198         PR middle-end/25446
3199         * c-objc-common.c (c_cannot_inline_tree_fn): Check for an
3200         always_inline attribute on the function decl.
3201
3202 2007-08-02  Nathan Froyd  <froydnj@codesourcery.com>
3203
3204         PR middle-end/25445
3205         * varasm.c (default_binds_local_p_1): Consult flag_whole_program
3206         if we are compiling with -fPIC.
3207
3208 2007-08-02  Sandra Loosemore  <sandra@codesourcery.com>
3209             Nigel Stephens  <nigel@mips.com>
3210
3211         * longlong.h [__mips__] (count_leading_zeros, COUNT_LEADING_ZEROS_0):
3212         Define for MIPS32 and MIPS64.
3213
3214 2007-08-02  Nick Clifton  <nickc@redhat.com>
3215
3216         * config/host-hpux.c: Change copyright header to refer to version
3217         3 of the GNU General Public License and to point readers at the
3218         COPYING3 file and the FSF's license web page.
3219         * config/alpha/predicates.md, config/alpha/vms-ld.c,
3220         config/alpha/linux.h, config/alpha/alpha.opt,
3221         config/alpha/linux-elf.h, config/alpha/vms.h, config/alpha/elf.h,
3222         config/alpha/vms-unwind.h, config/alpha/ev4.md,
3223         config/alpha/ev6.md, config/alpha/alpha.c, config/alpha/vms-cc.c,
3224         config/alpha/alpha.h, config/alpha/sync.md,
3225         config/alpha/openbsd.h, config/alpha/alpha.md,
3226         config/alpha/alpha-modes.def, config/alpha/ev5.md,
3227         config/alpha/alpha-protos.h, config/alpha/freebsd.h,
3228         config/alpha/osf5.h, config/alpha/netbsd.h, config/alpha/vms64.h,
3229         config/alpha/constraints.md, config/alpha/osf.h,
3230         config/alpha/xm-vms.h, config/alpha/unicosmk.h, config/linux.h,
3231         config/frv/predicates.md, config/frv/frv.h, config/frv/linux.h,
3232         config/frv/frv.md, config/frv/frv.opt, config/frv/frv-modes.def,
3233         config/frv/frv-asm.h, config/frv/frv-protos.h,
3234         config/frv/frv-abi.h, config/frv/frv.c, config/s390/tpf.h,
3235         config/s390/s390.c, config/s390/predicates.md, config/s390/s390.h,
3236         config/s390/linux.h, config/s390/tpf.md, config/s390/tpf.opt,
3237         config/s390/2064.md, config/s390/2084.md, config/s390/s390.md,
3238         config/s390/s390.opt, config/s390/s390-modes.def,
3239         config/s390/fixdfdi.h, config/s390/constraints.md,
3240         config/s390/s390-protos.h, config/s390/s390x.h, config/elfos.h,
3241         config/dbxcoff.h, config/m32c/predicates.md, config/m32c/cond.md,
3242         config/m32c/m32c.c, config/m32c/minmax.md, config/m32c/blkmov.md,
3243         config/m32c/m32c-pragma.c, config/m32c/m32c.h,
3244         config/m32c/prologue.md, config/m32c/m32c.abi,
3245         config/m32c/muldiv.md, config/m32c/bitops.md, config/m32c/mov.md,
3246         config/m32c/addsub.md, config/m32c/m32c.md, config/m32c/m32c.opt,
3247         config/m32c/t-m32c, config/m32c/m32c-modes.def,
3248         config/m32c/jump.md, config/m32c/shift.md,
3249         config/m32c/m32c-protos.h, config/libgloss.h,
3250         config/spu/spu-protos.h, config/spu/predicates.md,
3251         config/spu/spu-builtins.h, config/spu/spu.c,
3252         config/spu/spu-builtins.def, config/spu/spu-builtins.md,
3253         config/spu/spu.h, config/spu/spu-elf.h, config/spu/constraints.md,
3254         config/spu/spu.md, config/spu/spu-c.c, config/spu/spu.opt,
3255         config/spu/spu-modes.def, config/spu/t-spu-elf, config/interix.h,
3256         config/sparc/hypersparc.md, config/sparc/predicates.md,
3257         config/sparc/linux.h, config/sparc/sp64-elf.h,
3258         config/sparc/supersparc.md, config/sparc/cypress.md,
3259         config/sparc/openbsd1-64.h, config/sparc/openbsd64.h,
3260         config/sparc/niagara.md, config/sparc/sparc.md,
3261         config/sparc/long-double-switch.opt, config/sparc/ultra3.md,
3262         config/sparc/sparc.opt, config/sparc/sync.md,
3263         config/sparc/sp-elf.h, config/sparc/sparc-protos.h,
3264         config/sparc/ultra1_2.md, config/sparc/biarch64.h,
3265         config/sparc/sparc.c, config/sparc/little-endian.opt,
3266         config/sparc/sysv4-only.h, config/sparc/sparc.h,
3267         config/sparc/linux64.h, config/sparc/freebsd.h,
3268         config/sparc/sol2.h, config/sparc/rtemself.h,
3269         config/sparc/netbsd-elf.h, config/sparc/vxworks.h,
3270         config/sparc/sparc-modes.def, config/sparc/sparclet.md,
3271         config/sparc/sysv4.h, config/vx-common.h, config/netbsd-aout.h,
3272         config/flat.h, config/m32r/m32r.md, config/m32r/predicates.md,
3273         config/m32r/little.h, config/m32r/m32r.c, config/m32r/m32r.opt,
3274         config/m32r/linux.h, config/m32r/constraints.md,
3275         config/m32r/m32r.h, config/m32r/m32r-protos.h, config/vxworks.opt,
3276         config/darwin-c.c, config/darwin.opt, config/i386/i386.h,
3277         config/i386/cygming.h, config/i386/linux.h, config/i386/cygwin.h,
3278         config/i386/i386.md, config/i386/netware-crt0.c,
3279         config/i386/sco5.h, config/i386/mmx.md, config/i386/vx-common.h,
3280         config/i386/kaos-i386.h, config/i386/winnt-stubs.c,
3281         config/i386/netbsd64.h, config/i386/djgpp.h, config/i386/gas.h,
3282         config/i386/sol2.h, config/i386/constraints.md,
3283         config/i386/netware-libgcc.c, config/i386/sysv5.h,
3284         config/i386/predicates.md, config/i386/geode.md,
3285         config/i386/x86-64.h, config/i386/kfreebsd-gnu.h,
3286         config/i386/freebsd64.h, config/i386/vxworksae.h,
3287         config/i386/pentium.md, config/i386/lynx.h, config/i386/i386elf.h,
3288         config/i386/rtemself.h, config/i386/netbsd-elf.h,
3289         config/i386/ppro.md, config/i386/k6.md, config/i386/netware.c,
3290         config/i386/netware.h, config/i386/i386-modes.def,
3291         config/i386/sysv4-cpp.h, config/i386/i386-interix.h,
3292         config/i386/cygwin1.c, config/i386/djgpp.opt, config/i386/uwin.h,
3293         config/i386/unix.h, config/i386/ptx4-i.h, config/i386/xm-djgpp.h,
3294         config/i386/att.h, config/i386/winnt.c, config/i386/beos-elf.h,
3295         config/i386/sol2-10.h, config/i386/darwin64.h, config/i386/sse.md,
3296         config/i386/i386.opt, config/i386/bsd.h, config/i386/cygming.opt,
3297         config/i386/xm-mingw32.h, config/i386/linux64.h,
3298         config/i386/openbsdelf.h, config/i386/xm-cygwin.h,
3299         config/i386/sco5.opt, config/i386/darwin.h, config/i386/mingw32.h,
3300         config/i386/winnt-cxx.c, config/i386/i386-interix3.h,
3301         config/i386/nwld.c, config/i386/nwld.h, config/i386/host-cygwin.c,
3302         config/i386/cygwin2.c, config/i386/i386-protos.h,
3303         config/i386/sync.md, config/i386/openbsd.h,
3304         config/i386/host-mingw32.c, config/i386/i386-aout.h,
3305         config/i386/nto.h, config/i386/biarch64.h,
3306         config/i386/i386-coff.h, config/i386/freebsd.h,
3307         config/i386/driver-i386.c, config/i386/knetbsd-gnu.h,
3308         config/i386/host-i386-darwin.c, config/i386/vxworks.h,
3309         config/i386/crtdll.h, config/i386/i386.c, config/i386/sysv4.h,
3310         config/darwin-protos.h, config/linux.opt, config/sol2.c,
3311         config/sol2.h, config/sh/symbian.c, config/sh/sh-protos.h,
3312         config/sh/linux.h, config/sh/elf.h, config/sh/superh.h,
3313         config/sh/sh4.md, config/sh/coff.h, config/sh/newlib.h,
3314         config/sh/embed-elf.h, config/sh/symbian-pre.h, config/sh/rtems.h,
3315         config/sh/kaos-sh.h, config/sh/sh4a.md, config/sh/constraints.md,
3316         config/sh/sh64.h, config/sh/sh.opt, config/sh/symbian-post.h,
3317         config/sh/sh-c.c, config/sh/predicates.md, config/sh/sh.c,
3318         config/sh/sh.h, config/sh/shmedia.md, config/sh/sh-modes.def,
3319         config/sh/little.h, config/sh/sh1.md, config/sh/sh4-300.md,
3320         config/sh/superh64.h, config/sh/rtemself.h,
3321         config/sh/netbsd-elf.h, config/sh/sh.md, config/sh/vxworks.h,
3322         config/usegas.h, config/svr3.h, config/pdp11/pdp11-protos.h,
3323         config/pdp11/2bsd.h, config/pdp11/pdp11.md, config/pdp11/pdp11.c,
3324         config/pdp11/pdp11.opt, config/pdp11/pdp11-modes.def,
3325         config/pdp11/pdp11.h, config/avr/rtems.h, config/avr/avr-protos.h,
3326         config/avr/predicates.md, config/avr/constraints.md,
3327         config/avr/avr.md, config/avr/avr.c, config/avr/avr.opt,
3328         config/avr/avr.h, config/sol2-protos.h, config/dbxelf.h,
3329         config/lynx.opt, config/crx/crx.h, config/crx/crx-protos.h,
3330         config/crx/crx.md, config/crx/crx.c, config/crx/crx.opt,
3331         config/c4x/c4x-c.c, config/c4x/c4x.c, config/c4x/c4x.opt,
3332         config/c4x/c4x-modes.def, config/c4x/rtems.h,
3333         config/c4x/predicates.md, config/c4x/c4x.h,
3334         config/c4x/c4x-protos.h, config/c4x/c4x.md, config/kfreebsd-gnu.h,
3335         config/xtensa/predicates.md, config/xtensa/xtensa.c,
3336         config/xtensa/linux.h, config/xtensa/xtensa.h,
3337         config/xtensa/elf.h, config/xtensa/xtensa.md,
3338         config/xtensa/xtensa.opt, config/xtensa/constraints.md,
3339         config/xtensa/xtensa-protos.h, config/dbx.h,
3340         config/stormy16/predicates.md, config/stormy16/stormy16.md,
3341         config/stormy16/stormy16.c, config/stormy16/stormy16.opt,
3342         config/stormy16/stormy16.h, config/stormy16/stormy16-protos.h,
3343         config/host-solaris.c, config/fr30/fr30.h,
3344         config/fr30/predicates.md, config/fr30/fr30-protos.h,
3345         config/fr30/fr30.md, config/fr30/fr30.c, config/fr30/fr30.opt,
3346         config/vxworksae.h, config/sol2-c.c, config/lynx.h,
3347         config/m68hc11/m68hc11-protos.h, config/m68hc11/predicates.md,
3348         config/m68hc11/m68hc11.md, config/m68hc11/m68hc11.c,
3349         config/m68hc11/m68hc11.opt, config/m68hc11/m68hc11.h,
3350         config/m68hc11/m68hc12.h, config/openbsd-oldgas.h,
3351         config/host-linux.c, config/interix3.h, config/cris/cris.c,
3352         config/cris/predicates.md, config/cris/linux.h,
3353         config/cris/cris.h, config/cris/aout.h, config/cris/cris.md,
3354         config/cris/linux.opt, config/cris/cris.opt, config/cris/elf.opt,
3355         config/cris/aout.opt, config/cris/cris-protos.h,
3356         config/vxworks-dummy.h, config/netbsd.h, config/netbsd-elf.h,
3357         config/iq2000/iq2000.h, config/iq2000/predicates.md,
3358         config/iq2000/iq2000-protos.h, config/iq2000/iq2000.md,
3359         config/iq2000/iq2000.c, config/iq2000/iq2000.opt,
3360         config/host-darwin.c, config/mt/mt.md, config/mt/mt.c,
3361         config/mt/mt.opt, config/mt/t-mt, config/mt/mt.h,
3362         config/mt/mt-protos.h, config/svr4.h, config/host-darwin.h,
3363         config/chorus.h, config/mn10300/mn10300.c,
3364         config/mn10300/mn10300.opt, config/mn10300/predicates.md,
3365         config/mn10300/mn10300.h, config/mn10300/linux.h,
3366         config/mn10300/constraints.md, config/mn10300/mn10300-protos.h,
3367         config/mn10300/mn10300.md, config/ia64/predicates.md,
3368         config/ia64/itanium1.md, config/ia64/unwind-ia64.h,
3369         config/ia64/ia64-c.c, config/ia64/sync.md, config/ia64/ia64.c,
3370         config/ia64/itanium2.md, config/ia64/ia64.h, config/ia64/vect.md,
3371         config/ia64/freebsd.h, config/ia64/ia64.md,
3372         config/ia64/ia64-modes.def, config/ia64/constraints.md,
3373         config/ia64/hpux.h, config/ia64/ia64-protos.h, config/windiss.h,
3374         config/gofast.h, config/rtems.h, config/sol2-10.h,
3375         config/m68k/predicates.md, config/m68k/m68k.md,
3376         config/m68k/linux.h, config/m68k/m68k-modes.def,
3377         config/m68k/print-sysroot-suffix.sh, config/m68k/m68k-protos.h,
3378         config/m68k/coff.h, config/m68k/m68k-none.h, config/m68k/ieee.opt,
3379         config/m68k/openbsd.h, config/m68k/m68k-aout.h,
3380         config/m68k/m68k.opt, config/m68k/m68020-elf.h,
3381         config/m68k/m68kelf.h, config/m68k/m68k-devices.def,
3382         config/m68k/uclinux-oldabi.h, config/m68k/m68k.c,
3383         config/m68k/constraints.md, config/m68k/rtemself.h,
3384         config/m68k/netbsd-elf.h, config/m68k/m68k.h,
3385         config/m68k/uclinux.h, config/rs6000/power4.md,
3386         config/rs6000/host-darwin.c, config/rs6000/6xx.md,
3387         config/rs6000/linux.h, config/rs6000/eabi.h,
3388         config/rs6000/aix41.opt, config/rs6000/xcoff.h,
3389         config/rs6000/secureplt.h, config/rs6000/linuxspe.h,
3390         config/rs6000/eabialtivec.h, config/rs6000/8540.md,
3391         config/rs6000/darwin8.h, config/rs6000/kaos-ppc.h,
3392         config/rs6000/windiss.h, config/rs6000/603.md,
3393         config/rs6000/aix41.h, config/rs6000/cell.md,
3394         config/rs6000/mpc.md, config/rs6000/aix43.h, config/rs6000/beos.h,
3395         config/rs6000/gnu.h, config/rs6000/rtems.h, config/rs6000/aix.opt,
3396         config/rs6000/darwin.md, config/rs6000/darwin64.h,
3397         config/rs6000/default64.h, config/rs6000/7xx.md,
3398         config/rs6000/darwin.opt, config/rs6000/spe.md,
3399         config/rs6000/rs6000.opt, config/rs6000/rs6000-c.c,
3400         config/rs6000/rios2.md, config/rs6000/linuxaltivec.h,
3401         config/rs6000/7450.md, config/rs6000/linux64.h,
3402         config/rs6000/constraints.md, config/rs6000/440.md,
3403         config/rs6000/darwin.h, config/rs6000/host-ppc64-darwin.c,
3404         config/rs6000/rs6000.c, config/rs6000/aix52.h,
3405         config/rs6000/rs6000.h, config/rs6000/power6.md,
3406         config/rs6000/predicates.md, config/rs6000/altivec.md,
3407         config/rs6000/aix64.opt, config/rs6000/rios1.md,
3408         config/rs6000/rs6000-modes.def, config/rs6000/rs64.md,
3409         config/rs6000/eabisim.h, config/rs6000/sysv4le.h,
3410         config/rs6000/darwin7.h, config/rs6000/dfp.md,
3411         config/rs6000/linux64.opt, config/rs6000/sync.md,
3412         config/rs6000/vxworksae.h, config/rs6000/power5.md,
3413         config/rs6000/lynx.h, config/rs6000/biarch64.h,
3414         config/rs6000/rs6000.md, config/rs6000/sysv4.opt,
3415         config/rs6000/eabispe.h, config/rs6000/e500.h,
3416         config/rs6000/freebsd.h, config/rs6000/rs6000-protos.h,
3417         config/rs6000/netbsd.h, config/rs6000/e500-double.h,
3418         config/rs6000/aix.h, config/rs6000/vxworks.h,
3419         config/rs6000/40x.md, config/rs6000/aix51.h,
3420         config/rs6000/sysv4.h, config/arc/arc-protos.h, config/arc/arc.md,
3421         config/arc/arc.c, config/arc/arc.opt, config/arc/arc-modes.def,
3422         config/arc/arc.h, config/mcore/mcore-elf.h,
3423         config/mcore/mcore-protos.h, config/mcore/predicates.md,
3424         config/mcore/mcore.md, config/mcore/mcore.c,
3425         config/mcore/mcore.opt, config/mcore/mcore.h,
3426         config/mcore/mcore-pe.h, config/darwin.c, config/freebsd-nthr.h,
3427         config/score/predicates.md, config/score/score-version.h,
3428         config/score/score-protos.h, config/score/misc.md,
3429         config/score/elf.h, config/score/score.c, config/score/mac.md,
3430         config/score/score7.md, config/score/score.h,
3431         config/score/score-conv.h, config/score/score-mdaux.c,
3432         config/score/score.md, config/score/score.opt,
3433         config/score/score-modes.def, config/score/score-mdaux.h,
3434         config/score/mul-div.S, config/arm/uclinux-elf.h,
3435         config/arm/semi.h, config/arm/ecos-elf.h, config/arm/arm1020e.md,
3436         config/arm/symbian.h, config/arm/linux-elf.h,
3437         config/arm/arm1026ejs.md, config/arm/arm1136jfs.md,
3438         config/arm/elf.h, config/arm/aout.h, config/arm/arm.c,
3439         config/arm/thumb2.md, config/arm/vec-common.md, config/arm/coff.h,
3440         config/arm/strongarm-pe.h, config/arm/arm.h,
3441         config/arm/cortex-a8-neon.md, config/arm/semiaof.h,
3442         config/arm/cortex-a8.md, config/arm/uclinux-eabi.h,
3443         config/arm/arm-modes.def, config/arm/linux-eabi.h,
3444         config/arm/rtems-elf.h, config/arm/neon-schedgen.ml,
3445         config/arm/arm-cores.def, config/arm/arm-protos.h,
3446         config/arm/vfp.md, config/arm/aof.h, config/arm/linux-gas.h,
3447         config/arm/wince-pe.h, config/arm/neon.md,
3448         config/arm/constraints.md, config/arm/neon.ml,
3449         config/arm/xscale-elf.h, config/arm/strongarm-coff.h,
3450         config/arm/arm.opt, config/arm/arm926ejs.md,
3451         config/arm/predicates.md, config/arm/iwmmxt.md,
3452         config/arm/arm_neon.h, config/arm/unknown-elf.h,
3453         config/arm/kaos-arm.h, config/arm/bpabi.h, config/arm/pe.opt,
3454         config/arm/neon-testgen.ml, config/arm/arm.md,
3455         config/arm/xscale-coff.h, config/arm/pe.c,
3456         config/arm/arm-generic.md, config/arm/pe.h,
3457         config/arm/kaos-strongarm.h, config/arm/freebsd.h,
3458         config/arm/neon-docgen.ml, config/arm/netbsd.h, config/arm/fpa.md,
3459         config/arm/strongarm-elf.h, config/arm/cirrus.md,
3460         config/arm/netbsd-elf.h, config/arm/vxworks.h,
3461         config/arm/neon-gen.ml, config/kaos.h, config/darwin-driver.c,
3462         config/pa/predicates.md, config/pa/pa64-hpux.h,
3463         config/pa/pa-hpux.opt, config/pa/som.h, config/pa/pa-hpux1010.opt,
3464         config/pa/pa-hpux1111.opt, config/pa/pa-pro-end.h,
3465         config/pa/elf.h, config/pa/fptr.c, config/pa/pa64-linux.h,
3466         config/pa/pa.md, config/pa/pa.opt, config/pa/pa-hpux.h,
3467         config/pa/pa-hpux10.h, config/pa/pa-hpux11.h,
3468         config/pa/pa-hpux1010.h, config/pa/pa-protos.h,
3469         config/pa/pa-osf.h, config/pa/pa-hpux1111.h, config/pa/pa-64.h,
3470         config/pa/milli64.S, config/pa/pa.c, config/pa/pa-linux.h,
3471         config/pa/pa.h, config/pa/pa32-linux.h, config/pa/pa64-hpux.opt,
3472         config/pa/pa64-regs.h, config/pa/pa-modes.def,
3473         config/pa/constraints.md, config/darwin9.h, config/mips/4100.md,
3474         config/mips/linux.h, config/mips/elfoabi.h, config/mips/elf.h,
3475         config/mips/sdb.h, config/mips/windiss.h, config/mips/rtems.h,
3476         config/mips/3000.md, config/mips/iris5.h, config/mips/5000.md,
3477         config/mips/7000.md, config/mips/9000.md, config/mips/4600.md,
3478         config/mips/linux64.h, config/mips/elforion.h,
3479         config/mips/constraints.md, config/mips/generic.md,
3480         config/mips/predicates.md, config/mips/4300.md,
3481         config/mips/mips-ps-3d.md, config/mips/iris.h, config/mips/24k.md,
3482         config/mips/mips.md, config/mips/mips.opt, config/mips/4k.md,
3483         config/mips/5k.md, config/mips/vr4120-div.S,
3484         config/mips/openbsd.h, config/mips/iris6.h, config/mips/4000.md,
3485         config/mips/mips-protos.h, config/mips/6000.md,
3486         config/mips/mips.c, config/mips/mips.h, config/mips/r3900.h,
3487         config/mips/74k.md, config/mips/netbsd.h, config/mips/vxworks.h,
3488         config/mips/mips-modes.def, config/mips/vr.h,
3489         config/soft-fp/t-softfp, config/openbsd.h, config/ptx4.h,
3490         config/freebsd-spec.h, config/vax/vax.c, config/vax/openbsd.h,
3491         config/vax/vax.h, config/vax/elf.h, config/vax/vax.md,
3492         config/vax/bsd.h, config/vax/vax.opt, config/vax/vax-modes.def,
3493         config/vax/openbsd1.h, config/vax/netbsd.h,
3494         config/vax/vax-protos.h, config/vax/netbsd-elf.h,
3495         config/vax/vaxv.h, config/vax/ultrix.h, config/freebsd.h,
3496         config/h8300/rtems.h, config/h8300/predicates.md,
3497         config/h8300/h8300.c, config/h8300/h8300.h, config/h8300/elf.h,
3498         config/h8300/h8300.md, config/h8300/h8300.opt,
3499         config/h8300/coff.h, config/h8300/h8300-protos.h,
3500         config/v850/v850.md, config/v850/predicates.md,
3501         config/v850/v850-c.c, config/v850/v850.c, config/v850/v850.opt,
3502         config/v850/v850.h, config/v850/v850-protos.h, config/vxworks.c,
3503         config/knetbsd-gnu.h, config/sol2-6.h, config/vxworks.h,
3504         config/mmix/mmix.h, config/mmix/predicates.md,
3505         config/mmix/mmix-protos.h, config/mmix/mmix.md,
3506         config/mmix/mmix.c, config/mmix/mmix.opt,
3507         config/mmix/mmix-modes.def, config/bfin/bfin.opt,
3508         config/bfin/rtems.h, config/bfin/bfin-modes.def,
3509         config/bfin/predicates.md, config/bfin/bfin-protos.h,
3510         config/bfin/bfin.c, config/bfin/bfin.h, config/bfin/bfin.md:
3511         Likewise.
3512
3513 2007-08-02  Richard Sandiford  <richard@codesourcery.com>
3514
3515         * emit-rtl.c (reset_used_decls): Rename to...
3516         (set_used_decls): ...this.  Set the used flag rather than clearing it.
3517         (unshare_all_rtl_again): Update accordingly.  Set flags on argument
3518         DECL_RTLs rather than resetting them.
3519
3520 2007-08-02  Andreas Krebbel  <krebbel1@de.ibm.com>
3521
3522         * config/s390/s390.md ("*xordi3_cconly"): Change xr to xg.
3523
3524 2007-08-01  Sandra Loosemore  <sandra@codesourcery.com>
3525
3526         * reload.c (find_reloads_address_part):  Pass correct MEMREFLOC
3527         argument to find_reloads_address.
3528
3529 2007-08-01  Daniel Jacobowitz  <dan@codesourcery.com>
3530
3531         PR tree-optimization/32919
3532         * tree-ssa-sccvn.c (visit_phi): Do not visit abnormal PHIs.
3533         * tree-ssa-coalesce.c (ssa_conflicts_dump): New.
3534         (coalesce_ssa_name): Call it.
3535
3536 2007-08-01  Sandra Loosemore  <sandra@codesourcery.com>
3537             David Ung  <davidu@mips.com>
3538
3539         * config/mips/mips16.S (__mips16_unordsf2, __mips16_floatunsisf): New.
3540         (__mips16_unorddf2, __mips16_floatunsidf): New.
3541         * config/mips/mips.c (mips_init_libfuncs): Add optab entries for
3542         above functions.
3543         * config/mips/t-libgcc-mips16 (LIB1ASMFUNCS): Add new functions.
3544
3545 2007-08-01  Zdenek Dvorak  <ook@ucw.cz>
3546
3547         * tree-pretty-print.c (dump_generic_node): Dump OMP_SECTIONS_SWITCH.
3548         Display new operands of OMP_SECTIONS and OMP_CONTINUE.
3549         * tree.h (OMP_SECTIONS_CONTROL): New macro.
3550         (OMP_DIRECTIVE_P): Add OMP_SECTIONS_SWITCH.
3551         * omp-low.c (get_ws_args_for, determine_parallel_type,
3552         expand_omp_for_generic, expand_omp_for_static_nochunk,
3553         expand_omp_for_static_chunk, expand_omp_for, expand_omp_sections):
3554         Work with more precise CFG.
3555         (build_omp_regions_1): Handle OMP_SECTIONS_SWITCH.
3556         (lower_omp_sections): Emit OMP_SECTIONS_SWITCH.  Add arguments to
3557         OMP_CONTINUE.
3558         * tree-gimple.c (is_gimple_stmt): Handle OMP_SECTIONS_SWITCH.
3559         * gimple-low.c (lower_stmt): Ditto.
3560         * tree-inline.c (estimate_num_insns_1): Ditto.
3561         * tree.def (OMP_SECTIONS, OMP_CONTINUE): Added new operands.
3562         (OMP_SECTIONS_SWITCH): New.
3563         * tree-cfgcleanup.c (cleanup_omp_return): New.
3564         (cleanup_tree_cfg_bb): Call cleanup_omp_return.
3565         * tree-cfg.c (make_edges): Create back edges for OMP_CONTINUE
3566         and exit edge for OMP_FOR.  Handle OMP_SECTIONS_SWITCH.
3567         (tree_redirect_edge_and_branch): Handle omp constructs.
3568
3569         * fortran/trans-openmp.c (gfc_trans_omp_sections): Build OMP_SECTIONS
3570         with three arguments.
3571
3572 2007-08-01  Zdenek Dvorak  <ook@ucw.cz>
3573
3574         * tree-cfg.c (tree_merge_blocks): Preserve loop exit phi nodes only
3575         in loop closed ssa.
3576
3577 2007-08-01  Zdenek Dvorak  <ook@ucw.cz>
3578
3579         * tree-ssa-threadupdate.c (thread_through_all_blocks): Record that
3580         the loop structures may need fixing.
3581         * tree-cfgcleanup.c (cleanup_tree_cfg_noloop, repair_loop_structures):
3582         New functions.
3583         (cleanup_tree_cfg_loop): Removed.
3584         (cleanup_tree_cfg): If loops need fixing, call repair_loop_structures.
3585         * tree-predcom.c (tree_predictive_commoning): Return TODO_cleanup_cfg
3586         instead of running cleanup_tree_cfg_loop.
3587         * cfgloop.h (LOOPS_NEED_FIXUP): New constant.
3588         * tree-flow.h (cleanup_tree_cfg_loop): Declaration removed.
3589         (tree_predictive_commoning): Declaration changed.
3590         * passes.c (execute_function_todo): Do not use cleanup_tree_cfg_loop.
3591
3592 2007-08-01  Zdenek Dvorak  <ook@ucw.cz>
3593
3594         * doc/invoke.texi (l1-cache-size): Update documentation.
3595         (l2-cache-size): Document.
3596         * params.h (L2_CACHE_SIZE): New macro.
3597         * tree-ssa-loop-prefetch.c (L1_CACHE_SIZE_BYTES): Reflect
3598         that L1_CACHE_SIZE is in kB now.
3599         (L2_CACHE_SIZE_BYTES): New macro.
3600         (tree_ssa_prefetch_arrays): Show size in kB.
3601         * config/i386/i386.h (struct processor_costs): Add l1_cache_size
3602         and l2_cache_size fields.
3603         * config/i386/driver-i386.c (describe_cache): Detect cache size
3604         in kB.
3605         * config/i386/i386.c (size_cost, i386_cost, i486_cost,pentium_cost,
3606         pentiumpro_cost, geode_cost, k6_cost, athlon_cost, k8_cost,
3607         amdfam10_cost, pentium4_cost, nocona_cost, core2_cost,
3608         generic64_cost, generic32_cost): Add l1_cache_size and l2_cache_size.
3609         (override_options): Set l1-cache-size and l2-cache-size to default
3610         values if not specified otherwise.
3611         * params.def (PARAM_L1_CACHE_SIZE): Change to set in kB.
3612         (PARAM_L2_CACHE_SIZE): New.
3613
3614 2007-08-01  Nigel Stephens  <nigel@mips.com>
3615             David Ung  <davidu@mips.com>
3616             Thiemo Seufer  <ths@mips.com>
3617             Chris Dearman  <chris@mips.com>
3618             Richard Sandiford  <richard@codesourcery.com>
3619
3620         * config.gcc (mips*-sde-elf*): New stanza.
3621         (mipsisa32-*-elf*, mipsisa32el-*-elf*, mipsisa32r2-*-elf*)
3622         (mipsisa32r2el-*-elf*, mipsisa64-*-elf*, mipsisa64el-*-elf*)
3623         (mipsisa64sb1-*-elf*, mipsisa64sb1el-*-elf*, mips-*-elf*)
3624         (mipsel-*-elf*, mips64-*-elf*, mips64el-*-elf*, mips64orion-*-elf*)
3625         (mips64orionel-*-elf*, mips*-*-rtems*, mips-wrs-windiss)
3626         (mipstx39-*-elf*, mipstx39el-*-elf*): Add mips/t-libgcc-mips16
3627         to tmake_file.
3628         * config/mips/sde.h: New file.
3629         * config/mips/t-libgcc-mips16: Likewise.
3630         * config/mips/t-sde: Likewise.
3631         * config/mips/linux.h (TARGET_OS_CPP_BUILTINS): Remove settings
3632         of _ABIN32, _ABI64, _ABIO32, _MIPS_SIM, _MIPS_SZLONG, _MIPS_SZPTR,
3633         _MIPS_FPSET and _MIPS_SZINT.
3634         * config/mips/iris.h (TARGET_OS_CPP_BUILTINS): Likewise.
3635         * config/mips/elfoabi.h (DRIVER_SELF_SPECS): Remove separate
3636         insertion of a default -mips option.  Use MIPS_32BIT_OPTION_SPEC.
3637         * config/mips/t-isa3264 (LIB1ASMSRC, LIB1ASMFUNCS): Delete.
3638         * config/mips/t-r3900 (LIB1ASMSRC, LIB1ASMFUNCS): Likewise.
3639         * config/mips/t-elf (LIB1ASMSRC, LIB1ASMFUNCS): Likewise.
3640         * config/mips/mips.h (TARGET_CPU_CPP_BUITINS): Define _ABIO32,
3641         _ABIN32, _ABI64, _ABIO64, _MIPS_SIM, _MIPS_SZINT, _MIPS_SZLONG,
3642         _MIPS_SZPTR and _MIPS_FPSET.
3643         (MIPS_ISA_LEVEL_SPEC): Inject the default -mips option if no
3644         architecture is specified.
3645         (MIPS_32BIT_OPTION_SPEC): New macro.
3646
3647 2007-07-31  Dan Hipschman  <dsh@google.com>
3648
3649         * gcc.c (end_going_arg): New function.
3650         (do_spec_2): Use it.
3651         (do_spec_1): Use it.
3652
3653 2007-07-31  H.J. Lu  <hongjiu.lu@intel.com>
3654
3655         * ddg.c (add_cross_iteration_register_deps): Declare bb_info
3656         only if ENABLE_CHECKING is defined.
3657
3658 2007-07-31  Kenneth Zadeck <zadeck@naturalbridge.com>
3659
3660         * df.h (DF_RU, DF_RU_BB_INFO, df_ru_bb_info, df_ru,
3661         df_ru_add_problem, df_ru_get_bb_info): Removed.
3662         (DF_RD, DF_UREC, DF_CHAIN, DF_NOTE): Renumbered.
3663         * df-problems.c (df_ru_problem_data, df_ru_set_bb_info,
3664         df_ru_free_bb_info, df_ru_alloc,
3665         df_ru_bb_local_compute_process_def,
3666         df_ru_bb_local_compute_process_use, df_ru_bb_local_compute,
3667         df_ru_local_compute, df_ru_init_solution, df_ru_confluence_n,
3668         df_ru_transfer_function, df_ru_free, df_ru_start_dump,
3669         df_ru_top_dump, df_ru_bottom_dump, df_problem problem_RU,
3670         df_ru_add_problem): Removed.
3671
3672 2007-07-31  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
3673
3674         PR target/32847
3675         * pa.md (casesi32): Use match_scratch.  Revise insn condition.
3676         (casesi32p, casesi64p): Likewise.
3677         (casesi): Adjust for above.
3678
3679 2007-07-31  Richard Sandiford  <richard@codesourcery.com>
3680
3681         * mode-switching.c (create_pre_exit): Don't search past calls.
3682
3683 2007-07-31  Sandra Loosemore  <sandra@codesourcery.com>
3684
3685         * config/mips/mips.h (ISA_HAS_SYNCI):  Add !TARGET_MIPS16 test.
3686
3687 2007-07-31  Revital Eres  <eres@il.ibm.com>
3688
3689         * ddg.c (add_deps_for_def): Rename to...
3690         (add_cross_iteration_register_deps): This.  Change implementation
3691         to use only reaching def and def-use chains to construct the
3692         inter loop dependencies.
3693         (add_deps_for_use): Remove function.
3694         (build_inter_loop_deps): Call add_cross_iteration_register_deps
3695         function to build the inter loop dependencies.
3696         * modulo-sched.c (sms_schedule): Build only
3697         reaching def and def-use chains for the propose of the ddg
3698         construction.
3699
3700 2007-07-31  Julian Brown  <julian@codesourcery.com>
3701
3702         * config/arm/neon.md (vec_set<mode>_internal, vec_setv2di_internal):
3703         New define_insns. Use correct RTL.
3704         (vec_set<mode>): Write as expander.
3705
3706 2007-07-31  Razya Ladelsky  <razya@il.ibm.com>
3707
3708         * matrix-reorg.c (analyze_matrix_allocation_site): Avoid referring 
3709         to an unallocated space.
3710
3711 2007-07-30  Jan Sjodin  <jan.sjodin@amd.com>
3712
3713         * tree-data-ref.c
3714         (split_constant_offset): Enable split_constant_offset to extract
3715         constants from other statements.
3716         * tree-vect-transform.c
3717         (vect_create_addr_base_for_vector_ref): Generate data_ref_base
3718         to a temp var. Force base_offset to be simple.
3719
3720 2007-07-30  Seongbae Park <seongbae.park@gmail.com>
3721
3722         * df-scan.c (df_scan_verify): Remove artificial limit on
3723         the number of blocks for verification.
3724         * df-problems.c (df_lr_bb_local_compute, df_simulate_find_defs,
3725         df_simulate_defs): Avoid unnecessary insn checking for defs.
3726
3727 2007-07-29  Mark Mitchell  <mark@codesourcery.com>
3728
3729         * config/m68k/lb1sf68.asm (FUNC): New macro.
3730         (__mulsi3): Use it.
3731         (__udivsi3): Likewise.
3732         (__divsi3): Likewise.
3733         (__umodsi3): Likewise.
3734         (__modsi3): Likewise.
3735         (__subdf3): Likewise.
3736         (__adddf3): Likewise.
3737         (__muldf3): Likewise.
3738         (__divdf3): Likewise.
3739         (__negdf2): Likewise.
3740         (__cmpdf2): Likewise.
3741         (__subsf3): Likewise.
3742         (__addsf3): Likewise.
3743         (__mulsf3): Likewise.
3744         (__divsf3): Likewise.
3745         (__negsf2): Likewise.
3746         (__cmpsf2): Likewise.
3747         (__eqdf2): Likewise.
3748         (__nedf2): Likewise.
3749         (__gtdf2): Likewise.
3750         (__gedf2): Likewise.
3751         (__ltdf2): Likewise.
3752         (__ledf2): Likewise.
3753         (__eqsf2): Likewise.
3754         (__nesf2): Likewise.
3755         (__gtsf2): Likewise.
3756         (__gesf2): Likewise.
3757         (__ltsf2): Likewise.
3758         (__lesf2): Likewise.
3759
3760 2007-07-30  Ollie Wild  <aaw@google.com>
3761
3762         * c-ppoutput.c (print_lines_directives_only): New function.
3763         (scan_translation_unit_directives_only): New function.
3764         (preprocess_file): Add call to scan_translation_unit_directives_only.
3765         * c-opts.c (c_common_handle_option): Add OPT_fdirectives_only.
3766         (sanitize_cpp_opts): Add default flag_dump_macros setting for
3767         -fdirectives-only.  Add errors for -fdirectives-only conflict with
3768         -Wunused-macros and -traditional.
3769         (finish_options): Add builtin macro initialization for
3770         -fdirectives-only + -fpreprocessed.
3771         * c.opt (fdirectives-only): New.
3772         * doc/cppopts.texi (fdirectives-only): New.
3773
3774 2007-07-30  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
3775
3776         * alias.c (record_set, memory_modified_1): Constify.
3777         * bt-load.c (note_btr_set): Likewise.
3778         * caller-save.c (mark_set_regs, add_stored_regs): Likewise.
3779         * combine.c (set_nonzero_bits_and_sign_copies,
3780         expand_field_assignment, record_dead_and_set_regs_1,
3781         use_crosses_set_p, reg_dead_at_p_1, can_combine_p,
3782         likely_spilled_retval_1): Likewise.
3783         * config/frv/frv.c (frv_registers_update_1, frv_io_check_address,
3784         frv_io_handle_set): Likewise.
3785         * config/mips/mips.c (mips_sim_record_set,
3786         vr4130_true_reg_dependence_p_1): Likewise.
3787         * config/mt/mt.c (insn_dependent_p_1): Likewise.
3788         * config/s390/s390.c (s390_reg_clobbered_rtx): Likewise.
3789         * config/sh/sh.c (flow_dependent_p_1): Likewise.
3790         * cselib.c (cselib_invalidate_rtx_note_stores): Likewise.
3791         * dce.c (mark_nonreg_stores_1, mark_nonreg_stores_2): Likewise.
3792         * ddg.c (mark_mem_store): Likewise.
3793         * df-problems.c (df_urec_mark_reg_change): Likewise.
3794         * function.c (update_epilogue_consts): Likewise.
3795         * gcse.c (record_set_info, record_last_set_info,
3796         mems_conflict_for_gcse_p, canon_list_insert, reg_set_info,
3797         reg_clear_last_set): Likewise.
3798         * global.c (mark_reg_store, mark_reg_clobber, reg_becomes_live):
3799         Likewise.
3800         * jump.c (reversed_comparison_code_parts): Likewise.
3801         * local-alloc.c (validate_equiv_mem_from_store, no_equiv,
3802         reg_is_set): Likewise.
3803         * loop-iv.c (mark_altered): Likewise.
3804         * mode-switching.c (reg_becomes_live): Likewise.
3805         * optabs.c (no_conflict_move_test): Likewise.
3806         * postreload-gcse.c (record_last_set_info, find_mem_conflicts):
3807         Likewise.
3808         * postreload.c (reload_combine_note_store, move2add_note_store):
3809         Likewise.
3810         * regmove.c (flags_set_1): Likewise.
3811         * regrename.c (note_sets, kill_clobbered_value, kill_set_value):
3812         Likewise.
3813         * reload1.c (mark_not_eliminable, forget_old_reloads_1):
3814         Likewise. 
3815         * resource.c (update_live_status): Likewise.
3816         * rtl.h (set_of, note_stores): Likewise.
3817         * rtlanal.c (set_of_1, parms_set, struct set_of_data, set_of,
3818         note_stores, parms_set): Likewise.
3819         * sched-rgn.c (sets_likely_spilled_1): Likewise.
3820         * stack-ptr-mod.c (notice_stack_pointer_modification_1):
3821         Likewise. 
3822         * var-tracking.c (count_stores, add_stores): Likewise.
3823
3824 2007-07-30  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
3825
3826         * alias.c (mems_in_disjoint_alias_sets_p,
3827         fixed_scalar_and_varying_struct_p, aliases_everything_p,
3828         nonoverlapping_component_refs_p, nonoverlapping_memrefs_p,
3829         write_dependence_p, mems_in_disjoint_alias_sets_p,
3830         read_dependence, true_dependence, canon_true_dependence,
3831         anti_dependence, output_dependence): Constify.
3832         * combine.c (extended_count): Likewise.
3833         * cse.c (cse_rtx_varies_p, hash_rtx, exp_equiv_p): Likewise.
3834         * cselib.c (get_value_hash, references_value_p,
3835         cselib_reg_set_mode, cselib_rtx_varies_p): Likewise.
3836         * cselib.h (cselib_reg_set_mode, references_value_p): Likewise.
3837         * emit-rtl.c (mem_expr_equal_p, active_insn_p): Likewise.
3838         * function.c (contains, prologue_epilogue_contains,
3839         sibcall_epilogue_contains): Likewise. 
3840         * jump.c (simplejump_p, condjump_p, condjump_in_parallel_p,
3841         pc_set, any_uncondjump_p, any_condjump_p, onlyjump_p,
3842         only_sets_cc0_p, sets_cc0_p, rtx_renumbered_equal_p, true_regnum,
3843         reg_or_subregno): Likewise.
3844         * recog.c (asm_noperands): Likewise.
3845         * reload1.c (function_invariant_p): Likewise.
3846         * rtl.h (mem_expr_equal_p, active_insn_p, rtx_varies_p,
3847         rtx_addr_varies_p, asm_noperands, exp_equiv_p, hash_rtx,
3848         condjump_p, any_condjump_p, any_uncondjump_p, pc_set,
3849         simplejump_p, onlyjump_p, only_sets_cc0_p, sets_cc0_p,
3850         true_regnum, reg_or_subregno, condjump_in_parallel_p,
3851         extended_count, prologue_epilogue_contains,
3852         sibcall_epilogue_contains, function_invariant_p, true_dependence,
3853         canon_true_dependence, read_dependence, anti_dependence,
3854         output_dependence): Likewise.
3855         * rtlanal.c (rtx_varies_p, rtx_addr_varies_p): Likewise.
3856
3857 2007-07-30  Julian Brown  <julian@codesourcery.com>
3858
3859         * config/arm/neon.md (V_ext): New mode attribute.
3860         (neon_vget_lane<mode>): Replace with define_expand.
3861         (neon_vget_lane<mode>_sext_internal)
3862         (neon_vget_lane<mode>_zext_internal): New define_insns for double
3863         and quad precision vectors.
3864         (neon_vget_lanedi): Add bounds check. Remove dead comment.
3865         * config/arm/neon.ml (get_lane): Make 32-bit get-lane intrinsics
3866         have typeless 32-bit result.
3867
3868 2007-07-30  Andrew Pinski  <andrew_pinski@playstation.sony.com>
3869
3870         PR tree-opt/32527
3871         * tree-affine.h (aff_tree): The type of rest is sizetype for types
3872         of pointers.
3873         * tree-affine.c (aff_combination_scale): If type is a pointer type,
3874         use sizetype for rest.
3875         (aff_combination_add_elt): Likewise. Don't specialize pointer types.
3876         (aff_combination_convert): Don't convert rest for pointer types.
3877
3878 2007-07-28  Daniel Berlin  <dberlin@dberlin.org>
3879
3880         * Makefile.in (tree-ssa-alias.o): Add alloc-pool.h
3881
3882         * tree-ssa-alias.c: Add alloc-pool.h.
3883         (init_alias_info): Free alias_bitmap_obstack.
3884         (delete_alias_info): Call delete_mem_ref_stats.
3885         (get_mem_sym_stats_for): Use alloc_pool.
3886         (init_mem_ref_stats): Do not delete mem_ref_stats here.
3887         (delete_mem_sym_stats): Removed.
3888         
3889 2007-07-29  Sebastian Pop  <sebpop@gmail.com>
3890
3891         * tree-data-ref.c (add_multivariate_self_dist): Parametric access
3892         functions cannot be represented as classical distance vectors.
3893
3894 2007-07-29  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
3895
3896         * attribs.c (hash_attr, eq_attr, init_attributes): Constify.
3897         * builtins.c (validate_arg, builtin_mathfn_code,
3898         validate_arglist): Likewise.
3899         * calls.c (call_expr_flags): Likewise.
3900         * combine.c (reg_nonzero_bits_for_combine,
3901         reg_num_sign_bit_copies_for_combine, get_last_value,
3902         reg_truncated_to_mode): Likewise.
3903         * emit-rtl.c (subreg_lowpart_p): Likewise.
3904         * expr.c (highest_pow2_factor_for_target,
3905         categorize_ctor_elements_1, categorize_ctor_elements,
3906         count_type_elements, contains_packed_reference,
3907         highest_pow2_factor, highest_pow2_factor_for_target): Likewise.
3908         * fold-const.c (may_negate_without_overflow_p, int_const_binop,
3909         fold_convertible_p, operand_equal_p, tree_swap_operands_p,
3910         native_encode_int, native_encode_real, native_encode_complex,
3911         native_encode_vector, native_encode_expr, native_interpret_int,
3912         native_interpret_real, native_interpret_complex,
3913         native_interpret_vector, native_interpret_expr): Likewise.
3914         * function.c (use_register_for_decl): Likewise.
3915         * gimplify.c (get_name): Likewise.
3916         * langhooks-def.h (lhd_return_null_const_tree): New.
3917         (LANG_HOOKS_GET_CALLEE_FNDECL): Use it.
3918         * langhooks.c (lhd_return_null_const_tree): New.
3919         * langhooks.h (lang_get_callee_fndecl): Constify.
3920         * output.h (constructor_static_from_elts_p): Likewise.
3921         * rtl-factoring.c (gen_symbol_ref_rtx_for_label): Likewise.
3922         * rtl.h (nonzero_bits, num_sign_bit_copies, truncated_to_mode,
3923         subreg_lowpart_p, noop_move_p, struct rtl_hooks): Likewise.
3924         * rtlanal.c (cached_nonzero_bits, nonzero_bits1,
3925         cached_num_sign_bit_copies, num_sign_bit_copies1, noop_move_p,
3926         nonzero_bits, num_sign_bit_copies, truncated_to_mode): Likewise.
3927         * rtlhooks-def.h (reg_nonzero_bits_general,
3928         reg_num_sign_bit_copies_general, reg_truncated_to_mode_general):
3929         Likewise. 
3930         * rtlhooks.c (reg_num_sign_bit_copies_general,
3931         reg_nonzero_bits_general, reg_truncated_to_mode_general):
3932         Likewise. 
3933         * stmt.c (warn_if_unused_value, is_body_block): Likewise.
3934         * stor-layout.c (mode_for_size_tree): Likewise.
3935         * tree-ssa-loop-im.c (memref_eq): Likewise.
3936         * tree-ssa-loop-ivopts.c (tree_int_cst_sign_bit): Likewise.
3937         * tree.c (contains_placeholder_p, type_list_equal,
3938         simple_cst_equal, get_callee_fndecl, operand_equal_for_phi_arg_p):
3939         Likewise. 
3940         * tree.h (tree_int_cst_sign_bit, may_negate_without_overflow_p,
3941         mode_for_size_tree, categorize_ctor_elements, count_type_elements,
3942         contains_placeholder_p, contains_packed_reference,
3943         get_callee_fndecl, operand_equal_for_phi_arg_p,
3944         warn_if_unused_value, is_body_block, native_encode_expr,
3945         native_interpret_expr, fold_convertible_p, operand_equal_p,
3946         int_const_binop, tree_swap_operands_p, builtin_mathfn_code,
3947         validate_arglist, simple_cst_equal, type_list_equal,
3948         use_register_for_decl, call_expr_flags, get_name,
3949         highest_pow2_factor): Likewise.
3950         (const_call_expr_arg_iterator_d,
3951         init_const_call_expr_arg_iterator, next_const_call_expr_arg,
3952         first_const_call_expr_arg, more_const_call_expr_args_p,
3953         FOR_EACH_CONST_CALL_EXPR_ARG): New.
3954         * varasm.c (constructor_static_from_elts_p): Constify.
3955
3956 2007-07-28  Kazu Hirata  <kazu@codesourcery.com>
3957
3958         * cfglayout.c, config/arm/arm.c, config/arm/cortex-a8.md,
3959         config/arm/neon-schedgen.ml, config/arm/neon.ml,
3960         config/arm/vec-common.md, config/ia64/div.md, cselib.c,
3961         df-core.c, df.h, dominance.c, optabs.c, opts.c, reg-stack.c,
3962         regstat.c, target.h, tree-ssa-live.c, tree-ssa-pre.c,
3963         tree-vect-transform.c, tree.def: Fix comment typos.  Follow
3964         spelling conventions.
3965         * doc/invoke.texi: Follow spelling conventions.
3966
3967 2007-07-29  Vladimir Yanovsky  <yanov@il.ibm.com>
3968             Revital Eres  <eres@il.ibm.com>
3969
3970         * modulo-sched.c (sms_schedule): Avoid loops which includes
3971         auto-increment instructions.
3972
3973 2007-07-28  Richard Guenther  <rguenther@suse.de>
3974
3975         PR middle-end/32920
3976         * fold-const.c (fold_cond_expr_with_comparison): Convert
3977         operand zero of MIN/MAX_EXPR to correct type.
3978
3979 2007-07-28  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
3980
3981         * calls.c (special_function_p, setjmp_call_p, alloca_call_p,
3982         flags_from_decl_or_type): Constify.
3983         * gcc.c (do_spec_1): Likewise.
3984         * print-tree.c (dump_addr, print_node_brief): Likewise.
3985         * tree-cfg.c (stmt_starts_bb_p, is_ctrl_stmt, computed_goto_p,
3986         simple_goto_p, tree_can_make_abnormal_goto, stmt_starts_bb_p,
3987         tree_purge_all_dead_eh_edges): Likewise.
3988         * tree-flow.h (is_ctrl_stmt, computed_goto_p, simple_goto_p,
3989         tree_can_make_abnormal_goto, tree_purge_all_dead_eh_edges):
3990         Likewise. 
3991         * tree.c (expr_location, expr_has_location, expr_locus,
3992         expr_filename, expr_lineno, get_inner_array_type,
3993         fields_compatible_p): Likewise.
3994         * tree.h (get_inner_array_type, fields_compatible_p,
3995         expr_location, expr_has_location, expr_locus, expr_filename,
3996         expr_lineno, dump_addr, print_node_brief, flags_from_decl_or_type,
3997         setjmp_call_p, alloca_call_p): Likewise.
3998
3999 2007-07-28  Daniel Berlin  <dberlin@dberlin.org>
4000
4001         * timevar.def: Add TV_CALL_CLOBBER, TV_FLOW_SENSITIVE,
4002         TV_FLOW_INSENSITIVE.
4003
4004         * tree-ssa-alias.c (compute_call_clobbered): Push/pop
4005         TV_CALL_CLOBBER.
4006         (compute_flow_sensitive_aliasing): Ditto for TV_FLOW_SENSITIVE.
4007         (compute_flow_insensitive_aliasing): Ditto for
4008         TV_FLOW_INSENSITIVE.    
4009
4010 2007-07-27  Jan Hubicka  <jh@suse.cz>
4011
4012         * config/i386/i386.c (register_move_cost): Remove accidentally
4013         comitted #if 0 block.
4014
4015         * attribs.c: Include hashtab.h
4016         (attribute_hash): New.
4017         (substring): New structure.
4018         (extract_attribute_substring, substring_hash, hash_attr, eq_attr):
4019         New function.
4020         (init_attributes): Initialize attribute hash.
4021         (decl_attributes): Use attribute hash.
4022         * Makefile.in (attribs.c): Depend on hashtab.h.
4023
4024 2007-07-27  Steve Ellcey  <sje@cup.hp.com>
4025
4026         * config/ia64/vect.md (vec_initv2si): Remove bad BIG_ENDIAN test.
4027
4028 2007-07-27  Richard Sandiford  <richard@codesourcery.com>
4029
4030         * doc/invoke.texi (mdsp, mdspr2): Document the __mips_dsp,
4031         __mips_dspr2 and __mips_dsp_rev macros.
4032         * config/mips/mips.h (TARGET_CPU_CPP_BUILTINS): Define __mips_dsp_rev.
4033
4034 2007-07-27  Douglas Gregor  <doug.gregor@gmail.com>
4035         
4036        * c-common.h (enum rid): Add RID_DECLTYPE, update RID_LAST_CXX0X.
4037
4038 2007-07-26  Kenneth Zadeck <zadeck@naturalbridge.com>
4039
4040         PR middle-end/32749
4041         
4042         * df-problems.c (df_create_unused_note): Removed do_not_gen parm
4043         and the updating of the live and do_not_gen sets.
4044         (df_note_bb_compute): Added updating of live and do_not_gen sets
4045         for regular defs so that the case of clobber inside conditional
4046         call is processed correctly.
4047         
4048 2007-07-27  Zdenek Dvorak  <dvorakz@suse.cz>
4049
4050         * config/rs6000/rs6000.c (rs6000_gimplify_va_arg): Generate the
4051         operands with compatible type.
4052
4053 2007-07-27  Richard Sandiford  <richard@codesourcery.com>
4054
4055         * expr.h (store_bit_field): Don't return a value.
4056         * expmed.c (check_predicate_volatile_ok): New function.
4057         (store_bit_field_1): New function, extracted from store_bit_field.
4058         Take a fallback_p argument and return true if the operation succeeded.
4059         Only use store_fixed_bit_field if fallback_p.  Don't recompute
4060         mode_for_extraction; use op_mode instead.  Try forcing memories
4061         into registers if the insv expander fails.
4062         (store_bit_field): Use store_bit_field_1 with fallback_p true.
4063         Don't return a value.
4064         (convert_extracted_bit_field): New function, extracted from
4065         store_bit_field.
4066         (extract_bit_field_1): Likewise.  Take a fallback_p argument
4067         and return NULL if the operation succeeded.  Only use
4068         extract_fixed_bit_field if fallback_p.  Only calculate one
4069         extraction mode.  Combine code for extv and extzv.  Try forcing
4070         memories into registers if the ext(z)v expander fails.
4071         (extract_bit_field): Use extract_bit_field_1 with fallback_p true.
4072
4073 2007-07-27  Richard Sandiford  <rsandifo@nildram.co.uk>
4074
4075         * df.h (df_mw_hardreg): Turn df_ref_type and df_ref_flags
4076         into bitfields.
4077         (df_ref): Likewise.  Put regno with other integer fields.
4078
4079 2007-07-27  Richard Sandiford  <rsandifo@nildram.co.uk>
4080
4081         * df.h (df_mw_hardreg): Remove "loc" field.
4082         * df-scan.c (df_ref_record): Don't set it.  Remove redundant
4083         local variable.
4084         * df-problems.c (df_whole_mw_reg_unused_p): New function,
4085         split out from df_set_unused_notes_for_mw.  Return false for
4086         partial references.  Assert that mw_reg is a REG when returning true.
4087         (df_set_unused_notes_for_mw): Use it.  Use mw_reg instead of *loc.
4088         (df_whole_mw_reg_dead_p): New function, split out from
4089         df_set_dead_notes_for_mw.  Return false for partial references.
4090         Assert that mw_reg is a REG when returning true.
4091         (df_set_dead_notes_for_mw): Use it.  Use mw_reg instead of *loc.
4092         Remove redundant bitmap check.
4093
4094 2007-07-26  H.J. Lu  <hongjiu.lu@intel.com>
4095
4096         * config/ia64/t-ia64 ($(T)crtbegin.o): Removed.
4097         ($(T)crtend.o): Likwise.
4098         ($(T)crtbeginS.o): Likwise.
4099         ($(T)crtendS.o): Likwise.
4100         ($(T)crtfastmath.o): Likwise.
4101
4102 2007-07-26  Zdenek Dvorak  <dvorakz@suse.cz>
4103
4104         * dominance.c (dom_computed, n_bbs_in_dom_tree): Removed.
4105         * function.h (dom_computed, n_bbs_in_dom_tree): New macros.
4106         * basic-block.h (struct control_flow_graph): Added x_dom_computed
4107         and x_n_bbs_in_dom_tree fields.
4108
4109 2007-07-26  Steve Ellcey  <sje@cup.hp.com>
4110
4111         PR tree-optimization/32087
4112         * tree-ssa-loop-manip.c (tree_transform_and_unroll_loop):
4113         Do not call scale_bbs_frequencies_int with prob of zero.
4114
4115 2007-07-26  Julian Brown  <julian@codesourcery.com>
4116
4117         * config/arm/arm-protos.h (neon_lane_bounds, neon_const_bounds)
4118         (neon_element_bits): Add prototypes.
4119         * config/arm/arm.c (bounds_check, neon_lane_bounds)
4120         (neon_const_bounds, neon_element_bits): New functions.
4121         * config/arm/neon.md (neon_vget_lane<mode>, neon_vget_lanedi)
4122         (neon_vget_lanev2di, neon_vset_lane<mode>, neon_vset_lanedi)
4123         (neon_vset_lanev2di, neon_vdup_lane<mode>, neon_vdup_lanedi)
4124         (neon_vdup_lanev2di, neon_vcvt_n<mode>, neon_vmul_lane<mode>)
4125         (neon_vmull_lane<mode>, neon_vqdmull_lane<mode>)
4126         (neon_vqdmulh_lane<mode>, neon_vmla_lane<mode>)
4127         (neon_vmlal_lane<mode>, neon_vqdmlal_lane<mode>)
4128         (neon_vmls_lane<mode>, neon_vmlsl_lane<mode>)
4129         (neon_vqdmlsl_lane<mode>, neon_vext<mode>, neon_vshr_n<mode>)
4130         (neon_vshrn_n<mode>, neon_vqshrn_n<mode>, neon_vqshrun_n<mode>)
4131         (neon_vshl_n<mode>, neon_vshl_n<mode>, neon_vqshl_n<mode>)
4132         (neon_vqshlu_n<mode>, neon_vshll_n<mode>, neon_vsra_n<mode>)
4133         (neon_vsri_n<mode>, neon_vsli_n<mode>): Add bounds checks.
4134
4135 2007-07-26  Nathan Froyd  <froydnj@codesourcery.com>
4136
4137         * config/vxworks.h (VXWORKS_LINK_SPEC): Fix typo.
4138         (HAVE_AS_GNU_ATTRIBUTE): Undefine.
4139
4140 2007-07-26  Mark Shinwell  <shinwell@codesourcery.com>
4141             Julian Brown  <julian@codesourcery.com>
4142
4143         * config/arm/arm.c (arm_mac_accumulator_is_mul_result): New.
4144         * config/arm/arm-protos.h (arm_mac_accumulator_is_mul_result): New.
4145         * config/arm/cortex-a8.md: New.
4146         * config/arm/cortex-a8-neon.md: New.
4147         * config/arm/neon-schedgen.ml: New.
4148         * config/arm/neon.md (vqh_mnem): New.
4149         (neon_type): New.
4150         (Is_float_mode): New.
4151         (Scalar_mul_8_16): New.
4152         (Is_d_reg): New.
4153         (V_mode_nunits): New.
4154         (All instruction patterns): Annotate with neon_type attribute
4155         values.
4156         * config/arm/arm.md: Include cortex-a8.md.
4157         (insn): Add smmla, umaal, smlald, smlsld, clz, mrs, msr and xtab
4158         values.
4159         Annotate instruction patterns accordingly.
4160         (generic_sched): Do not use generic scheduling for Cortex-A8.
4161         (generic_vfp): Do not use generic VFP scheduling for Cortex-A8.
4162
4163 2007-07-26  Daniel Jacobowitz  <dan@codesourcery.com>
4164
4165         * fold-const.c (fold_read_from_constant_string): Use
4166         build_int_cst_type.
4167         * tree-ssa-ccp.c (fold_const_aggregate_ref): Likewise.
4168
4169 2007-07-26  Nick Clifton  <nickc@redhat.com>
4170
4171         * tree-ssa-operands.h: Change copyright header to refer to version
4172         3 of the GNU General Public License and to point readers at the
4173         COPYING3 file and the FSF's license web page.
4174         * tree-vrp.c, regrename.c, attribs.c, loop-unswitch.c,
4175         sched-ebb.c, fwprop.c, tree-loop-linear.c, dwarf2asm.c,
4176         tree-into-ssa.c, dwarf2asm.h, tree-ssa-loop-im.c, sbitmap.c,
4177         targhooks.c, tree-dump.c, tree-complex.c, sbitmap.h, targhooks.h,
4178         tree-dump.h, regstat.c, see.c, machmode.h, hooks.c, cgraphbuild.c,
4179         hooks.h, genrecog.c, tree-ssa-threadupdate.c, gen-protos.c,
4180         flags.h, rtlhooks.c, gencheck.c, tree-ssa-loop-niter.c,
4181         opts-common.c, dbgcnt.def, tree-pretty-print.c, tracer.c,
4182         gengtype.c, mkconfig.sh, gengtype.h, tree-ssa-loop-unswitch.c,
4183         cgraph.c, c-lex.c, cgraph.h, libfuncs.h, cfgloopmanip.c,
4184         rtl-error.c, optabs.c, postreload-gcse.c, tree-ssa-loop-manip.c,
4185         optabs.h, genmddeps.c, defaults.h, postreload.c, value-prof.c,
4186         tree-ssa-loop-ch.c, tree-tailcall.c, gengenrtl.c, value-prof.h,
4187         genopinit.c, tree.c, tree.h, reload.c, tree-pass.h, ipa-cp.c,
4188         reload.h, bitmap.c, bitmap.h, tree-scalar-evolution.c,
4189         c-config-lang.in, tree-scalar-evolution.h, target.h, cppspec.c,
4190         rtlanal.c, ddg.c, lambda-mat.c, mips-tdump.c, ddg.h,
4191         tree-phinodes.c, mips-tfile.c, pointer-set.c, pointer-set.h,
4192         diagnostic.c, final.c, diagnostic.h, builtins.c, genoutput.c,
4193         gcc.c, lists.c, tree-ssa-alias-warnings.c, gcc.h, cfghooks.c,
4194         input.h, gensupport.c, fold-const.c, cfghooks.h, insn-notes.def,
4195         gensupport.h, builtin-attrs.def, sync-builtins.def, params.c,
4196         cfgloopanal.c, params.h, graphds.c, omp-low.c, tree-ssa-dse.c,
4197         graphds.h, gcov.c, cfg.c, genextract.c, ipa-reference.c,
4198         genautomata.c, tree-ssa-uncprop.c, auto-inc-dec.c, toplev.c,
4199         tree-gimple.c, ipa-reference.h, vmsdbgout.c, errors.c, toplev.h,
4200         reorg.c, tree-gimple.h, tree-chrec.c, pretty-print.c, errors.h,
4201         real.c, tree-chrec.h, pretty-print.h, debug.c, real.h, genemit.c,
4202         omega.c, c-cppbuiltin.c, genmultilib, debug.h, omega.h,
4203         tree-ssa-sccvn.c, genconfig.c, tree-ssa-sccvn.h, cgraphunit.c,
4204         regs.h, df-scan.c, vec.c, hosthooks-def.h, vec.h,
4205         tree-ssa-copyrename.c, scan.c, builtin-types.def, tree-ssa-ccp.c,
4206         scan.h, mode-classes.def, haifa-sched.c, dominance.c, dojump.c,
4207         double-int.c, gcov-io.c, dbxout.c, builtins.def, double-int.h,
4208         dbxout.h, tree-ssa-loop-ivopts.c, df-core.c, mode-switching.c,
4209         gengtype-lex.l, tree-nomudflap.c, modulo-sched.c, c-objc-common.c,
4210         hosthooks.h, c-objc-common.h, caller-save.c, graph.c,
4211         ipa-pure-const.c, graph.h, c-format.c, cse.c, fix-header.c,
4212         c-format.h, web.c, tree-stdarg.c, genpeep.c, tree-stdarg.h,
4213         tree-ssa-math-opts.c, xcoffout.c, tree-ssa-dom.c, tree-nrv.c,
4214         xcoffout.h, tree-ssa-propagate.c, ipa-utils.c,
4215         tree-ssa-propagate.h, tree-ssa-alias.c, loop-init.c, ipa-utils.h,
4216         gimple-low.c, rtl.def, c-tree.h, tree-ssa-sink.c, ipa-inline.c,
4217         mkmap-symver.awk, machmode.def, c-pch.c, cfganal.c, global.c,
4218         alloc-pool.c, c-semantics.c, alloc-pool.h, jump.c, ifcvt.c,
4219         dwarf2out.c, expr.c, cfgbuild.c, tree-browser.c, dwarf2out.h,
4220         expr.h, longlong.h, opts.c, gcov-iov.c, opts.h, dwarf2.h,
4221         genattrtab.c, genconditions.c, genattr.c, optc-gen.awk,
4222         timevar.def, tree-ssa-loop-ivcanon.c, hard-reg-set.h, predict.c,
4223         tree-ssa-loop.c, host-default.c, predict.h, recog.c, dbgcnt.c,
4224         recog.h, dbgcnt.h, c-aux-info.c, tree-ssa-address.c, timevar.c,
4225         dse.c, lcm.c, tree-ssa-ifcombine.c, timevar.h, dse.h,
4226         matrix-reorg.c, tree-vn.c, treestruct.def, fp-test.c, c-decl.c,
4227         tree-eh.c, c-errors.c, c-pretty-print.c, regmove.c,
4228         lambda-trans.c, c-pretty-print.h, et-forest.c, et-forest.h,
4229         ebitmap.c, configure.ac, local-alloc.c, function.c, langhooks.c,
4230         ebitmap.h, cppdefault.c, tree-vectorizer.c, function.h,
4231         langhooks.h, print-rtl.c, cppdefault.h, df.h, tree-vectorizer.h,
4232         sdbout.c, stor-layout.c, sdbout.h, rtlhooks-def.h, read-rtl.c,
4233         gcse.c, ipa-type-escape.c, vmsdbg.h, alias.c, gengtype-parse.c,
4234         ipa-type-escape.h, domwalk.c, alias.h, tree-if-conv.c, profile.c,
4235         init-regs.c, domwalk.h, ipa.c, gccbug.in, tree-data-ref.c,
4236         loop-unroll.c, tree-data-ref.h, tree-flow-inline.h, tree-affine.c,
4237         mkmap-flat.awk, tree-affine.h, tree-vect-analyze.c, c.opt, ggc.h,
4238         opt-gather.awk, c-typeck.c, gimplify.c, coretypes.h, exec-tool.in,
4239         insn-addr.h, tree-ssa-phiopt.c, c-pragma.c, c-pragma.h, calls.c,
4240         tree-ssa-coalesce.c, genmodes.c, loop-doloop.c, predict.def,
4241         dwarf.h, tree.def, rtl-factoring.c, lower-subreg.c, expmed.c,
4242         bt-load.c, ggc-common.c, genflags.c, tree-dfa.c, except.c,
4243         coverage.c, except.h, emit-rtl.c, cfgexpand.c, coverage.h,
4244         stringpool.c, cselib.c, emit-rtl.h, tree-cfgcleanup.c, c-opts.c,
4245         cselib.h, cfgcleanup.c, simplify-rtx.c, tree-ssa-pre.c, explow.c,
4246         tree-ssa-live.c, tree-sra.c, tree-ssa-live.h, tree-predcom.c,
4247         loop-invariant.c, genpreds.c, protoize.c, opth-gen.awk, c-dump.c,
4248         lambda.h, loop-iv.c, tree-mudflap.c, ipa-prop.c, print-tree.c,
4249         tree-mudflap.h, tree-ssa-copy.c, ipa-prop.h, cfglayout.c,
4250         tree-ssa-forwprop.c, c-convert.c, cfglayout.h, common.opt,
4251         ggc-zone.c, ggc-page.c, c-omp.c, tree-ssa-dce.c, gencodes.c,
4252         varasm.c, tree-vect-patterns.c, libada-mk.in, tree-ssa-ter.c,
4253         sched-deps.c, tree-nested.c, c-ppoutput.c, tree-ssa.c,
4254         target-def.h, tree-ssa-loop-prefetch.c, lambda-code.c,
4255         omp-builtins.def, rtl.c, regclass.c, stab.def, intl.c, rtl.h,
4256         intl.h, tree-inline.c, conditions.h, tree-inline.h, integrate.c,
4257         sched-int.h, tree-iterator.c, integrate.h, tree-iterator.h,
4258         genchecksum.c, tree-optimize.c, output.h, tree-vect-transform.c,
4259         tree-object-size.c, combine.c, tree-outof-ssa.c, addresses.h,
4260         bb-reorder.c, stack-ptr-mod.c, resource.c, var-tracking.c,
4261         cfgloop.c, system.h, resource.h, ggc-none.c, tree-profile.c,
4262         cfgloop.h, c-gimplify.c, c-common.c, opt-functions.awk,
4263         tree-vect-generic.c, tree-flow.h, df-problems.c, scan-decls.c,
4264         c-common.h, config.gcc, reg-stack.c, tlink.c, main.c, stub-objc.c,
4265         fixproto, config.host, Makefile.in, gccspec.c, sched-rgn.c,
4266         vecprim.h, basic-block.h, tree-ssa-structalias.c,
4267         tree-ssa-structalias.h, c-common.def, sched-vis.c, tree-cfg.c,
4268         passes.c, genconstants.c, c-incpath.c, c-incpath.h,
4269         struct-equiv.c, c-parser.c, tree-ssa-reassoc.c, varray.c, sreal.c,
4270         varray.h, dfp.c, sreal.h, combine-stack-adj.c, dfp.h,
4271         reg-notes.def, cfgrtl.c, config.build, varpool.c, gengtype-yacc.y,
4272         stmt.c, dce.c, tree-browser.def, prefix.c, statistics.h,
4273         params.def, dce.h, c-lang.c, gcov-dump.c, prefix.h,
4274         tree-ssanames.c, collect2.c, collect2.h, tree-ssa-threadedge.c,
4275         convert.c, convert.h, langhooks-def.h, reload1.c,
4276         tree-ssa-operands.c: Likewise.
4277
4278 2007-07-26  Jan Hubicka  <jh@suse.cz>
4279
4280         * tree-ssa-live.c: Include debug.h and flags.h.
4281         (mark_scope_block_unused): New function.
4282         (remove_unused_scope_block_p): New function.
4283         (remove_unused_locals): Remove unused blocks too.
4284
4285 2007-07-25  Ian Lance Taylor  <iant@google.com>
4286
4287         * combine.c (combine_max_regno): Remove.  Remove all uses.
4288         (struct reg_stat_struct): Rename from struct reg_stat.
4289         (reg_stat_type): Define, and declare VECs.
4290         (reg_stat): Change from pointer to VEC.  Change all uses.
4291         (combine_split_insns): New static function.
4292         (try_combine, find_split_point): Call it instead of split_insns.
4293
4294 2007-07-25  Zdenek Dvorak  <dvorakz@suse.cz>
4295
4296         * cfghooks.c (split_block): Fix the information about loop latch.
4297
4298 2007-07-25  Zdenek Dvorak  <dvorakz@suse.cz>
4299
4300         * cfgloopmanip.c (fix_loop_structure): Call force_single_succ_latches.
4301
4302 2007-07-25  Zdenek Dvorak  <dvorakz@suse.cz>
4303
4304         * tree-ssa-threadupdate.c (create_edge_and_update_destination_phis):
4305         Scan the new edge for loop exit info.
4306
4307 2007-07-25  Andreas Tobler  <a.tobler@schweiz.org>
4308
4309         * config/darwin.c: Include debug.h.
4310
4311 2007-07-25  Steve Ellcey  <sje@cup.hp.com>
4312
4313         PR target/32218
4314         * tree-vect-patterns.c (vect_pattern_recog_1): Check for valid type.
4315
4316 2007-07-25  Steve Ellcey  <sje@cup.hp.com>
4317
4318         * config/ia64/ia64.h (HARD_REGNO_NREGS): Handle RFmode.
4319         (HARD_REGNO_MODE_OK): Ditto.
4320         (MODES_TIEABLE_P): Ditto.
4321         (HARD_REGNO_CALLER_SAVE_MODE): Ditto.
4322         (CLASS_MAX_NREGS): Ditto.
4323         * config/ia64/ia64.c (ia64_print_operand_address): Add R format.
4324         * config/ia64/ia64.md (divsf3_internal_thr): Removed.
4325         (divdf3_internal_thr): Removed.
4326         * config/ia64/div.md: New file.
4327         * config/ia64/constraints.md: Add H constraint.
4328
4329 2007-07-25  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
4330
4331         * sbitmap.c (sbitmap_verify_popcount, sbitmap_alloc_with_popcount,
4332         sbitmap_copy, sbitmap_copy_n, sbitmap_equal, sbitmap_empty_p,
4333         sbitmap_union_of_diff_cg, sbitmap_union_of_diff, sbitmap_not,
4334         sbitmap_difference, sbitmap_any_common_bits, sbitmap_a_and_b_cg,
4335         sbitmap_a_and_b, sbitmap_a_xor_b_cg, sbitmap_a_xor_b,
4336         sbitmap_a_or_b_cg, sbitmap_a_or_b, sbitmap_a_subset_b_p,
4337         sbitmap_a_or_b_and_c_cg, sbitmap_a_or_b_and_c,
4338         sbitmap_a_and_b_or_c_cg, sbitmap_a_and_b_or_c,
4339         sbitmap_first_set_bit, sbitmap_last_set_bit, dump_sbitmap,
4340         dump_sbitmap_file, debug_sbitmap, popcount_table,
4341         sbitmap_popcount): Constify.
4342         * sbitmap.h (const_sbitmap, const_sbitmap_ptr): New.
4343         (sbitmap_iterator, sbitmap_iter_init, dump_sbitmap,
4344         dump_sbitmap_file, sbitmap_copy, sbitmap_copy_n, sbitmap_equal,
4345         sbitmap_empty_p, sbitmap_union_of_diff, sbitmap_union_of_diff_cg,
4346         sbitmap_difference, sbitmap_not, sbitmap_a_or_b_and_c,
4347         sbitmap_a_or_b_and_c_cg, sbitmap_a_and_b_or_c,
4348         sbitmap_a_and_b_or_c_cg, sbitmap_any_common_bits, sbitmap_a_and_b,
4349         sbitmap_a_and_b_cg, sbitmap_a_or_b, sbitmap_a_or_b_cg,
4350         sbitmap_a_xor_b, sbitmap_a_xor_b_cg, sbitmap_a_subset_b_p,
4351         sbitmap_first_set_bit, sbitmap_last_set_bit, debug_sbitmap,
4352         sbitmap_popcount, sbitmap_verify_popcount): Constify.
4353
4354 2007-07-25  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
4355
4356         * bitmap.c (hash_descriptor, eq_descriptor, bitmap_element_zerop,
4357         bitmap_copy, bitmap_clear_bit, popcount_table, bitmap_count_bits,
4358         bitmap_first_set_bit, bitmap_and, bitmap_and_into,
4359         bitmap_elt_copy, bitmap_and_compl, bitmap_and_compl_into,
4360         bitmap_compl_and_into, bitmap_elt_ior, bitmap_ior,
4361         bitmap_ior_into, bitmap_xor, bitmap_xor_into, bitmap_equal_p,
4362         bitmap_intersect_p, bitmap_intersect_compl_p,
4363         bitmap_ior_and_compl, bitmap_ior_and_compl_into,
4364         debug_bitmap_file, debug_bitmap, bitmap_print, bitmap_hash):
4365         Constify.
4366         * bitmap.h (bitmap_copy, bitmap_equal_p, bitmap_intersect_p,
4367         bitmap_intersect_compl_p, bitmap_count_bits, bitmap_and,
4368         bitmap_and_into, bitmap_and_compl, bitmap_and_compl_into,
4369         bitmap_compl_and_into, bitmap_ior, bitmap_ior_into, bitmap_xor,
4370         bitmap_xor_into, bitmap_ior_and_compl, bitmap_ior_and_compl_into,
4371         debug_bitmap, debug_bitmap_file, bitmap_print,
4372         bitmap_first_set_bit, bitmap_hash, bmp_iter_set_init,
4373         bmp_iter_and_init, bmp_iter_and_compl_init): Likewise.
4374
4375 2007-07-25  Daniel Berlin  <dberlin@dberlin.org>
4376
4377         * config/darwin.c (darwin_override_options): Additional fix for
4378         debug info formats that don't support var tracking.
4379
4380 2007-07-25  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
4381
4382         * cselib.c (entry_and_rtx_equal_p): Constify.
4383         * gengtype.c (output_mangled_typename, write_types, write_local):
4384         Likewise.
4385         * gengtype.h (const_type_p): New.
4386         * see.c (eq_descriptor_extension, hash_descriptor_extension):
4387         Constify.
4388         * tlink.c (scan_linker_output): De-constify.
4389         * tree-ssa-loop-im.c (memref_eq): Constify.
4390         * tree-ssa-structalias.c (const_shared_bitmap_info_t): New.
4391         (shared_bitmap_hash, shared_bitmap_eq): Constify.
4392
4393 2007-07-25  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
4394
4395         * c-common.c (fname_as_string, c_type_hash): Constify.
4396         * c-typeck.c (free_all_tagged_tu_seen_up_to): Likewise.
4397         * cgraph.c (edge_hash, edge_eq): Likewise.
4398         * dwarf2out.c (decl_die_table_eq, decl_loc_table_eq): Likewise.
4399         * emit-rtl.c (mem_attrs_htab_eq, reg_attrs_htab_hash,
4400         reg_attrs_htab_eq): Likewise.
4401         * except.c (t2r_eq, t2r_hash, ttypes_filter_eq, ehl_hash, ehl_eq):
4402         Likewise.
4403         * genautomata.c (const_reserv_sets_t, const_unit_decl_t,
4404         const_decl_t, const_state_t, const_automata_list_el_t): New.
4405         (first_out_arc, DECL_UNIT, DECL_BYPASS, DECL_AUTOMATON, DECL_EXCL,
4406         DECL_PRESENCE, DECL_ABSENCE, DECL_RESERV, DECL_INSN_RESERV,
4407         automaton_decl_hash, automaton_decl_eq_p, insn_decl_hash,
4408         insn_decl_eq_p, decl_hash, decl_eq_p, alt_state_cmp,
4409         reserv_sets_cmp, reserv_sets_eq, state_hash, state_eq_p,
4410         automata_list_hash, automata_list_eq_p, compare_states_for_equiv,
4411         compare_max_occ_cycle_nums, out_state_arcs_num,
4412         compare_transition_els_num, units_cmp, state_reservs_cmp):
4413         Constify.
4414         * genmodes.c (cmp_modes): Likewise.
4415         * ggc-common.c (saving_htab_hash, saving_htab_eq): Likewise.
4416         * gimplify.c (compare_case_labels): Likewise.
4417         * ipa-type-escape.c (get_name_of_type, type_brand_s): Likewise.
4418         * loop-unroll.c (si_info_hash, ve_info_hash): Likewise.
4419         * matrix-reorg.c (mtt_info_hash): Likewise.
4420         * postreload-gcse.c (hash_expr_for_htab, expr_equiv_p): Likewise.
4421         * rtl-factoring.c (const_p_hash_bucket, const_p_hash_elem): New.
4422         (htab_hash_bucket, htab_hash_elem): Constify.
4423         * tree-browser.c (TB_parent_eq): Likewise.
4424         * tree-scalar-evolution.c (hash_scev_info): Likewise.
4425         * tree-ssa-alias.c (sort_tags_by_id): Likewise.
4426         * tree-ssa-coalesce.c (const_coalesce_pair_p): New.
4427         (coalesce_pair_map_hash, coalesce_pair_map_eq, compare_pairs):
4428         Constify.
4429         * tree-ssa-dom.c (avail_expr_hash, avail_expr_eq): Likewise.
4430         * tree-ssa-pre.c (const_expr_pred_trans_t): New.
4431         (expr_pred_trans_hash, expr_pred_trans_eq): Constify.
4432         * tree-ssa-sccvn.c (const_vn_binary_op_t, const_vn_unary_op_t,
4433         const_vn_phi_t, const_vn_reference_op_t, const_vn_reference_t):
4434         New.
4435         (vn_reference_op_eq, vn_reference_hash, vn_reference_eq,
4436         vn_unary_op_hash, vn_unary_op_eq, vn_binary_op_hash,
4437         vn_binary_op_eq, vn_phi_hash, vn_phi_eq): Constify.
4438         * tree-ssa-threadupdate.c (redirection_data_hash,
4439         redirection_data_eq): Likewise. 
4440         * tree-ssa-uncprop.c (equiv_hash, equiv_eq): Likewise.
4441         * tree-ssa.c (var_ann_eq): Likewise.
4442         * tree-vrp.c (compare_case_labels): Likewise.
4443         * tree.c (int_cst_hash_hash, int_cst_hash_eq,
4444         tree_map_base_marked_p, type_hash_marked_p, tree_check_failed,
4445         tree_not_check_failed, tree_class_check_failed,
4446         tree_range_check_failed, tree_not_class_check_failed,
4447         omp_clause_check_failed, omp_clause_range_check_failed,
4448         tree_contains_struct_check_failed, tree_operand_check_failed):
4449         Likewise. 
4450         * tree.h (tree_contains_struct_check_failed, tree_check_failed,
4451         tree_not_check_failed, tree_class_check_failed,
4452         tree_range_check_failed, tree_not_class_check_failed,
4453         tree_operand_check_failed, omp_clause_operand_check_failed,
4454         tree_operand_length): Likewise. 
4455         * var-tracking.c (const_variable): New.
4456         (variable_htab_hash, variable_htab_eq): Constify.
4457         * varasm.c (const_desc_hash): Likewise.
4458
4459 2007-07-25  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
4460
4461         * expr.c (handled_component_p): Constify.
4462         * fold-const.c (fit_double_type): Likewise.
4463         * real.h (real_value_from_int_cst): Likewise.
4464         * tree-flow-inline.h (gimple_in_ssa_p,
4465         gimple_aliases_computed_p, gimple_addressable_vars,
4466         gimple_call_clobbered_vars, gimple_referenced_vars,
4467         gimple_global_var, gimple_nonlocal_all, gimple_var_anns,
4468         end_htab_p, end_referenced_vars_p, var_ann, function_ann,
4469         may_aliases, end_readonly_imm_use_p, has_zero_uses,
4470         has_single_use, single_imm_use, num_imm_uses, is_exec_stmt,
4471         is_label_stmt, is_global_var, phi_ssa_name_p,
4472         factoring_name_p, is_call_clobbered, tree_common_ann,
4473         op_iter_done, end_imm_use_stmt_p, end_imm_use_on_stmt_p,
4474         unmodifiable_var_p, array_ref_contains_indirect_ref,
4475         ref_contains_array_ref, lookup_subvars_for_var,
4476         var_can_have_subvars, overlap_subvar, gimple_ssa_operands,
4477         gimple_mem_ref_stats): Likewise.
4478         * tree-flow.h (tree_common_ann, var_ann, function_ann,
4479         may_aliases, is_exec_stmt, is_label_stmt,
4480         ref_contains_array_ref, array_ref_contains_indirect_ref,
4481         var_can_have_subvars, overlap_subvar, is_call_clobbered,
4482         unmodifiable_var_p): Likewise.
4483         * tree-gimple.c (is_gimple_min_invariant): Likewise.
4484         * tree-gimple.h (is_gimple_min_invariant): Likewise. 
4485         * tree.c (type_hash_list, attribute_hash_list, tree_size,
4486         cst_and_fits_in_hwi, real_value_from_int_cst,
4487         build_real_from_int_cst, integer_zerop, integer_onep,
4488         integer_all_onesp, integer_pow2p, integer_nonzerop, tree_log2,
4489         tree_floor_log2, real_zerop, real_onep, real_twop,
4490         real_minus_onep, really_constant_p, purpose_member, chain_member,
4491         list_length, fields_length, int_size_in_bytes, bit_position,
4492         int_bit_position, byte_position, int_byte_position, expr_align,
4493         array_type_nelts, tree_node_structure,
4494         type_contains_placeholder_1, iterative_hash_pointer,
4495         is_attribute_with_length_p, is_attribute_p, check_qualified_type,
4496         tree_map_base_eq, type_hash_list, type_hash_eq,
4497         attribute_hash_list, type_num_arguments, tree_int_cst_equal,
4498         tree_int_cst_lt, tree_int_cst_compare, host_integerp,
4499         tree_low_cst, tree_int_cst_msb, tree_int_cst_sgn,
4500         simple_cst_list_equal, compare_tree_int, iterative_hash_expr,
4501         int_fits_type_p, get_containing_scope, decl_function_context,
4502         decl_type_context, omp_clause_operand_check_failed,
4503         initializer_zerop, int_cst_value, num_ending_zeros): Likewise.
4504         * tree.h (omp_clause_operand_check_failed, tree_size,
4505         build_real_from_int_cst, array_type_nelts, purpose_member,
4506         tree_int_cst_equal, tree_int_cst_lt, tree_int_cst_compare,
4507         host_integerp, tree_low_cst, tree_int_cst_msb, tree_int_cst_sgn,
4508         is_attribute_p, check_qualified_type, expr_align,
4509         int_size_in_bytes, bit_position, int_bit_position, byte_position,
4510         int_byte_position, list_length, fields_length, initializer_zerop,
4511         integer_zerop, integer_onep, integer_all_onesp, integer_pow2p,
4512         integer_nonzerop, cst_and_fits_in_hwi, num_ending_zeros,
4513         tree_node_structure, handled_component_p, get_containing_scope,
4514         decl_function_context, decl_type_context, real_zerop,
4515         type_num_arguments, fit_double_type, really_constant_p,
4516         int_fits_type_p, tree_log2, tree_floor_log2, iterative_hash_expr,
4517         compare_tree_int, chain_member, simple_cst_list_equal, real_onep,
4518         real_twop, real_minus_onep, int_cst_value): Likewise.
4519
4520 2007-07-25  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
4521
4522         * cfglayout.c (insn_scope, insn_line): Constify.
4523         * emit-rtl.c (const_int_htab_hash, const_int_htab_eq,
4524         const_double_htab_hash, const_double_htab_eq,
4525         mem_attrs_htab_hash): Likewise.
4526         * loop-iv.c (biv_eq): Likewise.
4527         * print-rtl.c (print_rtx, print_decl_name, print_mem_expr,
4528         print_inline_rtx, debug_rtx, debug_rtx_list, debug_rtx_range,
4529         debug_rtx_find, print_rtl, print_rtl_single, print_simple_rtl):
4530         Likewise. 
4531         * rtl-error.c (location_for_asm, diagnostic_for_asm,
4532         error_for_asm, warning_for_asm, _fatal_insn,
4533         _fatal_insn_not_found): Likewise. 
4534         * rtl.c (rtx_size, shared_const_p, shallow_copy_rtx_stat,
4535         rtx_equal_p, rtl_check_failed_bounds, rtl_check_failed_type1,
4536         rtl_check_failed_type2, rtl_check_failed_code1,
4537         rtl_check_failed_code2, rtl_check_failed_code_mode,
4538         rtvec_check_failed_bounds, rtl_check_failed_flag): Likewise.
4539         * rtl.h (rtl_check_failed_bounds, rtl_check_failed_type1,
4540         rtl_check_failed_type2, rtl_check_failed_code1,
4541         rtl_check_failed_code2, rtl_check_failed_code_mode,
4542         rtvec_check_failed_bounds, rtl_check_failed_flag, LABEL_KIND,
4543         SET_LABEL_KIND, rhs_regno, subreg_lsb, subreg_regno, subreg_nregs,
4544         shared_const_p, rtx_size, shallow_copy_rtx_stat, rtx_equal_p,
4545         get_pool_mode, insn_line, insn_file, simplify_replace_rtx,
4546         mode_signbit_p, rtx_addr_can_trap_p, nonzero_address_p,
4547         rtx_unstable_p, get_integer_term, get_related_value,
4548         offset_within_block_p, reg_mentioned_p, count_occurrences,
4549         reg_referenced_p, reg_used_between_p, no_labels_between_p,
4550         single_set_2, multiple_sets, set_noop_p, refers_to_regno_p,
4551         reg_overlap_mentioned_p, dead_or_set_p, dead_or_set_regno_p,
4552         find_reg_note, find_regno_note, find_reg_equal_equiv_note,
4553         find_constant_src, find_reg_fusage, find_regno_fusage,
4554         pure_call_p, remove_note, side_effects_p, volatile_refs_p,
4555         volatile_insn_p, may_trap_p, may_trap_after_code_motion_p,
4556         may_trap_or_fault_p, inequality_comparisons_p, tablejump_p,
4557         computed_jump_p, auto_inc_p, in_expr_list_p,
4558         remove_node_from_expr_list, loc_mentioned_in_p,
4559         label_is_jump_target_p, reversed_comparison_code_parts,
4560         debug_rtx, debug_rtx_list, debug_rtx_range, debug_rtx_find,
4561         print_mem_expr, print_rtl, print_simple_rtl, print_rtl_single,
4562         print_inline_rtx): Likewise.
4563         * rtlanal.c (covers_regno_p, covers_regno_no_parallel_p,
4564         computed_jump_p_1, nonzero_bits1, rtx_unstable_p,
4565         rtx_addr_can_trap_p_1, rtx_addr_can_trap_p, nonzero_address_p,
4566         get_integer_term, get_related_value, offset_within_block_p,
4567         count_occurrences, reg_mentioned_p, no_labels_between_p,
4568         reg_used_between_p, reg_referenced_p, single_set_2,
4569         multiple_sets, set_noop_p, refers_to_regno_p,
4570         reg_overlap_mentioned_p, dead_or_set_p,
4571         covers_regno_no_parallel_p, covers_regno_p,
4572         dead_or_set_regno_p, find_reg_note, find_regno_note,
4573         find_reg_equal_equiv_note, find_constant_src, find_reg_fusage,
4574         find_regno_fusage, pure_call_p, remove_note, in_expr_list_p,
4575         remove_node_from_expr_list, volatile_insn_p, volatile_refs_p,
4576         side_effects_p, may_trap_p_1, may_trap_p,
4577         may_trap_after_code_motion_p, may_trap_or_fault_p,
4578         inequality_comparisons_p, tablejump_p, computed_jump_p_1,
4579         computed_jump_p, auto_inc_p, loc_mentioned_in_p, subreg_lsb,
4580         subreg_regno, subreg_nregs, label_is_jump_target_p): Likewise.
4581         * simplify-rtx.c (neg_const_int, plus_minus_operand_p,
4582         mode_signbit_p, simplify_replace_rtx, plus_minus_operand_p):
4583         Likewise. 
4584         * toplev.h (_fatal_insn_not_found, _fatal_insn, error_for_asm,
4585         warning_for_asm): Likewise.
4586         * tree.h (print_rtl): Likewise.
4587         * varasm.c (get_pool_mode): Likewise.
4588
4589 2007-07-25  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
4590
4591         * c-lex.c (c_lex_with_flags, lex_string): Constify.
4592         * c-ppoutput.c (print_line, pp_dir_change): Likewise.
4593         * c-typeck.c (free_all_tagged_tu_seen_up_to): Likewise.
4594         * cfg.c (bb_copy_original_hash, bb_copy_original_eq): Likewise.
4595         * cfgloop.c (loop_exit_hash, loop_exit_eq): Likewise.
4596         * ddg.c (compare_sccs): Likewise.
4597         * df-scan.c (df_ref_compare, df_mw_compare): Likewise.
4598         * dfp.c (decimal_real_from_string, decimal_to_decnumber,
4599         decimal_to_binary, decimal_do_compare, decimal_real_to_decimal,
4600         decimal_do_fix_trunc, decimal_real_to_integer,
4601         decimal_real_to_integer2, decimal_real_maxval): Likewise.
4602         * dse.c (const_group_info_t): New.
4603         (invariant_group_base_eq, invariant_group_base_hash): Constify.
4604         * dwarf2out.c (const_dw_die_ref): New.
4605         (decl_die_table_hash, decl_die_table_eq, file_info_cmp): Constify.
4606         * tree-browser.c (TB_parent_eq): Likewise.
4607         * unwind-dw2-fde.c (__register_frame_info_bases,
4608         __deregister_frame_info_bases, fde_unencoded_compare, fde_split,
4609         add_fdes, linear_search_fdes, binary_search_unencoded_fdes):
4610         Likewise.
4611         * unwind-dw2-fde.h (get_cie, next_fde): Likewise.
4612         * unwind-dw2.c (uw_frame_state_for): Likewise.
4613         * value-prof.c (histogram_hash, histogram_eq): Likewise.
4614         * value-prof.h (const_histogram_value): New.
4615
4616 2007-07-25  Richard Sandiford  <richard@codesourcery.com>
4617
4618         * config/mips/mips.c (machine_function): Add
4619         initialized_mips16_gp_pseudo_p.
4620         (mips16_gp_pseudo_reg): Do not emit the initialization of
4621         mips16_gp_pseudo_rtx when being called from the gimple cost-
4622         calculation routines; emit it on the first use outside those
4623         routines.
4624
4625 2007-07-25  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
4626
4627         * coretypes.h (const_bitmap, const_rtx, const_rtvec, const_tree):
4628         New.
4629         
4630         * rtl.h (RTL_CHECK1, RTL_CHECK2, RTL_CHECKC1, RTL_CHECKC2,
4631         RTVEC_ELT, XWINT, XCWINT, XCMWINT, XCNMPRV, BLOCK_SYMBOL_CHECK,
4632         RTL_FLAG_CHECK1, RTL_FLAG_CHECK2, RTL_FLAG_CHECK3,
4633         RTL_FLAG_CHECK4, RTL_FLAG_CHECK5, RTL_FLAG_CHECK6,
4634         RTL_FLAG_CHECK7, RTL_FLAG_CHECK8, LABEL_KIND, SET_LABEL_KIND):
4635         Preserve const-ness of parameters through use of __typeof(),
4636         also constify and tidy.
4637         
4638         * tree.h (TREE_CHECK, TREE_NOT_CHECK, TREE_CHECK2,
4639         TREE_NOT_CHECK2, TREE_CHECK3, TREE_NOT_CHECK3, TREE_CHECK4,
4640         NON_TREE_CHECK4, TREE_CHECK5, TREE_NOT_CHECK5,
4641         CONTAINS_STRUCT_CHECK, TREE_CLASS_CHECK, TREE_RANGE_CHECK,
4642         OMP_CLAUSE_SUBCODE_CHECK, OMP_CLAUSE_RANGE_CHECK, EXPR_CHECK,
4643         GIMPLE_STMT_CHECK, NON_TYPE_CHECK, TREE_VEC_ELT_CHECK,
4644         PHI_NODE_ELT_CHECK, OMP_CLAUSE_ELT_CHECK, TREE_OPERAND_CHECK,
4645         TREE_OPERAND_CHECK_CODE, GIMPLE_STMT_OPERAND_CHECK,
4646         TREE_RTL_OPERAND_CHECK, TREE_CHAIN, TREE_TYPE): Likewise.
4647
4648 2007-07-25  Julian Brown  <julian@codesourcery.com>
4649             Mark Shinwell  <shinwell@codesourcery.com>
4650
4651         * config/alpha/alpha.c (alpha_mangle_fundamental_type): Rename to...
4652         (alpha_mangle_type): This.
4653         (TARGET_MANGLE_FUNDAMENTAL_TYPE): Don't define.
4654         (TARGET_MANGLE_TYPE): Define this instead.
4655         * config/arm/arm-protos.h (arm_mangle_type): Add prototype.
4656         * config/arm/arm.c (TARGET_MANGLE_TYPE): Define target hook.
4657         (arm_init_neon_builtins): Fix comment.
4658         (arm_mangle_map_entry): New.
4659         (arm_mangle_map): New.
4660         (arm_mangle_type): New.
4661         * config/i386/i386.c (ix86_mangle_fundamental_type): Rename to...
4662         (ix86_mangle_type): This. Use TYPE_MAIN_VARIANT and restrict
4663         mangled types to VOID_TYPE, BOOLEAN_TYPE, INTEGER_TYPE, REAL_TYPE.
4664         (TARGET_MANGLE_FUNDAMENTAL_TYPE): Don't define.
4665         (TARGET_MANGLE_TYPE): Define this instead.
4666         * config/ia64/ia64.c (ia64_mangle_fundamental_type): Rename to...
4667         (ia64_mangle_type): This. Use TYPE_MAIN_VARIANT  and restrict
4668         mangled types to VOID_TYPE, BOOLEAN_TYPE, INTEGER_TYPE, REAL_TYPE.
4669         (TARGET_MANGLE_FUNDAMENTAL_TYPE): Don't define.
4670         (TARGET_MANGLE_TYPE): Define this instead.
4671         * config/rs6000/rs6000.c (rs6000_mangle_fundamental_type): Rename
4672         to...
4673         (rs6000_mangle_type): This. Use TYPE_MAIN_VARIANT.
4674         (TARGET_MANGLE_FUNDAMENTAL_TYPE): Don't define.
4675         (TARGET_MANGLE_TYPE): Define this instead.
4676         * config/s390/s390.c (s390_mangle_fundamental_type): Rename to...
4677         (s390_mangle_type): This.
4678         (TARGET_MANGLE_FUNDAMENTAL_TYPE): Don't define.
4679         (TARGET_MANGLE_TYPE): Define this instead.
4680         * config/sparc/sparc.c (sparc_mangle_fundamental_type): Rename to...
4681         (sparc_mangle_type): This.
4682         (TARGET_MANGLE_FUNDAMENTAL_TYPE): Don't define.
4683         (TARGET_MANGLE_TYPE): Define this instead.
4684         * cp/mangle.c (write_type): Call mangle_type target hook on all
4685         types before mangling.  Use original type, not main variant, as
4686         argument.
4687         * target-def.h (TARGET_MANGLE_FUNDAMENTAL_TYPE): Rename hook to...
4688         (TARGET_MANGLE_TYPE): This.
4689         * target.h (gcc_target): Rename mangle_fundamental_type to
4690         mangle_type.
4691         * doc/tm.texi (TARGET_MANGLE_FUNDAMENTAL_TYPE): Rename section to...
4692         (TARGET_MANGLE_TYPE): This. Note slightly different semantics.
4693
4694 2007-07-25  Julian Brown  <julian@codesourcery.com>
4695             Paul Brook  <paul@codesourcery.com>
4696             Joseph Myers  <joseph@codesourcery.com>
4697             Mark Shinwell  <shinwell@codesourcery.com>
4698
4699         * Makefile.in (TEXI_GCC_FILES): Add arm-neon-intrinsics.texi.
4700         * config.gcc (arm*-*-*): Add arm_neon.h to extra headers.
4701         (with_fpu): Allow --with-fpu=neon.
4702         * config/arm/aof.h (ADDITIONAL_REGISTER_NAMES): Add Q0-Q15.
4703         * config/arm/aout.h (ADDITIONAL_REGISTER_NAMES): Add Q0-Q15.
4704         * config/arm/arm-modes.def (EI, OI, CI, XI): New modes.
4705         * config/arm/arm-protos.h (neon_immediate_valid_for_move)
4706         (neon_immediate_valid_for_logic, neon_output_logic_immediate)
4707         (neon_pairwise_reduce, neon_expand_vector_init, neon_reinterpret)
4708         (neon_emit_pair_result_insn, neon_disambiguate_copy)
4709         (neon_vector_mem_operand, neon_struct_mem_operand, output_move_quad)
4710         (output_move_neon): Add prototypes.
4711         * config/arm/arm.c (FL_NEON): New flag for NEON processor capability.
4712         (all_fpus): Add FPUTYPE_NEON.
4713         (fp_model_for_fpu): Add NEON field.
4714         (arm_return_in_memory): Return vectors <= 16 bytes in ARM registers.
4715         (arm_arg_partial_bytes): Allow NEON vectors to be passed partially
4716         in registers.
4717         (arm_legitimate_address_p): Don't support fancy addressing for NEON
4718         structure moves.
4719         (thumb2_legitimate_address_p): Likewise.
4720         (neon_valid_immediate): Recognize and prepare constants suitable for
4721         NEON instructions.
4722         (neon_immediate_valid_for_move): New function. Recognize and prepare
4723         immediates for NEON move instructions.
4724         (neon_immediate_valid_for_logic): New function. Recognize and
4725         prepare immediates for NEON logic instructions.
4726         (neon_output_logic_immediate): New function. Create asm string
4727         suitable for outputting immediate logic instructions.
4728         (neon_pairwise_reduce): New function. Implement reduction using
4729         pairwise operations.
4730         (neon_expand_vector_init): New function. Expand a (possibly
4731         non-constant) vector initialization.
4732         (neon_vector_mem_operand): New function. Memory operands supported
4733         for quad-word loads/stores to/from ARM or NEON registers. Don't
4734         allow base+offset addressing for core regs.
4735         (neon_struct_mem_operand): New function. Valid mems for NEON
4736         structure moves.
4737         (coproc_secondary_reload_class): Enable NEON registers to be loaded
4738         from neon_vector_mem_operand addresses without a secondary register.
4739         (add_minipool_forward_ref): Handle >8-byte minipool entries.
4740         (add_minipool_backward_ref): Likewise.
4741         (dump_minipool): Likewise.
4742         (push_minipool_fix): Likewise.
4743         (output_move_quad): New function. Output quad-word moves, loads and
4744         stores using ARM registers.
4745         (output_move_vfp): Add support for vectors in VFP (NEON) D
4746         registers.
4747         (output_move_neon): Output a NEON load/store to/from a quadword
4748         register.
4749         (arm_print_operand): Implement new codes:
4750         - 'c' for unadorned integers (without a # sign).
4751         - 'J', 'K' for reg+2/reg+3, reg+3/reg+2 in little/big-endian
4752         mode.
4753         - 'e', 'f' for the low and high D parts of a NEON Q register.
4754         - 'q' outputs a NEON Q register.
4755         - 'h' outputs ranges of D registers for VLDM/VSTM etc.
4756         - 'T' prints NEON opcode features from a coded bitmask.
4757         - 'F' is similar to T, but signed/unsigned codes both print as
4758         'i'.
4759         - 't' is similar to T, but 'u' is printed instead of 'p'.
4760         - 'O' prints 'r' if NEON instruction should perform rounding (as
4761         specified by bitmask), else prints nothing.
4762         - '#' is a punctuation character to stop operand numbers from
4763         running together with following digits in the assembler
4764         strings for instructions (when using mode attributes).
4765         (arm_assemble_integer): Handle extra NEON vector modes. Permute
4766         constant vectors in big-endian mode, where necessary.
4767         (arm_hard_regno_mode_ok): Allow vectors in VFP/NEON registers.
4768         Handle EI, OI, CI, XI modes.
4769         (ashlv4hi3, ashlv2si3, lshrv4hi3, lshrv2si3, ashrv4hi3)
4770         (ashrv2si3): Rename IWMMXT2_BUILTINs to...
4771         (ashlv4hi3_iwmmxt, ashlv2si3_iwmmxt, lshrv4hi3_iwmmxt)
4772         (lshrv2si3_iwmmxt, ashrv4hi3_iwmmxt, ashrv2si3_iwmmxt): New names.
4773         (neon_builtin_type_bits): Add enumeration, one bit for each vector
4774         type.
4775         (v8qi_UP, v4hi_UP, v2si_UP, v2sf_UP, di_UP, v16qi_UP, v8hi_UP)
4776         (v4si_UP, v4sf_UP, v2di_UP, ti_UP, ei_UP, oi_UP, UP): Define macros
4777         to turn v8qi, etc. into bits defined above.
4778         (neon_itype): New enumeration. Classifications of NEON builtins.
4779         (neon_builtin_datum): Define struct. Contains information about
4780         a single builtin (with multiple modes).
4781         (CF): Define helper macro for...
4782         (VAR1...VAR10): Define builtins with a type, name and 1-10 different
4783         modes.
4784         (neon_builtin_data): New array. Define information about builtins
4785         for use during initialization/expansion.
4786         (arm_init_neon_builtins): New function.
4787         (arm_init_builtins): Call arm_init_neon_builtins if TARGET_NEON is
4788         true.
4789         (neon_builtin_compare): New function.
4790         (locate_neon_builtin_icode): New function. Find an insn code for a
4791         builtin given a function code for that builtin. Also return type of
4792         builtin (NEON_BINOP, NEON_UNOP etc.).
4793         (builtin_arg): New enumeration. Types of arguments for builtins.
4794         (arm_expand_neon_args): New function. Expand a generic NEON builtin.
4795         Takes a variable argument list of builtin_arg types, terminated by
4796         NEON_ARG_STOP.
4797         (arm_expand_neon_builtin): New function. Expand a NEON builtin.
4798         (neon_reinterpret): New function. Expand NEON reinterpret intrinsic.
4799         (neon_emit_pair_result_insn): New function. Support returning pairs
4800         of vectors via a pointer.
4801         (neon_disambiguate_copy): New function. Set up operands for a
4802         multi-word copy such that registers do not get clobbered.
4803         (arm_expand_builtin): Call arm_expand_neon_builtin if fcode >=
4804         ARM_BUILTIN_NEON_BASE.
4805         (arm_file_start): Set float-abi attribute for NEON.
4806         (arm_vector_mode_supported_p): Enable NEON vector modes.
4807         (arm_mangle_map_entry): New.
4808         (arm_mangle_map): New.
4809         (arm_mangle_vector_type): New.
4810         * config/arm/arm.h (TARGET_CPU_CPP_BUILTINS): Define __ARM_NEON__
4811         when appropriate.
4812         (TARGET_NEON): New macro. Target supports NEON.
4813         (fputype): Add FPUTYPE_NEON.
4814         (UNITS_PER_SIMD_WORD): Define. Allow quad-word registers to be used
4815         for vectorization based on command-line arg.
4816         (NEON_REGNO_OK_FOR_NREGS): Define.
4817         (VALID_NEON_DREG_MODE, VALID_NEON_QREG_MODE)
4818         (VALID_NEON_STRUCT_MODE): Define.
4819         (PRINT_OPERAND_PUNCT_VALID_P): '#' is valid punctuation.
4820         (arm_builtins): Add ARM_BUILTIN_NEON_BASE.
4821         * config/arm/arm.md (VUNSPEC_POOL_16): Insert constant for unspec.
4822         (consttable_16): Add pattern for outputting 16-byte minipool
4823         entries.
4824         (movv2si, movv4hi, movv8qi): Remove blank expanders (redefined in
4825         vec-common.md).
4826         (vec-common.md, neon.md): Include md files.
4827         * config/arm/arm.opt (mvectorize-with-neon-quad): Add option.
4828         * config/arm/constraints.md (constraint "Dn", "Dl", "DL"): Define.
4829         (memory_constraint "Ut", "Un", "Us"): Define.
4830         * config/arm/iwmmxt.md (VMMX, VSHFT): New mode macros.
4831         (MMX_char): New mode attribute.
4832         (addv8qi3, addv4hi3, addv2si3): Remove. Replace with...
4833         (*add<mode>3_iwmmxt): New insn pattern.
4834         (subv8qi3, subv4hi3, subv2si3): Remove. Replace with...
4835         (*sub<mode>3_iwmmxt): New insn pattern.
4836         (mulv4hi3): Rename to...
4837         (*mulv4hi3_iwmmxt): This.
4838         (smaxv8qi3, smaxv4hi3, smaxv2si3, umaxv8qi3, umaxv4hi3)
4839         (umaxv2si3, sminv8qi3, sminv4hi3, sminv2si3, uminv8qi3)
4840         (uminv4hi3, uminv2si3): Remove. Replace with...
4841         (*smax<mode>3_iwmmxt, *umax<mode>3_iwmmxt, *smin<mode>3_iwmmxt)
4842         (*umin<mode>3_iwmmxt): These.
4843         (ashrv4hi3, ashrv2si3, ashrdi3_iwmmxt): Replace with...
4844         (ashr<mode>3_iwmmxt): This new pattern.
4845         (lshrv4hi3, lshrv2si3, lshrdi3_iwmmxt): Replace with...
4846         (lshr<mode>3_iwmmxt): This new pattern.
4847         (ashlv4hi3, ashlv2si3, ashldi3_iwmmxt): Replace with...
4848         (ashl<mode>3_iwmmxt): This new pattern.
4849         * config/arm/neon-docgen.ml: New file. Generate documentation for
4850         intrinsics.
4851         * config/arm/neon-gen.ml: New file. Generate arm_neon.h header.
4852         * config/arm/arm_neon.h: New (autogenerated).
4853         * config/arm/neon-testgen.ml: New file. Generate NEON tests
4854         automatically.
4855         * config/arm/neon.md: New file. Define NEON instructions.
4856         * config/arm/neon.ml: New file. Abstract description of NEON
4857         instructions, used to generate arm_neon.h header, documentation and
4858         tests.
4859         * config/arm/t-arm (MD_INCLUDES): Add vec-common.md, neon.md.
4860         * vec-common.md: New file. Shared parts for iWMMXt and NEON vector
4861         support.
4862         * doc/extend.texi (ARM Built-in Functions): Rename and remove
4863         extraneous comma.
4864         (ARM NEON Intrinsics): New subsection.
4865         * doc/arm-neon-intrinsics.texi: New (autogenerated).
4866
4867 2007-07-25  Danny Smith   <dannysmith@users.sourceforge.net>
4868
4869         * config/i386/i386-protos.h (i386_pe_asm_file_end): Remove
4870         prototype.
4871
4872 2007-07-24  Jan Hubicka  <jh@suse.cz>
4873
4874         * regclass.c (move_table): New type.
4875         (move_cost, may_move_in_cost, may_move_out_cost): Use it.
4876         (init_move_cost): Break out from ...
4877         (init_reg_sets_1): ... here; simplify computation of
4878         have_regs-of_mode and contains_reg_of_mode.
4879         (record_reg_classes): Unswitch internal loops.
4880         (copy_cost): Trigger lazy initialization of move cost
4881         (record_address_regs): Likewise.
4882
4883 2007-07-24  Daniel Berlin  <dberlin@dberlin.org>
4884
4885         * config/darwin.c (darwin_override_options): Don't force on
4886         flag_var_tracking_uninit when no debug info is requested.
4887
4888 2007-07-25  Zdenek Dvorak  <dvorakz@suse.cz>
4889
4890         * cfgloop.c (init_loops_structure): New function.
4891         (flow_loops_find): Create root of the loop tree unconditionally.
4892
4893 2007-07-24  Daniel Jacobowitz  <dan@codesourcery.com>
4894
4895         * tree-ssa-ccp.c (fold_const_aggregate_ref): Use fold_convert.
4896
4897 2007-07-24  Jan Hubicka  <jh@suse.cz>
4898
4899         * caller-save.c: Include ggc.h, gt-caller-save.h
4900         (reg_save_code, reg_restore_code): Rename to ...
4901         (cached_reg_save_code, cached_reg_restore_code): ... those.
4902         (savepat, restpat, test_reg, test_mem, saveinsn, restinsn): New.
4903         (reg_save_code, reg_restore_code): New functions.
4904         (init_caller_save): Do not intialize
4905         reg_save_code/reg_restore_code tables.
4906         * Makefile.in: (gt-caller-save.h): New.
4907
4908 2007-07-24  Andreas Krebbel  <krebbel1@de.ibm.com>
4909
4910         * tree-ssa-ifcombine.c (ifcombine_ifandif): Use a ONE operand
4911         with the mode of the original operand instead of
4912         integer_one_node.
4913
4914 2007-07-23  Jan Hubicka  <jH@suse.cz>
4915
4916         * i386.c (ix86_secondary_memory_needed): Break out to...
4917         (inline_secondary_memory_needed): ... here.
4918         (ix86_memory_move_cost): Break out to ...
4919         (inline_memory_move_cost): ... here; add support for IN value of 2 for
4920         maximum of input and output; fix handling of Q_REGS on 64bit.
4921         (ix86_secondary_memory_needed): Microoptimize.
4922
4923 2007-07-23  Sebastian Pop  <sebpop@gmail.com>
4924
4925         * tree-data-ref.c (find_vertex_for_stmt, create_rdg_edge_for_ddr,
4926         create_rdg_edges_for_scalar, create_rdg_edges, create_rdg_vertices,
4927         stmts_from_loop, known_dependences_p, build_rdg): New.
4928         * tree-data-ref.h: Depends on graphds.h.
4929         (rdg_vertex, RDGV_STMT, rdg_dep_type, rdg_edge, RDGE_TYPE): New.
4930         (build_rdg): Declared.
4931         * Makefile.in (TREE_DATA_REF_H): Depends on graphds.h.
4932
4933 2007-07-23  Daniel Berlin  <dberlin@dberlin.org>
4934
4935         * tree-ssa-propagate.c (valid_gimple_expression_p): Match up with
4936         ccp_min_invariant.
4937
4938 2007-07-23  Peter Bergner  <bergner@vnet.ibm.com>
4939             Jakub Jelinek  <jakub@redhat.com>
4940
4941         PR middle-end/PR28690
4942         * optabs.c (expand_binop): (emit_cmp_and_jump_insns): Allow
4943         EQ compares.
4944         * rtlanal.c (commutative_operand_precedence): Prefer both REG_POINTER
4945         and MEM_POINTER operands over REG and MEM operands.
4946         (swap_commutative_operands_p): Change return value to bool.
4947         * rtl.h: Update the corresponding prototype.
4948         * tree-ssa-address.c (gen_addr_rtx): Use simplify_gen_binary
4949         instead of gen_rtx_PLUS.
4950         * simplify-rtx.c (simplify_plus_minus_op_data_cmp): Change return
4951         value to bool.  Change function arguments to rtx's and update code
4952         to match.
4953         (simplify_plus_minus): Update the simplify_plus_minus_op_data_cmp
4954         calls to match the new declaration.
4955         * simplify-rtx.c (simplify_associative_operation): Don't
4956         reorder simplify_binary_operation arguments.
4957
4958 2007-07-23  Richard Sandiford  <richard@codesourcery.com>
4959
4960         * config/mips/mips.c (override_options): Use mips_costs to derive
4961         the default branch cost.
4962         * config/mips/mips.h (BRANCH_COST): Use mips_branch_cost rather
4963         than mips_costs.
4964         * config/mips/mips.opt (mbranch-cost=): New option.
4965         * doc/invoke.texi (-mbranch-cost): Document new MIPS option.
4966
4967 2007-07-23  Richard Sandiford  <richard@codesourcery.com>
4968
4969         * config/mips/mips.h (GR_REG_CLASS_P, COP_REG_CLASS_P): Delete.
4970         (SECONDARY_MEMORY_NEEDED): Delete commented-out definition.
4971         * config/mips/mips.c (mips_register_move_cost): Use reg_class_subset_p
4972         instead of GR_REG_CLASS_P and COP_REG_CLASS_P.
4973
4974 2007-07-23  Richard Sandiford  <richard@codesourcery.com>
4975
4976         * config/mips/constraints.md (ks): New constraint.
4977         * config/mips/mips.md (*add<mode>3_sp1, *add<mode>3_sp2): Fold into...
4978         (*add<mode>3_mips16): ...here.
4979
4980 2007-07-21  Uros Bizjak  <ubizjak@gmail.com>
4981
4982         * optabs.h (enum optab_index): Add new OTI_signbit.
4983         (signbit_optab): Define corresponding macro.
4984         (enum insn_code signbit_optab[]): Remove array.
4985         * optabs.c (init_optabs): Initialize signbit_optab using init_optab.
4986         (expand_copysign_absneg): If back end provides signbit insn, use it
4987         instead of bit operations on floating point argument.
4988         * builtins.c (enum insn_code signbit_optab[]): Remove array.
4989         (expand_builtin_signbit): Check signbit_optab->handlers[].insn_code
4990         for availability of signbit insn.
4991
4992         * config/i386/i386.md (signbit<mode>2): New insn pattern to implement
4993         signbitf, signbit and signbitl built-ins as inline x87 intrinsics when
4994         SSE mode is not active.
4995         (isinf<mode>2): Disable for mfpmath=sse,387.
4996
4997 2007-07-22  Ben Elliston  <bje@au.ibm.com>
4998
4999         * regclass.c (invalid_mode_change_p): Attach ATTRIBUTE_UNUSED to
5000         `class' parameter.
5001         * struct-equiv.c (note_local_live): Likewise for `y_regno'.
5002
5003 2007-07-20  Richard Guenther  <rguenther@suse.de>
5004
5005         * tree-cfg.c (verify_expr): COND_EXPRs can have any
5006         integral typed condition.
5007         * tree-ssa.c (useless_type_conversion_p): Do not preserve
5008         booleanness.  Only preserve conversions from a non-base
5009         type to a base type, not in general between types with
5010         different TYPE_MIN_VALUE or TYPE_MAX_VALUE.
5011         * tree.def (COND_EXPR): Document that the condition
5012         can be of any integral type.
5013
5014 2007-07-20  Nigel Stephens  <nigel@mips.com>
5015             Richard Sandiford  <richard@codesourcery.com>
5016
5017         * config/mips/mips.h (mips_dwarf_regno): Declare.
5018         (DBX_REGISTER_NUMBER): Remove redundant brackets.
5019         (HI_REGNUM, LO_REGNUM): Define in an endian-dependent way.
5020         (AC1HI_REGNUM, AC1LO_REGNUM, AC2HI_REGNUM, AC2LO_REGNUM)
5021         (AC3HI_REGNUM, AC3LO_REGNUM, ACC_HI_REG_P): Delete.
5022         (reg_class): Rename HI_REG to MD0_REG and LO_REG to MD1_REG.
5023         (REG_CLASS_NAMES): Update accordingly.
5024         * config/mips/mips.c (mips_dwarf_regno): New array.
5025         (mips_regno_to_class): Rename HI_REG to MD0_REG and LO_REG to MD1_REG.
5026         (mips_subword): Remove special handling for accumulator registers.
5027         (override_options): Initiailize mips_dwarf_regno.  Remove use
5028         of ACC_HI_REG_P.
5029         (mips_swap_registers): New function.
5030         (mips_conditional_register_usage): Swap accumulator registers
5031         around if TARGET_LITTLE_ENDIAN.
5032         (mips_cannot_change_mode_class): Remove special treatment of ACC_REGS.
5033         * config/mips/constraints.md (h, l): Use the endianness to choose
5034         between MD0_REG and MD1_REG.
5035         * config/mips/mips.md (*mfhilo_<mode>_macc): Use a fixed-string,
5036         alternative-dependent template.
5037
5038 2007-07-20  Richard Sandiford  <richard@codesourcery.com>
5039
5040         * config/arm/arm.md (movsi): Use can_create_pseudo_p instead of
5041         no_new_pseudos.
5042
5043 2007-07-20  Zdenek Dvorak  <dvorakz@suse.cz>
5044
5045         * function.c (thread_prologue_and_epilogue_insns): Fix exit
5046         predecessor fallthru flags.
5047
5048 2007-07-20  Zdenek Dvorak  <dvorakz@suse.cz>
5049
5050         * tree-ssa-loop-niter.c (assert_loop_rolls_lt): Convert the operands
5051         of compare to the same type.
5052         * cfgloopmanip.c (add_loop): Update information about loop exits.
5053         (loop_version): Remove the innermost loop requirement.
5054         * tree-ssa-loop-manip.c (determine_exit_conditions): Convert bounds
5055         to sizetype for pointers.
5056
5057 2007-07-18  H.J. Lu  <hongjiu.lu@intel.com>
5058
5059         * Makefile.in (D32PBIT_FUNCS): Add _sd_to_tf and _tf_to_sd.
5060         (D64PBIT_FUNCS): Add _dd_to_tf and _tf_to_dd.
5061         (D128PBIT_FUNCS): Add _td_to_tf and _tf_to_td.
5062
5063         * config/dfp-bit.c: Empty for TFmode conversions.
5064
5065 2007-07-18  Caroline Tice  <ctice@apple.com>
5066         
5067         * var-tracking.c (find_src_status):  Check for  COND_EXEC insns
5068         and handle them correctly; check that src is not NULL before
5069         trying to use it.
5070         (find_src_set_src): Likewise.
5071         
5072 2007-07-18  Bob Wilson  <bob.wilson@acm.org>
5073         
5074         * config/xtensa/xtensa.c (xtensa_expand_mask_and_shift): New.
5075         (struct alignment_context, init_alignment_context): New.
5076         (xtensa_expand_compare_and_swap, xtensa_expand_atomic): New.
5077         * config/xtensa/xtensa.h (XCHAL_HAVE_RELEASE_SYNC): Add default.
5078         (XCHAL_HAVE_S32C1I): Likewise.
5079         (TARGET_RELEASE_SYNC, TARGET_S32C1I): New.
5080         * config/xtensa/xtensa.md (UNSPECV_MEMW): New constant.
5081         (UNSPECV_S32RI, UNSPECV_S32C1I): Likewise.
5082         (ATOMIC, HQI): New macros.
5083         (memory_barrier, *memory_barrier): New.
5084         (sync_lock_releasesi): New.
5085         (sync_compare_and_swapsi, sync_compare_and_swap<mode>): New.
5086         (sync_lock_test_and_set<mode>): New.
5087         (sync_<atomic><mode>): New.
5088         (sync_old_<atomic><mode>, sync_new_<atomic><mode>): New.
5089         * config/xtensa/xtensa-protos.h (xtensa_expand_compare_and_swap): New.
5090         (xtensa_expand_atomic): New.
5091         
5092 2007-07-18  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
5093
5094         PR target/30652
5095
5096         * builtins.c (expand_builtin_interclass_mathfn): Provide a generic
5097         transformation for builtin ISNORMAL.
5098         (expand_builtin): Handle BUILT_IN_ISNORMAL.
5099         * builtins.def (BUILT_IN_ISNORMAL): New.
5100         * doc/extend.texi: Document isnormal.
5101
5102 2007-07-18  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
5103
5104         PR target/30652
5105
5106         * builtins.c (expand_builtin_interclass_mathfn): Allow for missing
5107         optabs infrastructure.  Provide generic implementation for
5108         FINITE/ISFINITE.
5109         (expand_builtin): Handle FINITE/ISFINITE.
5110         (fold_builtin_classify): Make ISFINITE canonical instead of FINITE.
5111         (fold_builtin_1): Likewise.
5112
5113         * builtins.def (BUILT_IN_ISFINITE): New.
5114
5115         * doc/extend.texi: Document isfinite.
5116
5117 2007-07-18  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
5118
5119         PR target/30652
5120         PR middle-end/20558
5121
5122         * builtins.c (expand_builtin_interclass_mathfn): Provide a
5123         generic fallback for isinf.
5124         * c-cppbuiltin.c (builtin_define_float_constants): Move FP max
5125         calculation code ...
5126         * real.c (get_max_float): ... to here.
5127         * real.h (get_max_float): New.
5128
5129 2007-07-18  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
5130
5131         PR middle-end/32668
5132
5133         * builtin-attrs.def (ATTR_TYPEGENERIC,
5134         ATTR_CONST_NOTHROW_TYPEGENERIC): New.
5135
5136         * builtins.def (BUILT_IN_ISINF, BUILT_IN_ISNAN,
5137         BUILT_IN_ISGREATER, BUILT_IN_ISGREATEREQUAL, BUILT_IN_ISLESS,
5138         BUILT_IN_ISLESSEQUAL, BUILT_IN_ISLESSGREATER,
5139         BUILT_IN_ISUNORDERED): Use ATTR_CONST_NOTHROW_TYPEGENERIC.
5140
5141         * c-common.c (handle_type_generic_attribute): New.
5142         (c_common_attribute_table): Add "type generic".
5143
5144         * c-typeck.c (convert_arguments): Handle "type generic" functions.
5145
5146 2007-07-18  Daniel Berlin  <dberlin@dberlin.org>
5147
5148         * tree-ssa-sccvn.c (try_to_simplify): Use valid_gimple_expression
5149         * tree-ssa-propagate (valid_gimple_expression): Handle ADDR_EXPR
5150         properly.
5151
5152 2007-07-18  Rask Ingemann Lambertsen  <rask@sygehus.dk>
5153
5154         PR target/32808
5155         * config/cris/cris.c (cris_print_index): Don't use XEXP before
5156         checking that the operand is an expression.
5157
5158 2007-07-19  Christoph von Wittich  <Christoph_vW@reactos.org>
5159             Danny Smith  <dannysmith@users.sourceforge.net>
5160
5161         PR/other 30335
5162         * config/i386/host-mingw32.c (mingw32_gt_pch_use_address): Put
5163         file mapping object in local namespace if Windows version later
5164         than NT4
5165
5166 2007-07-18  Richard Sandiford  <richard@codesourcery.com>
5167
5168         * config/arm/arm-protos.h (arm_cannot_force_const_mem): Declare.
5169         * config/arm/arm.c (TARGET_CANNOT_FORCE_CONST_MEM): Redefine to
5170         arm_cannot_force_const_mem.
5171         (arm_cannot_force_const_mem): New function.
5172         * config/arm/arm.h (ARM_OFFSETS_MUST_BE_WITHIN_SECTIONS_P): New macro.
5173         (LEGITIMATE_CONSTANT_P): Test arm_cannot_force_const_mem instead
5174         of arm_tls_referenced_p.
5175         * config/arm/arm.md (movsi): Split out-of-section constants when
5176         ARM_OFFSETS_MUST_BE_WITHIN_SECTIONS_P.
5177         * config/arm/vxworks.h (ARM_OFFSETS_MUST_BE_WITHIN_SECTIONS_P): Define.
5178
5179 2007-07-18  Richard Sandiford  <richard@codesourcery.com>
5180
5181         * config/mips/mips.md (clear_cache): Treat the size argument as Pmode.
5182
5183 2007-07-18  Richard Sandiford  <richard@codesourcery.com>
5184
5185         * config/mips/mips.md (*extendqihi2): Convert the destination
5186         to SImode.
5187
5188 2007-07-17  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
5189
5190         * config/pa/fptr.c: Update license header.
5191         * config/pa/milli64.S: Likewise.
5192
5193 2007-07-17  Nick Clifton  <nickc@redhat.com>
5194
5195         * COPYING_v3: New file.  Contains version 3 of the GNU General
5196         Public License.
5197         * COPYING.LIB_v3: New file.  Contains version 3 of the GNU
5198         Lesser General Public License.
5199         * doc/include/gpl_v3.texi: New file.  Contains version 3 of
5200         the GNU General Public License.
5201
5202 2007-07-17  Zdenek Dvorak  <dvorakz@suse.cz>
5203
5204         PR rtl-optimization/32773
5205         * cfglayout.c (force_one_exit_fallthru): New function.
5206         (cfg_layout_finalize): Use it.
5207
5208 2007-07-16  Richard Guenther  <rguenther@suse.de>
5209             Uros Bizjak  <ubizjak@gmail.com>
5210
5211         * tree-if-conv.c (find_phi_replacement_condition): Unshare "*cond"
5212         before forcing it to gimple operand.
5213
5214 2007-07-16  Sandra Loosemore  <sandra@codesourcery.com>
5215             David Ung  <davidu@mips.com>
5216
5217         * config/mips/mips.h (TUNE_24K): Define.
5218         (TUNE_MACC_CHAINS): Add TUNE_24K.
5219         * config/mips/mips.md: (*mul_acc_si, *mul_sub_si): Change type to
5220         imadd.
5221         * config/mips/74k.md (r74k_int_mult): Split madd/msub to ..
5222         (r74k_int_madd): .. this new reservation.
5223         (define_bypass): Fixed bypasses for r74k_int_madd to use
5224         mips_linked_madd_p.
5225         * config/mips/24k.md (define_bypass): Define new
5226         r24k_int_mul3->r24k_int_madd bypass using mips_linked_madd_p.
5227
5228 2007-07-16  Sandra Loosemore  <sandra@codesourcery.com>
5229             Nigel Stephens  <nigel@mips.com>
5230
5231         * config/mips/mips.md:  Include 20kc.md.
5232         * config/mips/20kc.md: New file.
5233         * config/mips/mips.c (mips_rtx_cost_data): Fill in 20Kc costs.
5234         (mips_adjust_cost): Tweak for 20Kc.
5235         (mips_issue_rate): Likewise.
5236         * config/mips/mips.h (TUNE_20KC): Define.
5237
5238 2007-07-16  David Edelsohn  <edelsohn@gnu.og>
5239
5240         * config/rs6000/rs6000.c (struct processor_cost): Add
5241         cache_line_size, l1_cache_lines, and simultaneous_prefetches
5242         fields.
5243         (*_cost): Add cache information.
5244         (rs6000_override_options): Set cache parameters.
5245
5246 2007-07-16  Rainer Orth  <ro@TechFak.Uni-Bielefeld.DE>
5247
5248         PR bootstrap/3456
5249         * config.gcc (mips-sgi-irix[56]*): Enable pthread support.
5250         * doc/install.texi (mips-sgi-irix6): pthread support works now.
5251
5252 2007-07-16  Paul Brook  <paul@codesourcery.com>
5253
5254         PR target/32753
5255         * config/arm/cirrus.md (cirrus_arm_movsi_insn): Remove dead insn.
5256         (cirrus_thumb2_movsi_insn): Ditto.
5257
5258 2007-07-15  Geoffrey Keating  <geoffk@apple.com>
5259
5260         * config/rs6000/darwin-fallback.c (interpret_libc): Change
5261         CR2_REGNO to R_CR2.
5262
5263 2007-07-15  Andrew Haley  <aph@redhat.com>
5264
5265         * unwind-sjlj.c (_Unwind_GetIPInfo): Check for context->fc != NULL
5266         before looking in the context.
5267
5268 2007-07-15  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
5269
5270         PR middle-end/32398
5271         PR middle-end/32769
5272         * pa-protos.h (pa_eh_return_handler_rtx): Declare.
5273         * pa.c (pa_extra_live_on_entry, rp_saved): Declare.
5274         (TARGET_EXTRA_LIVE_ON_ENTRY): Define.
5275         (pa_output_function_prologue): Use rp_saved and
5276         current_function_is_leaf to generate .CALLINFO statement.
5277         (hppa_expand_prologue): Set rp_saved.
5278         (hppa_expand_epilogue): Use rp_saved.
5279         (pa_extra_live_on_entry, pa_eh_return_handler_rtx): New functions.
5280         * pa.h (EH_RETURN_HANDLER_RTX): Use pa_eh_return_handler_rtx.
5281
5282 2007-07-14  Dirk Mueller  <dmueller@suse.de>
5283
5284         * omega.c (coalesce): Fix memory leak on early exit.
5285         * matrix-reorg.c (check_allocation_function): Likewise.
5286         * tree-vect-transform.c (vect_get_new_vect_var): free result
5287         of concat().
5288         * bb-reorder.c (find_rarely_executed_basic_blocks_and_crossing_edges):
5289         pass pointer to edge vector
5290         (partition_hot_cold_basic_blocks): Fix memory leak.
5291         * collect2.c (prefix_from_string): Free temporary storage.
5292         * reload1.c (fixup_abnormal_edges): Free sbitmap.
5293
5294 2007-07-14  Kaz Kojima  <kkojima@gcc.gnu.org>
5295
5296         * config/sh/sh.h (DO_GLOBAL_CTORS_BODY): Add void to prototype.
5297         (DO_GLOBAL_DTORS_BODY): Likewise.
5298
5299 2007-07-14  Sandra Loosemore  <sandra@codesourcery.com>
5300             Nigel Stephens  <nigel@mips.com>
5301
5302         * config/mips/mips.c (mips_classify_symbol): Don't return
5303         SYMBOL_SMALL_DATA for constant pool addresses if
5304         TARGET_EMBEDDED_DATA is true.
5305
5306 2007-07-14  Uros Bizjak  <ubizjak@gmail.com>
5307
5308         * config/i386/i386.c (init_mmx_sse_builtins): Define all builtins
5309         except __builtin_ia32_emms, __builtin_ia32_ldmxcsr,
5310         __builtin_ia32_stmxcsr, __builtin_ia32_maskmovq, __builtin_ia32_loadups,
5311         __builtin_ia32_storeups, __builtin_ia32_loadhps, __builtin_ia32_loadlps,
5312         __builtin_ia32_storehps, __builtin_ia32_storelps,
5313         __builtin_ia32_movntps, __builtin_ia32_movntq, __builtin_ia32_sfence,
5314         __builtin_ia32_femms, __builtin_ia32_maskmovdqu, __builtin_ia32_loadupd,
5315         __builtin_ia32_storeupd, __builtin_ia32_loadhpd, __builtin_ia32_loadlpd,
5316         __builtin_ia32_movnti, __builtin_ia32_movntpd, __builtin_ia32_movntdq,
5317         __builtin_ia32_clflush, __builtin_ia32_lfence, __builtin_ia32_mfence,
5318         __builtin_ia32_loaddqu, __builtin_ia32_storedqu, __builtin_ia32_monitor,
5319         __builtin_ia32_mwait, __builtin_ia32_lddqu, __builtin_ia32_movntdqa,
5320         __builtin_ia32_movntsd and __builtin_ia32_movntss as const builtins
5321         using def_builtin_const.
5322
5323 2007-07-14  Eric Botcazou  <ebotcazou@adacore.com>
5324
5325         PR tree-optimization/32705
5326         * tree-ssa-sccvn.c (set_ssa_val_to): Accept VN_TOP as value number.
5327         (simplify_binary_expression): Use SSA_VAL consistently.
5328
5329 2007-07-13  David Edelsohn  <edelsohn@gnu.org>
5330
5331         * config/rs6000/spe.md (SPE_ACC_REGNO): Delete definition.
5332         (SPEFSCR_REGNO): Delete definition.
5333         * config/rs6000/rs6000.c: LINK_REGISTER_REGNUM -> LR_REGNO.
5334         COUNT_REGISTER_REGNUM -> CTR_REGNO.
5335         * config/rs6000/rs6000.h: Do not define *_REGNO.
5336         LINK_REGISTER_REGNUM -> LR_REGNO.
5337         COUNT_REGISTER_REGNUM -> CTR_REGNO.
5338         * config/rs6000/predicates.md: LINK_REGISTER_REGNUM ->  LR_REGNO.
5339         COUNT_REGISTER_REGNUM -> CTR_REGNO.
5340         * config/rs6000/linux-unwind.h: Define R_LR, R_CR2, R_VR0,
5341         R_VRSAVE, R_VSCR. Use them.
5342         * config/rs6000/darwin-fallback.c: Define R_LR, R_CTR, R_CR2,
5343         R_XER, R_VR0, R_VRSAVE, R_VSCR, R_SPEFSCR.  Use them.
5344         * config/rs6000/rs6000.md: Define REGNO constants.  Use them.
5345         * config/rs6000/aix.h: Define R_LR.  Use it.
5346         
5347 2007-07-13  Caroline Tice  <ctice@apple.com>
5348         
5349         * toplev.c (process_options): Turn flag_var_tracking_uninit off when
5350         flag_var_tracking is explicitly turned off (i.e. when variable
5351         tracking is not feasible); otherwise, turn flag_var_tracking on when
5352         flag_var_tracking_uninit is on.
5353         * rtl.def (VAR_LOCATION): Add a new integer subfield to VAR_LOCATION
5354         note definitions, to allow recording of initialization status in the
5355         notes.
5356         * dwarf2out.c (dwarf_stack_op_name): Add case for DW_OP_GNU_uninit.
5357         (add_var_loc_to_decl): Add comparison of NOTE_VAR_LOCATION_STATUS to
5358         determine if two note locations are equal.
5359         (output_loc_list): Don't output list entries whose start & end labels
5360         are the same.
5361         (reg_loc_descriptor): Add parameter for initialization status; pass it
5362         to other loc descriptor functions.
5363         (one_reg_loc_descriptor): Add parameter for initialization status;
5364         check its value and add DW_OP_GNU_uninit to returned loc descr if
5365         appropriate.
5366         (multiple_reg_loc_descriptor): Add parameter for initialization
5367         status;
5368         pass init status argument to other loc descriptor functions; check
5369         value of intialization parameter and add DW_OP_GNU_uninit to returned
5370         loc descr if appropriate.
5371         (based_loc_descr): Add parameter for initialization status; add new
5372         variable for return value; check value of initialization parameter and
5373         add DW_OP_GNU_uninit to returned loc descr if appropriate.
5374         (concatn_mem_loc_descriptor): Add parameter for initialization status;
5375         pass init status argument to other loc descriptor functions; check
5376         value of intialization parameter and add DW_OP_GNU_uninit to returned
5377         loc descr if appropriate.
5378         (mem_loc_descriptor): Likewise.
5379         (concat_loc_descriptor): Likewise.
5380         (concatn_loc_descriptor): Likewise.
5381         (loc_descriptor): Add parameter for initialization status; pass it as
5382         argument to other loc descriptor function calls.
5383         (loc_descriptor_from_tree_1): Add appropriate initialization status
5384         to loc descriptor function calls.
5385         (add_location_or_const_value_attribute): Get initialization status
5386         from VAR_LOCATION note; add initialization status to loc descriptor
5387         function calls.
5388         * dwarf2.h (enum dwarf_location_atom): New op, DW_OP_GNU_uninit.
5389         * print-rtl.c (print_rtx): When printing a VAR_LOCATION note, if
5390         status is uninitialized, add "[uninint]" to output.
5391         * common.opt (fvar-tracking-uninit): New option, similar to
5392         fvar-tracking, to turn on tracking of uninitialized variables; creates
5393         a new global flag, flag_var_tracking_uninit.
5394         * rtl.h (NOTE_VAR_LOCATION_STATUS): New macro for accessing new field.
5395         (enum var_init_status): New type, for var initialization status field.
5396         * var-tracking.c (struct location_chain_def): Two new fields, init,
5397         for initialization status, and set_src for the assignment value expr.
5398         (unshare_variable): New parameter for initialization status;
5399         initialize new init and set_src fields.
5400         (var_reg_set): New parameters for initialization status and value;
5401         pass them to set_variable_part.
5402         (var_mem_set): Likewise.
5403         (get_init_value): New function.
5404         (var_reg_delete_and_set): New initialization status & value
5405         parameters; add call to get_init_value if status is unknown; pass new
5406         parameters to clobber_variable_part and var_reg_set.
5407         (var_mem_delete_and_set): Likewise.
5408         (var_reg_delete): Pass null set_src value to clobber_variable_part.
5409         (var_mem_delete): Likewise.
5410         (variable_union): Pass status to unshare_variable; initialize new init
5411         and set_src fields. If flag_var_tracking_uninit is not set, force
5412         status to initialized.
5413         (add_stores): Store insn, rather than NEXT_INSN(insn), so it can be
5414         used later to get the set_src value.
5415         (find_src_status): New function.
5416         (find_src_set_src): New function.
5417         (compute_bb_dataflow): Pass init status to calls to var_reg_set,
5418         var_mem_set, var_reg_delete_and_set and var_mem_delete_and_set; for
5419         MO_SET, get set_src value and pass it to var_reg_delete_and_set
5420         and var_mem_delete_and_set.
5421         (dump_variable): Print out "[uninit]" if appropriate.
5422         (set_variable_part): Add new initialization and set_src parameters;
5423         pass status to unshare_variable; set node->init and node- >set_src
5424         fields and modify slot in hash table appropriately; save the init and
5425         set_src values if appropriate and assign to the new node.
5426         (clobber_variable_part): New set_src parameter; if two nodes have
5427         same variable and same location but different set_src (assignment)
5428         values, clobber old node.
5429         (delete_variable_part): Pass init status to unshare_variable.
5430         (emit_note_insn_var_location): Add initialized var; assign var's init
5431         status to new 'initialized'; pass new init status field to calls to
5432         gen_rtx_VAR_LOCATION. If flag_var_tracking_uninit is not set, force
5433         status to initialized.
5434         (emit_notes_in_bb): Pass initialization status to calls to
5435         var_reg_set, var_mem_set, var_reg_delete_and_set and
5436         var_mem_delete_and_set; for MO_SET, get set_src value and pass it to
5437         var_reg_delete_and_set and var_mem_delete_and_set; call
5438         emit_notes_for_changes on NEXT_INSN(insn) rather than on insn, to
5439         make up for change in add_stores.
5440         (vt_add_function_parameters): Add status to calls to
5441         set_variable_part.
5442         * config/darwin.c (darwin_override_options): Turn on uninitialized
5443         tracking automatically, if var_tracking is on and the system is
5444         10.5 or higher.
5445         
5446 2007-07-13  Sa Liu  <saliu@de.ibm.com>
5447
5448         * config.gcc: Add options for arch and tune on SPU.
5449         * config/spu/predicates.md: Add constant operands 0 and 1.
5450         * config/spu/spu-builtins.def: Add builtins for double precision 
5451         floating point comparison: si_dfceq, si_dfcmeq, si_dfcgt, si_dfcmgt, 
5452         si_dftsv, spu_cmpeq_13, spu_cmpabseq_1, spu_cmpgt_13, spu_cmpabsgt_1,
5453         spu_testsv.
5454         * config/spu/spu-c.c: Define __SPU_EDP__ when builtins invoked with 
5455         a CELLEDP target.
5456         * config/spu/spu-protos.h: Add new function prototypes. 
5457         * config/spu/spu.c (spu_override_options): Check options -march and
5458         -mtune.
5459         (spu_comp_icode): Add comparison code for DFmode and vector mode.
5460         (spu_emit_branch_or_set): Use the new code for DFmode and vector 
5461         mode comparison.
5462         (spu_const_from_int): New.  Create a vector constant from 4 ints.
5463         (get_vec_cmp_insn): New.  Get insn index of vector compare instruction.
5464         (spu_emit_vector_compare): New.  Emit vector compare.
5465         (spu_emit_vector_cond_expr): New.  Emit vector conditional expression.
5466         * config/spu/spu.h: Add options -march and -mtune.  Define processor
5467         types PROCESSOR_CELL and PROCESSOR_CELLEDP.  Define macro
5468         CANONICALIZE_COMPARISON.
5469         * config/spu/spu.md: Add new insns for double precision compare
5470         and double precision vector compare.  Add vcond and smax/smin patterns
5471         to enable DFmode vector conditional expression.
5472         * config/spu/spu.opt: Add options -march and -mtune.
5473         * config/spu/spu_internals.h: Add builtins for CELLEDP target:
5474         si_dfceq, si_dfcmeq, si_dfcgt, si_dfcmgt, si_dftsv.  Add builtin for
5475         both CELL and CELLEDP targets: spu_testsv.
5476         * config/spu/spu_intrinsics.h: Add flag mnemonics for test special 
5477         values.
5478
5479 2007-07-13  Richard Guenther  <rguenther@suse.de>
5480
5481         PR tree-optimization/32721
5482         * tree-ssa-ccp.c (maybe_fold_stmt_indirect): Preserve
5483         TREE_THIS_VOLATILE on the folded reference.
5484         * tree-ssa-operands.c (get_expr_operands): Set has_volatile_ops
5485         if the array reference has TREE_THIS_VOLATILE set.
5486
5487 2007-07-13  H.J. Lu  <hongjiu.lu@intel.com>
5488
5489         PR other/32188
5490         * doc/libgcc.texi: Update DFP intrinsics for DPD and BID.
5491
5492 2007-07-13  Andreas Schwab  <schwab@suse.de>
5493
5494         * gengtype-lex.l: Allow declarations to be indented.
5495
5496 2007-07-12  Geoffrey Keating  <geoffk@apple.com>
5497
5498         * ginclude/tgmath.h: New.
5499         * config.gcc: Use GCC's tgmath.h on non-glibc systems.
5500         * doc/sourcebuild.texi (Headers): Document use_gcc_tgmath.
5501         * configure.ac (STMP_FIXPROTO): Honor use_gcc_tgmath.
5502         * configure: Regenerate.
5503
5504 2007-07-13  Kaz Kojima  <kkojima@gcc.gnu.org>
5505
5506         * config/sh/linux-unwind.h (sh_fallback_frame_state): Use
5507         correct index when setting register save state for xd
5508         registers.
5509
5510 2007-07-13  Kaz Kojima  <kkojima@gcc.gnu.org>
5511
5512         * config/sh/sh.c (mark_use): Remove.
5513
5514 2007-07-12  Paul Brook  <paul@codesourcery.com>
5515
5516         * config/arm/arm.c (thumb1_compute_save_reg_mask): Make sure scratch
5517         reg does not overlap return value.
5518
5519 2007-07-12  Daniel Berlin  <dberlin@dberlin.org>
5520
5521         * tree-ssa-pre.c (get_expression_vuses): Move out side-effect.
5522         (set_expression_vuses): Ditto.
5523         (init_pre): Initialize expression_vuses.
5524
5525 2007-07-12  Zdenek Dvorak  <dvorakz@suse.cz>
5526
5527         * config/i386/sse.md (storentdf, storentsf): New.
5528
5529 2007-07-12  Geoffrey Keating  <geoffk@apple.com>
5530
5531         * builtins.c (get_pointer_alignment): Honor DECL_ALIGN on a
5532         FUNCTION_DECL.
5533         * tree.c (build_decl_stat): Move code from here...
5534         (make_node_stat): ... to here.  Don't uselessly clear DECL_USER_ALIGN.
5535         (expr_align): Honor DECL_ALIGN on a FUNCTION_DECL.  Add comment
5536         about using DECL_ALIGN of LABEL_DECL and CONST_DECL.
5537         * tree.h (DECL_USER_ALIGN): Fix misplaced comment.
5538         * varasm.c (assemble_start_function): Use DECL_ALIGN instead of
5539         FUNCTION_BOUNDARY.
5540
5541 2007-07-12  Dorit Nuzman  <dorit@il.ibm.com>
5542             Devang Patel  <dpatel@apple.com>
5543
5544         PR tree-optimization/25413
5545         * targhooks.c (default_builtin_vector_alignment_reachable): New.
5546         * targhooks.h (default_builtin_vector_alignment_reachable): New.
5547         * tree.h (contains_packed_reference): New.
5548         * expr.c (contains_packed_reference): New.
5549         * tree-vect-analyze.c (vector_alignment_reachable_p): New.
5550         (vect_enhance_data_refs_alignment): Call
5551         vector_alignment_reachable_p.
5552         * target.h (vector_alignment_reachable): New builtin.
5553         * target-def.h (TARGET_VECTOR_ALIGNMENT_REACHABLE): New.
5554         * config/rs6000/rs6000.c (rs6000_vector_alignment_reachable): New.
5555         (TARGET_VECTOR_ALIGNMENT_REACHABLE): Define.
5556
5557 2007-07-12  Dorit Nuzman  <dorit@il.ibm.com>
5558
5559         * target.h (builtin_vectorization_cost): Add new target builtin.
5560         * target-def.h (TARGET_VECTORIZE_BUILTIN_VECTORIZATION_COST): New.
5561         * tree-vectorizer.h (TARG_SCALAR_STMT_COST): New.
5562         (TARG_SCALAR_LOAD_COST, TARG_SCALAR_STORE_COST): New.
5563         * tree-vect-analyze.c (vect_analyze_slp_instance): Initisliaze
5564         uninitialized variables.
5565         * tree-vect-transform.c (cost_for_stmt): New function.
5566         (vect_estimate_min_profitable_iters): Call cost_for_stmt instead of
5567         using cost 1 for all scalar stmts. Be less conservative when
5568         estimating the number of prologue/epulogue iterations. Call
5569         targetm.vectorize.builtin_vectorization_cost. Return
5570         min_profitable_iters-1.
5571         (vect_model_reduction_cost): Use TARG_SCALAR_TO_VEC_COST for
5572         initialization cost instead of TARG_VEC_STMT_COST. Use
5573         TARG_VEC_TO_SCALAR_COST instead of TARG_VEC_STMT_COST for reduction
5574         epilogue code. Fix epilogue cost computation.
5575         * config/spu/spu.c (spu_builtin_vectorization_cost): New.
5576         (TARGET_VECTORIZE_BUILTIN_VECTORIZATION_COST): Implement.
5577         * config/spu/spu.h (TARG_COND_BRANCH_COST, TARG_SCALAR_STMT_COST):
5578         (TARG_SCALAR_LOAD_COST, TARG_SCALAR_STORE_COST, TARG_VEC_STMT_COST):
5579         (TARG_VEC_TO_SCALAR_COST, TARG_SCALAR_TO_VEC, TARG_VEC_LOAD_COST):
5580         (TARG_VEC_UNALIGNED_LOAD_COST, TARG_VEC_STORE_COST): Define.
5581
5582 2007-07-12  Richard Guenther  <rguenther@suse.de>
5583
5584         * gimplify.c (gimplify_conversion): Make sure that the result
5585         from maybe_fold_offset_to_reference is trivially convertible
5586         to the desired type before doing the simplification.
5587         (gimplify_expr): Likewise.
5588         * fold-const.c (fold_binary): Use the correct types for
5589         building the simplified expression.
5590
5591 2007-07-12  Zdenek Dvorak  <dvorakz@suse.cz>
5592
5593         PR rtl-optimization/32729
5594         * cfghooks.c (can_duplicate_block_p): Do not forbid duplicating blocks
5595         that fallthru to exit.
5596
5597 2007-07-12  Kaz Kojima  <kkojima@gcc.gnu.org>
5598
5599         * config/sh/sh.md (symGOTOFF2reg): Add missing parenthesis.
5600         (symDTPOFF2reg): Likewise.
5601
5602 2007-07-11  Daniel Berlin  <dberlin@dberlin.org>
5603
5604         PR tree-optimization/32663
5605         
5606         * tree.h (VALUE_HANDLE_VUSES): Remove.
5607         (struct tree_value_handle): Remove vuses.
5608
5609         * tree-vn.c (create_value_handle_for_expr): Don't set
5610         VALUE_HANDLE_VUSES. 
5611
5612         * tree-ssa-pre.c (expression_vuses): New.
5613         (alloc_expression_id): Set up expression_vuses.
5614         (get_expression_vuses): New.
5615         (set_expression_vuses): Ditto.
5616         (clear_expression_ids): Modify for expression_vuses.
5617         (phi_translate_1): Ditto.
5618         (phi_translate_set): Ditto.
5619         (value_dies_in_block_x): Ditto
5620         (valid_in_sets): Ditto.
5621         (add_to_sets): Ditto.
5622         (find_existing_value_expr): Ditto.
5623         (create_value_handle_for_expr): Ditto.
5624         (make_values_for_stmt): Ditto.
5625         (vuse_equiv): Remove.
5626
5627 2007-07-11  Alexandre Oliva  <aoliva@redhat.com>
5628
5629         * Makefile.in (mostlyclean): Remove object files.
5630
5631 2007-07-11  Kenneth Zadeck <zadeck@naturalbridge.com>
5632
5633         * toplev.c (no_new_pseudos): Deleted.
5634         * rtl.h (no_new_pseudos): Deleted.
5635         * tree-pass.h (pass_no_new_pseudos): Deleted. 
5636         * passes.c (pass_no_new_pseudos): Deleted.
5637         * final.c (rest_of_clean_state): Removed no_new_pseudos.
5638         (rest_of_no_new_pseudos, pass_no_new_pseudos): Deleted.
5639         * struct-equiv.c (rtx_equiv_p): Replaced no_new_pseudos with 
5640         reload_completed.
5641         * cfgcleanup.c (try_crossjump_to_edge): Ditto. 
5642         * rtlhooks.c (gen_lowpart_general): Ditto.
5643         * optabs.c (prepare_operand): Ditto.
5644         * mode-switching.c (rest_of_handle_mode_switching): Deleted set of
5645         no_new_pseudos.
5646         * modulo-sched.c (rest_of_handle_sms): Ditto.
5647         * see.c (rest_of_handle_see): Ditto.
5648         * ifcvt.c (if_convert): Ditto.
5649         (gate_handle_if_after_combine): Replaced no_new_pseudos with 
5650         reload_completed.
5651         * init-regs.c (gate_initialize_regs): Deleted set of
5652         no_new_pseudos.
5653         * lower-subreg.c (decompose_multiword_subregs): Ditto. 
5654         * bb-reorder.c (rest_of_handle_partition_blocks): Ditto.
5655         * doc/md.texi: Changed no_new_pseudos to can_create_pseudo_p.
5656         
5657 2007-07-11  Uros Bizjak  <ubizjak@gmail.com>
5658
5659         PR target/32661
5660         * config/i386/sse.md (*sse2_storeq_rex64): Handle 64bit mem->reg moves.
5661         (*vec_extractv2di_1_sse2): Disable for TARGET_64BIT.
5662         (*vec_extractv2di_1_rex64): New insn pattern.
5663
5664 2007-07-11  David Daney  <ddaney@avtrex.com>
5665
5666         * config/mips/linux-unwind.h (mips_fallback_frame_state): Rewrite
5667         return address calculation.  Substitute DWARF_ALT_FRAME_RETURN_COLUMN
5668         for SIGNAL_UNWIND_RETURN_COLUMN.
5669         * config/mips/mips.h (SIGNAL_UNWIND_RETURN_COLUMN): Remove.
5670         (DWARF_FRAME_REGNUM): Rewrite.
5671         (DWARF_ALT_FRAME_RETURN_COLUMN) Define.
5672
5673 2007-07-11  Nick Clifton  <nickc@redhat.com>
5674
5675         * config/m32r/m32r.h (INITIALIZE_TRAMPOLINE): Revert previous
5676         delta and use gen_int_mode in place of GET_INT instead.
5677
5678 2007-07-11  Uros Bizjak  <ubizjak@gmail.com>
5679
5680         * reg-stack.c (struct tree_opt_pass pass_stack_regs): Nullify name
5681         and letter field.
5682
5683 2007-07-11  Douglas Gregor  <doug.gregor@gmail.com>
5684
5685         * params.def (PARAM_VERIFY_CANONICAL_TYPES): Remove.
5686         (PARAM_USE_CANONICAL_TYPES): New; decides whether to use canonical 
5687         types or not.
5688         * params.h (VERIFY_CANONICAL_TYPES): Remove.
5689         (USE_CANONICAL_TYPES): New.
5690         * doc/invoke.texi (verify-canonical-types): Remove.
5691         (use-canonical-types): Add.
5692
5693 2007-07-11  Ulrich Weigand  <uweigand@de.ibm.com>
5694
5695         * config/spu/spu.c (spu_optimization_options): Remove setting of
5696         parameter PARAM_MAX_COMPLETELY_PEEL_TIMES.
5697         (spu_override_options): Move it here.
5698
5699 2007-07-11  Richard Sandiford  <richard@codesourcery.com>
5700
5701         * config/mips/mips.h (MIPS_ISA_LEVEL_SPEC): Handle -m4ksc and -m4ksd.
5702         * config/mips/mips.c (mips_cpu_info_table): Mention
5703         MIPS_ISA_LEVEL_SPEC in the comment.
5704
5705 2007-07-11  Eric Botcazou  <ebotcazou@adacore.com>
5706
5707         PR tree-optimization/32713
5708         * tree-ssa-sccvn.c (copy_reference_ops_from_ref): Handle REAL_CST.
5709
5710 2007-07-11  Paolo Carlini  <pcarlini@suse.de>
5711
5712         PR middle-end/30482
5713         * c-opts.c (c_common_post_options): Do not change flag_complex_method
5714         conditional to flag_isoc99.
5715         (c_common_init_options): Do it here, unconditionally.
5716
5717 2007-07-11  Eric Botcazou  <ebotcazou@adacore.com>
5718
5719         PR tree-optimization/32589
5720         * doc/tree-ssa.texi (Rough GIMPLE Grammar): Add missing rule.
5721         * tree-gimple.c (is_gimple_min_invariant): Clarify head comment.
5722         * tree-ssa-propagate.c (valid_gimple_expression_p): New
5723         predicate, extracted from...
5724         (set_rhs): ...here.  Call it for the expression on entry.
5725         * tree-ssa-propagate.h (valid_gimple_expression_p): Declare.
5726         * tree-ssa-sccvn.c: Include tree-ssa-propagate.h.
5727         (simplify_binary_expression): Use valid_gimple_expression_p
5728         to validate the simplification.
5729         * Makefile.in (tree-ssa-sccvn.o): Depends on tree-ssa-propagate.h.
5730
5731 2007-07-11  Danny Smith  <dannysmith@users.sourceforge.net>
5732
5733         * config/i386/cygming.h (PREFERRED_DEBUGGING_TYPE): Define to
5734         DWARF2_DEBUG on 32 bit target too.
5735         (DWARF2_UNWIND_INFO): Reorganize 64-bit vs 32-bit definition. 
5736
5737 2007-07-11  Nick Clifton  <nickc@redhat.com>
5738
5739         * config/m32r/m32r.h (INITIALIZE_TRAMPOLINE): Provide alternative
5740         version for 64-bit hosts.
5741
5742 2007-07-10  David Daney  <ddaney@avtrex.com>
5743
5744         * config/mips/mips.h (ISA_HAS_SYNCI): New target capability
5745         predicate.
5746         (INITIALIZE_TRAMPOLINE): Emit clear_cache insn instead of  library
5747         call.
5748         * config/mips/mips.c (mips_expand_synci_loop): New function.
5749         * config/mips/mips.md (UNSPEC_CLEAR_HAZARD): New constant.
5750         (UNSPEC_RDHWR): Same.
5751         (UNSPEC_SYNCI): Same.
5752         (UNSPEC_SYNC): Same.
5753         (clear_cache): New expand.
5754         (sync): New insn.
5755         (synci): Same.
5756         (rdhwr): Same.
5757         (clear_hazard): Same.
5758         * config/mips/mips-protos.h (mips_expand_synci_loop): Declare
5759         function.
5760         * testsuite/gcc.target/mips/clear-cache-1.c: New test.
5761         * testsuite/gcc.target/mips/clear-cache-2.c: New test.
5762
5763 2007-07-10  Ian Lance Taylor  <iant@google.com>
5764
5765         * emit-rtl.c (gen_reg_rtx): Check can_create_pseudo_p rather than
5766         no_new_pseudos.
5767
5768 2007-07-10  David Daney  <ddaney@avtrex.com>
5769
5770         * builtins.def (BUILT_IN_CLEAR_CACHE): New builtin.
5771         * builtins.c (expand_builtin___clear_cache): New function.
5772         (expand_builtin): Call expand_builtin___clear_cache for
5773         BUILT_IN_CLEAR_CACHE case.
5774         * doc/extend.texi (__builtin___clear_cache): Document new builtin.
5775         * doc/md.texi (clear_cache): Document new instruction pattern.
5776         * testsuite/gcc.dg/builtins-64.c: New test.
5777
5778 2007-07-11  Hans-Peter Nilsson  <hp@axis.com>
5779
5780         * config/cris/cris.md ("movsi"): Fix typo in last change.
5781
5782 2007-07-09  Geoffrey Keating  <geoffk@apple.com>
5783
5784         PR 32617
5785         * c-common.c (c_alignof_expr): Look at DECL_ALIGN of
5786         FUNCTION_DECLs.
5787         (handle_aligned_attribute): Allow use on FUNCTION_DECLs.
5788         * varasm.c (assemble_start_function): Honor DECL_ALIGN
5789         for FUNCTION_DECLs.  Don't use align_functions_log if
5790         DECL_USER_ALIGN.
5791         * print-tree.c (print_node): Print DECL_ALIGN and DECL_USER_ALIGN
5792         even for FUNCTION_DECLs.
5793         * c-decl.c (merge_decls): Propagate DECL_ALIGN even for
5794         FUNCTION_DECLs.
5795         * tree.h (DECL_ALIGN): Update for new location of 'align'.
5796         (DECL_FUNCTION_CODE): Update for new location and name of
5797         'function_code'.
5798         (DECL_OFFSET_ALIGN): Update for new location of 'off_align'.
5799         (struct tree_decl_common): Move 'align' and 'off_align' out
5800         of union, ensure they're still on a 32-bit boundary.  Remove
5801         other fields in union 'u1'.
5802         (struct tree_function_decl): Add field 'function_code' replacing
5803         'u1.f' in tree_decl_common.
5804         * tree.c (build_decl_stat): Set initial value of DECL_ALIGN.
5805         * doc/extend.texi (Function Attributes): Add 'aligned' attribute.
5806         (Variable Attributes): Cross-reference 'aligned' attribute
5807         to Function Attributes.
5808         * flags.h (force_align_functions_log): Delete.
5809         * toplev.c (force_align_functions_log): Delete.
5810
5811 2007-07-10  Uros Bizjak  <ubizjak@gmail.com>
5812
5813         PR target/32708
5814         * config/i386/sse.md (vec_concatv2di): Disable for TARGET_64BIT.
5815         (*vec_concatv2di_rex): New insn pattern.
5816
5817 2007-07-10  Rainer Orth  <ro@TechFak.Uni-Bielefeld.DE>
5818
5819         PR target/32538
5820         * config/mips/iris6.h (LIBGCC_SPEC): Add libm.
5821
5822 2007-07-10  Ian Lance Taylor  <iant@google.com>
5823
5824         Replace no_new_pseudos in backends.
5825         * rtl.h (can_create_pseudo_p): Define.
5826         * config/darwin.c (machopic_indirect_data_reference): Use
5827         can_create_pseudo_p () instead of no_new_pseudos.
5828         (machopic_indirect_data_reference): Likewise.
5829         (machopic_legitimize_pic_address): Likewise.
5830         * config/alpha/alpha.c (alpha_legitimize_address): Likewise.
5831         (alpha_emit_set_const_1): Likewise.
5832         (alpha_emit_set_const): Likewise.
5833         (alpha_emit_conditional_move): Likewise.
5834         (alpha_split_conditional_move): Likewise.
5835         * config/alpha/alpha.md (various splitters): Likewise.
5836         (movti): Likewise.
5837         * config/arm/arm.c (legitimize_pic_address): Likewise.
5838         (arm_load_pic_register): Likewise.
5839         * config/arm/arm.md (addsi3, subsi3, andsi3, iorsi3): Likewise.
5840         (movdi, movsi, movhi, movqi, movsf, movdf): Likewise.
5841         * config/bfin/bfin.c (legitimize_pic_address): Likewise.
5842         * config/cris/cris.c (cris_expand_pic_call_address): Likewise.
5843         * config/cris/cris.md (movsi): Likewise.
5844         * config/frv/frv.md (symGOT2reg_hilo): Likewise.
5845         (symGOTOFF2reg_hilo): Likewise.
5846         (symGPREL2reg, symGPREL2reg_hilo): Likewise.
5847         * config/h8300/h8300.md (insv, extzv): Likewise.
5848         * config/i386/i386.c (ix86_expand_move): Likewise.
5849         (ix86_expand_vector_move): Likewise.
5850         (ix86_prepare_fp_compare_args): Likewise.
5851         (ix86_expand_carry_flag_compare): Likewise.
5852         * config/i386/i386.md (tls_dynamic_gnu2_32): Likewise.
5853         (tls_dynamic_gnu2_combine_32): Likewise.
5854         (tls_dynamic_gnu2_64, tls_dynamic_gnu2_combine_64): Likewise.
5855         * config/ia64/ia64.c (ia64_expand_move): Likewise.
5856         (ia64_expand_movxf_movrf): Likewise.
5857         * config/m32c/m32c.c (m32c_prepare_move): Likewise.
5858         (m32c_split_move): Likewise.
5859         (m32c_expand_insv): Likewise.
5860         * config/m68k/m68k.md (movsi): Likewise.
5861         * config/mips/mips.c (mips_force_temporary): Likewise.
5862         (mips_split_symbol): Likewise.
5863         (mips_move_integer): Likewise.
5864         (mips_legitimize_const_move): Likewise.
5865         * config/mn10300/mn10300.md (movsi): Likewise.
5866         * config/pa/pa.c (emit_move_sequence): Likewise.
5867         * config/rs6000/rs6000.c (rs6000_emit_move): Likewise.
5868         (rs6000_got_register): Likewise.
5869         (create_TOC_reference): Likewise.
5870         (rs6000_machopic_legitimize_pic_address): Likewise.
5871         * config/rs6000/rs6000.md (add<mode>3): Likewise.
5872         (various splitters): Likewise.
5873         (iorsi3, xorsi3, iordi3, xordi3): Likewise.
5874         (movsi_got): Likewise.
5875         * config/s390/s390.c (emit_symbolic_move): Likewise.
5876         * config/s390/s390.md (movhi, movqi): Likewise.
5877         (load_multiple, store_multiple): Likewise.
5878         * config/score/score.c (score_force_temporary): Likewise.
5879         * config/sh/sh.c (prepare_move_operands): Likewise.
5880         (prepare_cbranch_operands): Likewise.
5881         (emit_fpu_switch): Likewise.
5882         (fpscr_set_from_mem): Likewise.
5883         * config/sh/sh.md (movdicc, movsicc, movsicc_umin): Likewise.
5884         (adddi3, subsi3): Likewise.
5885         (various splitters): Likewise.
5886         (divsi_inv_fp_combine): Likewise.
5887         (symGOT_load, symGOTOFF2reg, symDTPOFF2reg): Likewise.
5888         (seq, slt, sle, sgt, sge, sgtu, sltu, sleu, sgeu): Likewise.
5889         (sne): Likewise.
5890         * config/sh/predicates.md (xor_operand): Likewise.
5891         * config/sparc/sparc.c (legitimize_tls_address): Likewise.
5892         * config/sparc/sparc.md (movsi_pic_label_ref): Likewise.
5893         (movdi_pic_label_ref): Likewise.
5894         * config/spu/spu.c (spu_split_immediate): Likewise.
5895         * config/alpha/alpha.md (various splitters): Remove test
5896         !no_new_pseudos || reload_completed.
5897         * config/ia64/ia64.c (ia64_output_mi_thunk): Don't set
5898         no_new_pseudos.
5899         * config/m68k/m68k.c (m68k_output_mi_thunk): Likewise.
5900         * config/mips/mips.c (mips_output_mi_thunk): Likewise.
5901         * config/rs6000/rs6000.c (rs6000_output_mi_thunk): Likewise.
5902         * config/score/score.c (th_output_mi_thunk): Likewise.
5903         * config/sh/sh.c (sh_output_mi_thunk): Likewise.
5904         * config/sparc/sparc.c (sparc_output_mi_thunk): Likewise.
5905
5906 2007-07-10  Kaz Kojima  <kkojima@gcc.gnu.org>
5907
5908         PR rtl-optimization/32664
5909         * mode-switching.c (create_pre_exit): Skip barrier insns.
5910
5911 2007-07-10  Zdenek Dvorak  <dvorakz@suse.cz>
5912
5913         * tree-scalar-evolution.c (scev_const_prop): Add arguments to
5914         force_gimple_operand_bsi.
5915         * tree-ssa-loop-ivopts.c (rewrite_use_nonlinear_expr,
5916         rewrite_use_compare): Ditto.
5917         * tree-ssa-address.c (gimplify_mem_ref_parts, create_mem_ref):
5918         Ditto.
5919         * tree-ssa-ifcombine.c (ifcombine_ifandif): Ditto.
5920         * tree-ssa-loop-prefetch.c (issue_prefetch_ref): Ditto.
5921         * lambda-code.c (replace_uses_equiv_to_x_with_y): Ditto.
5922         * tree-profile.c (prepare_instrumented_value,
5923         tree_gen_interval_profiler, tree_gen_pow2_profiler,
5924         tree_gen_one_value_profiler, tree_gen_ic_profiler,
5925         tree_gen_ic_func_profiler, tree_gen_average_profiler,
5926         tree_gen_ior_profiler): Ditto.
5927         * tree-ssa-reassoc.c (negate_value): Ditto.
5928         * matrix-reorg.c (transform_access_sites, transform_allocation_sites):
5929         Use force_gimple_operand_bsi.
5930         * tree-vect-transform.c (vect_update_ivs_after_vectorizer): Ditto.
5931         * tree-if-conv.c (add_to_dst_predicate_list,
5932         find_phi_replacement_condition): Ditto.
5933         * gimplify.c (force_gimple_operand_bsi): Add before and m arguments.
5934         Call mark_symbols_for_renaming for new statements.
5935         * tree-flow.h (force_gimple_operand_bsi): Declaration changed.
5936
5937 2007-07-10  Zdenek Dvorak  <dvorakz@suse.cz>
5938
5939         * cfghooks.c (remove_edge): New function.
5940         (redirect_edge_and_branch, remove_branch, merge_blocks): Updated
5941         loop exit rescans.
5942         * cfghooks.h (remove_edge): Declare.
5943         * cfg.c (remove_edge): Renamed to remove_edge_raw.
5944         * basic-block.h (remove_edge): Declaration changed to remove_edge_raw.
5945
5946 2007-07-09  Wolfgang Gellerich  <gellerich@de.ibm.com>
5947
5948         * optabs.h: Added declaration for signbit_optab.  
5949         * optabs.c: (init_optabs): Added initialization for signbit_optab.
5950         * genoptinit.c (optabs): Added entry for signbit insns.  
5951         * builtins.c (expand_builtin_signbit): Added code to use a signbit
5952         insn, if available.  
5953         * config/s390/s390.h (S390_TDC_SIGNBIT_SET): New constant.  
5954         * config/s390/s390.md (signbit<mode>2): New expander.  
5955
5956 2007-07-09  Richard Guenther  <rguenther@suse.de>
5957
5958         PR middle-end/32698
5959         * fold-const.c (fold_plusminus_mult_expr): Move constant
5960         arguments second to allow decomposing.
5961
5962 2007-07-09  Alexandre Oliva  <aoliva@oliva.athome.lsd.ic.unicamp.br>
5963
5964         Revert:
5965         2007-07-06  Alexandre Oliva  <aoliva@redhat.com>
5966         PR debug/23551
5967         * tree-ssa-copyrename.c (copy_rename_partition_coalesce):
5968         Disregard DECL_FROM_INLINE.
5969
5970 2007-07-09  Uros Bizjak  <ubizjak@gmail.com>
5971
5972         PR target/27855
5973         * doc/invoke.texi: Add ftree-reassoc flag.
5974         * common.opt (ftree-reassoc): New flag.
5975         * tree-ssa-reassoc.c (gate_tree_ssa_reassoc): New static function.
5976         (struct tree_opt_pass pass_reassoc): Use gate_tree_ssa_reassoc.
5977
5978 2007-07-09  Uros Bizjak  <ubizjak@gmail.com>
5979
5980         PR tree-optimization/32681
5981         * tree-if-conv.c (find_phi_replacement_condition): Use the condition
5982         saved in second_edge->aux when first_bb is a loop header.
5983
5984 2007-07-09  Jan HUbicka  <jh@suse.cz>
5985
5986         * cse.c (cse_insn): Avoid invalid sharing on trial replacement.
5987
5988 2007-07-09  Richard Guenther  <rguenther@suse.de>
5989
5990         * c-decl.c (start_function): Do not promote return type.
5991
5992 2007-07-08  Daniel Franke  <franke.daniel@gmail.com>
5993
5994         * function.c (do_warn_unused_parameter): Do not warn if
5995         TREE_NO_WARNING is set.
5996
5997 2007-07-08  Andreas Schwab  <schwab@suse.de>
5998
5999         * doc/invoke.texi (DEC Alpha/VMS Options): Fix typo.
6000
6001 2007-07-08  Sandra Loosemore  <sandra@codesourcery.com>
6002
6003         Revert this patch:
6004         2007-07-06  Sandra Loosemore  <sandra@codesourcery.com>
6005
6006         * c-opts.c (c_common_handle_option): Make DOLLARS_IN_IDENTIFIERS
6007         apply to assembly language, too.
6008         * doc/tm.texi (DOLLARS_IN_IDENTIFIERS): Update.
6009
6010 2007-07-07  Daniel Berlin  <dberlin@dberlin.org>
6011
6012         Revert (note the sccvn portions are *not* reverted)
6013         2007-07-06  Daniel Berlin  <dberlin@dberlin.org>
6014
6015         Fix PR tree-optimization/23488
6016
6017         * tree-vn.c (set_value_handle): Use decl_vh_map for decl value
6018         handles.
6019         * tree-flow-inline.h (get_value_handle): Ditto.
6020         * tree-ssa-pre.c (decl_vh_map): New.
6021         (decl_node_pool): New.
6022         (can_value_number_operation): Support DECL_P.
6023         (can_PRE_operation): Ditto.
6024         (create_expression_by_pieces): Ditto.
6025         (find_existing_value_expr): Modify to differnetiate between
6026         addressing and top level.
6027         (create_value_handle_for_expr): Handle DECL's.
6028         (poolify_tree): Ditto.
6029         (make_values_for_phi): Don't insert into PHI_GEN during FRE.
6030         (make_values_for_stmt): Handle DECL's properly.
6031         (init_pre): Reorg to not init useless things during FRE.
6032         (fini_pre): Ditto.
6033         * tree-flow.h: Include pointer-set.h.
6034         (decl_vh_map): Declare.
6035         * Makefile.in (TREE_FLOW_H): Add pointer-set.h
6036
6037 2007-07-07 Eric Weddington  <eweddington@cso.atmel.com>
6038
6039         * config/avr/constraints.md (define_memory_constraint "Q"): Fix
6040         the constraint description.
6041         * doc/md.texi: Update documentation of AVR constraints.
6042
6043 2007-07-07  Kazu Hirata  <kazu@codesourcery.com>
6044
6045         * auto-inc-dec.c, config/arm/arm.c,
6046         config/m32r/constraints.md, config/mips/mips.md,
6047         config/rs6000/rs6000.c, cselib.c, dce.c, df-core.c,
6048         df-problems.c, df-scan.c, df.h, dse.c, gimplify.c,
6049         tree-if-conv.c, tree-ssa-sccvn.c, tree-ssa.c: Fix comment
6050         typos.  Follow spelling conventions.
6051         * doc/invoke.texi, doc/rtl.texi: Fix typos.
6052
6053         * cfgrtl.c (delete_insn_chain_and_edges): Remove.
6054         * rtl.h: Remove the prototype for delete_insn_chain_and_edges.
6055
6056         * tree-ssa-operands.c (realloc_vop, realloc_vdef,
6057         realloc_vuse): Remove.
6058         * tree-ssa-operands.h: Remove the prototype for realloc_vdef
6059         and realloc_vuse.
6060
6061 2007-07-06  Daniel Berlin  <dberlin@dberlin.org>
6062
6063         Fix PR tree-optimization/23488
6064
6065         * tree-ssa-sccvn.c (expr_has_constants): Handle tcc_declaration.
6066         (try_to_simplify): Ditto.
6067         (visit_use): Ditto.
6068         * tree-vn.c (set_value_handle): Use decl_vh_map for decl value
6069         handles.
6070         * tree-flow-inline.h (get_value_handle): Ditto.
6071         * tree-ssa-pre.c (decl_vh_map): New.
6072         (decl_node_pool): New.
6073         (can_value_number_operation): Support DECL_P.
6074         (can_PRE_operation): Ditto.
6075         (create_expression_by_pieces): Ditto.
6076         (find_existing_value_expr): Modify to differnetiate between
6077         addressing and top level.
6078         (create_value_handle_for_expr): Handle DECL's.
6079         (poolify_tree): Ditto.
6080         (make_values_for_phi): Don't insert into PHI_GEN during FRE.
6081         (make_values_for_stmt): Handle DECL's properly.
6082         (init_pre): Reorg to not init useless things during FRE.
6083         (fini_pre): Ditto.
6084         * tree-flow.h: Include pointer-set.h.
6085         (decl_vh_map): Declare.
6086         * Makefile.in (TREE_FLOW_H): Add pointer-set.h
6087                 
6088 2007-07-06  Sandra Loosemore  <sandra@codesourcery.com>
6089
6090         * c-opts.c (c_common_handle_option): Make DOLLARS_IN_IDENTIFIERS
6091         apply to assembly language, too.
6092         * doc/tm.texi (DOLLARS_IN_IDENTIFIERS): Update.
6093
6094 2007-07-06  Ian Lance Taylor  <iant@google.com>
6095             Zack Weinberg  <zackw@panix.com>
6096
6097         PR middle-end/32441
6098         * builtins.c (std_expand_builtin_va_start): Don't use make_tree.
6099
6100 2007-07-06  Richard Sandiford  <richard@codesourcery.com>
6101
6102         * config/sh/sh.md (*prefetch_i4): Disable for TARGET_VXWORKS_RTP.
6103         (prefetch): Likewise if "pref" would be used.
6104
6105 2007-07-06  Josh Conner  <jconner@apple.com>
6106
6107         PR middle-end/32602
6108         PR middle-end/32603
6109         * calls.c (store_one_arg): Handle arguments which are partially
6110         on the stack when detecting argument overlap.
6111
6112 2007-07-06  Bernd Schmidt  <bernd.schmidt@analog.com>
6113
6114         * reload1.c (choose_reload_regs): Set reload_spill_index for regs
6115         chosen during find_reloads.
6116
6117 2007-07-06  Richard Guenther  <rguenther@suse.de>
6118
6119         * gimplify.c (gimplify_call_expr): Prefer DECL_ARGUMENTS over
6120         TYPE_ARG_TYPES for verification of argument types.  Use
6121         DECL_ARG_TYPE instead of the PARM_DECL type.  Take excess
6122         parameters as variable arguments.
6123
6124 2007-07-06  Andreas Krebbel  <krebbel1@de.ibm.com>
6125
6126         * libgcc2.h (word_type): Type definition removed.
6127         (cmp_return_type, shift_count_type): Type definitions added.
6128         (__lshrdi3, __ashldi3, __ashrdi3): word_type of second parameter
6129         replaced with shift_count_type.
6130         (__cmpdi2, __ucmpdi2): word_type of return type replaced with
6131         cmp_return_type.
6132         * libgcc2.c (__udivmoddi4, __moddi3): Type of local variable c
6133         changed from word_type to Wtype.
6134         (__lshrdi3, __ashldi3, __ashrdi3): word_type of second parameter
6135         replaced with shift_count_type.
6136         (__cmpdi2, __ucmpdi2): word_type of return type replaced with
6137         cmp_return_type.
6138         * c-common.c (handle_mode_attribute): Handling for libgcc_cmp_return
6139         and libgcc_shift_count attribute added.
6140         * target-def.h (TARGET_LIBGCC_CMP_RETURN_MODE,
6141         TARGET_LIBGCC_SHIFT_COUNT_MODE): New target hooks defined.
6142         (TARGET_INITIALIZER): New target hooks added.
6143         * targhooks.c (default_libgcc_cmp_return_mode,
6144         default_libgcc_shift_count_mode): Default implementations for the new
6145         target hooks added.
6146         * targhooks.h (default_libgcc_cmp_return_mode,
6147         default_libgcc_shift_count_mode): Function prototypes added.
6148         * target.h (struct gcc_target): Fields for the new target hooks added.
6149         * optabs.c (expand_binop): Use shift_count_mode when expanding shift
6150         as library call.
6151         (prepare_cmp_insn): Use cmp_return_mode when expanding comparison as
6152         library call.
6153
6154         * doc/tm.texi (TARGET_LIBGCC_CMP_RETURN_MODE,
6155         TARGET_LIBGCC_SHIFT_COUNT_MODE): Documentation added.
6156
6157         * config/s390/s390.c (s390_libgcc_cmp_return_mode,
6158         s390_libgcc_shift_count_mode): Functions added.
6159         (TARGET_LIBGCC_CMP_RETURN_MODE, TARGET_LIBGCC_SHIFT_COUNT_MODE):
6160         Target hooks defined.
6161
6162 2007-07-06  Richard Sandiford  <richard@codesourcery.com>
6163
6164         * config/mips/mips.c (compute_frame_size): Restore the original
6165         gp_sp_offset for !GENERATE_MIPS16E_SAVE_RESTORE and remove the
6166         fp_size term from the GENERATE_MIPS16E_SAVE_RESTORE calculation.
6167         Document why the difference is needed.
6168
6169 2007-07-06  Richard Guenther  <rguenther@suse.de>
6170
6171         * c-common.c (boolean_increment): Use correctly typed
6172         constant.
6173
6174 2007-07-06  Richard Sandiford  <richard@codesourcery.com>
6175
6176         * config/mips/mips.c (mips16e_save_restore_pattern_p): Check that
6177         the topmost argument register is not also included in the save mask.
6178         (mips16e_collect_argument_save_p): Take a pointer to the argument
6179         register, rather than a pointer to the number of arguments.
6180         (mips16e_collect_argument_saves): Only include argument saves
6181         that aren't in the register mask.
6182
6183 2007-07-06  Uros Bizjak  <ubizjak@gmail.com>
6184
6185         PR rtl-optimization/32450
6186         * function.c (thread_prologue_and_epilogue_insns): Emit blockage insn
6187         to ensure that instructions are not moved into the prologue when
6188         profiling is on.  Remove unused prologue_end variable.
6189         (expand_function_end): Emit blockage insn instead of ASM_INPUT rtx
6190         as a scheduling barrier.
6191
6192 2007-07-06  Alexandre Oliva  <aoliva@redhat.com>
6193
6194         PR debug/23551
6195         * tree-ssa-copyrename.c (copy_rename_partition_coalesce):
6196         Disregard DECL_FROM_INLINE.
6197
6198 2007-07-05  Adam Nemet  <anemet@caviumnetworks.com>
6199
6200         * rtlanal.c (num_sign_bit_copies1): Improve cases of ANDing or
6201         IORing with a constant.
6202
6203 2007-07-05  Seongbae Park  <seongbae.park@gmail.com>
6204
6205         PR rtl-optimization/32475
6206         * df-scan.c (df_def_record_1): Add a use of the stack pointer
6207         for every definition of the stack pointer.
6208
6209 2007-07-05  Richard Earnshaw  <rearnsha@arm.com>
6210
6211         * arm.c (vfp3_const_double_index): Copy signed results of
6212         REAL_VALUE_TO_INT into unsigned vars.
6213
6214 2007-07-05  Richard Guenther  <rguenther@suse.de>
6215
6216         PR middle-end/32639
6217         * alias.c (get_alias_set): Tread METHOD_TYPE the same as
6218         FUNCTION_TYPE.
6219         * tree-ssa.c (useless_type_conversion_p): Check canonical
6220         types early.
6221
6222 2007-07-05 Anatoly Sokolov <aesok@post.ru>
6223
6224         * config/avr/avr.md (zero_extendqihi2, zero_extendqisi2, 
6225         zero_extendhisi2): Change to define_insn_and_split. 
6226         (zero_extendqidi2, zero_extendhidi2, zero_extendsidi2): New.
6227
6228 2007-07-05  Paolo Bonzini  <bonzini@gnu.org>
6229
6230         * function.c (match_asm_constraints_1, rest_of_match_asm_constraints,
6231         pass_match_asm_constraints): New.
6232         * passes.c (init_optimization_passes): Add new pass.
6233         * stmt.c (expand_asm_operands): Set cfun->has_asm_statement.
6234         * function.h (struct function): Add has_asm_statement bit.
6235         (current_function_has_asm_statement): New.
6236         * tree-pass.h (pass_match_asm_constraints): New.
6237
6238 2007-07-05  Richard Sandiford  <rsandifo@nildram.co.uk>
6239
6240         * config/mips/mips.c (mips_file_start): Avoid declaration
6241         after code.
6242
6243 2007-07-05  Sandra Loosemore  <sandra@codesourcery.com>
6244
6245         * optabs.c (expand_binop_directly): Fix signed/unsigned comparison.
6246
6247 2007-07-05  Uros Bizjak  <ubizjak@gmail.com>
6248
6249         * rtl.def (NOTE): Change print format string to print
6250         operand 5 as a note insn name.
6251
6252 2007-07-05  Sandra Loosemore  <sandra@codesourcery.com>
6253             David Ung  <davidu@mips.com>
6254
6255         * config/mips/mips.c (mips_cpu_info): Add 4ksc and 4ksd processors.
6256         * doc/invoke.texi: (MIPS Options): Document them.
6257
6258 2007-07-05  Sandra Loosemore  <sandra@codesourcery.com>
6259             David Ung  <davidu@mips.com>
6260
6261         Add support for SmartMIPS ASE.
6262
6263         * optabs.c (expand_binop_directly): New, broken out from...
6264         (expand_binop): Here.  Make it try rotating in the other
6265         direction even when the second operand isn't constant.
6266         * config/mips/mips.md (*lwxs): New.
6267         * config/mips/mips.opt (msmartmips): New.
6268         * config/mips/mips.c (mips_lwxs_address_p): New.
6269         (mips_rtx_costs): Make it recognize scaled indexed addressing.
6270         * config/mips/mips.h (TARGET_CPU_CPP_BUILTINS): Define
6271         __mips_smartmips when compiling for TARGET_SMARTMIPS.
6272         (ISA_HAS_ROR): Define for TARGET_SMARTMIPS.
6273         (ISA_HAS_LWXS): New.
6274         (ASM_SPEC): Add -msmartmips/-mno-smartmips.
6275         * doc/invoke.texi (MIPS Options): Document -msmartmips/-mno-smartmips.
6276         * testsuite/gcc.target/mips/smartmips-lwxs.c: New test case.
6277         * testsuite/gcc.target/mips/smartmips-ror-1.c: New test case.
6278         * testsuite/gcc.target/mips/smartmips-ror-2.c: New test case.
6279         * testsuite/gcc.target/mips/smartmips-ror-3.c: New test case.
6280         * testsuite/gcc.target/mips/smartmips-ror-4.c: New test case.
6281
6282 2007-07-05  Dorit Nuzman  <dorit@il.ibm.com>
6283
6284         * tree-vectorizer.c (new_loop_vec_info): Initialize
6285         LOOP_VINFO_COST_MODEL_MIN_ITERS.
6286         * tree-vectorizer.h (_loop_vec_info): Added new filed
6287         min_profitable_iters.
6288         (LOOP_VINFO_COST_MODEL_MIN_ITERS): New access macro to above new field.
6289         (TARG_SCALAR_TO_VEC_COST): Define cost of scalar to vector operation.
6290         * tree-vect-analyze.c (vect_analyze_operations): Set
6291         LOOP_VINFO_COST_MODEL_MIN_ITERS.
6292         * tree-vect-transform.c (vect_estimate_min_profitable_iters): Use
6293         VEC_length to determine if there are any LOOP_VINFO_MAY_MISALIGN_STMTS.
6294         Fix calculation of peel_iters_prologue. Move consideration of epilogue
6295         and prologue cost to after they are computed.
6296         (vect_model_induction_cost): Use TARG_SCALAR_TO_VEC_COST instead of
6297         TARG_VEC_STMT_COST.
6298         (vect_model_simple_cost): Takes additional argument dt. Consider cost
6299         of creating vectors from scalars according to dt.
6300         (vect_model_store_cost): Likewise.
6301         (vectorizable_call): Use dt array instead of scalar dt. Call
6302         vect_model_simple_cost with additional argument dt.
6303         (vectorizable_assignment): Likewise.
6304         (vectorizable_operation): Likewise.
6305         (vectorizable_type_demotion): Likewise.
6306         (vectorizable_type_promotion): Likewise.
6307         (vectorizable_store): Use dt array instead of scalar dt. Call
6308         vect_model_store_cost with additional argument dt.
6309         (vect_do_peeling_for_loop_bound): Don't call
6310         vect_estimate_min_profitable_iters. Instead, lookup
6311         LOOP_VINFO_COST_MODEL_MIN_ITERS. Don't always print
6312         "may not be profitable".
6313
6314 2007-07-05  Dorit Nuzman  <dorit@il.ibm.com>
6315
6316         PR testsuite/32014
6317         * config/rs6000/altivec.md (UNSPEC_VUPKHS_V4SF, UNSPEC_VUPKLS_V4SF):
6318         (UNSPEC_VUPKHU_V4SF, UNSPEC_VUPKLU_V4SF): New.
6319         (vec_unpacks_float_hi_v8hi, vec_unpacks_float_lo_v8hi): New patterns.
6320         (vec_unpacku_float_hi_v8hi, vec_unpacku_float_lo_v8hi): New patterns. 
6321
6322 2007-07-05  Zdenek Dvorak  <dvorakz@suse.cz>
6323
6324         * config/i386/i386.c (ix86_address_cost): Do not consider more complex
6325         addressing modes cheaper.
6326
6327 2007-07-05  Alexandre Oliva  <aoliva@redhat.com>
6328
6329         * dwarf2out.c (dw_ranges_by_label_ref): New typedef.
6330         (dw_ranges_struct): Rename block_num to num.  Adjust.
6331         (dw_ranges_by_label_struct): New.
6332         (ranges_by_label, ranges_by_label_allocated,
6333         ranges_by_label_in_use): New variables.
6334         (add_ranges_num): Factored most of the code out of...
6335         (add_ranges): ... this one.  Rewrite in terms of the former.
6336         (add_ranges_by_labels): New.
6337         (output_ranges): Output by-label ranges.
6338         (dwarf2out_finish): Output range for multiple-section
6339         compile_unit.  Output standard DW_AT_low_pc in addition to
6340         unexpected DW_AT_entry_pc.
6341
6342 2007-07-04  Daniel Berlin  <dberlin@dberlin.org>
6343
6344         PR tree-optimization/32604
6345         PR tree-optimization/32606
6346
6347         * tree-ssa-pre.c (bb_bitmap_sets): Removed antic_safe_loads.
6348         (compute_antic_safe): Removed.
6349         (ANTIC_SAFE_LOADS): Ditto.
6350         (compute_antic_aux): Don't print ANTIC_SAFE_LOADS.
6351         (execute_pre): Don't call compute_antic_safe.
6352         (vuse_equiv): New function.
6353         (make_values_for_stmt): Use it
6354         * tree-ssa-sccvn.c (set_ssa_val_to): Remove assert, since it is
6355         not always true.
6356
6357 2007-07-04 Anatoly Sokolov <aesok@post.ru>
6358
6359         PR target/31331
6360         * config/avr/avr.c (avr_naked_function_p): Handle receiving a type
6361         rather than a decl. 
6362         (avr_attribute_table): Make "naked" attribute apply to function types
6363         rather than to decls.
6364         (avr_handle_fntype_attribute): New function.
6365
6366 2007-07-04  Joseph Myers  <joseph@codesourcery.com>
6367
6368         * target-def.h (TARGET_INITIALIZER): Remove trailing whitespace
6369         after \.
6370
6371 2007-07-04  David Ung  <davidu@mips.com>
6372             Joseph Myers  <joseph@codesourcery.com>
6373
6374         * config/mips/mips.md (type): Add logical, signext and move.
6375         (one_cmpl<mode>2, *and<mode>3, *and<mode>3_mips16, *ior<mode>3,
6376         *ior<mode>3_mips16, two unnamed insns after *ior<mode>3_mips16,
6377         *nor<mode>3, "Combiner patterns to optimize truncate/zero_extend
6378         combinations", *zero_extend<SHORT:mode><GPR:mode>2,
6379         *zero_extendqihi2, *extend<SHORT:mode><GPR:mode>2_mips16e,
6380         *extend<SHORT:mode><GPR:mode>2_se<SHORT:size>, *movdi_64bit,
6381         *movdi_64bit_mips16, *movsi_internal, *movsi_mips16, movcc,
6382         *movhi_internal, *movhi_mips16, *movqi_internal, *movqi_mips16,
6383         *movsf_hardfloat, *movsf_softfloat, *movsf_mips16,
6384         *movdf_hardfloat_64bit, *movdf_hardfloat_32bit,
6385         movv2sf_hardfloat_64bit): Use the new types.
6386         (*movdi_32bit, *movdi_gp32_fp64, *movdi_32bit_mips16,
6387         *movdf_softfloat, *movdf_mips16): Use "multi".
6388         (extendqihi2): Replace with a define_expand.
6389         (*extendqihi2_mips16e, *extendqihi2, *extendqihi2_seb): New.
6390         Based on extend<SHORT:mode><GPR:mode>2 patterns.
6391         * config/mips/74k.md (r74k_int_logical): New reservation and
6392         bypasses.
6393         (r74k_int_arith): Remove "slt".
6394         * config/mips/24k.md, config/mips/4130.md, config/mips/4k.md,
6395         config/mips/5400.md, config/mips/5500.md, config/mips/5k.md,
6396         config/mips/7000.md, config/mips/9000.md, config/mips/generic.md,
6397         config/mips/sb1.md, config/mips/sr71k.md: Add new types to
6398         reservations for "arith".
6399
6400 2007-07-04  Richard Guenther  <rguenther@suse.de>
6401
6402         * tree-ssa.c (useless_type_conversion_p): Add handling for
6403         scalar float and vector types.  Only call the types_compatible_p
6404         langhook for aggregate types as last resort.  Follow the
6405         rules.
6406
6407 2007-07-04  Richard Guenther  <rguenther@suse.de>
6408
6409         * tree-inline.c (estimate_num_insns_1): Treat CONVERT_EXPR
6410         the same as NOP_EXPR.
6411
6412 2007-07-04  Nick Clifton  <nickc@redhat.com>
6413
6414         * target.h (struct gcc_target): Add target_help field.
6415         * target-def.h (TARGET_HELP): New.
6416         (TARGET_INITIALIZER): Use TARGET_HELP.
6417         * opts.c (command_handle_option): Invoke target_help function, if
6418         defined, when the user has specified --target-help on the command
6419         line.
6420         * doc/invoke.texi: Mention that --target-help might print
6421         additional information.
6422         * doc/tm.texi: Document TARGET_HELP hook.
6423
6424         * arm.c (TARGET_HELP): Override default definition.
6425         (arm_target_help): New - display a wrapped list of cores and
6426         architectures supported.
6427
6428 2007-07-04  Rask Ingemann Lambertsen  <rask@sygehus.dk>
6429
6430         * config/v850/v850.c (expand_prologue): Make sure
6431         GEN_INT() argument is sign extended rather than zero extended.
6432         (expand_epilogue): Likewise.
6433         (output_move_double): Delete.
6434         * config/v850/v850-protos.h (output_move_double): Delete.
6435         * config/v850/v850.md (movdi): Delete.
6436         (*movdi_internal): Delete.
6437         (movdf): Delete.
6438         (*movdf_internal): Delete.
6439
6440 2007-07-04  Richard Sandiford  <richard@codesourcery.com>
6441
6442         * config/sh/vxworks.h (SUBTARGET_OVERRIDE_OPTIONS): Reject -mrelax
6443         unless compiling RTP PIC.
6444
6445 2007-07-04  Richard Guenther  <rguenther@suse.de>
6446
6447         PR tree-optimization/32482
6448         * tree-ssa-ifcombine.c (recognize_single_bit_test): Use the
6449         original ssa name if we didn't find a shift expression.
6450         Fix shift constant for bit zero test.
6451
6452 2007-07-04  Richard Sandiford  <richard@codesourcery.com>
6453
6454         * config/sh/lib1funcs.asm (ic_invalidate): Align constant pool.
6455
6456 2007-07-04  Richard Sandiford  <richard@codesourcery.com>
6457
6458         * config.gcc (arm-wrs-vxworks): Don't include svr4.h.
6459         * config/vxworks.h (PTRDIFF_TYPE, SIZE_TYPE, TARGET_POSIX_IO): Define.
6460         * config/arm/vxworks.h (ASM_SPEC): Delete.
6461         (SUBTARGET_EXTRA_ASM_SPEC): Define.
6462
6463 2007-07-04  Sebastian Pop  <sebpop@gmail.com>
6464
6465         * tree-data-ref.h (data_dependence_relation): New flag reversed_p.
6466         (DDR_REVERSED_P): New.
6467         * tree-data-ref.c (initialize_data_dependence_relation,
6468         build_classic_dist_vector): Set DDR_REVERSED_P.
6469
6470 2007-07-04  Sebastian Pop  <sebpop@gmail.com>
6471
6472         PR middle-end/32457
6473         * tree-data-ref.c (analyze_siv_subscript_cst_affine,
6474         compute_overlap_steps_for_affine_1_2, analyze_subscript_affine_affine,
6475         init_omega_for_ddr_1): Use non conservative number of iterations
6476         estimations.
6477         (analyze_subscript_affine_affine): Use HOST_WIDE_INT instead of int.
6478         (analyze_siv_subscript): Remove FIXME and reinitialization of 
6479         last_conflicts to chrec_dont_know.
6480         * testsuite/gfortran.dg/vect/pr32457.f90: New.
6481
6482 2007-07-04  Douglas Gregor  <doug.gregor@gmail.com>
6483
6484         * tree.c (maybe_canonicalize_argtypes): Improve description.
6485
6486 2007-07-04  Douglas Gregor  <doug.gregor@gmail.com>
6487
6488         * tree.c (maybe_canonicalize_argtypes): New.
6489         (build_function_type): Set canonical type.
6490         (build_method_type_directly): Ditto.
6491         (reconstruct_complex_type): Rebuild the METHOD_TYPE node
6492         properly.
6493
6494 2007-07-03  Andrew Pinski  <andrew_pinski@playstation.sony.com>
6495
6496         * tree-ssa-loop-ivopts.c (strip_offset_1): Treat POINTER_PLUS_EXPR
6497         like PLUS_EXPR.
6498         (rewrite_use_nonlinear_expr): Likewise.
6499
6500 2007-07-03  Seongbae Park  <seongbae.park@gmail.com>
6501
6502         * rtl.def (UNSPEC, USE, CLOBBER): More comments.
6503
6504 2007-07-04  Ben Elliston  <bje@au.ibm.com>
6505
6506         * dwarf2out.c: Move DWARF2 abbreviation glossary closer to the top
6507         of this file.
6508
6509         * c-objc-common.c (c_types_compatible_p): Fix indentation.
6510
6511         * doc/tm.texi (Run-time Target): Capitalise "CPU".
6512         (Exception Handling): Likewise.
6513
6514 2007-07-03  Jan Hubicka  <jh@suse.cz>
6515
6516         * ifcvt.c (find_cond_trap): Avoid invalid RTL sharing.
6517
6518 2007-07-03  Eric Christopher  <echristo@apple.com>
6519
6520         * doc/cppopts.texi: Add conflicting option note to -dM.
6521         * doc/invoke.texi: Add note about possible conflicts with
6522         -E for -dCHARS and note that -dM will not produce
6523         any results if there is no machine dependent reorg.
6524         
6525 2007-07-03  Geoffrey Keating  <geoffk@apple.com>
6526
6527         * tree.h (DECL_ALIGN): Back out previous change.
6528
6529 2007-07-03  Joseph Myers  <joseph@codesourcery.com>
6530
6531         * configure.ac: Test for .dtprelword support on MIPS.
6532         * configure, config.in: Regenerate.
6533         * config/mips/mips.c (mips_output_dwarf_dtprel): New.
6534         (TARGET_ASM_OUTPUT_DWARF_DTPREL): Define.
6535
6536 2007-07-03  Julian Brown  <julian@codesourcery.com>
6537
6538         * config.gcc (with_fpu): Allow --with-fpu=vfp3.
6539         * config/arm/aout.h (REGISTER_NAMES): Add D16-D31.
6540         * config/arm/aof.h (REGISTER_NAMES): Add D16-D31.
6541         * config/arm/arm.c (FL_VFPV3): New flag for VFPv3 processor
6542         capability.
6543         (all_fpus): Add FPUTYPE_VFP3.
6544         (fp_model_for_fpu): Add VFPv3 field.
6545         (arm_rtx_costs_1): Give cost to VFPv3 constants.
6546         (vfp3_const_double_index): New function. Return integer index of
6547         VFPv3 constant suitable for fconst[sd] insns, or -1 if constant
6548         isn't suitable.
6549         (vfp3_const_double_rtx): New function. True if VFPv3 is enabled
6550         and argument represents a valid RTX for a VFPv3 constant.
6551         (vfp_output_fldmd): Split fldmd with > 16 registers in the list into
6552         two instructions.
6553         (vfp_emit_fstmd): Similar, for fstmd.
6554         (arm_print_operand): Implement new code 'G' for VFPv3 floating-point
6555         constants, represented as integer indices.
6556         (arm_hard_regno_mode_ok): Use VFP_REGNO_OK_FOR_SINGLE,
6557         VFP_REGNO_OK_FOR_DOUBLE macros.
6558         (arm_regno_class): Handle VFPv3 d0-d7, low, high register split.
6559         (arm_file_start): Set float-abi attribute for VFPv3, and output
6560         correct ".fpu" assembler directive.
6561         (arm_dbx_register_numbering): Add FIXME.
6562         * config/arm/arm.h (TARGET_VFP3): New macro. Target supports VFPv3.
6563         (fputype): Add FPUTYPE_VFP3.
6564         (FIXED_REGISTERS): Add 32 registers for D16-D31.
6565         (CALL_USED_REGISTERS): Likewise.
6566         (CONDITIONAL_REGISTER_USAGE): Add note about conditional definition
6567         of LAST_VFP_REGNUM. Make D16-D31 caller-saved, if present.
6568         (LAST_VFP_REGNUM): Extend available VFP registers for VFPv3.
6569         (D7_VFP_REGNUM): New.
6570         (LAST_LO_VFP_REGNUM, FIRST_HI_VFP_REGNUM, LAST_HI_VFP_REGNUM)
6571         (VFP_REGNO_OK_FOR_SINGLE, VFP_REGNO_OK_FOR_SINGLE)
6572         (VFP_REGNO_OK_FOR_DOUBLE): Define new macros.
6573         (FIRST_PSEUDO_REGISTER): Shift up to 128 to accommodate VFPv3.
6574         (REG_ALLOC_ORDER): Adjust for VFPv3.
6575         (reg_class): Add VFP_D0_D7_REGS, VFP_LO_REGS, VFP_HI_REGS.
6576         (REG_CLASS_NAMES): Add entries corresponding to VFP_D0_D7_REGS,
6577         VFP_LO_REGS, VFP_HI_REGS.
6578         (REG_CLASS_CONTENTS): Likewise. Extend contents for VFP_REGS.
6579         (IS_VFP_CLASS): Define macro.
6580         (SECONDARY_OUTPUT_RELOAD_CLASS, SECONDARY_INPUT_RELOAD_CLASS): Use
6581         IS_VFP_CLASS.
6582         (REGISTER_MOVE_COST): Likewise.
6583         * config/arm/arm-protos.h (vfp3_const_double_rtx): Add prototype.
6584         * config/arm/vfp.md (VFPCC_REGNUM): Redefine as 127.
6585         (*arm_movsi_vfp, *thumb2_movsi_vfp, *movsfcc_vfp)
6586         (*thumb2_movsfcc_vfp, *abssf2_vfp, *negsf2_vfp, *addsf3_vfp)
6587         (*subsf3_vfp, *divsf_vfp, *mulsf_vfp, *mulsf3negsf_vfp)
6588         (*mulsf3addsf_vfp, *mulsf3subsf_vfp, *mulsf3negsfaddsf_vfp)
6589         (*extendsfdf2_vfp, *truncdfsf2_vfp, *truncsisf2_vfp)
6590         (*truncsidf2_vfp, fixuns_truncsfsi2, fixuns_truncdfsi2)
6591         (*floatsisf2_vfp, *floatsidf2_vfp, floatunssisf2)
6592         (floatunssidf2, *sqrtsf2_vfp, *cmpsf_split_vfp)
6593         (*cmpsf_trap_split_vfp, *cmpsf_vfp, *cmpsf_trap_vfp): Use 't'
6594         where appropriate for single-word registers.
6595         (*movsf_vfp, *thumb2_movsf_vfp, *movdf_vfp, *thumb2_movdf_vfp):
6596         As above. Fix type attributes.
6597         * config/arm/constraints.md (register_contraint "t"): Define.
6598         (register_constraint "w"): Change to D0-D15, or D0-D31 for
6599         VFPv3/NEON.
6600         (register_constraint "x"): Define.
6601         (constraint "Dv"): Define.
6602
6603 2007-07-03  Geoffrey Keating  <geoffk@apple.com>
6604
6605         * tree.h (DECL_ALIGN): Prevent use on a FUNCTION_DECL.
6606
6607 2007-07-03  Tom Tromey  <tromey@redhat.com>
6608
6609         * c-parser.c (objc_pq_context): Removed.
6610         (objc_need_raw_identifier): Likewise.
6611         (c_parser) <objc_pq_context>: New field.
6612         <objc_need_raw_identifier>: Likewise.
6613         (OBJC_NEED_RAW_IDENTIFIER): Removed.
6614         (c_lex_one_token): Update.
6615         (c_parser_objc_protocol_definition): Update.
6616         (c_parser_objc_method_definition): Update.
6617         (c_parser_objc_methodproto): Update.
6618         (c_parser_declspecs): Update.
6619
6620 2007-07-03  David Ung  <davidu@mips.com>
6621
6622         * config/mips/mips.c (mips_issue_rate): Return 4 for 74K processors.
6623
6624 2007-07-03  David Ung  <davidu@mips.com>
6625             Richard Sandiford  <richard@codesourcery.com>
6626
6627         * doc/invoke.texi: Document -march=74kf3_2.
6628         * config/mips/mips.h (PROCESSOR_74KF3_2): New processor_type.
6629         (TUNE_74K): Check for it.
6630         * config/mips/mips.c (mips_cpu_info): Add 74kf3_2.
6631         (mips_rtx_cost_data): Add an entry for PROCESSOR_74KF3_2.
6632         * config/mips/mips.md (cpu): Add 74kf3_2.
6633         * config/mips/74k.md (r74k_int_logical, r74k_int_arith, r74k_int_nop)
6634         (r74k_int_cmove, r74k_int_mult, r74k_int_mul3, r74k_int_mfhilo)
6635         (r74k_int_mthilo, r74k_int_div, r74k_int_call, r74k_int_jump)
6636         (r74k_int_load, r74k_int_store, r74k_unknown, r74k_multi): Add
6637         74kf3_2 to the CPU list.
6638         (r74kf3_2_fadd, r74kf3_2_fmove, r74kf3_2_fload, r74kf3_2_fstore)
6639         (r74kf3_2_fmul_sf, r74kf3_2_fmul_df, r74kf3_2_fdiv_sf)
6640         (r74kf3_2_fdiv_df, r74kf3_2_frsqrt_sf, r74kf3_2_frsqrt_df)
6641         (r74kf3_2_fcmp, r74kf3_2_fcvt, r74kf3_2_fxfer_to_c1)
6642         (r74kf3_2_fxfer_from_c1): New insn reservations.
6643
6644 2007-07-03  Richard Sandiford  <richard@codesourcery.com>
6645             David Ung  <davidu@mips.com>
6646
6647         * doc/invoke.texi: Replace -march=24kf with -march=24kf2_1 and
6648         -march=24kx with -march=24kf1_1.  Likewise 24ke[fx], 34k[fx]
6649         and 74k[fx].  Document aliases for the new options.
6650         * config/mips/mips.h (PROCESSOR_24KF): Rename to...
6651         (PROCESSOR_24KF2_1): ...this.
6652         (PROCESSOR_24KX): Rename to...
6653         (PROCESSOR_24KF1_1): ...this.
6654         (PROCESSOR_74KF): Rename to...
6655         (PROCESSOR_74KF2_1): ...this.
6656         (PROCESSOR_74KX): Rename to...
6657         (PROCESSOR_74KF1_1): ...this.
6658         (TUNE_74K): Update PROCESSOR_* names.
6659         * config/mips/mips.c (mips_cpu_info): Add 24kf2_1 as a synonym
6660         for 24kf.  Add 24kf1_1 and 24kfx as synonyms for 24kx.  Likewise
6661         the 24ke*, 34k* and 74k* processors.  Update PROCESSOR_* names.
6662         (mips_rtx_cost_data): Update processor names in comments.
6663         (mips_issue_rate): Update PROCESSOR_* names.
6664         * config/mips/mips.md (cpu): Rename 24kf to 24kf2_1, 24kx to
6665         24kf1_1, 74kf to 74kf2_1 and 74kx to 74kf1_1.
6666         * config/mips/24k.md: Rename FPU-related r24k_* insn reservations
6667         to r24kf2_1_*.  Rename r24kx_* insn reservations to r24kf1_1_*.
6668         Update cpu attribute names.
6669         (r24k_fpu_iss): Rename this reservation to...
6670         (r24kf2_1_fpu_iss): ...this and update all uses.
6671         (r24kx_fpu_iss): Rename this reservation to...
6672         (r24kf1_1_fpu_iss): ...this and update all uses.
6673         * config/mips/74k.md: Rename FPU-related r74kf_* insn reservations
6674         to r74kf2_1_*.  Rename r74kx_* insn reservations to r74kf1_1_*.
6675         Update cpu attribute names.
6676
6677 2007-07-01  Kaz Kojima  <kkojima@gcc.gnu.org>
6678
6679         * config/m32r/constraints.md: New file.
6680         * config/m32r/m32r.c: Include tm-constrs.h.
6681         (small_data_operand): Use satisfies_constraint_* instead of macro.
6682         (addr24_operand, gen_compare): Likewise.
6683         * config/m32r/m32r.h (REG_CLASS_FROM_LETTER): Remove.
6684         (INT8_P, UPPER16_P, UINT32_P, UINT5_P, INVERTED_SIGNED_8BIT,
6685         CONST_OK_FOR_LETTER_P, CONST_DOUBLE_OK_FOR_LETTER_P,
6686         EXTRA_CONSTRAINT): Likewise.
6687         * config/m32r/m32r.md: Include constraints.md.
6688         (*movsi_insn): Use satisfies_constraint_* instead of macro.
6689         (andsi3, iorsi3, xorsi3, seq_insn+1, sne): Likewise.
6690         * config/m32r/predicates.md (conditional_move_operand): Likewise.
6691         (two_insn_const_operand, int8_operand, uint16_operand,
6692         reg_or_int16_operand, reg_or_uint16_operand,
6693         reg_or_cmp_int16_operand, cmp_int16_operand,
6694         seth_add3_operand): Likewise.
6695
6696 2007-07-03  Eric Christopher  <echristo@gmail.com>
6697
6698         * libgcc2.h: Conditionally declare __bswapsi2 and
6699         __bswapdi2.
6700         
6701 2007-07-03  H.J. Lu  <hongjiu.lu@intel.com>
6702
6703         * ddg.c (check_sccs): Define only if ENABLE_CHECKING is
6704         defined.
6705
6706 2007-07-03  Rainer Orth  <ro@TechFak.Uni-Bielefeld.DE>
6707
6708         PR target/28307
6709         * gthr-posix.h [SUPPORTS_WEAK && GTHREAD_USE_WEAK]
6710         (__gthrw_pragma): Provide default definition.
6711         (__gthrw2): Use it.
6712         * gthr-posix.c (__gthrw_pragma): Define.
6713
6714 2007-07-03  Daniel Berlin  <dberlin@dberlin.org>
6715
6716         * tree-ssa-sccvn.c (set_ssa_val_to): Check for operand_equal_p
6717         before declaring inequality.
6718
6719 2007-07-03  Rask Ingemann Lambertsen  <rask@sygehus.dk>
6720
6721         * combine.c (recog_for_combine): Log the success or failure of
6722           matching new insn patterns against the machine description in
6723           detailed dumps.
6724
6725 2007-07-03  Revital Eres  <eres@il.ibm.com>
6726
6727         * ddg.c (print_sccs): New function.
6728         (check_sccs): New function.
6729         (create_ddg_all_sccs): Use it.
6730         * ddg.h (print_sccs): Declare.
6731         * modulo-sched.c (sms_order_nodes): Call print_sccs.
6732
6733 2007-07-03  Uros Bizjak  <ubizjak@gmail.com>
6734
6735         * targhooks.h (default_mode_for_suffix): New function declaration.
6736         * targhooks.c (default_mode_for_suffix): New default target hook.
6737         * target.h (struct c): New structure in the targetm struct.
6738         (mode_for_suffix): New target hook as part of struct c.
6739         target-def.h (TARGET_C_MODE_FOR_SUFFIX): Define as
6740         default_mode_for_suffix.
6741         (TARGET_C): New define.
6742         * c-lex.c: Include "target.h".
6743         (interpret_float): Use targetm.c.mode_for_suffix to determine
6744         the mode for a given non-standard suffix.
6745         Makefile.in (c-lex.o): Depend on $(TARGET_H).
6746
6747         * config/i386/i386.c (ix86_c_mode_for_suffix): New static function.
6748         (TARGET_C_MODE_FOR_SUFFIX): Define to ix86_c_mode_for_suffix.
6749
6750         * doc/extend.texi (Floating Types): New node.  Document __float80 and
6751         __float128 types.  Document 'w', 'W', 'q' and 'Q' suffixes.
6752
6753 2007-07-03  Kaz Kojima  <kkojima@gcc.gnu.org>
6754
6755         PR target/32506
6756         * config/sh/sh.md (udivsi3_i1_media): Use target_reg_operand
6757         predicate instead of target_operand.
6758         (divsi3_i1_media, divsi3_media_2): Likewise.
6759
6760 2007-07-02  Eric Botcazou  <ebotcazou@adacore.com>
6761
6762         * tree.h (alias_sets_might_conflict_p): Rename into
6763         alias_sets_must_conflict_p.
6764         * alias.c (alias_sets_might_conflict_p): Likewise.
6765         (alias_sets_conflict_p): Use it.
6766         (objects_must_conflict_p): Likewise.
6767         * c-common.c (strict_aliasing_warning): Adjust.
6768
6769 2007-07-02  Andrew Pinski  <andrew_pinski@playstation.sony.com>
6770
6771         * rtlhooks.c (gen_lowpart_if_possible): Check for
6772         invalid subreg before calling gen_lowpart_SUBREG.
6773
6774 2007-07-02  Geoffrey Keating  <geoffk@apple.com>
6775
6776         * config/darwin9.h: Add copyright notice.
6777         (LINK_COMMAND_SPEC): Add comment.
6778         (DARWIN_LIBSYSTEM_HAS_UNWIND): Define.
6779         * config/rs6000/darwin.h (MD_UNWIND_SUPPORT): Conditionalise on
6780         DARWIN_LIBSYSTEM_HAS_UNWIND.
6781
6782 2007-07-02  Jakub Jelinek  <jakub@redhat.com>
6783
6784         PR libgomp/32468
6785         * omp-low.c (check_combined_parallel): New function.
6786         (lower_omp_parallel): Call it via walk_stmts, set
6787         OMP_PARALLEL_COMBINED if appropriate.
6788         (determine_parallel_type): If OMP_FOR resp. OMP_SECTIONS
6789         isn't the only statement in WS_ENTRY_BB or OMP_RETURN
6790         the only one in PAR_EXIT_BB and not OMP_PARALLEL_COMBINED,
6791         don't consider it as combined parallel.
6792
6793 2007-07-02  Richard Sandiford  <richard@codesourcery.com>
6794
6795         * configure.ac (gcc_gxx_include_dir): Use $(libsubdir_to_prefix).
6796         (gcc_tooldir): Likewise.
6797         * configure: Regenerate.
6798         * Makefile.in (libsubdir_to_prefix): New variable, based on the
6799         old configure.ac gcc_tooldir setting.
6800         (prefix_to_exec_prefix): New variable.
6801         (DRIVER_DEFINES): Use $(libsubdir_to_prefix)$(prefix_to_exec_prefix)
6802         rather than $(unlibsubdir)/../ to derive TOOLDIR_BASE_PREFIX.
6803
6804 2007-07-02  Daniel Berlin  <dberlin@dberlin.org>
6805
6806         Fix PR tree-optimization/32583
6807         Fix PR tree-optimization/32584
6808         * tree-ssa-pre.c (phi_translate): Always pass seen bitmap.
6809         (phi_translate_set): Use phi_translate directly now.
6810         (make_values_for_stmt): Don't value number RHS if we already know
6811         it is constant.
6812
6813 2007-07-02  Steve Ellcey  <sje@cup.hp.com>
6814             Jim Wilson <wilson@specifix.com>
6815
6816         PR target/31684
6817         * haifa-sched.c (add_to_speculative_block): Change copy_rtx to
6818         copy_insn.
6819
6820 2007-07-02  Sandra Loosemore  <sandra@codesourcery.com>
6821             Richard Sandiford  <richard@codesourcery.com>
6822             Nigel Stephens  <nigel@mips.com>
6823
6824         * config/mips/mips-protos.h (mips16e_save_restore_info): New struct.
6825         (mips16e_output_save_restore): Declare.
6826         (mips16e_save_restore_pattern_p): Likewise.
6827         * config/mips/mips.h (GENERATE_MIPS16E_SAVE_RESTORE): New macro.
6828         * config/mips/mips.c (MIPS_MAX_FIRST_STACK_STEP): Return 0x7f8
6829         for GENERATE_MIPS16E_SAVE_RESTORE.  Return 0x400 for TARGET_MIPS16
6830         && !GENERATE_MIPS16E_SAVE_RESTORE && !TARGET_64BIT.
6831         (BITSET_P): New global macro, extracted from...
6832         (mips_for_each_saved_reg): ...here.
6833         (mips16e_save_restore_info): New struct.
6834         (mips16e_s2_s8_regs, mips16e_a0_a3_regs): New variables.
6835         (mips16e_save_restore_regs): New variable.
6836         (mips_split_plus, mips16e_find_first_register): New functions.
6837         (mips16e_mask_registers): New function.
6838         (compute_frame_size): Expand the commentary before the function.
6839         Enforce the MIPS16e save and restore register range restrictions.
6840         Pad the general register save area at the low end.
6841         (mips16e_save_restore_reg, mips16e_build_save_restore)
6842         (mips16e_save_restore_pattern_p, mips16e_add_register_range)
6843         (mips16e_output_save_restore, mips16e_collect_propagate_value)
6844         (mips16e_collect_argument_save, mips16e_collect_argument_saves):
6845         New functions.
6846         (mips_expand_prologue, mips_expand_epilogue): Handle
6847         GENERATE_MIPS16E_SAVE_RESTORE.
6848         * config/mips/mips.md (*mips16e_save_restore): New pattern.
6849
6850 2007-07-02  Uros Bizjak  <ubizjak@gmail.com>
6851
6852         PR tree-optimization/31966
6853         PR tree-optimization/32533
6854         * tree-if-conv.c (add_to_dst_predicate_list): Use "edge", not
6855         "basic_block" description as its third argument.  Update function
6856         calls to get destination bb from "edge" argument.  Save "cond" into
6857         aux field of the edge.  Update prototype for changed arguments.
6858         (if_convertible_loop_p): Clear aux field of incoming edges if bb
6859         contains phi node.
6860         (find_phi_replacement_condition): Operate on incoming edges, not
6861         on predecessor blocks.  If there is a condition saved in the
6862         incoming edge aux field, AND it with incoming bb predicate.
6863         Return source bb of the first edge.
6864         (clean_predicate_lists): Clean aux field of outgoing node edges.
6865         (tree_if_conversion): Do not initialize cond variable. Move
6866         variable declaration into the loop.
6867         (replace_phi_with_cond_gimple_modify_stmt): Remove unneded
6868         initializations of new_stmt, arg0 and arg1 variables.
6869
6870 2007-07-02  Jakub Jelinek  <jakub@redhat.com>
6871
6872         * tree-nrv.c (dest_safe_for_nrv_p): Grok any handled_component_p,
6873         SSA_NAMEs, RESULT_DECLs and PARM_DECLs.
6874
6875 2007-07-02  Richard Guenther  <rguenther@suse.de>
6876
6877         * tree-ssa.c (useless_type_conversion_p): Document
6878         future intent as defining the middle-end type system.
6879         Re-structure to call langhook last, group by type class,
6880         mark questionable parts.
6881
6882 2007-07-02  Richard Guenther  <rguenther@suse.de>
6883
6884         * tree-flow.h (types_compatible_p): Declare.
6885         * tree-ssa.c (types_compatible_p): New function.
6886         * ipa-type-escape.c (discover_unique_type): Use
6887         types_compatible_p instead of lang_hooks.types_compatible_p.
6888         * tree-ssa-copyrename.c (copy_rename_partition_coalesce): Likewise.
6889         * tree-vn.c (expressions_equal_p): Likewise.
6890         * tree.c (fields_compatible_p): Likewise.
6891         * tree-ssa-dom.c (avail_expr_eq): Likewise.
6892         (cprop_operand): Use useless_type_conversion_p instead of
6893         lang_hooks.types_compatible_p.
6894         * tree-inline.c (setup_one_parameter): Likewise.
6895         (declare_return_variable): Likewise.
6896         * tree-nrv.c (tree_nrv): Likewise.
6897         * tree-ssa-ccp.c (maybe_fold_offset_to_array_ref): Likewise.
6898         (maybe_fold_offset_to_component_ref): Likewise.
6899         (maybe_fold_offset_to_reference): Likewise.
6900         * tree-ssa-copy.c (may_propagate_copy): Likewise.
6901         (merge_alias_info): Likewise.
6902         * tree-ssa-forwprop.c (forward_propagate_addr_expr_1): Likewise.
6903         * tree-ssa-phiopt.c (conditional_replacement): Likewise.
6904         * tree-ssa-reassoc.c (optimize_ops_list): Likewise.
6905         * tree-tailcall.c (find_tail_calls): Likewise.
6906         * tree-vect-generic.c (expand_vector_operations_1): Likewise.
6907         * gimplify.c (canonicalize_addr_expr): Likewise.
6908         (fold_indirect_ref_rhs): Likewise.
6909         (gimplify_addr_expr): Likewise.  Swap parameters to cpt_same_type.
6910         (cpt_same_type): Likewise.
6911         (check_pointer_types_r): Swap parameters to cpt_same_type
6912         where appropriate.
6913         * fold-const.c (fold_convert): Revert fix for PR15988.
6914         * tree-inline.c (setup_one_parameter): Instead fix it here by
6915         using fold_build1 instead of fold_convert and checking for
6916         error_mark_node.  Convert only if the conversion is necessary.
6917
6918 2007-07-02  Joseph Myers  <joseph@codesourcery.com>
6919
6920         * configure.ac: Check for .gnu_attribute on Power.
6921         * configure: Regenerate.
6922         * config/rs6000/rs6000.c (rs6000_file_start): If supported, output
6923         attribute for floating-point ABI.
6924
6925 2007-07-02  Ira Rosen  <irar@il.ibm.com>
6926
6927         PR tree-optimization/32230
6928         PR tree-optimization/32477
6929         * tree-vect-analyze.c (vect_analyze_data_refs): Fail if base 
6930         address is a constant.
6931
6932 2007-07-02  Richard Sandiford  <richard@codesourcery.com>
6933
6934         * config.gcc (mipsisa32-*-elf*, mipsisa32el-*-elf*)
6935         (mipsisa32r2-*-elf*, mipsisa32r2el-*-elf*)
6936         (mipsisa64-*-elf*, mipsisa64el-*-elf*): Combine top-level
6937         stanzas.  Use the first part of the triplet to set MIPS_ISA_DEFAULT.
6938         Remove redundant setting of MASK_FLOAT64 and MASK_64BIT for the
6939         64-bit targets.  Add support for *-elfoabi*.
6940         * config/mips/t-isa3264 (MULTILIB_OPTIONS, MULTILIB_DIRNAMES): Use
6941         different settings if $(tm_defines) does not select the EABI.
6942         (MULTILIB_EXCLUSIONS): Define in those circumstances.
6943         * config/mips/mips.h (MIPS_ISA_LEVEL_OPTION_SPEC): New macro.
6944         (MIPS_ARCH_OPTION_SPEC): Likewise.
6945         (MIPS_ISA_LEVEL_SPEC): Likewise.
6946         (OPTION_DEFAULT_SPECS): Use MIPS_ARCH_OPTION_SPEC.
6947         * config/mips/elfoabi.h: New file.
6948
6949 2007-07-02  Richard Guenther  <rguenther@suse.de>
6950
6951         * tree-flow.h (tree_ssa_useless_type_conversion_1): Rename to ...
6952         (useless_type_conversion_p): ... this.
6953         * tree-ssa.c (tree_ssa_useless_type_conversion_1): Rename to ...
6954         (useless_type_conversion_p): ... this.
6955         * builtins.c (fold_builtin_memory_op): Rename
6956         tree_ssa_useless_type_conversion_1 to useless_type_conversion_p.
6957         * tree-cfg.c (verify_expr): Likewise.
6958         * tree-ssa-address.c (tree_ssa_useless_type_conversion_1): Likewise.
6959         * tree-ssa-ccp.c (ccp_fold): Likewise.
6960         * tree-ssa-copy.c (may_propagate_copy): Likewise.
6961         * tree-ssa-dom.c (eliminate_redundant_computations): Likewise.
6962         * tree-ssa-forwprop.c (forward_propagate_addr_expr_1): Likewise.
6963         * tree-ssa-loop-niter.c (refine_bounds_using_guard): Likewise.
6964         * tree-ssa-pre.c (eliminate): Likewise.
6965         * tree-ssa.c (delete_tree_ssa): Likewise.
6966         (tree_ssa_useless_type_conversion): Likewise.
6967         * tree.c (build2_stat): Likewise.
6968
6969 2007-07-01  Daniel Berlin  <dberlin@dberlin.org>
6970
6971         Fix PR tree-optimization/32571
6972         * tree-ssa-sccvn.c (visit_use): Shortcut copies to avoid
6973         simplifying them.
6974
6975 2007-07-01  Daniel Berlin  <dberlin@dberlin.org>
6976
6977         * tree-ssa-sccvn.c (copy_reference_ops_from_ref): Handle constants
6978         and other expected operations explicitly, change default to
6979         gcc_unreachable. 
6980
6981 2007-07-01  Daniel Jacobowitz  <dan@codesourcery.com>
6982
6983         * config/arm/arm.c (arm_cannot_copy_insn_p): Do not expect a
6984         PARALLEL.
6985         * config/arm/arm.md (pic_add_dot_plus_four, pic_add_dot_plus_eight)
6986         (tls_load_dot_plus_eight): Move the label number into the unspec.
6987         * config/arm/thumb2.md (pic_load_dot_plus_four): Likewise.
6988
6989 2007-07-01  Andreas Schwab  <schwab@suse.de>
6990
6991         * dwarf2out.c (initial_return_save): Define only if used.
6992
6993 2007-07-01  Kenneth Zadeck <zadeck@naturalbridge.com>
6994
6995         Unreverting Richard's Revert of:
6996
6997         2007-06-27  Richard Sandiford  <richard@codesourcery.com>
6998
6999         * dce.c (deletable_insn_p_1): New function, split out from...
7000         (deletable_insn_p): ...here.  Only treat bare USEs and CLOBBERs
7001         specially, not those inside PARALLELs.  Remove BODY argument
7002         and adjust recursive call accordingly.
7003         (prescan_insns_for_dce): Update call to delete_insn_p.
7004
7005 2007-07-01  Vladimir Yanovsky  <yanov@il.ibm.com>
7006             Revital Eres  <eres@il.ibm.com>
7007
7008         * ddg.c (create_ddg_all_sccs): Fix missed
7009         initialization of scc_nodes.
7010
7011 2007-07-01  Uros Bizjak  <ubizjak@gmail.com>
7012
7013         PR middle-end/32559
7014         * fold-const.c (fold-binary) [PLUS_EXPR]: Convert ~X + X to 1 or
7015         X + ~X to 1 only for INTEGRAL_TYPE_P type.
7016
7017 2007-06-30  Joseph Myers  <joseph@codesourcery.com>
7018
7019         * configure.ac: Check for .gnu_attribute on MIPS.
7020         * configure, config.in: Regenerate.
7021         * config/mips/mips.c (mips_file_start): If supported, output
7022         attribute for floating-point ABI.
7023
7024 2007-06-30  Uros Bizjak  <ubizjak@gmail.com>
7025
7026         PR target/32433
7027         * config/i386/i386.md (ffssi2): Expand as ffs_cmove for TARGET_CMOVE.
7028         (ffs_cmove): New expander to expand using ctz pattern.
7029         (*ffs_cmove): Remove pattern.
7030         (*ffs_no_cmove): Enable only for !TARGET_CMOVE.
7031         (ffsdi2): Expand using ctz pattern.
7032         (*ffs_rex64): Remove pattern.
7033
7034 2007-06-30  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
7035
7036         PR rtl-optimization/32296
7037         * pa.md (return): Delete pattern.
7038         (return_internal): Remove "(const_int 1)" from pattern.
7039         (epilogue): Use return_internal pattern for trivial returns.
7040         * pa-protos.h (hppa_can_use_return_insn_p): Delete declaration.
7041         * pa.c (hppa_can_use_return_insn_p): Delete function.  Include "df.h".
7042
7043 2007-06-30  Daniel Berlin  <dberlin@dberlin.org>
7044
7045         * tree-ssa-pre.c (is_exception_related): New function
7046         (can_value_number_operation): Use it.
7047
7048 2007-06-30  Daniel Berlin  <dberlin@dberlin.org>
7049         
7050         Fix PR tree-optimization/32540
7051         Fix PR tree-optimization/31651
7052
7053         * tree-ssa-sccvn.c: New file.
7054
7055         * tree-ssa-sccvn.h: Ditto.
7056         
7057         * tree-vn.c: Include tree-ssa-sccvn.h
7058         (val_expr_paid_d): Removed.
7059         (value_table): Ditto.
7060         (vn_compute): Ditto.
7061         (val_expr_pair_hash): Ditto.
7062         (val_expr_pair_expr_eq): Ditto.
7063         (copy_vuses_from_stmt): Ditto.
7064         (vn_delete): Ditto.
7065         (vn_init): Ditto.
7066         (shared_vuses_from_stmt): Ditto.
7067         (print_creation_to_file): Moved up.
7068         (sort_vuses): Ditto.
7069         (sort_vuses_heap): Ditto.
7070         (set_value_handle): Make non-static.
7071         (make_value_handle): Ditto.
7072         (vn_add): Rewritten to use sccvn lookups.
7073         (vn_add_with_vuses): Ditto.
7074         (vn_lookup): Ditto (and second argument removed).
7075         (vn_lookup_with_vuses): Ditto.
7076         (vn_lookup_or_add): Ditto (and second argument removed);
7077         (vn_lookup_or_add_with_vuses): Ditto.
7078         (vn_lookup_with_stmt): New.
7079         (vn_lookup_or_add_with_stmt): Ditto.
7080         (create_value_handle_for_expr): Ditto.
7081
7082         * tree-ssa-pre.c: Include tree-ssa-sccvn.h.
7083         (seen_during_translate): New function.
7084         (phi_trans_lookup): Use iterative_hash_expr, not vn_compute.
7085         (phi_trans_add): Ditto.
7086         (constant_expr_p): FIELD_DECL is always constant.
7087         (phi_translate_1): Renamed from phi_translate, add seen bitmap.
7088         Use constant_expr_p.
7089         Avoid infinite recursion on mutually valued expressions.
7090         Change callers of vn_lookup_or_add.
7091         (phi_translate): New function.
7092         (compute_antic_safe): Allow phi nodes.
7093         (create_component_ref_by_pieces): Update for FIELD_DECL change.
7094         (find_or_generate_expression): Rewrite slightly.
7095         (create_expression_by_pieces): Updated for vn_lookup_or_add
7096         change.
7097         Update VN_INFO for new names.
7098         (insert_into_preds_of_block): Update for new names.
7099         (add_to_exp_gen): New function.
7100         (add_to_sets): Use vn_lookup_or_add_with_stmt.
7101         (find_existing_value_expr): Rewrite to changed vn_lookup.
7102         (create_value_expr_from): Ditto, and use add_to_exp_gen.
7103         (try_look_through_load): Removed.
7104         (try_combine_conversion): Ditto.
7105         (get_sccvn_value): New function.
7106         (make_values_for_phi): Ditto.
7107         (make_values_for_stmt): Ditto.
7108         (compute_avail): Rewritten for vn_lookup_or_add changes and to use
7109         SCCVN.
7110         (init_pre): Update for SCCVN changes.
7111         (fini_pre): Ditto.
7112         (execute_pre): Ditto.
7113
7114         * tree-flow.h (make_value_handle): Declare.
7115         (set_value_handle): Ditto.
7116         (sort_vuses_heap): Ditto.
7117         (vn_lookup_or_add_with_stmt): Ditto.
7118         (vn_lookup_with_stmt): Ditto.
7119         (vn_compute): Remove.
7120         (vn_init): Ditto.
7121         (vn_delete): Ditto.
7122         (vn_lookup): Update arguments.
7123
7124         * Makefile.in (tree-ssa-pre.o): Add tree-ssa-sccvn.h
7125         (tree-vn.o): Ditto.
7126         (tree-ssa-sccvn.o): New.
7127         (OBJS-common): Add tree-ssa-sccvn.o
7128         
7129 2007-06-30  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
7130
7131         PR c/4076
7132         * c-typeck.c (build_external_ref): Don't mark as used if called
7133         from itself.
7134         * calls.c (rtx_for_function_call): Likewise.
7135         
7136 2007-06-30  Richard Sandiford  <richard@codesourcery.com>
7137
7138         Revert:
7139
7140         2007-06-27  Richard Sandiford  <richard@codesourcery.com>
7141
7142         * dce.c (deletable_insn_p_1): New function, split out from...
7143         (deletable_insn_p): ...here.  Only treat bare USEs and CLOBBERs
7144         specially, not those inside PARALLELs.  Remove BODY argument
7145         and adjust recursive call accordingly.
7146         (prescan_insns_for_dce): Update call to delete_insn_p.
7147
7148 2007-06-30  Rask Ingemann Lambertsen <rask@sygehus.dk>
7149
7150         * combine.c (combine_validate_cost): New parameter NEWOTHERPAT.
7151         (try_combine): Move potential calls to undo_all() so they happen
7152         before we commit to using the combined insns.
7153
7154 2006-06-30  Jan Hubicka  <jh@suse.cz>
7155
7156         * loop-unroll.c (unroll_loop_runtime_iterations): Unshare newly emit
7157         code.
7158
7159 2006-06-30  Thomas Neumann  <tneumann@users.sourceforge.net>
7160
7161         * ipa.c (cgraph_postorder): Cast according to the coding conventions.
7162         (cgraph_remove_unreachable_nodes): Likewise.
7163         * ipa-cp.c (ipcp_propagate_stage): Use BOTTOM instead of integer 0.
7164         * ipa-inline.c (update_caller_keys): Cast according to the coding
7165         conventions.
7166         (cgraph_decide_recursive_inlining): Likewise.
7167         (cgraph_decide_inlining_of_small_function): Likewise.
7168         (try_inline): Likewise.
7169         (cgraph_decide_inlining_incrementally): Likewise.
7170         * ipa-pure-const.c (get_function_state): Likewise.
7171         (scan_function): Likewise.
7172         (analyze_function): Likewise.
7173         (static_execute): Likewise.
7174         * ipa-reference.c (scan_for_static_refs): Likewise.
7175         (merge_callee_local_info): Likewise.
7176         (analyze_function): Use type safe memory macros.
7177         (static_execute): Likewise. Cast according to the coding conventions.
7178         * ipa-type-escape.c (scan_for_regs): Cast according to the coding
7179         conventions.
7180         * ipa-utils.c (searchc): Likewise. Avoid using C++ keywords as variable
7181         names.
7182         (ipa_utils_reduced_inorder): Likewise. Use type safe memory macros.
7183         * ipa-utils.h (struct ipa_dfa_info): Avoid using C++ keywords as
7184         variable names.
7185
7186 2007-06-29  Andrew Pinski  <andrew_pinski@playstation.sony.com>
7187
7188         PR middle-end/30024
7189         * emit-rtl.c (init_emit_once): Intilize const_tiny_rtx[0]
7190         for complex modes (both int and real).
7191
7192 2007-06-29  Jan Hubicka  <jh@suse.cz>
7193
7194         * cse.c: Rever accidentally comitted TODO_verify_rtl_sharing change.
7195
7196 2007-06-29  Jan Hubicka  <jh@suse.cz>
7197
7198         PR middle-end/32372
7199         * cse.c (cse_insn): Avoid invalid sharing in between register note and
7200         the insn pattern.
7201
7202 2007-06-29  Anatoly Sokolov <aesok@post.ru>
7203
7204         PR target/32335
7205         * config/avr/avr.c: Include dataflow header file.
7206         (expand_prologue): Adjust for prologue insn change.
7207         * config/avr/avr.md (call_prologue_saves): Only modify REG_SP once
7208         inside a insn.
7209
7210 2007-06-29  Richard Guenther  <rguenther@suse.de>
7211
7212         PR middle-end/32493
7213         * gimplify.c (gimplify_call_expr): Ignore variable argument parts
7214         during type verification.
7215
7216 2007-06-29  Jan Hubicka  <jh@suse.cz>
7217
7218         * recog.c (validate_change_rtx_1): Unshare TO argument.
7219
7220 2007-06-29  Uros Bizjak  <ubizjak@gmail.com>
7221
7222         PR tree-optimization/24659
7223         * tree-vect-transform.c (vectorizable_call): Handle
7224         (nunits_in == nunits_out / 2) and (nunits_out == nunits_in / 2) cases.
7225
7226         * config/i386/sse.md (vec_pack_sfix_v2df): New expander.
7227         * config/i386/i386.c (enum ix86_builtins)
7228         [IX86_BUILTIN_VEC_PACK_SFIX]: New constant.
7229         (struct bdesc_2arg) [__builtin_ia32_vec_pack_sfix]: New builtin
7230         description.
7231         (ix86_init_mmx_sse_builtins): Define all builtins with 2 arguments as
7232         const using def_builtin_const.
7233         (ix86_expand_binop_builtin): Remove bogus assert() that insn wants
7234         input operands in the same modes as the result.
7235         (ix86_builtin_vectorized_function): Handle BUILT_IN_LRINT.
7236
7237 2007-06-29  Richard Sandiford  <rsandifo@nildram.co.uk>
7238
7239         * df-problems.c (df_set_unused_notes_for_mw): Fix formatting.
7240         (df_set_dead_notes_for_mw): Likewise.
7241
7242 2007-06-29  Eric Botcazou  <ebotcazou@adacore.com>
7243
7244         * c-common.c (pointer_int_sum): Do the negation in sizetype.
7245
7246 2007-06-28  DJ Delorie  <dj@redhat.com>
7247
7248         * config/m32c/m32c.h (OVERRIDE_OPTIONS): Omit unneeded semicolon.
7249
7250 2007-06-28  Geoffrey Keating  <geoffk@apple.com>
7251
7252         * doc/invoke.texi (C++ Dialect Options): Document
7253         fvisibility-ms-compat.
7254         * c.opt (fvisibility-ms-compat): New.
7255
7256 2007-06-28  Andrew Pinski  <andrew_pinski@playstation.sony.com>
7257
7258         PR tree-opt/32417
7259         * tree-affine.c (aff_combination_add_elt): Handle
7260         pointer addition specially.
7261
7262 2007-06-28  Jakub Jelinek  <jakub@redhat.com>
7263
7264         * config/rs6000/rs6000.c (rs6000_function_ok_for_sibcall): Ensure
7265         decl is non-external for AIX ABI.
7266
7267 2007-06-28  David Edelsohn  <edelsohn@gnu.org>
7268
7269         * config/rs6000/predicates.md (current_file_function_operand):
7270         Ensure the symbol is non-external for AIX ABI.
7271
7272 2007-06-28  Nick Clifton  <nickc@redhat.com>
7273
7274         * common.opt (fipa-matrix-reorg): Add Optimization attribute.
7275         (fdce, fdse, fpredictive-commoning): Likewise.
7276
7277 2007-06-28 Francois-Xavier Coudert <fxcoudert@gcc.gnu.org>
7278
7279         PR other/31400
7280         * gcc.c (process_command): Recognize the new -static-libgfortran
7281         option.
7282
7283 2007-06-27  Rask Ingemann Lambertsen  <rask@sygehus.dk>
7284
7285         PR target/32418
7286         * config/m32c/m32c.c (m32c_eh_return_stackadj_rtx): Dataflow fix:
7287         Use a call clobbered hard reg instead of a pseudo reg.
7288
7289 2007-06-27  Kaz Kojima  <kkojima@gcc.gnu.org>
7290
7291         * config/sh/sh.md (load_gbr): Use correct operand constraint.
7292
7293 2007-06-27  Kaz Kojima  <kkojima@gcc.gnu.org>
7294
7295         PR target/32479
7296         * config/sh/sh.md (udivsi3): Don't wrap the sequence with
7297         REG_LIBCALL and REG_RETVAL notes.
7298         (divsi3, mulsi3): Likewise.
7299         (mulhisi3): Likewise.  Use emit_libcall_block.
7300         (umulhisi3, smulsi3_highpart, umulsi3_highpart_i): Likewise.
7301
7302 2007-06-27  Seongbae Park  <seongbae.park@gmail.com>
7303
7304         PR rtl-optimization/32481
7305         * combine.c (adjust_for_new_dest): Rescan the changed insn.
7306
7307 2007-06-27  Richard Sandiford  <richard@codesourcery.com>
7308
7309         * dce.c (deletable_insn_p_1): New function, split out from...
7310         (deletable_insn_p): ...here.  Only treat bare USEs and CLOBBERs
7311         specially, not those inside PARALLELs.  Remove BODY argument
7312         and adjust recursive call accordingly.
7313         (prescan_insns_for_dce): Update call to delete_insn_p.
7314
7315 2007-06-27  Richard Guenther  <rguenther@suse.de>
7316
7317         PR middle-end/32492
7318         * tree.h (fold_convertible_p): Declare.
7319         * fold-const.c (fold_convertible_p): New function.
7320         * gimplify.c (gimplify_call_expr): Use fold_convertible_p
7321         instead of lang_hooks.types_compatible_p.
7322
7323 2007-06-26  Jan Hubicka  <jh@suse.cz>
7324
7325         * fwprop.c (try_fwprop_subst): Use validate_unshare_change.
7326         * postreload.c (reload_cse_simplify_set): Instead of copying the rtx
7327         early use validate_unshare_change.
7328         (reload_combine): Likewise.
7329         * recog.c (change_t): New field unshare.
7330         (validate_change_1): Rename from validate_change; add argument unshare.
7331         (validate_change): Turn into wrapper of validate_change_1; update
7332         prototype for bools.
7333         (validate_unshare_change): New.
7334         (confirm_change_group): Unshare changes if asked for; avoid unnecesary
7335         calls of df_insn_rescan.
7336         * recog.h (validate_change): Replace ints by bools.
7337         (validate_unshare_change): Declare.
7338
7339 2007-06-26  Kenneth Zadeck <zadeck@naturalbridge.com>
7340
7341         * tree.def (VEC_WIDEN_MULT_LO_EXPR): Corrected string name.
7342         
7343 2007-06-26  Steve Ellcey  <sje@cup.hp.com>
7344
7345         * builtins.c (expand_builtin_next_arg): Change Pmode to ptr_mode.
7346
7347 2007-06-25  Jan Hubicka  <jh@suse.cz>
7348
7349         * ipa-inline.c (cgraph_mark_inline): Assert that we never inline
7350         uninlinable call.
7351         (cgraph_decide_inlining_of_small_function, cgraph_decide_inlining,
7352         cgraph_decide_inlining_incrementally): Move uninlinability checks to
7353         places other call site specific checks are performed.
7354
7355 2007-06-25  Andrew Pinski  <andrew_pinski@playstation.sony.com>
7356
7357         PR tree-opt/32421
7358         * tree-vect-transform.c (vectorizable_operation): Convert
7359         POINTER_PLUS_EXPR over to PLUS_EXPR.
7360
7361 2007-06-25  Chao-ying Fu  <fu@mips.com>
7362
7363         * doc/rtl.texi (Machine Modes): Document QQ, HQ, SQ, DQ, TQ,
7364         UQQ, UHQ, USQ, UDQ, UTQ, HA, SA, DA, TA, UHA, USA, UDA, and UTAmodes.
7365         Document MODE_FRACT, MODE_UFRACT, MODE_ACCUM, MODE_UACCUM.
7366         Document GET_MODE_IBIT, and GET_MODE_FBIT.
7367
7368         * machmode.h (VECTOR_MODE_P): Test MODE_VECTOR_FRACT,
7369         MODE_VECTOR_UFRACT, MODE_VECTOR_ACCUM, MODE_VECTOR_UACCUM.
7370         (SCALAR_FRACT_MODE_P, SCALAR_UFRACT_MODE_P, ALL_SCALAR_FRACT_MODE_P,
7371         SCALAR_ACCUM_MODE_P, SCALAR_UACCUM_MODE_P, ALL_SCALAR_ACCUM_MODE_P,
7372         SIGNED_SCALAR_FIXED_POINT_MODE_P, UNSIGNED_SCALAR_FIXED_POINT_MODE_P,
7373         ALL_SCALAR_FIXED_POINT_MODE_P, FRACT_MODE_P, UFRACT_MODE_P,
7374         ALL_FRACT_MODE_P, ACCUM_MODE_P, UACCUM_MODE_P, ALL_ACCUM_MODE_P,
7375         SIGNED_FIXED_POINT_MODE_P, UNSIGNED_FIXED_POINT_MODE_P,
7376         ALL_FIXED_POINT_MODE_P): New define.
7377         (CLASS_HAS_WIDER_MODES_P): Test MODE_FRACT, MODE_UFRACT, MODE_ACCUM,
7378         MODE_UACCUM.
7379         (GET_MODE_IBIT, GET_MODE_FBIT): New define.
7380
7381         * mode-classes.def (MODE_FRACT, MODE_UFRACT, MODE_ACCUM, MODE_UACCUM,
7382         MODE_VECTOR_FRACT, MODE_VECTOR_UFRACT, MODE_VECTOR_ACCUM,
7383         MODE_VECTOR_UACCUM): New mode classes.
7384
7385         * machmode.def: Document FRACT_MODE, UFRACT_MODE, ACCUM_MODE,
7386         UACCUM_MODE, ADJUST_IBIT, and ADJUST_FBIT.
7387         Add QQ, HQ, SQ, DQ, TQ, UQQ, UHQ, USQ, UDQ, UTQ, HA, SA, DA, TA, UHA,
7388         USA, UDA, and UTA.
7389
7390         * genmodes.c (struct mode_data): Add ibit and fbit fields.
7391         (blank_mode): Initialize ibit and fbit.
7392         (adj_ibit, adj_fbit): New to adjust ibit and fbit.
7393         (vector_class): Handle MODE_FRACT, MODE_UFRACT, MODE_ACCUM,
7394         MODE_UACCUM.
7395         (new_adjust): Change required_class to required_class_from and
7396         required_class_to for testing within a range.
7397         (complete_mode): Handle MODE_FRACT, MODE_UFRACT, MODE_ACCUM,
7398         MODE_UACCUM, MODE_VECTOR_FRACT, MODE_VECTOR_UFRACT, MODE_VECTOR_ACCUM,
7399         MODE_VECTOR_UACCUM.
7400         (FRACT_MODE, UFRACT_MODE, ACCUM_MODE, UACCUM_MODE): New define.
7401         (make_fixed_point_mode): New.
7402         (_ADD_ADJUST): Change C to C1 and C2.
7403         (ADJUST_BYTESIZE, ADJUST_ALIGNMENT, ADJUST_FLOAT_FORMAT): Change to
7404         use a range for machine classes.
7405         (ADJUST_IBIT, ADJUST_FBIT): New.
7406         (emit_insn_modes_h): Output defines of CONST_MODE_IBIT and
7407         CONST_MODE_FBIT.
7408         (emit_mode_adjustments): Handle MODE_VECTOR_FRACT, MODE_VECTOR_UFRACT,
7409         MODE_VECTOR_ACCUM, MODE_VECTOR_UACCUM.
7410         Emit adjustment for ibit and fbit.
7411         (emit_mode_ibit, emit_mode_fbit): New.
7412         (emit_insn_modes_c): Add emit_mode_ibit and emit_mode_fbit.
7413
7414 2007-06-25  Nathan Froyd  <froydnj@codesourcery.com>
7415
7416         * config/rs6000/spe.md (*frob_ti_tf_2): Specify an input_operand
7417         as the source of the set.
7418
7419 2007-06-25  Roman Zippel <zippel@linux-m68k.org>
7420
7421         * config/m68k/m68k.h (DATA_REGNO_P, ADDRESS_REGNO_P, INT_REGNO_P,
7422         FP_REGNO_P): Use IN_RANGE.
7423         (REGNO_OK_FOR_DATA_P, REGNO_OK_FOR_FP_P): Remove.
7424         (REGNO_OK_FOR_INDEX_NONSTRICT_P, REGNO_OK_FOR_BASE_NONSTRICT_P): New.
7425         (DATA_REG_P): Use DATA_REGNO_P.
7426         (FP_REG_P): Use FP_REGNO_P.
7427         (ADDRESS_REG_P): Use ADDRESS_REGNO_P.
7428         * config/m68k/m68k.c (m68k_legitimate_base_reg_p): Use
7429         REGNO_OK_FOR_INDEX_NONSTRICT_P, REGNO_OK_FOR_BASE_NONSTRICT_P.
7430
7431 2007-06-24  Jan Hubicka  <jh@suse.cz>
7432
7433         PR middle-end/30563
7434         * cgraphunit.c (cgraph_analyze_function): Fix ordering problem.
7435
7436 2007-06-24  Sebastian Pop  <sebpop@gmail.com>
7437
7438         PR middle-end/32461
7439         * fold-const.c (fold_binary): Strip nops of operand 0
7440         of BIT_NOT_EXPR before calling operand_equal_p.
7441         * testsuite/gcc.dg/tree-ssa/pr32461-1.c: New.
7442         * testsuite/gcc.dg/tree-ssa/pr32461-2.c: New.
7443
7444 2007-06-23  Mark Mitchell  <mark@codesourcery.com>
7445
7446         * doc/extend.texi: Document that dllimport and dllexport imply
7447         default visibility.
7448         * tree.c (handle_dll_attribute): Set DECL_VISIBILITY on the
7449         imported or exported declaration, including type declarations.
7450         * c-common.c (handle_visibility_attribute): Check for conflicts
7451         with dllimport/dllexport.
7452         (c_determine_visibility): Handle dllimport/dllexport as an
7453         explicit visibility atttribute.
7454
7455 2007-06-23  Richard Guenther  <rguenther@suse.de>
7456
7457         PR tree-optimization/16876
7458         PR middle-end/29478
7459         * tree.h (CALL_CANNOT_INLINE_P): New macro to access static_flag
7460         for CALL_EXPRs.
7461         * tree-inline.c (initialize_inlined_parameters): Do not call
7462         lang_hooks.tree_inlining.convert_parm_for_inlining.
7463         * cgraphbuild.c (initialize_inline_failed): Set inline failed
7464         reason for mismatched types.
7465         * gimplify.c (gimplify_call_expr): Verify the call expression
7466         arguments match the called function type signature.  Otherwise
7467         mark the call expression to be not considered for inlining
7468         using CALL_CANNOT_INLINE_P flag.
7469         * ipa-inline.c (cgraph_mark_inline): Honor CALL_CANNOT_INLINE_P on the
7470         edges call expression.
7471         (cgraph_decide_inlining_of_small_function): Likewise.
7472         (cgraph_decide_inlining): Likewise.
7473         * c-objc-common.h (LANG_HOOKS_TREE_INLINING_CONVERT_PARM_FOR_INLINING):
7474         Remove define.
7475         * c-tree.h (c_convert_parm_for_inlining): Remove declaration.
7476         * c-typeck.c (c_convert_parm_for_inlining): Remove.
7477         * langhooks-def.h (lhd_tree_inlining_convert_parm_for_inlining):
7478         Remove declaration.
7479         (LANG_HOOKS_TREE_INLINING_CONVERT_PARM_FOR_INLINING): Remove define.
7480         * langhooks.c (lhd_tree_inlining_convert_parm_for_inlining):
7481         Remove.
7482         * langhooks.h (struct lang_hooks_for_tree_inlining): Remove
7483         convert_parm_for_inlining member.
7484
7485 2007-06-23  Richard Earnshaw  <rearnsha@arm.com>
7486
7487         PR target/31152
7488         * arm.md (negscc): Match the correct operand for optimized LT0 test.
7489         Remove optimization for GT.
7490
7491 2007-06-23  Kenneth Zadeck <zadeck@naturalbridge.com>
7492
7493         PR middle-end/32437
7494         * dce.c (deletable_insn_p): Add extra parameter and recurse if insn
7495         is a PARALLEL.
7496         (prescan_insns_for_dce): Add extra parameter.
7497         
7498 2007-06-23  Jan Hubicka  <jh@suse.cz>
7499
7500         PR middle-end/31541
7501         * gimplify.c (mark_addressable): New function.
7502         (gimplify_modify_expr_rhs, gimplify_addr_expr, gimplify_expr): Use it.
7503
7504 2007-06-22  Uros Bizjak  <ubizjak@gmail.com>
7505
7506         PR middle-end/32374
7507         * expr.c (store_constructor): Do not clobber non-zeroed memory. 
7508
7509 2007-06-22  Uros Bizjak  <ubizjak@gmail.com>
7510
7511         PR target/32413
7512         * config/i386/i386.c (ix86_register_move_cost): Rise the cost of
7513         moves between MMX/SSE registers to at least 8 units to prevent
7514         ICE caused by non-tieable SI/HI/QImodes in SSE registers. 
7515
7516 2007-06-22  Uros Bizjak  <ubizjak@gmail.com>
7517
7518         * config/i386/i386.c (override_options): Correct x86_sahf
7519         setting condition.
7520
7521 2007-06-21  David Daney  <ddaney@avtrex.com>
7522
7523         PR target/32406
7524         * config/mips/mips.md (define_constants): Rename UNSPEC_EH_RECEIVER
7525         to UNSPEC_NONLOCAL_GOTO_RECEIVER globally.
7526         (exception_receiver): Renamed to ...
7527         (nonlocal_goto_receiver): ... this.
7528
7529 2007-06-22  Roman Zippel <zippel@linux-m68k.org>
7530
7531         * df-scan.c (df_read_modify_subreg_p): Use REGMODE_NATURAL_SIZE.
7532         (df_def_record_1): Set (DF_REF_READ_WRITE | DF_REF_PARTIAL) for
7533         partial register accesses.
7534
7535 2007-06-21  Adam Nemet  <anemet@caviumnetworks.com>
7536
7537         * fold-const.c (debug_fold_checksum): Move it under
7538         ENABLE_FOLD_CHECKING.
7539
7540 2007-06-21  Sebastian Pop  <sebpop@gmail.com>
7541
7542         PR middle-end/20623
7543         * tree.h (debug_fold_checksum): Declared.
7544         * fold-const.c (build_fold_addr_expr_with_type_1): New.
7545         (build_fold_addr_expr_with_type, build_fold_addr_expr): Use 
7546         build_fold_addr_expr_with_type_1.
7547         (fold_addr_expr, debug_fold_checksum): New.
7548         (fold_checksum_tree): Don't fold TREE_CHAIN of an SSA_NAME.
7549         (fold_unary, fold_comparison, split_address_to_core_and_offset):
7550         Use fold_addr_expr.
7551         
7552 2007-06-21  Sebastian Pop  <sebpop@gmail.com>
7553
7554         PR tree-optimization/19590
7555         * tree-vrp.c (adjust_range_with_scev): Set the range when the result
7556         of scev is a constant.
7557         * gcc/testsuite/gcc.dg/tree-ssa/pr19590.c: New.
7558
7559 2007-06-21  Kenneth Zadeck <zadeck@naturalbridge.com>
7560
7561         * df-problems.c (df_note_bb_compute): Made computation of live
7562         info consistent with df_lr.
7563
7564 2007-06-21  Richard Guenther  <rguenther@suse.de>
7565
7566         PR tree-optimization/32453
7567         * tree-vrp.c (extract_range_from_assert): Build POINTER_PLUS_EXPR
7568         for pointer anti-range.
7569
7570 2007-06-21  H.J. Lu  <hongjiu.lu@intel.com>
7571
7572         * config/i386/i386.c (processor_target_table): Increase maximum
7573         skip from 7 byte to 10 byte for Pentium Pro, Core 2 Duo and
7574         default 64bit.
7575
7576         * config/i386/linux.h (ASM_OUTPUT_MAX_SKIP_ALIGN): Ensure 8
7577         byte alignment if > 8 byte alignment is preferred.
7578         * config/i386/x86-64.h (ASM_OUTPUT_MAX_SKIP_ALIGN): Likewise.
7579
7580 2007-06-21  Jakub Jelinek  <jakub@redhat.com>
7581
7582         PR tree-optimization/31866
7583         * tree-ssa-coalesce.c (create_outofssa_var_map): Do nothing
7584         if ASM_EXPR's input is not a SSA_NAME.
7585
7586         PR middle-end/32362
7587         * omp-low.c (lookup_decl_in_outer_ctx): Don't ICE if t is NULL,
7588         but decl is a global var, instead return decl.
7589         * gimplify.c (gimplify_adjust_omp_clauses_1): Add shared clauses
7590         even for is_global_var decls, if they are private in some outer
7591         context.
7592
7593 2007-06-21  Richard Guenther  <rguenther@suse.de>
7594
7595         PR tree-optimization/32451
7596         * tree-ssa-threadupdate.c (thread_single_edge): Fixup edge flags.
7597
7598 2007-06-21  Christian Bruel  <christian.bruel@st.com>
7599
7600         * config/sh/sh-protos.h (sh_loads_bankedreg_p): Declare.
7601         * config/sh/sh.c (sh_loads_bankedreg_p): New function.
7602         (push_regs): Changed saving order or banked registers.
7603         (sh_expand_epilogue): Likewise.
7604         * config/sh/sh.h (BANKED_REGISTER_P): New macro.
7605         (FIRST_BANKED_REG): Likewise.
7606         (LAST_BANKED_REG): Likewise.
7607         * config/sh/sh.md (banked) New attribute.
7608         (in_delay_slot): Check banked attribute.
7609         
7610 2007-06-20  Sebastian Pop  <sebpop@gmail.com>
7611
7612         PR tree-optimization/32075
7613         * tree-data-ref.c (subscript_dependence_tester_1, 
7614         analyze_miv_subscript, analyze_overlapping_iterations,
7615         add_distance_for_zero_overlaps, build_classic_dist_vector,
7616         subscript_dependence_tester_1, analyze_overlapping_iterations,
7617         subscript_dependence_tester, access_functions_are_affine_or_constant_p,
7618         compute_affine_dependence, compute_all_dependences): Pass loop_nest 
7619         to evolution_function_is_affine_multivariate_p.
7620
7621 2007-06-20  Eric Botcazou  <ebotcazou@libertysurf.fr>
7622
7623         * df-scan.c (df_get_call_refs): Be prepared for MEMs inside CLOBBERs.
7624
7625 2007-06-20  Rask Ingemann Lambertsen  <rask@sygehus.dk>
7626
7627         PR target/32335
7628         * config/m32c/m32c.c (m32c_emit_epilogue): Use new HImode epilogue
7629         for TARGET_A16.
7630         * config/m32c/prologue.md (epilogue_exitd_16): New.
7631         (epilogue_reit_16): New.
7632         (epilogue_exitd): Rename to epilogue_exitd_24.
7633         (epilogue_reit): Rename to epilogue_reit_24.
7634
7635 2007-06-20  Seongbae Park  <seongbae.park@gmail.com>
7636             Maxim Kuvyrkov  <mkuvyrkov@ispras.ru>
7637
7638         * dbgcnt.def (global_alloc_at_func, global_alloc_at_reg):
7639         New counters.
7640         * haifa-sched.c (queue_to_ready): Don't requeue next insn
7641         if dbg_cnt (sched_insn) reaches the limit.
7642         (choose_ready): New parameter INSN_PTR and new return value.
7643         (schedule_block): Handle dbg_cnt (sched_insn). Handle
7644         the new return value from choose_ready.
7645         * global.c (global_aloc): New dbgcnt global_alloc_at_reg.
7646         (rest_of_handle_global_alloc): New global_alloc_at_func.
7647
7648 2007-06-20  Adam Nemet  <anemet@caviumnetworks.com>
7649
7650         PR tree-optimization/25737
7651         * tree.h (struct tree_struct_field_tag): Add new field alias_set.
7652         (SFT_NONADDRESSABLE_P, SFT_ALIAS_SET): New macros.
7653         * tree-flow.h (struct fieldoff): Add new field alias_set.
7654         * tree-ssa-structalias.c (push_fields_onto_fieldstack): Add new
7655         argument addressable_type.  Set alias_set of fieldoff.
7656         * tree-ssa-alias.c (create_sft): Add new argument alias_set.
7657         (create_overlap_variables_for): Pass alias_set from fieldoff to
7658         create_sft.
7659         * alias.c (get_alias_set): Use alias_set from SFT if set.
7660
7661 2007-06-20  Hui-May Chang  <hm.chang@apple.com>
7662
7663         * config/i386/darwin.h (ASM_OUTPUT_COMMON): Print the size
7664         of a variable as an unsigned HOST_WIDE_INT integer.
7665
7666 2007-06-20  Zdenek Dvorak  <dvorakz@suse.cz>
7667
7668         PR rtl-optimization/32405
7669         * loop-iv.c (iv_get_reaching_def): Fail for partial defs.
7670
7671 2007-06-20  Jakub Jelinek  <jakub@redhat.com>
7672
7673         * Makefile.in (omega.o): Depend on $(DIAGNOSTIC_H).
7674
7675         PR middle-end/31959
7676         * builtins.c: Include diagnostic.h.
7677         (expand_builtin_expect): Make gcc_assert more permissive.
7678         * Makefile.in (builtins.o): Depend on $(DIAGNOSTIC_H).
7679
7680         PR inline-asm/32109
7681         * gimplify.c (gimplify_asm_expr): Issue error if type is addressable
7682         and !allows_mem.
7683
7684         PR middle-end/32285
7685         * calls.c (precompute_arguments): Also precompute CALL_EXPR arguments
7686         if ACCUMULATE_OUTGOING_ARGS.
7687
7688 2007-06-19  Rask Ingemann Lambertsen  <rask@sygehus.dk>
7689
7690         * config/m68hc11/m68hc11.c: Include dataflow header file.
7691         (m68hc11_reorg): Port to dataflow.
7692
7693 2007-06-19  Kenneth Zadeck <zadeck@naturalbridge.com>
7694
7695         * df.h (DF_FIRST_OPTIONAL_PROBLEM): Removed.
7696         (struct df_problem.free_blocks_on_set_blocks): New field.
7697         (struct dataflow.optional_p): New field.
7698         (df_bb_regno_last_use_find, df_insn_regno_def_p): Removed.
7699         (df_live_set_all_dirty): New function.
7700         * df-scan.c (df_scan_alloc): Initialize optional_p.
7701         (problem_SCAN): Initialize free_blocks_on_set_blocks.
7702         * df-core.c (df_set_blocks): Removed use of
7703         DF_FIRST_OPTIONAL_PROBLEM.  Now uses
7704         df_problem.free_blocks_on_set_blocks to determine which blocks are
7705         recycled.
7706         (df_remove_problem): Removed use of DF_FIRST_OPTIONAL_PROBLEM.
7707         (df_finish_pass): Removed use of DF_FIRST_OPTIONAL_PROBLEM.  Now
7708         uses dataflow.optional_p to determine if problem should be
7709         deleted.
7710         (rest_of_handle_df_initialize): Only start live problem if 
7711         -02 or above.
7712         (df_bb_regno_last_use_find, df_insn_regno_def_p): Removed.
7713         * df-problems.c (df_ru_alloc, df_rd_alloc, df_lr_alloc,
7714         df_live_alloc, df_urec_alloc, df_note_alloc): set optional_p.
7715         (problem_RU, problem_RD, problem_LR, problem_UREC, problem_CHAIN,
7716         problem_NOTE):  Initialize free_blocks_on_set_blocks.
7717         (df_lr_bb_local_compute): Recompute luids if df_live problem is
7718         not active.
7719         (df_live_set_all_dirty, df_note_alloc): New function.
7720         * regrename.c (merge_overlapping_regs): Change DF_LIVE_* to
7721         df_get_live_*.
7722         * sched_ebb.c (compute_jump_reg_dependencies): Ditto.
7723         * postreload.c (reload_combine): Ditto.
7724         * cse.c (cse_extended_basic_block): Ditto.
7725         * regmove.c (mark_flags_life_zones): Ditto.
7726         * rtlfactoring.c (split_blocks_after_seqs, split_pattern_seq,
7727         erase_matching_seqs): Ditto.
7728         * bt-load.c (compute_defs_uses_and_gen): Ditto.
7729         * integrate (allocate_initial_values): Ditto.
7730         * combine.c (reg_dead_at_p): Ditto.
7731         * resource.c (mark_target_live_regs): Ditto.
7732         * sched-rgn.c (check_live_1, update_live_1): Ditto.
7733         * config/sh/sh.c (find_r0_life_regions): Ditto.
7734         * global.c (rest_of_handle_global_alloc): Only add back df_live
7735         for -O > 1.
7736         * local-alloc.c (rest_of_handle_local_alloc): Only remove
7737         df_live for -O > 1.
7738         * ifcvt.c (dead_or_predicable): Change DF_LIVE_* to
7739         df_get_live_*.
7740         (if_convert): Make sure df_live is there at -O == 1.
7741         (pass_if_after_combine): Cleanup flags.
7742         * init-regs.c (initialize_uninitialized_regs): Make sure df_live
7743         is there at -O == 1.
7744         
7745 2007-06-19  Seongbae Park  <seongbae.park@gmail.com>
7746
7747         * config/arm/arm.c (arm_get_frame_offsets): Set
7748         offsets->locals_base to avoid negative stack size.
7749         (thumb1_expand_prologue): Assert on negative stack size.
7750
7751 2007-06-19  Sebastian Pop  <sebpop@gmail.com>
7752
7753         PR tree-optimization/32367
7754         * tree-chrec.h (build_polynomial_chrec): Verify that the left hand side 
7755         of the chrec has no evolution in that loop.
7756         * testsuite/gcc.dg/tree-ssa/pr32367.c: New.
7757
7758 2007-06-19  Bob Wilson  <bob.wilson@acm.org>
7759
7760         * config/xtensa/xtensa.c: Include "df.h".
7761         (xtensa_builtin_saveregs): Use adjust_address instead of
7762         change_address.
7763         (xtensa_va_start): Invoke make_tree with sizetype for
7764         expand_builtin_saveregs and then convert the result to a pointer.
7765         Use POINTER_PLUS_EXPR.  Use size_int instead of build_int_cst.
7766         (xtensa_gimplify_va_arg_expr): Use size_int instead of build_int_cst.
7767         Subtract argument size from index value as integers and then use
7768         POINTER_PLUS_EXPR to add the result to the array address.
7769         
7770 2007-06-19  Rask Ingemann Lambertsen  <rask@sygehus.dk>
7771
7772         PR target/32335
7773         * config/m32c/m32c.c: Include dataflow header file.
7774         (m32c_emit_prologue): Adjust for prologue insn change.
7775         * config/m32c/prologue.md (prologue_enter_16): Only modify SP_REGNO
7776         once inside a PARALLEL. Assume frame size passed in operand 0
7777         includes space to save the fb register.
7778         (prologue_enter_24): Likewise.
7779         (epilogue_exitd): Only modify SP_REGNO once inside a PARALLEL.
7780
7781 2007-06-19  David Daney  <ddaney@avtrex.com
7782
7783         PR target/32313
7784         * config/mips/mips.md (cprestore): Mark $gp as used.
7785
7786 2007-06-19  Rask Ingemann Lambertsen  <rask@sygehus.dk>
7787
7788         PR target/32369
7789         * config/frv/frv.c (frv_ifcvt_modify_tests): Dataflow merge fix.
7790         (frv_ifcvt_modify_insn): Likewise.
7791
7792 2007-06-19  Richard Guenther  <rguenther@suse.de>
7793
7794         * tree-ssa-structalias.c (handle_ptr_arith): Make sure to
7795         only handle positive offsets that fit in a HOST_WIDE_INT.
7796
7797 2007-06-19  Uros Bizjak  <ubizjak@gmail.com>
7798
7799         * config/i386/i386.c (ix86_emit_swsqrtsf): Filter out infinity
7800         result of rsqrt insn for zero input argument to avoid NaN.
7801
7802 2007-06-19  Richard Guenther  <rguenther@suse.de>
7803
7804         PR middle-end/31950
7805         * tree-ssa-alias-warnings.c (ffan_walker): Punt on MTAGs.
7806
7807 2007-06-19  Jakub Jelinek  <jakub@redhat.com>
7808
7809         PR tree-optimization/32353
7810         * tree-ssa-structalias.c (set_uids_in_ptset): Also handle RESULT_DECL.
7811
7812 2007-06-19  Nick Clifton  <nickc@redhat.com>
7813
7814         * config/m32r/linux.h (LIB_SPEC): Always imply -lpthread for -pthread.
7815
7816 2007-06-18  Uros Bizjak  <ubizjak@gmail.com>
7817
7818         PR target/32389
7819         * config/i386/i386.h (enum ix86_stack_slot): Add SLOT_VIRTUAL.
7820         * config/i386/i386.c (assign_386_stack_local): Assert that
7821         SLOT_VIRTUAL is valid only before virtual regs are instantiated.
7822         (ix86_expand_builtin) [IX86_BUILTIN_LDMXCSR, IX86_BUILTIN_STMXCSR]:
7823         Use SLOT_VIRTUAL stack slot instead of SLOT_TEMP.
7824         * config/i386/i386.md (truncdfsf2, truncxf<mode>2): Ditto.
7825
7826 2007-06-18  Steve Ellcey  <sje@cup.hp.com>
7827
7828         * config/ia64/ia64.h (LIBGCC2_TF_CEXT): New.
7829
7830 2007-06-18  Seongbae Park  <seongbae.park@gmail.com>
7831
7832         PR rtl-optimization/32321
7833         * gcse.c (replace_store_insn): Update the note before
7834         calling emit_insn_after.
7835
7836 2007-06-18  Kenneth Zadeck <zadeck@naturalbridge.com>
7837
7838         PR middle-end/32355
7839         * gcse (rest_of_handle_gcse): Add call to df_finish_pass after
7840         cse_main.
7841         * df-problems.c (df_note_bb_compute): Fix dumping info.
7842         
7843 2007-06-18  Kazu Hirata  <kazu@codesourcery.com>
7844
7845         * config/m68k/m68k.c (m68k_expand_epilogue): Emit a return
7846         insn with emit_jump_insn.
7847
7848 2007-06-18  Uros Bizjak  <ubizjak@gmail.com>
7849
7850         PR tree-optimization/32383
7851         * targhooks.c (default_builtin_reciprocal): Add new bool argument.
7852         * targhooks.h (default_builtin_reciprocal): Update prototype.
7853         * target.h (struct gcc_target): Update builtin_reciprocal.
7854         * doc/tm.texi (TARGET_BUILTIN_RECIPROCAL): Update description.
7855         * tree-ssa-math-opts (execute_cse_reciprocals): Skip statements
7856         where arg1 is not SSA_NAME.  Pass true to targetm.builtin_reciprocal
7857         when fndecl is in BUILT_IN_MD class.
7858         (execute_convert_to_rsqrt): Ditto.
7859
7860         * config/i386/i386.c (ix86_builtin_reciprocal): Update for new bool
7861         argument.  Convert IX86_BUILTIN_SQRTPS code only when md_fn is true.
7862         Convert BUILT_IN_SQRTF code only  when md_fn is false.
7863
7864 2007-06-18  Kaz Kojima  <kkojima@gcc.gnu.org>
7865
7866         * bt-load.c (move_btr_def): Fix the order of arguments
7867         to validate_replace_rtx.
7868
7869 2007-06-18  Nathan Sidwell  <nathan@codesourcery.com>
7870
7871         * config/m68k/m68k-devices.def: Add 54450..54455.
7872
7873 2007-06-17  Uros Bizjak  <ubizjak@gmail.com>
7874
7875         PR rtl-optimization/32366
7876         * simplify-rtx.c (simplify_unary_operation_1) [FLOAT_TRUNCATE,
7877         FLOAT_EXTEND]: Prevent non-scalar modes from entering
7878         significand_size.
7879
7880 2007-06-17  Kenneth Zadeck <zadeck@naturalbridge.com>
7881
7882         PR middle-end/32349
7883         * modulo-sched (generate_reg_moves): Added rescan parameter and if
7884         this is true, rescan insn being modified.
7885         (sms_schedule): Added rescan parameter.
7886         (rest_of_handle_sms): Moved freeing of dominance info to before
7887         getting out of cfg_layout.
7888         
7889 2007-06-17  Nathan Sidwell  <nathan@codesourcery.com>
7890
7891         * config/m68k/m68k.h (ISA_HAS_FF1, ISA_HAS_MVS_MVZ): New.
7892         * config/m68k/m68k.md: Use ISA_HAS_FF1 and ISA_HAS_MVS_MVZ as
7893         appropriate.
7894
7895         * config/m68k/m68k.c (all_isas): Remove FL_CF_FPU and
7896         FL_CF_EMAC from the entry for isac.
7897
7898         * config/m68k/predicates.md (const_call_operand): Adjust comment.
7899         (const_sibcall_operand): New.
7900         (sibcall_operand): Use it.
7901         * config/m68k/m68k.c (FL_FOR_isa_c): Not ISA_B compatible.
7902         (m68k_isas): ISAC does not imply FPU or EMAC.
7903         (override_options): Add ISA_C logic for symbolic jump & call.
7904
7905 2007-06-17  Eric Botcazou  <ebotcazou@libertysurf.fr>
7906
7907         * config/sparc/sparc.c (sparc_vis_init_builtins): Retrieve the
7908         return mode from the builtin itself.
7909         (sparc_fold_builtin): Fix cast of zero constant.
7910
7911 2007-06-16  Uros Bizjak  <ubizjak@gmail.com>
7912
7913         * targhooks.c (default_builtin_reciprocal): New default target hook.
7914         * targhooks.h (default_builtin_reciprocal): Add prototype.
7915         * hooks.c (hook_tree_tree_bool_null): Remove hook.
7916         * hooks.h (hook_tree_tree_bool_null): Remove prototype.
7917         * target-def.h (TARGET_BUILTIN_RECIPROCAL): Define as
7918         default_builtin_reciprocal.
7919
7920 2007-06-16  Uros Bizjak  <ubizjak@gmail.com>
7921
7922         PR middle-end/31723
7923         * hooks.c (hook_tree_tree_bool_null): New hook.
7924         * hooks.h (hook_tree_tree_bool_null): Add prototype.
7925         * tree-pass.h (pass_convert_to_rsqrt): Declare.
7926         * passes.c (init_optimization_passes): Add pass_convert_to_rsqrt.
7927         * tree-ssa-math-opts.c (execute_cse_reciprocals): Scan for a/func(b)
7928         and convert it to reciprocal a*rfunc(b).
7929         (execute_convert_to_rsqrt): New function.
7930         (gate_convert_to_rsqrt): New function.
7931         (pass_convert_to_rsqrt): New pass definition.
7932         * target.h (struct gcc_target): Add builtin_reciprocal.
7933         * target-def.h (TARGET_BUILTIN_RECIPROCAL): New define.
7934         (TARGET_INITIALIZER): Initialize builtin_reciprocal with
7935         TARGET_BUILTIN_RECIPROCAL.
7936         * doc/tm.texi (TARGET_BUILTIN_RECIPROCAL): Document.
7937
7938         * config/i386/i386.h (TARGET_RECIP): New define.
7939         * config/i386/i386.md (divsf3): Expand by calling ix86_emit_swdivsf
7940         for TARGET_SSE_MATH and TARGET_RECIP when flag_finite_math_only and
7941         flag_unsafe_math_optimizations are set, flag_trapping_math is unset
7942         and not optimizing for size.
7943         (*rcpsf2_sse): New insn pattern.
7944         (*rsqrtsf2_sse): Ditto.
7945         (rsqrtsf2): New expander.  Expand by calling ix86_emit_swsqrtsf
7946         for TARGET_SSE_MATH and TARGET_RECIP when flag_finite_math_only and
7947         flag_unsafe_math_optimizations are set, flag_trapping_math is unset
7948         and not optimizing for size.
7949         (sqrt<mode>2): Expand SFmode operands by calling ix86_emit_swsqrtsf
7950         for TARGET_SSE_MATH and TARGET_RECIP when flag_finite_math_only and
7951         flag_unsafe_math_optimizations are set, flag_trapping_math is unset
7952         and not optimizing for size.
7953         * config/i386/sse.md (divv4sf): Expand by calling ix86_emit_swdivsf
7954         for TARGET_SSE_MATH and TARGET_RECIP when flag_finite_math_only and
7955         flag_unsafe_math_optimizations are set, flag_trapping_math is unset
7956         and not optimizing for size.
7957         (*sse_rsqrtv4sf2): Do not export.
7958         (sqrtv4sf2): Ditto.
7959         (sse_rsqrtv4sf2): New expander.  Expand by calling ix86_emit_swsqrtsf
7960         for TARGET_SSE_MATH and TARGET_RECIP when flag_finite_math_only and
7961         flag_unsafe_math_optimizations are set, flag_trapping_math is unset
7962         and not optimizing for size.
7963         (sqrtv4sf2): Ditto.
7964         * config/i386/i386.opt (mrecip): New option.
7965         * config/i386/i386-protos.h (ix86_emit_swdivsf): Declare.
7966         (ix86_emit_swsqrtsf): Ditto.
7967         * config/i386/i386.c (IX86_BUILTIN_RSQRTF): New constant.
7968         (ix86_init_mmx_sse_builtins): __builtin_ia32_rsqrtf: New
7969         builtin definition.
7970         (ix86_expand_builtin): Expand IX86_BUILTIN_RSQRTF using
7971         ix86_expand_unop1_builtin.
7972         (ix86_emit_swdivsf): New function.
7973         (ix86_emit_swsqrtsf): Ditto.
7974         (ix86_builtin_reciprocal): New function.
7975         (TARGET_BUILTIN_RECIPROCAL): Use it.
7976         (ix86_vectorize_builtin_conversion): Rename from
7977         ix86_builtin_conversion.
7978         (TARGET_VECTORIZE_BUILTIN_CONVERSION): Use renamed function.
7979         * doc/invoke.texi (Machine Dependent Options): Add -mrecip to
7980         "i386 and x86_64 Options" section.
7981         (Intel 386 and AMD x86_64 Options): Document -mrecip.
7982
7983 2007-06-15  Andrew Pinski <andrew_pinski@playstation.sony.com>
7984             Zdenek Dvorak <dvorakz@suse.cz>
7985             Richard Guenther  <rguenther@suse.de>
7986             Kaz Kojima  <kkojima@gcc.gnu.org>
7987
7988         * tree-vrp.c (compare_values_warnv): Convert val2 to
7989         the type of val1.
7990         (extract_range_from_assert): Create
7991         POINTER_PLUS_EXPR for pointer types.
7992         (extract_range_from_binary_expr): Handle
7993         only POINTER_PLUS_EXPR, MIN_EXPR, and MAX_EXPR
7994         for pointer types.
7995         * doc/c-tree.texi (POINTER_PLUS_EXPR): Document.
7996         * tree-ssa-loop-niter.c (split_to_var_and_offset): Handle
7997         POINTER_PLUS_EXPR as PLUS_EXPR.
7998         (number_of_iterations_lt_to_ne):
7999         For pointer types, use sizetype when
8000         creating MINUS_EXPR/PLUS_EXPRs.
8001         (assert_loop_rolls_lt): For pointer types, use sizetype when
8002         creating MINUS_EXPR/PLUS_EXPRs.
8003         (number_of_iterations_le): Likewise.
8004         (expand_simple_operations): POINTER_PLUS_EXPR are simple also.
8005         (derive_constant_upper_bound): Handle POINTER_PLUS_EXPR just
8006         like PLUS_EXPR and MINUS_EXPR.
8007         * tree-pretty-print.c (dump_generic_node): Handle
8008         POINTER_PLUS_EXPR.
8009         (op_prio): Likewise.
8010         (op_symbol_1): Likewise.
8011         * optabs.c (optab_for_tree_code): Likewise.
8012         * tree-ssa-loop-manip.c (create_iv): Handle pointer base
8013         specially.
8014         * tree-tailcall.c (process_assignment): Mention
8015         POINTER_PLUS_EXPR in a TODO comment.
8016         * tree.c (build2_stat): Assert when trying to use PLUS_EXPR or 
8017         MINUS_EXPR with a pointer. Also assert for POINTER_PLUS_EXPR
8018         not used with a pointer and an integer type.
8019         * tree-scalar-evolution.c (add_to_evolution_1): Convert the
8020         increment using chrec_convert_rhs instead of chrec_convert.
8021         (follow_ssa_edge_in_rhs): Handle POINTER_PLUS_EXPR like
8022         PLUS_EXPR except for the right hand side's type will be
8023         sizetype.
8024         (interpret_rhs_modify_stmt): Handle POINTER_PLUS_EXPR.
8025         (fold_used_pointer_cast): Kill.
8026         (pointer_offset_p): Kill.
8027         (fold_used_pointer): Kill.
8028         (pointer_used_p): Kill.
8029         (analyze_scalar_evolution_1 <case GIMPLE_MODIFY_STMT>): Don't
8030         call fold_used_pointer.
8031         (instantiate_parameters_1): Convert the increment
8032         using chrec_convert_rhs instead of chrec_convert.
8033         Handle POINTER_PLUS_EXPR as PLUS_EXPR.
8034         * builtins.c (get_pointer_alignment): Handle POINTER_PLUS_EXPR
8035         instead of PLUS_EXPR.
8036         (expand_builtin_strcat): Create a POINTER_PLUS_EXPR instead of
8037         PLUS_EXPR for pointers.
8038         (std_gimplify_va_arg_expr): Likewise.
8039         (fold_builtin_memory_op): Likewise.
8040         (fold_builtin_strstr): Likewise.
8041         (fold_builtin_strchr): Likewise.
8042         (fold_builtin_strrchr): Likewise.
8043         (fold_builtin_strpbrk): Likewise.
8044         (expand_builtin_memory_chk): Likewise.
8045         (fold_builtin_memory_chk): Likewise.
8046         (std_expand_builtin_va_start): Use
8047         sizetype for the call to make_tree and then convert
8048         to the pointer type.
8049         (fold_builtin_memchr): Use POINTER_PLUS_EXPR
8050         instead of PLUS_EXPR for adding to a pointer.
8051         (std_gimplify_va_arg_expr): Use fold_build2 for
8052         the creating of POINTER_PLUS_EXPR.  For the BIT_AND_EXPR, cast
8053         the operands to sizetype first and then cast the BIT_AND_EXPR
8054         back to the pointer type.
8055         * fold-const.c (build_range_check): Handle pointer types
8056         specially.
8057         (extract_array_ref): Look for POINTER_PLUS_EXPR instead
8058         of PLUS_EXPR's. Make sure the offset is converted to
8059         sizetype.
8060         (try_move_mult_to_index): Strip the NOPs from the offset.
8061         Remove code argument and replace all uses with PLUS_EXPR.
8062         (fold_to_nonsharp_ineq_using_bound): Handle pointer types
8063         specially. Don't use a pointer type for MINUS_EXPR.
8064         (fold_unary): Handle for (T1)(X op Y),
8065         only p+ as that is the only as that can be handled for
8066         binary operators now.
8067         (fold_binary <case POINTER_PLUS_EXPR>): Add folding of
8068         POINTER_PLUS_EXPR.
8069         <case PLUS_EXPR>: Add folding of PTR+INT into
8070         PTR p+ INT.
8071         Don't call try_move_mult_to_index.
8072         <case MINUS_EXPR>: Fold (PTR0 p+ A) - (PTR1 p+ B)
8073         into (PTR0 - PTR1) + (A - B). Fold (PTR0 p+ A) - PTR1 into
8074         (PTR0 - PTR1) + A iff (PTR0 - PTR1) simplifies.
8075         Don't call try_move_mult_to_index.
8076         (tree_expr_nonnegative_warnv_p): Handle POINTER_PLUS_EXPR.
8077         (tree_expr_nonzero_p): Likewise.
8078         (fold_indirect_ref_1): Look at POINTER_PLUS_EXPR instead
8079         of PLUS_EXPR for the complex expression folding.
8080         * tree-chrec.c (chrec_fold_plus_poly_poly): If the
8081         first chrec is a pointer type, then the second should
8082         be sizetype and not the first's type.
8083         For POINTER_PLUS_EXPR, use a different right hand side type.
8084         Handle POINTER_PLUS_EXPR like PLUS_EXPR.
8085         (chrec_fold_plus_1): For POINTER_PLUS_EXPR, use a
8086         different right hand side type.
8087         Handle POINTER_PLUS_EXPR like PLUS_EXPR.
8088         (chrec_fold_plus): For pointer types, use POINTER_PLUS_EXPR
8089         instead of PLUS_EXPR.
8090         When either operand is zero, convert the other operand.
8091         (chrec_apply): Use chrec_convert_rhs
8092         on the argument x instead of chrec_convert.
8093         (reset_evolution_in_loop): For pointer types, the new_evol
8094         should be sizetype.
8095         (convert_affine_scev): For POINTER_PLUS_EXPR, use a
8096         different right hand side type.
8097         Handle POINTER_PLUS_EXPR like PLUS_EXPR.
8098         (chrec_convert_rhs): New function.
8099         (chrec_convert_aggressive): For POINTER_PLUS_EXPR, use a
8100         different right hand side type.
8101         Handle POINTER_PLUS_EXPR like PLUS_EXPR.
8102         * tree-chrec.h (chrec_convert_rhs): New prototype.
8103         (build_polynomial_chrec): For pointer types, the right hand
8104         * tree-ssa-ccp.c (maybe_fold_stmt_indirect): Look for
8105         POINTER_PLUS_EXPR instead of PLUS_EXPR's.
8106         Remove subtraction case as it is always addition now.
8107         Make sure the offset is converted to sizetype.
8108         (fold_stmt_r): Don't handle PLUS_EXPR/MINUS_EXPR specially.
8109         Handle POINTER_PLUS_EXPR like PLUS_EXPR was handled before.
8110         * tree-ssa-loop-ivopts.c (determine_base_object): Abort for 
8111         PLUS_EXPR in pointer type.
8112         Handle POINTER_PLUS_EXPR.
8113         (tree_to_aff_combination): Likewise.
8114         (force_expr_to_var_cost): Likewise.
8115         (force_expr_to_var_cost): Likewise. Create a POINTER_PLUS_EXPR
8116         instead of PLUS_EXPR for pointers.
8117         * c-format.c (check_format_arg): Handle POINTER_PLUS_EXPR
8118         instead of PLUS_EXPR of pointer types.
8119         * tree-stdarg.c (va_list_counter_bump): Handle POINTER_PLUS_EXPR
8120         as PLUS_EXPR.
8121         (check_va_list_escapes): Likewise.
8122         (check_all_va_list_escapes): Likewise.
8123         * dwarf2out.c (loc_descriptor_from_tree_1):
8124         Handle POINT_PLUS_EXPR as a PLUS_EXPR.
8125         * expr.c (expand_expr_real_1): Handle POINTER_PLUS_EXPR.
8126         (string_constant): Likewise.
8127         * tree-ssa-address.c (tree_mem_ref_addr): When adding
8128         the offset to the base, use POINTER_PLUS_EXPR.
8129         (add_to_parts): Convert the index to sizetype.
8130         (create_mem_ref): Create A POINTER_PLUS_EXPR for the one case.
8131         * matrix-reorg.c (collect_data_for_malloc_call): Stmt
8132         will now only be either INDIRECT_REF and POINTER_PLUS_EXPR.
8133         Offset only holds something for PLUS_EXPR.
8134         (ssa_accessed_in_tree): Handle POINTER_PLUS_EXPR just as
8135         a PLUS_EXPR.
8136         (analyze_transpose): POINTER_PLUS_EXPR will only show up now
8137         and not PLUS_EXPR.
8138         (analyze_accesses_for_modify_stmt): Likewise.
8139         Remove comment about the type being integral type as it is
8140         wrong now.
8141         (can_calculate_expr_before_stmt): Handle POINTER_PLUS_EXPR as
8142         PLUS_EXPR.
8143         (transform_access_sites): POINTER_PLUS_EXPR will only show up now
8144         and not PLUS_EXPR.
8145         Correct the type which the artimentic is done in (is now
8146         sizetype).
8147         Reindent one loop.
8148         * tree-data-ref.c (split_constant_offset): Handle
8149         POINTER_PLUS_EXPR
8150         * tree-affine.c (tree_to_aff_combination): Likewise.
8151         * c-typeck.c (build_unary_op): For pointers create the increment
8152         as a sizetype. Create a POINTER_PLUS_EXPR instead of PLUS_EXPR
8153         for pointers.
8154         * gimplify.c (gimplify_self_mod_expr): Create a
8155         POINTER_PLUS_EXPR instead of PLUS_EXPR for pointers.
8156         (gimplify_omp_atomic_fetch_op): Handle POINTER_PLUS_EXPR.
8157         * tree.def (POINTER_PLUS_EXPR): New tree code.
8158         * tree-predcom.c (ref_at_iteration): If we have a pointer
8159         type do the multiplication in sizetype.
8160         * tree-mudflap.c (mf_xform_derefs_1): Create a
8161         POINTER_PLUS_EXPR instead of PLUS_EXPR for pointers.
8162         * tree-ssa-forwprop.c 
8163         (forward_propagate_addr_into_variable_array_index):
8164         Don't expect there to be a cast for the index as that
8165         does not exist anymore.
8166         (forward_propagate_addr_expr_1): Check for POINTER_PLUS_EXPR
8167         instead of PLUS_EXPR.
8168         Don't check for the first operand of the POINTER_PLUS_EXPR
8169         was the index as it cannot be.
8170         Call forward_propagate_addr_into_variable_array_index with
8171         the SSA_NAME instead of the statement.
8172         * varasm.c (const_hash_1): Handle POINTER_PLUS_EXPR.
8173         (compare_constant): Likewise.
8174         (copy_constant): Likewise.
8175         (compute_reloc_for_constant): Likewise.
8176         (output_addressed_constants): Likewise.
8177         (initializer_constant_valid_p): Likewise.
8178         * tree-ssa.c (tree_ssa_useless_type_conversion_1):
8179         Convert the MIN/MAX of the inner type to the outer
8180         type before comparing them.
8181         * tree-ssa-loop-prefetch.c (idx_analyze_ref):  Handle
8182         POINTER_PLUS_EXPR instead of PLUS_EXPR.
8183         (issue_prefetch_ref): Create a POINTER_PLUS_EXPR instead
8184         of PLUS_EXPR for pointers.
8185         * tree-inline.c (estimate_num_insns_1): Handle
8186         POINTER_PLUS_EXPR.
8187         * tree-vect-transform.c (vect_create_addr_base_for_vector_ref): 
8188         Create a POINTER_PLUS_EXPR instead of PLUS_EXPR for pointers.
8189         (bump_vector_ptr): Create a POINTER_PLUS_EXPR
8190         instead of PLUS_EXPR for the pointer increment statement.
8191         (vect_update_ivs_after_vectorizer): For pointer types, create
8192         POINTER_PLUS_EXPR instead of PLUS_EXPR and also create
8193         MULT_EXPR in sizetype.
8194         (vect_gen_niters_for_prolog_loop): Add a cast when creating
8195         byte_misalign.
8196         * tree-object-size.c (plus_expr_object_size): Handle
8197         POINTER_PLUS_EXPR instead of PLUS_EXPR.  Removing all the extra
8198         code which is trying to figure out which side is a pointer and 
8199         is the index.
8200         (check_for_plus_in_loops_1): Likewise.
8201         (check_for_plus_in_loops): Likewise.
8202         * c-common.c (pointer_int_sum): Create a
8203         POINTER_PLUS_EXPR instead of PLUS_EXPR for pointers.
8204         * tree-ssa-structalias.c (handle_ptr_arith): Handle
8205         only POINTER_PLUS_EXPR.  Removing all the extra
8206         code which is trying to figure out which side is a pointer and 
8207         is the index.
8208         * tree-cfg.c (verify_expr): Add extra checking for pointers and
8209         PLUS_EXPR and MINUS_EXPR.
8210         Also add checking to make sure the operands of POINTER_PLUS_EXPR
8211         are correct.
8212         * config/frv/frv.c (frv_expand_builtin_va_start): Use sizetype
8213         with make_tree, instead of a pointer type.
8214         * config/s390/s390.c (s390_va_start): Use POINTER_PLUS_EXPR
8215         for pointers instead of PLUS_EXPR.
8216         (s390_gimplify_va_arg): Likewise.
8217         * config/spu/spu.c (spu_va_start): Create POINTER_PLUS_EXPR
8218         instead of PLUS_EXPR when doing addition on pointer
8219         types.  Use sizetype for the second operand.
8220         (spu_gimplify_va_arg_expr): Likewise.
8221         * config/sparc/sparc.c (sparc_gimplify_va_arg): Use 
8222         POINTER_PLUS_EXPR instead of PLUS_EXPR when the operand was
8223         a pointer.  Don't create a BIT_AND_EXPR for pointer types.
8224         * config/i386/i386.c (ix86_va_start): Use POINTER_PLUS_EXPR
8225         for the pointer addition and also use size_int/sizetype
8226         for the offset.
8227         (ix86_gimplify_va_arg): Likewise.
8228         Perform BIT_AND_EXPR on sizetype arguments.
8229         * config/sh/sh.c (sh_va_start): Call make_tree with sizetype
8230         and convert its result to a pointer type.  Use POINTER_PLUS_EXPR
8231         for the pointer additions and also use size_int for the offsets.
8232         (sh_gimplify_va_arg_expr): Use POINTER_PLUS_EXPR for the pointer
8233         additions and also use size_int for the offsets.  Perform
8234         BIT_AND_EXPR on sizetype arguments.
8235         * config/ia64/ia64.c (ia64_gimplify_va_arg): Use
8236         POINTER_PLUS_EXPR for pointers and create the
8237         BIT_AND_EXPR in sizetype.
8238         * config/rs6000/rs6000.c (rs6000_va_start): Use POINTER_PLUS_EXPR
8239         instead of PLUS_EXPR for pointer addition.
8240         (rs6000_va_start): Likewise.
8241         Also use sizetype for the offset.
8242         * config/pa/pa.c (reloc_needed): Handle POINTER_PLUS_EXPR
8243         as PLUS_EXPR/MINUS_EXPR.
8244         (hppa_gimplify_va_arg_expr): Don't create MINUS_EXPR or
8245         PLUS_EXPR for pointers, instead use POINTER_PLUS_EXPR.
8246         Don't use BIT_AND_EXPR on a pointer type, convert the
8247         expression to sizetype first.
8248         * config/mips/mips.c (mips_va_start): Use POINTER_PLUS_EXPR
8249         for pointers.
8250         (mips_gimplify_va_arg_expr): Likewise.
8251         Don't create BIT_AND_EXPR in a pointer type.
8252
8253 2007-06-15  Eric Christopher  <echristo@apple.com>
8254
8255         * config.gcc (i?86-*-darwin*): Add t-crtfm and t-crtpc.
8256         (x86_64-*-darwin*): Ditto.
8257         * config/i386/darwin.h (CRTEND_SPEC): New. Add support
8258         for above.
8259
8260 2007-06-15  Matthew Wilcox <matthew@wil.cx>
8261
8262         * doc/extend.texi: Document behavior of __attribute__((aligned))
8263         on typedefs.
8264
8265 2007-06-15  Mark Mitchell  <mark@codesourcery.com>
8266
8267         * rtlanal.c (note_stores): Improve documentation.
8268
8269 2007-06-15  Bernd Schmidt  <bernd.schmidt@analog.com>
8270
8271         * config/bfin/elf.h (ASM_GENERATE_INTERNAL_LABEL,
8272         LOCAL_LABEL_PREFIX): Delete.
8273         * config/bfin/bfin.c (TARGET_ASM_INTERNAL_LABEL): Delete.
8274         (bfin_internal_label): Delete.
8275
8276 2007-06-15  Uros Bizjak  <ubizjak@gmail.com>
8277
8278         * libgcc2.c (CEXT): When compiling L_multc3 and L_divtc3,
8279         define to "l" if LIBGCC_LONG_DOUBLE_SIZE == 128,
8280         otherwise define to LIBGCC2_TF_CEXT.
8281         * config/i386/linux64.h (LIBGCC2_HAS_TF_MODE): New define.
8282         (LIBGCC_TF_CEXT): Ditto.
8283         (TF_SIZE): Ditto.
8284
8285 2007-06-14  Seongbae Park  <seongbae.park@gmail.com>
8286
8287         PR rtl-optimization/32339
8288         * df-scan.c (df_uses_record): Don't modify flags but just add to
8289         it for df_ref_record.
8290
8291 2007-06-14  Andrew Pinski  <andrew_pinski@playstation.sony.com>
8292
8293         * tree-mudflap.c: Fix whitespace issues.
8294
8295 2007-06-15  Kazu Hirata  <kazu@codesourcery.com>
8296
8297         * config/m68k/m68k.c (ASM_DOT, ASM_DOTW, ASM_DOTL): Remove.
8298
8299 2007-06-14  Eric Christopher  <echristo@apple.com>
8300
8301         * config/i386/sse.md (movdi_to_sse): Rewrite body.
8302         (movv4sf): Use gcc_unreachable instead of abort.
8303
8304 2007-06-14  Uros Bizjak  <ubizjak@gmail.com>
8305
8306         PR target/32268
8307         * config/i386/sfp-machine.h (CMPtype): New define.
8308         (mach stubs): Use CMPtype instead of int as a return type.
8309
8310 2007-06-14  Uros Bizjak  <ubizjak@gmail.com>
8311
8312         * config/soft-fp/eqdf2.c, config/soft-fp/eqsf2.c,
8313         config/soft-fp/eqtf2.c, config/soft-fp/gedf2.c,
8314         config/soft-fp/gesf2.c, config/soft-fp/getf2.c,
8315         config/soft-fp/ledf2.c, config/soft-fp/lesf2.c,
8316         config/soft-fp/letf2.c, config/soft-fp/unorddf2.c,
8317         config/soft-fp/unordsf2.c, config/soft-fp/unordtf2.c,
8318         config/soft-fp/soft-fp.h: Update from glibc CVS.
8319
8320 2007-06-14  Bernd Schmidt  <bernd.schmidt@analog.com>
8321
8322         * config/bfin/uclinux.h (MFWRAP_SPEC): New.
8323
8324 2007-06-14  Rask Ingemann Lambertsen  <rask@sygehus.dk>
8325
8326         PR target/32341
8327         * config/v850/v850.c: Include dataflow header file.
8328         (substitute_ep_register): Fix typo.
8329
8330 2007-06-14  Paolo Bonzini  <bonzini@gnu.org>
8331
8332         * configure.ac: Fix earlier checkin.
8333         * configure: Regenerated.
8334
8335 2007-06-14  Paolo Bonzini  <bonzini@gnu.org>
8336
8337         * acinclude.m4 (gcc_AC_CHECK_PROG_VER): Remove.
8338         * aclocal.m4: Regenerate.
8339         * configure.ac: Use ACX_PROG_CC_WARNING_OPTS,
8340         ACX_PROG_CC_WARNINGS_ARE_ERRORS,
8341         ACX_PROG_CC_WARNING_ALMOST_PEDANTIC, ACX_CHECK_PROG_VER.
8342         * configure: Regenerate.
8343         * Makefile.in (LOOSE_WARN): Subst loose_warn.
8344
8345         * Makefile.in (quickstrap): Build libgcc too.
8346
8347 2007-06-14  Paolo Bonzini  <bonzini@gnu.org>
8348
8349         * configure.ac: Add --enable-checking=df.  Explicitly mention that
8350         the variables are initialized as for "release".
8351         * df-core.c: Use it.
8352         * configure: Regenerate.
8353         * config.in: Regenerate.
8354
8355 2007-06-14  Bob Wilson  <bob.wilson@acm.org>
8356
8357         * config/xtensa/xtensa.c (xtensa_expand_nonlocal_goto): Use
8358         validate_replace_rtx instead of replace_rtx.
8359         (xtensa_expand_prologue): Call df_insn_rescan after replace_rtx.
8360
8361 2007-06-14  Danny Smith  <dannysmith@users.sourceforge.net>
8362
8363         * config/i386/cygming.h (DWARF_FRAME_REGNUM): Define.
8364         (DWARF2_UNWIND_INFO): Override default if configured with
8365         SJLJ EH disabled.
8366         * config/i386/cygwin.h (STARTFILE_SPEC): Add crtbegin.o.
8367         (ENDFILE_SPEC): Add crtend.o.
8368         * config/i386/mingw32.h (STARTFILE_SEC): Add crtbegin.o.
8369         (ENDFILE_SPEC): Add crtend.o.
8370         (TARGET_USE_JCR_SECTION): Define.
8371         (MD_UNWIND_SUPPORT): Define for 32-bit target.
8372
8373         * config/i386/cygming-crtbegin.c: New file.
8374         * config/i386/cygming-crtend.c: New file.
8375
8376 2007-06-14  Pascal Obry Pascal Obry  <obry@adacore.com>
8377
8378         * config/i386/w32-unwind.h: New file.
8379
8380 2007-06-13  Eric Christopher  <echristo@apple.com>
8381
8382         * config/i386/darwin.h (PREFERRED_STACK_BOUNDARY): Don't let
8383         the user set a value below STACK_BOUNDARY.
8384
8385 2007-06-13  Thiemo Seufer  <ths@networkno.de>
8386
8387         * config/mips/linux.h, config/mips/linux64.h (LIB_SPEC): Always
8388         imply -lpthread for -pthread.
8389
8390 2007-06-13  Kazu Hirata  <kazu@codesourcery.com>
8391
8392         * basic-block.h: Remove the prototype for
8393         free_basic_block_vars.
8394         * cfglayout.h: Remove the prototype for
8395         insn_locators_initialize.
8396         * tree.h: Remove the prototype for emit_line_note.
8397
8398         * tree-ssa-pre.c (mergephitemp): Remove.
8399         (init_pre): Don't use mergephitemp.
8400
8401 2007-06-13  Eric Christopher  <echristo@apple.com>
8402
8403         * config/i386/i386.c (override_options): If we've specified
8404         an arch then don't use TARGET_SUBTARGET_ISA_DEFAULTs.
8405
8406 2007-06-13  Bob Wilson  <bob.wilson@acm.org>
8407
8408         * df-scan.c (df_get_entry_block_def_set): Check if STATIC_CHAIN_REGNUM
8409         is defined.
8410
8411 2007-06-13  Bernd Schmidt  <bernd.schmidt@analog.com>
8412
8413         * config/bfin/bfin.h (EH_RETURN_HANDLER_RTX): Use gen_frame_mem.
8414         * config/bfin/bfin.md (UNSPEC_VOLATILE_STORE_EH_HANDLER): New constant.
8415         (eh_store_handler): New pattern.
8416         (eh_return): Emit it instead of a plain move.
8417
8418 2007-06-13  Uros Bizjak  <ubizjak@gmail.com>
8419
8420         * config/i386/i386.c (ix86_init_mmx_sse_builtins)
8421         [__builtin_infq, __builtin_fabsq]: Define usign def_builtin.
8422         [__builtin_ia32_rsqrtps, __builtin_ia32_rsqrtss]: Define using
8423         def_builtin_const.
8424
8425 2007-06-13  Bernd Schmidt  <bernd.schmidt@analog.com>
8426
8427         * config/bfin/bfin.c (gen_one_bundle): Delete unused local variables.
8428         (find_next_insn_start, find_load): New functions.
8429         (bfin_reorg): Use them to deal with the fact that parallel insns are
8430         no longer represented as a SEQUENCE.
8431
8432 2007-06-13  Eric Botcazou  <ebotcazou@libertysurf.fr>
8433
8434         * config/sparc/sparc.c (sparc_override_options): Initialize
8435         fpu mask correctly.
8436
8437 2007-06-13  Dave Korn  <dave.korn@artimi.com>
8438
8439         * config/i386/i386.c (ix86_eax_live_at_start_p): Use
8440         df_get_live_out.
8441
8442 2007-06-13  Kazu Hirata  <kazu@codesourcery.com>
8443
8444         * auto-inc-dec.c, c-incpath.c, config/c4x/libgcc.S,
8445         config/sh/divcost-analysis, dbgcnt.def, df-core.c,
8446         df-problems.c, df-scan.c, df.h, dominance.c, dse.c, regstat.c,
8447         tree-data-ref.c, tree-ssa-loop-im.c, tree-ssa-loop-prefetch.c,
8448         tree-vect-transform.c: Fix comment typos.  Follow spelling
8449         conventions.
8450
8451 2007-06-12  Seongbae Park  <seongbae.park@gmail.com>
8452
8453        * df-scan.c (df_get_exit-block_use_set): Always add the stack pointer
8454        to the exit block use set.
8455        (df_insn_delete, df_insn_rescan): Fixed spelling of "deferring". 
8456        * gcse.c (cpro_jump): Don't emit barrier in cfglayout mode.
8457        * config/sparc/sparc.c (sparc_check_64): Check df != NULL.
8458
8459 2007-06-12  Seongbae Park  <seongbae.park@gmail.com>
8460
8461         * opts.c (common_handle_option): Handle new option -fdbg-cnt-list.
8462         * dbgcnt.c (dbg_cnt_set_limit_by_name): Return value
8463         to indicate an error.
8464         (dbg_cnt_process_single_pair, dbg_cnt_list_all_counters):
8465         New functions.
8466         (dbg_cnt_process_opt): Print an error on a bad argument.
8467         * dbgcnt.h (dbg_cnt_list_all_counters): New function declaration.
8468         * common.opt (-fdbg-cnt-list): New.
8469         * doc/invoke.texi (-fdbg-cnt-list,-fdbg-cnt=): New.
8470
8471 2007-06-12  Eric Botcazou  <ebotcazou@adacore.com>
8472
8473         * tree-ssa-alias.c (finalize_ref_all_pointers): Clear pt_anything
8474         flag on ref-all pointers.
8475
8476 2007-06-12  Andrew Pinski  <andrew_pinski@playstation.sony.com>
8477
8478         PR middle-end/31579
8479         * expr.c (expand_expr_addr_expr_1): Call expand_expr
8480         for the offset with the modifier as EXPAND_INITIALIZER
8481         if the modifier is EXPAND_INITIALIZER.
8482         (expand_expr_real_1 <case INTEGER_CST>): Don't force to
8483         a register if we had an overflow.
8484
8485 2007-06-12  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
8486
8487         * real.c (real_isfinite): New.
8488         (real_sqrt): Use it.
8489         * real.h (real_isfinite): New.
8490         * builtins.c: Use it.
8491
8492 2007-06-12  Ian Lance Taylor  <iant@google.com>
8493             Daniel Berlin  <dberlin@dberlin.org>
8494
8495         PR libstdc++/29286
8496         * tree.def: Add CHANGE_DYNAMIC_TYPE_EXPR.
8497         * tree.h (CHANGE_DYNAMIC_TYPE_NEW_TYPE): Define.
8498         (CHANGE_DYNAMIC_TYPE_LOCATION): Define.
8499         (DECL_NO_TBAA_P): Define.
8500         (struct tree_decl_common): Add no_tbaa_flag field.
8501         * tree-ssa-structalias.c (struct variable_info): Add
8502         no_tbaa_pruning field.
8503         (new_var_info): Initialize no_tbaa_pruning field.
8504         (unify_nodes): Copy no_tbaa_pruning field.
8505         (find_func_aliases): Handle CHANGE_DYNAMIC_TYPE_EXPR.
8506         (dump_solution_for_var): Print no_tbaa_pruning flag.
8507         (set_uids_in_ptset): Add no_tbaa_pruning parameter.  Change all
8508         callers.
8509         (compute_tbaa_pruning): New static function.
8510         (compute_points_to_sets): Remove CHANGE_DYNAMIC_TYPE_EXPR nodes.
8511         Call compute_tbaa_pruning.
8512         * tree-ssa-alias.c (may_alias_p): Test no_tbaa_flag for pointers.
8513         * gimplify.c (gimplify_expr): Handle CHANGE_DYNAMIC_TYPE_EXPR.
8514         * gimple-low.c (lower_stmt): Likewise.
8515         * tree-gimple.c (is_gimple_stmt): Likewise.
8516         * tree-ssa-operands.c (get_expr_operands): Likewise.
8517         * tree-ssa-dce.c (mark_stmt_if_obviously_necessary): Likewise.
8518         * tree-inline.c (estimate_num_insns_1): Likewise.
8519         (copy_result_decl_to_var): Likewise.
8520         * expr.c (expand_expr_real_1): Likewise.
8521         * tree-pretty-print.c (dump_generic_node): Likewise.
8522         * tree-inline.c (copy_decl_to_var): Copy DECL_NO_TBAA_P flag.
8523         * omp-low.c (omp_copy_decl_2): Likewise.
8524         * print-tree.c (print_node): Print DECL_NO_TBAA_P flag.
8525         * doc/c-tree.texi (Expression trees): Document
8526         CHANGE_DYNAMIC_TYPE_EXPR.
8527
8528 2007-06-12  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
8529
8530         * fold-const.c (fold_binary): Guard (X-X) -> 0 transformation
8531         with !HONOR_NANS and !HONOR_INFINITIES.
8532         * simplify-rtx.c (simplify_binary_operation_1): Likewise.
8533
8534 2007-06-12  Tristan Gingold  <gingold@adacore.com>
8535
8536         * gcov.c: Comments updated.
8537         (source_info): Add file_time field.
8538         (source_index): New variable.
8539         (mutiple_files): New variable.
8540         (generate_results): New function extracted from process_file.
8541         (process_file): Save and restore chain of functions, generate
8542         results and free structures only if not merging results.
8543         (release_structures): File names are now freed in create_file_names
8544         (create_file_names): Free previous file names.
8545         (find_source): File date is now read here and modifications in
8546         source files is checked here.
8547         (read_graph_file): Only reverse order of functions for the current
8548         object file.
8549         (make_gcov_file_name): Do not generate long names if input_name is
8550         NULL.
8551         (output_lines): If merging results do not display graph, data and
8552         runs informations.
8553         Checking source file modification is done in find_source.
8554
8555         * doc/gcov.texi: Append an s to sourcefile.
8556
8557 2007-06-12  Bernd Schmidt  <bernd.schmidt@analog.com>
8558
8559         * config/bfin/bfin.md (UNSPEC_NOP): New constant.
8560         (forced_nop): New pattern.
8561         * config/bfin/bfin.c: Include "df.h".
8562         (add_to_reg): Use df_regs_ever_live_p instead of regs_ever_live.
8563         (bfin_discover_loop): Use df_get_live_in instead of
8564         global_live_at_start.
8565         (bfin_reorder_loops): Pass 0 to cfg_layout_initialize.  Call
8566         df_analyze when done.
8567         (gen_one_bundle): Don't generate SEQUENCE insns, just put modes on
8568         the insns.  Use QImode for the final insn in a bundle.  Call
8569         df_insn_rescan on generated NOPs; use gen_forced_nop instead of
8570         gen_nop.
8571         (reorder_var_tracking_notes): New function.
8572         (bfin_reorg): Pass no argument to split_all_insns.  Don't call
8573         update_life_info.  Call df_analyze after scheduling and bundle
8574         generation.  Call reorder_var_tracking_notes if generating these
8575         notes.  Call df_finish_pass at the end.
8576
8577 2007-06-12  Dirk Mueller  <dmueller@suse.de>
8578
8579         * optabs.c (debug_optab_libfuncs): fix gcc_assert to
8580         a comparison, not an assignment.
8581
8582 2007-06-12  Olivier Hainque  <hainque@adacore.com>
8583
8584         * tree-nested.c (convert_local_reference): Handle VIEW_CONVERT_EXPR.
8585         Request walking the subtrees only, leaving the current is_lhs/val_only
8586         untouched.
8587         (convert_non_local_reference): Likewise.
8588
8589 2007-06-12  Nathan Sidwell  <nathan@codesourcery.com>
8590
8591         * config/m68k/m68k-devices.def (52221, 52223, 5253): New.
8592
8593 2007-06-12  Richard Guenther  <rguenther@suse.de>
8594
8595         PR tree-optimization/15353
8596         PR tree-optimization/31657
8597         * passes.c (init_optimization_passes): Add pass_tree_ifcombine.
8598         * timevar.def: Add TV_TREE_IFCOMBINE.
8599         * tree-pass.h (pass_tree_ifcombine): Declare.
8600         * tree-ssa-ifcombine.c: New file.
8601         * tree-ssa-phiopt.c (blocks_in_phiopt_order): Export.
8602         * tree-flow.h (blocks_in_phiopt_order): Declare.
8603         * Makefile.in (OBJS-common): Add tree-ssa-ifcombine.o.
8604         (tree-ssa-ifcombine.o): New dependencies.
8605
8606 2007-06-12  Uros Bizjak  <ubizjak@gmail.com>
8607
8608         PR rtl-optimization/32293
8609         * combine.c (simplify_if_then_else): Truncate return from
8610         nonzero_bits() to correct mode.
8611
8612 2007-06-12  Uros Bizjak  <ubizjak@gmail.com>
8613
8614         * fold-const (fold_binary) [RDIV_EXPR]: Also optimize a/cbrt(b/c)
8615         into a*cbrt(c/b) if flag_unsafe_math_optimizations is set.
8616
8617 2007-06-11  Diego Novillo  <dnovillo@google.com>
8618
8619         * Makefile.in (reload1.o-warn): Remove.
8620
8621 2007-06-11  Seongbae Park <seongbae.park@gmail.com>
8622
8623         * combine.c (subst): Use reg_overlap_mentioned_p
8624         instead of comparing register numbers directly.
8625
8626 2007-06-11  Kenneth Zadeck <zadeck@naturalbridge.com>
8627
8628         * reload1.c (mark_home_live_1): Use the mode parameter.
8629
8630 2007-06-11  Kenneth Zadeck <zadeck@naturalbridge.com>
8631
8632         * df-scan.c (df_insn_delete, df_insn_rescan, df_insn_rescan_all,
8633         df_process_deferred_rescans, df_notes_rescan): Fixed spelling of
8634         word "deferred".
8635         * df-core.c: Ditto.
8636
8637 2007-06-11  Daniel Berlin  <dberlin@dberlin.org>
8638
8639         * Merge dataflow-branch into mainline (see ChangeLog.dataflow)
8640
8641 2007-06-11  Uros Bizjak  <ubizjak@gmail.com>
8642
8643         * config/i386/i386.md ("*movtf_internal): Penalize moves to and
8644         from integer registers.
8645         (FP mode splitters): Handle TFmode.
8646
8647 2007-06-11  Eric Botcazou  <ebotcazou@adacore.com>
8648
8649         * tree-ssa-structalias.c (find_what_p_points_to): Return false
8650         for ref-all pointers that point-to anything.
8651
8652 2007-06-11  Joseph Myers  <joseph@codesourcery.com>
8653
8654         * config/arm/arm.c (arm_output_dwarf_dtprel,
8655         TARGET_ASM_OUTPUT_DWARF_DTPREL): New.
8656
8657 2007-06-11  Bernd Schmidt  <bernd.schmidt@analog.com>
8658
8659         * config/bfin/bfin.md (movdi_insn, movsi_insn, movv2hi_insn,
8660         movhi_insn, movqi_insn, movsf_insn, movdf_insn): Don't allow constant
8661         to memory moves.
8662
8663 2007-06-11  Rafael Avila de Espindola  <espindola@google.com>
8664
8665         * tree.c (signed_or_unsigned_type_for): New.
8666         (unsigned_type_for): Use signed_or_unsigned_type_for.
8667         (signed_type_for): Use signed_or_unsigned_type_for.
8668         * tree.h (signed_or_unsigned_type_for): New.
8669         (get_signed_or_unsigned_type): Remove.
8670         * fold-const.c (fold_negate_expr): Use signed_type_for instead of
8671         lang_hooks.types.signed_type
8672         (size_diffop): Likewise.
8673         (all_ones_mask_p): Likewise.
8674         (build_range_check): Likewise.
8675         (fold_cond_expr_with_comparison): Likewise.
8676         (fold_cond_expr_with_comparison): Likewise.
8677         (unextend): Likewise.
8678         (extract_muldiv_1): Likewise.
8679         (fold_single_bit_test_into_sign_test): Likewise.
8680         (fold_binary): Likewise.
8681         (fold_ternary): Likewise.
8682         (operand_equal_for_comparison_p): Use signed_or_unsigned_type_for
8683         instead of get_signed_or_unsigned_type.
8684         * c-objc-common.h (LANG_HOOKS_SIGNED_TYPE): Remove.
8685         (LANG_HOOKS_SIGNED_OR_UNSIGNED_TYPE): Remove.
8686         * expr.c (signed_or_unsigned_type_for): Use
8687         signed_or_unsigned_type_for instead of get_signed_or_unsigned_type.
8688         * langhooks.c (get_signed_or_unsigned_type): Remove.
8689         (lhd_signed_or_unsigned_type): Remove.
8690         * langhooks.h (lang_hooks_for_types): Remove signed_type and
8691         signed_or_unsigned_type.
8692         (lhd_signed_or_unsigned_type): Remove.
8693         * expmed.c (make_tree): Use signed_type_for instead of
8694         lang_hooks.types.signed_type.
8695         * c-common.c (same_scalar_type_ignoring_signedness): Use
8696         c_common_signed_type instead of lang_hooks.types.signed_type.
8697         (c_common_unsigned_type): New.
8698         (c_common_signed_type): Just call c_common_signed_or_unsigned_type.
8699         (shorten_compare): Use c_common_unsigned_type instead of
8700         c_common_signed_or_unsigned_type.
8701         (c_common_nodes_and_builtins): Use c_common_unsigned_type instead of
8702         unsigned_type_for.
8703         * convert.c (convert_to_integer): Use signed_type_for instead of
8704         lang_hooks.types.signed_type.
8705         * langhooks-def.h (LANG_HOOKS_SIGNED_OR_UNSIGNED_TYPE): Remove.
8706         (LANG_HOOK_FOR_TYPES_INITIALIZER): Remove LANG_HOOKS_SIGNED_TYPE and
8707         LANG_HOOKS_SIGNED_OR_UNSIGNED_TYPE.
8708         * c-format.c (check_format_types): Use c_common_unsigned_type
8709         instead of unsigned_type_for.
8710         * c-decl.c (groakdeclarator): Likewise.
8711         * c-typeck.c (convert_for_assignment): Likewise.
8712         * c-common.h (c_common_unsigned_type): New.
8713
8714 2007-06-11  Uros Bizjak  <ubizjak@gmail.com>
8715
8716         PR target/32280
8717         * config/i386/sse.md ("sse2_ashlti", "sse2_lshrti3"): Move ...
8718         * config/i386/i386.md ("sse2_ashlti", "sse2_lshrti3"): ... to here.
8719
8720 2007-06-11  Uros Bizjak  <ubizjak@gmail.com>
8721
8722         PR middle-end/32279
8723         * fold-const (fold_binary) [RDIV_EXPR]: Optimize a/sqrt(b/c)
8724         into a*sqrt(c/b) if flag_unsafe_math_optimizations is set.
8725
8726 2007-06-10  Jan Sjodin  <jan.sjodin@amd.com>
8727             Sebastian Pop  <sebpop@gmail.com>
8728
8729         * lambda-code.c (remove_iv): New.
8730         (lambda_loopnest_to_gcc_loopnest): Use remove_iv.
8731
8732 2007-06-10  Zdenek Dvorak  <dvorakz@suse.cz>
8733
8734         * tree-data-ref.c (dr_analyze_alias): Handle case smt is NULL.
8735         * tree-predcom.c (mark_virtual_ops_for_renaming): Exported.
8736         * tree-ssa-loop-prefetch.c: Include optabs.h.
8737         (FENCE_FOLLOWING_MOVNT): New macro.
8738         (struct mem_ref): Add independent_p and storent_p fields.
8739         (record_ref): Initalize the new fields.
8740         (gather_memory_references_ref): Return true if the reference
8741         could be analysed.
8742         (gather_memory_references): Check whether all memory accesses
8743         in loop were recorded.
8744         (should_issue_prefetch_p): Return false for nontemporal stores.
8745         (nontemporal_store_p, mark_nontemporal_store, emit_mfence_after_loop,
8746         may_use_storent_in_loop_p, mark_nontemporal_stores): New functions.
8747         (determine_loop_nest_reuse): Detect independent memory references.
8748         (loop_prefetch_arrays): Call mark_nontemporal_stores.
8749         * tree-flow.h (mark_virtual_ops_for_renaming): Declare.
8750         * Makefile.in (tree-ssa-loop-prefetch.o): Add OPTABS_H dependency.
8751         * config/i386/i386.h (x86_mfence): Declare.
8752         (FENCE_FOLLOWING_MOVNT): Return x86_mfence.
8753         * config/i386/i386.c (x86_mfence): New variable.
8754         (ix86_init_mmx_sse_builtins): Initialize x86_mfence.
8755
8756         * tree-pretty-print.c (dump_generic_node): Mark nontemporal stores.
8757         * optabs.c (init_optabs): Initialize storent_optab.
8758         * optabs.h (enum optab_index): Add OTI_storent.
8759         (storent_optab): Declare.
8760         * genopinit.c (optabs): Add initialization for storent_optab.
8761         * tree.h (MOVE_NONTEMPORAL): New macro.
8762         * expr.c (expand_assignment, store_expr, store_constructor_field,
8763         store_constructor, store_field, expand_expr_real_1): Propagate
8764         nontemporality of the expanded store.
8765         (emit_storent_insn): New function.
8766         * expr.h (expand_assignment, store_expr): Declaration changed.
8767         * function.c (assign_parm_setup_reg): Pass false as nontemporality
8768         to expand_assignment.
8769         * stmt.c (expand_asm_expr): Ditto.
8770         * calls.c (initialize_argument_information): Pass false as
8771         nontemporality to store_expr.
8772         * config/i386/sse.md (storentv4sf, storentv2df, storentv2di,
8773         storentsi): New.
8774
8775 2007-06-09  Daniel Berlin  <dberlin@dberlin.org>
8776
8777         * tree-ssa-structalias.c (set_uids_in_ptset): Add is_deref'd
8778         parameter, use it.
8779         (find_what_p_points_to): Pass new parameter to set_uids_in_ptset.
8780
8781 2007-06-09  Daniel Berlin  <dberlin@dberlin.org>
8782
8783         * tree-data-ref.c (dr_may_alias_p): Check that decl_a != decl_b,
8784         and allow DECL_P here.
8785
8786 2007-06-09  Zdenek Dvorak  <dvorakz@suse.cz>
8787
8788         * tree-scalar-evolution.c (follow_ssa_edge_in_rhs,
8789         follow_ssa_edge_in_condition_phi, follow_ssa_edge): Keep more precise
8790         track of the size of the expression.
8791         * cfghooks.c (merge_blocks): Remove block from loops structure only
8792         after call of the merge_blocks hook.
8793
8794 2007-06-09  Tom Tromey  <tromey@redhat.com>
8795
8796         * c-decl.c (grokdeclarator): Added 'deprecated_state' argument.
8797         (deprecated_state): Removed.
8798         (start_decl): Update.
8799         (enum deprecated_states): Moved earlier.
8800         (groktypename): Update.
8801         (push_parm_decl): Likewise.
8802         (grokfield): Likewise.
8803         (start_function): Likewise.
8804
8805 2007-06-09  Ian Lance Taylor  <iant@google.com>
8806
8807         PR tree-optimization/32169
8808         * tree-vrp.c (extract_range_from_unary_expr): For NOP_EXPR and
8809         CONVERT_EXPR, check whether min and max both converted to an
8810         overflow infinity representation.
8811
8812 2007-06-08  Eric Botcazou  <ebotcazou@adacore.com>
8813
8814         * reload1.c (fixup_abnormal_edges): Clear bb field for insns
8815         not inserted on the edge.
8816
8817 2007-06-08  Bob Wilson  <bob.wilson@acm.org>
8818
8819         * config/xtensa/lib1funcs.asm (__udivsi3): Use hardware divide
8820         instructions if they are supported.
8821         (__divsi3, __umodsi3, __modsi3): Likewise.
8822         (__ashldi3, __ashrdi3, __lshrdi3): New.
8823         * config/xtensa/t-xtensa (LIB1ASMFUNCS): Add DImode shift functions.
8824
8825 2007-06-08  Harsha Jagasia <harsha.jagasia@amd.com>
8826             Tony Linthicum <tony.linthicum@amd.com>
8827
8828         * doc/invoke.texi: Add fvect-cost-model flag.
8829         * common.opt (fvect-cost-model): New flag.
8830         * tree-vectorizer.c (new_stmt_vec_info): Initialize inside and outside
8831         cost fields in stmt_vec_info struct for STMT.
8832         * tree-vectorizer.h (stmt_vec_info): Define inside and outside cost
8833         fields in stmt_vec_info struct and access functions for the same.
8834         (TARG_COND_BRANCH_COST): Define cost of conditional branch.
8835         (TARG_VEC_STMT_COST): Define cost of any vector operation, excluding
8836         load, store and vector to scalar operation.
8837         (TARG_VEC_TO_SCALAR_COST): Define cost of vector to scalar operation.
8838         (TARG_VEC_LOAD_COST): Define cost of aligned vector load.
8839         (TARG_VEC_UNALIGNED_LOAD_COST): Define cost of misasligned vector load.
8840         (TARG_VEC_STORE_COST): Define cost of vector store.
8841         (vect_estimate_min_profitable_iters): Define new function.
8842         * tree-vect-analyze.c (vect_analyze_operations): Add a compile-time
8843         check to evaluate if loop iterations are less than minimum profitable
8844         iterations determined by cost model or minimum vect loop bound defined
8845         by user, whichever is more conservative.
8846         * tree-vect-transform.c (vect_do_peeling_for_loop_bound): Add a
8847         run-time check to evaluate if loop iterations are less than minimum
8848         profitable iterations determined by cost model or minimum vect loop
8849         bound defined by user, whichever is more conservative.
8850         (vect_estimate_min_profitable_iterations): New function to estimate
8851         mimimimum iterartions required for vector version of loop to be
8852         profitable over scalar version.
8853         (vect_model_reduction_cost): New function.
8854         (vect_model_induction_cost): New function.
8855         (vect_model_simple_cost): New function.
8856         (vect_cost_strided_group_size): New function.
8857         (vect_model_store_cost): New function.
8858         (vect_model_load_cost): New function.
8859         (vectorizable_reduction): Call vect_model_reduction_cost during
8860         analysis phase.
8861         (vectorizable_induction): Call vect_model_induction_cost during
8862         analysis phase.
8863         (vectorizable_load): Call vect_model_load_cost during analysis phase.
8864         (vectorizable_store): Call vect_model_store_cost during analysis phase.
8865         (vectorizable_call, vectorizable_assignment, vectorizable_operation,
8866         vectorizable_promotion, vectorizable_demotion): Call
8867         vect_model_simple_cost during analysis phase.
8868
8869 2007-06-08  Simon Baldwin  <simonb@google.com>
8870
8871         * reg-stack.c (get_true_reg): Readability change.  Moved default case
8872         label into direct switch statement scope.
8873
8874 2007-06-08  Simon Baldwin  <simonb@google.com>
8875
8876         * tree-flow-inline.h (var_ann): Replaced erroneous '=' assignment
8877         in gcc_assert() with '==' comparison.
8878
8879 2007-06-08  Uros Bizjak  <ubizjak@gmail.com>
8880
8881         * config/i386/i386.c (override_options): Merge TARGET_SSE4_2 and
8882         TARGET_ABM handling of x86_popcnt variable.
8883
8884 2007-06-08  Uros Bizjak  <ubizjak@gmail.com>
8885
8886         * doc/extend.texi (X86 Built-in Functions): Document __builtin_fabsq,
8887         __builtin_copysignq and __builtin_infq built-in functions.
8888
8889 2007-06-08  Uros Bizjak  <ubizjak@gmail.com>
8890
8891         * doc/extend.texi (X86 Built-in Functions): Add missing `@item's in
8892         SSE4.2 section.  Correct built-in function names in SSE4A section.
8893
8894 2007-06-08  Uros Bizjak  <ubizjak@gmail.com>
8895
8896         PR tree-optimization/32243
8897         * tree-vect-transform.c (vectorizable_type_promotion): Move check
8898         for ncopies after ratio check between nunits_out and nunits_in.
8899         (vectorizable_type_demotion): Remove single-use variable "scalar_type".
8900
8901 2007-06-08  Dorit Nuzman  <dorit@il.ibm.com>
8902
8903         PR tree-optimization/32224
8904         * tree-vect-analyze.c (vect_determine_vectorization_factor): Fail
8905         vectorization upon a non GIMPLE_MODIFY_STMT.
8906
8907 2007-06-08  Christian Bruel  <christian.bruel@st.com>
8908
8909         PR target/29953
8910         * config/sh/sh.md (doloop_end): New pattern and splitter.
8911         * loop-iv.c (simple_rhs_p): Check for hardware registers.
8912
8913 2007-06-08  Zdenek Dvorak  <dvorakz@suse.cz>
8914
8915         PR middle-end/32209
8916         * dominance.c (debug_dominance_tree, debug_dominance_tree_1): New
8917         functions.
8918         (verify_dominators): Do not change dominance tree.
8919
8920 2007-06-08  Kaz Kojima  <kkojima@gcc.gnu.org>
8921
8922         * config/sh/constraints.md: New file.
8923         * config/sh/sh.c: Include tm-constrs.h.
8924         (reg_class_from_letter): Remove.
8925         (prepare_cbranch_operands): Use satisfies_constraint_*
8926         function instead of macro.
8927         (andcosts, broken_move, sh_secondary_reload): Likewise.
8928         * config/sh/predicates.md (trapping_target_operand): Likewise.
8929         (and_operand, arith_operand, arith_reg_or_0_operand,
8930         cmp_operand, logical_operand, target_operand,
8931         ua_address_operand, ua_offset, xor_operand): Likewise.
8932         * config/sh/sh.md: Include constraints.md.
8933         (*movsicc_t_false): Use satisfies_constraint_* function
8934         instead of macro.
8935         (*movsicc_t_true, ashlsi3_std, ashlhi3_k, lshrsi3_m,
8936         lshrsi3_k, movsi_const_16bit+2, *movhi_media+1,
8937         movdi_const_16bit+1, beq, bne, *ptb): Likewise.
8938         * config/sh/sh.h (reg_class_from_letter): Remove prototype.
8939         (OVERRIDE_OPTIONS): Don't modify reg_class_from_letter.
8940         (REG_CLASS_FROM_CONSTRAINT): Remove.
8941         (CONSTRAINT_LEN, CONST_OK_FOR_I20, CONST_OK_FOR_I,
8942         CONST_OK_FOR_J, CONST_OK_FOR_K16, CONST_OK_FOR_K,
8943         CONST_OK_FOR_P27, CONST_OK_FOR_P, CONST_OK_FOR_M,
8944         CONST_OK_FOR_N, CONST_OK_FOR_CONSTRAINT_P,
8945         CONST_DOUBLE_OK_FOR_LETTER_P): Likewise.
8946         (SECONDARY_INOUT_RELOAD_CLASS): Use satisfies_constraint_*
8947         function instead of macro.
8948         (SECONDARY_INPUT_RELOAD_CLASS): Likewise.
8949         (EXTRA_CONSTRAINT_Q, EXTRA_CONSTRAINT_A,
8950         EXTRA_CONSTRAINT_Bsc, EXTRA_CONSTRAINT_B,
8951         EXTRA_CONSTRAINT_Css, EXTRA_CONSTRAINT_Csu): Remove.
8952         (IS_PC_RELATIVE_LOAD_ADDR_P): New macro.
8953         (IS_LITERAL_OR_SYMBOLIC_S16_P): Likewise.
8954         (IS_LITERAL_OR_SYMBOLIC_U16_P): Likewise.
8955         (IS_NON_EXPLICIT_CONSTANT_P): Likewise.
8956         (EXTRA_CONSTRAINT_Csy, EXTRA_CONSTRAINT_Z, EXTRA_CONSTRAINT_W,
8957         EXTRA_CONSTRAINT_Cpg, EXTRA_CONSTRAINT_C,
8958         EXTRA_MEMORY_CONSTRAINT, EXTRA_CONSTRAINT_Sr0,
8959         EXTRA_CONSTRAINT_Sua, EXTRA_CONSTRAINT_S,
8960         EXTRA_CONSTRAINT_STR): Likewise.
8961         (GO_IF_LEGITIMATE_INDEX): Fix indentation.
8962
8963 2007-06-07  Geoffrey Keating  <geoffk@apple.com>
8964
8965         * config/i386/darwin.h (STACK_BOUNDARY): Define.
8966
8967 2007-06-07  Simon Martin  <simartin@users.sourceforge.net>
8968
8969         PR c++/30759
8970         * c-common.h (flag_cpp0x): Replaced by...
8971         (cxx_dialect): ... this new variable specifying the C++ dialect that
8972         is used.
8973         * c-common.c (flag_cpp0x): Removed.
8974         (cxx_dialect): Defined.
8975         * c-cppbuiltin.c (c_cpp_builtins): flag_cpp0x rewritten in terms of
8976         cxx_dialect.
8977         * c-opts.c (c_common_post_options): Likewise.
8978         (set_std_cxx98): Set cxx_dialect to cxx98.
8979         (set_std_cxx0x): Set cxx_dialect to cxx0x.
8980
8981 2007-06-07  Geoffrey Keating  <geoffk@apple.com>
8982             Hui-May Chang <hm.chang@apple.com>
8983
8984         * doc/invoke.texi (Darwin Options): Update documentation for
8985         -mmacosx-version-min.
8986         * config.gcc (*-*-darwin*): Set extra_gcc_objs.
8987         * config/darwin-driver.c: New file.
8988         * config/darwin.h (GCC_DRIVER_HOST_INITIALIZATION): New.
8989         * config/t-darwin (darwin-driver.o): New rule.
8990
8991         * config/darwin-c.c (version_as_macro): Ignore low digit.
8992
8993 2007-06-07  Uros Bizjak  <ubizjak@gmail.com>
8994
8995         * config/i386/i386.md (standard sse constant splitter): Handle TFmode.
8996         (negtf2, abstf2, *absnegtf2_sse): New insn patterns.
8997         (CSGNMODE): New mode macro.
8998         (CSGNVMODE): New mode attribute.
8999         (copysign<mode>3): Rename from copysingsf3 and copysigndf3.  Macroize
9000         expander using CSGNMODE mode macro.  Handle TFmode.
9001         (copysign<mode>3_const): Rename from copysignsf3_const and
9002         copysigndf3_const.  Macroize pattern using CSGNMODE mode macro.
9003         Handle TFmode.
9004         (copysign<mode>3_var): Rename from copysignsf3_var and
9005         copysigndf3_var.  Macroize pattern using CSGNMODE mode macro.
9006         Handle TFmode.
9007         (copysign<mode>3_var splitter): Macroize pattern using CSGNMODE
9008         mode macro.  Handle TFmode.
9009         * config/i386/sse.md (andtf3, *andtf3, *nandtf3): New insn patterns.
9010         (iortf3, *iortf3): Ditto.
9011         (xortf3, *xortf3): Ditto.
9012         * config/i386/i386.c (ix86_build_signbit_mask): Create scalar
9013         TFmode and TImode masks.
9014         (ix86_expand_copysign): Expand TFmode copysign insn.
9015         (IX86_BUILTIN_INFQ): New.
9016         (IX86_BUILTIN_FABSQ): Ditto.
9017         (IX86_BUILTIN_COPYSIGNQ): Ditto.
9018         (ix86_init_mmx_sse_builtins) [__builtin_infq]: New builtin definition.
9019         [__builtin_fabsq]: Ditto.
9020         [__builtin_copysignq]: Ditto.
9021         (ix86_expand_builtin) [IX86_BUILTIN_INFQ]: Expand builtin.
9022         [IX86_BUILTIN_FABSQ]: Expand builtin using ix86_expand_unop_builtin().
9023         [IX86_BUILTIN_COPYSIGNQ]: Expand builtin using
9024         ix86_expand_binop_builtin().
9025
9026 2007-06-07  Bob Wilson  <bob.wilson@acm.org>
9027
9028         * config/xtensa/lib1funcs.asm: Clean up whitespace.
9029
9030 2007-06-07  Steve Ellcey  <sje@cup.hp.com>
9031
9032         PR target/31850
9033         * rtl.h (push_to_sequence2): New.
9034         * emit-rtl.c (push_to_sequence2): New.
9035         * function.c (assign_parm_data_all): Add new fields.
9036         (assign_parm_setup_block): Call push_to_sequence2 instead of
9037         push_to_sequence.
9038         (assign_parm_setup_reg): Ditto.
9039         (assign_parm_setup_stack): Ditto.
9040         (assign_parms_unsplit_complex): Ditto.
9041         (assign_parms): Change field name.
9042
9043 2007-06-07  Zdenek Dvorak  <dvorakz@suse.cz>
9044
9045         PR tree-optimization/32220
9046         * tree-predcom.c (eliminate_temp_copies): Handle the case that loop
9047         phi node is reached before defining statement.
9048
9049 2007-06-06  Andrew Pinski  <andrew_pinski@playstation.sony.com>
9050
9051         PR tree-opt/32231
9052         * tree-vect-transform.c (vectorizable_call): Call update_stmt
9053         after changing the right hand side of the assignment.
9054
9055 2007-06-06  Eric Christopher  <echristo@apple.com>
9056
9057         * config.gcc (i?86-*-darwin*): Remove arch parameter.
9058         (x86_64-*-darwin*): Ditto.
9059         * config/i386/darwin.h (TARGET_SUBTARGET32_ISA_DEFAULT): Define.
9060         (TARGET_SUBTARGET64_ISA_DEFAULT): Ditto.
9061
9062 2007-06-06  Thomas Neumann  <tneumann@users.sourceforge.net>
9063
9064         * tree-ssa-alias-warnings.c (maybe_add_match): Cast according to the
9065         coding conventions.
9066         (add_key): Likewise.
9067         * tree-ssa.c (init_tree_ssa): Use type safe memory macros.
9068         * tree-ssa-ccp.c (ccp_fold_builtin): Avoid using C++ keywords as
9069         variable names.
9070         * tree-ssa-coalesce.c (find_coalesce_pair): Use type safe memory
9071         macros.
9072         (add_cost_one_coalesce): Likewise.
9073         * tree-ssa-copy.c (merge_alias_info): Avoid using C++ keywords as
9074         variable names. Rename orig to orig_name for consistency.
9075         * tree-ssa-dom.c (dom_thread_across_edge): Cast according to the
9076         coding conventions.
9077         (cprop_into_successor_phis): Avoid using C++ keywords as variable
9078         names.
9079         (record_equivalences_from_stmt): Likewise.
9080         * tree-ssa-dse.c (dse_initialize_block_local_data): Cast according to
9081         the coding conventions.
9082         (memory_ssa_name_same): Likewise.
9083         (dse_optimize_stmt): Likewise.
9084         (dse_record_phis): Likewise.
9085         (dse_finalize_block): Likewise.
9086         * tree-ssa-loop-im.c (outermost_invariant_loop_expr): Avoid using C++
9087         keywords as variable names.
9088         (may_move_till): Cast according to the coding conventions.
9089         (force_move_till_expr): Avoid using C++ keywords as variable names.
9090         (force_move_till): Cast according to the coding conventions.
9091         (memref_hash): Likewise.
9092         (memref_eq): Likewise.
9093         (gather_mem_refs_stmt): Likewise.
9094         * tree-ssa-loop-ivopts.c (contains_abnormal_ssa_name_p): Avoid
9095         using C++ keywords as variable names.
9096         (idx_find_step): Cast according to the coding conventions.
9097         (idx_record_use): Likewise.
9098         (find_depends): Likewise.
9099         (prepare_decl_rtl): Likewise.
9100         (mbc_entry_hash): Likewise.
9101         (mbc_entry_eq): Likewise.
9102         * tree-ssa-loop-niter.c (SWAP): Use the correct the type for tmp.
9103         (simplify_replace_tree): Avoid using C++ keywords as variable names.
9104         (idx_infer_loop_bounds): Cast according to the coding conventions.
9105         * tree-ssa-loop-prefetch.c (idx_analyze_ref): Likewise.
9106         * tree-ssa-math-opts.c (occ_new ): Likwise.
9107         * tree-ssanames.c (duplicate_ssa_name_ptr_info): Use type safe memory
9108         macros.
9109         * tree-ssa-operands.c (add_def_op): Avoid using C++ keywords as
9110         variable names.
9111         (add_use_op): Likewise.
9112         (add_vop): Likewise.
9113         (add_vuse_op): Likewise.
9114         (add_vdef_op): Likewise.
9115         (get_expr_operands): Likewise.
9116         (push_stmt_changes): Use type safe memory macros.
9117         * tree-ssa-phiopt.c (replace_phi_edge_with_variable): Avoid using C++
9118         keywords as variable names.
9119         (conditional_replacement): Likewise.
9120         (minmax_replacement): Likewise.
9121         (abs_replacement): Likewise.
9122         * tree-ssa-pre.c (create_expression_by_pieces): Cast according to the
9123         coding conventions.
9124         (insert_fake_stores): Avoid using C++ keywords as variable names.
9125         * tree-ssa-reassoc.c (add_to_ops_vec): Cast according to the coding
9126         conventions.
9127         * tree-ssa-structalias.c (heapvar_lookup): Likewise.
9128         (heapvar_insert): Use type safe memory macros.
9129         (new_var_info): Cast according to the coding conventions.
9130         (new_constraint): Likewise.
9131         (remove_preds_and_fake_succs): Use type safe memory macros.
9132         * tree-ssa-threadupdate.c (thread_block): Cast according to the coding
9133         conventions.
9134         (thread_single_edge): Likewise.
9135         (thread_through_loop_header): Likewise.
9136
9137 2007-06-06  Eric Christopher  <echristo@apple.com>
9138
9139         * config/i386/i386.c (override_options): Move handling
9140         of TARGET_SUBTARGET* earlier.
9141
9142 2007-06-06  Paolo Bonzini  <bonzini@gnu.org>
9143
9144         * genmodes.c (tagged_printf, emit_insn_modes_h): Don't
9145         use %n on printf.
9146
9147 2007-06-06  Zdenek Dvorak  <dvorakz@suse.cz>
9148
9149         * haifa-sched.c (restore_bb_notes): Clear bb field of the notes
9150         emited outside of basic block.
9151         * cfgbuild.c (find_bb_boundaries): Clear bb field for insns between
9152         the created blocks.
9153         * rtl.h (delete_insn_chain): Declaration changed.
9154         * cfgrtl.c (delete_insn_chain): Add option to clear bb field for
9155         non-removed insns.
9156         (rtl_delete_block, rtl_merge_blocks): Pass true to delete_insn_chain.
9157         (delete_insn_chain_and_edges, try_redirect_by_replacing_jump,
9158         rtl_tidy_fallthru_edge, cfg_layout_merge_blocks): Pass false
9159         to delete_insn_chain.
9160         (rtl_verify_flow_info_1): Verify that the insns in header and footer
9161         do not have bb field set.
9162         (rtl_verify_flow_info): Verify that insns between basic blocks do not
9163         have bb field set.
9164         * recog.c (peephole2_optimize): Add argument to delete_insn_chain call.
9165         * cfgcleanup.c (try_optimize_cfg): Ditto.
9166
9167 2007-06-06  Thomas Neumann  <tneumann@users.sourceforge.net>
9168
9169         * lambda-code.c (struct lambda_lattice_s): Add a name to the struct.
9170         (lambda_body_vector_new): Use type safe memory macros.
9171         (lambda_linear_expression_new): Likewise.
9172         (lambda_loopnest_new): Likewise.
9173         (lambda_lattice_new): Likewise.
9174         (replace_uses_equiv_to_x_with_y): Cast according to the coding
9175         conventions. Use type safe memory macros.
9176         * lambda.h (struct lambda_trans_matrix_s): Add a name to the struct.
9177         (lambda_body_vector_s): Likewise.
9178         * lambda-mat.c (lambda_matrix_new): Use type safe memory macros.
9179         * lambda-trans.c (lambda_trans_matrix_new): Likewise.
9180
9181 2007-06-06  Richard Guenther  <rguenther@suse.de>
9182
9183         * tree-ssa-forwprop.c (forward_propagate_into_cond): Return 2
9184         if we need to schedule cfg_cleanup.
9185         (tree_ssa_forward_propagate_single_use_vars): Do so.
9186
9187 2007-06-06  Ian Lance Taylor  <iant@google.com>
9188
9189         * fold-const.c (merge_ranges): If range_successor or
9190         range_predecessor fail, just return 0.
9191
9192 2007-06-06  Uros Bizjak  <ubizjak@gmail.com>
9193
9194         PR tree-optimization/32216
9195         * tree-vectorizer.c (supportable_widening_operation): Determine
9196         signedness of FIX_TRUNC_EXPR from output operand.
9197         (supportable_narrowing_operation): Ditto.
9198         * tree-vect-generic.c (expand_vector_operations_1): Determine
9199         signedness of VEC_UNPACK_FLOAT_HI_EXPR and VEC_UNPACK_FLOAT_LO_EXPR
9200         from input operand.
9201
9202 2007-06-06  Thomas Neumann  <tneumann@users.sourceforge.net>
9203
9204         * config/i386/i386.c (enum pta_flags): Move out of struct scope...
9205         (struct pta): ...from here. Change flags to unsigned to avoid
9206         excessive casting (as it is used as a bit mask).
9207         (override_options): Add casts according to the coding convenventions.
9208         (x86_64_elf_unique_section): Likewise.
9209         (examine_argument): Avoid using C++ keywords as variable names.
9210         (construct_container): Likewise.
9211         (legitimize_pic_address): Likewise.
9212         (get_dllimport_decl): Cast according to the coding conventions. Use
9213         type safe memory macros.
9214         (legitimize_address): Cast according to the coding conventions.
9215         (emit_i387_cw_initialization): Corrected the type of slot to enum
9216         ix86_stack_slot.
9217         (ix86_init_machine_status): Use type safe memory macros.
9218         (bdesc_pcmpestr): Use UNKNOWN instead of integer 0.
9219         (bdesc_pcmpistr): Likewise.
9220         (bdesc_crc32): Likewise.
9221         (bdesc_sse_3arg): Likewise.
9222         (bdesc_2arg): Likewise.
9223         (bdesc_1arg): Likewise.
9224         (ix86_expand_sse_pcmpestr): Cast according to the coding conventions.
9225         (ix86_expand_sse_pcmpistr): Likewise.
9226         (ix86_expand_vec_set_builtin): Use EXPAND_NORMAL instead of integer 0.
9227         (ix86_builtin_vectorized_function): Change the type of fn to unsigned
9228         int to match the langhook definition.
9229         (ix86_builtin_conversion): Change the type of code to unsigned init to
9230         match the langhook definition.
9231         (ix86_preferred_reload_class): Avoid using C++ keywords as variable
9232         names.
9233         (ix86_preferred_output_reload_class): Likewise.
9234         (ix86_cannot_change_mode_class): Likewise.
9235         (ix86_memory_move_cost): Likewise.
9236         (ix86_rtx_costs): Cast the outer_code parameter to enum rtx_code to
9237         avoid excessive casting later on.
9238         (x86_output_mi_thunk): Avoid using C++ keywords as variable names.
9239
9240 2007-06-06  Uros Bizjak  <ubizjak@gmail.com>
9241
9242         * config/i386/sse.md (sse4_2_pcmpestr_cconly): Prefer pcmpestrm
9243         as flags setting insn.
9244         (sse4_2_pcmpistr_cconly): Prefer pcmpistrm as flags setting insn.
9245
9246 2007-06-06  Uros Bizjak  <ubizjak@gmail.com>
9247
9248         * config/i386/i386.md (UNSPEC_ROUNDP, UNSPEC_ROUNDS): Remove.
9249         (UNSPEC_ROUND): New.
9250         ("sse4_1_round<mode>2"): New insn pattern.
9251         ("rint<mode>2"): Expand using "sse4_1_round<mode>2" pattern for
9252         SSE4.1 targets.
9253         ("floor<mode>2"): Rename from floordf2 and floorsf2.  Macroize
9254         expander using SSEMODEF mode macro.  Expand using
9255         "sse4_1_round<mode>2" pattern for SSE4.1 targets.
9256         ("ceil<mode>2"): Rename from ceildf2 and ceilsf2.  Macroize
9257         expander using SSEMODEF mode macro.  Expand using
9258         "sse4_1_round<mode>2" pattern for SSE4.1 targets.
9259         ("btrunc<mode>2"): Rename from btruncdf2 and btruncsf2.  Macroize
9260         expander using SSEMODEF mode macro.  Expand using
9261         "sse4_1_round<mode>2" pattern for SSE4.1 targets.
9262         * config/i386/sse.md ("sse4_1_roundpd", "sse4_1_roundps"): Use
9263         UNSPEC_ROUND instead of UNSPEC_ROUNDP.
9264         ("sse4_1_roundsd", "sse4_1_roundss"): Use UNSPEC_ROUND instead of
9265         UNSPEC_ROUNDS.
9266
9267 2007-06-06  Jan Sjodin  <jan.sjodin@amd.com>
9268             Sebastian Pop  <sebpop@gmail.com>
9269
9270         * lambda.h (build_linear_expr): New.
9271         * lambda-code.c (lbv_to_gcc_expression, lle_to_gcc_expression):
9272         Use build_linear_expr, call fold and force_gimple_operand.
9273         (lambda_loopnest_to_gcc_loopnest): Check that there is
9274         something to insert.
9275         * testsuite/gcc.dg/tree-ssa/ltrans-6.c: New.
9276
9277 2007-06-05  Joerg Wunsch  <j.gnu@uriah.heep.sax.de>
9278
9279         PR preprocessor/23479
9280         * doc/extend.texi: Document the 0b-prefixed binary integer
9281         constant extension.
9282
9283 2007-06-05  Uros Bizjak  <ubizjak@gmail.com>
9284
9285         PR tree-optimization/32215
9286         * tree-vectorizer.c (supportable_widening_operation): Return false
9287         for unsupported FIX_TRUNC_EXPR tree code.
9288         (supportable_narrowing_operation): Ditto for FLOAT_EXPR tree code.
9289
9290 2007-06-06  Nathan Froyd  <froydnj@codesourcery.com>
9291
9292         * config/rs6000/rs6000.h (FIXED_SCRATCH): Use r0 as a scratch
9293         register on SPE targets.  Change documentation to reflect
9294         reality.
9295         * config/rs6000/rs6000.c (rs6000_conditional_register_usage):
9296         Change FIXED_SCRATCH to 14 and document why we're keeping r14
9297         out of the register allocation pool.
9298         (rs6000_reg_live_or_pic_offset_p): New function.
9299         (rs6000_emit_prologue): Move the actual saving of LR up to free
9300         r0 for holding r11.  Split saving of SPE 64-bit registers into
9301         its own case.  Ensure that offsets will always be in-range for
9302         'evstdd' by using r11 as a scratch register to point at the start
9303         of the SPE save area.  Save r11 if necessary, as it is the static
9304         chain register.
9305         (rs6000_emit_epilogue): Split restoring of SPE 64-bit registers
9306         into its own case.  Ensure that offsets will always be in-range
9307         for 'evldd' by using r11 as a scratch register to point at the
9308         start of the SPE save area.  Also adjust r11 when restoring
9309         the stack pointer to compensate for pre-loading r11.
9310
9311 2007-06-05  Thomas Neumann  <tneumann@users.sourceforge.net>
9312
9313         * cfg.c (init_flow): Use type safe memory macros.
9314         (alloc_block): Likewise.
9315         (unchecked_make_edge): Likewise.
9316         (dump_flow_info): Avoid using C++ keywords as variable names.
9317         (copy_original_table_clear): Cast according to the coding conventions.
9318         (copy_original_table_set): Likewise.
9319         * cfgexpand (label_rtx_for_bb): Likewise.
9320         (expand_gimple_basic_block): Likewise.
9321         * cfghooks.c (dump_bb): Likewise.
9322         (lv_adjust_loop_header_phi): Avoid using C++ keywords as
9323         variable names.
9324         (lv_add_condition_to_bb): Likewise.
9325         * cfglayout (relink_block_chain): Cast according to the coding
9326         conventions.
9327         (fixup_reorder_chain): Likewise.
9328         (fixup_fallthru_exit_predecessor): Likewise.
9329         * cfgloop.c (glb_enum_p): Likewise.
9330         (get_exit_description): Likewise.
9331         (dump_recorded_exit): Likewise.
9332         * cfgloop.h (enum loop_estimation): Move out of struct scope...
9333         (struct loop): ... from here.
9334         * cfgloopmanip.c (rpe_enum_p): Cast according to the coding
9335         conventions.
9336         * cfgrtl.c (rtl_create_basic_block): Likewise.
9337         (rtl_split_block): Likewise.
9338         (rtl_dump_bb): Likewise.
9339         (cfg_layout_split_block): Likewise.
9340         (init_rtl_bb_info): Use typesafe memory macros.
9341
9342         * graphds.h (struct graph_edge): Renamed edge to graph_edge.
9343         * graphds.h: Updated all usages of edge to graph_edge.
9344         * graphds.c: Likewise.
9345         * cfgloopanal.c: Likewise.
9346
9347 2007-06-05  Ian Lance Taylor  <iant@google.com>
9348
9349         * tree-vrp.c (compare_values_warnv): Check TREE_NO_WARNING on a
9350         PLUS_EXPR or MINUS_EXPR node before setting *strict_overflow_p.
9351         (extract_range_from_assert): Set TREE_NO_WARNING when creating an
9352         expression.
9353         (test_for_singularity): Likewise.
9354
9355 2007-06-05  H.J. Lu  <hongjiu.lu@intel.com>
9356
9357         * config/i386/constraints.md ("Y2"): Replaced by ...
9358         ("Yt"): This.
9359         * config/i386/i386.md: Likewise.
9360         * config/i386/mmx.md: Likewise.
9361         * config/i386/sse.md: Likewise.
9362
9363 2007-06-05  H.J. Lu  <hongjiu.lu@intel.com>
9364
9365         * config/i386/constraints.md ("z"): Replaced by ...
9366         ("Y0"): This.
9367         * config/i386/sse.md (sse4_1_blendvpd): Likewise.
9368         (sse4_1_blendvps): Likewise.
9369         (sse4_1_pblendvb): Likewise.
9370         (sse4_2_pcmpestr): Likewise.
9371         (sse4_2_pcmpestrm): Likewise.
9372         (sse4_2_pcmpestr_cconly): Likewise.
9373         (sse4_2_pcmpistr): Likewise.
9374         (sse4_2_pcmpistrm): Likewise.
9375         (sse4_2_pcmpistr_cconly): Likewise.
9376
9377 2007-06-05  Razya Ladelsky  <razya@il.ibm.com>
9378
9379         * matrix-reorg.c (transform_access_sites): Fix computation.
9380         (transform_allocation_sites): Same.
9381
9382 2007-06-05  Uros Bizjak  <ubizjak@gmail.com>
9383
9384         * config/i386/i386.c (override_options): Use
9385         TARGET_SUBTARGET32_ISA_DEFAULT to select default ix86_isa_flags.
9386
9387 2007-06-05  Uros Bizjak  <ubizjak@gmail.com>
9388
9389         * config/i386/predicates.md (reg_not_xmm0_operand): New predicate.
9390         (nonimm_not_xmm0_operand): Ditto.
9391         * config/i386/sse.md ("sse4_1_blendvpd"): Use "reg_not_xmm0_operand"
9392         as operand[0] and operand[1] predicate.  Use "nonimm_not_xmm0_operand"
9393         as operand[2] predicate.  Require "z" class XMM register for
9394         operand[3].  Adjust asm template.
9395         ("sse4_1_blendvpd"): Ditto.
9396         ("sse4_1_pblendvb"): Ditto.
9397         * config/i386/i386.c (ix86_expand_sse_4_operands_builtin): Do not
9398         force op2 into xmm0 register for variable blend instructions.
9399
9400 2007-06-04  Tom Tromey  <tromey@redhat.com>
9401
9402         * c-tree.h (start_enum): Update.
9403         (build_enumerator): Likewise.
9404         * c-decl.c (enum_next_value): Removed.
9405         (enum_overflow): Likewise.
9406         (start_enum): Add c_enum_contents argument.  Don't use globals.
9407         (build_enumerator): Likewise.
9408         * c-tree.h (struct c_enum_contents): New struct.
9409
9410 2007-06-04  Tom Tromey  <tromey@redhat.com>
9411
9412         * c-common.c (c_common_get_alias_set): Fix indentation.
9413
9414 2007-06-04  Ian Lance Taylor  <iant@google.com>
9415
9416         * tree-vrp.c (adjust_range_with_scev): When loop is not expected
9417         to overflow, reduce overflow infinity to regular infinity.
9418         (vrp_var_may_overflow): New static function.
9419         (vrp_visit_phi_node): Check vrp_var_may_overflow.
9420
9421 2007-06-04  Kazu Hirata  <kazu@codesourcery.com>
9422
9423         * stor-layout.c (layout_type): Remove duplicate code.
9424
9425 2007-06-04  Uros Bizjak  <ubizjak@gmail.com>
9426
9427         PR c/32191
9428         * c-common.c (c_define_builtins): Call targetm.init_builtins ()
9429         before build_common_builtin_nodes ().
9430
9431 2007-06-04  Steve Ellcey  <sje@cup.hp.com>
9432
9433         PR target/31733
9434         * cfgrtl.c (rtl_verify_flow_info): Skip notes when looking for barrier.
9435
9436 2007-06-04  Jan Hubicka  <jh@suse.cz>
9437
9438         * tree-predcom.c (replace_ref_with, initialize_root_vars_lm,
9439         reassociate_to_the_same_stmt): Call build_gimple_modify_stmt
9440         instead of _stat version.
9441
9442 2007-06-03  Zdenek Dvorak  <dvorakz@suse.cz>
9443
9444         PR tree-optimization/32194
9445         * tree-predcom.c (determine_offset): Check that both references have
9446         the same type.
9447
9448 2007-06-03  Zdenek Dvorak  <dvorakz@suse.cz>
9449
9450         * cfgloopmanip.c (remove_path, loopify, duplicate_loop_to_header_edge):
9451         Change dom_bbs to vector.  Add argument to iterate_fix_dominators call.
9452         * loop-unroll.c (unroll_loop_runtime_iterations): Ditto.
9453         * tree-cfg.c (tree_duplicate_sese_region): Change doms to vector.
9454         Add argument to iterate_fix_dominators call.
9455         (remove_edge_and_dominated_blocks): Pass vector to bbs_to_fix_dom.
9456         * gcse.c (hoist_code): Change domby to vector.
9457         * cfghooks.c (make_forwarder_block): Change doms_to_fix to vector.
9458         Add argument to iterate_fix_dominators call.
9459         * loop-doloop.c (doloop_modify): Changed recount_dominator to
9460         recompute_dominator.
9461         * lambda-code.c (perfect_nestify): Ditto.
9462         * cfgloopanal.c: Include graphds.h.
9463         (struct edge, struct vertex, struct graph, dump_graph, new_graph,
9464         add_edge, dfs, for_each_edge, free_graph): Moved to graphds.c.
9465         (mark_irreducible_loops): Use graphds_scc.  Remove argument from
9466         add_edge call.
9467         * graphds.c: New file.
9468         * graphds.h: New file.
9469         * dominance.c: Include vecprim.h, pointer-set.h and graphds.h.
9470         (get_dominated_by, get_dominated_by_region): Change return type to
9471         vector.
9472         (verify_dominators): Recompute all dominators and compare the results.
9473         (recount_dominator): Renamed to ...
9474         (recompute_dominator): ... this.  Do not check that the block is
9475         dominated by entry.
9476         (iterate_fix_dominators): Reimplemented.
9477         (prune_bbs_to_update_dominators, root_of_dom_tree,
9478         determine_dominators_for_sons): New functions.
9479         * et-forest.c (et_root): New function.
9480         * et-forest.h (et_root): Declare.
9481         * Makefile.in (graphds.o): Add.
9482         (cfgloopanal.o): Add graphds.h dependency.
9483         (dominance.o): Add graphds.h, vecprim.h and pointer-set.h dependency.
9484         * basic-block.h (get_dominated_by, get_dominated_by_region,
9485         iterate_fix_dominators): Declaration changed.
9486         (recount_dominator): Renamed to ...
9487         (recompute_dominator): ... this.
9488         * tree-ssa-threadupdate.c (thread_block): Free dominance info.
9489         (thread_through_all_blocks): Do not free dominance info.
9490
9491 2007-06-03  Andreas Schwab  <schwab@suse.de>
9492
9493         * config/m68k/m68k.c (override_options): Don't override
9494         REAL_MODE_FORMAT.
9495         * config/m68k/m68k-modes.def (SF, DF): Define to use
9496         motorola_single_format and motorola_double_format, resp.
9497         * real.c (motorola_single_format): Renamed from
9498         coldfire_single_format.
9499         (motorola_double_format): Renamed from coldfire_double_format.
9500         (encode_ieee_extended): Generate a proper canonical NaN image
9501         respecting canonical_nan_lsbs_set.
9502         (ieee_extended_motorola_format): Set canonical_nan_lsbs_set to
9503         true.
9504         * real.h: Adjust declarations.
9505
9506 2007-06-03  Kaz Kojima  <kkojima@gcc.gnu.org>
9507
9508         PR target/32163
9509         * config/sh/sh.md (symGOT_load): Don't schedule insns when
9510         the symbol is generated with the stack protector.
9511
9512 2007-06-03  Kazu Hirata  <kazu@codesourcery.com>
9513
9514         * config/m68k/m68k.c (m68k_attribute_table): Add "interrupt".
9515         (m68k_get_function_kind): Return m68k_fk_interrupt_handler on
9516         "interrupt".
9517         * doc/extend.texi (interrupt): Mention m68k.
9518
9519 2007-06-02  Uros Bizjak  <ubizjak@gmail.com>
9520
9521         * config/i386/i386.c (ix86_expand_sse_4_operands_builtin): Call
9522         safe_vector_operand() if input operand is VECTOR_MODE_P operand.
9523         (ix86_expand_sse_pcmpestr): Do not check operands for
9524         "register_operand", when insn operand predicate is "register_operand".
9525         (ix86_expand_sse_pcmpistr): Ditto.
9526
9527 2007-06-02  H.J. Lu  <hongjiu.lu@intel.com>
9528             Uros Bizjak  <ubizjak@gmail.com>
9529
9530         * config/i386/i386.h (enum reg_class) [SSE_FIRST_REG]: New.
9531         (SSE_CLASS_P): Use reg_class_subset_p between SSE_REGS.
9532         (REG_CLASS_NAMES): Add "FIRST_SSE_REG" string.
9533         (REG_CLASS_CONTENTS): Add members of FIRST_SSE_REG class.
9534         * config/i386/constraints.md ("z"): New register constraint
9535         for members of SSE_FIRST_REG class.
9536         * config/i386/i386-modes.def (CCA, CCC, CCO, CCS): New compare modes.
9537         * config/i386/i386.c (regclass_map): Change class of %xmm0 to
9538         SSE_FIRST_REG class.
9539         (put_condition_code) [EQ, NE]: Output suffixes for new compare modes.
9540         (ix86_cc_modes_compatible): Handle CCA, CCC, CCO and CCS modes.
9541         (IX86_BUILTIN_PCMPESTRI128): New for SSE4.2.
9542         (IX86_BUILTIN_PCMPESTRM128): Likewise.
9543         (IX86_BUILTIN_PCMPESTRA128): Likewise.
9544         (IX86_BUILTIN_PCMPESTRC128): Likewise.
9545         (IX86_BUILTIN_PCMPESTRO128): Likewise.
9546         (IX86_BUILTIN_PCMPESTRS128): Likewise.
9547         (IX86_BUILTIN_PCMPESTRZ128): Likewise.
9548         (IX86_BUILTIN_PCMPISTRI128): Likewise.
9549         (IX86_BUILTIN_PCMPISTRM128): Likewise.
9550         (IX86_BUILTIN_PCMPISTRA128): Likewise.
9551         (IX86_BUILTIN_PCMPISTRC128): Likewise.
9552         (IX86_BUILTIN_PCMPISTRO128): Likewise.
9553         (IX86_BUILTIN_PCMPISTRS128): Likewise.
9554         (IX86_BUILTIN_PCMPISTRZ128): Likewise.
9555         (struct builtin_description): Change "flag" field to unsigned.
9556         (bdesc_pcmpestr): New builtin description table.
9557         (bdesc_pcmpistr): Likewise.
9558         (ix86_init_mmx_sse_builtins): Define int_ftype_v16qi_int_v16qi_int_int,
9559         v16qi_ftype_v16qi_int_v16qi_int_int and int_ftype_v16qi_v16qi_int.
9560         Initialize pcmp[ei]str[im] insns for SSE4.2.
9561         (ix86_expand_sse_pcmpestr): New subroutine of ix86_expand_builtin.
9562         (ix86_expand_sse_pcmpistr): Likewise.
9563         (ix86_expand_builtin): Expand pcmp[ei]str[im] builtins for SSE4.2.
9564         * config/i386/i386.md (UNSPEC_PCMPESTR): New for SSE4.2.
9565         (UNSPEC_PCMPISTR): Likewise.
9566         * config/i386/sse.md (sse4_2_pcmpestr): New insn patern and splitter.
9567         (sse4_2_pcmpestri):New isns pattern.
9568         (sse4_2_pcmpestrm): Likewise.
9569         (sse4_2_pcmpestr_cconly): Likewise.
9570         (sse4_2_pcmpistr): New insn patern and splitter.
9571         (sse4_2_pcmpistri):New isns pattern.
9572         (sse4_2_pcmpistrm): Likewise.
9573         (sse4_2_pcmpistr_cconly): Likewise.
9574         * config/i386/smmintrin.h: Enable pcmp[ei]str[im] intrinsics
9575         in SSE4.2.
9576
9577 2007-06-01  David Daney  <ddaney@avtrex.com>
9578
9579         * config/mips/mips.c (mips_output_mi_thunk): Only load gp if not
9580         LOADGP_ABSOLUTE and not binds_local_p.
9581
9582 2007-06-01  Geoffrey Keating  <geoffk@apple.com>
9583
9584         * config/darwin.h (LINK_SPEC): Pass -fpie through to the linker.
9585
9586 2007-06-01  Ian Lance Taylor  <iant@google.com>
9587
9588         * tree-vrp.c (compare_name_with_value): Always set
9589         used_strict_overflow if we get a result from the variable itself.
9590
9591 2007-06-01  Ian Lance Taylor  <iant@google.com>
9592
9593         PR rtl-optimization/31455
9594         * lower-subreg.c (find_decomposable_subregs): Don't decompose
9595         subregs which have a cast between modes which are not tieable.
9596
9597 2007-06-01  Uros Bizjak  <ubizjak@gmail.com>
9598
9599         * expr.c (force_operand) [DIV, MOD, UDIV, UMOD, ASHIFTRT]: Remove
9600         breaks after return statements.
9601
9602 2007-06-01  Kaz Kojima  <kkojima@gcc.gnu.org>
9603
9604         * config/sh/sh.c (fpscr_set_from_mem): Call get_free_reg
9605         only after no_new_pseudos.
9606
9607 2007-05-31  Eric Christopher  <echristo@apple.com>
9608
9609         * expr.c (convert_move): Assert that we don't have a BLKmode
9610         operand.
9611         (store_expr): Handle BLKmode moves by calling emit_block_move.
9612
9613 2007-05-31  Daniel Berlin  <dberlin@dberlin.org>
9614
9615         * c-typeck.c (build_indirect_ref): Include type in error message.
9616         (build_binary_op): Pass types to binary_op_error.
9617         * c-common.c (binary_op_error): Take two type arguments, print out
9618         types with error.
9619         * c-common.h (binary_op_error): Update prototype.
9620
9621 2007-05-31  H.J. Lu  <hongjiu.lu@intel.com>
9622
9623         * config/i386/i386.c: Correct coments on -mno-sse4.
9624
9625 2007-05-31  H.J. Lu  <hongjiu.lu@intel.com>
9626
9627         * config.gcc (i[34567]86-*-*): Add nmmintrin.h to extra_headers.
9628         (x86_64-*-*): Likewise.
9629         * config/i386/i386.c (OPTION_MASK_ISA_MMX_UNSET): New.
9630         (OPTION_MASK_ISA_3DNOW_UNSET): Likewise.
9631         (OPTION_MASK_ISA_SSE_UNSET): Likewise.
9632         (OPTION_MASK_ISA_SSE2_UNSET): Likewise.
9633         (OPTION_MASK_ISA_SSE3_UNSET): Likewise.
9634         (OPTION_MASK_ISA_SSSE3_UNSET): Likewise.
9635         (OPTION_MASK_ISA_SSE4_1_UNSET): Likewise.
9636         (OPTION_MASK_ISA_SSE4_2_UNSET): Likewise.
9637         (OPTION_MASK_ISA_SSE4): Likewise.
9638         (OPTION_MASK_ISA_SSE4_UNSET): Likewise.
9639         (OPTION_MASK_ISA_SSE4A_UNSET): Likewise.
9640         (ix86_handle_option): Use OPTION_MASK_ISA_*_UNSET.  Handle SSE4.2.
9641         (override_options): Support SSE4.2.
9642         (ix86_build_const_vector): Support SImode and DImode.
9643         (ix86_build_signbit_mask): Likewise.
9644         (ix86_expand_int_vcond): Support V2DImode.
9645         (IX86_BUILTIN_CRC32QI): New for SSE4.2.
9646         (IX86_BUILTIN_CRC32HI): Likewise.
9647         (IX86_BUILTIN_CRC32SI): Likewise.
9648         (IX86_BUILTIN_CRC32DI): Likewise.
9649         (IX86_BUILTIN_PCMPGTQ): Likewise.
9650         (bdesc_crc32): Likewise.
9651         (bdesc_sse_3arg): Likewise.
9652         (ix86_expand_crc32): Likewise.
9653         (ix86_init_mmx_sse_builtins): Support SSE4.2.
9654         (ix86_expand_builtin): Likewise.
9655         * config/i386/i386.h (TARGET_CPU_CPP_BUILTINS): Define
9656         __SSE4_2__ for -msse4.2.
9657         * config/i386/i386.md (UNSPEC_CRC32): New for SSE4.2.
9658         (CRC32MODE): Likewise.
9659         (crc32modesuffix): Likewise.
9660         (crc32modeconstraint): Likewise.
9661         (sse4_2_crc32<mode>): Likewise.
9662         (sse4_2_crc32di): Likewise.
9663         * config/i386/i386.opt (msse4.2): New for SSE4.2.
9664         (msse4): Likewise.
9665         * config/i386/nmmintrin.h: New. The dummy SSE4.2 intrinsic header file.
9666         * config/i386/smmintrin.h: Add SSE4.2 intrinsics.
9667         * config/i386/sse.md (sse4_2_gtv2di3): New pattern for SSE4.2.
9668         (vcond<mode>): Use SSEMODEI instead of SSEMODE124.
9669         (vcondu<mode>): Likewise.
9670         * doc/extend.texi: Document SSE4.2 built-in functions.
9671         * doc/invoke.texi: Document -msse4.2/-msse4.
9672
9673 2007-05-31  Zdenek Dvorak  <dvorakz@suse.cz>
9674
9675         PR tree-optimization/32160
9676         * tree-predcom.c (predcom_tmp_var): New function.  Mark created
9677         variable as gimple reg.
9678         (initialize_root_vars, initialize_root_vars_lm): Use predcom_tmp_var.
9679
9680 2007-05-31  Kazu Hirata  <kazu@codesourcery.com>
9681
9682         * gcc.c (main): Don't consider linker options when issuing the
9683         warning about a linker input file not being used.
9684
9685 2007-05-30  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
9686
9687         * tree-vrp.c (compare_names): Initialize sop.
9688
9689 2007-05-30  Dirk Mueller  <dmueller@suse.de>
9690
9691         * cgraphunit.c (cgraph_analyze_function): Remove
9692         computation of inline parameters.
9693
9694 2007-05-30  Uros Bizjak  <ubizjak@gmail.com>
9695
9696         * config/i386/darwin.h (TARGET_SUBTARGET_DEFAULT): Undef before define.
9697
9698 2007-05-30  Richard Sandiford  <richard@codesourcery.com>
9699
9700         * config.gcc (arm-wrs-vxworks): Remove dbxelf.h from tm_file.
9701         Add vx-common.h.  Include vxworks.h between vx-common.h and
9702         arm/vxworks.h.
9703         * config/vx-common.h (DWARF2_UNWIND_INFO): Undefine before
9704         redefining.
9705         * config/vxworks.h (TARGET_ASM_CONSTRUCTOR): Likewise.
9706         (TARGET_ASM_DESTRUCTOR): Likewise.
9707         * config/arm/vxworks.h (TARGET_OS_CPP_BUILTINS): Check arm_arch_xscale
9708         instead of arm_is_xscale.  Use VXWORKS_OS_CPP_BUILTINS.
9709         (OVERRIDE_OPTIONS, SUBTARGET_CPP_SPEC): Define.
9710         (CC1_SPEC): Add -tstrongarm.  Line up backslashes.
9711         (VXWORKS_ENDIAN_SPEC): Define.
9712         (ASM_SPEC): Add VXWORKS_ENDIAN_SPEC.
9713         (LIB_SPEC, STARTFILE_SPEC, ENDFILE_SPEC): Redefine to their
9714         VXWORKS_* equivalents.
9715         (LINK_SPEC): Likewise, but add VXWORKS_ENDIAN_SPEC.
9716         (ASM_FILE_START): Delete.
9717         (TARGET_VERSION): Reformat.
9718         (FPUTYPE_DEFAULT, FUNCTION_PROFILER): Define.
9719         (DEFAULT_STRUCTURE_SIZE_BOUNDARY): Define.
9720         * config/arm/t-vxworks (LIB1ASMSRC, LIB1ASMFUNCS): Define.
9721         (FPBIT, DPBIT): Define.
9722         (fp-bit.c, dp-bit.c): New rules.
9723         (MULTILIB_OPTIONS): Add strongarm, -mrtp and -mrtp/-fPIC multilibs.
9724         (MULTILIB_MATCHES, MULTILIB_EXCEPTIONS): Define.
9725         * config/arm/arm-protos.h (arm_emit_call_insn): Declare.
9726         * config/arm/arm.h: Include vxworks-dummy.h.
9727         * config/arm/arm.c (arm_elf_asm_constructor, arm_elf_asm_destructor):
9728         Mark with ATTRIBUTE_UNUSED.
9729         (arm_override_options): Do not allow VxWorks RTP PIC to be used
9730         for Thumb.  Force r9 to be the PIC register for VxWorks RTPs and
9731         make it incompatible with -msingle-pic-base.
9732         (arm_function_ok_for_sibcall): Return false for calls that might
9733         go through a VxWorks PIC PLT entry.
9734         (require_pic_register): New function, split out from...
9735         (legitimize_pic_address): ...here.  Do not use GOTOFF accesses
9736         for VxWorks RTPs.
9737         (arm_load_pic_register): Handle the VxWorks RTP initialization
9738         sequence.  Use pic_reg as a shorthand for cfun->machine->pic_reg.
9739         (arm_emit_call_insn): New function.
9740         (arm_assemble_integer): Do not use GOTOFF accesses for VxWorks RTP.
9741         * config/arm/arm.md (UNSPEC_PIC_OFFSET): New unspec number.
9742         (pic_offset_arm): New pattern.
9743         (call, call_value): Use arm_emit_call_insn.
9744         (call_internal, call_value_internal): New expanders.
9745         * config/arm/lib1funcs.asm (__PLT__): Define to empty for
9746         VxWorks unless __PIC__.
9747
9748 2007-05-30  Eric Christopher  <echristo@gmail.com>
9749
9750         * genrecog.c: Include regs.h in generated file.
9751         * genemit.c: Ditto. Fix up formatting.
9752         * config/mn10300/constraints.md: New.
9753         * config/mn10300/mn10300.md: Include.
9754         * config/mn10300/mn10300.c(mn10300_secondary_reload_class):
9755         Fix up for removed macro.
9756         * config/mn10300/predicates.md (call_address_operand):  Ditto.
9757         * config/mn10300/mn10300.h (REG_CLASS_FROM_LETTER): Delete.
9758         (CONST_OK_FOR_I): Ditto.
9759         (CONST_OK_FOR_J): Ditto.
9760         (CONST_OK_FOR_K): Ditto.
9761         (CONST_OK_FOR_L): Ditto.
9762         (CONST_OK_FOR_M): Ditto.
9763         (CONST_OK_FOR_N): Ditto.
9764         (CONST_DOUBLE_OK_FOR_LETTER_P): Ditto.
9765         (OK_FOR_Q): Ditto.
9766         (OK_FOR_R): Ditto.
9767         (OK_FOR_T): Ditto.
9768         (EXTRA_CONSTRAINT): Ditto.
9769
9770 2007-05-30 Uros Bizjak <ubizjak@gmail.com>
9771
9772         * config/i386/i386.h (MASK_64BIT, MASK_MMX, MASK_3DNOW*, MASK_SSE*):
9773         Remove defines.
9774         * config/i386/biarch.h (TARGET_64BIT_DEFAULT): Define to
9775         OPTION_MASK_ISA_64BIT.
9776         * config/i386/i386.c: Rename MASK_* macros to OPTION_MASK_ISA_*.
9777
9778 2007-05-30  Richard Guenther  <rguenther@suse.de>
9779
9780         PR middle-end/32152
9781         * gimplify.c (gimplify_omp_atomic_pipeline): Use correct
9782         types for comparison.
9783         * fold-const.c (fold_comparison): Call maybe_canonicalize_comparison
9784         with original typed arguments.
9785         * config/i386/i386.c (ix86_gimplify_va_arg): Fix type mismatches.
9786
9787 2007-05-30  Jakub Jelinek  <jakub@redhat.com>
9788
9789         PR tree-optimization/31769
9790         * except.c (duplicate_eh_regions): Clear prev_try if
9791         ERT_MUST_NOT_THROW region is inside of ERT_TRY region.
9792
9793 2007-05-30  Zdenek Dvorak  <dvorakz@suse.cz>
9794
9795         * tree-scalar-evolution.c (scev_const_prop): Do not create labels.
9796         * tree-ssa-sink.c (statement_sink_location): Return basic block and
9797         bsi of the location where statements should be inserted.
9798         (sink_code_in_bb): Take bsi from statement_sink_location.
9799         * lambda-code.c (lambda_loopnest_to_gcc_loopnest): Use bsi_after_labels
9800         instead of bsi_start.
9801         * tree-profile.c (tree_gen_ic_func_profiler): Pass BSI_NEW_STMT to
9802         bsi_insert_after.
9803         * tree-cfg.c (bsi_move_after): Pass BSI_NEW_STMT to bsi_insert_after.
9804         (bsi_move_before): Document inconsistency with bsi_move_after.
9805         (tree_redirect_edge_and_branch): Do not create labels if not necessary.
9806
9807 2007-05-30 Uros Bizjak <ubizjak@gmail.com>
9808
9809         * config/i386/i386.h (TARGET_ABM): New define.
9810         (TARGET_POPCNT): Ditto.
9811         (TARGET_64BIT, TARGET_MMX, TARGET_3DNOW, TARGET_3DNOW_A, TARGET_SSE*):
9812         New temporary defines to redefine from OPTION_ISA_* defines.
9813         (MASK_64BIT, MASK_MMX, MASK_3DNOW, MASK_3DNOW_A, MASK_SSE*):
9814         New temporary defines to redefine from OPTION_MASK_ISA_* defines.
9815         (ix86_isa_flags): New extern int declaration.
9816         (TARGET_SUBTARGET_DEFAULT): New define.
9817         (TARGET_SUBTARGET_ISA_DEFAULT): Ditto.
9818         (TARGET_SUBTARGET32_DEFAULT): Ditto.
9819         (TARGET_SUBTARGET32_ISA_DEFAULT): Ditto.
9820         (TARGET_SUBTARGET64_ISA_DEFAULT): Ditto.
9821         * config/i386/unix.h: Undef TARGET_SUBTARGET_DEFAULT before define.
9822         * config/i386/darwin.h: Change TARGET_64BIT define to
9823         OPTION_ISA_64BIT.
9824
9825         * config/i386/i386.opt (m3dnowa): Define as undocumented option
9826         using existing "ix86_isa_flags" varible.
9827         (m32, m64): Use existing "ix86_isa_flags" variable.
9828         (mmmx, m3dnow): Ditto.
9829         (msse, msse2, msse3, mssse3, msse4.1, msse4a): Ditto.
9830         (mabm): Define as non-negative option using "x86_abm" variable.
9831         (mpopcnt): Define as non-negative option using "x86_popcnt" variable.
9832
9833         * config/i386/i386.c (ix86_arch_features) [X86_ARCH_CMOVE]:
9834         Rewrite feature test bitmap.
9835         (ix86_isa_flags): New initialized global int varible.
9836         (ix86_isa_flags_explicit): New static int variable.
9837         (ix86_handle_option): Set "ix86_isa_flags_explicit" when mmmx, m3dnow,
9838         msse, msse2, msse3, msse4.1 and msse4a option is processed.  Change
9839         i86_isa_flags and ix86_isa_flags_explicit, not target_flags and
9840         target_flags_explicit.
9841         (override_options): Remove "target_enable" and "target_disable" fields
9842         from "struct ptt". Update processor_target_table accordingly. Remove
9843         PTA_PREFETCH_SSE from processor_alias_table entry if PTE_SSE is
9844         defined and rearrange PTA_* bits.  Use "ix86_isa_flags" instead of
9845         "target_flags" and "ix86_isa_flags_explicit" instead of
9846         "target_flags_explicit" when masked with MASK_64BIT, MASK_MMX,
9847         MASK_3DNOW, MASK_3DNOW_A or MASK_SSE*.  Set "x86_abm" to true when
9848         PTA_ABM is set in processor_alias_table flags entry.  Set "x86_popcnt"
9849         to true when either of PTA_POPCNT or PTA_ABM is set in
9850         processor_alias_table flags entry.  Set "x86_prefetch_sse" to true
9851         when either of PTA_PREFETCH_SSE or PTA_SSE is set in
9852         processor_alias_table flags entry.  Remove handling of
9853         "target_enable" and "target_disable" fields of processor_target_table.
9854         Mask "target_flags" with TARGET_SUBTARGET32_DEFAULT for 32-bit
9855         targets or with TARGET_SUBTARGET64_DEFAULT for 64-bit targets.
9856         Mask "ix86_isa_flags" with TARGET_SUBTARGET32_ISA_DEFAULT for 32-bit
9857         targets or with TARGET_SUBTARGET64_ISA_DEFAULT for 64-bit targets.
9858         (def_builtin): Mask "mask" variable with "ix86_isa_flags", not
9859         "target_flags".
9860         (TARGET_DEFAULT_TARGET_FLAGS): Do not include TARGET_64BIT_DEFAULT.
9861
9862 2007-05-29  David Daney  <ddaney@avtrex.com>
9863
9864         PR gcc/31975
9865         * config/mips/mips.c (mips_output_mi_thunk): Emit
9866         NOTE_INSN_PROLOGUE_END at beginning of the thunk.
9867
9868 2007-05-29  Hui-May Chang  <hm.chang@apple.com>
9869         * config/i386/i386.c (ix86_function_regparm): Added checking of
9870         ix86_force_align_arg_pointer to determine the number of
9871         register parameters.
9872
9873 2007-05-29  Zdenek Dvorak  <dvorakz@suse.cz>
9874
9875         * tree-vectorizer.h (DR_MISALIGNMENT): Cast aux to integer.
9876         (SET_DR_MISALIGNMENT): New.
9877         * tree-vect-analyze.c (vect_compute_data_ref_alignment,
9878         vect_update_misalignment_for_peel, vect_enhance_data_refs_alignment):
9879         Use SET_DR_MISALIGNMENT.
9880         * tree-predcom.c (split_data_refs_to_components): Cast dr->aux from
9881         pointer.
9882         * tree-data-ref.c (create_data_ref, compute_all_dependences,
9883         find_loop_nest): Export.
9884         * tree-data-ref.h (struct data_reference): Change aux field to pointer.
9885         (create_data_ref, compute_all_dependences, find_loop_nest): Declare.
9886         * tree-ssa-loop-prefetch.c: Include tree-data-ref.h.
9887         (L1_CACHE_SIZE_BYTES, L2_CACHE_SIZE_BYTES, NONTEMPORAL_FRACTION):
9888         New macros.
9889         (struct mem_ref): Add field reuse_distance.
9890         (find_or_create_group, record_ref): Use XNEW instead of xcalloc.
9891         Initialize reuse_distance field.
9892         (issue_prefetch_ref): Select temporality of prefetch according to
9893         reuse_distance.
9894         (volume_of_references, volume_of_dist_vector, add_subscript_strides,
9895         self_reuse_distance, determine_loop_nest_reuse): New functions.
9896         (loop_prefetch_arrays): Call determine_loop_nest_reuse.
9897         (tree_ssa_prefetch_arrays): Dump L2 cache size.
9898         * Makefile.in (tree-ssa-loop-prefetch.o): Add TREE_DATA_REF_H
9899         dependency.
9900
9901 2007-05-29  Daniel Berlin  <dberlin@dberlin.org>
9902
9903         * tree-ssa-alias.c: Add aliasing overview.
9904
9905 2007-05-29  Zuxy Meng  <zuxy.meng@gmail.com>
9906             Danny Smith  <dannysmith@users.sourceforge.net>
9907
9908         PR target/29498
9909         * config/i386/t-crtfm: Compile crtfastmath.o with
9910         -minline-all-stringops.
9911         * config/i386/cygwin.h (ENDFILE_SPECS): Add crtfastmath.o.
9912         * config/i386/mingw32.h (ENDFILE_SPECS): Add crtfastmath.o.
9913
9914 2007-05-28  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
9915
9916         * doc/md.texi: Document constraints on HP PA-RISC.
9917
9918         * pa/constraints.md: New file.
9919         * pa.md: Include constraints.md.
9920         * pa.c (cint_ok_for_move): Avoid using CONST_OK_FOR_LETTER_P.
9921         (integer_store_memory_operand, ldil_cint_p): New functions.
9922         * pa-protos.h (integer_store_memory_operand, ldil_cint_p): Declare.
9923         * pa.h (CONST_OK_FOR_LETTER_P, CONST_DOUBLE_OK_FOR_LETTER_P,
9924         IS_RELOADING_PSEUDO_P, EXTRA_CONSTRAINT): Remove.
9925         * pa32-regs.h (REG_CLASS_FROM_LETTER): Remove.
9926         * pa64-regs.h (REG_CLASS_FROM_LETTER): Remove.
9927
9928 2007-05-28  Andrew Pinski  <Andrew_pinski@playstation.sony.com>
9929
9930         PR c/31339
9931         * c-typeck.c (build_unary_op <case PREINCREMENT_EXPR,
9932         case POSTINCREMENT_EXPR, case PREDECREMENT_EXPR,
9933         case POSTDECREMENT_EXPR>): Return the error_mark_node
9934         if either the real or imaginary parts would an
9935         error_mark_node.
9936
9937 2007-05-28  Daniel Berlin  <dberlin@dberlin.org>
9938
9939         * tree-ssa-dce.c (eliminate_unnecessary_stmts): Release LHS SSA
9940         name when we remove it from a call.
9941
9942 2007-05-28  Kazu Hirata  <kazu@codesourcery.com>
9943
9944         * targhooks.c (default_narrow_bitfield): Remove.
9945         * targhooks.h: Remove the prototype for
9946         default_narrow_bitfield.
9947
9948         * langhooks-def.h: Remove the prototype for
9949         hook_get_alias_set_0.
9950         * langhooks.c (hook_get_alias_set_0): Remove.
9951
9952         * global.c (EXECUTE_IF_CONFLICT): Remove.
9953
9954 2007-05-28  Andrew Pinski  <andrew_pinski@playstation.sony.com>
9955
9956         PR tree-opt/32100
9957         * fold-const.c (tree_expr_nonnegative_warnv_p): Don't
9958         return true when truth_value_p is true and the type
9959         is of signed:1.
9960
9961 2007-05-28  Gerald Pfeifer  <gerald@pfeifer.com>
9962
9963         * doc/install.texi (Prerequisites): We no longer require Autoconf
9964         2.13 for the top-level.
9965
9966 2007-05-28  Uros Bizjak  <ubizjak@gmail.com>
9967
9968         * target/i386/i386.c (ix86_expand_vector_move): Expand unaligned
9969         memory access via x86_expand_vector_move_misalign() only for
9970         TImode values on 32-bit targets.
9971
9972 2007-05-28  Razya Ladelsky  <razya@il.ibm.com>
9973
9974         * matrix-reorg.c: New file. Implement matrix flattening and
9975         transposing optimization.
9976         * tree-pass.h: Add matrix reorg pass.
9977         * common.opt: Add fipa-mreorg flag.
9978         * Makefile.in: Add matrix-reorg.c.
9979         * passes.c: Add matrix reorg pass.
9980         * varpool.c (add_new_static_var): New function.
9981         * cgraph.h (add_new_static_var): Declare.
9982
9983 2007-05-27  Eric Christopher  <echristo@apple.com>
9984
9985         * config/rs6000/rs6000.c (rs6000_emit_prologue): Update
9986         sp_offset depending on stack size. Save r12 depending
9987         on registers we're saving later.
9988         (rs6000_emit_epilogue): Update sp_offset depending only
9989         on stack size.
9990
9991 2007-05-27  Zdenek Dvorak  <dvorakz@suse.cz>
9992
9993         * tree-vrp.c (execute_vrp): Do not check whether current_loops == NULL.
9994         * tree-chrec.c (evolution_function_is_invariant_rec_p): Ditto.
9995         * ifcvt.c (if_convert): Ditto.
9996         * tree-ssa-threadupdate.c (thread_block): Ditto.
9997         (thread_through_all_blocks): Ditto.  Assert that loops were analysed.
9998         * tree-ssa-loop-manip.c (rewrite_into_loop_closed_ssa,
9999         verify_loop_closed_ssa): Check number_of_loops instead of
10000         current_loops.
10001         * predict.c (tree_estimate_probability): Ditto.
10002         * tree-if-conv.c (main_tree_if_conversion): Ditto.
10003         * tree-ssa-loop-ch.c (copy_loop_headers): Ditto.
10004         * modulo-sched.c (sms_schedule): Ditto.
10005         * tree-scalar-evolution.c (scev_const_prop): Ditto.
10006         (scev_finalize): Do not do anything if scev analysis was not
10007         initialized.
10008         * cfgloopanal.c (mark_irreducible_loops): Do not check whether
10009         current_loops == NULL.
10010         (mark_loop_exit_edges): Check number_of_loops instead of current_loops.
10011         * loop-init.c (loop_optimizer_init): Do not free current_loops when
10012         there are no loops.
10013         (loop_optimizer_finalize): Assert that loops were analyzed.
10014         (rtl_move_loop_invariants, rtl_unswitch, rtl_unroll_and_peel_loops,
10015         rtl_doloop): Check number_of_loops instead of current_loops.
10016         * tree-ssa-loop.c (tree_loop_optimizer_init): Do not check whether
10017         current_loops == NULL.
10018         (tree_ssa_loop_init, tree_ssa_loop_im, tree_ssa_loop_unswitch,
10019         gate_tree_vectorize tree_linear_transform, check_data_deps,
10020         tree_ssa_loop_ivcanon, tree_ssa_empty_loop, tree_ssa_loop_bounds,
10021         tree_complete_unroll, tree_ssa_loop_prefetch, tree_ssa_loop_ivopts):
10022         Check number_of_loops instead of current_loops.
10023         (tree_ssa_loop_done): Do not check whether current_loops == NULL.
10024         * tree-ssa-pre.c (fini_pre): Do not take do_fre argument.  Always
10025         free loops if available.
10026         (execute_pre): Do not pass do_fre to fini_pre.
10027
10028 2007-05-27  Tobias Burnus  <burnus@net-b.de>
10029
10030         PR middle-end/32083
10031         * real.c (mpfr_from_real): Fix sign of -Inf.
10032
10033 2007-05-27  H.J. Lu  <hongjiu.lu@intel.com>
10034
10035         * tree-vect-transform.c (vectorizable_conversion): Initialize
10036         tree_code variables to ERROR_MARK.
10037         (vectorizable_type_demotion): Likewise.
10038         (vectorizable_type_promotion): Likewise.
10039
10040 2007-05-26  Uros Bizjak  <ubizjak@gmail.com>
10041
10042         PR target/32065
10043         * config/i386/i386.md (movti): Handle push operands via
10044         ix86_expand_push().
10045
10046 2007-05-26  Kazu Hirata  <kazu@codesourcery.com>
10047
10048         * basic-block.h: Remove the prototype for merge_seq_blocks.
10049         * cfgcleanup.c (merge_seq_blocks): Remove.
10050
10051         * tree-flow.h: Remove the prototype for is_aliased_with.
10052         * tree-ssa-alias.c (is_aliased_with): Remove.
10053
10054 2007-05-26  H.J. Lu  <hongjiu.lu@intel.com>
10055
10056         * config/i386/i386-protos.h (ix86_expand_sse4_unpack): New.
10057
10058         * config/i386/i386.c (ix86_expand_sse4_unpack): New.
10059
10060         * config/i386/sse.md (vec_unpacku_hi_v16qi): Call
10061         ix86_expand_sse4_unpack if SSE4.1 is enabled.
10062         (vec_unpacks_hi_v16qi): Likewise.
10063         (vec_unpacku_lo_v16qi): Likewise.
10064         (vec_unpacks_lo_v16qi): Likewise.
10065         (vec_unpacku_hi_v8hi): Likewise.
10066         (vec_unpacks_hi_v8hi): Likewise.
10067         (vec_unpacku_lo_v8hi): Likewise.
10068         (vec_unpacks_lo_v8hi): Likewise.
10069         (vec_unpacku_hi_v4si): Likewise.
10070         (vec_unpacks_hi_v4si): Likewise.
10071         (vec_unpacku_lo_v4si): Likewise.
10072         (vec_unpacks_lo_v4si): Likewise.
10073
10074 2007-05-26  Kazu Hirata  <kazu@codesourcery.com>
10075
10076         * c-typeck.c, config/arm/arm.c, config/darwin.c,
10077         config/sh/symbian.c, gcc.c, ipa-cp.c, ipa-inline.c, loop-iv.c,
10078         omega.c, tree-ssa-loop-niter.c, treestruct.def: Fix typos and
10079         follow spelling conventions in various
10080         warning/error/diagnostic messages.
10081
10082         * config/i386/i386.c, config/pa/pa.c, config/spu/spu.c,
10083         df-problems.c, df-scan.c, domwalk.c, ebitmap.c, ebitmap.h,
10084         fold-const.c, gcc.c, ipa-type-escape.c, omega.c, omega.h,
10085         tree-ssa-coalesce.c, tree-ssa-live.c, tree-ssa-structalias.c,
10086         tree-vrp.c: Fix comment typos.  Follow spelling conventions.
10087         * doc/tm.texi: Follow spelling conventions.
10088
10089 2007-05-25  Andrew Pinski  <andrew_pinski@playstation.sony.com>
10090
10091         PR tree-opt/32090
10092         * tree-ssa-forwprop.c
10093         (forward_propagate_addr_into_variable_array_index): Remove
10094         the lhs argument.  Use the type of def_rhs instead of lhs.
10095         (forward_propagate_addr_expr_1): Update use of
10096         forward_propagate_addr_into_variable_array_index.
10097
10098 2007-05-25  Sandra Loosemore  <sandra@codesourcery.com>
10099             Nigel Stephens  <nigel@mips.com>
10100
10101         * config/mips/mips.c (mips_attribute_table): Add "near" and "far"
10102         function attributes, "far" being an alias for "long_call".
10103         (TARGET_COMP_TYPE_ATTRIBUTES): Define as mips_comp_type_attributes.
10104         (mips_near_type_p, mips_far_type_p): New.
10105         (mips_comp_type_attributes): New function to check that attributes
10106         attached to a function type are compatible.
10107         (mips_output_mi_thunk): Test SYMBOL_REF_LONG_CALL_P() rather than
10108         TARGET_LONG_CALLS when deciding whether we can do a direct sibcall
10109         to the target function of the thunk.
10110         (mips_encode_section_info): Check for "near" and "far" function
10111         attributes, and always set the SYMBOL_FLAG_LONG_CALL bit explicitly.
10112
10113         * config/mips/predicates.md (const_call_insn_operand): Test only
10114         SYMBOL_REF_LONG_CALL_P() and not TARGET_LONG_CALLS.
10115
10116         * doc/extend.texi (Function Attributes): Document MIPS "near" and
10117         "far" attributes.
10118
10119         * testsuite/gcc.target/mips/near-far-1.c:  New test case.
10120         * testsuite/gcc.target/mips/near-far-2.c:  New test case.
10121         * testsuite/gcc.target/mips/near-far-3.c:  New test case.
10122         * testsuite/gcc.target/mips/near-far-4.c:  New test case.
10123
10124 2007-05-25  Eric Christopher  <echristo@apple.com>
10125
10126         * config.gcc: Add i386/t-fprules-softfp64 and soft-fp/t-softfp
10127         to x86-darwin configurations.
10128         * config/i386/t-darwin: Add softfp support.
10129         * config/i386/t-darwin64: Ditto.
10130         * config/i386/sfp-machine.h: If mach then don't use
10131         aliasing, emit a stub to call.
10132
10133 2007-05-25  Kazu Hirata  <kazu@codesourcery.com>
10134
10135         * cfglayout.c, cgraphunit.c, config/avr/avr.c, fold-const.c,
10136         haifa-sched.c, optabs.h, tree-affine.c, tree-data-ref.c,
10137         tree-predcom.c, tree-ssa-alias-warnings.c,
10138         tree-ssa-forwprop.c, tree-vect-analyze.c, tree-vrp.c: Fix
10139         comment typos.  Follow spelling conventions.
10140         * doc/cpp.texi, doc/invoke.texi: Fix typos.
10141
10142 2007-05-26  Uros Bizjak  <ubizjak@gmail.com>
10143
10144         PR target/32065
10145         * target/i386/i386.c (ix86_expand_vector_move): Force SUBREGs of
10146         constants into memory.  Expand unaligned memory references for
10147         SSE modes via x86_expand_vector_move_misalign() function.
10148
10149 2007-05-25  Uros Bizjak  <ubizjak@gmail.com>
10150
10151         * config/i386/sse.md (*vec_extractv2di_1_sse2): Do not calculate
10152         "memory" attribute for "sseishft" type insn without operands[2].
10153
10154 2007-05-25  Dirk Mueller  <dmueller@suse.de>
10155             Marcus Meissner <meissner@suse.de>
10156
10157         * doc/extend.texi (alloc_size): New attribute.
10158         * c-common.c (handle_alloc_size_attribute): New.
10159         * tree-object-size.c (alloc_object_size): Use alloc_size
10160         attribute, if available.
10161
10162 2007-05-25  H.J. Lu  <hongjiu.lu@intel.com>
10163
10164         * config/i386/i386.c (__builtin_ia32_vec_ext_v2df): Mark it
10165         with MASK_SSE2.
10166         (__builtin_ia32_vec_ext_v2di): Likewise.
10167         (__builtin_ia32_vec_ext_v4si): Likewise.
10168         (__builtin_ia32_vec_ext_v8hi): Likewise.
10169         (__builtin_ia32_vec_ext_v16qi): Likewise.
10170         (__builtin_ia32_vec_set_v8hi): Likewise.
10171
10172 2007-05-25  H.J. Lu  <hongjiu.lu@intel.com>
10173
10174         * config/i386/sse.md (*vec_extractv2di_1_sse2): Correct shift.
10175
10176 2007-05-25  Richard Sandiford  <richard@codesourcery.com>
10177
10178         * config/arm/arm-protos.h (arm_encode_call_attribute): Delete.
10179         (arm_is_longcall_p): Rename to...
10180         (arm_is_long_call_p): ...this.  Take a single tree argument and
10181         return a bool.
10182         * config/arm/arm.h (CALL_SHORT, CALL_LONG, CALL_NORMAL): Delete.
10183         (CUMULATIVE_ARGS): Remove call_cookie.
10184         (SHORT_CALL_FLAG_CHAR, LONG_CALL_FLAG_CHAR, ENCODED_SHORT_CALL_ATTR_P)
10185         (ENCODED_LONG_CALL_ATTR_P): Delete.
10186         (ARM_NAME_ENCODING_LENGTHS): Remove SHORT_CALL_FLAG_CHAR and
10187         LONG_CALL_FLAG_CHAR cases.
10188         (ARM_DECLARE_FUNCTION_SIZE): Delete.
10189         * config/arm/elf.h (ASM_DECLARE_FUNCTION_SIZE): Don't use
10190         ARM_DECLARE_FUNCTION_SIZE.
10191         * config/arm/arm.c (arm_init_cumulative_args): Don't set call_cookie.
10192         (arm_function_arg): Return const0_rtx for VOIDmode arguments.
10193         (arm_encode_call_attribute, current_file_function_operand): Delete.
10194         (arm_function_in_section_p): New function.
10195         (arm_is_longcall_p): Rename to...
10196         (arm_is_long_call_p): ...this.  Take the target function as a single
10197         argument and return a bool.  Do not rely on call cookies.  Check
10198         whether the target symbol is in the same section as the current
10199         function, not just the same compilation unit.
10200         (arm_function_ok_for_sibcall): Use arm_is_long_call_p.
10201         (arm_encode_section_info): Don't encode a call type.
10202         * config/arm/arm.md (call, call_value): Update calls to
10203         arm_is_long(_)call_p.  Simplify logic.
10204         (*call_symbol, *call_value_symbol, *call_insn, *call_value_insn):
10205         Update calls to arm_is_long(_)call_p.
10206
10207 2007-05-25  Richard Guenther  <rguenther@suse.de>
10208
10209         PR tree-optimization/31982
10210         * tree-ssa-forwprop.c
10211         (forward_propagate_addr_into_variable_array_index): Handle arrays
10212         with element size one.
10213
10214 2007-05-24  Andrew Pinski  <andrew_pinski@playstation.sony.com>
10215
10216         * config/spu/spu.md (smulsi3_highpart): Unshare the rtl chain.
10217         (umulsi3_highpart): Likewise.
10218
10219 2007-05-24  Ian Lance Taylor  <iant@google.com>
10220
10221         PR rtl-optimization/32069
10222         * regclass.c (regclass): Don't crash if the entry in regno_reg_rtx
10223         is NULL.
10224
10225 2007-05-24  Ollie Wild  <aaw@google.com>
10226
10227         * doc/cpp.texi (Common Predefined Macros): Add __COUNTER__
10228         description.
10229
10230 2007-05-24  Richard Sandiford  <rsandifo@nildram.co.uk>
10231
10232         * postreload-gcse.c (reg_changed_after_insn_p): New function.
10233         (oprs_unchanged_p): Use it to check all registers in a REG.
10234         (record_opr_changes): Look for clobbers in CALL_INSN_FUNCTION_USAGE.
10235         (reg_set_between_after_reload_p): Delete.
10236         (reg_used_between_after_reload_p): Likewise.
10237         (reg_set_or_used_since_bb_start): Likewise.
10238         (eliminate_partially_redundant_load): Use reg_changed_after_insn_p
10239         and reg_used_between_p instead of reg_set_or_used_since_bb_start.
10240         Use reg_set_between_p instead of reg_set_between_after_reload_p.
10241         * rtlanal.c (reg_set_p): Check whether REG overlaps
10242         regs_invalidated_by_call, rather than just checking the
10243         membership of REGNO (REG).
10244
10245 2007-05-24  Zdenek Dvorak  <dvorakz@suse.cz>
10246
10247         * doc/passes.texi: Document predictive commoning.
10248         * doc/invoke.texi (-fpredictive-commoning): Document.
10249         * opts.c (decode_options): Enable flag_predictive_commoning on -O3.
10250         * tree-ssa-loop-im.c (get_lsm_tmp_name): Export.  Allow
10251         adding indices to the generated name.
10252         (schedule_sm): Pass 0 to get_lsm_tmp_name.
10253         * tree-ssa-loop-niter.c (stmt_dominates_stmt_p): Export.
10254         * tree-pretty-print.c (op_symbol_1): Renamed to ...
10255         (op_symbol_code): ... and exported.
10256         (dump_omp_clause, op_symbol): Use op_symbol_code
10257         instead of op_symbol_1.
10258         * tree-pass.h (pass_predcom): Declare.
10259         * timevar.def (TV_PREDCOM): New timevar.
10260         * tree-ssa-loop.c (run_tree_predictive_commoning,
10261         gate_tree_predictive_commoning, pass_predcom): New.
10262         * tree-data-ref.c (find_data_references_in_loop): Find the
10263         references in dominance order.
10264         (canonicalize_base_object_address): Ensure that the result has
10265         pointer type.
10266         (dr_analyze_innermost): Export.
10267         (create_data_ref): Code to fail for references with invariant
10268         address moved ...
10269         (find_data_references_in_stmt): ... here.
10270         * tree-data-ref.h (dr_analyze_innermost): Declare.
10271         * tree-affine.c: Include tree-gimple.h and hashtab.h.
10272         (aff_combination_find_elt, name_expansion_hash,
10273         name_expansion_eq, tree_to_aff_combination_expand,
10274         double_int_constant_multiple_p, aff_combination_constant_multiple_p):
10275         New functions.
10276         * tree-affine.h (aff_combination_constant_multiple_p,
10277         tree_to_aff_combination_expand): Declare.
10278         * tree-predcom.c: New file.
10279         * common.opt (fpredictive-commoning): New option.
10280         * tree-flow.h (op_symbol_code, tree_predictive_commoning,
10281         stmt_dominates_stmt_p, get_lsm_tmp_name): Declare.
10282         * Makefile.in (tree-predcom.o): Add.
10283         (tree-affine.o): Add TREE_GIMPLE_H dependency.
10284         * passes.c (init_optimization_passes):  Add dceloop after
10285         copy propagation in loop optimizer.  Add predictive commoning
10286         to loop optimizer passes.
10287
10288 2007-05-24  H.J. Lu  <hongjiu.lu@intel.com>
10289
10290         * target-def.h (TARGET_MANGLE_DECL_ASSEMBLER_NAME): Correct
10291         default hook.
10292
10293 2007-05-24  Jan Hubicka  <jh@suse.cz>
10294
10295         * gengenrtl.c (gendecl, gendef): Output the gens annotated for
10296         statistics.
10297         (genheader): Include statistics.h.
10298
10299         * doc/invoke.texi (-fdump-unnumbered): Update docs when line number
10300         notes are gone.
10301         * print-rtl.c (flag_dump_unnumbered): Update comments.
10302         (print_rtl): Fix my previous change.
10303         * emit-rtl.c (emit_note_before, emit_note_after): Clear out note
10304         specific data.
10305
10306 2007-05-24  Zdenek Dvorak  <dvorakz@suse.cz>
10307
10308         PR middle-end/32018
10309         * tree-ssa-threadupdate.c (thread_through_loop_header): Use
10310         set_loop_copy.
10311         (thread_through_all_blocks): Call initialize_original_copy_tables
10312         and free_original_copy_tables.
10313         * cfgloopmanip.c (duplicate_loop, duplicate_loop_to_header_edge):
10314         Use set_loop_copy.
10315         * tree-cfg.c (tree_duplicate_sese_region): Ditto.
10316         * cfghooks.c (duplicate_block): Use get_loop_copy.
10317         * cfg.c: Include cfgloop.h.
10318         (loop_copy): New hash table.
10319         (initialize_original_copy_tables): Initialize loop_copy table.
10320         (free_original_copy_tables): Free loop_copy table.
10321         (copy_original_table_clear, copy_original_table_set,
10322         set_loop_copy, get_loop_copy): New functions.
10323         (set_bb_original, set_bb_copy): Use copy_original_table_set.
10324         * cfgloop.h (struct loop): Remove copy field.
10325         * Makefile.in (cfg.o): Add CFGLOOP_H dependency.
10326         * basic-block.h (set_loop_copy, get_loop_copy): Declare.
10327
10328 2007-05-24  H.J. Lu  <hongjiu.lu@intel.com>
10329
10330         * config/i386/i386.c (ix86_handle_option): Handle SSE4.1 for
10331         -msse/-msse2/-msse3.
10332
10333 2007-05-24  H.J. Lu  <hongjiu.lu@intel.com>
10334
10335         * config/i386/i386.c (ix86_init_mmx_sse_builtins): Mark
10336         __builtin_ia32_vec_set_v2di with MASK_64BIT.
10337
10338 2007-05-24  Danny Smith  <dannysmith@users.sourceforge.net>
10339
10340         PR target/27067
10341         * doc/tm.texi (TARGET_MANGLE_DECL_ASSEMBLER_NAME): Document.
10342         * targhooks.h (default_mangle_decl_assembler_name): Declare
10343         default hook.
10344         * targhooks.c (default_mangle_decl_assembler_name): Define
10345         default hook.
10346         * target-def.h (TARGET_MANGLE_DECL_ASSEMBLER_NAME) New. Set to
10347         default hook.
10348         * target.h (struct gcc_target): Add mangle_decl_assembler_name field.
10349         * langhooks.c (lhd_set_decl_assembler_name): Call
10350         targetm.mangle_decl_assembler_name for names with global scope.
10351
10352         * config/i386/cygming.h (TARGET_MANGLE_DECL_ASSEMBLER_NAME) Override
10353         default.
10354         (ASM_OUTPUT_DEF_FROM_DECLS): Simplify to use DECL_ASSEMBLER_NAME.
10355         * config/i386/i386-protos.h (i386_pe_mangle_decl_assembler_name):
10356         Declare.
10357         * config/i386/winnt.c (i386_pe_maybe_mangle_decl_assembler_name):
10358         New. Factored out of i386_pe_encode_section_info.
10359         (gen_stdcall_or_fastcall_suffix): Get name identifier as argument.
10360         Move check for prior decoration of stdcall
10361         symbols to i386_pe_encode_section_info.
10362         (i386_pe_encode_section_info): Adjust call to
10363         gen_stdcall_or_fastcall_suffix.  Use
10364         i386_pe_maybe_mangle_decl_assembler_name, if needed.
10365         (i386_pe_mangle_decl_assembler_name): New. Wrap
10366         i386_pe_maybe_mangle_decl_assembler_name.
10367
10368 2007-05-16  Rafael Avila de Espindola  <espindola@google.com>
10369
10370         * c-common.c (c_common_signed_or_unsigned_type): Delay the check for
10371         INTEGRAL_TYPE_P and TYPE_UNSIGNED.
10372         * langhooks.c (get_signed_or_unsigned_type): Don't check for
10373         INTEGRAL_TYPE_P or TYPE_UNSIGNED.
10374         (lhd_signed_or_unsigned_type): Check for INTEGRAL_TYPE_P and
10375         TYPE_UNSIGNED.
10376
10377 2007-05-23  Sandra Loosemore  <sandra@codesourcery.com>
10378             Nigel Stephens  <nigel@mips.com>
10379             Richard Sandiford  <richard@codesourcery.com>
10380
10381         Fix up MIPS16 hard float and add support for complex.
10382
10383         * config/mips/mips.h (TARGET_HARD_FLOAT_ABI): New.
10384         (TARGET_SOFT_FLOAT_ABI): New.
10385         (TARGET_CPU_CPP_BUILTINS): Define __mips_hard_float and
10386         __mips_soft_float to reflect the ABI in use, not whether the
10387         FPU is directly accessible (e.g., in MIPS16 mode).
10388         (UNITS_PER_HWFPVALUE): Use TARGET_SOFT_FLOAT_ABI.
10389         (UNITS_PER_FPVALUE): Likewise.
10390
10391         * config/mips/mips.c (mips_expand_call): Remove redundant
10392         TARGET_MIPS16 check.
10393         (mips_arg_regno): New.
10394         (function_arg_advance): When setting bits in cum->fp_code for
10395         MIPS16, don't subtract 1 from cum->arg_number, since it is now
10396         zero-based.
10397         (function_arg): Use mips_arg_regno.
10398         (mips_return_mode_in_fpr_p): New.
10399         (mips16_call_stub_mode_suffix): New.
10400         (mips16_cfun_returns_in_fpr_p): New.
10401         (mips_save_reg_p): Use mips16_cfun_returns_in_fpr_p.
10402         (mips_output_function_prologue): Test mips16_hard_float, not
10403         !TARGET_SOFT_FLOAT, to decide when a function stub is required.
10404         (mips_expand_epilogue): Call MIPS16 helper routines to copy
10405         return value into a floating-point register.
10406         (mips_can_use_return_insn): Use mips16_cfun_returns_in_fpr_p.
10407         (mips_function_value): Rewrite to use mips_return_mode_in_fpr_p.
10408         (mips16_fp_args): Handle MIPS32r2 ISA which supports
10409         TARGET_FLOAT64, and use mfhc1/mthc1 to copy the most significant
10410         word of double arguments from or to the high bits of 64-bit
10411         floating point registers.
10412         (build_mips16_function_stub): Fill in DECL_RESULT for stubdecl.
10413         (mips16_fpret_double): New helper function.
10414         (build_mips16_call_stub): Use mips16_return_mode_in_fpr_p.  Add
10415         support for complex modes.  Fill in DECL_RESULT for stubdecl.
10416         (mips_init_libfuncs): Remove redundant TARGET_MIPS16 check.
10417
10418         * config/mips/mips16.S
10419         (RET, ARG1, ARG2): New.
10420         (MERGE_GPRf, MERGE_GPRt): New.
10421         (DELAYt, DELAYf): New.
10422         (MOVE_SF_BYTE0, MOVE_SI_BYTE0): New.
10423         (MOVE_SF_BYTE4, MOVE_SF_BYTE8): New.
10424         (MOVE_DF_BYTE0, MOVE_DF_BYTE8): New.
10425         (MOVE_SF_RET, MOVE_SC_RET, MOVE_DF_RET, MOVE_DC_RET, MOVE_SI_RET): New.
10426         (SFOP): Renamed to...
10427         (OPSF3): This, and macro-ified.  Updated all uses.
10428         (SFOP2): Renamed to...
10429         (OPSF2): This, and macro-ified.  Updated all uses.
10430         (SFCMP): Renamed to...
10431         (CMPSF): This, and macro-ified.  Updated all uses.
10432         (SFREVCMP): Renamed to...
10433         (REVCMPSF): This, and macro-ified.  Updated all uses.
10434         (__mips16_floatsisf, __mips16_fix_truncsfsi): Macro-ified.
10435         (LDDBL1, LDDBL2, RETDBL): Deleted.
10436         (DFOP): Renamed to...
10437         (OPDF3): This, and macro-ified.  Updated all uses.
10438         (DFOP2): Renamed to...
10439         (OPDF2): This, and macro-ified.  Updated all uses.
10440         (__mips16_extendsfdf2, __mips16_truncdfsf2): Macro-ified.
10441         (DFCMP): Renamed to...
10442         (CMPDF): This, and macro-ified.  Updated all uses.
10443         (DFREVCMP): Renamed to...
10444         (REVCMPDF): This, and macro-ified.  Updated all uses.
10445         (__mips16_floatsidf, __mips16_fix_truncdfsi): Macro-ified.
10446         (RET_FUNCTION): New.
10447         (__mips16_ret_sf, __mips16_ret_df): Macro-ified.
10448         (__mips16_ret_sc, __mips16_ret_dc): New.
10449         (STUB_ARGS_0, STUB_ARGS_1, STUB_ARGS_5, STUB_ARGS_9, STUB_ARGS_2,
10450         STUB_ARGS_6, STUB_ARGS_10): New.
10451         (CALL_STUB_NO_RET): New.
10452         (__mips16_call_stub_1): Macro-ified.
10453         (__mips16_call_stub_5): Macro-ified.
10454         (__mips16_call_stub_2): Macro-ified.
10455         (__mips16_call_stub_6): Macro-ified.
10456         (__mips16_call_stub_9): Macro-ified.
10457         (__mips16_call_stub_10): Macro-ified.
10458         (CALL_STUB_RET): New.
10459         (__mips16_call_stub_sf_0): Macro-ified.
10460         (__mips16_call_stub_sf_1): Macro-ified.
10461         (__mips16_call_stub_sf_5): Macro-ified.
10462         (__mips16_call_stub_sf_2): Macro-ified.
10463         (__mips16_call_stub_sf_6): Macro-ified.
10464         (__mips16_call_stub_sf_9): Macro-ified.
10465         (__mips16_call_stub_sf_10): Macro-ified.
10466         (__mips16_call_stub_df_0): Macro-ified.
10467         (__mips16_call_stub_df_1): Macro-ified.
10468         (__mips16_call_stub_df_5): Macro-ified.
10469         (__mips16_call_stub_df_2): Macro-ified.
10470         (__mips16_call_stub_df_6): Macro-ified.
10471         (__mips16_call_stub_df_9): Macro-ified.
10472         (__mips16_call_stub_df_10): Macro-ified.
10473         (__mips16_call_stub_sc_0): New.
10474         (__mips16_call_stub_sc_1): New.
10475         (__mips16_call_stub_sc_5): New.
10476         (__mips16_call_stub_sc_2): New.
10477         (__mips16_call_stub_sc_6): New.
10478         (__mips16_call_stub_sc_9): New.
10479         (__mips16_call_stub_sc_10): New.
10480         (__mips16_call_stub_dc_0): New.
10481         (__mips16_call_stub_dc_1): New.
10482         (__mips16_call_stub_dc_5): New.
10483         (__mips16_call_stub_dc_2): New.
10484         (__mips16_call_stub_dc_6): New.
10485         (__mips16_call_stub_dc_9): New.
10486         (__mips16_call_stub_dc_10): New.
10487
10488         * config/mips/t-elf (LIB1ASMFUNCS): Add MIPS16 floating-point stubs.
10489         * config/mips/t-isa3264 (LIB1ASMFUNCS): Likewise.
10490         * config/mips/t-r2900 (LIB1ASMFUNCS): Likewise.
10491
10492 2007-05-23  Ian Lance Taylor  <iant@google.com>
10493
10494         * doc/invoke.texi (Invoking GCC): Document that the order of the
10495         -l option matters.
10496
10497 2007-05-23  Chen Liqin  <liqin@sunnorth.com.cn>
10498
10499         PR target/30987
10500         * config/score/misc.md (bitclr_c, bitset_c, bittgl_c): Remove.
10501         * config/score/predicate.md (const_pow2, const_npow2): Remove.
10502         * config/score/score.h (ASM_OUTPUT_EXTERNAL): Add ASM_OUTPUT_EXTERNAL
10503         undef.
10504
10505         PR target/30474
10506         * config/score/score.c (score_print_operand): Make sure that only
10507         lower bits are used.
10508
10509 2007-05-22  Ian Lance Taylor  <iant@google.com>
10510
10511         * tree-vrp.c (avoid_overflow_infinity): New static function,
10512         broken out of set_value_range_to_value.
10513         (set_value_range_to_value): Call avoid_overflow_infinity.
10514         (extract_range_from_assert): Likewise.
10515
10516 2007-05-22  Andrew Pinski  <andrew_pinski@playstation.sony.com>
10517
10518         PR middle-end/31095
10519          * builtins.c (expand_builtin_memmove_args): Strip nops that don't
10520         change the type before looking for a COMPOUND_EXPR.
10521
10522 2007-05-22  Ian Lance Taylor  <iant@google.com>
10523
10524         * lower-subreg.c (decompose_multiword_subregs): If we change an
10525         insn, call remove_retval_note on it.
10526
10527 2007-05-22  Richard Sandiford  <rsandifo@nildram.co.uk>
10528
10529         * regs.h (end_hard_regno): New function.
10530         (END_HARD_REGNO, END_REGNO): New macros.
10531         (add_to_hard_reg_set): New function.
10532         (remove_from_hard_reg_set): Likewise.
10533         (in_hard_reg_set_p): Likewise.
10534         (overlaps_hard_reg_set_p): Likewise.
10535         * bt-load.c (find_btr_reference): Use overlaps_hard_reg_set_p.
10536         (note_btr_set): Use END_HARD_REGNO.
10537         * caller-save.c (setup_save_areas): Use end_hard_regno.
10538         (mark_set_regs): Use END_HARD_REGNO.
10539         (add_stored_regs): Use end_hard_regno.
10540         (mark_referenced_regs): Use add_to_hard_reg_set.
10541         * combine.c (update_table_tick): Use END_REGNO.
10542         (record_value_for_reg): Likewise.
10543         (record_dead_and_set_regs): Likewise.
10544         (get_last_value_validate): Likewise.
10545         (use_crosses_set_p): Likewise.
10546         (reg_dead_at_p_1): Likewise.
10547         (reg_dead_at_p): Likewise.
10548         (mark_used_regs_combine): Use add_to_hard_reg_set.
10549         (move_deaths): Use END_HARD_REGNO.
10550         (reg_bitfield_target_p): Use end_hard_regno.
10551         (distribute_notes): Use END_HARD_REGNO.
10552         * cse.c (mention_regs): Use END_REGNO.
10553         (insert): Use add_to_hard_reg_set.
10554         (invalidate): Use END_HARD_REGNO.
10555         (invalidate_for_call): Likewise.
10556         (exp_equiv_p): Use END_REGNO.
10557         (cse_insn): Likewise.
10558         * cselib.c (cselib_invalidate_regno): Use end_hard_regno.
10559         * df-problems.c (df_urec_mark_reg_change): Use END_HARD_REGNO.
10560         * df-scan.c (df_ref_record): Use END_HARD_REGNO.
10561         * function.c (keep_stack_depressed): Use end_hard_regno.
10562         * global.c (global_alloc): Use end_hard_regno.
10563         (global_conflicts): Use add_to_hard_reg_set instead of
10564         mark_reg_live_nc.
10565         (find_reg): Likewise.
10566         (mark_reg_store): Likewise.
10567         (mark_reg_conflicts): Likewise.
10568         (mark_reg_death): Use remove_from_hard_reg_set.
10569         (mark_reg_live_nc): Delete.
10570         (set_preference): Use end_hard_regno.
10571         * local-alloc.c (mark_life): Use add_to_hard_reg_set and
10572         remove_from_hard_reg_set.
10573         (post_mark_life): Use add_to_hard_reg_set.
10574         * mode-switching.c (reg_dies): Use remove_from_hard_reg_set.
10575         (reg_becomes_live): Use add_to_hard_reg_set.
10576         * recog.c (reg_fits_class_p): Use in_hard_reg_set_p.
10577         (peep2_find_free_register): Use add_to_hard_reg_set.
10578         * reg-stack.c (convert_regs_exit): Use END_HARD_REGNO.
10579         * regclass.c (record_reg_classes): Use in_hard_reg_set_p.
10580         * regrename.c (note_sets): Use add_to_hard_reg_set.
10581         (clear_dead_regs): Use remove_from_hard_reg_set.
10582         (regrename_optimize): Use add_to_hard_reg_set.
10583         (find_oldest_value_reg): Use in_hard_reg_set_p.
10584         * reload.c (push_reload): Use in_hard_reg_set_p and end_hard_regno.
10585         (hard_reg_set_here_p): Use end_hard_regno.
10586         (decompose): Likewise.
10587         (reg_overlap_mentioned_for_reload_p): Use END_HARD_REGNO.
10588         (find_equiv_reg): Use in_hard_reg_set_p and end_hard_regno.
10589         * reload1.c (compute_use_by_pseudos): Use add_to_hard_reg_set.
10590         (mark_home_live): Use end_hard_regno.
10591         (spill_hard_reg): Likewise.
10592         (clear_reload_reg_in_use): Likewise.
10593         * reorg.c (delete_prior_computation): Use END_REGNO.
10594         * resource.c (update_live_status): Use END_HARD_REGNO.
10595         (mark_referenced_resources): Use add_to_hard_reg_set.
10596         (mark_set_resources): Likewise.
10597         (mark_target_live_regs): Likewise.  Use remove_from_hard_reg_set.
10598         * rtlanal.c (refers_to_regno_p): Use END_REGNO.
10599         (reg_overlap_mentioned_p): Likewise.
10600         (dead_or_set_p): Likewise.  Use an exclusive upper loop bound.
10601         (covers_regno_no_parallel_p): Use END_REGNO.
10602         (find_regno_note): Likewise.
10603         (find_reg_fusage): Use END_HARD_REGNO.
10604         * stmt.c (decl_overlaps_hard_reg_set_p): Use overlaps_hard_reg_set_p.
10605         * var-tracking.c (emit_note_insn_var_location): Use end_hard_regno.
10606
10607 2007-05-22  Richard Sandiford  <rsandifo@nildram.co.uk>
10608
10609         * mode-switching.c (reg_dies): Change type of second argument to
10610         "HARD_REG_SET *".
10611         (optimize_mode_switching): Update accordingly.
10612
10613 2007-05-22  Richard Sandiford  <richard@codesourcery.com>
10614
10615         * hard-reg-set.h (GO_IF_HARD_REG_SUBSET, GO_IF_HARD_REG_EQUAL): Delete
10616         in favor of...
10617         (hard_reg_subset_p, hard_reg_sets_equal_p, hard_reg_sets_intersect_p)
10618         (hard_reg_set_empty_p): ...these new functions.
10619         * bt-load.c (choose_btr): Use hard_reg_subset_p instead of
10620         GO_IF_HARD_REG_SUBSET.
10621         * cfgcleanup.c (old_insns_match_p): Use hard_reg_sets_equal_p
10622         instead of GO_IF_HARD_REG_EQUAL.
10623         * df-problems.c (df_urec_local_compute): Use hard_reg_set_empty_p
10624         instead of GO_IF_HARD_REG_EQUAL.
10625         * global.c (find_reg): Use hard_reg_set_empty_p instead of
10626         GO_IF_HARD_REG_SUBSET.
10627         (modify_reg_pav): Use hard_reg_set_empty_p instead of
10628         GO_IF_HARD_REG_EQUAL.
10629         * local-alloc.c (find_free_reg): Use hard_reg_subset_p instead
10630         of GO_IF_HARD_REG_SUBSET.
10631         * reg-stack.c (change_stack, convert_regs_1): Use hard_reg_sets_equal_p
10632         instead of GO_IF_HARD_REG_EQUAL.
10633         * regclass.c (init_reg_sets_1, reg_scan_mark_refs): Use
10634         hard_reg_subset_p instead of GO_IF_HARD_REG_SUBSET.
10635         (reg_classes_intersect_p): Use hard_reg_sets_intersect_p instead
10636         of GO_IF_HARD_REG_SUBSET,
10637         * reload1.c (finish_spills): Use hard_reg_subset_p instead of
10638         GO_IF_HARD_REG_SUBSET.
10639         * struct-equiv.c (death_notes_match_p): Use hard_reg_sets_equal_p
10640         instead of GO_IF_HARD_REG_EQUAL.
10641         * config/sh/sh.c (push_regs, calc_live_regs): Use
10642         hard_reg_sets_intersect_p instead of hard_regs_intersect_p.
10643         (hard_regs_intersect_p): Delete.
10644
10645 2007-05-22  Janis Johnson  <janis187@us.ibm.com>
10646
10647         * doc/sourcebuild.texi (Test Directives) Add dg-message.
10648
10649 2007-05-22  H.J. Lu  <hongjiu.lu@intel.com>
10650             Richard Henderson  <rth@redhat.com>
10651
10652         * config.gcc (i[34567]86-*-*): Add smmintrin.h to
10653         extra_headers.
10654         (x86_64-*-*): Likewise.
10655
10656         * i386/i386-modes.def (V2QI): New.
10657
10658         * config/i386/i386.c (ix86_handle_option): Handle SSE4.1 and
10659         SSE4A.
10660         (override_options): Support SSE4.1.
10661         (IX86_BUILTIN_BLENDPD): New for SSE4.1.
10662         (IX86_BUILTIN_BLENDPS): Likewise.
10663         (IX86_BUILTIN_BLENDVPD): Likewise.
10664         (IX86_BUILTIN_BLENDVPS): Likewise.
10665         (IX86_BUILTIN_PBLENDVB128): Likewise.
10666         (IX86_BUILTIN_PBLENDW128): Likewise.
10667         (IX86_BUILTIN_DPPD): Likewise.
10668         (IX86_BUILTIN_DPPS): Likewise.
10669         (IX86_BUILTIN_INSERTPS128): Likewise.
10670         (IX86_BUILTIN_MOVNTDQA): Likewise.
10671         (IX86_BUILTIN_MPSADBW128): Likewise.
10672         (IX86_BUILTIN_PACKUSDW128): Likewise.
10673         (IX86_BUILTIN_PCMPEQQ): Likewise.
10674         (IX86_BUILTIN_PHMINPOSUW128): Likewise.
10675         (IX86_BUILTIN_PMAXSB128): Likewise.
10676         (IX86_BUILTIN_PMAXSD128): Likewise.
10677         (IX86_BUILTIN_PMAXUD128): Likewise.
10678         (IX86_BUILTIN_PMAXUW128): Likewise.
10679         (IX86_BUILTIN_PMINSB128): Likewise.
10680         (IX86_BUILTIN_PMINSD128): Likewise.
10681         (IX86_BUILTIN_PMINUD128): Likewise.
10682         (IX86_BUILTIN_PMINUW128): Likewise.
10683         (IX86_BUILTIN_PMOVSXBW128): Likewise.
10684         (IX86_BUILTIN_PMOVSXBD128): Likewise.
10685         (IX86_BUILTIN_PMOVSXBQ128): Likewise.
10686         (IX86_BUILTIN_PMOVSXWD128): Likewise.
10687         (IX86_BUILTIN_PMOVSXWQ128): Likewise.
10688         (IX86_BUILTIN_PMOVSXDQ128): Likewise.
10689         (IX86_BUILTIN_PMOVZXBW128): Likewise.
10690         (IX86_BUILTIN_PMOVZXBD128): Likewise.
10691         (IX86_BUILTIN_PMOVZXBQ128): Likewise.
10692         (IX86_BUILTIN_PMOVZXWD128): Likewise.
10693         (IX86_BUILTIN_PMOVZXWQ128): Likewise.
10694         (IX86_BUILTIN_PMOVZXDQ128): Likewise.
10695         (IX86_BUILTIN_PMULDQ128): Likewise.
10696         (IX86_BUILTIN_PMULLD128): Likewise.
10697         (IX86_BUILTIN_ROUNDPD): Likewise.
10698         (IX86_BUILTIN_ROUNDPS): Likewise.
10699         (IX86_BUILTIN_ROUNDSD): Likewise.
10700         (IX86_BUILTIN_ROUNDSS): Likewise.
10701         (IX86_BUILTIN_PTESTZ): Likewise.
10702         (IX86_BUILTIN_PTESTC): Likewise.
10703         (IX86_BUILTIN_PTESTNZC): Likewise.
10704         (IX86_BUILTIN_VEC_EXT_V16QI): Likewise.
10705         (IX86_BUILTIN_VEC_SET_V2DI): Likewise.
10706         (IX86_BUILTIN_VEC_SET_V4SF): Likewise.
10707         (IX86_BUILTIN_VEC_SET_V4SI): Likewise.
10708         (IX86_BUILTIN_VEC_SET_V16QI): Likewise.
10709         (bdesc_ptest): New.
10710         (bdesc_sse_3arg): Likewise.
10711         (bdesc_2arg): Likewise.
10712         (bdesc_1arg): Likewise.
10713         (ix86_init_mmx_sse_builtins): Support SSE4.1.  Handle SSE builtins
10714         with 3 args.
10715         (ix86_expand_sse_4_operands_builtin): New.
10716         (ix86_expand_unop_builtin): Support 2 arg builtins with a constant
10717         smaller than 8 bits as the 2nd arg.
10718         (ix86_expand_sse_ptest): New.
10719         (ix86_expand_builtin): Support SSE4.1. Support 3 arg SSE builtins.
10720         (ix86_expand_vector_set): Support SSE4.1.
10721         (ix86_expand_vector_extract): Likewise.
10722
10723         * config/i386/i386.h (TARGET_CPU_CPP_BUILTINS): Define
10724         __SSE4_1__ for -msse4.1.
10725
10726         * config/i386/i386.md (UNSPEC_BLENDV): New for SSE4.1.
10727         (UNSPEC_INSERTPS): Likewise.
10728         (UNSPEC_DP): Likewise.
10729         (UNSPEC_MOVNTDQA): Likewise.
10730         (UNSPEC_MPSADBW): Likewise.
10731         (UNSPEC_PHMINPOSUW): Likewise.
10732         (UNSPEC_PTEST): Likewise.
10733         (UNSPEC_ROUNDP): Likewise.
10734         (UNSPEC_ROUNDS): Likewise.
10735
10736         * config/i386/i386.opt (msse4.1): New for SSE4.1.
10737
10738         * config/i386/predicates.md (const_pow2_1_to_2_operand): New.
10739         (const_pow2_1_to_32768_operand): Likewise.
10740
10741         * config/i386/smmintrin.h: New. The SSE4.1 intrinsic header
10742         file.
10743
10744         * config/i386/sse.md (*vec_setv4sf_sse4_1): New pattern for
10745         SSE4.1.
10746         (sse4_1_insertps): Likewise.
10747         (*sse4_1_extractps): Likewise.
10748         (sse4_1_ptest): Likewise.
10749         (sse4_1_mulv2siv2di3): Likewise.
10750         (*sse4_1_mulv4si3): Likewise.
10751         (*sse4_1_smax<mode>3): Likewise.
10752         (*sse4_1_umax<mode>3): Likewise.
10753         (*sse4_1_smin<mode>3): Likewise.
10754         (*sse4_1_umin<mode>3): Likewise.
10755         (sse4_1_eqv2di3): Likewise.
10756         (*sse4_1_pinsrb): Likewise.
10757         (*sse4_1_pinsrd): Likewise.
10758         (*sse4_1_pinsrq): Likewise.
10759         (*sse4_1_pextrb): Likewise.
10760         (*sse4_1_pextrb_memory): Likewise.
10761         (*sse4_1_pextrw_memory): Likewise.
10762         (*sse4_1_pextrq): Likewise.
10763         (sse4_1_blendpd): Likewise.
10764         (sse4_1_blendps): Likewise.
10765         (sse4_1_blendvpd): Likewise.
10766         (sse4_1_blendvps): Likewise.
10767         (sse4_1_dppd): Likewise.
10768         (sse4_1_dpps): Likewise.
10769         (sse4_1_movntdqa): Likewise.
10770         (sse4_1_mpsadbw): Likewise.
10771         (sse4_1_packusdw): Likewise.
10772         (sse4_1_pblendvb): Likewise.
10773         (sse4_1_pblendw): Likewise.
10774         (sse4_1_phminposuw): Likewise.
10775         (sse4_1_extendv8qiv8hi2): Likewise.
10776         (*sse4_1_extendv8qiv8hi2): Likewise.
10777         (sse4_1_extendv4qiv4si2): Likewise.
10778         (*sse4_1_extendv4qiv4si2): Likewise.
10779         (sse4_1_extendv2qiv2di2): Likewise.
10780         (*sse4_1_extendv2qiv2di2): Likewise.
10781         (sse4_1_extendv4hiv4si2): Likewise.
10782         (*sse4_1_extendv4hiv4si2): Likewise.
10783         (sse4_1_extendv2hiv2di2): Likewise.
10784         (*sse4_1_extendv2hiv2di2): Likewise.
10785         (sse4_1_extendv2siv2di2): Likewise.
10786         (*sse4_1_extendv2siv2di2): Likewise.
10787         (sse4_1_zero_extendv8qiv8hi2): Likewise.
10788         (*sse4_1_zero_extendv8qiv8hi2): Likewise.
10789         (sse4_1_zero_extendv4qiv4si2): Likewise.
10790         (*sse4_1_zero_extendv4qiv4si2): Likewise.
10791         (sse4_1_zero_extendv2qiv2di2): Likewise.
10792         (*sse4_1_zero_extendv2qiv2di2): Likewise.
10793         (sse4_1_zero_extendv4hiv4si2): Likewise.
10794         (*sse4_1_zero_extendv4hiv4si2): Likewise.
10795         (sse4_1_zero_extendv2hiv2di2): Likewise.
10796         (*sse4_1_zero_extendv2hiv2di2): Likewise.
10797         (sse4_1_zero_extendv2siv2di2): Likewise.
10798         (*sse4_1_zero_extendv2siv2di2): Likewise.
10799         (sse4_1_roundpd): Likewise.
10800         (sse4_1_roundps): Likewise.
10801         (sse4_1_roundsd): Likewise.
10802         (sse4_1_roundss): Likewise.
10803         (mulv4si3): Don't expand for SSE4.1.
10804         (smax<mode>3): Likewise.
10805         (umaxv4si3): Likewise.
10806         (uminv16qi3): Likewise.
10807         (umin<mode>3): Likewise.
10808         (umaxv8hi3): Rewrite.  Only enabled for SSE4.1.
10809
10810         * doc/extend.texi: Document SSE4.1 built-in functions.
10811
10812         * doc/invoke.texi: Document -msse4.1.
10813
10814 2007-05-22  Nathan Sidwell  <nathan@codesourcery.com>
10815
10816         * config/m68k/linux.h (ASM_SPEC): Add asm_pcrel_spec.
10817         * config/m68k/m68k-none.h (ASM_SPEC): Don't override here.
10818         * config/m68k/m68k.h (ASM_PCREL_SPEC): New.
10819         (ASM_SPEC): Add asm_pcrel_spec.
10820         (EXTRA_SPECS): Add asm_pcrel_spec.
10821
10822 2007-05-21  David Daney  <ddaney@avtrex.com>
10823
10824         * doc/install.texi (Building a cross compiler): Add requirements
10825         for Java cross compiler.
10826
10827 2007-05-21  Andrew Pinski  <andrew_pinski@playstation.sony.com>
10828
10829         PR middle-end/31995
10830         * tree-chrec.c (evolution_function_is_affine_multivariate_p):
10831         Add loopno argument.  Use evolution_function_is_invariant_rec_p
10832         instead of evolution_function_is_constant_p.
10833         Update calls to evolution_function_is_affine_multivariate_p.
10834         * tree-chrec.h (evolution_function_is_affine_multivariate_p):
10835         Add loopno argument.
10836         * tree-scalar-evolution.c (gather_chrec_stats): Call
10837         evolution_function_is_affine_multivariate_p with a loop
10838         number of 0.
10839         * tree-data-ref.c (analyze_miv_subscript): Likewise.
10840         (analyze_overlapping_iterations): Likewise.
10841         (access_functions_are_affine_or_constant_p): Likewise.
10842         (build_classic_dist_vector_1): If the access functions
10843         are equal, don't do anything.
10844
10845 2007-05-21  Paolo Bonzini  <bonzini@gnu.org>
10846             Paolo Carlini  <pcarlini@suse.de>
10847             Uros Bizjak  <ubizjak@gmail.com>
10848
10849         * c-cppbuiltin.c (c_cpp_builtins): Define
10850         __GCC_HAVE_SYNC_COMPARE_AND_SWAP_1, __GCC_HAVE_SYNC_COMPARE_AND_SWAP_2,
10851         __GCC_HAVE_SYNC_COMPARE_AND_SWAP_4, __GCC_HAVE_SYNC_COMPARE_AND_SWAP_8,
10852         __GCC_HAVE_SYNC_COMPARE_AND_SWAP_16, if appropriate.
10853         * doc/cpp.texi ([Standard Predefined Macros]): Document.
10854
10855 2007-05-21  Mike Stump  <mrs@apple.com>
10856
10857         * config/darwin.h (LINK_COMMAND_SPEC): Add .cxx/.cp for dsymutil
10858         handling as well.
10859         * config/darwin9.h (LINK_COMMAND_SPEC): Likewise.
10860
10861 2007-05-21  Uros Bizjak  <ubizjak@gmail.com>
10862
10863         * config/i386/tmmintrin.h (_mm_alignr_epi8): Provide macro
10864         implementation if __OPTIMIZE__ is not defined.
10865         (_mm_alignr_pi8): Ditto.
10866         * config/i386/ammintrin.h (_mm_extracti_si64): Ditto.
10867         (_mm_inserti_si64): Ditto.
10868         * config/i386/emmintrin.h (_mm_shuffle_pd): Ditto.
10869         (_mm_slli_epi16): Ditto.
10870         (_mm_slli_epi32): Ditto.
10871         (_mm_slli_epi64): Ditto.
10872         (_mm_srai_epi16): Ditto.
10873         (_mm_srai_epi32): Ditto.
10874         (_mm_srli_si128): Ditto.
10875         (_mm_slli_si128): Ditto.
10876         (_mm_srli_epi16): Ditto.
10877         (_mm_srli_epi32): Ditto.
10878         (_mm_srli_epi64): Ditto.
10879         (_mm_extract_epi16): Ditto.
10880         (_mm_insert_epi16): Ditto.
10881         (_mm_shufflehi_epi16): Ditto.
10882         (_mm_shufflelo_epi16): Ditto.
10883         (_mm_shuffle_epi32): Ditto.
10884         * config/i386/xmmintrin.h (_mm_extract_pi16): Ditto.
10885         (_m_pextrw): Ditto.
10886         (_mm_insert_pi16): Ditto.
10887         (_m_pinsrw): Ditto.
10888         (_mm_shuffle_pi16): Ditto.
10889         (_m_pshufw): Ditto.
10890         (_mm_shufle_ps): Ditto.
10891         (_mm_prefetch): Ditto.
10892
10893 2007-05-21  Andreas Krebbel  <krebbel1@de.ibm.com>
10894
10895         * defaults.h (IBM_FLOAT_FORMAT): Macro definition removed.
10896         * doc/tm.texi (IBM_FLOAT_FORMAT): Documentation entry removed.
10897         * real.c (encode_i370_single, decode_i370_single,
10898         encode_i370_double, decode_i370_double): Functions removed.
10899         (i370_single_format, i370_double_format): Initializations removed.
10900         (real_maxval, round_for_format, exact_real_truncate, significand_size):
10901         Consider the log2_b field to always be one.
10902         (ieee_single_format, mips_single_format, coldfire_single_format,
10903         ieee_double_format, mips_double_format, coldfire_double_format,
10904         ieee_extended_motorola_format, ieee_extended_intel_96_format,
10905         ieee_extended_intel_128_format, ieee_extended_intel_96_round_53_format,
10906         ibm_extended_format, mips_extended_format, ieee_quad_format,
10907         mips_quad_format, vax_f_format, vax_d_format, vax_g_format,
10908         decimal_single_format, decimal_double_format, decimal_quad_format,
10909         c4x_single_format, c4x_extended_format, real_internal_format): Remove
10910         initialization of log2_b.
10911         * real.h (i370_single_format, i370_double_format): Declarations
10912         removed.
10913         * c-cppbuiltin.c (builtin_define_float_constants): Consider the log2_b
10914         field to always be one.
10915
10916 2007-05-21  Andreas Schwab  <schwab@suse.de>
10917
10918         * config/ia64/ia64.c (emit_predicate_relation_info): Fix use of
10919         NOTE_INSN_BASIC_BLOCK_P.
10920         (process_for_unwind_directive): Likewise.
10921
10922 2007-05-21  Nathan Sidwell  <nathan@codesourcery.com>
10923
10924         * builtins.c (expand_builtin_setjmp_setup): Update comment.
10925         * function.h (struct function): Move va_list_gpr_size,
10926         va_list_fpr_size, function_frequency to front of bitfields.  Add
10927         calls_unwind_init.
10928         (current_function_calls_unwind_init): New.
10929         * except.c (expand_builtin_unwind_init): Set
10930         current_function_calls_unwind_init not
10931         current_function_has_nonlocal_label.
10932         * reload1.c (has_nonexceptional_receiver): New.
10933         (reload): Use it and current_function_calls_unwind_init to
10934         determine whether call-saved regs must be saved.
10935
10936 2007-05-20  Jan Hubicka  <jh@suse.cz>
10937
10938         * gengtype.c (adjust_field_rtx_def): Use NOTE_KIND instead of
10939         NOTE_LINE_NUMBER; use NOTE_INSN_BASIC_BLOCK_P when possible.
10940         * ddg.c (create_ddg): LIkewise.
10941         * final.c (final): Remove hunk moving line number notes around since
10942         they are no longer present at this stage.
10943         (final_scan_insn): Use NOTE_KIND instead of
10944         NOTE_LINE_NUMBER; use NOTE_INSN_BASIC_BLOCK_P when possible.
10945         (output_asm_label): Likewise.
10946         * reorg.c (dbr_schedule): Likewise.
10947         * haifa-sched.c (unlink_other_notes): Likewise.
10948         * mode-switching.c (optimize_mode_switching): Likewise.
10949         * graph.c (start_bb): Likewise.
10950         * rtl.def (NOTE): Update description.
10951         * jump.c (squeeze_notes): Delete.
10952         (mark_jump_label): Use NOTE_KIND instead of NOTE_LINE_NUMBER; use
10953         NOTE_INSN_BASIC_BLOCK_P when possible.
10954         * ifcvt.c (dead_or_predicable): Remove call of squeeze_notes.
10955         * dwarf2out.c (gen_label_die): Use NOTE_KIND instead of
10956         NOTE_LINE_NUMBER; use NOTE_INSN_BASIC_BLOCK_P when possible.
10957         (dwarf2out_var_location): Likewise.
10958         * cfgbuild.c (make_edges): Likewise.
10959         (find_basic_blocks_1): Likewise.
10960         * function.c (reorder_blocks_1): Likewise.
10961         (epilogue_done): Likewise.
10962         (reposition_prologue_and_epilogue_notes): Likewise.
10963         * print-rtl.c (print_rtx): Likewise; drop code for printing
10964         line number notes.
10965         (print_rtl): Likewise.
10966         (print_rtl_single): Likewise.
10967         * gcse.c (insert_insn_start_bb): Likewise.
10968         * alias.c (init_alias_analysis): Likewise.
10969         * calls.c (fixup_tail_calls): Likewise.
10970         * except.c (sjlj_emit_function_enter): Likewise.
10971         * emit-rtl.c (add_insn_after): Likeiwse.
10972         (emit_label_before): Likewise.
10973         (emit_label_after): Likewise.
10974         (emit_note_before, emit_note_after, emit_note): Update
10975         parameter to be enum insn_note; do not deal with source
10976         files.
10977         * cfgcleanup.c (merge_blocks_move_predecessor_nojumps):
10978         Use NOTE_KIND instead of NOTE_LINE_NUMBER; use NOTE_INSN_BASIC_BLOCK_P
10979         when possible.
10980         (merge_blocks_move_successor_nojumps): Simplify now when
10981         we don't have BLOCK notes.
10982         (try_optimize_cfg): Likewise.
10983         * cfglayout.c (skip_insns_after_block): Likewise.
10984         (record_effective_endpoints): Likewise.
10985         (duplicate_insn_chain): Likewise.
10986         * varasm.c (output_constant_pool_1): Likewise.
10987         * sched-deps.c (sched_analyze): Likewise.
10988         * rtl.c (NOTE_INSN_MAX_isnt_negative_adjust_NOTE_INSN_BIAS):
10989         Exterminate.
10990         (note_insn_name): Simplify now when NOTE_INSN_BIAS is gone.
10991         * rtl.h (NOTE_SOURCE_LOCATION, NOTE_EXPANDED_LOCATION): Exterminate.
10992         (SET_INSN_DELETED): Simplify.
10993         (NOTE_LINE_NUMBER): Exterminate.
10994         (NOTE_LINE_KIND): New.
10995         (NOTE_INSN_BASIC_BLOCK_P): Update.
10996         (enum insn_note): Simplify.
10997         (GET_NOTE_INSN_NAME) Simplify.
10998         (emit_note_before, emit_note_after, emit_note): Update prototype.
10999         (squeeze_notes): Remove.
11000         * sched-int.h (NOTE_NOT_BB_P): Update.
11001         * resource.c (mark_target_live_regs): Update.
11002         * sched-rgn.c (debug_dependencies): Update.
11003         * sched-vis.c (print_insn): Update.
11004         * config/alpha/alpha.c (alpha_handle_trap_shadows): Update.
11005         * config/i386/i386.c (ix86_output_function_epilogue): Update.
11006         * config/sh/sh.c (sh_adjust_unroll_max): Function dead since gcc 4.0.0.
11007         (TARGET_ADJUST_UNROLL_MAX): Likewise.
11008         (split_branches): Update.
11009         (sh_optimize_target_register_callee_saved): Remove hunk dead since gcc
11010         4.0.0.
11011         (sh_adjust_unroll_max): Exterminate.
11012         * config/c4x/c4x.c (c4x_reorg): Use SET_INSN_DELETED.
11013         * config/m68hc11/m68hc11.c (m68hc11_check_z_replacement): Likewise.
11014         (m68hc11_reorg): Likewise.
11015         * config/ia64/ia64.c (emit_insn_group_barriers): Update.
11016         (emit_predicate_relation_info): Update.
11017         (process_for_unwind_directive): Update.
11018         * config/rs6000/rs6000.c (rs6000_output_function_epilogue): Update.
11019         (output_call): Update.
11020         * config/pa/pa.c (output_lbranch): Update.
11021         (output_millicode_call): Update.
11022         (output_call): Update.
11023         (pa_combine_instructions): Update.
11024         * config/mips/mips.c (mips16_gp_pseudo_reg): Update.
11025         * config/bfin/bfin.c (gen_one_bundle): Update.
11026         * cfgrtl.c (can_delete_note_p): Update.
11027         (delete_insn): Update.
11028         (rtl_merge_blocks): Update.
11029         (commit_one_edge_insertion): Update.
11030         (rtl_verify_flow_info): Update.
11031         * stmt.c (expand_case): Do not call squeeze_notes.
11032
11033 2007-05-20  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
11034
11035         PR middle-end/7651
11036         PR c++/11856
11037         PR c/12963
11038         PR c/23587
11039         PR other/29694
11040         * c.opt (Wtype-limits): New.
11041         * doc/invoke.texi (Wtype-limits): Document it.
11042         (Wextra): Enabled by -Wextra.
11043         * c-opts.c (c_common_post_options): Enabled by -Wextra.
11044         * c-common.c (shorten_compare): Warn with Wtype-limits.
11045
11046 2007-05-20  Uros Bizjak  <ubizjak@gmail.com>
11047
11048         * config/i386/tmmintrin.h (_mm_alignr_epi32): Implement as always
11049         inlined function, not as a macro.
11050         (_mm_alignr_pi8): Ditto.
11051         * config/i386/ammintrin.h (_mm_extracti_si64): Ditto.
11052         (_mm_inserti_si64): Ditto.
11053         * config/i386/emmintrin.h (_mm_shuffle_pd): Ditto.
11054         (_mm_extract_epi16): Ditto.
11055         (_mm_insert_epi16): Ditto.
11056         (_mm_shufflehi_epi16): Ditto.
11057         (_mm_shufflelo_epi16): Ditto.
11058         (_mm_shuffle_epi32): Ditto.
11059         * config/i386/xmmintrin.h (_mm_set_ss): Use 0.0f for float constant.
11060         * config/386/mm3dnow.h: Add __attribute__((__always_inline__)) to
11061         all functions.
11062         (_m_from_float): Add __extension__ to conversion.  Use 0.0f for
11063         float constant.
11064         (_m_to_float): Use C89 compatible assignment.
11065
11066 2007-05-20  Martin Michlmayr  <tbm@cyrius.com>
11067
11068         PR target/32007
11069         * config/arm/lib1funcs.asm: Define __ARM_ARCH__ on v2/v3 machines.
11070
11071 2007-05-20  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
11072
11073         PR middle-end/7651
11074         * doc/invoke.texi (Wreturn-type): Complete description.
11075         (Wextra): Delete item about return-type warning.
11076         * c-decl.c: Delete redundant Wextra warning.
11077
11078 2007-05-20  Uros Bizjak  <ubizjak@gmail.com>
11079
11080         PR target/31585
11081         * config/i386/pmmintrin.h: Do not include xmmintrin.h
11082         * config/i386/xmmintrin.h (_mm_extract_pi16): Implement as always
11083         inlined function, not as a macro.
11084         (_mm_prefetch): Ditto.
11085         (_m_pextrw): Ditto.
11086         (_mm_insert_pi16): Ditto.
11087         (_m_pinsrw): Ditto.
11088         (_mm_shuffle_pi16): Ditto.  Add const to __N argument.
11089         (_m_pshufw): Ditto. Add const to __N argument.
11090         (_mm_shufle_ps): Ditto.  Add const to __mask argument.
11091         * config/i386/emmintrin.h (_mm_slli_epi16): Add const to __B argument.
11092         (_mm_slli_epi32): Ditto.
11093         (_mm_srli_si128): Implement as always inlined function, not as a
11094         macro.  Add __inline to function declaration.
11095         (_mm_slli_si128): Ditto.
11096
11097 2007-05-19  Uros Bizjak  <ubizjak@gmail.com>
11098
11099         * config/i386/sfp-machine.h (FP_EX_INVALID, FP_EX_DENORM,
11100         FP_EXP_DIVZERO, FP_EX_OVERFLOW, FP_EX_UNDERFLOW, FP_EX_INEXACT):
11101         New constants.
11102         (struct fenv): New structure.
11103         (FP_HANDLE_EXCEPTIONS): New define.
11104         (FP_RND_NEAREST, FP_RND_ZERO, FP_RND_PINF, FP_RND_MINF): New constants.
11105         (_FP_DECL_EXP): New define.
11106         (FP_INIT_ROUNDMODE): New define.
11107         (FP_ROUNDMODE): New define.
11108
11109 2007-05-19  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
11110
11111         * doc/invoke.texi (Warning Options): Add -Wconversion-sign.
11112         (Wconversion): Update description.
11113         (Wconversion-sign): New.
11114         * c.opt (Wconversion-sign): New.
11115         * c-opts.c (c_common_post_options): Uninitialized Wconversion-sign
11116         means disabled for C++. Otherwise, take the status of Wconversion.
11117         * c-common.c (conversion_warning): Warn with either Wconversion or
11118         Wconversion-sign.
11119         (warnings_for_convert_and_check): Conditions are already checked by
11120         conversion_warning.
11121         (convert_and_check): Don't check warnings if the conversion failed.
11122
11123 2007-05-19 Andy Hutchinson <HutchinsonAndy@netscape.net>
11124            Anatoly Sokolov <aesok@dol.ru>
11125
11126         * config/avr/avr-protos.h (expand_prologue, expand_epilogue,
11127         avr_epilogue_uses) : Add declaration.
11128         * config/avr/predicates.md (avr_sp_immediate_operand): New predicate.
11129         * config/avr/constraints.md (R): New constraint.
11130         config/avr/avr.md (SREG_ADDR, UNSPEC_SEI, UNSPEC_CLI,
11131         UNSPECV_PROLOGUE_SAVES, UNSPECV_EPILOGUE_RESTORES): New constants.
11132         (*pop1, *pop2, *pop3, *pop4, *pop5): Combine into ...
11133         (*addhi3_sp_R_pc2, *addhi3_sp_R_pc3): ... these patterns.
11134         (*movhi_sp, popqi, pophi, enable_interrupt, disable_interrupt,
11135         call_prologue_saves, epilogue_restores, return_from_epilogue,
11136         return_from_main_epilogue, return_from_interrupt_epilogue,
11137         return_from_naked_epilogue, prologue, epilogue): New patterns.
11138         (jump): Handle symbol reference.
11139         * config/avr/avr.c (out_adj_frame_ptr, out_set_stack_ptr,
11140         avr_output_function_prologue, avr_output_function_epilogue): Remove
11141         functions.
11142         (avr_init_machine_status, expand_prologue, expand_epilogue,
11143         avr_asm_function_end_prologue, avr_epilogue_uses,
11144         avr_asm_function_begin_epilogue): New functions.
11145         (prologue_size, epilogue_size, jump_tables_size): Remove global
11146         variables.
11147         (TARGET_ASM_FUNCTION_PROLOGUE, TARGET_ASM_FUNCTION_EPILOGUE): Remove.
11148         (TARGET_ASM_FUNCTION_END_PROLOGUE): Define.
11149         (TARGET_ASM_FUNCTION_BEGIN_EPILOGUE): Define.
11150         (avr_override_options): Initialise init_machine_status.
11151         (output_movhi): Handle all stack pointer loads.
11152         (out_movqi_r_mr, out_movqi_mr_r): Handle SREG_ADDR address.
11153         (avr_output_addr_vec_elt): Do not use variable jump_tables_size.
11154         * config/avr/avr.h (AVR_2_BYTE_PC, AVR_3_BYTE_PC): New.
11155         (EPILOGUE_USES) Redefine.
11156         (machine_function) Declare.
11157
11158 2007-05-19  Richard Sandiford  <richard@codesourcery.com>
11159
11160         * config/mips/mips.c (mips_offset_within_alignment_p): Tweak comment.
11161         Use a single return statement.
11162
11163 2007-05-19  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
11164
11165         PR middle-end/30250
11166         * builtins.c (do_mpfr_lgamma_r): New.
11167         (fold_builtin_2): Handle builtin gamma_r/lgamma_r.
11168         * tree.h (CASE_FLT_FN_REENT): New.
11169
11170 2007-05-18  Geoffrey Keating  <geoffk@apple.com>
11171
11172         * dwarf2out.c (print_die): Use '%ld' not '%lu' to print a 'long'.
11173         (output_die): Use 'unsigned long' with %x.
11174         * sched-vis.c (print_value): Use 'unsigned HOST_WIDE_INT' and
11175         HOST_WIDE_INT_PRINT_HEX to print HOST_WIDE_INT.
11176         * tree-dump.c (dump_pointer): Use 'unsigned long' for %lx.
11177
11178         * unwind-dw2.c (uw_identify_context): Use the CFA, not the IP.
11179
11180 2007-05-18  H.J. Lu  <hongjiu.lu@intel.com>
11181
11182         PR target/31989
11183         PR target/31681
11184         PR target/31666
11185         * config/i386/i386.c (init_cumulative_args): Set maybe_vaarg to
11186         true if function has no argument.
11187
11188 2007-05-18  DJ Delorie  <dj@redhat.com>
11189
11190         * config/mips/mips.c (mips_offset_within_alignment_p): New.
11191         (mips_symbolic_constant_p): Call it for TPREL and DTPREL symbols.
11192
11193 2007-05-18  Uros Bizjak  <ubizjak@gmail.com>
11194
11195         * longlong.h (__x86_64__): Add definitions for add_ssaaaa,
11196         sub_ddmmss, umul_ppmm, udiv_qrnnd, count_leading_zeros and
11197         count_trailing_zeros.
11198         (__i386__): Implement count_leading_zeros using __builtin_clz().
11199         Implement count_trailing_zeros usign __builtin_ctz().
11200
11201 2007-05-18  Richard Sandiford  <richard@codesourcery.com>
11202
11203         * config/i386/vxworks.h (ASM_PREFERRED_EH_DATA_FORMAT): Undefine.
11204
11205 2007-05-18  Uros Bizjak  <ubizjak@gmail.com>
11206
11207         PR middle-end/31344
11208         * expr.c (emit_move_change_mode): Change mode of push operands here.
11209
11210 2007-05-17  Ian Lance Taylor  <iant@google.com>
11211
11212         PR tree-optimization/31953
11213         * tree-vrp.c (set_value_range_to_value): Add equiv parameter.
11214         Change all callers.
11215         (set_value_range_to_null): Call set_value_range_to_value.
11216         (extract_range_from_comparison): Likewise.
11217
11218 2007-05-17  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
11219
11220         * toplev.c (print_version): Output GMP/MPFR version info.
11221
11222         * builtins.c (CASE_MATHFN_REENT): New macro.
11223         (mathfn_built_in): Use it.
11224         * builtins.def (BUILT_IN_GAMMA_R, BUILT_IN_GAMMAF_R,
11225         BUILT_IN_GAMMAL_R, BUILT_IN_LGAMMA_R, BUILT_IN_LGAMMAF_R,
11226         BUILT_IN_LGAMMAL_R): New.
11227         * doc/extend.texi: Document new builtins.
11228
11229         PR middle-end/31796
11230         * builtins.c (do_mpfr_remquo): New.
11231         (fold_builtin_2): Handle BUILT_IN_DREM/BUILT_IN_REMAINDER.
11232         (fold_builtin_3): Handle BUILT_IN_REMQUO.
11233
11234         PR middle-end/30251
11235         * builtins.c (fold_builtin_1): Handle y0, y1.
11236         (fold_builtin_2): Handle yn.
11237
11238         PR middle-end/30251
11239         * builtins.c (do_mpfr_bessel_n): New.
11240         (fold_builtin_1): Handle BUILT_IN_J0 and BUILT_IN_J1.
11241         (fold_builtin_2): Handle BUILT_IN_JN.
11242
11243 2007-05-17  Danny Smith  <dannysmith@users.sourceforge.net>
11244
11245         PR target/31965
11246         * config/i386/mingw32.h (_INTEGRAL_MAX_BITS): Define builtin as
11247         TYPE_PRECISION (intmax_type_node).
11248
11249 2007-05-17  Steve Ellcey  <sje@cup.hp.com>
11250
11251         PR target/31850
11252         * reload.c (subst_reloads): Remove checking.
11253
11254 2007-05-17  Eric Botcazou  <ebotcazou@libertysurf.fr>
11255
11256         PR rtl-optimization/31691
11257         * combine.c (simplify_set): Build a new src pattern instead of
11258         substituting its operands in the COMPARE case.
11259
11260 2007-05-17  Zdenek Dvorak  <dvorakz@suse.cz>
11261
11262         * tree-vrp.c (finalize_jump_threads): Do not care about dominance info.
11263         (execute_vrp): Preserve loops through jump threading.
11264         * tree-ssa-threadupdate.c (thread_single_edge,
11265         dbds_continue_enumeration_p, determine_bb_domination_status,
11266         thread_through_loop_header): New functions.
11267         (create_edge_and_update_destination_phis,
11268         create_edge_and_update_destination_phis): Set loops for the new blocks.
11269         (prune_undesirable_thread_requests): Removed.
11270         (redirect_edges): Do not pretend that redirect_edge_and_branch can
11271         create new blocks.
11272         (thread_block): Do not call prune_undesirable_thread_requests.
11273         Update loops.
11274         (mark_threaded_blocks): Select edges to thread here.
11275         (thread_through_all_blocks): Take may_peel_loop_headers argument.
11276         Thread edges through loop headers independently.
11277         * cfgloopmanip.c (create_preheader, mfb_keep_just): Export.
11278         * tree-pass.h (TODO_mark_first_instance): New.
11279         (first_pass_instance): Declare.
11280         * cfghooks.c (duplicate_block): Put the block to the original loop
11281         if copy is not specified.
11282         * tree-ssa-dom.c (tree_ssa_dominator_optimize): Preserve loops through
11283         jump threading.  Pass may_peel_loop_headers to
11284         thread_through_all_blocks according to first_pass_instance.
11285         * cfgloop.h (create_preheader): Declare.
11286         * tree-flow.h (thread_through_all_blocks): Declaration changed.
11287         * basic-block.h (mfb_keep_just, mfb_kj_edge): Declare.
11288         * passes.c (first_pass_instance): New variable.
11289         (next_pass_1): Set TODO_mark_first_instance.
11290         (execute_todo): Set first_pass_instance.
11291
11292 2007-05-17  Uros Bizjak  <ubizjak@gmail.com>
11293
11294         PR tree-optimization/24659
11295         * optabs.h (enum optab_index): Add OTI_vec_unpacks_float_hi,
11296         OTI_vec_unpacks_float_lo, OTI_vec_unpacku_float_hi,
11297         OTI_vec_unpacku_float_lo, OTI_vec_pack_sfix_trunc and
11298         OTI_vec_pack_ufix_trunc.
11299         (vec_unpacks_float_hi_optab): Define new macro.
11300         (vec_unpacks_float_lo_optab): Ditto.
11301         (vec_unpacku_float_hi_optab): Ditto.
11302         (vec_unpacku_float_lo_optab): Ditto.
11303         (vec_pack_sfix_trunc_optab): Ditto.
11304         (vec_pack_ufix_trunc_optab): Ditto.
11305         * genopinit.c (optabs): Implement vec_unpack[s|u]_[hi|lo]_optab
11306         and vec_pack_[s|u]fix_trunc_optab using
11307         vec_unpack[s|u]_[hi\lo]_* and vec_pack_[u|s]fix_trunc_* patterns
11308         * tree-vectorizer.c (supportable_widening_operation): Handle
11309         FLOAT_EXPR and CONVERT_EXPR.  Update comment.
11310         (supportable_narrowing_operation): New function.
11311         * tree-vectorizer.h (supportable_narrowing_operation): Prototype.
11312         * tree-vect-transform.c (vectorizable_conversion): Handle
11313         (nunits_in == nunits_out / 2) and (nunits_out == nunits_in / 2) cases.
11314         (vect_gen_widened_results_half): Move before vectorizable_conversion.
11315         (vectorizable_type_demotion): Call supportable_narrowing_operation()
11316         to check for target support.
11317         * optabs.c (optab_for_tree_code) Return vec_unpack[s|u]_float_hi_optab
11318         for VEC_UNPACK_FLOAT_HI_EXPR, vec_unpack[s|u]_float_lo_optab
11319         for VEC_UNPACK_FLOAT_LO_EXPR and vec_pack_[u|s]fix_trunc_optab
11320         for VEC_PACK_FIX_TRUNC_EXPR.
11321         (expand_binop): Special case mode of the result for
11322         vec_pack_[u|s]fix_trunc_optab.
11323         (init_optabs): Initialize vec_unpack[s|u]_[hi|lo]_optab and
11324         vec_pack_[u|s]fix_trunc_optab.
11325
11326         * tree.def (VEC_UNPACK_FLOAT_HI_EXPR, VEC_UNPACK_FLOAT_LO_EXPR,
11327         VEC_PACK_FIX_TRUNC_EXPR): New tree codes.
11328         * tree-pretty-print.c (dump_generic_node): Handle
11329         VEC_UNPACK_FLOAT_HI_EXPR, VEC_UNPACK_FLOAT_LO_EXPR and
11330         VEC_PACK_FIX_TRUNC_EXPR.
11331         (op_prio): Ditto.
11332         * expr.c (expand_expr_real_1): Ditto.
11333         * tree-inline.c (estimate_num_insns_1): Ditto.
11334         * tree-vect-generic.c (expand_vector_operations_1): Ditto.
11335
11336         * config/i386/sse.md (vec_unpacks_float_hi_v8hi): New expander.
11337         (vec_unpacks_float_lo_v8hi): Ditto.
11338         (vec_unpacku_float_hi_v8hi): Ditto.
11339         (vec_unpacku_float_lo_v8hi): Ditto.
11340         (vec_unpacks_float_hi_v4si): Ditto.
11341         (vec_unpacks_float_lo_v4si): Ditto.
11342         (vec_pack_sfix_trunc_v2df): Ditto.
11343
11344         * doc/c-tree.texi (Expression trees) [VEC_UNPACK_FLOAT_HI_EXPR]:
11345         Document.
11346         [VEC_UNPACK_FLOAT_LO_EXPR]: Ditto.
11347         [VEC_PACK_FIX_TRUNC_EXPR]: Ditto.
11348         * doc/md.texi (Standard Names) [vec_pack_sfix_trunc]: Document.
11349         [vec_pack_ufix_trunc]: Ditto.
11350         [vec_unpacks_float_hi]: Ditto.
11351         [vec_unpacks_float_lo]: Ditto.
11352         [vec_unpacku_float_hi]: Ditto.
11353         [vec_unpacku_float_lo]: Ditto.
11354
11355 2007-05-16  Uros Bizjak  <ubizjak@gmail.com>
11356
11357         * soft-fp/README: Update for new files.
11358         * soft-fp/floattisf.c: New file.
11359         * soft-fp/floattidf.c: New file.
11360         * soft-fp/floattitf.c: New file.
11361         * soft-fp/floatuntisf.c: New file.
11362         * soft-fp/floatuntidf.c: New file.
11363         * soft-fp/floatuntitf.c: New file.
11364         * soft-fp/fixsfti.c: New file.
11365         * soft-fp/fixdfti.c: New file.
11366         * soft-fp/fixtfti.c: New file.
11367         * soft-fp/fixunssfti.c: New file.
11368         * soft-fp/fixunsdfti.c: New file.
11369         * soft-fp/fixunstfti.c: New file.
11370         * soft-fp/extendxftf.c: New file.
11371         * soft-fp/trunctfxf.c: New file.
11372
11373         * libgcc-std.ver (__extendxftf2): Added to GCC_4.3.0 section.
11374         (__trunctfxf2): Ditto.
11375
11376         * config/i386/libgcc-x86_64-glibc.ver (__addtf3, __divtf3, __eqtf2,
11377         __extenddftf2, __extendsftf2, __fixtfdi, __fixtfsi, __fixtfti,
11378         __fixunstfdi, __fixunstfsi, __fixunstfti, __floatditf, __floatsitf,
11379         __floattitf, __floatunditf, __floatunsitf, __floatuntitf, __getf2,
11380         __letf2, __multf3, __negtf2, __subtf3, __trunctfdf2, __trunctfsf2,
11381         __unordtf2): Exclude and add to GCC_4.3.0 section for x86_64 targets.
11382
11383         * config/i386/t-fprules-softfp64: New file.
11384         * config/i386/sfp-machine.h: New file.
11385         * config.gcc (x86_64-*-linux*, x86_64-*-kfreebsd*-gnu,
11386         x86_64-*-knetbsd*-gnu): Add i386/t-fprules-softfp64
11387         and soft-fp/t-softfp to tmake_file.
11388         (i[34567]86-*-linux*, i[34567]86-*-kfreebsd*-gnu,
11389         i[34567]86-*-knetbsd*-gnu): Ditto for --enable-targets=all.
11390
11391         * config/i386/t-linux64 (softfp_wrap_start): New.
11392         (softfp_wrap_end): New.
11393         * config/i386/i386.c (ix86_scalar_mode_supported): TFmode is
11394         supported for TARGET_64BIT.
11395
11396 2007-05-16  Rafael Avila de Espindola  <espindola@google.com>
11397
11398         * c-common.c (c_common_signed_or_unsigned_type): Emulate
11399         c_common_unsigned_type behavior.
11400
11401 2007-05-16  Paolo Bonzini  <bonzini@gnu.org>
11402
11403         * config/i386/i386.c (legitimize_tls_address): Mark __tls_get_addr
11404         calls as pure.
11405
11406 2007-05-16  Eric Christopher  <echristo@apple.com>
11407
11408         * config/rs6000/rs6000.c (rs6000_emit_prologue): Move altivec register
11409         saving after stack push. Set sp_offset whenever we push.
11410         (rs6000_emit_epilogue): Move altivec register restore before
11411         stack push.
11412
11413 2007-05-16  Richard Sandiford  <richard@codesourcery.com>
11414
11415         * configure.ac: Allow sysroots to be relocated under $prefix as
11416         well as $exec_prefix.
11417         * configure: Regenerate.
11418
11419 2007-05-16  Richard Sandiford  <richard@codesourcery.com>
11420
11421         Revert:
11422
11423         2007-05-12  Richard Sandiford  <richard@codesourcery.com>
11424
11425         * configure.ac (gcc_gxx_include_dir): Use $(libsubdir_to_prefix).
11426         (gcc_tooldir): Likewise.
11427         * configure: Regenerate.
11428         * Makefile.in (libsubdir_to_prefix): New variable, based on the
11429         old configure.ac gcc_tooldir setting.
11430         (prefix_to_exec_prefix): New variable.
11431         (DRIVER_DEFINES): Use $(libsubdir_to_prefix)$(prefix_to_exec_prefix)
11432         rather than $(unlibsubdir)/../ to derive TOOLDIR_BASE_PREFIX.
11433
11434 2007-05-14  Janis Johnson  <janis187@us.ibm.com>
11435
11436         * c-typeck.c (build_binary_op): Return early for error.
11437
11438 2007-05-15  Zdenek Dvorak  <dvorakz@suse.cz>
11439
11440         * tree-ssa-loop-niter.c (record_estimate): Use GGC_NEW to allocate
11441         struct nb_iter_bound.
11442         (free_numbers_of_iterations_estimates_loop): Use ggc_free.
11443         * gengtype.c (open_base_files): Add cfhloop.h to the list of includes.
11444         * cfgloopmanip.c (place_new_loop): Vector larray is gc-allocated.
11445         * tree-scalar-evolution.c: Include gt-tree-scalar-evolution.h.
11446         (struct scev_info_str, scalar_evolution_info): Add GTY markers.
11447         (new_scev_info_str): Use GGC_NEW to allocate struct scev_info_str.
11448         (del_scev_info): Use ggc_free.
11449         (scev_initialize): Allocate scalar_evolution_info in gc memory.
11450         * loop-init.c: Include ggc.h.
11451         (loop_optimizer_init): Use GGC_CNEW to allocate struct loops.
11452         (loop_optimizer_finalize): Use ggc_free.
11453         * tree-ssa-loop.c (pass_tree_unswitch, pass_vectorize,
11454         pass_linear_transfom, pass_empty_loop, pass_complete_unroll,
11455         pass_iv_optimize): Add TODO_ggc_collect.
11456         * function.h (struct function): Remove skip marker from
11457         x_current_loops.
11458         * cfgloop.c: Include ggc.h.
11459         (flow_loops_free, flow_loop_free): Free the loop descriptions in gc
11460         memory.
11461         (establish_preds): Vector superloops is gc allocated.
11462         (alloc_loop): Allocate loop using GGC_CNEW.  Allocate head of
11463         loop->exits list.
11464         (flow_loops_find): Vector larray is gc allocated.
11465         (loop_exit_free): Use ggc_free.
11466         (rescan_loop_exit): Use GGC_NEW to allocate struct loop_exit.  Reflect
11467         that head of exits list is now not a part of struct loop.
11468         (record_loop_exits): Allocate exits table in gc memory.
11469         (get_loop_exit_edges, verify_loop_structure, single_exit): Reflect
11470         that head of exits list is now not a part of struct loop.
11471         * cfgloop.h (struct lpt_decision, struct nb_iter_bound,
11472         struct loop_exit): Add GTY marker.
11473         (struct loop): Add GTY marker.  Make superloops vector gc allocated.
11474         Add skip marker to aux field.  Make head of exits list a separate
11475         object.
11476         (struct loops): Add GTY marker.  Make larray vector gc allocated.
11477         Add param marker to exits table.
11478         (get_loops): Type changed.
11479         * Makefile.in (tree-scalar-evolution.o): Add
11480         gt-tree-scalar-evolution.h dependency.
11481         (cfgloop.o, loop-init.o): Add ggc.h dependency.
11482         (GTFILES): Add cfgloop.h and tree-scalar-evolution.c.
11483         * basic-block.h (struct basic_block_def): Remove skip marker from
11484         loop_father field.
11485
11486 2007-05-14  Uros Bizjak  <ubizjak@gmail.com>
11487
11488         * builtins.c (expand_builtin_mathfn): Use EXPAND_NORMAL instead
11489         of 0 in the call to expand_expr().
11490         (expand_builtin_mathfn_3): Ditto.
11491         (expand_builtin_interclass_mathfn): Ditto.
11492         (expand_builtin_cexpi): Ditto.
11493         (expand_builtin_int_roundingfn): Ditto.
11494         (expand_builtin_int_roundingfn_2): Ditto.
11495         (expand_builtin_pow): Ditto.
11496         (expand_builtin_powi): Ditto.
11497         (expand_builtin_bswap): Ditto.
11498         (expand_builtin_unop): Ditto.
11499         (expand_builtin_fabs): Ditto.
11500         (get_builtin_sync_mem): Use NULL_RTX instead of NULL in
11501         the call to expand_expr().
11502         (expand_builtin_sync_operation): Ditto.
11503         (expand_builtin_compare_and_swap): Ditto.
11504         (expand_builtin_lock_test_and_set): Ditto.
11505         * except.c (expand_builtin_eh_return_data_regno): Use EXPAND_NORMAL
11506         instead of 0 in the call to expand_expr().
11507         (expand_builtin_extract_return_addr): Ditto.
11508         (expand_builtin_eh_return): Ditto.
11509         (expand_eh_return): Ditto.
11510         * explow.c (expr_size): Ditto.
11511         * expr.c (optimize_bitfield_assignment_op): Ditto.
11512         (expand_assignement): Ditto.
11513         (store_expr): Ditto.
11514         (store_field): Ditto.
11515         (expand_expr_addr_expr_1): Use NULL_RTX instead of NULL in
11516         the call to expand_expr().
11517         (expand_expr_real_1) [COMPLEX_CST]: Use EXPAND_NORMAL instead of 0
11518         in the call to expand_expr().
11519         [CONSTRUCTOR, PLUS_EXPR, MINUS_EXPR, NEGATE_EXPR, ABS_EXPR,
11520         BIT_NOT_EXPR, LSHIFT_EXPR, LT_EXPR, TRUTH_NOT_EXPR]: Ditto.
11521         [VEC_UNPACK_HI_EXPR, VEC_UNPACK_LO]: Use expand_normal() instead
11522         of expand_expr().
11523         * optabs.c (expand_vec_shift_expr): Ditto.
11524         (expand_vec_cond_expr): Ditto.
11525         (vector_compare_rtx): Use EXPAND_STACK_PARM instead of 1 in the
11526         call to expand_expr().
11527         * stmt.c (expand_return): Use EXPAND_NORMAL instead of 0
11528         in the call to expand_expr().
11529
11530 2007-05-14  Dave Korn  <dave.korn@artimi.com>
11531
11532         * genautomata.c (gen_regexp_el):  Allocate correct size for regexp.
11533
11534 2007-05-14  Rafael Avila de Espindola  <espindola@google.com>
11535
11536         * c-common.c (warnings_for_convert_and_check): Use unsigned_type_for
11537         instead of c_common_unsigned_type.
11538         (c_common_unsigned_type): Remove.
11539         (shorten_compare): Use c_common_signed_or_unsigned_type instead of
11540         c_common_unsigned_type.
11541         (c_common_nodes_and_builtins): Use unsigned_type_for instead of
11542         c_common_unsigned_type.
11543         * c-common.h (c_common_unsigned_type): Remove.
11544         * c-decl.c (grokdeclarator): Use unsigned_type_for instead of
11545         c_common_unsigned_type.
11546         * c-format.c (check_format_types): Use unsigned_type_for instead of
11547         c_common_unsigned_type.
11548         * c-objc-common.h (LANG_HOOKS_UNSIGNED_TYPE): Remove.
11549         * c-typeck.c (convert_for_assignment): Use unsigned_type_for instead
11550         of c_common_unsigned_type.
11551         * convert.c (convert_to_integer): Use unsigned_type_for instead of
11552         lang_hooks.types.unsigned_type.
11553         * expmed.c (make_tree): Use unsigned_type_for instead of
11554         lang_hooks.types.unsigned_type.
11555         * fold-const.c (fold_negate_expr): Use unsigned_type_for instead of
11556         lang_hooks.types.unsigned_type.
11557         (build_range_check): Likewise.
11558         (fold_unary): Likewise.
11559         (fold_binary): Likewise.
11560         (fold_ternary): Likewise.
11561         * langhooks-def.h (LANG_HOOKS_UNSIGNED_TYPE): Remove.
11562         * langhooks.h (lang_hooks_for_types): Remove unsigned_type.
11563         * tree.c (get_unsigned_type): New.
11564         (unsigned_type_for): Use get_unsigned_type instead of
11565         lang_hooks.types.unsigned_type.
11566
11567 2007-05-14  Kazu Hirata  <kazu@codesourcery.com>
11568
11569         * config/m68k/m68k-protos.h: Rename m68k_interrupt_function_p
11570         to m68k_get_function_kind.  Update its prototype.
11571         * config/m68k/m68k.c (m68k_attribute_table): Add an entry for
11572         interrupt_thread.
11573         (m68k_interrupt_function_p): Return enum m68k_function_type
11574         instead of bool.  Rename to m68k_get_function_kind.
11575         (m68k_handle_fndecl_attribute): Reject interrupt_thread if the
11576         target is not fido.
11577         (m68k_compute_frame_layout): Don't mark any register for save
11578         if an interrupt_thread attribute is specified.
11579         (m68k_hard_regno_rename_ok): Update a use of
11580         m68k_interrupt_function_p.
11581         * config/m68k/m68k.h (EPILOGUE_USES): Update a use of
11582         m68k_interrupt_function_p.
11583         (m68k_function_type): New.
11584         * config/m68k/m68k.md (*return): Output a 'sleep' instruction
11585         for a function with an interrupt_thread attribute.
11586         * doc/extend.texi: Document the interrupt_thread attribute.
11587
11588 2007-05-13  Daniel Berlin  <dberlin@dberlin.org>
11589
11590         Fix PR tree-optimization/31911
11591         * tree-ssa-pre.c (phi_translate): Make sure to cache results even
11592         if they didn't change the expression.
11593
11594 2007-05-13  Zdenek Dvorak  <dvorakz@suse.cz>
11595
11596         * tree-scalar-evolution.c (resolve_mixers): Exported.
11597         * tree-scalar-evolution.h (resolve_mixers): Declare.
11598         * tree-data-ref.c (object_analysis, ptr_decl_may_alias_p,
11599         ptr_ptr_may_alias_p, may_alias_p, record_ptr_differ_p,
11600         record_record_differ_p, record_array_differ_p, array_ptr_differ_p,
11601         base_object_differ_p, base_addr_differ_p, analyze_array_indexes,
11602         init_array_ref, init_pointer_ref, analyze_indirect_ref,
11603         strip_conversion, analyze_offset_expr, address_analysis,
11604         object_analysis, analyze_offset): Removed.
11605         (dr_analyze_innermost, dr_analyze_indices, dr_analyze_alias,
11606         split_constant_offset, canonicalize_base_object_address,
11607         object_address_invariant_in_loop_p, disjoint_objects_p,
11608         dr_may_alias_p, dr_address_invariant_p): New functions.
11609         (create_data_ref): Use dr_analyze_innermost, dr_analyze_indices
11610         and dr_analyze_alias.
11611         (initialize_data_dependence_relation): Use dr_may_alias_p
11612         and object_address_invariant_in_loop_p.
11613         (compute_self_dependence): Handle the case when
11614         DDR_ARE_DEPENDENT (ddr) is chrec_dont_know.
11615         (find_data_references_in_stmt): Restrict the analysis of data
11616         references to the given loop nest.
11617         (find_data_references_in_loop): Made static.  Pass loop nest to
11618         find_data_references_in_stmt.
11619         (compute_data_dependences_for_loop): Use DR_VOPS.
11620         (free_data_ref): Free DR_VOPS.
11621         * tree-data-ref.h (struct first_location_in_loop): Replaced by ...
11622         (struct innermost_loop_behavior): ... new.
11623         (struct base_object_info): Replaced by ...
11624         (struct indices): ... new.
11625         (struct dr_alias): New.
11626         (enum data_ref_type): Removed.
11627         (struct data_reference): Consist of struct innermost_loop_behavior,
11628         struct indices and struct dr_alias.
11629         (DR_SET_ACCESS_FNS, DR_FREE_ACCESS_FNS): Removed.
11630         (DR_MEMTAG): Renamed to ...
11631         (DR_SYMBOL_TAG): ... this.
11632         (find_data_references_in_loop): Declaration removed.
11633         * tree-vect-analyze.c (vect_compute_data_ref_alignment): Use DR_INIT
11634         instead of DR_OFFSET_MISALIGNMENT.  DR_ALIGNED_TO is never NULL.
11635         (vect_analyze_data_refs): Use DR_SYMBOL_TAG instead of DR_MEMTAG.
11636         * tree-vect-transform.c (vect_create_data_ref_ptr): Ditto.
11637
11638 2007-05-13  Revital Eres  <eres@il.ibm.com>
11639
11640         * tree-ssa-dse.c (get_use_of_stmt_lhs): New function
11641         which walks virtual def-use chains to find redundant stores.
11642         (dse_optimize_stmt): Call it.
11643
11644 2007-05-12  Steven Bosscher  <steven@gcc.gnu.org>
11645
11646         * gcse.c (gcse_main): Do jump bypassing in CPROP2.
11647         * passes.c (init_optimization_passes): Move pass_jump_bypass
11648         after loop2.
11649
11650         * basic-block.h (bb_has_eh_pred): Fix style issue.
11651
11652 2007-05-12  Steven Bosscher  <steven@gcc.gnu.org>
11653
11654         PR rtl-optimization/31848
11655         * loop-invariant.c (move_invariant_reg): If we move an insn
11656         with a REG_EQUAL note, and that insn is not always executed,
11657         remove the REG_EQUAL note.
11658
11659 2007-05-12  Richard Guenther  <rguenther@suse.de>
11660
11661         PR tree-optimization/31797
11662         * tree-ssa-forwprop.c (forward_propagate_addr_expr): Do not
11663         propagate into a stmt that has volatile ops.
11664
11665 2007-05-12  Richard Sandiford  <richard@codesourcery.com>
11666
11667         * configure.ac (gcc_gxx_include_dir): Use $(libsubdir_to_prefix).
11668         (gcc_tooldir): Likewise.
11669         * configure: Regenerate.
11670         * Makefile.in (libsubdir_to_prefix): New variable, based on the
11671         old configure.ac gcc_tooldir setting.
11672         (prefix_to_exec_prefix): New variable.
11673         (DRIVER_DEFINES): Use $(libsubdir_to_prefix)$(prefix_to_exec_prefix)
11674         rather than $(unlibsubdir)/../ to derive TOOLDIR_BASE_PREFIX.
11675
11676 2007-05-11  Silvius Rus  <rus@google.com>
11677
11678         * Makefile.in (OBJS-common): Add tree-ssa-alias-warnings.o.
11679         * c-common.c (strict_aliasing_warning): Modify -Wstrict-aliasing logic.
11680         * c-common.h (strict_aliasing_warning): Change return type.
11681         * c-opts.c (c_common_handle_option): Add call to set_Wstrict_aliasing.
11682         * c-typeck.c (build_indirect_ref): Add call to strict_aliasing_warning.
11683         (build_c_cast): Condition call to strict_aliasing_warning.
11684         * doc/invoke.texi: Update description of -Wstrict-aliasing[=n].
11685         * flags.h (set_Wstrict_aliasing): Declare.
11686         * opts.c (set_Wstrict_alising): Define, add call to.
11687         * tree-flow.h (strict_aliasing_warning_backend): Declare.
11688         * tree-ssa-alias-warnings.c: New file.
11689         * tree-ssa-alias.c (compute_may_aliases): Add call to
11690         strict_aliasing_warning_backend.
11691
11692 2007-05-11  Zdenek Dvorak  <dvorakz@suse.cz>
11693
11694         * tree-loop-linear.c (gather_interchange_stats, try_interchange_loops):
11695         Use loop_depth and loop_outer accessor functions.
11696         * tree-ssa-loop-im.c (outermost_invariant_loop, set_level,
11697         determine_invariantness_stmt, move_computations_stmt): Ditto.
11698         * cfgloopmanip.c (fix_bb_placement, fix_loop_placement, remove_path,
11699         add_loop, loopify, unloop, fix_loop_structure): Ditto.
11700         * tree-ssa-loop-manip.c (find_uses_to_rename_use): Ditto.
11701         * tree-scalar-evolution.c (interpret_loop_phi,
11702         compute_scalar_evolution_in_loop, analyze_scalar_evolution_in_loop,
11703         instantiate_parameters_1, scev_const_prop): Ditto.
11704         * cfghooks.c (make_forwarder_block): Ditto.
11705         * cfgloopanal.c (mark_irreducible_loops, mark_loop_exit_edges): Ditto.
11706         * modulo-sched.c (loop_canon_p): Ditto.
11707         * tree-vectorizer.c (slpeel_tree_duplicate_loop_to_edge_cfg,
11708         slpeel_can_duplicate_loop_p): Ditto.
11709         * lambda-code.c (invariant_in_loop_and_outer_loops): Ditto.
11710         * tree-cfg.c (tree_duplicate_sese_region): Ditto.
11711         * cfgloop.c (flow_loop_dump, flow_loop_nodes_find, rescan_loop_exit,
11712         cancel_loop, verify_loop_structure): Ditto.
11713         (flow_loop_nested_p, superloop_at_depth, flow_loop_free,
11714         add_bb_to_loop, remove_bb_from_loops, find_common_loop): Use the
11715         superloops vector instead of "pred" array.
11716         (establish_preds): Take father loop as an argument.  Initialize the
11717         superloops vector.
11718         (flow_loop_tree_node_add): Pass father loop to establish_preds.
11719         Do not initialize loop->outer.
11720         (flow_loop_tree_node_remove): Truncate the superloops vector.
11721         * cfgloop.h (struct loop): Removed field "outer", fields "depth" and
11722         "pred" merged to "superloops" vector.
11723         (loop_depth, loop_outer): New.
11724         (fel_init): Use loop_outer.
11725
11726 2007-05-11  Jan Hubicka  <jh@suse.cz>
11727
11728         * cgraphunit.c: Include gt-cgraphunit.h
11729         (static_ctors, static_dtors): New static vars.
11730         (record_cdtor_fn, build_cdtor, cgraph_build_cdtor_fns): New functions,
11731         based on implementation in c-common.c
11732         (cgraph_finalize_function): Call record_cdtor_fn.
11733         (cgraph_optimize): Call cgraph_build_cdtor_fns.
11734         * decl.c (finish_function): Do not call c_record_cdtor_fn.
11735         (c_write_global_declarations): Do not call c_build_cdtor_fns.
11736         * c-common.c (static_ctors, static_dtors, c_record_cdtor_fn,
11737         build_cdtor, c_build_cdtor_fns): Remove.
11738         * c-common.h (static_ctors, static_dtors, c_record_cdtor_fn,
11739         c_build_cdtor_fns): Remove prototype.
11740
11741 2007-05-11  Paolo Carlini  <pcarlini@suse.de>
11742
11743         PR other/31852
11744         * builtin-types.def: Add BT_FN_PTR_CONST_PTR_INT_SIZE.
11745         * builtins.def: Add BUILT_IN_MEMCHR, use the latter.
11746         * builtins.c (fold_builtin_memchr): New.
11747         (expand_builtin_memchr): Call the latter.
11748         (expand_builtin, fold_builtin_3): Deal with BUILT_IN_MEMCHR.
11749         * doc/extend.texi ([Other built-in functions provided by GCC]):
11750         Document memchr.
11751
11752 2007-05-11  Andreas Krebbel  <krebbel1@de.ibm.com>
11753
11754         * config/s390/s390.md (GPR0_REGNUM, FPR0_REGNUM, FPR2_REGNUM,
11755         PFPO_CONVERT, PFPO_OP_TYPE_SF, PFPO_OP_TYPE_DF, PFPO_OP_TYPE_TF,
11756         PFPO_OP_TYPE_SD, PFPO_OP_TYPE_DD, PFPO_OP_TYPE_TD, PFPO_OP0_TYPE_SHIFT,
11757         PFPO_OP1_TYPE_SHIFT): Constants added.
11758         (DFP_ALL): Mode macro defined.
11759         ("*trunc<BFP:mode><DFP_ALL:mode>2", "*trunc<DFP_ALL:mode><BFP:mode>2",
11760         "*extend<BFP:mode><DFP_ALL:mode>2", "*extend<DFP_ALL:mode><BFP:mode>2"):
11761         Insn definitions added.
11762         ("trunc<BFP:mode><DFP_ALL:mode>2", "trunc<DFP_ALL:mode><BFP:mode>2",
11763         "extend<BFP:mode><DFP_ALL:mode>2", "extend<DFP_ALL:mode><BFP:mode>2"):
11764         Expanders added.
11765
11766 2007-05-10  Zdenek Dvorak  <dvorakz@suse.cz>
11767
11768         PR tree-optimization/31885
11769         * tree-chrec.c (chrec_contains_undetermined): Do not consider
11770         NULL_TREE to be undetermined.
11771         (automatically_generated_chrec_p): Return false for NULL.
11772
11773 2007-05-08  Bernd Schmidt  <bernd.schmidt@analog.com>
11774
11775         * config/bfin/bfin.h (MOVE_RATIO): Define.
11776
11777 2007-05-10  Richard Sandiford  <richard@codesourcery.com>
11778
11779         * config.gcc (sparc-wrs-vxworks): New target.
11780         * config/sparc/vxworks.h, config/sparc/t-vxworks: New files.
11781         * config/sparc/sparc-protos.h (sparc_emit_call_insn): Declare.
11782         * config/sparc/sparc.h: Include vxworks-dummy.h.
11783         (PRINT_OPERAND_ADDRESS): Extend SYMBOL_REF handling to
11784         include LABEL_REFs too.
11785         * config/sparc/sparc.c (sparc_expand_move): Don't assume that
11786         _GLOBAL_OFFSET_TABLE_ - label_ref is a link-time constant on
11787         VxWorks.
11788         (legitimize_pic_address): Handle LABEL_REFs like SYMBOL_REFs
11789         on VxWorks.
11790         (load_pic_register): Use gen_vxworks_load_got for VxWorks.
11791         (sparc_emit_call_insn): New function.
11792         (sparc_function_ok_for_sibcall): Restrict sibcalls to locally-binding
11793         functions when generating VxWorks PIC.
11794         * config/sparc/sparc.md (vxworks_load_got): New pattern.
11795         (call, call_value): Use sparc_emit_call_insn instead of
11796         emit_call_insn.
11797
11798 2007-05-09  Bob Wilson  <bob.wilson@acm.org>
11799
11800         * config/xtensa/xtensa.c (xtensa_output_literal): Don't use #if.
11801
11802 2007-05-09  Bob Wilson  <bob.wilson@acm.org>
11803
11804         * config/xtensa/xtensa.c (xtensa_output_literal): Mask out high bits
11805         for floating-point values if HOST_BITS_PER_LONG > 32.  Use
11806         split_double instead of operand_subword.
11807
11808 2007-05-08  Bernd Schmidt  <bernd.schmidt@analog.com>
11809
11810         * config/bfin/bfin.h (LOCAL_ALIGNMENT): Define.
11811         * config/bfin/bfin.c (bfin_local_alignment): New function.
11812         * config/bfin/bfin-protos.h (bfin_local_alignment): Declare it.
11813
11814 2007-05-08  Chao-ying Fu  <fu@mips.com>
11815
11816         * doc/md.texi (msub@var{m}@var{n}4, usub@var{m}@var{n}4): Document.
11817         * optabs.h (OTI_smsub_widen, OTI_umsub_widen): New optab_indexes.
11818         (smsub_widen_optab, umsub_widen_optab): Define.
11819         * optabs.c (init_optabs): Initialize smsub_widen_optab and
11820         umsub_widen_optab.
11821         * genopinit.c (optabs): Fill in smsub_widen_optab and
11822         umsub_widen_optab.
11823         * expr.c (expand_expr_real_1): Try to use smsub_widen_optab
11824         and umsub_widen_optab to implement multiply-subtract sequences.
11825         * config/mips/mips.md (*msac<u>_di): Rename to...
11826         (<u>msubsidi4): ...this.  Extend condition to include
11827         GENERATE_MADD_MSUB and TARGET_DSPR2.  Change the constraint
11828         of operand 0 to "ka" and use the three-operand form of msub<u>
11829         for TARGET_DSPR2.
11830         * config/mips/mips-dspr2.md (mips_msub, mips_msubu): Convert
11831         to define_expands.
11832
11833 2007-05-08  Kaz Kojima  <kkojima@gcc.gnu.org>
11834
11835         PR rtl-optimization/28011
11836         * reload.c (push_reload): Set dont_share if IN appears in OUT
11837         also when IN is a PLUS rtx.
11838         (reg_overlap_mentioned_for_reload_p): Return true if X and IN
11839         are same PLUS rtx.
11840
11841 2007-05-08  Kazu Hirata  <kazu@codesourcery.com>
11842
11843         * emit-rtl.c (unshare_all_rtl_1): Don't copy DECL_RTL.  Don't
11844         call unshare_all_decls.
11845         (unshare_all_rtl): Adjust the call to unshare_all_rtl_1.
11846         (unshare_all_decls): Remove.
11847
11848 2007-05-08  Simon Martin  <simartin@users.sourceforge.net>
11849
11850         PR 31847
11851         * tree-dump.c (dump_options): Don't use TDF_DIAGNOSTIC in "*-all" tree
11852         dumps.
11853
11854 2007-05-08  Sandra Loosemore  <sandra@codesourcery.com>
11855             Nigel Stephens  <nigel@mips.com>
11856
11857         * config/mips/mips.h (MAX_FPRS_PER_FMT): Renamed from FP_INC.
11858         Update comments and all uses.
11859         (MIN_FPRS_PER_FMT): Define.
11860         * config/mips/mips.c (function_arg): Fix to correctly handle
11861         the -mips32r2 -mfp64 -mabi=32 case.
11862         (override_options): Enable use of odd-numbered registers for
11863         SFmode values on MIPS32.
11864         (mips_save_reg_p): Save whole floating-point register pair if
11865         either half is used.
11866         (compute_frame_size): Fix comment.
11867
11868 2007-05-08  Jie Zhang  <jie.zhang@analog.com>
11869
11870         * config/bfin/bfin-protos.h (bfin_expand_epilogue): Add a third
11871         argument of type bool.
11872         * config/bfin/bfin.c (add_to_reg): Add epilogue_p as a fourth
11873         argument. Safely select temporary P register according to it.
11874         (do_link): Change call site of add_to_reg accordingly.
11875         (do_unlink): Add epilogue_p as a fourth argument and pass it
11876         to add_to_reg.
11877         (expand_interrupt_handler_epilogue): Change call of do_unlink
11878         accordingly.
11879         (bfin_expand_prologue): Add a third argument sibcall_p.
11880         * config/bfin/bfin.md (epilogue): Change call of
11881         bfin_expand_epilogue accordingly.
11882         (sibcall_epilogue): Likewise.
11883         (eh_return_internal): Likewise.
11884
11885         * config/bfin/bfin-protos.h (enum bfin_cpu): Add
11886         BFIN_CPU_BF534, BFIN_CPU_BF536 and BFIN_CPU_BF561.
11887         * config/bfin/bfin.c (bfin_handle_option): Handle
11888         -mcpu=bf534, -mcpu=bf536 and -mcpu=bf561.
11889         * config/bfin/bfin.h (TARGET_CPU_CPP_BUILTINS):
11890         Support bf534, bf536 and bf561.
11891         * doc/invoke.texi (Blackfin Options): Document -mcpu and -msim.
11892
11893 2007-05-08  Uros Bizjak  <ubizjak@gmail.com>
11894
11895         PR target/31854
11896         * config/i386/i386.c (ix86_function_regparm): Process local
11897         functions only when TREE_CODE (decl) equals FUNCTION_DECL.
11898
11899 2007-05-07  Mike Stump  <mrs@apple.com>
11900
11901         * doc/invoke.texi (Warning Options): Document that -Wempty-body
11902         also checks for and while statements in C++.
11903
11904 2007-05-07  Nathan Froyd  <froydnj@codesourcery.com>
11905
11906         * gcc.c (at_file_supplied): New variable.
11907         (main): Set it if we expanded argv.
11908         (do_spec_1): Pass an @-file to the linker if we were called with
11909         an @-file argument and HAVE_GNU_LD.
11910         * collect2.c (at_file_supplied): New variable.
11911         (response_file): New variable.
11912         (collect_exit): Unlink response_file if necessary.
11913         (handler): Likewise.
11914         (do_wait): Likewise.
11915         (main): Set at_file_supplied if we expanded argv.
11916         (collect_execute): Pass an @-file to subprocesses if we were called
11917         with an @-file argument.
11918         * configure.ac: Add define for HAVE_GNU_LD.
11919         * configure: Regenerate.
11920         * config.in: Regenerate.
11921
11922 2007-05-07  Naveen.H.S  <naveen.hs@kpitcummins.com>
11923
11924         * config/m32c/muldiv.md (mulhisi3_c): Limit the mode of the 2nd
11925         operand to HI mode.
11926         (mulsi3): New.
11927         (divsi3): New.
11928         (udivsi3): New.
11929
11930 2007-05-07  Jayant Sonar  <jayants@kpitcummins.com>
11931
11932         * config/m32c/m32c.c (SYMBOL_FLAG_FUNCVEC_FUNCTION): Define.
11933         (TARGET_ENCODE_SECTION_INFO): Re-define.
11934         (m32c_encode_section_info): New
11935         (function_vector_handler): New
11936         (current_function_special_page_vector): New
11937         (m32c_special_page_vector_p): New.
11938         * config/m32c/m32c-protos.h (m32c_special_page_vector_p):
11939         Prototype.
11940         * config/m32c/jump.md: Added instruction JSRS for functions
11941         with attribute "function_vector".
11942         * doc/extend.texi (function_vector): Added description
11943         for M16C, M32C targets.
11944
11945 2007-05-07  DJ Delorie  <dj@redhat.com>
11946
11947         PR 31794
11948         * config/m32c/shift.md (ashlpsi3_i, ashrpsi3_i, ashlpsi3,
11949         ashrpsi3, lshrpsi3): Update shift count constraint.
11950
11951 2007-05-07  Danny Smith  <dannysmith@users.sourceforge.net>
11952             Nathan Froyd  <froydnj@codesourcery.com>
11953
11954         PR 22133
11955         * c-incpath.c (add_path): Strip trailing path separators.
11956
11957 2007-05-07  Eric Botcazou  <ebotcazou@adacore.com>
11958
11959         * tree-ssa-dom.c (tree_ssa_dominator_optimize): Reset cfg_altered.
11960         Free dominance info before purging EH edges.
11961         (eliminate_degenerate_phis): Likewise.
11962         (propagate_rhs_into_lhs): Set cfg_altered to true instead of 1.
11963
11964 2007-05-07  Jan Hubicka  <jh@suse.cz>
11965
11966         * gimplify.c (gimplify_expr): Do not crash when folding
11967         (void *)(int)&a + 4.
11968
11969 2007-05-07  Francois-Xavier Coudert  <fxcoudert@gcc.gnu.org>
11970
11971         PR driver/31694
11972         * c-opts.c (lang_fortran): Make it non static.
11973         * c-common.h (lang_fortran): New prototype.
11974         * c-cppbuiltin.c (c_cpp_builtins): Create a __GFORTRAN__ if the
11975         -lang-fortran option was passed by the driver.
11976
11977 2007-05-06  Eric Botcazou  <ebotcazou@adacore.com>
11978
11979         * timevar.c (timevar_print): Test ENABLE_ASSERT_CHECKING instead
11980         of ASSERT_CHECKING.  Tweak message.
11981
11982 2007-05-06  Revital Eres  <eres@il.ibm.com>
11983
11984         PR 30957
11985         * loop-unroll.c (insert_var_expansion_initialization):
11986         Initialize the expansions with -zero instead of +zero.
11987
11988 2007-05-05  Aurelien Jarno  <aurelien@aurel32.net>
11989
11990         * config/pa/pa.md: Split tgd_load, tld_load and tie_load
11991         into pic and non-pic versions. Mark r19 as used for
11992         tgd_load_pic, tld_load_pic and tie_load_pic. Mark r27 as used
11993         for tgd_load, tld_load and tie_load .
11994         * config/pa/pa.c (legitimize_tls_address): Emit pic or non-pic
11995         version of tgd_load, tld_load and tie_load depending on the
11996         value of flag_pic.
11997
11998 2007-05-04  Ulrich Drepper  <drepper@redhat.com>
11999             Jakub Jelinek  <jakub@redhat.com>
12000
12001         * crtstuff.c (HIDDEN_DTOR_LIST_END): New macro.
12002         (__do_global_dtors_aux): Use more paranoid loop to run
12003         destructors if HIDDEN_DTOR_LIST_END.
12004         (__DTOR_END__): Export as a hidden symbol when HIDDEN_DTOR_LIST_END.
12005
12006 2007-05-04  Jakub Jelinek  <jakub@redhat.com>
12007
12008         * varasm.c (align_variable): Don't increase alignment for
12009         DECL_THREAD_LOCAL_P variables above BITS_PER_WORD through
12010         DATA_ALIGNMENT or CONSTANT_ALIGNMENT.
12011
12012 2007-05-04  Josh Conner  <jconner@apple.com>
12013
12014         * basic-block.h (cdi_direction): Assign values to all enumeration
12015         constants.
12016         (dom_computed): Remove.
12017         (dom_info_state): New.
12018         (set_dom_info_availability): New.
12019         * tree-ssa-loop-im.c (determine_invariantness): Initialize
12020         walk_data.dom_direction.
12021         * cfghooks.c (delete_basic_block): Use dom_info_available_p()
12022         instead of dom_computed[].
12023         (split_edge): Likewise.
12024         (create_basic_block): Likewise.
12025         (merge_blocks): Likewise.
12026         * ifcvt.c (find_if_header): Likewise.
12027         * tree-cfgcleanup.c (cleanup_tree_cfg): Likewise.
12028         * tree-ssa-dce.c (remove_dead_stmt): Likewise.
12029         * tree-ssa.c (verify_ssa): Likewise.
12030         * tree-cfg.c (tree_verify_flow_info): Likewise.
12031         (remove_edge_and_dominated_blocks): Likewise.
12032         * dominance.c (dom_computed): Make static.
12033         (calc_dfs_tree_nonrec): Change third param to a bool.
12034         (calc_dfs_tree): Change second param to a bool.
12035         (calc_idioms): Change second param to a bool.  Use
12036         dom_convert_dir_to_idx.
12037         (init_dom_info): Validate dir before using.
12038         (dom_convert_dir_to_idx): New.
12039         (calculate_dominance_info): Use dom_convert_dir_to_idx.  New
12040         variable 'reverse' used for calling calc_dfs_tree and calc_idoms.
12041         (free_dominance_info): Use dom_convert_dir_to_idx.
12042         (get_immediate_dominator): Likewise.
12043         (set_immediate_dominator): Likewise.
12044         (get_dominated_by): Likewise.
12045         (redirect_immediate_dominators): Likewise.
12046         (nearest_common_denominator): Likewise.
12047         (dominated_by_p): Likewise.
12048         (bb_dom_dfs_in): Likewise.
12049         (bb_dom_dfs_out): Likewise.
12050         (recount_dominator): Likewise.
12051         (iterate_fix_dominators): Likewise.
12052         (add_to_dominance_info): Likewise.
12053         (delete_from_dominance_info): Likewise.
12054         (first_dom_son): Likewise.
12055         (next_dom_son): Likewise.
12056         (dom_info_available_p): Likewise.
12057         (dom_info_state): New.
12058         (set_dom_info_availability): New.
12059
12060 2007-05-04  Andreas Krebbel  <krebbel1@de.ibm.com>
12061
12062         * config/s390/s390.md ("fix_trunc<mode>di2", "fix_trunc<mode>si2"):
12063         Expander removed.
12064         ("fix_trunc<DSF:mode><GPR:mode>2"): Expander added.
12065
12066 2007-05-04  Bob Wilson  <bob.wilson@acm.org>
12067
12068         * config/xtensa/xtensa.md (adddi3, adddi_carry): Delete.
12069         (subdi3, subdi_carry): Delete.
12070
12071 2007-05-04  Jan Hubicka  <jh@suse.cz>
12072             Richard Guenther  <rguenther@suse.de>
12073
12074         * opts.c (decode_options): Do not fiddle with inlining
12075         parameters in case of optimizing for size.
12076         * ipa-inline.c (cgraph_decide_recursive_inlining): When optimizing
12077         for size do nothing.
12078         (cgraph_decide_inlining_of_small_function): When optimizing for
12079         size never inline functions increasing caller size.
12080         (cgraph_early_inlining): Inline for size when optimizing for size.
12081
12082 2007-05-04  Bernd Schmidt  <bernd.schmidt@analog.com>
12083
12084         * config/bfin/bfin.md (<optab>di3): Now a define_expand which expands
12085         logical operations piecewise.
12086         (<optab>di_zesidi_di, <optab>di_sesidi_di, negdi2, one_cmpldi2,
12087         zero_extendsidi2, subdi_di_zesidi, subdi_zesidi_di, subdi_di_sesidi,
12088         subdi_sesidi_di): Delete.
12089         (add_with_carry): Produce carry in CC instead of a DREG to shorten
12090         the generated sequence.  Allow three-reg add in constraints.  Rewrite
12091         the rtl expression for carry to avoid zero_extend of a constant.
12092         (sub_with_carry): New pattern.
12093         (adddi3, subdi3): Change into define_expand.  For subtract, generate a
12094         different sequence not involving jumps.
12095         (notbi): Now a named pattern.
12096
12097 2007-05-04  Bradley Lucier  <lucier@math.purdue.edu>
12098
12099         * doc/invoke.texi (i386 and x86-64 Options) [-mpc32, -mpc64, -mpc80]:
12100         Add the note about a significant loss of accuracy of some
12101         mathematical routines when these options are used.
12102
12103 2007-05-04  Maxim Kuvyrkov  <mkuvyrkov@ispras.ru>
12104
12105         * haifa-sched.c (rtx_vec_t): New typedef.
12106         (contributes_to_priority_p): Extract piece of priority () into new
12107         static function.
12108         (priority): Use the function.  Add assertion.
12109         (rank_for_schedule, set_priorities): Add assertion to check that
12110         insn's priority is initialized.
12111         (clear_priorities, calc_priorities): Change signature.  Make it update
12112         all relevant insns.  Update all callers ('add_to_speculative_block ()'
12113         and 'create_block_check_twin ()').
12114         * sched-int.h (struct haifa_insn_data): Remove field 'priority_known'.
12115         Add new field 'priority_status'.
12116         (INSN_PRIORITY_STATUS): New macro.
12117         (INSN_PRIORITY_KNOWN): Change to use INSN_PRIORITY_STATUS.
12118
12119 2007-05-04  Maxim Kuvyrkov  <mkuvyrkov@ispras.ru>
12120
12121         * sched-ebb.c (debug_ebb_dependencies): New static function.
12122         (init_ready_list): Use it.
12123
12124         * sched-rgn.c (debug_dependencies): Split into 'debug_dependencies ()'
12125         with changed signature and 'debug_rgn_dependencies ()'.
12126         (debug_rgn_dependencies): New static function.
12127         (init_ready_list): Use it.
12128
12129         * sched-int.h (debug_dependencies): Declare.
12130
12131 2007-05-04  Andreas Krebbel  <krebbel1@de.ibm.com>
12132
12133         * libgcc-std.ver (__ffssi2): Added to GCC_4.3.0 section.
12134
12135 2007-05-04  Dirk Mueller  <dmueller@suse.de>
12136
12137         * c.opt(Wmain,ffreestanding): Enable for C++,ObjC++.
12138
12139 2007-05-03  Jan Hubicka  <jh@suse.cz>
12140
12141         * fold-const.c (fold_unary): Convert (T1)(X op Y) into
12142         ((T1)X op (T1)Y), for pointer type in more cases than before.
12143
12144         * gimplify.c (gimplify_expr): Fold (void *)&a + 4.
12145
12146         * tree-object-size.c (plus_expr_object_size): When operand size is
12147         unknown, return unknown.
12148
12149 2007-05-03  Dirk Mueller  <dmueller@suse.de>
12150
12151         * doc/invoke.texi (-m386,-m486,-mpentium,-mpentiumpro): Remove.
12152
12153         * config/i386/i386.h (CC1_CPU_SPEC): Remove handling for deprecated
12154         options.
12155
12156         * config/i386/i386.opt (m386,m486,mpentium,mpentiumpro): Remove.
12157
12158 2007-05-03  Janis Johnson  <janis187@us.ibm.com>
12159
12160         * doc/sourcebuild.texi (Test Directives) Clarify dg-excess-errors.
12161
12162 2007-05-03  Joseph Myers  <joseph@codesourcery.com>
12163
12164         * config/soft-fp/double.h, config/soft-fp/extended.h,
12165         config/soft-fp/floatundidf.c, config/soft-fp/floatundisf.c,
12166         config/soft-fp/floatunsidf.c, config/soft-fp/floatunsisf.c,
12167         config/soft-fp/op-2.h, config/soft-fp/op-4.h,
12168         config/soft-fp/op-common.h, config/soft-fp/quad.h: Update from
12169         glibc CVS.
12170
12171 2007-05-03  Ian Lance Taylor  <iant@google.com>
12172
12173         * config/rs6000/rs6000.c (rs6000_override_options): Don't set
12174         MASK_PPC_GFXOPT for 8540 or 8548.
12175
12176 2007-05-03  Uros Bizjak  <ubizjak@gmail.com>
12177
12178         * tree-vect-transform.c (vect_update_inits_of_drs): Use
12179         vect_print_dump_info() to output debug information.
12180
12181 2007-05-03  Uros Bizjak  <ubizjak@gmail.com>
12182
12183         PR target/31768
12184         * config/i386/i386.c (print_operand) ['z']: Output 'w' for
12185         operands of size 2 when operand is not MEM_P.
12186
12187 2007-05-03  Zdenek Dvorak  <dvorakz@suse.cz>
12188
12189         PR tree-optimization/30565
12190         * lambda-code.c (perfect_nestify): Fix updating of dominators.
12191
12192 2007-05-03  Bernd Schmidt  <bernd.schmidt@analog.com>
12193
12194         * config/bfin/bfin.md (addpdi3, us_truncpdisi2): New patterns.
12195         (umulsi3_highpart): Use them.
12196         * config/bfin/lib1funcs.asm (__umulsi3_highpart): Use unsigned move
12197         for final accumulator to D regisster tranfser.
12198
12199 2007-05-03  Dorit Nuzman  <dorit@il.ibm.com>
12200
12201         PR tree-optimization/31699
12202         * tree-vect-analyze.c (vect_update_misalignment_for_peel): Remove
12203         wrong code.
12204         (vect_enhance_data_refs_alignment): Compute peel amount using
12205         TYPE_VECTOR_SUBPARTS instead of vf.
12206         * tree-vect-transform.c (vect_gen_niters_for_prolog_loop): Likewise.
12207
12208 2007-05-02  Brooks Moses  <brooks.moses@codesourcery.com>
12209
12210         PR bootstrap/31776
12211         * system.h: Remove inclusion of double-int.h
12212         * tree.h: Include double-int.h
12213         * gengtype.c: Likewise
12214         * cfgloop.h: Likewise
12215         * Makefile.in: Adjust dependencies on double-int.h
12216
12217 2007-05-02  Eric Christopher  <echristo@apple.com>
12218
12219         * config/darwin.h (TARGET_OPTION_TRANSLATE_TABLE): Translate
12220         -shared to -Zdynamiclib.
12221
12222 2007-05-02  Seongbae Park  <seongbae.park@gmail.com>
12223
12224         PR c++/31663
12225         * c-common.c (strip_pointer_or_array_types): New function.
12226         * c-common.h (strip_pointer_or_array_types): New function declaration.
12227
12228 2007-05-03  Zdenek Dvorak  <dvorakz@suse.cz>
12229
12230         PR tree-optimization/31771
12231         * tree-cfg.c (move_block_to_fn): Assign bb to the correct index.
12232
12233 2007-05-02  Paul Brook  <paul@codesourcery.com>
12234
12235         * config/arm/bpabi.S (aeabi_lcmp): Fix result on overflow.
12236
12237 2007-05-02  Andrew Pinski  <andrew_pinski@playstation.sony.com>
12238
12239         PR middle-end/29715
12240         * fold-const.c (fold_comparision): Remove the "foo++ == CONST"
12241         transformation.
12242
12243 2007-05-02  Nick Clifton  <nickc@redhat.com>
12244
12245         * config/frv/predicates.md (symbolic_operand): Accept CONSTs.
12246
12247 2007-05-02  Richard Guenther  <rguenther@suse.de>
12248
12249         PR tree-optimization/31146
12250         * tree-ssa-forwprop.c (forward_propagate_addr_expr_1): New
12251         argument, single_use_p.  If we have a single use that is
12252         a conversion to the definition rhs type, propagate that rhs.
12253         (forward_propagate_addr_expr): Pass single_use_p argument
12254         to forward_propagate_addr_expr_1.
12255
12256 2007-05-01  H.J. Lu  <hongjiu.lu@intel.com>
12257
12258         * config/i386/i386.c (ix86_expand_sse_comi): Remove unused
12259         variable.
12260
12261 2007-05-01  Dwarakanath Rajagopal <dwarak.rajagopal@amd.com>
12262
12263         * doc/invoke.texi: Fix typo, 'AMD Family 10h core' instead of
12264         'AMD Family 10 core'.
12265
12266 2007-05-01  Dwarakanath Rajagopal <dwarak.rajagopal@amd.com>
12267
12268         * config/i386/i386.c (override_options): Accept k8-sse3, opteron-sse3
12269         and athlon64-sse3 as improved versions of k8, opteron and athlon64
12270         with SSE3 instruction set support.
12271         * doc/invoke.texi: Likewise.
12272
12273 2007-05-01  Dwarakanath Rajagopal <dwarak.rajagopal@amd.com>
12274
12275         * config/i386/i386.c (override_options): Tuning 32-byte loop
12276         alignment for amdfam10 architecture. Increasing the max loop
12277         alignment to 24 bytes.
12278
12279 2007-05-01  Kazu Hirata  <kazu@codesourcery.com>
12280
12281         * config/m68k/constraints.md: New.
12282         * config/m68k/m68k.h (REG_CLASS_FROM_LETTER,
12283         CONST_OK_FOR_LETTER_P, CONST_DOUBLE_OK_FOR_LETTER_P,
12284         EXTRA_CONSTRAINT): Remove.
12285         * config/m68k/m68k.md: Include constraints.md.
12286         * expr.c (expand_expr_real_1): Copy DECL_RTL before using it.
12287
12288 2007-05-01  Ian Lance Taylor  <iant@google.com>
12289
12290         PR tree-optimization/31739
12291         * tree-vrp.c (vrp_val_is_max): New static function.
12292         (vrp_val_is_min): New static function.
12293         (set_value_range_to_value): Use TYPE_{MAX,MIN}_VALUE rather than
12294         copying the node.
12295         (set_value_range): Use vrp_val_is_{max,min}.
12296         (extract_range_from_assert): Likewise.
12297         (extract_range_from_binary_expr): Likewise.
12298         (extract_range_from_unary_expr): Likewise.
12299         (dump_value_range, vrp_meet): Likewise.
12300         (vrp_visit_phi_node): Likewise.
12301         * tree.c (build_distinct_type_copy): Revert change of 2007-04-27.
12302
12303 2007-05-01  Mark Mitchell  <mark@codesourcery.com>
12304
12305         * config/i386/gmon-sol2.c (size_t): New type.
12306         (intptr_t): Likewise.
12307         (s_textsize): Declare as size_t.
12308         (sbrk): Declare.
12309         (monstartup): Use size_t for sizes.
12310         (_mcount): Save and restore registers.
12311         (internal_mcount): Pass 0 as the first argument to monstartup
12312         in 64-bit mode.
12313         (moncontrol): Convert pointer to appropriately sized integer
12314         before passing to profil.
12315
12316 2007-05-01  Joseph Myers  <joseph@codesourcery.com>
12317
12318         * config/rs6000/darwin-ldouble.c (__gcc_qunord): Define if
12319         __NO_FPRS__, not just if _SOFT_DOUBLE.
12320         * config/rs6000/libgcc-ppc-glibc.ver (__gcc_qunord): Likewise.
12321         * config/rs6000/rs6000.c (rs6000_init_libfuncs): Use __gcc_qunord
12322         also for E500 double.
12323         * config/rs6000/rs6000.md (buneq, bunge, bungt, bunle, bunlt,
12324         suneq, sunge, sungt, sunle, sunlt): Disable for (TARGET_HARD_FLOAT
12325         && !TARGET_FPRS).
12326
12327 2007-05-01  Richard Guenther  <rguenther@suse.de>
12328
12329         * tree-ssa-loop-manip.c (ip_normal_pos): Check if last stmt
12330         is NULL.
12331
12332 2007-05-01  Joseph Myers  <joseph@codesourcery.com>
12333
12334         * config/rs6000/libgcc-ppc-glibc.ver (__gcc_qgt): Fix typo.
12335
12336 2007-05-01  Jan Hubicka  <jh@suse.cz>
12337
12338         * tree-vectorize.c (vect_is_simple_use): gimple_min_invariant is
12339         invariant.
12340
12341 2007-05-01  Jan Hubicka  <jh@suse.cz>
12342
12343         * tree.h (maybe_fold_offset_to_component_ref): Remove.
12344         (maybe_fold_offset_to_reference): Declare.
12345         * fold-const.c (fold_unary): Do not fold
12346         (type *)&A into &A->field_of_type_and_offset_0
12347         * tree-ssa-ccp.c (maybe_fold_offset_to_array_ref): When base type
12348         size is unknown, give up.
12349         (maybe_fold_offset_to_component_ref): Ignore firelds with unknown
12350         offsets.
12351         (maybe_fold_offset_to_reference): New.
12352         (maybe_fold_stmt_indirect): Use it.
12353         (fold_stmt_r): Fold (type *)&A+offset into A->field_if_type_and_offset.
12354         * gimplify.c (gimplify_conversion): Canonicalize conversions to
12355         field references.
12356         (gimplify_expr): Likewise for plus_expr.
12357
12358 2007-05-01  Zdenek Dvorak  <dvorakz@suse.cz>
12359
12360         * tree-ssa-loop-ivopts.c (rewrite_use_nonlinear_expr): Use
12361         bsi_after_labels.  Always insert statements before bsi.
12362         * tree-vect-transform.c (vect_create_epilog_for_reduction): Ditto.
12363         * predict.c (apply_return_prediction): Check for empty blocks.
12364         * cfgexpand.c (lab_rtx_for_bb): New variable.
12365         (label_rtx_for_bb): Do not create new tree labels.
12366         (expand_gimple_basic_block): Add labels recorded in lab_rtx_for_bb.
12367         (tree_expand_cfg): Initialize lab_rtx_for_bb.
12368         * tree-cfg.c (build_tree_cfg): Call cleanup_dead_labels after
12369         creating edges.
12370         (label_for_bb): Add field used.
12371         (update_eh_label, main_block_label): Mark the label used.
12372         (cleanup_dead_labels): Remove unused labels.
12373
12374 2007-05-01  Richard Guenther  <rguenther@suse.de>
12375
12376         * tree-vrp.c (set_value_range): Do not allocate equiv bitmap
12377         if it is not about to be set.
12378         (get_value_range): Do not pre-allocate equiv bitmap.
12379         (update_value_range): No need to clear equiv field.
12380         (add_equivalence): Change prototype to get bitmap pointer.
12381         Allocate bitmap here if it is not already.
12382         (extract_range_from_assert): Do not allocate bitmap here.
12383         Update callers to add_equivalence.
12384         (extract_range_from_ssa_name): Likewise.
12385         (get_vr_for_comparison): New static helper.
12386         (compare_name_with_value): Handle NULL equiv bitmap by
12387         peeling the first iteration of the comparison loop.
12388         Use get_vr_for_comparison.
12389         (compare_names): Handle NULL equiv bitmaps by using fake
12390         ones.  Use get_vr_for_comparison.
12391
12392 2007-04-30  Brooks Moses  <brooks.moses@codesourcery.com>
12393
12394         * double-int.c (mpz_set_double_int): Moved from
12395         tree-ssa-loop-niter.c.
12396         (mpz_get_double_int): Likewise; also, add option to wrap
12397         out-of-range integers.
12398         * double-int.h: New prototypes for above.
12399         * tree.c (get_static_type_bounds): Moved from
12400         tree-ssa-loop-niter.c; now returns TYPE_MIN_VALUE and
12401         TYPE_MAX_VALUE if they exist..
12402         * tree.h: New prototype for above.
12403         * tree-ssa-loop-niter.c: Adjust mpz_to_double_int and
12404         get_type_bounds calls.
12405         (mpz_set_double_int): Move to double-int.c.
12406         (get_type_bounds): Move to tree.c, rename to
12407         get_static_type_bounds.
12408         (mpz_to_double_int): Move to double-int.c, rename to
12409         mpz_get_double_int.
12410
12411 2007-04-30  Bob Wilson  <bob.wilson@acm.org>
12412
12413         * config/xtensa/lib1funcs.asm (__umodsi3, __modsi3): Rearrange so that
12414         DIV0 exception can fall through to a normal return.
12415
12416 2007-04-30  Alexandre Oliva  <aoliva@redhat.com>
12417
12418         PR middle-end/22156
12419         Temporarily revert:
12420         2007-04-06  Andreas Tobler  <a.tobler@schweiz.org>
12421         * tree-sra.c (sra_build_elt_assignment): Initialize min/maxshift.
12422         2007-04-05  Alexandre Oliva  <aoliva@redhat.com>
12423         * tree-sra.c (try_instantiate_multiple_fields): Needlessly
12424         initialize align to silence bogus warning.
12425         2007-04-05  Alexandre Oliva  <aoliva@redhat.com>
12426         * tree-sra.c (struct sra_elt): Add in_bitfld_block.  Remove
12427         all_no_warning.
12428         (struct sra_walk_fns): Remove use_all parameter from use.
12429         (sra_hash_tree): Handle BIT_FIELD_REFs.
12430         (sra_elt_hash): Don't hash bitfld blocks.
12431         (sra_elt_eq): Skip them in parent compares as well.  Handle
12432         BIT_FIELD_REFs.
12433         (sra_walk_expr): Don't maintain or pass down use_all_p.
12434         (scan_use): Remove use_all parameter.
12435         (scalarize_use): Likewise.  Re-expand assignment to
12436         BIT_FIELD_REF of gimple_reg.  De-scalarize before input or
12437         output, and re-scalarize after output.  Don't mark anything
12438         for no warning.
12439         (scalarize_ldst): Adjust.
12440         (scalarize_walk_gimple_modify_statement): Likewise.
12441         (build_element_name_1): Handle BIT_FIELD_REFs.
12442         (instantiate_element): Don't warn for any element whose parent
12443         is used as a whole.
12444         (instantiate_missing_elements_1): Return the sra_elt.
12445         (canon_type_for_field): New.
12446         (try_instantiate_multiple_fields): New.
12447         (instantiate_missing_elemnts): Use them.
12448         (mark_no_warning): Removed.
12449         (generate_one_element_ref): Handle BIT_FIELD_REFs.
12450         (REPLDUP, sra_build_elt_assignment): New.
12451         (generate_copy_inout): Use them.
12452         (generate_element_copy): Likewise.  Handle bitfld differences.
12453         (generate_element_zero): Don't recurse for blocks.  Use
12454         sra_build_elt_assignment.
12455         (generate_one_element_int): Take elt instead of var.  Use
12456         sra_build_elt_assignment.
12457         (generate_element_init_1): Adjust.
12458         (scalarize_use, scalarize_copy): Use REPLDUP.
12459         (scalarize_ldst): Move assert before dereference.
12460         (dump_sra_elt_name): Handle BIT_FIELD_REFs.
12461
12462 2007-04-30  Andrew Pinski  <andrew_pinski@playstation.sony.com>
12463
12464         PR C++/31721
12465         * tree.c (reconstruct_complex_type): Reconstruct a reference
12466         correctly.
12467         Also use the same mode for the pointer as the old pointer type.
12468
12469 2007-04-30  Francois-Xavier Coudert  <coudert@clipper.ens.fr>
12470
12471         * doc/trouble.texi (Interoperation): Remove note about Ultrix
12472         Fortran compiler.
12473
12474 2007-04-29  Zdenek Dvorak  <dvorakz@suse.cz>
12475
12476         PR rtl-optimization/31676
12477         * df-scan.c (record_nonlocal_goto_receiver_defs): New function.
12478         (df_refs_record): Call it.
12479
12480 2007-04-29  Bernd Schmidt  <bernd.schmidt@analog.com>
12481
12482         * rtl.def (SS_ABS): New code.
12483         * config/bfin/bfin.c (print_operand): New modifier 'v'.
12484         (enum bfin_builtins): Add BFIN_BUILTIN_SUM_2X16, BFIN_BUILTIN_ABS_1x32,
12485         BFIN_BUILTIN_ROUND_1x32, BFIN_BUILTIN_MULT_1x32x32,
12486         BFIN_BUILTIN_MULT_1x32x32NS, BFIN_BUILTIN_SSASHIFT_1x32.
12487         (bfin_init_builtins): Define them.
12488         (bdesc_1arg, bdesc_2arg): Add some of them here, ...
12489         (bfin_expand_builtin): ... and handle the others here.
12490         * config/bfin/bfin.md (ssabssi2, ssroundsi2, ssashiftsi3,
12491         flag_mul_macv2hi_parts_acconly_andcc0): New patterns.
12492         (ss_absv2hi2): Renamed from absv2hi; use ss_abs code.
12493         (ssashiftv2hi3, ssashifthi3, lshiftv2hi3, lshifthi3): Shift count
12494         operand is only HImode.
12495
12496 2007-04-29  Steven Bosscher  <steven@gcc.gnu.org>
12497
12498         * regclass.c (scan_one_insn): Remove splitting of
12499         two address insns.
12500
12501 2007-04-28  Sandra Loosemore  <sandra@codesourcery.com>
12502             Nigel Stephens  <nigel@mips.com>
12503
12504         * config/mips/mips.h (SLOW_BYTE_ACCESS): Turn off for MIPS16.
12505
12506 2007-04-28  Jan Hubicka  <jh@suse.cz>
12507
12508         * config/alpha/alpha.c (alpha_output_mi_thunk_osf): Use
12509         insn_locators_alloc instead of insn_locators_initialize;
12510         call reset_block_changes.
12511         * config/sparc/sparc.c (sparc_output_mi_thunk): Likewise.
12512         * config/sh/sh.c (sparc_output_mi_thunk): Likewise.
12513         * config/is64/ia64.c (ia64_output_mi_thunk): Likewise.
12514         * config/rs6000/rs6000.c (rs6000_output_mi_thunk): Likewise.
12515         * config/score/score.c (th_output_mi_thunk): Likewise.
12516         * config/mips/mips.c (mips_output_mi_thunk): Likewise.
12517         * cfglyaout.c (set_curr_insn_source_location, set_curr_insn_block):
12518         tolerate uninitialized locator info.
12519
12520         Re-apply:
12521         * function.c (init_function_start): Don't init line number info.
12522         (expand_function_end): Update.
12523         (reset_block_changes, record_block_change, finalize_block_changes,
12524         check_block_change, free_block_changes): Kill.
12525         * function.h (reset_block_changes, record_block_change,
12526         finalize_block_changes, check_block_change, free_block_changes):
12527         Remove prototypes.
12528         (struct function): Remove ib_boundaries_block.
12529         * emit-rtl.c (make_insn_raw, make_jump_insn_raw, make_call_insn_raw):
12530         Use curr_insn_locator to initialize locator.
12531         (emit_line_note): Remove.
12532         * cfgexpand.c (expand_gimple_cond_expr): Update.
12533         (construct_exit_block): Likewise.
12534         (tree_expand_cfg): Initialize/finalize locators.
12535         * expr.c (expand_expr_real): Update.
12536         * cfglayout.c (line_locators_locs, line_locators_lines,
12537         file_locators_locs, file_locators_files): Remove.
12538         (set_block_levels): Move to cfgexpand.c.
12539         (insn_locators_initialize): Remove.
12540         (pass_insn_locators_initialize): Remove.
12541         (locations_locators_locs, locations_locators_vals): New static vars.
12542         (curr_location, last_location, curr_block, last_block, curr_rtl_loc):
12543         Likewise.
12544         (insn_locators_alloc, insn_locators_finalize,
12545         set_curr_insn_source_location, set_curr_insn_block, curr_insn_locator):
12546         New functions.
12547         (locator_location): New.
12548         (locator_line, locator_file): Rewrite.
12549         * rtl.h (emit_line_note): Kill.
12550         (insn_locators_alloc, insn_locators_finalize,
12551         set_curr_insn_source_location, set_curr_insn_block, curr_insn_locator):
12552         Declare.
12553         * tree-inline.c (initialize_cfun): Do not initialize
12554         ib_boundaries_block.
12555         * passes.c (pass_insn_locators_initialize): Remove.
12556
12557 2007-04-28  Zdenek Dvorak  <dvorakz@suse.cz>
12558
12559         * tree-cfg.c (move_block_to_fn): Release bb from dominance
12560         info.  Update last_basic_block correctly.
12561
12562 2007-04-27  Kaz Kojima  <kkojima@gcc.gnu.org>
12563
12564         PR target/31701
12565         * config/sh/sh.c (output_stack_adjust): Avoid using the frame
12566         register itself to hold the offset constant.  Tell flow the use
12567         of r4 and r5 when they are used.
12568
12569 2007-04-27  Richard Guenther  <rguenther@suse.de>
12570
12571         * tree-ssa-forwprop.c (forward_propagate_into_cond): Keep track
12572         if we simplified anything.
12573         (tree_ssa_forward_propagate_single_use_vars): Defer overflow
12574         warnings until we did a simplification and the stmt was not
12575         marked as TREE_NO_WARNING.
12576
12577 2007-04-27  Mike Stump  <mrs@apple.com>
12578
12579         * config/rs6000/darwin.h (ALWAYS_PUSH_CONSTS_USING_REGS_P): Remove.
12580
12581 2007-04-27  Ian Lance Taylor  <iant@google.com>
12582
12583         PR middle-end/31710
12584         * tree.c (build_distinct_type_copy): If TYPE_MIN_VALUE or
12585         TYPE_MAX_VALUE exist, convert them to the new type.
12586
12587 2007-04-27  Zdenek Dvorak  <dvorakz@suse.cz>
12588
12589         * tree-cfgcleanup.c (cleanup_tree_cfg): Verify dominance info
12590         if it claims to be available.
12591         * tree-ssa-dce.c (remove_dead_stmt): Mark cfg as altered when
12592         edge is redirected.
12593         (perform_tree_ssa_dce): Always free postdominators.
12594
12595 2007-04-27  Richard Henderson  <rth@redhat.com>
12596
12597         * config/alpha/predicates.md (aligned_memory_operand): Mark
12598         as define_special_predicate.
12599         (unaligned_memory_operand, normal_memory_operand): Likewise.
12600         (reg_or_unaligned_mem_operand): Remove.
12601         (any_memory_operand): Match the documentation and check for
12602         non-renumbered pseudos during reload.
12603         * config/alpha/alpha.c (alpha_secondary_reload): Rename from
12604         alpha_secondary_reload_class, update to new interface, make static.
12605         Handle CQImode like HImode.  Remove FP subreg check.
12606         (alpha_expand_mov): Use replace_equiv_address.
12607         (alpha_expand_mov_nobwx): Use any_memory_operand.
12608         (TARGET_SECONDARY_RELOAD): New.
12609         * config/alpha/alpha.h (SECONDARY_INPUT_RELOAD_CLASS): Remove.
12610         (SECONDARY_OUTPUT_RELOAD_CLASS): Remove.
12611         * config/alpha/sync.md (I12MODE, I48MODE, modesuffix): Move ...
12612         * config/alpha/alpha.md: ... here.
12613         (RELOAD12, reloadmode): New.
12614         (movcqi): New.
12615         (reload_in<RELOAD12>): Macro-ize from reload_inqi, reload_inhi.
12616         Don't handle the aligned case here.
12617         (reload_out<RELOAD12>): Macro-ize from reload_outqi, reload_outhi.
12618         (reload_in<I12MODE>_aligned): Macro-ize from reload_inqi_help,
12619         reload_inhi_help.  Don't expect a scratch register.
12620         (reload_out<I12MODE>_aligned): Macro-ize from reload_outqi_help,
12621         reload_outhi_help.
12622         * config/alpha/alpha-protos.h (alpha_secondary_reload_class): Remove.
12623
12624 2007-04-27  Richard Guenther  <rguenther@suse.de>
12625
12626         * tree-ssa-forwprop.c (get_prop_dest_stmt): Fix comment typo.
12627
12628 2007-04-27  Richard Guenther  <rguenther@suse.de>
12629
12630         PR tree-optimization/30965
12631         PR tree-optimization/30978
12632         * Makefile.in (tree-ssa-forwprop.o): Depend on $(FLAGS_H).
12633         * tree-ssa-forwprop.c (forward_propagate_into_cond_1): Remove.
12634         (find_equivalent_equality_comparison): Likewise.
12635         (simplify_cond): Likewise.
12636         (get_prop_source_stmt): New helper.
12637         (get_prop_dest_stmt): Likewise.
12638         (can_propagate_from): Likewise.
12639         (remove_prop_source_from_use): Likewise.
12640         (combine_cond_expr_cond): Likewise.
12641         (forward_propagate_comparison): New function.
12642         (forward_propagate_into_cond): Rewrite to use fold for
12643         tree combining.
12644         (tree_ssa_forward_propagate_single_use_vars): Call
12645         forward_propagate_comparison to propagate comparisons.
12646
12647 2007-04-27  Richard Guenther  <rguenther@suse.de>
12648
12649         PR tree-optimization/31715
12650         * tree-ssa-ccp.c (maybe_fold_offset_to_array_ref): Make
12651         sure to do computation on the offset in an appropriate
12652         signed type.
12653
12654 2007-04-27  Richard Sandiford  <richard@codesourcery.com>
12655
12656         * reload.h (elimination_target_reg_p): Declare.
12657         * reload.c (find_reloads): Don't apply the reg_rtx move
12658         optimization if the SET_DEST satisfies elimination_target_reg_p.
12659         * reload1.c (elimination_target_reg_p): New function.
12660         (gen_reload): In the move/add2 fallback, make sure that op0
12661         does not overlap the destination register.
12662
12663 2007-04-27  Zdenek Dvorak  <dvorakz@suse.cz>
12664
12665         * tree-ssa-loop-im.c (determine_invariantness_stmt): Attempt to
12666         transform only GIMPLE_MODIFY_STMTs.
12667         * tree-complex.c (expand_complex_operations_1): Ditto.
12668         (expand_complex_div_wide): Do not create gotos in COND_EXPR branches.
12669         * tree-ssa-loop-manip.c (build_if_stmt): Removed.
12670         (tree_transform_and_unroll_loop): Do not create gotos in COND_EXPR
12671         branches.
12672         * value-prof.c (tree_divmod_fixed_value, tree_mod_pow2,
12673         tree_mod_subtract, tree_ic, tree_stringop_fixed_value): Ditto.
12674         * omp-low.c (expand_parallel_call, expand_omp_for_generic,
12675         expand_omp_for_static_chunk, expand_omp_for_static_nochunk): Ditto.
12676         * tree-vectorizer.c (slpeel_make_loop_iterate_ntimes,
12677         slpeel_add_loop_guard): Ditto.
12678         * tree-mudflap.c (mf_build_check_statement_for): Ditto.
12679         * lambda-code.c (perfect_nestify): Ditto.
12680         * tree-iterator.c (tsi_split_statement_list_before): Fix splitting
12681         before the first statement.
12682         * tree-optimize.c (execute_free_datastructures): Fix comments.
12683         (execute_free_cfg_annotations): Do not call disband_implicit_edges.
12684         * tree-flow.h (disband_implicit_edges): Declaration removed.
12685         * tree-cfg.c (make_cond_expr_edges): Remove gotos from COND_EXPR
12686         branches.
12687         (cleanup_dead_labels, tree_redirect_edge_and_branch): Handle
12688         COND_EXPRs without gotos.
12689         (disband_implicit_edges, has_label_p): Removed.
12690         (tree_verify_flow_info): Verify that COND_EXPR branches are empty.
12691         (tree_lv_add_condition_to_bb): Do not create gotos in COND_EXPR
12692         branches.
12693         * tree.c (build3_stat): Mark COND_EXPRs used as statements as having
12694         side effects.
12695         * tree-pretty-print.c (dump_implicit_edges): Dump implicit edges
12696         also for COND_EXPRs.
12697         * cfgexpand.c (label_rtx_for_bb): New function.
12698         (expand_gimple_cond_expr): Do not expect gotos in COND_EXPR branches.
12699         Use label_rtx_for_bb to find the labels.
12700         (expand_gimple_basic_block): Remove RETURN_EXPR at the end of the
12701         last block.  Detect fallthru edges.
12702
12703 2007-04-26  Ian Lance Taylor  <iant@google.com>
12704
12705         PR target/28675
12706         * reload.c (find_reloads_subreg_address): If the address was valid
12707         in the original mode but not in the new mode, reload the whole
12708         address.
12709
12710 2007-04-27  Zdenek Dvorak  <dvorakz@suse.cz>
12711
12712         * tree-cfgcleanup.c (cfgcleanup_altered_bbs): New global variable.
12713         (remove_fallthru_edge): Use remove_edge_and_dominated_blocks.
12714         (cleanup_control_expr_graph): Do not invalidate dominance info.
12715         Record altered blocks.
12716         (cleanup_control_flow, cleanup_forwarder_blocks): Removed.
12717         (cleanup_control_flow_bb, split_bbs_on_noreturn_calls,
12718         cleanup_tree_cfg_bb): New functions.
12719         (remove_forwarder_block): Do not maintain the worklist of blocks.
12720         Record altered blocks.
12721         (cleanup_tree_cfg_1): Iterate over cfgcleanup_altered_bbs,
12722         not over whole cfg.
12723         (cleanup_tree_cfg): Do not iterate cleanup_tree_cfg_1.  Only call
12724         delete_unreachable_blocks if dominators are not available.
12725         * tree-inline.c (optimize_inline_calls): Free dominance information
12726         earlier.
12727         * tree-flow.h (remove_edge_and_dominated_blocks,
12728         cfgcleanup_altered_bbs): Altered.
12729         * tree-cfg.c (replace_uses_by, tree_merge_blocks): Record altered
12730         blocks.
12731         (get_all_dominated_blocks, remove_edge_and_dominated_blocks): New
12732         functions.
12733         (tree_purge_dead_eh_edges): Use remove_edge_and_dominated_blocks,
12734         do not invalidate dominators.
12735
12736 2007-04-26  Anatoly Sokolov <aesok@post.ru>
12737
12738         * config/avr/avr.c (avr_mcu_types): Add support for ATmega8HVA and
12739         ATmega16HVA devices. Move AT90USB82 device to 'avr5' architecture.
12740         * config/avr/avr.h (LINK_SPEC, CRT_BINUTILS_SPECS): (Ditto.).
12741         * config/avr/t-avr (MULTILIB_MATCHES): (Ditto.).
12742
12743 2007-04-26  Steve Ellcey  <sje@cup.hp.com>
12744
12745         * config/ia64/ia64.md (ip_value):  Fix itanium_class attribute.
12746
12747 2007-04-26  Richard Guenther  <rguenther@suse.de>
12748
12749         PR tree-optimization/31703
12750         * tree-ssa-loop-im.c (rewrite_bittest): Make sure to use
12751         the right type for the target of the bittest.
12752
12753 2007-04-26  Richard Sandiford  <richard@codesourcery.com>
12754
12755         * config/i386/vx-common.h (RETURN_IN_MEMORY): Use
12756         ix86_sol10_return_in_memory.
12757
12758 2007-04-26  Richard Sandiford  <richard@codesourcery.com>
12759
12760         * config/i386/i386.c (ix86_sol10_return_in_memory): Remove unused
12761         variables.
12762
12763 2007-04-26  Jakub Jelinek  <jakub@redhat.com>
12764
12765         PR c++/31598
12766         * tree-inline.c (copy_body_r): Don't touch TREE_TYPE of OMP_CLAUSE.
12767
12768         PR tree-optimization/30558
12769         * tree-eh.c (lower_eh_filter): If EH_FILTER_MUST_NOT_THROW
12770         clear this_state.prev_try.
12771
12772 2007-04-26  Richard Sandiford  <richard@codesourcery.com>
12773             Mark Mitchell  <mark@codesourcery.com>
12774
12775         * config/i386/i386-protos.h (ix86_sol10_return_in_memory): Declare.
12776         * config/i386/i386.c (ix86_sol10_return_in_memory): New function.
12777         * config/i386/sol2-10.h (RETURN_IN_MEMORY): Use it.
12778
12779 2007-04-26  Richard Sandiford  <richard@codesourcery.com>
12780
12781         PR driver/31107
12782         * doc/invoke.texi (%:print-asm-header): Document.
12783         * gcc.c (asm_options): Use %:print-asm-header() for --target-help
12784         and -ftarget-help.
12785         (static_spec_functions): Add print-asm-header.
12786         (main): Print a banner before the --target-help linker options.
12787         (print_asm_header_spec_function): New function.
12788
12789 2007-04-25  Kaz Kojima  <kkojima@gcc.gnu.org>
12790
12791         PR target/31403
12792         * config/sh/sh.md (movsi_ie): Fix length for TARGET_SH2A.
12793         (movsf_ie): Likewise.
12794
12795 2007-04-25  Paolo Carlini  <pcarlini@suse.de>
12796
12797         * doc/extend.texi ([Type Traits]): Adjust per N2255.
12798
12799 2007-04-25  Bob Wilson  <bob.wilson@acm.org>
12800
12801         * config/xtensa/lib1funcs.asm (__udivsi3, __divsi3): Throw an
12802         exception for divide-by-zero.
12803         (__umodsi3, __modsi3): Likewise.
12804
12805 2007-04-25  Dirk Mueller  <dmueller@suse.de>
12806
12807         * c-typeck.c (build_compound_expr): Annotate warning()
12808         call with OPT_Wunused_value.
12809         * tree-ssa.c (warn_uninit): Annotate warning with
12810         OPT_Wunintialized.
12811         * c-common.c (handle_sentinel_attribute): Annotate warning
12812         call with OPT_Wattributes.
12813
12814 2007-04-25  Thiemo Seufer  <ths@mips.com>
12815
12816         * config/mips/mips.opt (mdmx, mmt, mno-mdmx): New options.
12817         (mips16): Fix typo.
12818         * config/mips/mips.h (ASM_SPEC): Pass -mmt/-mno-mt and -mdmx/-mno-mdmx
12819         on to the assembler.  Improve handling of -mno-mips16.  Add handling
12820         of -mno-mips3d, -mno-dsp, -mno-dspr2.
12821         * doc/invoke.texi (MIPS Options): Whitespace cleanup.  Fix wrong use
12822         of @itemx.  Document -mno-dsp, -mno-dspr2, -mno-paired-single, -mdmx,
12823         -mno-mdmx, -mno-mips3d, -mmt and -mno-mt.
12824
12825 2007-04-25  Danny Smith  <dannysmith.users.sourceforge.net>
12826
12827         PR target/31680
12828         * config/i386/winnt.c (i386_pe_file_end): Strip only
12829         USER_LABEL_PREFIX when writing export name.
12830
12831 2007-04-25  Richard Sandiford  <richard@codesourcery.com>
12832
12833         * config.gcc (sh-wrs-vxworks): Don't include dbxelf.h.  Include
12834         sh/elf.h, vx-common.h and vxworks.h.
12835         * config/sh/sh.h: Include config/vxworks-dummy.h.
12836         (SUBTARGET_OVERRIDE_OPTIONS): Define.
12837         (OVERRIDE_OPTIONS): Use it.
12838         * config/sh/sh.md (GOTaddr2picreg): Add suport for VxWorks RTPs.
12839         (vxworks_picreg): New pattern.
12840         * config/sh/vxworks.h (TARGET_OS_CPP_BUILTINS): Use
12841         VXWORKS_OS_CPP_BUILTINS.
12842         (LIB_SPEC, LINK_SPEC, STARTFILE_SPEC, ENDFILE_SPEC): Redefine
12843         to their VXWORKS_* equivalents.
12844         (SUBTARGET_OVERRIDE_OPTIONS, SUBTARGET_CPP_SPEC): Define.
12845         (SUBTARGET_LINK_EMUL_SUFFIX, FUNCTION_PROFILER): Define.
12846         * config/sh/lib1funcs.asm (NO_FPSCR_VALUES): Define for VxWorks PIC.
12847         (set_fpscr, ic_invalidate): Add VxWorks PIC sequences.
12848         * config/sh/t-vxworks (MULTILIB_OPTIONS): Add m4a, -mrtp and
12849         -mrtp/-fPIC multilibs.
12850         (MULTILIB_EXCEPTIONS): Generalize globs accordingly.
12851         (MULTILIB_MATCHES, EXTRA_MULTILIB_PARTS): Define.
12852         (MULTILIB_OSDIRNAMES): Delete.
12853
12854 2007-04-25  Anatoly Sokolov <aesok@post.ru>
12855
12856         PR target/18989
12857         * config/avr/avr.h (ASM_OUTPUT_ALIGN): Redefine.
12858
12859 2007-04-24  Brooks Moses  <brooks.moses@codesourcery.com>
12860
12861         * real.c (mpfr_from_real): Handle Inf and NaN, and allow the
12862         rounding mode to be specified by the caller.
12863         (real_to_mpfr) Likewise.
12864         * real.h: Update mpfr_from_real, mpfr_to_real prototypes to
12865         include new arguments.
12866         * builtins.c: Update mpfr_from_real, mpfr_to_real calls.
12867
12868 2007-04-24  Ian Lance Taylor  <iant@google.com>
12869
12870         PR tree-optimization/31605
12871         * tree-vrp.c (set_value_range): Check that min and max are not
12872         both overflow infinities.
12873         (set_value_range_to_value): New static function.
12874         (extract_range_from_binary_expr): Call set_value_range_to_value.
12875         (extract_range_from_cond_expr): Likewise.
12876         (extract_range_from_expr): Likewise.
12877         (extract_range_from_unary_expr): Likewise.  Don't create a range
12878         which overflows on both sides.
12879         (vrp_meet): Check for a useless range.
12880         (vrp_visit_phi_node): If we see a constant which looks like an
12881         overflow infinity, turn off the TREE_OVERFLOW flag.
12882
12883 2007-04-24  Ian Lance Taylor  <iant@google.com>
12884
12885         * flow.c (elim_reg_cond): Handle a comparison of a subreg.
12886
12887 2007-04-24  Simon Martin  <simartin@users.sourceforge.net>
12888
12889         PR diagnostic/25923
12890         * tree-pass.h (TDF_DIAGNOSTIC): New dump control to specify that a
12891         diagnostic message is being built.
12892         * tree-pretty-print.c (dump_generic_node): Only write the
12893         formatted text into BUFFER's stream if we are not building a
12894         diagnostic message.
12895         * toplev.c (default_tree_printer): Pass TDF_DIAGNOSTIC to
12896         dump_generic_node.
12897         * Makefile.in (toplev.o): Depend on tree-pass.h.
12898
12899 2007-04-24  Ian Lance Taylor  <iant@google.com>
12900
12901         PR tree-optimization/31602
12902         * tree-ssa-loop-ch.c (copy_loop_headers): Set TREE_NO_WARNING for
12903         conditionals in the copied loop header.
12904         * tree-cfg.c (fold_cond_expr_cond): Don't issue undefined overflow
12905         warnings if TREE_NO_WARNING is set.
12906         * doc/invoke.texi (Warning Options): Clarify that
12907         -Wstrict-overflow does not warn about loops.
12908
12909 2007-04-24  Janis Johnson  <janis187@us.ibm.com>
12910
12911         * config/rs6000/rs6000.c (function_arg_advance): For 32-bit ELF ABI,
12912         expand on the comment about _Decimal128 arguments and check the
12913         integer result of the modulus operation; for 64-bit ELF ABI, ensure
12914         that _Decimal128 argument uses even/odd register pair.
12915         (function_arg): Ditto.
12916
12917 2007-04-24  Hui-May Chang <hm.chang@apple.com>
12918
12919         * reload1.c (merge_assigned_reloads) : Do not merge a RELOAD_OTHER
12920         instruction with a RELOAD_FOR_OPERAND_ADDRESS instruction.
12921
12922 2007-04-24  Richard Guenther  <rguenther@suse.de>
12923             Olga Golovanevsky  <olga@il.ibm.com>
12924
12925         * fold-const.c (multiple_of_p): Check for bottom
12926         to be zero.
12927
12928 2007-04-24  Richard Henderson  <rth@redhat.com>
12929
12930         * libgcc2.h (AVOID_FP_TYPE_CONVERSION): Rename from
12931         IS_IBM_EXTENDED.  Also define in terms of WIDEST_HARDWARE_FP_SIZE.
12932         * libgcc2.c (__floatdisf): Avoid double-word arithmetic when
12933         looking for non-zero bits shifted out.  Avoid a recursive call
12934         when constructing the scalar.
12935         (__floatundisf): Likewise.
12936
12937 2007-04-24  Nathan Froyd  <froydnj@codesourcery.com>
12938
12939         * dwarf2out.c (field_byte_offset): Move the existing logic
12940         under the control of PCC_BITFIELD_TYPE_MATTERS and just use
12941         the bit offset of the field if !PCC_BITFIELD_TYPE_MATTERS.
12942
12943 2007-04-24  Andreas Krebbel  <krebbel1@de.ibm.com>
12944
12945         PR target/31641
12946         * config/s390/s390.c (s390_expand_setmem): Don't ICE for constant
12947         length argument of 0 for memset.
12948         (s390_expand_movmem, s390_expand_setmem, s390_expand_cmpmem): Use
12949         unsigned shift instead of the signed variant.
12950
12951 2007-04-24  Andreas Krebbel  <krebbel1@de.ibm.com>
12952
12953         * config/s390/s390.md ("*cmp<mode>_ccs_0_ibm", "*cmp<mode>_ccs_ibm",
12954         "fix_trunc<BFP:mode><GPR:mode>2_ieee", "fix_truncdfsi2_ibm",
12955         "floatsidf2_ibm", "floatsisf2", "truncdfsf2_ieee", "truncdfsf2_ibm",
12956         "*trunctfdf2_ieee", "*trunctfdf2_ibm", "*trunctfsf2_ieee",
12957         "*trunctfsf2_ibm", "extendsfdf2_ieee", "extendsfdf2_ibm",
12958         "*extenddftf2_ieee", "*extenddftf2_ibm", "*extendsftf2_ieee",
12959         "*extendsftf2_ibm", "*add<mode>3", "*add<mode>3_ibm", "*sub<mode>3_ibm",
12960         "*mul<mode>3", "*mul<mode>3_ibm", "*div<mode>3", "*div<mode>3_ibm",
12961         "*neg<mode>2_ibm", "*abs<mode>2_ibm"): Insn definitions removed.
12962         ("fix_trunc<BFP:mode><GPR:mode>2_bfp", "floatsi<mode>2",
12963         "truncdfsf2", "trunctf<mode>2", "add<mode>3", "sub<mode>3",
12964         "mul<mode>3", "div<mode>3"): Insn definitions added.
12965         ("fixuns_trunc<BFP:mode><GPR:mode>2", "fix_trunc<mode>di2",
12966         "fix_trunc<mode>si2"): gen_fix_trunc<BFP:mode><GPR:mode>2_ieee renamed
12967         to gen_fix_trunc<BFP:mode><GPR:mode>2_bfp.
12968         ("fix_truncdfsi2", "floatsitf2", "truncdfsf2", "trunctfdf2",
12969         "trunctfsf2", "extendsfdf2", "extenddftf2", "extendsftf2", "add<mode>3",
12970         "sub<mode>3", "mul<mode>3", "div<mode>3"): Expander removed.
12971         ("fix_trunc<mode>si2", "extend<DSF:mode><BFP:mode>2"): Expander added.
12972         * config/s390/s390.h (TARGET_IBM_FLOAT, TARGET_IEEE_FLOAT,
12973         TARGET_FLOAT_FORMAT): Macro definitions removed.
12974         (FP_REGNO_P): No special case for !TARGET_IEEE_FLOAT anymore.
12975         * config/s390/s390.c (struct processor_costs, z900_cost, z990_cost,
12976         z9_109_cost): Remove fields for hexfloat instructions: dxr, ddr and der.
12977         (s390_rtx_costs): Remove !TARGET_IEEE_FLOAT special branches.
12978         (s390_gen_rtx_const_DI): Function removed.
12979         * config/s390/s390-protos.h (s390_gen_rtx_const_DI): Prototype removed.
12980
12981 2007-04-24  Richard Sandiford  <richard@codesourcery.com>
12982
12983         * optabs.c (set_conv_libfunc): Prefer libgcc2's __ffsMM2 functions
12984         over an external ffs function.
12985
12986 2007-04-24  Chao-ying Fu  <fu@mips.com>
12987             Richard Sandiford  <richard@nildram.co.uk>
12988
12989         * doc/md.texi (madd@var{m}@var{n}4, umadd@var{m}@var{n}4): Document.
12990         * optabs.h (OTI_smadd_widen, OTI_umadd_widen): New optab_indexes.
12991         (smadd_widen_optab, umadd_widen_optab): Define.
12992         * optabs.c (init_optabs): Initialize smadd_widen_optab and
12993         umadd_widen_optab.
12994         * genopinit.c (optabs): Fill in smadd_widen_optab and
12995         umadd_widen_optab.
12996         * expr.c (expand_expr_real_1): Try to use smadd_widen_optab
12997         and umadd_widen_optab to implement multiply-add sequences.
12998         * config/mips/mips.md (*<su>mul_acc_di): Rename to...
12999         (<u>maddsidi4): ...this.  Extend condition to include
13000         GENERATE_MADD_MSUB and TARGET_DSPR2.  Change the constraint
13001         of operand 0 to "ka" and use the three-operand form of madd<u>
13002         for TARGET_DSPR2.
13003         * config/mips/mips-dspr2.md (mips_madd, mips_maddu): Convert
13004         to define_expands.
13005         * config/mips/constraints.md (ka): New register constraint.
13006
13007 2007-04-24  Jan Hubicka  <j@suse.cz>
13008
13009         Revert:
13010
13011         2007-04-23  Jan Hubicka  <jh@suse.cz>
13012         * function.c (init_function_start): Don't init line number info.
13013         (expand_function_end): Update.
13014         (reset_block_changes, record_block_change, finalize_block_changes,
13015         check_block_change, free_block_changes): Kill.
13016         * function.h (reset_block_changes, record_block_change,
13017         finalize_block_changes, check_block_change, free_block_changes):
13018         Remove prototypes.
13019         (struct function): Remove ib_boundaries_block.
13020         * emit-rtl.c (make_insn_raw, make_jump_insn_raw, make_call_insn_raw):
13021         Use curr_insn_locator to initialize locator.
13022         (emit_line_note): Remove.
13023         * cfgexpand.c (expand_gimple_cond_expr): Update.
13024         (construct_exit_block): Likewise.
13025         (tree_expand_cfg): Initialize/finalize locators.
13026         * expr.c (expand_expr_real): Update.
13027         * cfglayout.c (line_locators_locs, line_locators_lines,
13028         file_locators_locs, file_locators_files): Remove.
13029         (set_block_levels): Move to cfgexpand.c.
13030         (insn_locators_initialize): Remove.
13031         (pass_insn_locators_initialize): Remove.
13032         (locations_locators_locs, locations_locators_vals): New static vars.
13033         (curr_location, last_location, curr_block, last_block, curr_rtl_loc):
13034         Likewise.
13035         (insn_locators_alloc, insn_locators_finalize,
13036         set_curr_insn_source_location, set_curr_insn_block, curr_insn_locator):
13037         New functions.
13038         (locator_location): New.
13039         (locator_line, locator_file): Rewrite.
13040         * rtl.h (emit_line_note): Kill.
13041         (insn_locators_alloc, insn_locators_finalize,
13042         set_curr_insn_source_location, set_curr_insn_block, curr_insn_locator):
13043         Declare.
13044         * tree-inline.c (initialize_cfun): Do not initialize
13045         ib_boundaries_block.
13046         * passes.c (pass_insn_locators_initialize): Remove.
13047
13048 2007-04-24  Daniel Franke  <franke.daniel@gmail.com>
13049
13050         * doc/invoke.texi: Removed leading '-' from option index entries.
13051
13052 2007-04-23  Zdenek Dvorak  <dvorakz@suse.cz>
13053
13054         * tree-phinodes.c (reserve_phi_args_for_new_edge, remove_phi_node):
13055         Use phi_nodes_ptr.
13056         (create_phi_node): Use set_phi_nodes.
13057         * omp-low.c (expand_omp_parallel): Use bb_stmt_list.
13058         * tree-if-conv.c (process_phi_nodes): Use set_phi_nodes.
13059         (combine_blocks):  Use bb_stmt_list and set_bb_stmt_list.
13060         * tree-flow-inline.h (phi_nodes, set_phi_nodes,
13061         (bsi_start, bsi_last): Use bb_stmt_list.
13062         (phi_nodes_ptr, bb_stmt_list, set_bb_stmt_list): New functions.
13063         * cfgexpand.c (expand_gimple_basic_block): Use bb_stmt_list.
13064         Traverse the statements using tsi iterator.
13065         * basic-block.h (struct basic_block_def): Fields stmt_list
13066         and phi_nodes moved to ...
13067         (struct tree_bb_info): ... new structure.
13068         * tree-cfg.c (create_bb): Allocate il.tree.  Use set_bb_stmt_list.
13069         (tree_merge_blocks): Use bb_stmt_list and set_bb_stmt_list.
13070         (remove_bb): Handle blocks with NULL stmt list.  Clear il.tree field.
13071         (tree_verify_flow_info): Verify that il.tree is not set for
13072         entry and exit block.
13073         (tree_split_block): Use set_bb_stmt_list.
13074
13075 2007-04-23  Mike Stump  <mrs@apple.com>
13076
13077         * config/i386/i386.c (ix86_tune_features
13078         [X86_TUNE_DEEP_BRANCH_PREDICTION]: Prefer call over thunks on
13079         nocona and core2.
13080
13081 2007-04-23  H.J. Lu  <hongjiu.lu@intel.com>
13082
13083         * config/i386/i386.md (prefix_extra): New attribute.
13084         (length): Add prefix_extra.
13085
13086         * onfig/i386/sse.md (sse2_movdqu): Set prefix_data16.
13087         (sse2_movntv2di): Likewise.
13088         (sse2_cvtps2dq): Likewise.
13089         (sse2_cvtpd2pi): Likewise.
13090         (sse2_cvttpd2pi): Likewise.
13091         (*sse2_cvtpd2ps): Likewise.
13092         (*add<mode>3): Likewise.
13093         (sse2_ssadd<mode>3): Likewise.
13094         (sse2_usadd<mode>3): Likewise.
13095         (*sub<mode>3): Likewise.
13096         (sse2_sssub<mode>3): Likewise.
13097         (sse2_ussub<mode>3): Likewise.
13098         (*mulv8hi3): Likewise.
13099         (*smulv8hi3_highpart): Likewise.
13100         (*umulv8hi3_highpart): Likewise.
13101         (sse2_umulv2siv2di3): Likewise.
13102         (sse2_pmaddwd): Likewise.
13103         (ashr<mode>3): Likewise.
13104         (lshr<mode>3): Likewise.
13105         (ashl<mode>3): Likewise.
13106         (sse2_ashlti3): Likewise.
13107         (sse2_lshrti3): Likewise.
13108         (*umaxv16qi3): Likewise.
13109         (*smaxv8hi3): Likewise.
13110         (*uminv16qi3): Likewise.
13111         (*sminv8hi3): Likewise.
13112         (sse2_eq<mode>3): Likewise.
13113         (sse2_gt<mode>3): Likewise.
13114         (*and<mode>3): Likewise.
13115         (sse2_nand<mode>3): Likewise.
13116         (*ior<mode>3): Likewise.
13117         (*xor<mode>3): Likewise.
13118         (sse2_packsswb): Likewise.
13119         (sse2_packssdw): Likewise.
13120         (sse2_packuswb): Likewise.
13121         (sse2_punpckhbw): Likewise.
13122         (sse2_punpcklbw): Likewise.
13123         (sse2_punpckhwd): Likewise.
13124         (sse2_punpcklwd): Likewise.
13125         (sse2_punpckhdq): Likewise.
13126         (sse2_punpckldq): Likewise.
13127         (sse2_punpckhqdq): Likewise.
13128         (sse2_punpcklqdq): Likewise.
13129         (*sse2_pinsrw): Likewise.
13130         (*sse2_pextrw): Likewise.
13131         (sse2_pshufd_1): Likewise.
13132         (sse2_uavgv16qi3): Likewise.
13133         (sse2_uavgv8hi3): Likewise.
13134         (sse2_psadbw): Likewise.
13135         (sse2_pmovmskb): Likewise.
13136         (*sse2_maskmovdqu): Likewise.
13137         (*sse2_maskmovdqu_rex64): Likewise.
13138         (sse4a_extrqi): Likewise.
13139         (sse4a_extrq): Likewise.
13140         (sse3_lddqu): Set prefix_rep.
13141         (sse3_addsubv4sf3): Likewise.
13142         (sse3_haddv4sf3): Likewise.
13143         (sse3_hsubv4sf3): Likewise.
13144         (sse_cvtss2si): Likewise.
13145         (sse_cvtss2si_2): Likewise.
13146         (sse_cvtss2siq): Likewise.
13147         (sse_cvtss2siq_2): Likewise.
13148         (sse_cvttss2si): Likewise.
13149         (sse_cvttss2siq): Likewise.
13150         (sse2_cvttps2dq): Likewise.
13151         (sse3_movshdup): Likewise.
13152         (sse3_movsldup): Likewise.
13153         (sse2_cvtsd2si): Likewise.
13154         (sse2_cvtsd2si_2): Likewise.
13155         (sse2_cvtsd2siq): Likewise.
13156         (sse2_cvtsd2siq_2): Likewise.
13157         (sse2_cvttsd2si): Likewise.
13158         (sse2_cvttsd2siq): Likewise.
13159         (*sse2_cvtpd2dq): Likewise.
13160         (*sse2_cvttpd2dq): Likewise.
13161         (sse2_pshuflw_1): Likewise.
13162         (sse2_pshufhw_1): Likewise.
13163         (sse4a_insertqi): Likewise.
13164         (sse4a_insertq): Likewise.
13165         (ssse3_phaddwv8hi3): Set prefix_data16 and prefix_extra.
13166         (ssse3_phadddv4si3): Likewise.
13167         (ssse3_phaddswv8hi3): Likewise.
13168         (ssse3_phsubwv8hi3): Likewise.
13169         (ssse3_phsubdv4si3): Likewise.
13170         (ssse3_phsubswv8hi3): Likewise.
13171         (ssse3_pmaddubswv8hi3): Likewise.
13172         (ssse3_pmulhrswv8hi3): Likewise.
13173         (ssse3_pshufbv16qi3): Likewise.
13174         (ssse3_psign<mode>3): Likewise.
13175         (ssse3_palignrti): Likewise.
13176         (abs<mode>2): Likewise.
13177         (ssse3_phaddwv4hi3): Set prefix_extra.
13178         (ssse3_phadddv2si3): Likewise.
13179         (ssse3_phaddswv4hi3): Likewise.
13180         (ssse3_phsubwv4hi3): Likewise.
13181         (ssse3_phsubdv2si3): Likewise.
13182         (ssse3_phsubswv4hi3): Likewise.
13183         (ssse3_pmaddubswv4hi3): Likewise.
13184         (ssse3_pmulhrswv4hi3): Likewise.
13185         (ssse3_pshufbv8qi3): Likewise.
13186         (ssse3_psign<mode>3): Likewise.
13187         (ssse3_palignrdi): Likewise.
13188         (abs<mode>2): Likewise.
13189         (sse2_cvtdq2ps): Set mode to V4SF instead of V2DF.
13190         (*vec_dupv2df): Set mode to V2DF instead of V4SF.
13191         (sse2_pmovmskb): Set mode to SI instead of V2DF.
13192
13193 2007-04-23  Nick Clifton  <nickc@redhat.com>
13194
13195         * params.def: Fix formatting of emacs local variables.
13196
13197 2007-04-23  H.J. Lu  <hongjiu.lu@intel.com>
13198
13199         * config/i386/sse.md (sse2_stored): Don't split to inter-unit
13200         move if inter-unit move isn't allowed.
13201         Don't split moving the first element of V2DI to DI to inter-unit
13202         move if inter-unit move isn't allowed.
13203
13204 2007-04-23  Richard Guenther  <rguenther@suse.de>
13205
13206         * tree-ssa-sink.c (execute_sink_code): Calculate CDI_DOMINATORS
13207         and CDI_POST_DOMINATORS separately.
13208
13209 2007-04-23  Nick Clifton  <nickc@redhat.com>
13210
13211         * c.opt (Wformat-contains-nul): Add warning attribute.
13212
13213 2007-04-23  Jan Hubicka  <jh@suse.cz>
13214
13215         * function.c (init_function_start): Don't init line number info.
13216         (expand_function_end): Update.
13217         (reset_block_changes, record_block_change, finalize_block_changes,
13218         check_block_change, free_block_changes): Kill.
13219         * function.h (reset_block_changes, record_block_change,
13220         finalize_block_changes, check_block_change, free_block_changes):
13221         Remove prototypes.
13222         (struct function): Remove ib_boundaries_block.
13223         * emit-rtl.c (make_insn_raw, make_jump_insn_raw, make_call_insn_raw):
13224         Use curr_insn_locator to initialize locator.
13225         (emit_line_note): Remove.
13226         * cfgexpand.c (expand_gimple_cond_expr): Update.
13227         (construct_exit_block): Likewise.
13228         (tree_expand_cfg): Initialize/finalize locators.
13229         * expr.c (expand_expr_real): Update.
13230         * cfglayout.c (line_locators_locs, line_locators_lines,
13231         file_locators_locs, file_locators_files): Remove.
13232         (set_block_levels): Move to cfgexpand.c.
13233         (insn_locators_initialize): Remove.
13234         (pass_insn_locators_initialize): Remove.
13235         (locations_locators_locs, locations_locators_vals): New static vars.
13236         (curr_location, last_location, curr_block, last_block, curr_rtl_loc):
13237         Likewise.
13238         (insn_locators_alloc, insn_locators_finalize,
13239         set_curr_insn_source_location, set_curr_insn_block, curr_insn_locator):
13240         New functions.
13241         (locator_location): New.
13242         (locator_line, locator_file): Rewrite.
13243         * rtl.h (emit_line_note): Kill.
13244         (insn_locators_alloc, insn_locators_finalize,
13245         set_curr_insn_source_location, set_curr_insn_block, curr_insn_locator):
13246         Declare.
13247         * tree-inline.c (initialize_cfun): Do not initialize
13248         ib_boundaries_block.
13249         * passes.c (pass_insn_locators_initialize): Remove.
13250
13251 2007-04-22  Andrew Pinski  <andrew_pinski@playstation.sony.com>
13252
13253         PR middle-end/31448
13254         * expr.c (reduce_to_bit_field_precision): Handle
13255         CONST_INT rtx's.
13256
13257 2007-04-22  Uros Bizjak  <ubizjak@gmail.com>
13258
13259         PR tree-optimization/24659
13260         * optabs.h (enum optab_index) [OTI_vec_unpacks_hi,
13261         OTI_vec_unpacks_lo]: Update comment to mention floating point operands.
13262         (vec_pack_trunc_optab): Rename from vec_pack_mod_optab.
13263         * genopinit.c (optabs): Rename vec_pack_mod_optab
13264         to vec_pack_trunc_optab.
13265         * tree-vect-transform.c (vectorizable_type_demotion): Do not fail
13266         early for scalar floating point operands for NOP_EXPR.
13267         (vectorizable_type_promotion): Ditto.
13268         * optabs.c (optab_for_tree_code) [VEC_PACK_TRUNC_EXPR]: Return
13269         vec_pack_trunc_optab.
13270         (expand_binop): Rename vec_float_trunc_optab to vec_pack_mod_optab.
13271
13272         * tree.def (VEC_PACK_TRUNC_EXPR): Rename from VEC_PACK_MOD_EXPR.
13273         * tree-pretty-print.c (dump_generic_node) [VEC_PACK_TRUNC_EXPR]:
13274         Rename from VEC_PACK_MOD_EXPR.
13275         (op_prio) [VEC_PACK_TRUNC_EXPR]: Ditto.
13276         * expr.c (expand_expr_real_1): Ditto.
13277         * tree-inline.c (estimate_num_insns_1): Ditto.
13278         * tree-vect-generic.c (expand_vector_operations_1): Ditto.
13279
13280         * config/i386/sse.md (vec_unpacks_hi_v4sf): New expander.
13281         (vec_unpacks_lo_v4sf): Ditto.
13282         (vec_pack_trunc_v2df): Ditto.
13283         (vec_pack_trunc_v8hi): Rename from vec_pack_mod_v8hi.
13284         (vec_pack_trunc_v4si): Rename from vec_pack_mod_v4si.
13285         (vec_pack_trunc_v2di): Rename from vec_pack_mod_v2di.
13286
13287         * config/rs6000/altivec.md (vec_pack_trunc_v8hi): Rename from
13288         vec_pack_mod_v8hi.
13289         (vec_pack_trunc_v4si): Rename from vec_pack_mod_v4si.
13290
13291         * doc/c-tree.texi (Expression trees) [VEC_PACK_TRUNC_EXPR]:
13292         Rename from VEC_PACK_MOD_EXPR.  This expression also represent
13293         packing of floating point operands.
13294         [VEC_UNPACK_HI_EXPR, VEC_UNPACK_LO_EXPR]: These expression also
13295         represent unpacking of floating point operands.
13296         * doc/md.texi (Standard Names) [vec_pack_trunc]: Update documentation.
13297         [vec_unpacks_hi]: Ditto.
13298         [vec_unpacks_lo]: Ditto.
13299
13300 2007-04-22  Jan Hubicka  <jh@suse.cz>
13301
13302         * final.c (rest_of_handle_final): Call
13303         targetm.asm_out.constructor/targetm.asm_out.destructor
13304         * cgraphunit.c (cgraph_build_static_cdtor): Don't do it here; set
13305         proper priority via decl_*_priority_insert.
13306         * c-common.c (c_expand_body): Likewise.
13307
13308 2007-04-22  Richard Guenther  <rguenther@suse.de>
13309
13310         PR tree-optimization/29789
13311         * tree-ssa-loop-im.c (stmt_cost): Adjust cost of shifts.
13312         (rewrite_reciprocal): New helper split out from
13313         determine_invariantness_stmt.
13314         (rewrite_bittest): Likewise.
13315         (determine_invariantness_stmt): Rewrite (A >> B) & 1 to
13316         A & (1 << B) if (1 << B) is loop invariant but (A >> B)
13317         is not.
13318
13319 2007-04-22  Revital Eres  <eres@il.ibm.com>
13320
13321         * loop-unroll.c (var_to_expand): New field to support also
13322         insns of the form x = something + x.
13323         (analyze_insn_to_expand_var): Use it.
13324         (expand_var_during_unrolling): Likewise.
13325
13326 2007-04-21  Zdenek Dvorak  <dvorakz@suse.cz>
13327
13328         * predict.c: Include pointer-set.h.
13329         (bb_predictions): New variable.
13330         (tree_predicted_by_p, tree_predict_edge,
13331         remove_predictions_associated_with_edge): Use bb_predictions map
13332         instead of bb->predictions.
13333         (clear_bb_predictions, assert_is_empty): New functions.
13334         (combine_predictions_for_bb): Use bb_predictions map.  Call
13335         clear_bb_predictions.
13336         (tree_estimate_probability): Create and free bb_predictions map.
13337         * Makefile.in (predict.o): Add pointer-set.h dependency.
13338         * basic-block.h (struct basic_block_def): Remove predictions
13339         field.
13340         * cfgrtl.c (rtl_verify_flow_info_1): Do not check bb->predictions.
13341
13342 2007-04-21  Kaz Kojima  <kkojima@gcc.gnu.org>
13343
13344         PR target/31480
13345         * config/sh/sh.md (length): Check if prev_nonnote_insn (insn)
13346         is null.
13347
13348 2007-04-21  Andrew Pinski  <andrew_pinski@playstation.sony.com>
13349
13350         * timevar.c (timevar_print): Change reference of --disable-checking to
13351         --enable-checking=release.  Also warn if assert checking is disabled.
13352
13353 2007-04-21  Andrew Pinski  <andrew_pinski@playstation.sony.com>
13354
13355         PR C/30265
13356         * c-gimplifier.c (gimplify_compound_literal_expr): Mark the
13357         decl as addressable if the compound literal was marked as
13358         addressable.
13359         Mark the decl as a gimple register if it is a complex or
13360         vector decl and does not live in memory.
13361
13362 2007-04-21  Andrew Pinski  <andrew_pinski@playstation.sony.com>
13363
13364         * tree.h (GIMPLE_TUPLE_P): Also true for PHI_NODEs.
13365         (GENERIC_NEXT): New function macro.
13366         (PHI_CHAIN): Use phi_node's new chain variable.
13367         (tree_phi_node): Change tree_common to tree_base
13368         and add the chain field.
13369         * tree-phinodes.c (make_phi_node): Don't set
13370         TREE_TYPE on the new node.
13371         * c-decl.c (lang_tree_node): Use GENERIC_NEXT
13372         instead of checking GIMPLE_TUPLE_P in chain_next.
13373         * tree-vect-transform.c
13374         (get_initial_def_for_induction): Look at
13375         PHI_RESULT_TREE for the type of the phi node.
13376         (update_vuses_to_preheader): Use PHI_CHAIN
13377         instead of TREE_CHAIN on the phi node.
13378         * tree-ssa-structalias.c (compute_points_to_sets):
13379         Likewise.
13380         (ipa_pta_execute): Likewise.
13381
13382 2007-04-21  Richard Guenther  <rguenther@suse.de>
13383
13384         PR middle-end/31136
13385         * fold-const.c (fold_unary): Call fold_convert_const on the
13386         original tree.
13387
13388 2007-04-21  Alexandre Oliva  <aoliva@redhat.com>
13389
13390         * gcse.c (store_killed_in_insn): Handle PARALLELs.
13391         (store_killed_in_pat): New.
13392
13393 2007-04-20  Richard Henderson  <rth@redhat.com>
13394
13395         PR target/31628
13396         * config/i386/i386.c (type_has_variadic_args_p): Look for any
13397         TREE_LIST with a void_type_node value, not void_list_node exactly.
13398
13399 2007-04-21  Douglas Gregor  <doug.gregor@gmail.com>
13400
13401         * doc/standards.texi: Re-arrange into language-specific
13402         subsections. Add a C++ section, documenting which standards we
13403         support.
13404
13405 2007-04-21  Zdenek Dvorak  <dvorakz@suse.cz>
13406
13407         * tree-ssa-structalias.c (delete_points_to_sets): Free graph->complex.
13408         * tree-ssa-operands.c (finalize_ssa_vuse_ops): Free new_ops.
13409
13410 2007-04-20  Daniel Jacobowitz  <dan@codesourcery.com>
13411
13412         * config/rs6000/sysv4.h (STARTFILE_DEFAULT_SPEC): Include
13413         ecrti.o and crtbegin.o.
13414         (LIB_DEFAULT_SPEC): Include -lc.
13415         (ENDFILE_DEFAULT_SPEC): Include crtend.o and ecrtn.o.
13416
13417 2007-04-20  Richard Henderson  <rth@redhat.com>
13418
13419         PR target/28623
13420         * config/alpha/alpha.c (get_unaligned_address): Remove extra_offset
13421         argument; update all callers.
13422         (get_unaligned_offset): New.
13423         * config/alpha/alpha.md (extendqidi2, extendhidi2): Don't use
13424         get_unaligned_address, just pass on the address directly.
13425         (unaligned_extendqidi): Use gen_lowpart instead of open-coding
13426         the subreg in the helper patterns.
13427         (unaligned_extendqidi_le): Use get_unaligned_offset.
13428         (unaligned_extendqidi_be, unaligned_extendhidi_le): Likewise.
13429         (unaligned_extendhidi_be): Likewise.
13430         (unaligned_extendhidi): Tidy.
13431         * config/alpha/alpha-protos.h: Update.
13432
13433 2007-04-20  Richard Henderson  <rth@redhat.com>
13434
13435         * config/alpha/alpha.h (CPP_SPEC, CPP_SUBTARGET_SPEC): Remove.
13436         (EXTRA_SPECS, SUBTARGET_EXTRA_SPECS): Remove.
13437         * config/alpha/linux.h (CPP_SPEC): Undef before redefine.
13438         * config/alpha/linux-elf.h (EXTRA_SPECS): Rename SUBTARGET_EXTRA_SPECS.
13439         * config/alpha/freebsd.h (EXTRA_SPECS): Rename SUBTARGET_EXTRA_SPECS.
13440         (CPP_SPEC): Don't include %(cpp_subtarget).
13441         * config/alpha/netbsd.h (CPP_SPEC): Rename CPP_SUBTARGET_SPEC.
13442         (EXTRA_SPECS): Rename SUBTARGET_EXTRA_SPECS.
13443         * config/alpha/osf.h (CPP_SPEC, EXTRA_SPECS): Similarly.
13444
13445 2007-04-20  Jakub Jelinek  <jakub@redhat.com>
13446
13447         * config/i386/i386.c (bdesc_2arg): Use ORDERED rather than UNORDERED
13448         for __builtin_ia32_cmpordss.
13449
13450         PR tree-optimization/31632
13451         * fold-const.c (fold_binary): Use op0 and op1 instead of arg0
13452         and arg1 for optimizations of comparison against min/max values.
13453         Fold arg0 to arg1's type for optimizations of comparison against
13454         min+1 and max-1 values.
13455
13456 2007-04-19  Bernd Schmidt  <bernd.schmidt@analog.com>
13457
13458         * reload.c (combine_reloads): When trying to use a dying register,
13459         check whether it's uninitialized and don't use if so.
13460
13461 2007-04-19  Brooks Moses  <brooks.moses@codesourcery.com>
13462
13463         * fold-const.c: Remove prototypes for native_encode_expr and
13464         native_interpret_expr.
13465         (native_encode_expr): Make non-static.
13466         (native_interpret_expr): Likewise.
13467         * tree.h: Add prototypes for the above.
13468
13469 2007-04-19  Joseph Myers  <joseph@codesourcery.com>
13470
13471         * config/rs6000/spe.md (*frob_tf_ti, *frob_ti_tf, *frob_ti_tf_2,
13472         *mov_si<mode>_e500_subreg0, *mov_si<mode>_e500_subreg0_2,
13473         *mov_sitf_e500_subreg8, *mov_sitf_e500_subreg8_2, spe_extenddftf2,
13474         spe_fix_trunctfsi2_internal, spe_negtf2_internal, cmptfeq_gpr,
13475         tsttfeq_gpr, cmptfgt_gpr, tsttfgt_gpr, cmptflt_gpr, tsttflt_gpr):
13476         Add length attributes.
13477
13478 2007-04-19  Janis Johnson  <janis187@us.ibm.com>
13479
13480         * ginclude/float.h: Check that __STDC_WANT_DEC_FP__ is defined,
13481         not that it is 1.
13482
13483         * c-cppbuiltin.c (c_cpp_builtins): Remove definition of
13484         __STDC_WANT_DEC_FP__.
13485
13486 2007-04-19  Joseph Myers  <joseph@codesourcery.com>
13487
13488         * configure.ac: Allow both powerpc*-*-linux* and powerpc*-*-gnu*
13489         for long double compatibility.
13490         * configure: Regenerate.
13491
13492 2007-04-19  Eric Botcazou  <ebotcazou@libertysurf.fr>
13493
13494         PR rtl-optimization/29841
13495         * cfgbuild.c (control_flow_insn_p): Return TRUE for unconditional
13496         trap instructions.
13497         * sched-deps.c (sched_analyze_insn): Prevent all non-jump instructions
13498         that may cause control flow transfer from being moved.
13499
13500 2007-04-18  Jan Hubicka  <jh@suse.cz>
13501
13502         * fold-const.c (div_if_zero_remainder): Do signed divide for pointer
13503         types.
13504
13505 2007-04-18  Eric Christopher  <echristo@apple.com>
13506
13507         * config/rs6000/darwin.md (load_macho_picbase): Use link register
13508         only. Update operands.
13509         * config/rs6000/rs6000.c (rs6000_emit_prologue): Update caller.
13510         * config/rs6000/rs6000.md (builtin_setjmp_receiver): Ditto. Move from
13511         link register to pic register.
13512
13513 2007-04-18  Dirk Mueller  <dmueller@suse.de>
13514
13515         PR diagnostic/31227
13516         * tree-vrp.c (search_for_addr_array): New.
13517         (check_array_bounds): Suppress warning about
13518         address taken of array refs if its not de-referenced.
13519
13520 2007-04-18  Dorit Nuzman  <dorit@il.ibm.com>
13521
13522         * tree-vectorizer.c (destroy_loop_vec_info): Set loop->aux to NULL.
13523         * tree-vect-analyze.c (vect_analyze_loop_form): Set loop->aux.
13524
13525         * tree-vectorizer.h (NITERS_KNOWN_P): New.
13526         * tree-vect-analyze.c (vect_analyze_loop_form): Call NITERS_KNOWN_P
13527         instead of LOOP_VINFO_INT_NITERS to avoid having to geneate loop_info.
13528
13529         * tree-vect-analyze.c (vect_determine_vectorization_factor): Add
13530         dump print.
13531         (vect_analyze_operations): Fix indenetation.  Fix a comment.  Fix a
13532         print message.
13533         (vect_analyze_scalar_cycles): Fix indentation.
13534         (vect_enhance_data_refs_alignment): Fix check in case of peeling.
13535         (vect_mark_relevant): Include phis in relevance analysis.
13536
13537         * tree-vect-transform.c (vect_transform_loop): Add an assert.
13538
13539 2007-04-18  Anatoly Sokolov <aesok@post.ru>
13540
13541         * config/avr/avr.c (ptrreg_to_str): Replace error() with
13542         output_operand_lossage().
13543
13544 2007-04-18  Dorit Nuzman  <dorit@il.ibm.com>
13545
13546         * tree-vect-transform.c (get_initial_def_for_reduction): Clean away
13547         the unused code for reduction without adjust-in-epilog to simplify the
13548         function.
13549
13550 2007-04-18  Wolfgang Gellerich  <gellerich@de.ibm.com>
13551
13552         * config/s390/s390.h (S390_TDC_POSITIVE_ZERO): New constant.
13553         (S390_TDC_NEGATIVE_ZERO): New constant.
13554         (S390_TDC_POSITIVE_NORMALIZED_NUMBER): New constant.
13555         (S390_TDC_NEGATIVE_NORMALIZED_NUMBER): New constant.
13556         (S390_TDC_POSITIVE_DENORMALIZED_NUMBER): New constant.
13557         (S390_TDC_NEGATIVE_DENORMALIZED_NUMBER): New constant.
13558         (S390_TDC_POSITIVE_INFINITY): New constant.
13559         (S390_TDC_NEGATIVE_INFINITY): New constant.
13560         (S390_TDC_POSITIVE_QUIET_NAN): New constant.
13561         (S390_TDC_NEGATIVE_QUIET_NAN): New constant.
13562         (S390_TDC_POSITIVE_SIGNALING_NAN): New constant.
13563         (S390_TDC_NEGATIVE_SIGNALING_NAN): New constant.
13564         (S390_TDC_INFINITY): New constant.
13565         * config/s390/s390.c (s390_canonicalize_comparison): Renamed
13566         UNSPEC_CMPINT to UNSPEC_CCU_TO_INT, added a UNSPEC_CCU_TO_INT-like
13567         optimization for UNSPEC_CCZ_TO_INT.
13568         * config/s390/s390.md ("*TDC_insn_<mode>"): New insn.
13569         ("*ccz_to_int"): New insn.
13570         ("isinf<mode>2"): New insn.
13571         (UNSPEC_CMPINT): Renamed to UNSPEC_CCU_TO_INT.
13572         (UNSPEC_CCU_TO_INT): New constant, replaces UNSPEC_CMPINT.
13573         (UNSPEC_CCZ_TO_INT): New constant.
13574
13575 2007-04-18  Richard Guenther  <rguenther@suse.de>
13576
13577         PR tree-optimization/19431
13578         PR tree-optimization/21463
13579         * tree-pass.h (pass_phiprop): Declare.
13580         * passes.c (init_optimization_passes): New phiprop pass.
13581         * tree-ssa-forwprop.c (struct phiprop_d): New structure.
13582         (phivn_valid_p): New helper function.
13583         (phiprop_insert_phi): Likewise.
13584         (propagate_with_phi): Likewise.
13585         (tree_ssa_phiprop): New propagator propagating loads
13586         through phi nodes if profitable.
13587
13588 2007-04-18  Dorit Nuzman  <dorit@il.ibm.com>
13589
13590         * tree-vect-analyze.c (process_use): New function.
13591         (vect_mark_stmts_to_be_vectorized): Factor out code to process_use.
13592         Check phis in all bbs.
13593         * tree-vectorizer.c (vect_is_simple_use): Remove a no longer relavant
13594         assert.
13595
13596 2007-04-18  Bernd Schmidt  <bernd.schmidt@analog.com>
13597
13598         * reload1.c (eliminte_regs_in_insn): Use REG_EQUIV notes the same way
13599         we use REG_EQUAL.
13600
13601 2007-04-17  Anatoly Sokolov <aesok@post.ru>
13602
13603         PR target/30483
13604         * config/avr/avr.c (ptrreg_to_str): Replace gcc_unreachable() with
13605         error().
13606
13607 2007-04-17  H.J. Lu  <hongjiu.lu@intel.com>
13608
13609         * config/i386/sse.md (sse_vmaddv4sf3): Use register_operand
13610         on "0".
13611         (sse_vmmulv4sf3): Likewise.
13612         (sse2_vmaddv2df3): Likewise.
13613         (sse2_vmmulv2df3): Likewise.
13614
13615 2007-04-17  Zdenek Dvorak  <dvorakz@suse.cz>
13616
13617         PR rtl-optimization/31360
13618         * cfgloopanal.c (target_small_cost, target_pres_cost): Removed.
13619         (target_reg_cost): New.
13620         (init_set_costs): Initialize target_reg_cost.  Add comments
13621         regarding the rationale of the costs.
13622         (global_cost_for_size): Renamed to...
13623         (estimate_reg_pressure_cost): ... and simplify.  Decrease importance
13624         of register pressure.
13625         * tree-ssa-loop-ivopts.c (ivopts_global_cost_for_size): Use
13626         estimate_reg_pressure_cost.  Add number of ivs.
13627         (determine_set_costs): Dump target_reg_cost.
13628         * loop-invariant.c (gain_for_invariant):  Use
13629         estimate_reg_pressure_cost.  Removed n_inv_uses argument.
13630         (best_gain_for_invariant, find_invariants_to_move): Remove
13631         n_inv_uses.
13632         * cfgloop.h (target_small_cost, target_pres_cost): Removed.
13633         (target_reg_cost): Declare.
13634         (global_cost_for_size): Declaration removed.
13635         (estimate_reg_pressure_cost): Declare.
13636
13637 2007-04-17  Peter Bergner  <bergner@vnet.ibm.com>
13638
13639         * config/rs6000/rs6000.c (rs6000_hard_regno_mode_ok): Force TDmode
13640         regnos into even/odd register pairs.
13641         * config/rs6000/rs6000.h [SLOW_UNALIGNED_ACCESS]: Treat DDmode and
13642         TDmode similar to the other floating point modes.
13643         [SECONDARY_MEMORY_NEEDED]: Treat DDmode similar to DFmode.
13644         * config/rs6000/dfp.md (negdd2, absdd2, negtd2, abstd2): New
13645         define_expand's.
13646         (negdd2_fpr, absdd2_fpr, nabsdd2_fpr, negtd2_fpr, abstd2_fpr,
13647         nabstd2_fpr, movdd_hardfloat64_mfpgpr): New define_insn's.
13648         (movdd_hardfloat64): Use TARGET_MFPGPR.
13649
13650 2007-04-17  Bernd Schmidt  <bernd.schmidt@analog.com>
13651
13652         * reload1.c (delete_output_reload): Don't count output in n_inherited.
13653
13654         Revert
13655         2005-01-05  Richard Henderson  <rth@redhat.com>
13656         PR rtl-opt/10692
13657         * reload1.c (do_input_reload): Restrict the optimization deleteing
13658         a previous output reload to RELOAD_FOR_INPUT.
13659
13660 2007-04-17  Dorit Nuzman  <dorit@il.ibm.com>
13661
13662         * tree-vectorizer.h (stmt_vec_info_type): Add enum value
13663         induc_vec_info_type.
13664         (vectorizable_induction): New function declaration.
13665         * tree-vect-transform.c (get_initial_def_for_induction): No need to
13666         check if already vectorized.  Find first place in BB where new stmts
13667         can be inserted.  Takes only one argument.
13668         (vectorizable_induction): New function.
13669         (vect_transform_stmt): Add case for induc_vec_info_type to call
13670         vectorizable_induction.
13671         (vect_transform_loop): Consider phis for vectorization.
13672         * tree-vect-analyze.c (vect_determine_vectorization_factor): Simplify
13673         condition.
13674         (analyze_operations): Call vectorizable_induction when analyzing phis.
13675         Fix comment.
13676         (vect_mark_stmts_to_be_vectorized): Remove redundant checks.
13677         (vect_mark_relevant): Include phis in relevance analysis.
13678         (vect_mark_stmts_to_be_vectorize): Likewise.
13679         * tree-vect-patterns.c (widened_name_p): Remove obsolete asserts.
13680
13681 2007-04-16  Lawrence Crowl  <crowl@google.com>
13682
13683         * doc/invoke.texi (Debugging Options): Add documentation for the
13684         -femit-struct-debug options -femit-struct-debug-baseonly,
13685         -femit-struct-debug-reduced, and
13686         -femit-struct-debug-detailed[=...].
13687
13688         * c-opts.c (c_common_handle_option): Add
13689         OPT_femit_struct_debug_baseonly, OPT_femit_struct_debug_reduced,
13690         and OPT_femit_struct_debug_detailed_.
13691         * c.opt: Add specifications for
13692         -femit-struct-debug-baseonly, -femit-struct-debug-reduced,
13693         and -femit-struct-debug-detailed[=...].
13694         * opts.c (set_struct_debug_option): Parse the
13695         -femit-struct-debug-... options.
13696         * opts.c (matches_main_base, main_input_basename,
13697         main_input_baselength, base_of_path, matches_main_base): Add
13698         variables and functions to compare header base name to compilation
13699         unit base name.
13700         * opts.c (should_emit_struct_debug): Add to determine to emit a
13701         structure based on the option.
13702         (dump_struct_debug) Also disabled function to debug this
13703         function.
13704         * opts.c (handle_options): Save the base name of the
13705         compilation unit.
13706
13707         * langhooks-def.h (LANG_HOOKS_GENERIC_TYPE_P): Define.
13708         (LANG_HOOKS_FOR_TYPES_INITIALIZER): Add.
13709         This hook indicates if a type is generic.  Set it by default
13710         to "never generic".
13711         * langhooks.h (struct lang_hooks_for_types): Add a new hook
13712         to determine if a struct type is generic or not.
13713         * cp/cp-tree.h (class_tmpl_impl_spec_p): Declare a C++ hook.
13714         * cp/tree.c (class_tmpl_impl_spec_p): Implement the C++ hook.
13715         * cp/cp-lang.c (LANG_HOOKS_GENERIC_TYPE_P): Override null C hook
13716         with live C++ hook.
13717
13718         * flags.h (enum debug_info_usage): Add an enumeration to describe
13719         a program's use of a structure type.
13720         * dwarf2out.c (gen_struct_or_union_type_die): Add a new parameter
13721         to indicate the program's usage of the type.  Filter structs based
13722         on the -femit-struct-debug-... specification.
13723         (gen_type_die): Split into two routines, gen_type_die and
13724         gen_type_die_with_usage.  gen_type_die is now a wrapper
13725         that assumes direct usage.
13726         (gen_type_die_with_usage): Replace calls to gen_type_die
13727         with gen_type_die_with_usage adding the program usage of
13728         the referenced type.
13729         (dwarf2out_imported_module_or_decl): Suppress struct debug
13730         information using should_emit_struct_debug when appropriate.
13731
13732 2007-04-16  Ian Lance Taylor  <iant@google.com>
13733
13734         PR tree-optimization/31522
13735         * tree-vrp.c (vr_phi_edge_counts): New static variable.
13736         (vrp_initialize): Allocate vr_phi_edge_counts.
13737         (vrp_visit_phi_node): Don't push to infinity if we saw a new
13738         executable edge.  Drop test for all constants.
13739         (vrp_finalize): Free vrp_phi_edge_counts.
13740
13741         * doc/cpp.texi (Common Predefined Macros): Clarify description of
13742         __GNUC_GNU_INLINE__ and __GNUC_STDC_INLINE__.
13743
13744         * tree-ssa-propagate.c (cfg_blocks_add): Insert blocks with fewer
13745         predecessors at head rather than tail.
13746
13747 2007-04-16  Matthias Klose  <doko@debian.org>
13748
13749         * config/alpha/linux.h (CPP_SPEC): Define.
13750         * config/arm/linux-gas.h (SUBTARGET_CPP_SPEC): Extend.
13751
13752 2007-04-16  Aldy Hernandez  <aldyh@redhat.com>
13753
13754         * function.h: Remove sequence_stack extern declaration.
13755
13756 2007-04-16  Kazu Hirata  <kazu@codesourcery.com>
13757
13758         * config/m68k/m68k.h (LONG_DOUBLE_TYPE_SIZE): Change to 64 on
13759         TARGET_FIDOA.
13760         (LIBGCC2_LONG_DOUBLE_TYPE_SIZE): Change to 64 if __mfido__ is
13761         defined.
13762
13763 2007-04-16  Anatoly Sokolov <aesok@post.ru>
13764
13765         * config/avr/avr.c (avr_arch_types): Rearranging  array.
13766         (enum avr_arch): Add.
13767         (avr_mcu_types): Use avr_arch enumeration constants instead of
13768         numbers.
13769         * config/avr/avr.h (LINK_SPEC): Simplify.
13770
13771 2007-04-16  Kazu Hirata  <kazu@codesourcery.com>
13772
13773         * config/m68k/m68k.c (m68k_libcall_value,
13774         m68k_function_value): Use macros for register names more.
13775
13776         * config/m68k/m68k.h (FRAME_POINTER_REGNUM): Use A6_REG
13777         instead.
13778         (M68K_REGNAME): Use A6_REG.
13779         * config/m68k/m68k.md (FP_REG): Rename to A6_REG.
13780
13781 2007-04-16  Maxim Kuvyrkov  <mkuvyrkov@ispras.ru>
13782
13783         PR middle-end/28071
13784         * sched-int.h (struct deps): Split field 'pending_lists_length' into
13785         'pending_read_list_length' and 'pending_write_list_length'.  Update
13786         comment.
13787         * sched-deps.c (add_insn_mem_dependence): Change signature.  Update
13788         to handle two length counters instead of one.  Update all uses.
13789         (flush_pending_lists, sched_analyze_1, init_deps): Update to handle
13790         two length counters instead of one.
13791         * sched-rgn.c (propagate_deps): Update to handle two length counters
13792         instead of one.
13793
13794 2007-04-16  H.J. Lu  <hongjiu.lu@intel.com>
13795
13796         PR target/31582
13797         * config/i386/i386.c (ix86_expand_vec_set_builtin): Make a
13798         copy of source, pass it to ix86_expand_vector_set and return
13799         it as target.
13800
13801 2007-04-16  David Ung  <davidu@mips.com>
13802             Joseph Myers  <joseph@codesourcery.com>
13803
13804         * config/mips/mips.h (PROCESSOR_74KC, PROCESSOR_74KF,
13805         PROCESSOR_74KX, TUNE_74K, GENERATE_MADD_MSUB): Define.
13806         * config/mips/mips.c (mips_cpu_info_table, mips_rtx_cost_data):
13807         Add 74K processor information.
13808         * config/mips/mips.md: Include 74k.md.
13809         (cpu): Add 74kc,74kf,74kx.
13810         (ISA_HAS_MADD_MSUB): Change to GENERATE_MADD_MSUB throughout.
13811         * config/mips/74k.md: New.
13812         * doc/invoke.texi (MIPS Options): Document 74K support.
13813
13814 2007-04-16  Dorit Nuzman  <dorit@il.ibm.com>
13815
13816         * tree-vect-analyze.c (vect_analyze_operations): Reorganize calls to
13817         vectorizable_* functions.
13818         * tree-vect-transform.c (vectorizable_call): Add check for
13819         STMT_VINFO_RELEVANT_P, STMT_VINFO_DEF_TYPE and STMT_VINFO_LIVE_P.
13820         (vectorizable_store): likewise.
13821         (vectorizable_conversion): Add check for STMT_VINFO_DEF_TYPE.
13822         Add comments.
13823         (vectorizable_operation, vectorizable_type_demotion): Likewise.
13824         (vectorizable_type_promotion, vectorizable_load): Likewise.
13825         (vectorizable_live_operation, vectorizable_condition): Likewise.
13826         (vectorizable_assignment): Add check for STMT_VINFO_DEF_TYPE and
13827         STMT_VINFO_LIVE_P.
13828         (vect_transform_stmt): Reorganize calls to vectorizable_* functions.
13829
13830 2007-04-15  Kazu Hirata  <kazu@codesourcery.com>
13831
13832         * config/m68k/linux.h (FUNCTION_VALUE_REGNO_P): Use macros for
13833         register numbers more.
13834         * config/m68k/m68k.h (STACK_POINTER_REGNUM,
13835         FRAME_POINTER_REGNUM, STATIC_CHAIN_REGNUM,
13836         M68K_STRUCT_VALUE_REGNUM, FUNCTION_VALUE, LIBCALL_VALUE,
13837         FUNCTION_VALUE_REGNO_P): Likewise.
13838         * config/m68k/m68kelf.h (M68K_STRUCT_VALUE_REGNUM,
13839         STATIC_CHAIN_REGNUM): Likewise.
13840         * config/m68k/m68kemb.h (FUNCTION_VALUE_REGNO_P): Likewise.
13841         * config/m68k/netbsd-elf.h (M68K_STRUCT_VALUE_REGNUM,
13842         STATIC_CHAIN_REGNUM, FUNCTION_VALUE_REGNO_P): Likewise.
13843         * config/m68k/m68k.md (FP_REG): New.
13844
13845 2007-04-15  Kazu Hirata  <kazu@codesourcery.com>
13846
13847         * config/m68k/m68k.h (PREFERRED_STACK_BOUNDARY): Prefer 32-bit
13848         alignment on fido.
13849
13850 2007-04-15  Kazu Hirata  <kazu@codesourcery.com>
13851
13852         * config/i386/i386.c, config/s390/s390.c, config/s390/s390.md,
13853         tree-ssa-loop-niter.c, tree-ssa-structalias.c, tree-vrp.c: Fix
13854         comment typos.
13855
13856 2007-04-11  Zdenek Dvorak  <dvorakz@suse.cz>
13857
13858         * tree-ssa-loop-prefetch.c (loop_prefetch_arrays): Ignore
13859         cold loops.
13860
13861 2007-04-14  Andrew Pinski  <andrew_pinski@playstation.sony.com>
13862
13863         PR c/31520
13864         * c-decl.c (finish_decl): Grab the type of the decl after the call
13865         to store_init_value.
13866
13867 2007-04-14  Steven Bosscher  <steven@gcc.gnu.org>
13868
13869         * common.opt (fforward-propagate): Fix "Optimization" annotation.
13870
13871 2007-04-14  Jakub Jelinek  <jakub@redhat.com>
13872
13873         PR c++/25874
13874         * omp-low.c (expand_omp_parallel): If child_cfun->cfg, free
13875         dominators, post dominators and cleanup cfg before returning.
13876
13877 2007-04-14  Bernd Schmidt  <bernd.schmidt@analog.com>
13878
13879         * config/bfin/bfin.h (MODES_TIEABLE_P): Allow more modes to be tied.
13880         * config/bfin/bfin.md (movsi_insn): Delete two unused alternatives.
13881
13882 2007-04-14  Kazu Hirata  <kazu@codesourcery.com>
13883
13884         * config.gcc: Recognize fido.
13885         * config/m68k/m68k-devices.def (fidoa): New.
13886         * config/m68k/m68k.h (TARGET_CPU_CPP_BUILTINS): Define
13887         __mfido__.
13888         (FL_FIDOA, TARGET_FIDOA): New.
13889         * config/m68k/m68k.opt (mfidoa): New.
13890
13891 2007-04-13  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
13892
13893         PR middle-end/31322
13894         * dwarf2out.c (output_call_frame_info): Call assemble_external_libcall
13895         when a personality function is used.
13896
13897 2007-04-13  Bob Wilson  <bob.wilson@acm.org>
13898
13899         * config/xtensa/xtensa.c (xtensa_expand_builtin): Use CALL_EXPR_FN.
13900
13901 2007-04-13  Mike Stump  <mrs@apple.com>
13902
13903         * config/darwin-c.c (handle_c_option): Handle -fapple-kext here so
13904         we can...
13905         * config/darwin.opt (fapple-kext): Make C++ only.
13906         * config/darwin.c (darwin_override_options): Remove code to ensure
13907         -fapple-kext is given for C++ only.
13908
13909 2007-04-13  Richard Sandiford  <richard@codesourcery.com>
13910
13911         * config/mips/vxworks.h (SUBTARGET_OVERRIDE_OPTIONS): Define.
13912         * config/mips/mips.c (override_options): Call
13913         SUBTARGET_OVERRIDE_OPTIONS, if defined.
13914
13915 2007-04-13  H.J. Lu  <hongjiu.lu@intel.com>
13916
13917         * config/i386/i386.opt (msvr3-shlib): Removed.
13918
13919         * doc/invoke.texi: Remove -msvr3-shlib.
13920
13921 2007-04-13  H.J. Lu  <hongjiu.lu@intel.com>
13922
13923         * config/i386/i386.opt (mpopcnt): Replace "popcount" instruction
13924         with "popcnt" instruction.
13925
13926 2007-04-13  Richard Guenther  <rguenther@suse.de>
13927
13928         PR tree-optimization/21258
13929         * tree-vrp.c (compare_case_labels): New helper.
13930         (find_switch_asserts): New function.
13931         (find_assert_locations): Call it for SWITCH_EXPRs.
13932
13933 2007-04-13  Uros Bizjak  <ubizjak@gmail.com>
13934
13935         * config/i386/i386.h (X87_FLOAT_MODE_P): Check for TARGET_80387.
13936         * config/i386/i386.md (*cmpfp0): Remove check for TARGET_80387, this
13937         check is now implied in X87_FLOAT_MODE_P.
13938         (*cmpfp_u, *cmpfp_<mode>, *cmpfp_i_i387): Ditto.
13939         (*cmpfp_iu_387, fix_trunc<mode>_fisttp_i386_1): Ditto.
13940         (fix_trunc<mode>_i386_fisttp): Ditto.
13941         (fix_trunc<mode>_i387_fisttp_with_temp): Ditto.
13942         (*fix_trunc<mode>_i387_1, fix_truncdi_i387): Ditto.
13943         (fix_truncdi_i387_with_temp, fix_trunc<mode>_i387): Ditto.
13944         (fix_trunc<mode>_i387_with_temp, *fp_jcc_1_387): Ditto.
13945         (*fp_jcc_2_387, *fp_jcc_5_387, *fp_jcc_6_387): Ditto.
13946         (*fp_jcc_7_387, *fp_jcc_8<mode>_387): Ditto.
13947         (unnamed_splitters): Ditto.
13948         * config/i386/i386.c (function_value_32): Generate FIRST_FLOAT_REG
13949         for X87_FLOAT_MODE_P mode.  Override FIRST_FLOAT_REG with
13950         FIRST_SSE_REG for local functions when SSE math is enabled or
13951         for functions with sseregparm attribute.
13952         (standard_80387_constant_p): Return -1 if mode is not
13953         X87_FLOAT_MODE_P.
13954         (ix86_cc_mode): Assert that scalar mode is not DECIMAL_FLOAT_MODE_P.
13955         (ix86_expand_compare): Ditto.
13956         (ix86_expand_carry_flag_compare): Ditto.
13957         (ix86_expand_int_movcc): Check for SCALAR_FLOAT_MODE_P instead
13958         of FLOAT_MODE_P for cmp_mode and assert that cmp_mode is not
13959         DECIMAL_FLOAT_MODE_P.
13960         (ix86_preferred_output_reload_class): Use X87_FLOAT_MODE_P instead
13961         of SCALAR_FLOAT_MODE_P.
13962         (ix86_rtx_costs) [PLUS] Remove FLOAT_MODE_P and fall through to ...
13963         [MINUS]: ... here.  Add SSE_FLOAT_MODE_P and X87_FLOAT_MODE_P
13964         checks before FLOAT_MODE_P.
13965         [MULT]: Add SSE_FLOAT_MODE_P and X87_FLOAT_MODE_P checks
13966         before FLOAT_MODE_P.
13967         [DIV]: Ditto.
13968         [NEG]: Ditto.
13969         [ABS]: Ditto.
13970         [SQRT]: Ditto.
13971         [FLOAT_EXTEND]: Use SSE_FLOAT_MODE_P.
13972
13973 2007-04-12  Paolo Bonzini  <bonzini@gnu.org>
13974             Charles Wilson  <libtool@cwilson.fastmail.fm>
13975
13976         * Makefile.in (stamp-as, stamp-collect-ld, stamp-nm): Remove.
13977         (libgcc.mvars): Don't depend on them.
13978         * configure.ac (as, collect-ld, nm): Create from exec-tool.in.
13979         * exec-tool.in: New.
13980
13981 2007-04-12  Brooks Moses  <brooks.moses@codesourcery.com>
13982
13983         * doc/invoke.text (--help): Document --help=common.
13984
13985 2007-04-12  Thomas Neumann  <tneumann@users.sourceforge.net>
13986
13987         * stub-objc.c (objc_build_keyword_decl): Avoid C++ keywords.
13988
13989 2007-04-12  Richard Sandiford  <richard@codesourcery.com>
13990
13991         * Makefile.in (insn-emit.o): Depend on $(INTEGRATE_H).
13992         * genemit.c (main): Emit #include "integrate.h".
13993         * config/mips/mips-protos.h (SYMBOL_HALF): New mips_symbol_type.
13994         (LOADGP_RTP): New mips_loadgp_style.
13995         * config/mips/mips.h: Include config/vxworks-dummy.h.
13996         (TARGET_RTP_PIC): New macro.
13997         (TARGET_USE_GOT): Return true for TARGET_RTP_PIC.
13998         (TARGET_USE_PIC_FN_ADDR_REG): Return true for TARGET_VXWORKS_RTP.
13999         (ASM_OUTPUT_ADDR_DIFF_ELT): Emit function-relative case tables
14000         for TARGET_RTP_PIC.
14001         * config/mips/vxworks.h (SUBTARGET_ASM_SPEC): Define.  Pass down
14002         -mvxworks-pic when using -mrtp and a PIC option.
14003         * config/mips/mips.c (mips_classify_symbol): Return SYMBOL_GOT_DISP
14004         for RTP PIC.
14005         (mips_symbolic_constant_p, mips_symbolic_address_p)
14006         (mips_symbol_insns): Handle SYMBOL_HALF.
14007         (override_options): Warn about -G and -mrtp being used together.
14008         Initialize mips_lo_relocs[SYMBOL_HALF].
14009         (mips_current_loadgp_style): Return LOADGP_RTP for RTP PIC.
14010         (mips_emit_loadgp): Handle LOADGP_RTP.
14011         (mips_in_small_data_p): Return false for TARGET_VXWORKS_RTP.
14012         * config/mips/mips.md (loadgp_rtp): New insn and splitter.
14013         (tablejump): Handle function-relative case table entries if
14014         TARGET_RTP_PIC.
14015         * config/mips/predicates.md (symbol_ref_operand): New predicate.
14016
14017 2007-04-12  Richard Sandiford  <richard@codesourcery.com>
14018
14019         * config/mips/mips.md (load_call<mode>): Allow any general register.
14020         destination.
14021         (sibcall_value_internal, sibcall_value_multiple_internal)
14022         (call_value_internal, call_value_split, call_value_multiple_internal)
14023         (call_value_multiple_split): Remove constraints from operand 0.
14024
14025 2007-04-12  Richard Sandiford  <richard@codesourcery.com>
14026
14027         * config/mips/mips-protos.h: In comments, refer to loadgp_absolute
14028         rather than loadgp_noshared.
14029         * config/mips/mips.c (mips_emit_loadgp): Use gen_loadgp_absolute
14030         instead of gen_loadgp_noshared.  Use gen_loadgp_newabi instead of
14031         gen_loadgp.
14032         * config/mips/mips.md (loadgp): Rename to...
14033         (loadgp_newabi): ...this.
14034         (loadgp_noshared): Rename to...
14035         (loadgp_absolute): ...this.
14036
14037 2007-04-12  Richard Sandiford  <richard@codesourcery.com>
14038
14039         * config/mips/mips.c (mips_ok_for_lazy_binding_p): Always return
14040         false for locally-binding symbols.
14041         (mips_dangerous_for_la25_p): Check mips_global_symbol_p.
14042
14043 2007-04-12  Richard Sandiford  <richard@codesourcery.com>
14044
14045         * config/mips/mips-protos.h (SYMBOL_GOT_LOCAL): Rename to...
14046         (SYMBOL_GOT_PAGE_OFST): ...this.
14047         (SYMBOL_GOT_GLOBAL): Rename to...
14048         (SYMBOL_GOT_DISP): ...this.
14049         (SYMBOL_GOTOFF_GLOBAL): Rename to...
14050         (SYMBOL_GOTOFF_DISP): ...this.  Update comments accordingly.
14051         * config/mips/mips.c (mips_global_symbol_p): New function.
14052         (mips_symbol_binds_local_p): Likewise.
14053         (mips_classify_symbol): Rename SYMBOL_GOT_GLOBAL to SYMBOL_GOT_DISP
14054         and SYMBOL_GOT_LOCAL to SYMBOL_GOT_PAGE_OFST.  Use
14055         mips_global_symbol_p and mips_symbol_binds_local_p.
14056         (mips_symbolic_constant_p, mips_symbolic_address_p, mips_symbol_insns)
14057         (override_options): Rename SYMBOL_GOT_GLOBAL to SYMBOL_GOT_DISP,
14058         SYMBOL_GOT_LOCAL to SYMBOL_GOT_PAGE_OFST and SYMBOL_GOTOFF_GLOBAL to
14059         SYMBOL_GOTOFF_DISP.
14060         (mips_ok_for_lazy_binding_p): New function.
14061         (mips_load_call_address, mips_expand_call): Use it.
14062         (mips_dangerous_for_la25_p): Likewise.
14063         * config/mips/mips.md (*xgot_hi<mode>, *xgot_lo<mode>)
14064         (*got_disp<mode>): Use got_disp_operand instead of
14065         global_got_operand.  Use SYMBOL_GOTOFF_DISP instead of
14066         SYMBOL_GOTOFF_GLOBAL.
14067         (*got_page<mode>): Use got_page_ofst_operand instead of
14068         local_got_operand.
14069         * config/mips/predicates.md (const_call_insn_operand): Use
14070         SYMBOL_GOT_DISP instead of SYMBOL_GOT_GLOBAL.
14071         (global_got_operand): Rename to...
14072         (got_disp_operand): ...this and use SYMBOL_GOT_DISP instead of
14073         SYMBOL_GOT_GLOBAL.
14074         (local_got_operand): Rename to...
14075         (got_page_ofst_operand): ...this and use SYMBOL_GOT_PAGE_OFST instead
14076         of SYMBOL_GOT_LOCAL.
14077
14078 2007-04-12  Richard Sandiford  <richard@codesourcery.com>
14079
14080         * config/mips/mips.h (TARGET_SPLIT_CALLS): Check
14081         TARGET_CALL_CLOBBERED_GP.
14082         (TARGET_SIBCALLS): Check TARGET_USE_GOT instead of TARGET_ABICALLS.
14083         (TARGET_USE_GOT, TARGET_CALL_CLOBBERED_GP): New macros.
14084         (TARGET_CALL_SAVED_GP, TARGET_USE_PIC_FN_ADDR_REG): Likewise.
14085         (STARTING_FRAME_OFFSET): Check TARGET_CALL_CLOBBERED_GP instead
14086         of TARGET_ABICALLS && !TARGET_NEWABI.
14087         (MIPS_CALL): Check TARGET_USE_GOT instead of TARGET_ABICALLS.
14088         * config/mips/mips.c (mips_load_call_address): Check
14089         TARGET_CALL_SAVED_GP instead of TARGET_NEWABI.
14090         (mips_global_pointer): Check TARGET_USE_GOT instead of TARGET_ABICALLS.
14091         Check TARGET_CALL_SAVED_GP instead of TARGET_NEWABI.
14092         (mips_save_reg_p): Check TARGET_CALL_SAVED_GP instead of
14093         TARGET_ABICALLS && TARGET_NEWABI.
14094         (mips_current_loadgp_style): Check TARGET_USE_GOT instead of
14095         TARGET_ABICALLS.
14096         (mips_expand_prologue): Check TARGET_OLDABI instead of !TARGET_NEWABI.
14097         (mips_expand_epilogue): Check TARGET_CALL_SAVED_GP instead of
14098         TARGET_ABICALLS && TARGET_NEWABI.
14099         (mips_output_mi_thunk): Check TARGET_USE_GOT instead of
14100         TARGET_ABICALLS.  Check TARGET_CALL_SAVED_GP instead of
14101         TARGET_NEWABI.  Use TARGET_USE_PIC_FN_ADDR_REG to decide
14102         whether indirect calls must use $25.
14103         (mips_extra_live_on_entry): Check TARGET_GOT instead of
14104         TARGET_ABICALLS.
14105         * config/mips/mips.md (jal_macro): Check flag_pic and
14106         TARGET_CALL_CLOBBERED_GP instead of TARGET_ABICALLS and TARGET_NEWABI.
14107         (builtin_setjmp_setup, builtin_longjmp): Check TARGET_USE_GOT
14108         instead of TARGET_ABICALLS.
14109         (exception_receiver): Check TARGET_CALL_CLOBBERED_GP instead of
14110         TARGET_ABICALLS && TARGET_OLDABI.
14111         (load_call<mode>): Check TARGET_USE_GOT instead of TARGET_ABICALLS.
14112         (sibcall): In the comment above the define_insn, mention
14113         TARGET_USE_PIC_FN_ADDR_REG instead of TARGET_ABICALLS.
14114         * config/mips/constraints.md (c): Check TARGET_USE_PIC_FN_ADDR_REG
14115         instead of TARGET_ABICALLS.
14116
14117 2007-04-12  Bernd Schmidt  <bernd.schmidt@analog.com>
14118
14119         * doc/md.texi (Blackfin family constraints): Document PA and PB.
14120         * config/bfin/bfin.h (CONST_OK_FOR_P): Handle PA and PB.
14121         (MACFLAGS_MATCH_P): New macro.
14122         * config/bfin/bfin.c (print_operand): Handle MACFLAG_IS_M.
14123         (bfin_secondary_reload): Treat EVEN_AREGS and ODD_AREGS like AREGS.
14124         * config/bfin/bfin.md (MACFLAG_IS_M): New constant.  Renumber some of
14125         the other MACFLAG constants.
14126         (sum_of_accumulators, lshrpdi3, ashrpdi3): New patterns.
14127         (flag_machi): Tighten constraints.  Renumber some of the operands.
14128         (flag_machi_acconly): Tighten constraints.  Correct operand numbers in
14129         output template.
14130         (flag_machi_parts_acconly): New pattern.
14131         (flag_macinithi): Tighten constraints.  Allow any accumulator to be
14132         used.
14133         (flag_macinit1hi): Tighten constraints.
14134         (flag_mul_macv2hi_parts_acconly): New pattern.
14135
14136         * config/bfin/lib1funcs.asm (___umulsi3_highpart, __smulsi3_highpart):
14137         Use a more efficient implementation.
14138         * config/bfin/bfin.md (umulsi3_highpart, smulsi3_highpart): Emit
14139         inline sequences when not optimizing for size.
14140
14141         * config/bfin/bfin.md (movhi_low2high, movhi_high2high, movhi_low2low,
14142         movhi_high2low): Delete, merge functionality into...
14143         (packv2hi): ... this pattern.
14144
14145         2007-02-11  Jie Zhang  <jie.zhang@analog.com>
14146         * config/bfin/bfin.opt (msim): New option.
14147         (mcpu=): New option.
14148         * config/bfin/bfin-protos.h (enum bfin_cpu): New.
14149         (bfin_cpu_t): Typedef of enum bfin_cpu.
14150         (bfin_cpu_type): New declaration.
14151         * config/bfin/elf.h (STARTFILE_SPEC): Add support for
14152         -msim and -mcpu= options.
14153         (LIB_SPEC): Likewise.
14154         * config/bfin/bfin.c (bfin_cpu_type): Define.
14155         (bfin_handle_option): Handle -mcpu= option.
14156         * config/bfin/bfin.h (DEFAULT_CPU_TYPE): Define as BFIN_CPU_BF532.
14157         (TARGET_CPU_CPP_BUILTINS): Define __ADSPBF531__, __ADSPBF532__,
14158         __ADSPBF533__ or __ADSPBF537__ according to the cpu type.
14159
14160 2007-04-12  Richard Sandiford  <richard@codesourcery.com>
14161
14162         * config.gcc (*-*-vxworks*): Don't add to tm_files in this stanza.
14163         (arm-wrs-vxworks, mips-wrs-vxworks, powerpc-wrs-vxworks)
14164         (powerpc-wrs-vxworksae): Use ${tm_file}.
14165         (i[4567]86-wrs-vxworks, i[4567]86-wrs-vxworksae): Add svr4.h
14166         after elfos.h.  Remove i386/sysv4.h and add i386/vx-common.h.
14167         * config/i386/vx-common.h: New file.
14168
14169 2007-04-12  Richard Sandiford  <richard@codesourcery.com>
14170
14171         * config/vxworks.h (VXWORKS_STARTFILE_SPEC): Use -l:crt0.o instead
14172         of crt0.o%s.
14173
14174 2007-04-12  Andreas Krebbel  <krebbel1@de.ibm.com>
14175
14176         * config/s390/s390.md ("trunctddd2"): Use TDmode for the target of
14177         ldxtr.
14178
14179 2007-04-12  Douglas Gregor  <doug.gregor@gmail.com>
14180
14181         PR c++/31078
14182         PR c++/31103
14183         * c-common.c (c_build_qualified_type): Set canonical type
14184         appropriately.
14185
14186 2007-04-12  Richard Guenther  <rguenther@suse.de>
14187
14188         * tree-pretty-print.c (dump_generic_node): Print ARRAY_REF
14189         lower bound and element size if lower bound is not zero
14190         or either of the ARRAY_REF operands is set.
14191
14192 2007-04-12  Richard Guenther  <rguenther@suse.de>
14193
14194         PR tree-optimization/24689
14195         PR tree-optimization/31307
14196         * fold-const.c (operand_equal_p): Compare INTEGER_CST array
14197         indices by value.
14198         * gimplify.c (canonicalize_addr_expr): To be consistent with
14199         gimplify_compound_lval only set operands two and three of
14200         ARRAY_REFs if they are not gimple_min_invariant.  This makes
14201         it never at this place.
14202         * tree-ssa-ccp.c (maybe_fold_offset_to_array_ref): Likewise.
14203
14204 2007-04-11  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
14205
14206         * pa.c (pa_som_asm_init_sections): Ensure that cfun->machine is not
14207         null before emitting a .nsubspa directive.
14208
14209 2007-04-11  Diego Novillo  <dnovillo@redhat.com>
14210
14211         * tree-ssa-alias.c (dump_mem_ref_stats): Do not call
14212         need_to_partition_p if there are no memory statements in the
14213         function.
14214
14215 2007-04-11  Zdenek Dvorak  <dvorakz@suse.cz>
14216
14217         * tree-data-ref.c (chrec_steps_divide_constant_p): Removed.
14218         (gcd_of_steps_may_divide_p): New function.
14219         (analyze_miv_subscript): Use gcd_of_steps_may_divide_p.
14220
14221 2007-04-11  Bernd Schmidt  <bernd.schmidt@analog.com>
14222
14223         * reload.c (find_reloads_toplev, find_reloads_address,
14224         find_reloads_address_1, find_reloads_subreg_address): Use rtx_equal_p,
14225         not a pointer equality test, to decide if we need to call
14226         push_reg_equiv_alt_mem.
14227
14228 2007-04-11  Sebastian Pop  <sebastian.pop@inria.fr>
14229
14230         * tree-data-ref.c (affine_function_zero_p, constant_access_functions,
14231         insert_innermost_unit_dist_vector, add_distance_for_zero_overlaps):
14232         New.
14233         (build_classic_dist_vector): Call add_distance_for_zero_overlaps.
14234
14235 2007-04-11  Zdenek Dvorak  <dvorakz@suse.cz>
14236
14237         * tree-data-ref.c (add_multivariate_self_dist): Force the distance
14238         vector to be positive.
14239
14240 2007-04-11  Diego Novillo  <dnovillo@redhat.com>
14241
14242         PR 30735
14243         PR 31090
14244         * doc/invoke.texi: Document --params max-aliased-vops and
14245         avg-aliased-vops.
14246         * tree-ssa-operands.h (get_mpt_for, dump_memory_partitions,
14247         debug_memory_partitions): Move to tree-flow.h
14248         * params.h (AVG_ALIASED_VOPS): Define.
14249         * tree-ssa-alias.c (struct mp_info_def): Remove.  Update all
14250         users.
14251         (mp_info_t): Likewise.
14252         (get_mem_sym_stats_for): New.
14253         (set_memory_partition): Move from tree-flow-inline.h.
14254         (mark_non_addressable): Only clear the set of symbols for the
14255         partition if it exists.
14256         (dump_memory_partitions): Move from tree-ssa-operands.c
14257         (debug_memory_partitions): Likewise.
14258         (need_to_partition_p): New.
14259         (dump_mem_ref_stats): New.
14260         (debug_mem_ref_stats): New.
14261         (dump_mem_sym_stats): New.
14262         (debug_mem_sym_stats): New.
14263         (update_mem_sym_stats_from_stmt): New.
14264         (compare_mp_info_entries): New.
14265         (mp_info_cmp): Call it.
14266         (sort_mp_info): Change argument to a list of mem_sym_stats_t
14267         objects.
14268         (get_mpt_for): Move from tree-ssa-operands.c.
14269         (find_partition_for): New.
14270         (create_partition_for): Remove.
14271         (estimate_vop_reduction): New.
14272         (update_reference_counts): New.
14273         (build_mp_info): New.
14274         (compute_memory_partitions): Refactor.
14275         Document new heuristic.
14276         Call build_mp_info, update_reference_counts,
14277         find_partition_for and estimate_vop_reduction.
14278         (compute_may_aliases): Populate virtual operands before
14279         calling debugging dumps.
14280         (delete_mem_sym_stats): New.
14281         (delete_mem_ref_stats): New.
14282         (init_mem_ref_stats): New.
14283         (init_alias_info): Call it.
14284         (maybe_create_global_var): Remove alias_info argument.
14285         Get number of call sites and number of pure/const call sites
14286         from gimple_mem_ref_stats().
14287         (dump_alias_info): Call dump_memory_partitions first.
14288         (dump_points_to_info_for): Show how many times a pointer has
14289         been dereferenced.
14290         * opts.c (decode_options): For -O2 set --param
14291         max-aliased-vops to 500.
14292         For -O3 set --param max-aliased-vops to 1000 and --param
14293         avg-aliased-vops to 3.
14294         * fortran/options.c (gfc_init_options): Remove assignment to
14295         MAX_ALIASED_VOPS.
14296         * tree-flow-inline.h (gimple_mem_ref_stats): New.
14297         * tree-dfa.c (dump_variable): Dump memory reference
14298         statistics.
14299         Dump NO_ALIAS* settings.
14300         (referenced_var_lookup): Tidy.
14301         (mem_sym_stats): New.
14302         * tree-ssa-copy.c (may_propagate_copy): Return true if DEST
14303         and ORIG are different SSA names for a memory partition.
14304         * tree-ssa.c (delete_tree_ssa): Call delete_mem_ref_stats.
14305         * tree-flow.h (struct mem_sym_stats_d): Define.
14306         (mem_sym_stats_t): Define.
14307         (struct mem_ref_stats_d): Define.
14308         (struct gimple_df): Add field mem_ref_stats.
14309         (enum noalias_state): Define.
14310         (struct var_ann_d): Add bitfield noalias_state.
14311         (mem_sym_stats, delete_mem_ref_stats, dump_mem_ref_stats,
14312         debug_mem_ref_stats, debug_memory_partitions,
14313         debug_mem_sym_stats): Declare.
14314         * tree-ssa-structalias.c (update_alias_info): Update call
14315         sites, pure/const call sites and asm sites in structure
14316         returned by gimple_mem_ref_stats.
14317         Remove local variable IS_POTENTIAL_DEREF.
14318         Increase NUM_DEREFS if the memory expression is a potential
14319         dereference.
14320         Call update_mem_sym_stats_from_stmt.
14321         If the memory references memory, call
14322         update_mem_sym_stats_from_stmt for all the direct memory
14323         symbol references found.
14324         (intra_create_variable_infos): Set noalias_state field for
14325         pointer arguments according to the value of
14326         flag_argument_noalias.
14327         * tree-ssa-structalias.h (struct alias_info): Remove fields
14328         num_calls_found and num_pure_const_calls_found.
14329         (update_mem_sym_stats_from_stmt): Declare.
14330         * params.def (PARAM_MAX_ALIASED_VOPS): Change description.
14331         Set default value to 100.
14332         (PARAM_AVG_ALIASED_VOPS): Define.
14333
14334 2007-04-11  Richard Guenther  <rguenther@suse.de>
14335
14336         PR middle-end/31530
14337         * simplify-rtx.c (simplify_binary_operation_1): Do not simplify
14338         a * -b + c as c - a * b if we honor sign dependent rounding.
14339
14340 2007-04-11  Bernd Schmidt  <bernd.schmidt@analog.com>
14341
14342         * config/bfin/bfin-protos.h (bfin_expand_movmem): Renamed from
14343         bfin_expand_strmov.
14344         * config/bfin/bfin.c (bfin_expand_prologue, bfin_delegitimize_address,
14345         bfin_function_ok_for_sibcall, split_load_immediate): Remove unused
14346         variables.
14347         (initialize_trampoline): Don't use old-style function definition.
14348         (bfin_secondary_reload): Mark IN_P argument as unused.
14349
14350 2007-04-10  Sebastian Pop  <sebastian.pop@inria.fr>
14351
14352         PR tree-optimization/31343
14353         * tree-chrec.h (chrec_zerop): Moved before build_polynomial_chrec.
14354         (build_polynomial_chrec): Return a scalar when the evolution is zero.
14355         * testsuite/gcc.dg/vect/pr31343.c: New.
14356
14357 2007-04-10  Eric Christopher  <echristo@apple.com>
14358
14359         * config/i386/i386.h (X87_FLOAT_MODE_P): New.
14360         * config/i386/i386.md (*cmpfp0): Use.
14361         (*cmpfp_u, *cmpfp_<mode>, *cmpfp_i_i387): Ditto.
14362         (*cmpfp_iu_387, fix_trunc<mode>_fisttp_i386_1): Ditto.
14363         (fix_trunc<mode>_i386_fisttp): Ditto.
14364         (fix_trunc<mode>_i387_fisttp_with_temp): Ditto.
14365         (*fix_trunc<mode>_i387_1, fix_truncdi_i387): Ditto.
14366         (fix_truncdi_i387_with_temp, fix_trunc<mode>_i387): Ditto.
14367         (fix_trunc<mode>_i387_with_temp, *fp_jcc_1_387): Ditto.
14368         (*fp_jcc_2_387, *fp_jcc_5_387, *fp_jcc_6_387): Ditto.
14369         (*fp_jcc_7_387, *fp_jcc_8<mode>_387): Ditto.
14370         (unnamed_splitters): Ditto.
14371         * config/i386/i386.c (output_fix_trunc): Assert that
14372         we're not being passed a TFmode operand.
14373
14374 2007-04-10  Zdenek Dvorak  <dvorakz@suse.cz>
14375
14376         PR tree-optimization/31526
14377         * tree-inline.c (copy_cfg_body): Use last_basic_block instead of
14378         n_basic_blocks to find newly added blocks.
14379
14380 2007-04-10  Uros Bizjak  <ubizjak@gmail.com>
14381
14382         * config/i386/i386.md (fix_trunc<mode>di_sse): Remove "x" from "xm"
14383         alternative.
14384         (fix_trunc<mode>si_sse): Ditto.
14385         (*floatsisf2_mixed, *floatsisf2_sse): Ditto.
14386         (*floatsidf2_mixed, *floatsidf2_sse): Ditto.
14387         (*floatdisf2_mixed, *floatdisf2_sse): Ditto.
14388         (*floatdidf2_mixed, *floatdidf2_sse): Ditto.
14389         (floathi<mode>2): Rename from floathisf2 and floathidf2. Macroize
14390         expander using SSEMODEF mode macro.
14391         (floatsi<mode>2): Rename from floatsisf2 and floashidf2. Macroize
14392         expander using SSEMODEF mode macro.
14393         (*floathi<mode>2_i387): Rename from *floathisf2_i387 and
14394         *floathidf2_i387. Macroize insn using X87MODEF12 mode macro.
14395         (*floatsi<mode>2_i387): Rename from *floatsisf2_i387 and
14396         *floatsidf2_i387. Macroize insn using X87MODEF12 mode macro.
14397         (*floatdi<mode>2_i387): Rename from *floatdisf2_i387 and
14398         *floatdidf2_i387. Macroize insn using X87MODEF12 mode macro.
14399         (float<mode>xf2): Rename from floathixf2, floatsixf2 and floatdixf2.
14400         Macroize insn using X87MODEF mode macro.
14401
14402 2007-04-09  H.J. Lu  <hongjiu.lu@intel.com>
14403
14404         * config/i386/sse.md (sse2_pinsrw): Removed.
14405         (sse2_pextrw): Renamed to ...
14406         (*sse2_pextrw): This.
14407
14408 2007-04-09  Jan Hubicka  <jh@suse.cz>
14409
14410         PR target/27869
14411         * config/i386/sse.md
14412         (sse_vmaddv4sf3, sse_vmmulv4sf3): Remove '%' modifier.
14413         (sse_vmsmaxv4sf3_finite, sse_vmsminv4sf3_finite): Remove.
14414         (sse2_vmaddv2df3, sse2_vmmulv2df3): Remove '%' modifier.
14415         (sse2_vmsmaxv2df3_finite, sse2_vmsminv2df3_finite): Remove.
14416
14417 2007-04-09  Jan Hubicka  <jh@suse.cz>
14418
14419         * tree-ssa-ccp (maybe_fold_offset_to_component_ref): Recurse into
14420         multiple fields of union.
14421
14422 2007-04-09  Zdenek Dvorak  <dvorakz@suse.cz>
14423
14424         * cfgloopmanip.c (create_preheader): Do not use loop_preheader_edge.
14425         (create_preheaders): Check that loops are available.
14426         (fix_loop_structure): Clean up, improve comments.
14427         * tree-ssa-loop-manip.c (rewrite_into_loop_closed_ssa):
14428         Check that loops are available.  Set LOOP_CLOSED_SSA to the loops
14429         state flags.
14430         * tree-scalar-evolution.c (scev_finalize): Clear scalar_evolution_info.
14431         * predict.c (tree_estimate_probability): Do not call
14432         calculate_dominance_info.  Call create_preheaders.
14433         * tree-cfgcleanup.c (cleanup_tree_cfg_loop): Only call
14434         rewrite_into_loop_closed_ssa if LOOP_CLOSED_SSA is set in loops state
14435         flags.
14436         * cfgloop.c (loop_preheader_edge): Assert that loops have preheaders.
14437         * cfgloop.h (LOOP_CLOSED_SSA): New constant.
14438         * tree-cfg.c (tree_split_edge): Make an assert more precise.
14439         * tree-ssa-threadedge.c (thread_across_edge): Comment the function
14440         arguments.
14441
14442 2007-04-08  Jan Hubicka  <jh@suse.cz>
14443
14444         * tree.h (maybe_fold_offset_to_component_ref): Declare.
14445         * tree-ssa-ccp.c (maybe_fold_offset_to_component_ref): Export.
14446         * fold-const.c (fold_unary): Use it.
14447
14448 2007-04-08  Andrew Pinski  <andrew_pinski@playstation.sony.com>
14449
14450         * varasm.c (assemble_variable): Remove call to
14451         lang_hooks.decls.prepare_assemble_variable.
14452         * langhooks-def.h (LANG_HOOKS_PREPARE_ASSEMBLE_VARIABLE): Kill.
14453         (LANG_HOOKS_DECLS): Remove LANG_HOOKS_PREPARE_ASSEMBLE_VARIABLE.
14454         * langhooks.h (lang_hooks_for_decls): Remove
14455         prepare_assemble_variable.
14456
14457 2007-04-08  Mike Stump  <mrs@apple.com>
14458
14459         * config/i386/i386.c: Use inc/dec on Core2.
14460
14461 2007-04-08  Steven Bosscher  <steven@gcc.gnu.org>
14462
14463         * langhooks.c (lhd_tree_inlining_add_pending_fn_decls,
14464         lhd_tree_inlining_anon_aggr_type_p, lhd_tree_inlining_start_inlining,
14465         lhd_tree_inlining_end_inlining): Remove.
14466         * langhooks.h (struct lang_hooks_for_tree_inlining): Remove then
14467         add_pending_fn_decls, anon_aggr_type_p, start_inlining, and
14468         end_inlining hooks.
14469         * langhooks-def.h (lhd_tree_inlining_add_pending_fn_decls,
14470         lhd_tree_inlining_anon_aggr_type_p, lhd_tree_inlining_start_inlining,
14471         lhd_tree_inlining_end_inlining): Remove prototypes.
14472         (LANG_HOOKS_TREE_INLINING_ADD_PENDING_FN_DECLS,
14473         LANG_HOOKS_TREE_INLINING_ANON_AGGR_TYPE_P,
14474         LANG_HOOKS_TREE_INLINING_START_INLINING,
14475         LANG_HOOKS_TREE_INLINING_END_INLINING): Remove.
14476
14477         * c-objc-common.h (LANG_HOOKS_TREE_INLINING_ANON_AGGR_TYPE_P): Do
14478         not set it.
14479
14480 2007-04-08  Anatoly Sokolov <aesok@post.ru>
14481
14482         PR target/29932
14483         * config/avr/predicates.md (io_address_operand): Delete predicate.
14484         (low_io_address_operand): Don't use 'mode' argument.
14485         (higth_io_address_operand): Rename ...
14486         (high_io_address_operand): ... to this. Don't use 'mode' argument.
14487         * config/avr/avr.md (*sbix_branch_tmp, *sbix_branch_tmp_bit7): Adjust
14488         for above change.
14489
14490 2007-04-07  Daniel Berlin  <dberlin@dberlin.org>
14491
14492         Revert change removing staticp.
14493
14494 2007-04-07  Anatoly Sokolov <aesok@post.ru>
14495
14496         PR target/30289
14497         * config/avr/avr.md (*clrmemqi, *clrmemhi): Mark operand 4 as
14498         earlyclobber.
14499
14500 2007-04-07  Bruce Korb  <bkorb@gnu.org>
14501
14502         * c.opt: Add -Wformat-contains-nul.
14503         * c-format.c (set_Wformat):  Set warn_format_contains_nul to the
14504           -Wformat setting.
14505         (check_format_info_main): Check OPT_Wformat_contains_nul before emitting
14506         the NUL byte warning.
14507
14508 2007-04-07  H.J. Lu  <hongjiu.lu@intel.com>
14509
14510         * config/i386/i386.c (ix86_handle_option): Handle SSSE3.
14511
14512 2007-04-06  Daniel Berlin  <dberlin@dberlin.org>
14513
14514         * tree.c (staticp): No longer use staticp langhook.
14515         * langhooks.c (lhd_staticp): Removed.
14516         * langhooks.h (struct lang_hooks): Remove staticp.
14517         * c-common.c (c_staticp): Remove.
14518         * c-common.h (c_staticp): Ditto.
14519         * langhooks-defs.h (lhd_staticp): Ditto.
14520         (LHD_HOOKS_STATICP): Ditto
14521         * tree.h (gcc_assert_lowered): New macro.
14522
14523 2007-04-06  Zdenek Dvorak  <dvorakz@suse.cz>
14524
14525         * tree-ssa-loop-niter.c (idx_infer_loop_bounds): Add and use
14526         argument "reliable".
14527         (infer_loop_bounds_from_ref, infer_loop_bounds_from_array):
14528         Add argument "reliable".  Propagate it through calls.
14529         (infer_loop_bounds_from_undefined):  Derive number of iterations
14530         estimates from references in blocks that do not dominate loop latch.
14531         (gcov_type_to_double_int): New function.
14532         (estimate_numbers_of_iterations_loop): Use gcov_type_to_double_int
14533         and expected_loop_iterations_unbounded.
14534         * cfgloopanal.c (expected_loop_iterations_unbounded): New function.
14535         (expected_loop_iterations): Use expected_loop_iterations_unbounded.
14536         * tree-data-ref.c (estimated_loop_iterations): Export.
14537         (get_references_in_stmt): Fix -- do not return addresses of local
14538         objects.
14539         * cfgloop.h (expected_loop_iterations_unbounded,
14540         estimated_loop_iterations): Declare.
14541
14542 2007-04-06  Andreas Tobler  <a.tobler@schweiz.org>
14543
14544         * tree-sra.c (sra_build_elt_assignment): Initialize min/maxshift.
14545
14546 2007-04-06  Uros Bizjak  <ubizjak@gmail.com>
14547
14548         * config/i386/i386.md (extend<mode>xf2): Rename from extendsfxf2
14549         and extenddfxf2. Macroize expander using X87MODEF12 mode macro.
14550         (*truncdfsf_mixed, *truncdfsf_i387, *truncdfsf2_i387_1):
14551         Use output_387_reg_move().
14552         (*truncxf<mode>2): Rename from *truncxfsf2 and truncxfdf2. Macroize
14553         expander using X87MODEF12 mode macro.
14554         (*truncxfsf2_mixed): Combine alternatives, ignore "r" alternative when
14555         choosing register preferences.  Use output_387_reg_move().
14556         (*truncxfdf2_mixed): Combine alternatives, use "r" alternative
14557         instead of "x".  Use output_387_reg_move().
14558         (*truncxf<mode>2_i387_noop): Rename from *truncxfsf2_i387_noop and
14559         *truncxfdf2_i387_noop.  Macroize insn using X87MODEF12 mode macro.
14560         (*truncxf<mode>2_i387): Rename from *truncxfsf2_i387 and
14561         *truncxfdf2_i387.  Macroize insn using X87MODEF12 mode macro.
14562         Use output_387_reg_move().
14563         (*truncxf?f_mixed splitter): Macroize splitter using X87MODEF12
14564         mode macro.
14565         (*truncxf?f_i387 splitter): Ditto.
14566
14567 2007-04-06  Daniel Berlin  <dberlin@dberlin.org>
14568
14569         * langhooks-def.h (LANG_HOOKS_INITIALIZER): Remove
14570         LANG_HOOKS_SAFE_FROM_P.
14571         * expr.c (safe_from_p): Remove langhook call.
14572         * langhooks.h (lang_hooks): Remove safe_from_p.
14573         (lhd_safe_from_p): Remove prototype.
14574         * langhooks.c (lhd_safe_from_p): Remove.
14575
14576 2007-04-06  Jan Hubicka  <jh@suse.cz>
14577
14578         * cgraphunit.c (decide_is_function_needed): Do not keep always_inline
14579         functions.
14580
14581 2007-04-06  Uros Bizjak  <ubizjak@gmail.com>
14582
14583         * config/i386/i386.c (output_387_reg_move): Handle memory operand[0].
14584         * config/i386/i386.md (*movsf_1, *movdf_nointeger,
14585         *movdf_integer_rex64, *movdf_integer, *movxf_nointeger,
14586         *movxf_integer): Use output_387_reg_move() for x87 reg->mem
14587         alternative.
14588         (*extendsfdf2_mixed, *extendsfdf2_i387, *extendsfxf2_i387,
14589         *extenddfxf2_i387, *truncdfsf_fast_mixed): Ditto.
14590
14591 2007-04-05  Richard Henderson  <rth@redhat.com>
14592
14593         * config/alpha/alpha.c (print_operand) [+]: Remove.
14594         (alpha_end_function): Print nop if call at end of function.
14595         * config/alpha/alpha.h (PRINT_OPERAND_PUNCT_VALID_P): Remove +.
14596         * config/alpha/alpha.md (UNSPEC_LDGP1): New.
14597         (call_osf_1_er_noreturn, call_value_osf_1_er_noreturn): New.
14598         (call_osf_2_er_nogp, call_value_osf_2_er_nogp): New.
14599         (call_osf_2_er, call_value_osf_2_er): Merge the ldgp highpart into
14600         the call pattern. Update peepholes to match.
14601
14602 2007-04-05  Janis Johnson  <janis187@us.ibm.com>
14603
14604         * doc/extend.texi (Other Builtins): Add decimal float variants
14605         of signbit.
14606         * builtins.def: Ditto.
14607         * builtins.c (expand_builtin): Ditto.
14608
14609 2007-04-05  Uros Bizjak  <ubizjak@gmail.com>
14610             H.J. Lu  <hongjiu.lu@intel.com>
14611
14612         PR target/31478
14613         * config/i386/sse.md (sse2_umulv2siv2di3): Use V4SImode instead
14614         of V8HImode when calling ix86_binary_operator_ok.
14615         (sse2_pmaddwd): Call ix86_binary_operator_ok.
14616         (sdot_prodv8hi): Operands 1 and 2 must be register.
14617
14618 2007-04-05  Alexandre Oliva  <aoliva@redhat.com>
14619
14620         * tree-sra.c (try_instantiate_multiple_fields): Needlessly
14621         initialize align to silence bogus warning.
14622
14623 2007-04-05  Alexandre Oliva  <aoliva@redhat.com>
14624
14625         PR middle-end/22156
14626         * tree-sra.c (struct sra_elt): Add in_bitfld_block.  Remove
14627         all_no_warning.
14628         (struct sra_walk_fns): Remove use_all parameter from use.
14629         (sra_hash_tree): Handle BIT_FIELD_REFs.
14630         (sra_elt_hash): Don't hash bitfld blocks.
14631         (sra_elt_eq): Skip them in parent compares as well.  Handle
14632         BIT_FIELD_REFs.
14633         (sra_walk_expr): Don't maintain or pass down use_all_p.
14634         (scan_use): Remove use_all parameter.
14635         (scalarize_use): Likewise.  Re-expand assignment to
14636         BIT_FIELD_REF of gimple_reg.  De-scalarize before input or
14637         output, and re-scalarize after output.  Don't mark anything
14638         for no warning.
14639         (scalarize_ldst): Adjust.
14640         (scalarize_walk_gimple_modify_statement): Likewise.
14641         (build_element_name_1): Handle BIT_FIELD_REFs.
14642         (instantiate_element): Don't warn for any element whose parent
14643         is used as a whole.
14644         (instantiate_missing_elements_1): Return the sra_elt.
14645         (canon_type_for_field): New.
14646         (try_instantiate_multiple_fields): New.
14647         (instantiate_missing_elemnts): Use them.
14648         (mark_no_warning): Removed.
14649         (generate_one_element_ref): Handle BIT_FIELD_REFs.
14650         (REPLDUP, sra_build_elt_assignment): New.
14651         (generate_copy_inout): Use them.
14652         (generate_element_copy): Likewise.  Handle bitfld differences.
14653         (generate_element_zero): Don't recurse for blocks.  Use
14654         sra_build_elt_assignment.
14655         (generate_one_element_int): Take elt instead of var.  Use
14656         sra_build_elt_assignment.
14657         (generate_element_init_1): Adjust.
14658         (scalarize_use, scalarize_copy): Use REPLDUP.
14659         (scalarize_ldst): Move assert before dereference.
14660         (dump_sra_elt_name): Handle BIT_FIELD_REFs.
14661
14662 2007-04-05  Steven Bosscher  <steven@gcc.gnu.org>
14663
14664         * regmove.c: Fix unused variable warnings due to previous commit.
14665
14666 2007-04-05  Steven Bosscher  <steven@gcc.gnu.org>
14667
14668         * regmove.c (STACK_GROWS_DOWNWARD): Don't boolean-ize.
14669         (regmove_bb_head): Remove.
14670         (copy_src_to_dest): Don't update regmove_bb_head and BB_HEAD.
14671         (regmove_optimize): Don't do unnecessary CFG fixes for non-existing
14672         problems with fixup_match_1.
14673         Don't initialize/free regmove_bb_head.
14674
14675         (reg_is_remote_constant_p): If an insn is in the same basic block
14676         but not before INSN, consider it remote, too.
14677
14678 2007-04-05  Anatoly Sokolov <aesok@post.ru>
14679
14680         PR target/25448
14681         * config/avr/avr.c (avr_handle_fndecl_attribute): Use the
14682         DECL_ASSEMBLER_NAME, not the DECL_NAME.
14683
14684 2007-04-05  H.J. Lu  <hongjiu.lu@intel.com>
14685
14686         * config/i386/i386.h (TARGET_CPU_CPP_BUILTINS): Reformat.
14687         (CONDITIONAL_REGISTER_USAGE): Likewise.
14688
14689 2007-04-04  Richard Henderson  <rth@redhat.com>
14690
14691         * config/alpha/lib1funcs.asm: Remove unused file.
14692
14693 2007-04-04  Brooks Moses  <brooks.moses@codesourcery.com>
14694
14695         PR other/31356
14696         * opts.c (print_specific_help): Fix --help=<language>
14697         header line.
14698         (common_handle_option): Support --help=common.
14699
14700 2007-04-04  Brooks Moses  <brooks.moses@codesourcery.com>
14701
14702         PR other/31353
14703         * gcc.c (main): Do not run the linker if
14704         print_subprocess_help indicates that it shouldn't be
14705         run.
14706
14707 2007-04-04  Brooks Moses  <brooks.moses@codesourcery.com>
14708
14709         PR doc/31355
14710         * doc/invoke.texi (--help=): Document <languages> value, fix
14711         formatting in tables of values.
14712
14713 2007-04-04  Danny Smith  <dannysmith.users.sourceforge.net>
14714
14715         * config/i386/winnt-cxx.c (i386_pe_type_dllimport_p): Don't ignore
14716         dllimport attribute of virtual methods.
14717
14718 2007-04-04  Chen Liqin  <liqin@sunnorth.com.cn>
14719
14720         * config/score/crti.asm: Change _bss_start to __bss_start.
14721         * config/score/score.h (CONDITIONAL_REGISTER_USAGE): Added.
14722         (OUTGOING_REG_PARM_STACK_SPACE) update.
14723         * config/score/score.opt: add options to make backend support
14724         score5, score5u, score7 and score7d.
14725         * config/score/score.md: Likewise.
14726         * config/score/misc.md: Likewise.
14727         * config/score/mac.md: Likewise.
14728         * doc/invoke.texi: Likewise.
14729         * doc/md.texi: update constraints define.
14730
14731 2007-04-03  Richard Henderson  <rth@redhat.com>
14732
14733         * expr.c (store_expr): If get_signed_or_unsigned_type doesn't yield
14734         an appropriate type, use the mode instead.
14735
14736 2007-04-03  Richard Sandiford  <richard@codesourcery.com>
14737
14738         * config.gcc (mips-wrs-vxworks): Add vx-common.h to tm_file.
14739         Set the default --with-arch setting to mips2.
14740         * config/mips/t-vxworks (MULTILIB_OPTIONS, MULTILIB_MATCHES)
14741         (MULTILIB_EXCEPTIONS): Redefine with new multilibs.
14742         (MULTILIB_OSDIRNAMES): Delete.
14743         (MULTILIB_DIRNAMES): Define.
14744         * config/mips/vxworks.h (LINK_SPEC): Add VXWORKS_LINK_SPEC.
14745         (LIB_SPEC, STARTFILE_SPEC, ENDFILE_SPEC): Define.
14746         (TARGET_OS_CPP_BUILTINS): Incorporate old SUBTARGET_CPP_SPEC
14747         definitions, except for _WRS_R3K_EXC_SUPPORT.  Call
14748         VXWORKS_OS_CPP_BUILTINS.
14749         (SUBTARGET_CPP_SPEC): Redefine to VXWORKS_ADDITIONAL_CPP_SPEC.
14750         (MIPS_DEBUGGING_INFO): Undefine.
14751         (FUNCTION_PROFILER): Define to VXWORKS_FUNCTION_PROFILER.
14752
14753 2007-04-03  Jakub Jelinek  <jakub@redhat.com>
14754
14755         PR middle-end/30704
14756         * fold-const.c (native_encode_real): Encode real.c provided longs
14757         as a series of 32-bit native integers.
14758         (native_interpret_real): Interpret buffer as a series of 32-bit
14759         native integers.
14760
14761 2007-04-03  Richard Guenther  <rguenther@suse.de>
14762
14763         * genpreds.c (write_insn_constraint_len): Write function
14764         optimized for CONSTRAINT_LEN implementation.
14765         (write_tm_preds_h): Output insn_constraint_len inline and
14766         use it for CONSTRAINT_LEN.
14767         (write_insn_preds_c): Don't output insn_constraint_len.
14768         * doc/md.texi (define_register_constraint): Document multi-letter
14769         constraints shall have the same length if they start with the same
14770         letter.
14771
14772 2007-04-03  Uros Bizjak  <ubizjak@gmail.com>
14773
14774         PR target/31175
14775         * config/i386/i386.md (isinf<mode>2): Expand only when
14776         TARGET_C99_FUNCTIONS is set.
14777
14778 2007-04-03  Uros Bizjak  <ubizjak@gmail.com>
14779
14780         * config.gcc (i[34567]86-*-linux*): Add i386/t-crtpc to tm-file.
14781         (x86_64-*-linux*): Ditto.
14782         * config/i386/i386.opt (mpc): New option.
14783         * config/i386/i386.c (overrride_options): Handle
14784         ix87_precision_string.
14785         * config/i386/crtprec.c: New file.
14786         * config/i386/t-crtpc: Ditto.
14787         * config/i386/linux.h (ENDFILE_SPEC): Add handling of -mpc32, -mpc64
14788         and -mpc80 options.
14789         * config/i386/linux64.h (ENDFILE_SPEC): Ditto.
14790         * config/i386/t-linux64 (EXTRA_MULTILIB_PARTS): Add
14791         crtprec32.o, crtprec64.o and crtprec80.o.
14792
14793         * doc/invoke.texi (Machine Dependent Options): Add -mpc32, -mpc64
14794         and -mpc80 options.
14795         (i386 and x86-64 Options): Document -mpc32, -mpc64 and -mpc80 options.
14796
14797 2007-04-02  Eric Christopher  <echristo@apple.com>
14798
14799         * doc/invoke.texi (i386 and x86-64 Options): Document -m64
14800         limitations on darwin.
14801
14802 2007-04-02  Anatoly Sokolov <aesok@post.ru>
14803
14804         PR target/31137
14805         * config/avr/avr.c (avr_rtx_costs): Add missing 'break' statements.
14806
14807 2007-04-02  Dave Korn  <dave.korn@artimi.com>
14808
14809         * doc/tm.texi (FUNCTION_MODE): Update and extend documentation.
14810
14811 2007-04-02  Dave Korn  <dave.korn@artimi.com>
14812
14813         * libgcc2.h (exception_descriptor): Don't forward-declare.
14814         (__get_eh_table_language, __get_eh_table_version): Delete
14815         prototypes of long-dead functions.
14816
14817 2007-04-01  Daniel Berlin  <dberlin@dberlin.org>
14818
14819         * ebitmap.h: New file
14820         * ebitmap.c: New file
14821         * Makefile.in (ebitmap.o): New target.
14822
14823 2007-04-01  Jan Hubicka  <jh@suse.cz>
14824
14825         * emit-rtl.c (emit_insn_before_setloc): Do not ICE when asked to emit
14826         before very first instruction.
14827
14828 2007-04-01  Jan Hubicka  <jh@suse.cz>
14829
14830         * ggc-page.c (ggc_print_statistics): Fix formatting string to avoid
14831         waring on 64bit hosts.
14832         * bitmap.h: Fix typo in bitmap_head_def.
14833
14834 2007-04-01  Steven Bosscher  <steven@gcc.gnu.org>
14835
14836         PR rtl-optimization/31391
14837         * cfgcleanup.c (try_optimize_cfg): If a removed label is turned
14838         into a DELETED_LABEL note, and the label is in an empty basic
14839         block, update BB_END as well as BB_HEAD.
14840
14841 2007-04-01  Richard Henderson  <rth@redhat.com>
14842
14843         PR tree-optimization/31169
14844         * tree-vrp.c (extract_range_from_binary_expr) <RSHIFT_EXPR>: Drop
14845         to varying if the range is outside [0,  prec-1].
14846
14847 2007-04-01  Richard Sandiford  <richard@codesourcery.com>
14848
14849         PR target/31388
14850         * config/mips/mips.md (load_const_gp): New insn.
14851         * config/mips/mips.c (mips_split_symbol): Avoid using or creating
14852         the MIPS16 GP pseudo register if no_new_pseudos.
14853         (mips16_gp_pseudo_reg): Use gen_load_const_gp.
14854
14855 2007-03-31  Andrew Pinski  <andrew_pinski@playstation.sony.com>
14856
14857         PR target/31364
14858         * config/rs6000/rs6000.md (call): Convert to LR hard reg for
14859         secureplt.
14860         (call_value): Likewise.
14861
14862 2007-03-31  Wolfgang Bangerth  <bangerth@dealii.org>
14863             Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
14864
14865         PR 14737
14866         * doc/invoke.texi: (optimization options): Reword description
14867         of -ffast-math. Document its primary purpose.
14868
14869 2007-03-31  Richard Guenther  <rguenther@suse.de>
14870
14871         * omp-low.c (splay-tree.h): Include.
14872         (lookup_decl): Replace splay-tree usage by pointer-map.
14873         (maybe_lookup_decl): Likewise.
14874         (new_omp_context): Likewise.
14875         (delete_omp_context): Likewise.
14876         * gimplify.c (splay-tree.h): Include.
14877         * tree-inline.c (insert_decl_map): Replace splay-tree usage by
14878         pointer-map.
14879         (remap_ssa_name): Likewise.
14880         (remap_decl): Likewise.
14881         (remap_type_1): Likewise.
14882         (remap_type): Likewise.
14883         (copy_body_r): Likewise.
14884         (expand_call_inline): Likewise.
14885         (clone_body): Likewise.
14886         (copy_tree_r): Likewise.
14887         (remap_save_expr): Likewise.
14888         (unsave_r): Likewise.
14889         (unsave_expr_now): Likewise.
14890         (tree_function_versioning): Likewise.
14891         (build_duplicate_type): Likewise.
14892         * tree-inline.h (pointer-set.h): Include instead of splay-tree.h.
14893         (struct copy_body_data): Replace splay-tree by pointer-map.
14894         * Makefile.in (TREE_INLINE_H): Depend on pointer-map.h,
14895         not $(SPLAY_TREE_H).
14896         (gimplify.o): Depend on $(SPLAY_TREE_H).
14897         (omp-low.p): Likewise.
14898
14899 2007-03-31  Anatoly Sokolov <aesok@post.ru>
14900
14901         * config/avr/predicates.md (even_register_operand,
14902         odd_register_operand): New predicates.
14903         * config/avr/avr.md (movw peephole2): New.
14904         (movw_r peephole2): New.
14905
14906 2007-03-30  Rafael Avila de Espindola  <espindola@google.com>
14907
14908         * tree.h (get_signed_or_unsigned_type): New.
14909         * fold-const.c (operand_equal_for_comparison_p): Use
14910         get_signed_or_unsigned_type instead of
14911         lang_hooks.types.signed_or_unsigned_type.
14912         * expr.c (store_expr): Ditto.
14913         * langhooks.c (get_signed_or_unsigned_type): New.
14914         (lhd_signed_or_unsigned_type): New.
14915         * langhooks.h (lhd_signed_or_unsigned_type): New.
14916         * langhooks-def.h (LANG_HOOKS_SIGNED_OR_UNSIGNED_TYPE): Define.
14917
14918 2007-03-30  Richard Henderson  <rth@redhat.com>
14919
14920         * tree-ssa-loop-ivopts.c: Include target.h.
14921         (produce_memory_decl_rtl): Pass the rtx through encode_section_info.
14922         (get_address_cost): Force SYMBOL_FLAG_LOCAL set.
14923         (force_expr_to_var_cost): Use produce_memory_decl_rtl.
14924         * Makefile.in (tree-ssa-loop-ivopts.o): Depend on TARGET_H.
14925
14926 2007-03-30  Richard Henderson  <rth@redhat.com>
14927             Kai Tietz  <kai.tietz@onevision.com>
14928
14929         * config/i386/cygming.h (DWARF2_DEBUGGING_INFO): Enable by
14930         default for 64-bit.
14931         (PREFERRED_DEBUGGING_TYPE): Prefer dwarf2 for 64-bit.
14932         (TARGET_64BIT_MS_ABI): New.
14933         (DBX_REGISTER_NUMBER): Handle 64-bit.
14934         (SIZE_TYPE, PTRDIFF_TYPE): Use long long for 64-bit.
14935         (LONG_TYPE_SIZE): Force to 32.
14936         (REG_PARM_STACK_SPACE): New.
14937         (OUTGOING_REG_PARM_STACK_SPACE): New.
14938         (REGPARM_MAX, SSE_REGPARM_MAX): New.
14939         (HANDLE_PRAGMA_PUSH_POP_MACRO): New.
14940         (STACK_BOUNDARY): Use 128 for 64-bit.
14941         * config/i386/cygwin.asm: Use push/ret to preserve call stack.
14942         Add 64-bit implementation.
14943         * config/i386/gthr-win32.c (__gthr_win32_key_create): Mark dtor
14944         argument unused.
14945         * config/i386/i386.c (x86_64_ms_abi_int_parameter_registers): New.
14946         (override_options): Set ix86_cmodel for TARGET_64BIT_MS_ABI.
14947         Warn for -mregparm, -mrtd in 64-bit mode; force ix86_regparm
14948         for 64-bit; use TARGET_SUBTARGET64_DEFAULT.
14949         (ix86_handle_cconv_attribute): Don't warn when ignoring if
14950         TARGET_64BIT_MS_ABI.
14951         (ix86_function_arg_regno_p): Handle TARGET_64BIT_MS_ABI.
14952         (ix86_pass_by_reference): Likewise.
14953         (ix86_function_value_regno_p): Likewise.
14954         (ix86_build_builtin_va_list): Likewise.
14955         (ix86_va_start, ix86_gimplify_va_arg): Likewise.
14956         (function_arg_advance_ms_64): New.
14957         (function_arg_advance): Call it.
14958         (function_arg_ms_64): New.
14959         (function_arg): Call it.
14960         (function_value_ms_64): New.
14961         (ix86_function_value_1): Call it.
14962         (return_in_memory_ms_64): New.
14963         (ix86_return_in_memory): Call it.
14964         (setup_incoming_varargs_ms_64): New.
14965         (ix86_setup_incoming_varargs): Call it.
14966         (ix86_expand_prologue): Handle 64-bit stack probing.
14967         (legitimize_pic_address): Handle TARGET_64BIT_MS_ABI.
14968         (output_pic_addr_const): Likewise.
14969         (x86_this_parameter): Likewise.
14970         (x86_output_mi_thunk): Likewise.
14971         (x86_function_profiler): Likewise.
14972         (TARGET_STRICT_ARGUMENT_NAMING): New.
14973         * config/i386/i386.h (TARGET_SUBTARGET64_DEFAULT): New.
14974         (TARGET_64BIT_MS_ABI): New.
14975         (CONDITIONAL_REGISTER_USAGE): Handle TARGET_64BIT_MS_ABI.
14976         * config/i386/i386.md (allocate_stack_worker): Remove.
14977         (allocate_stack_worker_32): Rename from allocate_stack_worker_1;
14978         describe the clobber of eax without a match_scratch.
14979         (allocate_stack_worker_postreload): Remove.
14980         (allocate_stack_worker_64): Rename from allocate_stack_worker_rex64;
14981         describe the clobbers of rax, r10, r11 properly; use __chkstk symbol.
14982         (allocate_stack_worker_rex64_postreload): Remove.
14983         (allocate_stack): Handle 64-bit.
14984         * config/i386/i386elf (TARGET_SUBTARGET_DEFAULT): Remove.
14985         * config/i386/mingw32.h (TARGET_VERSION): Set correctly for 64-bit.
14986         (EXTRA_OS_CPP_BUILTINS): Handle 64-bit.
14987         (STANDARD_INCLUDE_DIR): Handle TARGET_64BIT_DEFAULT.
14988         (STANDARD_STARTFILE_PREFIX_1): Likewise.
14989         * config/i386/unix.h (TARGET_SUBTARGET64_DEFAULT): New.
14990         * config.build (x86_64-*-mingw*): New host.
14991         * config.host (x86_64-*-mingw*): New host.
14992         * config.gcc (x86_64-*-mingw*): New target.
14993         * gthr-win32.h (__gthread_key_create): Mark dtor unused.
14994
14995 2007-03-30  Richard Henderson  <rth@redhat.com>
14996             Kai Tietz  <kai.tietz@onevision.com>
14997
14998         * c-pragma.c (struct def_pragma_macro_value): New.
14999         (struct def_pragma_macro): New.
15000         (pushed_macro_table): New.
15001         (dpm_hash, dpm_eq): New.
15002         (handle_pragma_push_macro, handle_pragma_pop_macro): New.
15003         (init_pragma): Install them.
15004         * doc/tm.texi (HANDLE_PRAGMA_PUSH_POP_MACRO): New.
15005
15006 2007-03-30  Anatoly Sokolov <aesok@post.ru>
15007
15008         * config/avr/avr.c (avr_override_options): Clear
15009         'flag_delete_null_pointer_checks'.
15010
15011 2007-03-30  Paolo Carlini  <pcarlini@suse.de>
15012
15013         PR c++/26099
15014         * c-common.h (enum rid): Add RID_HAS_NOTHROW_ASSIGN,
15015         RID_HAS_NOTHROW_CONSTRUCTOR, RID_HAS_NOTHROW_COPY,
15016         RID_HAS_TRIVIAL_ASSIGN, RID_HAS_TRIVIAL_CONSTRUCTOR,
15017         RID_HAS_TRIVIAL_COPY, RID_HAS_TRIVIAL_DESTRUCTOR,
15018         RID_HAS_VIRTUAL_DESTRUCTOR, RID_IS_ABSTRACT, RID_IS_BASE_OF,
15019         RID_IS_CONVERTIBLE_TO, RID_IS_CLASS, RID_IS_EMPTY, RID_IS_ENUM,
15020         RID_IS_POD, RID_IS_POLYMORPHIC, RID_IS_UNION, as
15021         C++ extensions.
15022         * doc/extend.texi (Extensions to the C++ Language): Add Type Traits.
15023
15024 2007-03-30  Steven Bosscher  <steven@gcc.gnu.org>
15025
15026         * regmove.c: Move all of pass_stack_adjustments from here...
15027         * combine-stack-adj.c: ...to this new file.
15028         * Makefile.in: Add rules for combine-stack-adj.o.
15029
15030 2007-03-30  Zdenek Dvorak  <dvorakz@suse.cz>
15031
15032         PR tree-optimization/31383
15033         * tree-data-ref.c (affine_function_equal_p): Do not require the
15034         vectors to have the same length.
15035
15036 2007-03-30  Jan Hubicka  <jh@suse.cz>
15037
15038         PR middle-end/30700
15039         * dwarf2out.c (reference_to_unused): Ask cgraph for functions
15040         availablility; add more sanity checking; ask varpool only about
15041         VAR_DECL.
15042
15043 2007-03-29  Richard Henderson  <rth@redhat.com>
15044
15045         * unwind-generic.h (_sleb128_t, _uleb128_t): Don't use HAVE_LONG_LONG
15046         to decide, but __SIZEOF_LONG_LONG__.
15047
15048 2007-03-29  Richard Henderson  <rth@redhat.com>
15049
15050         * emutls.c (struct __emutls_array): New.
15051         (emutls_destroy): Use it instead of casting element 0 from void*.
15052         (__emutls_get_address): Likewise.
15053
15054 2007-03-29  Richard Henderson  <rth@redhat.com>
15055
15056         * varasm.c (initializer_constant_valid_p): Don't deny
15057         DECL_DLLIMPORT_P on functions.
15058
15059         * config/i386/cygming.h: Remove function declarations.
15060         (SUBTARGET_ENCODE_SECTION_INFO): Don't undef first.
15061         (ASM_OUTPUT_LABELREF): Remove.
15062         (COMMON_ASM_OP): Remove.
15063         (ASM_OUTPUT_COMMON): Remove.
15064         (ASM_OUTPUT_ALIGNED_DECL_COMMON): New.
15065         (ASM_DECLARE_OBJECT_NAME): Use i386_pe_maybe_record_exported_symbol.
15066         (ASM_DECLARE_FUNCTION_NAME): Likewise.
15067         * config/i386/i386-interix.h (SUBTARGET_ENCODE_SECTION_INFO):
15068         Rename from TARGET_ENCODE_SECTION_INFO.
15069         * config/i386/netware.h: Likewise.
15070         * config/i386/i386-protos.h: Update.
15071         * config/i386/i386.c (ix86_function_ok_for_sibcall): Turn ifdef
15072         of TARGET_DLLIMPORT_DECL_ATTRIBUTES into straight if.
15073         (legitimate_constant_p): Reject dllimports.
15074         (dllimport_map, get_dllimport_decl): New.
15075         (legitimize_dllimport_symbol): New.
15076         (legitimize_address, ix86_expand_move): Use it.
15077         (TARGET_BINDS_LOCAL_P): Redefine for TARGET_DLLIMPORT_DECL_ATTRIBUTES.
15078         * config/i386/i386.h (DLL_IMPORT_EXPORT_PREFIX): Remove.
15079         (SYMBOL_FLAG_DLLIMPORT, SYMBOL_REF_DLLIMPORT_P): New.
15080         (SYMBOL_FLAG_DLLEXPORT, SYMBOL_REF_DLLEXPORT_P): New.
15081         * config/i386/predicates.md (constant_call_address_operand): Only
15082         accept symbols; reject dllimport_p symbols.
15083         * config/i386/uwin.h (ASM_DECLARE_FUNCTION_NAME): Use
15084         i386_pe_maybe_record_exported_symbol.
15085         * config/i386/winnt.c (DLL_IMPORT_PREFIX, DLL_EXPORT_PREFIX): Remove.
15086         (i386_pe_determine_dllexport_p): Rename from i386_pe_dllexport_p.
15087         (i386_pe_determine_dllimport_p): Rename from i386_pe_dllimport_p;
15088         trust the setting of DECL_DLLIMPORT_P.
15089         (i386_pe_dllexport_name_p, i386_pe_dllimport_name_p): Remove.
15090         (i386_pe_mark_dllexport, i386_pe_mark_dllimport): Remove.
15091         (gen_stdcall_or_fastcall_suffix): Return NULL if no change required;
15092         tidy the argument scanning loop.
15093         (i386_pe_encode_section_info): Set SYMBOL_FLAG_DLLIMPORT and
15094         SYMBOL_FLAG_DLLEXPORT in SYMBOL_REF_FLAGS.
15095         (i386_pe_strip_name_encoding): Remove.
15096         (i386_pe_binds_local_p): New.
15097         (i386_pe_strip_name_encoding_full): Use default_strip_name_encoding.
15098         (i386_pe_output_labelref): Remove.
15099         (i386_pe_asm_output_aligned_decl_common): New.
15100         (i386_pe_maybe_record_exported_symbol): Rename from
15101         i386_pe_record_exported_symbol; check for dllexported symbols.
15102
15103 2007-03-29  Zack Weinberg  <zack@mrtock.ucsd.edu>
15104
15105         * gengtype.c (oprintf): Mostly revert changes from 2007-03-26;
15106         add comment explaining why vsnprintf cannot be used.
15107
15108 2007-03-29  Douglas Gregor  <doug.gregor@gmail.com>
15109
15110         PR tree-optimization/30666
15111         * tree.c (build_complex_type): When creating type names for DWARF2
15112         debug info, create TYPE_DECLs for TYPE_NAME instead of
15113         IDENTIFIER_NODEs.
15114         (build_common_tree_nodes_2): Use build_complex_type when building
15115         predefined complex types, to preserve canonical types.
15116
15117 2007-03-29  Steven Bosscher  <steven@gcc.gnu.org>
15118
15119         * ifcvt.c (struct noce_if_info): Add then_else_reversed field.
15120         (noce_get_alt_condition): Look at it to determine whether to
15121         reverse the condition or not.
15122         (noce_get_condition): Substitute the truth for lies.
15123         (noce_find_if_block): Set the then_else_reversed field.
15124
15125 2007-03-29  Lars Poeschel <larsi@wh2.tu-dresden.de>
15126
15127         * config/fr30/fr30.md (movdi): Do not accept immediates as the
15128         destination of this insn.
15129         * config/fr30/fr30.c (fr30_move_double): Use emit_move_insn rather
15130         than calling gen_rtx_SET directly.  Use r0 to hold the value of
15131         'address + 4' rather than a stack based temporary which can be
15132         mis-optimized away.
15133
15134 2007-03-29  Andreas Krebbel  <krebbel1@de.ibm.com>
15135
15136         * config/s390/s390.c (s390_secondary_input_reload_class,
15137         s390_secondary_output_reload_class): Functions removed.
15138         (s390_secondary_reload): New function.
15139         (TARGET_SECONDARY_RELOAD): Target macro defined.
15140         * config/s390/s390.h (SECONDARY_INPUT_RELOAD_CLASS,
15141         SECONDARY_OUTPUT_RELOAD_CLASS): Macro definitions removed.
15142         * config/s390/s390.md ("reload_outti", "reload_outdi",
15143         "reload_indi", "reload_insi", "reload_out<mode>", "reload_in<mode>",
15144         "reload_out<mode>"): Expanders removed.
15145         ("reload<mode>_plus", "reload<mode>_nonoffmem_in",
15146         "reload<mode>_nonoffmem_out"): Expanders added.
15147
15148 2007-03-29  Andreas Krebbel  <krebbel1@de.ibm.com>
15149
15150         * regmove.c (optimize_reg_copy_1): Don't perform DEST->SRC repair
15151         action if SRC->DEST replacement failed anyway.
15152
15153 2007-03-28  Mike Stump  <mrs@apple.com>
15154
15155         * config/darwin9.h (ASM_OUTPUT_ALIGNED_COMMON): Add.
15156         * config/darwin.h (MAX_OFILE_ALIGNMENT): Fix.
15157         * config/rs6000/darwin.h (ASM_OUTPUT_ALIGNED_COMMON): Removed #undef.
15158
15159 2007-03-28  Dwarakanath Rajagopal  <dwarak.rajagopal@amd.com>
15160
15161         * config.gcc: Accept barcelona as a variant of amdfam10.
15162         * config/i386/i386.c (override_options): Likewise.
15163         * doc/invoke.texi: Likewise.
15164
15165 2007-03-28  Eric Botcazou  <ebotcazou@adacore.com>
15166
15167         * tree-dfa.c (get_ref_base_and_extent): Do not expect positive
15168         offsets for BIT_FIELD_REF and COMPONENT_REF.
15169
15170 2007-03-28  Richard Guenther  <rguenther@suse.de>
15171
15172         * tree.c (is_global_var): Move ...
15173         * tree-flow-inline.h (is_global_var): ... here.
15174         * tree.h (is_global_var): Remove declaration.
15175
15176 2007-03-28  Uros Bizjak  <ubizjak@gmail.com>
15177
15178         * config/i386/i386.h (X86_TUNE_PROMOTE_HIMODE_IMUL): New tuning
15179         option.
15180         (TARGET_TUNE_PROMOTE_HIMODE_IMUL): New define. Use new tuning option.
15181         * config/i386/i386.c (ix86_tune_features): Initialize new
15182         tuning option.
15183         * config/i386/predicates.md (promotable_binary_operator): Use
15184         TARGET_TUNE_PROMOTE_HIMODE_IMUL.
15185
15186 2007-03-28  Grigory Zagorodnev <grigory_zagorodnev@linux.intel.com>
15187
15188         PR target/31380
15189         * config/i386/sse.md (uminv16qi3): Use UMIN instead of UMAX.
15190
15191 2007-03-28  Lars Poeschel <larsi@wh2.tu-dresden.de>
15192
15193         * config/fr30/fr30.md (movsi_internal): Change destination
15194         constraint from m to V and add m to the end.
15195
15196 2007-03-28  Christian Bruel  <christian.bruel@st.com>
15197
15198         * config/sh/sh.md (movsi_i): Fix type attribute.
15199
15200 2007-03-28  Christian Bruel  <christian.bruel@st.com>
15201
15202         * config/sh/sh.md (movsi_ie): Fix memory constraints attribute length.
15203         (movsf_ie): Likewise.
15204
15205 2007-03-28  Christian Bruel  <christian.bruel@st.com>
15206
15207         * config.gcc: Add sh4-300 to multilib.
15208         * config/sh/t-mlib-sh4-300: New file.
15209
15210 2007-03-28  Andreas Krebbel  <krebbel1@de.ibm.com>
15211
15212         * config/s390/s390.md ("fix_trunc<mode>di2"): New expander.
15213         ("fix_trunc<DFP:mode>di2_dfp"): New insn definition renamed from
15214         fix_trunc<mode>di2.
15215         ("fixuns_truncdddi2", "fixuns_trunctddi2"): Use
15216         fix_trunc<DFP:mode>di2_dfp instead of fix_trunc<mode>di2.
15217         ("fix_truncdfsi2", "fix_truncsfsi2", "fixuns_truncdddi2",
15218         "fixuns_trunctddi2"): Whitespace fix.
15219
15220 2007-03-28  Kaz Kojima  <kkojima@gcc.gnu.org>
15221
15222         * config/sh/sh.h (CALL_COOKIE_RET_TRAMP_SHIFT): Move after
15223         the definition of struct sh_args.
15224         (CALL_COOKIE_RET_TRAMP, CALL_COOKIE_STACKSEQ_SHIFT,
15225         CALL_COOKIE_INT_REG_GET): Likewise.
15226
15227 2007-03-28  Steven Bosscher  <steven@gcc.gnu.org>
15228
15229         * ifcvt.c (cond_exec_find_if_block): Return FALSE if no
15230         transformations are applied successfully.
15231
15232 2007-03-27  Douglas Gregor  <doug.gregor@gmail.com>
15233
15234         * tree.c (tree_contains_struct): Permit 512 tree codes.
15235         * tree.h (tree_contains_struct): Ditto.
15236         (MAX_TREE_CODES): Ditto.
15237         (struct tree_base): Make CODE 16 bits, instead of 8 bits. Add
15238         SPARE member to store remaining padding bits.
15239
15240 2007-03-27  Anatoly Sokolov <aesok@post.ru>
15241
15242         * config/avr/avr.c (avr_mcu_types): Move at90usb82 device to 'avr4'
15243         architecture.
15244
15245 2007-03-27  Janis Johnson  <janis187@us.ibm.com>
15246
15247         * configure.ac: Fix assembler test for powerpc*-linux decimal float.
15248         * configure: Regenerate.
15249
15250         * configure: Regenerate using the correct version of autoconf.
15251
15252 2007-03-27  Anatoly Sokolov  <aesok@post.ru>
15253
15254         * config/avr/avr.c (avr_hard_regno_mode_ok): Disallow QImode in stack
15255         pointer regs.
15256         * config/avr/avr.h (REGISTER_NAMES): Rename "__SPL__" and "__SPH__"
15257         regs to "__SP_L__" and "__SP_H__".
15258
15259 2007-03-27  Richard Guenther  <rguenther@suse.de>
15260
15261         * tree-dfa.c (get_ref_base_and_extent): Replace bit_offset and
15262         computations with it with a HOST_WIDE_INT variable.
15263
15264 2007-03-26  Mike Stump  <mrs@apple.com>
15265
15266         * config/rs6000/darwin.h (DARWIN_MINVERSION_SPEC): Add
15267         objective-c-header, objective-c++-header and objc++-cpp-output
15268         support.
15269         * config/i386/darwin.h (DARWIN_MINVERSION_SPEC): Likewise.
15270
15271 2007-03-26  Richard Henderson  <rth@redhat.com>
15272
15273         PR target/31361
15274         * config/i386/i386.c (IX86_BUILTIN_PSLLDQ128, IX86_BUILTIN_PSLLW128,
15275         IX86_BUILTIN_PSLLD128, IX86_BUILTIN_PSLLQ128, IX86_BUILTIN_PSRAW128,
15276         IX86_BUILTIN_PSRAD128, IX86_BUILTIN_PSRLW128, IX86_BUILTIN_PSRLD128,
15277         IX86_BUILTIN_PSRLQ128): New.
15278         (ix86_init_mmx_sse_builtins): Add them.
15279         (ix86_expand_builtin): Expand them.
15280         * config/i386/sse.md (ashr<mode>3, lshr<mode>3, ashl<mode>3): Make
15281         operand 2 be TImode.
15282         * config/i386/emmintrin.h (_mm_slli_epi64, _mm_srai_epi16,
15283         _mm_srai_epi32, _mm_srli_epi16, _mm_srli_epi32,
15284         _mm_srli_epi64): Mark __B const.
15285         (_mm_srli_si128, _mm_srli_si128): Fix disabled inline versions.
15286         (_mm_sll_epi16, _mm_sll_epi32, _mm_sll_epi64, _mm_sra_epi16,
15287         _mm_sra_epi32, _mm_srl_epi16, _mm_srl_epi32, _mm_srl_epi64): Use
15288         new two-vector shift builtins.
15289
15290 2007-03-26  Ian Lance Taylor  <iant@google.com>
15291
15292         PR tree-optimization/31345
15293         * tree-vrp.c (extract_range_from_binary_expr): Turn ranges like
15294         [+INF, +INF(OVF)] into VARYING.
15295
15296 2007-03-26  Zack Weinberg  <zackw@panix.com>
15297
15298         * gengtype-parse.c: New file.
15299         * gengtype-yacc.y: Delete.
15300         * gengtype-lex.l: Don't include gengtype-yacc.h.
15301         Define YY_DECL and yyterminate appropriately for recursive
15302         descent parser.  yylval is now a string out-parameter to yylex.
15303         (HWS, EOID): New shorthand.
15304         (IWORD): Add a couple more types.
15305         (yylex): Add a setup stanza.  Remove the complex rules for
15306         detecting GTY'ed types and typedefs; replace with simple
15307         keyword detectors.  Adjust everything for the changed
15308         definition of yylval.  Ignore all pp-directives, not just #define.
15309         (yyerror): Delete.
15310         (parse_file): Rename yybegin; do not call yyparse.
15311         (yyend): New.
15312         * gengtype.c (xasprintf): Export again.
15313         (this_file): New.  Use everywhere __FILE__ was being used.
15314         (get_lang_bitmap): Special case types defined in gengtype.c.
15315         (do_typedef, new_structure): Suppress definition of certain types.
15316         (new_structure): Improve diagnostics of duplicate definitions.
15317         Make sure location_s is associated with input.h.
15318         (nreverse_pairs, define_location_structures): New functions.
15319         (main): Improve tagging of kludge types.  Remove old kludges
15320         for input.h types; use define_location_structures.
15321         * gengtype.h: Update prototypes.  Define token codes here.
15322         * Makefile.in: Remove all references to gengtype-yacc.
15323         Add rules for gengtype-parse.o.  Adjust rules for gengtype-lex.o
15324         and gengtype.
15325         * bitmap.h (struct bitmap_head_def): Coalesce definitions,
15326         add GTY((skip)) to the field that's only conditionally there.
15327         * doc/install.texi: Document that Bison is no longer required
15328         unless building treelang.
15329
15330         * gengtype.c: Don't include gtyp-gen.h.
15331         (srcdir): Declare here.
15332         (base_files, lang_dir_names): Allocate dynamically.
15333         (gt_files, num_gt_files, num_lang_dirs): New globals.
15334         (measure_input_list, read_input_line, read_input_list)
15335         (set_lang_bitmap): New functions.
15336         (get_base_file_bitmap): Rename get_lang_bitmap and drastically
15337         simplify, relying on read_input_list to set up the bitmaps.
15338         (main): Arguments are no longer unused.  Check for correct number
15339         of command line arguments, set srcdir and srcdir_len, then call
15340         read_input_list, before doing anything else.  No need to worry
15341         about duplicates in main loop.
15342         * configure.ac: Simplify the calculation of all_gtfiles.
15343         Put language tags in there.  Don't set or substitute
15344         all_gtfiles_files_langs or all_gtfiles_files_frags.
15345         * Makefile.in: Revamp the way gengtype is invoked, now that it
15346         takes a file on its command line with a much simpler format.
15347         Remove or replace with gtyp-input.list all references to gtyp-gen.h.
15348         (GTFILES): Remove duplicates and C source files.
15349         * c-config-lang.in, cp/config-lang.in, objc/config-lang.in
15350         * objcp/config-lang.in: Add c-pragma.h to gtfiles.
15351         * configure: Regenerate.
15352
15353         * gengtype.h: Remove all type definitions to gengtype.c; leave
15354         only definitions of options_p, type_p, and pair_p as opaque
15355         pointers.  Update prototypes.
15356         * gengtype.c: Many type definitions moved here from gengtype.h.
15357         Consolidate type definitions at the top of the file.
15358         (xvasprintf): Delete.
15359         (xasprintf): Make static.
15360         (create_nested_pointer_option): Add 'next' parameter.
15361         (create_field_all, create_field_at): New functions.
15362         (create_field): Now a thin wrapper around create_field_all.
15363         (create_optional_field): Rename create_optional_field_ and add
15364         line argument.  Original name is now a macro which supplies
15365         __LINE__.
15366         (oprintf): Use vsnprintf directly.
15367         (close_output_files): Use fatal rather than perror/exit.
15368         (note_def_vec, note_def_vec_alloc): Use create_field_at.
15369         (main): Set progname.  Don't use exit.
15370         * gengtype-yacc.y (struct_fields): Use create_field_at.
15371         (option, optionseqopt): Delete.
15372         (optionseq): Consolidate productions from option here so we
15373         can use the first argument to create_option.
15374
15375         * gengtype-lex.l: Distinguish unions from structures in the
15376         token type.  Don't call find_structure; return the tag as a string.
15377         * gengtype-yacc.y: Add new token types ENT_TYPEDEF_UNION and
15378         ENT_UNION.  Type of these, ENT_TYPEDEF_STRUCT, and ENT_STRUCT is
15379         string.  Reorganize typedef_struct production accordingly.
15380         Use create_nested_ptr_option.
15381         * gengtype.c (create_nested_ptr_option): New function.
15382         * gengtype.h: Declare it.
15383
15384         * gengtype.h (struct type): Replace 'sc' with boolean, scalar_is_char.
15385         (string_type): Don't declare.
15386         (do_scalar_typedef): Declare.
15387         (create_scalar_type): Update prototype.
15388         * gengtype.c (string_type): Make static.
15389         (scalar_nonchar, scalar_char): New.
15390         (do_scalar_typedef): Export.  Always use scalar_nonchar for the type.
15391         (resolve_typedef): Use scalar_nonchar for error recovery.
15392         (create_scalar_type): Remove name_len field.  Return scalar_char
15393         or scalar_nonchar as appropriate.
15394         (adjust_field_type): Look at scalar_is_char boolean to decide whether
15395         to use string_type.
15396         (throughout): Use scalar_nonchar instead of calling
15397         create_scalar_type, whenever possible.
15398         (main): Initialize scalar_char and scalar_nonchar before calling
15399         gen_rtx_next.
15400         * gengtype-lex.l: Adjust for removal of second argument to
15401         create_scalar_type.  Use yylval.s instead of yylval.t when
15402         returning SCALAR.
15403         * gengtype-yacc.y: Type of SCALAR is string.  Call
15404         create_scalar_type from type:SCALAR rule.  Adjust for removal of
15405         second argument to create_scalar_type.
15406
15407         * vec.h: Remove all #if IN_GENGTYPE blocks.
15408         Add comment saying that changes may require adjustments to gengtype.
15409         * gengtype.c: Don't include coretypes.h or tm.h.
15410         Add comment to inclusion of errors.h.
15411         (note_def_vec, note_def_vec_alloc): New functions.
15412         * gengtype.h: Declare new functions.
15413         * gengtype-lex.l: Don't include coretypes.h.
15414         (YY_INPUT, macro_input, push_macro_expansion, mangle_macro_name):
15415         Delete.
15416         (update_lineno): Remove unnecessary prototype.
15417         (DEF_VEC_* rules): Simplify using note_def_vec / note_def_vec_alloc.
15418         (VEC rule): Just return VEC_TOKEN.
15419         * gengtype-yacc.y (VEC_TOKEN): New token type.
15420         (type): Add a production for VEC(a,b).
15421         * Makefile.in: Update dependencies.
15422
15423         * gengtype-lex.l: Remove rules for parsing pointer-to-function
15424         typedefs that use the old PARAMS macro.
15425
15426         * gengtype-lex.l: Remove all rules and states relating to yacc
15427         input files.
15428         * gengtype-yacc.y: Similarly.
15429         * gengtype.c (note_yacc_type): Delete function.
15430         * gengtype.h: Update prototypes.
15431
15432 2007-03-26  Joseph Myers  <joseph@codesourcery.com>
15433
15434         * tree-pretty-print.c (dump_generic_node): Report precision of
15435         unnamed integer types.
15436
15437 2007-03-26  Steven Bosscher  <steven@gcc.gnu.org>
15438
15439         * ifcvt.c (noce_try_store_flag_constants): Don't check
15440         no_new_pseudos here.
15441         (noce_try_store_flag_constants): Don't check no_new_pseudos.
15442         (noce_try_addcc, noce_try_store_flag_mask, noce_try_cmove_arith,
15443         noce_try_cmove_arith, noce_try_minmax, noce_try_abs,
15444         noce_try_sign_mask): Likewise.
15445         (if_convert): Check no_new_pseudos here.
15446
15447         (cond_exec_process_if_block, noce_process_if_block, find_if_block):
15448         Remove prototypes.
15449         (struct noce_if_info): Add then_bb, else_bb, join_bb members.
15450         (noce_get_condition): Handle new then_else_reversed argument.
15451         (noce_init_if_info): Remove, fold into noce_find_if_block.
15452         (noce_process_if_block): Take a struct noce_if_info as the
15453         argument.  Don't set up one based on ce_if_info.  Update pointer
15454         references accordingly.
15455         (cond_move_process_if_block): Likewise.
15456         (process_if_block): Removed.
15457         (find_if_block): Removed.  Move functionality two new functions,
15458         noce_find_if_block and cond_exec_find_if_block.
15459         (noce_find_if_block): New function.  Be aware of IF-THEN-JOIN
15460         blocks and the symmetric IF-ELSE-JOIN case.
15461         (cond_exec_find_if_block): Also new function mostly based on old
15462         find_if_block and process_if_block.
15463         (find_if_header): Replace find_if_block call with separately
15464         guarded calls to noce_find_if_block and cond_exec_find_if_block.
15465         (find_cond_trap): Update noce_get_condition call.
15466         (dead_or_predicable): Likewise.
15467
15468 2007-03-26  Jakub Jelinek  <jakub@redhat.com>
15469
15470         * config/i386/i386.c (IX86_BUILTIN_CMPNEPD, IX86_BUILTIN_CMPNESD):
15471         Remove.
15472         (IX86_BUILTIN_PSLLW128, IX86_BUILTIN_PSLLD128, IX86_BUILTIN_PSLLQ128,
15473         IX86_BUILTIN_PSRAW128, IX86_BUILTIN_PSRAD128, IX86_BUILTIN_PSRLW128,
15474         IX86_BUILTIN_PSRLD128, IX86_BUILTIN_PSRLQ128): Remove.
15475         (ix86_init_mmx_sse_builtins): Remove v8hi_ftype_v8hi_v2di and
15476         v4si_ftype_v4si_v2di.  Remove __builtin_ia32_psllw128,
15477         __builtin_ia32_pslld128, __builtin_ia32_psllq128,
15478         __builtin_ia32_psrlw128, __builtin_ia32_psrld128,
15479         __builtin_ia32_psrlq128, __builtin_ia32_psraw128 and
15480         __builtin_ia32_psrad128 builtins.
15481
15482 2007-03-26  Uros Bizjak  <ubizjak@gmail.com>
15483
15484         * reg-stack.c (replace_reg): Use IN_RANGE macro in gcc_assert().
15485         * config/i386/constraints.md
15486         (define_constraint "I"): Use IN_RANGE macro.
15487         (define_constraint "J"): Ditto.
15488         (define_constraint "K"): Ditto.
15489         (define_constraint "M"): Ditto.
15490         (define_constraint "N"): Ditto.
15491         (define_constraint "O"): Ditto.
15492         * config/i386/predicates.md
15493         (define_predicate "register_no_elim_operand"): Use IN_RANGE macro.
15494         (define_predicate "const_0_to_3_operand"): Ditto.
15495         (define_predicate "const_0_to_7_operand"): Ditto.
15496         (define_predicate "const_0_to_15_operand"): Ditto.
15497         (define_predicate "const_0_to_63_operand"): Ditto.
15498         (define_predicate "const_0_to_255_operand"): Ditto.
15499         (define_predicate "const_1_to_31_operand"): Ditto.
15500         (define_predicate "const_2_to_3_operand"): Ditto.
15501         (define_predicate "const_4_to_7_operand"): Ditto.
15502
15503 2007-03-25  David Edelsohn  <edelsohn@gnu.org>
15504
15505         * config/rs6000/rs6000.c (rs6000_emit_prologue): Always clobber LR
15506         in SImode for save_world.
15507         * config/rs6000/altivec.md (save_world, restore_world): Convert to
15508         LR hard reg.
15509
15510 2007-03-25  Dorit Nuzman  <dorit@il.ibm.com>
15511
15512         PR tree-optimization/30784
15513         * fold-const.c (fold_ternary): Handle CONSTRUCTOR in case
15514         BIT_FIELD_REF.
15515
15516 2007-03-25  Revital Eres  <eres@il.ibm.com>
15517
15518         * tree-if-conv.c (if_convertible_gimple_modify_stmt_p):
15519           Fold movement_possibility function into it.
15520
15521 2007-03-25  David Edelsohn  <edelsohn@gnu.org>
15522
15523         * config/rs6000/darwin.md (load_macho_picbase): Ignore operand 0.
15524         (load_macho_picbase_{si,di}): Convert to LR hard reg.
15525         (call_indirect_nonlocal_darwin64): Same.
15526         (call_nonlocal_darwin64): Same.
15527         (call_value_indirect_nonlocal_darwin64): Same.
15528         (call_value_nonlocal_darwin64): Same.
15529         (sibcall_nonlocal_darwin64): Same.
15530         (sibcall_value_nonlocal_darwin64): Same.
15531         (sibcall_symbolic_64): Same.
15532         (sibcall_value_symbolic_64): Same.
15533         * config/rs6000/rs6000.c (rs6000_legitimize_tls_address): Remove
15534         LR pseudo.
15535         (rs6000_emit_load_toc_table): Same.
15536         * config/rs6000/altivec.md (restore_world): Convert to LR hard reg.
15537         * config/rs6000/rs6000.md (mulh_call): Convert to LR hard reg.
15538         (mull_call): Same.
15539         (divss_call): Same.
15540         (divus_call): Same.
15541         (quoss_call): Same.
15542         (quous_call): Same.
15543         (load_toc_v4_pic_si): Same
15544         (load_toc_v4_PIC_1): Same.
15545         (load_toc_v4_PIC_1b): Same.
15546         (call_indirect_aix{32,64}): Same.
15547         (call_value_indirect_aix{32,64}): Same.
15548         (call): Same.
15549         (call_value): Same.
15550         (call_local{32,64}): Same.
15551         (call_value_local{32,64}): Same.
15552         (call_indirect_nonlocal_aix{32,64}): Same.
15553         (call_nonlocal_aix{32,64}): Same.
15554         (call_value_indirect_nonlocal_aix{32,64}): Same.
15555         (call_value_nonlocal_aix{32,64}): Same.
15556         (call_indirect_nonlocal_sysv<mode>): Same.
15557         (call_nonlocal_sysv<mode>): Same.
15558         (call_value_indirect_nonlocal_sysv<mode>): Same.
15559         (call_value_nonlocal_sysv<mode>): Same.
15560         (sibcall): Same.
15561         (sibcall_local{32,64}): Same.
15562         (sibcall_value_local{32,64}): Same.
15563         (sibcall_nonlocal_aix{32,64}): Same.
15564         (sibcall_value_nonlocal_aix{32,64}): Same.
15565         (sibcall_nonlocal_sysv<mode>): Same.
15566         (sibcall_value): Same.
15567         (sibcall_value_nonlocal_sysv<mode>): Same.
15568
15569 2007-03-24  Paul Brook  <paul@codesourcery.com>
15570
15571         * config/arm/lib1funcs.asm (div0): Use ARM_FUNC_START and do_push.
15572         * config/arm/linux-eabi.h: Remove legacy syscall hack.
15573
15574 2007-03-24  Richard Henderson  <rth@redhat.com>
15575
15576         * config/ia64/constraints.md: New file.
15577         * config/ia64/predicates.md: Replace CONST_OK_FOR_? with
15578         satisfies_constraint_?.
15579         * config/ia64/ia64.c (ia64_move_ok, ia64_legitimate_constant_p,
15580         ia64_reload_gp, spill_restore_mem, ia64_expand_prologue,
15581         ia64_expand_epilogue, ia64_split_return_addr_rtx, ia64_rtx_costs,
15582         ia64_output_mi_thunk): Likewise.
15583         (ia64_const_ok_for_letter_p): Remove.
15584         (ia64_const_double_ok_for_letter_p): Remove.
15585         (ia64_extra_constraint): Remove.
15586         * config/ia64/ia64.h (REG_CLASS_FROM_LETTER): Remove.
15587         (CONST_OK_FOR_I, CONST_OK_FOR_J, CONST_OK_FOR_K, CONST_OK_FOR_L,
15588         CONST_OK_FOR_M, CONST_OK_FOR_N, CONST_OK_FOR_O, CONST_OK_FOR_P,
15589         CONST_OK_FOR_LETTER_P, CONST_DOUBLE_OK_FOR_G,
15590         CONST_DOUBLE_OK_FOR_LETTER_P, EXTRA_CONSTRAINT,
15591         EXTRA_MEMORY_CONSTRAINT): Remove.
15592         * config/ia64/ia64.md: Include constriants.md.  Replace
15593         CONST_OK_FOR_? with satisfies_constraint_?.
15594
15595 2007-03-23  Michael Meissner  <michael.meissner@amd.com>
15596             H.J. Lu  <hongjiu.lu@intel.com>
15597
15598         * config/dfp-bit.h (DPD_BID_NAME): New macro to give either the
15599         DPD or BID name.
15600         (name macros): Use DPD_BID_NAME to convert names properly.
15601
15602         * optabs.c (DECIMAL_PREFIX): Prefix string to use for the current
15603         decimal floating point format.
15604         (init_floating_libfuncs): Change decimal functions so that they
15605         have a "bid_" prefix if the decimal system uses the BID format,
15606         and "dpd_" prefix if the decimal system uses the DPD format.
15607         (init_interclass_conv_libfuncs): Ditto.
15608         (init_intraclass_conv_libfuncs): Ditto.
15609
15610         * config.in (ENABLE_DECIMAL_BID_FORMAT): New macro to say we are
15611         using the BID format.
15612
15613         * configure.ac (ENABLE_DECIMAL_BID_FORMAT): Set to 1/0 to say
15614         whether we are using the BID decimal format.
15615         * configure: Regenerate.
15616
15617         * c-cppbuiltin.c (c_cpp_builtins): Define __STDC_WANT_DEC_FP__ if
15618         the compiler has decimal floating point enabled.  Define
15619         __DECIMAL_BID_FORMAT__ if BID decimal floating point is used
15620         instead of DPD.
15621
15622         * config.in (ENABLE_DECIMAL_BID_FORMAT): New macro to say we are
15623         using the BID format.
15624
15625         * configure.ac (ENABLE_DECIMAL_BID_FORMAT): Set to 1/0 to say
15626         whether we are using the BID decimal format.
15627         * configure: Regenerate.
15628
15629         * c-cppbuiltin.c (c_cpp_builtins): Define __STDC_WANT_DEC_FP__ if
15630         the compiler has decimal floating point enabled.  Define
15631         __DECIMAL_BID_FORMAT__ if BID decimal floating point is used
15632         instead of DPD.
15633
15634         * doc/install.texi (--enable-decimal-float): Document BID and DPD
15635         options, and that it is enabled for i386/x86_64 systems.
15636
15637         * Makefile.in (enable_decimal_float): New.
15638         (DECNUMFMT): New.
15639         (DECNUMINC): Add  -I$(DECNUMFMT).
15640         (DECNUM_H): Mov decimal32.h, decimal64.h and decimal128.h
15641         to $(DECNUMFMT) from $(DECNUM).
15642
15643         * configure.ac: Support * --enable-decimal-float={no,yes,bid,dpd}.
15644         Substitute enable_decimal_float.
15645         * configure: Regenerated.
15646
15647         PR other/30529
15648         * config/dfp-bit.c (__dec_byte_swap): Use uint32_t instead of
15649         unsigned long.
15650
15651         * configure.ac: Enable decimal float for x86_64-*-linux*.
15652         * configure: Regenerated.
15653
15654         PR other/30530
15655         * dfp.c (decimal_real_arithmetic): Use decimal128FlipSign and
15656         decimal128ClearSign to flip and clear the sign bit in decimal128.
15657         (decimal_real_maxval): Set decimal128SetSign to set the sign
15658         bit in decimal128.
15659
15660 2007-03-23  Ian Lance Taylor  <iant@google.com>
15661
15662         * fold-const.c (fold_binary): Correct warning for X - c >= X.
15663
15664 2007-03-23  Ian Lance Taylor  <iant@google.com>
15665
15666         * tree-dump.c (dump_files): Correct comment.
15667
15668 2007-03-23  Ian Lance Taylor  <iant@google.com>
15669
15670         * tree-vrp.c (operand_less_p): Ignore fold overflow warnings.
15671
15672 2007-03-23  Steven Bosscher  <steven@gcc.gnu.org>
15673
15674         * tracer.c (tracer): Don't take FLAGS argument.  Assert we are
15675         in cfglayout mode.  Don't go into and out of cfglayout mode.
15676         Link the blocks in the order of the constructed traces.
15677         (rest_of_handle_tracer): Adjust call to tracer.
15678         * loop-init.c (rtl_loop_init): Assert we are in cfglayout mode.
15679         Don't go into cfglayout mode.
15680         (rtl_loop_done): Don't go out of cfglayout mode.
15681         * cfglayout.c (relink_block_chain): New function, split out from...
15682         (fixup_reorder_chain): ...here.  Remove redundant checking.
15683         (cfg_layout_finalize): Don't clear the header, footer, and aux
15684         fields here, move the code to do so to relink_block_chain.  Likewise
15685         for free_original_copy_tables.
15686         * rtl.h (tracer): Update prototype.
15687         * bb-reorder.c (reorder_basic_blocks): Don't take FLAGS argument.
15688         Assert we are in cfglayout mode.  Don't go into and out of cfglayout
15689         mode.  Use relink_block_chain to serialize the CFG according to the
15690         new basic block order.  Move targetm.cannot_modify_jumps_p check from
15691         here...
15692         (gate_handle_reorder_blocks): ...to here.
15693         (duplicate_computed_gotos): Move targetm.cannot_modify_jumps_p check
15694         from here...
15695         (gate_duplicate_computed_gotos): ...to here.
15696         (rest_of_handle_reorder_blocks): Don't see if anything has changed,
15697         something always changes when going into and out of cfglayout mode.
15698         Perform an expensive cfg cleanup while going into cfglayout mode.
15699         Always update liveness information on HAVE_conditional_execution
15700         targets.  Reserialize the basic blocks and go out of cfglayout mode.
15701         * reg-stack.c: Include cfglayout.h.
15702         (rest_of_handle_stack_regs): Go into and out of cfglayout mode around
15703         the call to reorder_basic_blocks.
15704         * basic-block.h (reorder_basic_blocks): Update prototype.
15705         (relink_block_chain): New prototype.
15706         * passes.c (pass_outof_cfg_layout_mode): Move after cse2.
15707
15708 2007-03-23  Joseph Myers  <joseph@codesourcery.com>
15709
15710         * config/mips/mips.md (type, hazard, *movdi_32bit,
15711         *movdi_gp32_fp64, *movdi_64bit, *movsi_internal, movcc,
15712         *movhi_internal, *movqi_internal, *movsf_hardfloat,
15713         *movdf_hardfloat_64bit, *movdf_hardfloat_32bit, *movdf_softfloat,
15714         movv2sf_hardfloat_64bit, load_df_low, load_df_high, store_df_high,
15715         mthc1, mfhc1): Change xfer instruction type to mfc and mtc, as
15716         applicable.
15717         (movcc): Change first xfer to multi.
15718         * config/mips/24k.md, config/mips/4100.md, config/mips/4300.md,
15719         config/mips/5000.md, config/mips/5400.md, config/mips/5500.md,
15720         config/mips/5k.md, config/mips/7000.md, config/mips/9000.md,
15721         config/mips/generic.md: Change reservations using "xfer" to use
15722         "mfc,mtc".
15723         * config/mips/sb1.md (ir_sb1_mtxfer): Use "mtc" instead of
15724         using match_operand.
15725         (ir_sb1_mfxfer): Use "mfc" instead of using match_operand.
15726         * config/mips/sr71k.md (ir_sr70_xfer_from): Use "mfc" instead of
15727         examining mode.
15728         (ir_sr70_xfer_to): Use "mtc" instead of examining mode.
15729
15730 2007-03-22  Richard Henderson  <rth@redhat.com>
15731
15732         * config/i386/i386.c: Remove unnecessary function declarations.
15733         Move targetm definition, and all related macros, to the end of
15734         the file.  Resort some functions to put definitions before uses.
15735         (ix86_attribute_table): Make static.  Move to end of file.
15736         (ix86_gimplify_va_arg): Make static.
15737
15738 2007-03-22  Richard Henderson  <rth@redhat.com>
15739
15740         * config/i386/i386.c (ix86_function_regparm): Early exit for 64-bit;
15741         don't increase local_regparm with force_align_arg_pointer check.
15742         (ix86_function_sseregparm): Assert 32-bit.
15743         (type_has_variadic_args_p): New.
15744         (ix86_return_pops_args): Early exit for 64-bit.  Reindent; use
15745         type_has_variadic_args_p.
15746         (ix86_function_arg_regno_p): Use == 0 instead of ! test for eax.
15747         (init_cumulative_args): Remove TARGET_DEBUG_ARG.  Remove zero_cum;
15748         use memset instead.  Do maybe_vaarg check first; skip attribute
15749         tests if true; skip attribute tests for 64-bit.
15750         (construct_container): Remove TARGET_DEBUG_ARG.
15751         (function_arg_advance_32, function_arg_advance_64): Split out ...
15752         (function_arg_advance): ... from here.
15753         (function_arg_32, function_arg_64): Split out ...
15754         (function_arg): ... from here.
15755         (ix86_pass_by_reference): Tidy.
15756         (ix86_function_value_regno_p): Rearrange w/ switch on regno.
15757         (function_value_32): New, from parts of ix86_function_value
15758         and ix86_value_regno.
15759         (function_value_64): New, from parts of ix86_function_value
15760         and ix86_libcall_value.
15761         (ix86_function_value_1): New.
15762         (ix86_function_value, ix86_libcall_value): Use it.
15763         (return_in_memory_32, return_in_memory_64): Split out ...
15764         (ix86_return_in_memory): ... from here.
15765         (ix86_struct_value_rtx): Skip for 64-bit.
15766         (ix86_libcall_value, ix86_value_regno): Remove.
15767         (setup_incoming_varargs_64): Split out ...
15768         (ix86_setup_incoming_varargs): ... from here.
15769         (ix86_va_start): Remove TARGET_DEBUG_ARG.
15770         (legitimate_address_p, legitimize_address): Remove TARGET_DEBUG_ADDR.
15771         * config/i386/i386-protos.h (ix86_function_value): Remove.
15772         * config/i386/i386.opt (TARGET_DEBUG_ADDR, TARGET_DEBUG_ARG): Remove.
15773
15774 2007-03-22  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
15775
15776         PR other/23572
15777         * c-lex.c (interpret_float): On overflow, emit pedantic warning if
15778         infinities not supported, otherwise emit warning if -Woverflow. On
15779         underflow, emit warning if -Woverflow.
15780         * real.c (real_from_string): Return -1 if underflow, +1 if overflow
15781         and 0 otherwise.
15782         * real.h (real_from_string): Update declaration
15783
15784 2007-03-22  Kai Tietz  <kai.tietz@onevision.com>
15785             Richard Henderson  <rth@redhat.com>
15786
15787         * defaults.h (OUTGOING_REG_PARM_STACK_SPACE): Provide default.
15788         * calls.c (compute_argument_block_size, expand_call,
15789         emit_library_call_value_1): Don't ifdef OUTGOING_REG_PARM_STACK_SPACE.
15790         * expr.c (block_move_libcall_safe_for_call_parm): Likewise.
15791         * function.c (STACK_DYNAMIC_OFFSET): Likewise.
15792         * doc/tm.texi (OUTGOING_REG_PARM_STACK_SPACE): Update.
15793         * config/alpha/unicosmk.h, config/bfin/bfin.h, config/iq2000/iq2000.h,
15794         config/mips/mips.h, config/mn10300/mn10300.h, config/mt/mt.h,
15795         config/pa/pa.h, config/rs6000/rs6000.h, config/score/score.h,
15796         config/spu/spu.h, config/v850/v850.h (OUTGOING_REG_PARM_STACK_SPACE):
15797         Set to 1.
15798
15799 2007-03-22  Joseph Myers  <joseph@codesourcery.com>
15800
15801         * c-incpath.c (add_sysroot_to_chain): New.
15802         (merge_include_chains): Add sysroot argument.  Call
15803         add_sysroot_to_chain if sysrooted.
15804         (register_include_chains): Update call to merge_include_chains.
15805         * doc/cppopts.texi: Document use of '=' in include directory
15806         arguments.
15807
15808 2007-03-22  Uros Bizjak  <ubizjak@gmail.com>
15809
15810         * config/i386/i386.md (cmp<mode>): Rename from cmpsf and cmpdf.
15811         Macroize expander using SSEMODEF mode macro.  Use SSE_FLOAT_MODE_P.
15812         (*cmpfp_<mode>): Rename from *cmpfp_sf and *cmpfp_df. Macroize
15813         insn pattern using X87MODEF12 mode macro.
15814
15815 2007-03-21  Seongbae Park <seongbae.park@gmail.com>
15816
15817         * regmove.c (regmove_optimize): Use reg_mentioned_p
15818         instead of reg_overlap_mentioned_p for DST.
15819
15820 2007-03-21  Mike Stump  <mrs@apple.com>
15821
15822         * c.opt: Fixup for Objective-C/C++.
15823
15824 2007-03-21  Steve Ellcey  <sje@cup.hp.com>
15825
15826         * explow.c (convert_memory_address): Fold memory reference when
15827         POINTERS_EXTEND_UNSIGNED < 0
15828
15829 2007-03-21  Richard Henderson  <rth@redhat.com>
15830
15831         PR target/31245
15832         * config/i386/emmintrin.h (__m128i, __m128d): Mark may_alias.
15833         * config/i386/mmintrin.h (__m64): Likewise.
15834         * config/i386/xmmintrin.h (__m128): Likewise.
15835
15836 2007-03-21  Richard Sandiford  <richard@codesourcery.com>
15837
15838         * config/vxworks.h (VXWORKS_ADDITIONAL_CPP_SPEC): Remove -D options.
15839         (VXWORKS_OS_CPP_BUILTINS): Define.
15840         * config/i386/vxworks.h (VXWORKS_CPU_DEFINE): Fold into...
15841         (TARGET_OS_CPP_BUILTINS): ...here.  Use VXWORKS_OS_CPP_BUILTINS.
15842
15843 2007-03-21  Richard Sandiford  <richard@codesourcery.com>
15844
15845         * rtl.h (constant_pool_reference_p): Delete.
15846         (find_constant_src): Declare.
15847         * rtlanal.c (find_constant_src): New function.
15848         * simplify-rtx.c (constant_pool_reference_p): Delete.
15849         * config/i386/i386.md: Use find_constant_src instead of
15850         constant_pool_reference_p/avoid_constant_pool_reference pairs.
15851
15852 2007-03-21  Richard Sandiford  <richard@codesourcery.com>
15853
15854         * doc/invoke.texi (-fpie, -fPIE): Document __pie__ and __PIE__.
15855         * c-cppbuiltin.c (c_cpp_builtins): Define them.
15856
15857 2007-03-20  Mark Mitchell  <mark@codesourcery.com>
15858
15859         * config/arm/elf.h (TARGET_ASM_DESTRUCTOR): Define.
15860         * config/arm/arm.c (arm_elf_asm_cdtor): New function.
15861         (arm_elf_asm_constructor): Use it.
15862         (arm_elf_asm_destructor): New function.
15863
15864 2007-03-20  Bernd Schmidt  <bernd.schmidt@analog.com>
15865
15866         * jump.c (mark_jump_label): Treat SEQUENCE specially.
15867
15868 2007-03-20  Nathan Sidwell  <nathan@codesourcery.com>
15869
15870         * config/vxlib.c (tls_delete_hook): Use TCB for kernel tasks.
15871
15872 2007-03-19  Andrew Haley  <aph@redhat.com>
15873
15874         PR tree-optimization/31264
15875         * tree-vrp.c (register_edge_assert_for_1): Don't look though
15876         VIEW_CONVERT_EXPRs.
15877
15878 2007-03-19  Paolo Bonzini  <bonzini@gnu.org>
15879
15880         PR rtl-optimization/30907
15881         * fwprop.c (forward_propagate_into): Never propagate inside a loop.
15882         (fwprop_init): Always call loop_optimizer_initialize.
15883         (fwprop_done): Always call loop_optimizer_finalize.
15884         (fwprop): We always have loop info now.
15885         (gate_fwprop_addr): Remove.
15886         (pass_fwprop_addr): Use gate_fwprop as gate.
15887
15888         PR rtl-optimization/30841
15889         * df-problems.c (df_ru_local_compute, df_rd_local_compute,
15890         df_chain_alloc): Call df_reorganize_refs unconditionally.
15891         * df-scan.c (df_rescan_blocks, df_reorganize_refs): Change
15892         refs_organized to refs_organized_size.
15893         (df_ref_create_structure): Use refs_organized_size instead of
15894         bitmap_size if refs had been organized, and keep refs_organized_size
15895         up-to-date.
15896         * df.h (struct df_ref_info): Change refs_organized to
15897         refs_organized_size.
15898         (DF_DEFS_SIZE, DF_USES_SIZE): Use refs_organized_size instead of
15899         bitmap_size.
15900
15901 2007-03-19  Mark Mitchell  <mark@codesourcery.com>
15902
15903         * except.c (output_function_exception_table): Do not reference the
15904         EH personality routine for functions that do not require an
15905         exception table.
15906
15907 2007-03-20  Jakub Jelinek  <jakub@redhat.com>
15908
15909         PR c/30762
15910         * c-typeck.c (convert_for_assignment): Call comptypes for
15911         RECORD_TYPE or UNION_TYPE.
15912
15913         PR inline-asm/30505
15914         * reload1.c (reload): Do invalid ASM checking after
15915         cleanup_subreg_operands.
15916
15917 2007-03-19  Jeff Law  <law@redhat.com>
15918
15919         * tree-cfg.c (find_taken_edge): Tighten conditions for
15920         optimizing computed gotos.
15921
15922 2007-03-19  Michael Matz  <matz@suse.de>
15923
15924         * builtins.c (expand_builtin_sync_operation,
15925         expand_builtin_compare_and_swap,
15926         expand_builtin_lock_test_and_set): Care for extending CONST_INTs
15927         correctly.
15928
15929         * config/i386/sync.md (sync_double_compare_and_swapdi_pic,
15930         sync_double_compare_and_swap_ccdi_pic): Use "SD" as constraint
15931         for operand 3.
15932
15933 2007-03-19  Andreas Krebbel  <krebbel1@de.ibm.com>
15934
15935         * doc/tm.texi: Add brackets around the return type of
15936         TARGET_SECONDARY_RELOAD.
15937
15938 2007-03-19  Andrew Pinski  <andrew_pinski@playstation.sony.com>
15939         Richard Guenther  <rguenther@suse.de>
15940
15941         PR tree-optimization/31254
15942         * tree-ssa-forwprop.c (forward_propagate_addr_expr_1):
15943         Use handled_component_p () where appropriate.  Continue
15944         propagating into the rhs if we propagated into an INDIRECT_REF
15945         on the lhs.
15946
15947 2007-03-19  Andreas Krebbel  <krebbel1@de.ibm.com>
15948
15949         * config/s390/s390.md (op_type attribute): RRR instruction type added.
15950         (FP, DFP, SD_SF, DD_DF, TD_TF): New mode macros.
15951         (xde, xdee): Mode attributes adjusted to support DFP modes.
15952         (RRer, f0, op1, Rf, bt, bfp, HALF_TMODE): New mode attributes added.
15953         ("cmp<mode>", "*cmp<mode>_css_0", "*cmp<mode>_ccs", TF move splitters,
15954         DF move splitters, "floatdi<mode>2", "add<mode>3", "*add<mode>3",
15955         "*add<mode>3_cc", "*add<mode>3_cconly", "sub<mode>3", "*sub<mode>3",
15956         "*sub<mode>3_cc", "*sub<mode>3_cconly", "mul<mode>3", "*mul<mode>3",
15957         "div<mode>3", "*div<mode>3", "*neg<mode>2_nocc", "*abs<mode>2_nocc",
15958         "*negabs<mode>2_nocc", "copysign<mode>3"): Adjusted to support DFP
15959         numbers.
15960         ("*movtf_64", "*movtf_31", "*movdf_64dfp", "*movdf_64", "*movdf_31",
15961         "movsf"): Insn definitions removed.
15962         ("*mov<mode>_64", "*mov<mode>_31", "mov<mode>", "*mov<mode>_64dfp",
15963         "*mov<mode>_64", "*mov<mode>_31", "fix_trunc<DFP:mode>di2",
15964         "trunctddd2", "truncddsd2", "extendddtd2", "extendsddd2"): Insn
15965         definitions added.
15966         ("fixuns_truncdddi2", "fixuns_trunctddi2", "mov<mode>",
15967         "reload_in<mode>", "reload_out<mode>"): Expander added.
15968         ("movtf", "movdf", "reload_outtf", "reload_outdf", "reload_intf"):
15969         Expander removed.
15970
15971 2007-03-19  Andreas Krebbel  <krebbel1@de.ibm.com>
15972
15973         * config/s390/s390.md: Only non-functional changes.  Renamed
15974         FPR mode macro to BFP all over the file.
15975
15976 2007-03-19  Andreas Krebbel  <krebbel1@de.ibm.com>
15977
15978         * config/s390/s390.md (UNSPEC_COPYSIGN): New constant.
15979         (op_type attribute): RRF instruction type added.
15980         (fT0): New mode attribute.
15981         ("*movdi_64dfp", "*movdf_64dfp", "*neg<mode>2_nocc", "*abs<mode>2_nocc",
15982         "*negabs<mode>2_nocc", "copysign<mode>3"): Insn definitions added.
15983         * config/s390/s390.h (SECONDARY_MEMORY_NEEDED): Due to a new
15984         instruction no secondary memory is needed when moving DFmode values
15985         between GPRs and FPRs.
15986
15987 2007-03-19  Andreas Krebbel  <krebbel1@de.ibm.com>
15988
15989         * config/s390/s390.opt ("mhard-float", "msoft-float"): Bit value
15990         inverted and documentation adjusted.
15991         ("mhard-dfp", "msoft-dfp"): New options.
15992         * config/s390/s390.c (s390_handle_arch_option): New architecture
15993         switch: z9-ec.
15994         (override_options): Sanity checks for the new options added.
15995         * config.gcc: New architecture switch: z9-ec.
15996         * config/s390/s390.h (processor_flags): PF_DFP added.
15997         (TARGET_CPU_DFP, TARGET_DFP): Macro definitions added.
15998         (TARGET_DEFAULT): Due to the s390.opt changes hard float is enabled
15999         when the bit is NOT set so remove it from the defaults.
16000
16001 2007-03-19  Andreas Krebbel  <krebbel1@de.ibm.com>
16002
16003         * genemit.c (main): Print include statement for dfp.h.
16004         * dfp.h (decimal_real_arithmetic): Hide prototype if tree_code enum
16005         is not available.
16006
16007 2007-03-19  Hans-Peter Nilsson  <hp@axis.com>
16008
16009         * config/cris/t-elfmulti (EXTRA_MULTILIB_PARTS): Do not define here.
16010
16011 2007-03-19  Kaz Kojima  <kkojima@gcc.gnu.org>
16012
16013         PR target/31022
16014         * config/sh/sh.c (sh_adjust_cost): Use the result of single_set
16015         instead of PATTERN.
16016
16017 2007-03-18  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
16018
16019         * pa.c (output_deferred_plabels, output_bb, output_millicode_call,
16020         attr_length_call, output_call, output_indirect_call): Cleanup
16021         formatting of targetm calls.
16022
16023 2007-03-19  Hans-Peter Nilsson  <hp@axis.com>
16024
16025         * config/cris/cris.h (HANDLE_PRAGMA_PACK_PUSH_POP): Define to 1.
16026
16027 2007-03-18  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
16028
16029         * pa.md: Add fpstore_load and store_fpload instruction types.  Provide
16030         reservation, bypass and anti-bypass descriptions for these
16031         instructions.  Update move patterns.
16032         * pa.c (hppa_fpstore_bypass_p): Check for both TYPE_FPSTORE_LOAD and
16033         TYPE_FPSTORE.
16034
16035 2007-03-18  Dorit Nuzman  <dorit@il.ibm.com>
16036
16037         * tree-vect-transform.c (get_initial_def_for_induction): Replace
16038         GET_MODE_NUNITS with TYPE_VECTOR_SUBPARTS.
16039         (get_initial_def_for_reduction): Likewise.
16040
16041 2007-03-16  Daniel Berlin  <dberlin@dberlin.org>
16042
16043         Fix PR tree-optimization/29922
16044         * tree-ssa-pre.c (bb_bitmap_sets): Remove RVUSE_* members.
16045         (get_representative): Removed.
16046         (value_dies_in_block_x): Update for rvuse removal.
16047         (valid_in_sets): Update for renaming of vuses_dies_in_block_x.
16048         (compute_antic_aux): Handle when PHI nodes appear in
16049         non-single-successors.
16050         (dump_bitmap_of_names): Removed.
16051         (compute_antic_safe): Renamed and removed rvuse calculation.
16052         Calculate only antic safe.
16053         (insert_into_preds_of_block): Remove assert.
16054         (execute_pre): Update for renamed functions.
16055         (defer_or_phi_translate_block): New function.
16056
16057 2007-03-17  Kazu Hirata  <kazu@codesourcery.com>
16058
16059         * config/arm/arm.c, config/arm/thumb2.md, config/m68k/m68k.c,
16060         config/spu/spu.c, omega.h, passes.c, predict.c: Fix comment
16061         typos.
16062         * doc/cpp.texi, doc/extend.texi, doc/invoke.texi: Fix typos.
16063         Follow spelling conventions.
16064
16065         * tree-data-ref.h: Remove the prototype for analyze_array.
16066
16067 2007-03-17  Dorit Nuzman  <dorit@il.ibm.com>
16068
16069         PR tree-optimization/31041
16070         * tree-vect-transform.c (get_initial_def_for_induction): Call
16071         force_gimple_operand.
16072
16073 2007-03-17  Olga Golovanevsky  <olga@il.ibm.com>
16074
16075         * ipa-type-escape.c (look_for_casts) : Revert code to use
16076         handled_component_p due to ada test a-numaux.adb.
16077
16078 2007-03-17  Kazu Hirata  <kazu@codesourcery.com>
16079
16080         * final.c (final_scan_insn): Alter the condition of a
16081         conditional trap if we have nonstandard CC.
16082
16083 2007-03-16  Alexandre Oliva  <aoliva@redhat.com>
16084
16085         * configure.ac: Remove excess quoting from asm line 0 test.
16086         * configure: Rebuilt.
16087
16088 2007-03-16  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
16089
16090         * doc/invoke.texi (-Wconversion): Document warnings specific to C++.
16091         * c-common.c (convert_and_check): Move warning logic to...
16092         (warnings_for_convert_and_check): ...here. Define.
16093         * c-common.h (warnings_for_convert_and_check): Declare.
16094
16095 2007-03-16  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
16096
16097         * pa.c (attr_length_call): Partially revert change of 2007-03-09.
16098         (output_call): Likewise.
16099
16100 2007-03-16  Richard Sandiford  <richard@codesourcery.com>
16101
16102         * config/vxworks.h (SUPPORTS_INIT_PRIORITY): Define.
16103
16104 2007-03-16  Richard Sandiford  <richard@codesourcery.com>
16105
16106         * config/vx-common.h (WINT_TYPE, WINT_TYPE_SIZE): Define.
16107
16108 2007-03-16  Uros Bizjak  <ubizjak@gmail.com>
16109
16110         * config/i386/i386.c (override_options): Add PTA_NO_SAHF to k8,
16111         opteron, athlon-64 and athlon-fx processor_alias_table entries.
16112
16113 2007-03-16  Sebastian Pop  <sebastian.pop@inria.fr>
16114
16115         PR tree-optimization/31183
16116         * tree-loop-linear.c (gather_interchange_stats, try_interchange_loops):
16117         Use double_int instead of unsigned int for representing access_strides.
16118         * testsuite/gcc.dg/tree-ssa/pr31183.c: New.
16119
16120 2007-03-16  Richard Guenther  <rguenther@suse.de>
16121
16122         PR tree-optimization/31146
16123         * tree-ssa-forwprop.c (forward_propagate_addr_expr_1): Restructure
16124         to allow recursion of forward_propagate_addr_expr.
16125         (forward_propagate_addr_into_variable_array_index): Likewise.
16126         (forward_propagate_addr_expr): Likewise.
16127         (tree_ssa_forward_propagate_single_use_vars): Likewise.
16128         (forward_propagate_addr_expr_1): Recurse on simple copies
16129         instead of propagating into them.  Do so for useless conversions
16130         as well.
16131         (forward_propagate_addr_expr): Clean up unused statements after
16132         recursion.
16133
16134 2007-03-16  Richard Guenther  <rguenther@suse.de>
16135
16136         * builtins.c (expand_builtin_cexpi): Use the right argument
16137         for the expansion via cexp.
16138
16139 2007-03-16  Alexandre Oliva  <aoliva@redhat.com>
16140
16141         * configure.ac: Don't require ELF binutils to tolerate # 0 "".
16142         * configure: Rebuilt.
16143
16144 2007-03-16  Alexandre Oliva  <aoliva@redhat.com>
16145
16146         PR debug/29906
16147         * dwarf2out.c (force_type_die): Adjust comment.
16148         (dwarf2out_imported_module_or_decl): Handle base AT_import types.
16149
16150 2007-03-15  DJ Delorie  <dj@redhat.com>
16151
16152         * config/frv/predicates.md (minmax_operator): Don't check operands
16153         here.
16154
16155 2007-03-15  Zdenek Dvorak  <dvorakz@suse.cz>
16156
16157         * tree-ssa-loop-niter.c (record_estimate): Add "upper" argument.
16158         Update constant estimates of number of iterations.
16159         (record_nonwrapping_iv): Add "upper" argument.  "data_size_bounds_p"
16160         argument renamed to "realistic".
16161         (compute_estimated_nb_iterations): Removed.
16162         (record_niter_bound): New function.
16163         (idx_infer_loop_bounds): For possible but unlikely tail arrays,
16164         call record_nonwrapping_iv with upper = false.
16165         (infer_loop_bounds_from_signedness): Pass upper argument to
16166         record_nonwrapping_iv.
16167         (estimate_numbers_of_iterations_loop): Do not call
16168         compute_estimated_nb_iterations.  Record estimate based on profile
16169         information.  Initialize the constant estimates of number of
16170         iterations.
16171         * tree-data-ref.c (estimated_loop_iterations): Return the recorded
16172         estimates.
16173         * tree-ssa-loop-prefetch.c (loop_prefetch_arrays): Add dump when
16174         number of iterations is too small.
16175         * cfgloop.h (struct nb_iter_bound): Remove "realistic" field.
16176         (EST_NOT_AVAILABLE): Removed.
16177         (struct loop): Replace estimated_nb_iterations by any_upper_bound,
16178         nb_iterations_upper_bound, any_estimate and nb_iterations_estimate
16179         fields.
16180
16181 2007-03-15  Zdenek Dvorak  <dvorakz@suse.cz>
16182
16183         * tree-ssa-loop-niter.c (refine_bounds_using_guard, bound_difference):
16184         Handle NE_EXPR guards.
16185
16186 2007-03-15  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
16187
16188         PR c++/24924
16189         * c-opts.c (c_common_post_options): Handle C++ post-processing here.
16190         Set also -pedantic-errors by default for the  preprocessor unless
16191         -fpermissive is given.
16192
16193 2007-03-15  Richard Guenther  <rguenther@suse.de>
16194
16195         PR middle-end/29719
16196         PR middle-end/31161
16197         * builtins.c (expand_builtin_cexpi): As a fallback if we
16198         don't have builtins for sincos or cexp create a function
16199         declaration for cexp and expand to a call to that.
16200         (expand_builtin_int_roundingfn): Always fall
16201         back to floor/ceil and its variants even if they may be
16202         not available.
16203
16204 2007-03-15  Steven Bosscher  <steven@gcc.gnu.org>
16205
16206         PR middle-end/31159
16207         * cfglayout.c (fixup_reorder_chain): Postpone deleting dead
16208         jump tables, move the call to delete_dead_jumptables from here...
16209         (cfg_layout_finalize): ...to here.  But rebuild jump labels first.
16210         * cfgrtl.c (cfg_layout_can_merge_blocks_p): When not optimizing,
16211         don't allow merging of blocks that try_redirect_by_replacing_jump
16212         also does not handle when not optimizing.
16213
16214 2007-03-15  Uros Bizjak  <ubizjak@gmail.com>
16215             Francois-Xavier Coudert  <coudert@clipper.ens.fr>
16216
16217         * config/i386/i386.md (x86_sahf_1): Correctly handle
16218         HAVE_AS_IX86_SAHF.
16219
16220 2007-03-15  Uros Bizjak  <ubizjak@gmail.com>
16221
16222         PR target/31167
16223         * config/i386/i386.md (*addti3_1, *addti3_1 splitter): Use
16224         x86_64_general_operand as operand[2] predicate.  Remove "iF"
16225         from operand constraints and use "e" constraint instead.
16226         (*subti3_1, *subti3_1 splitter): Ditto.
16227         (*negti2_1, *negti2_1 splitter): Use nonimmediate_operand as
16228         operand[1] predicate.
16229
16230 2007-03-14  Sebastian Pop  <sebastian.pop@inria.fr>
16231
16232         * tree-loop-linear.c (gather_interchange_stats): For multidimensional
16233         arrays, multiply the access strides by the size of the sub-array.
16234         * testsuite/gcc.dg/tree-ssa/ltrans-5.c: New.
16235
16236 2007-03-14  Uros Bizjak  <ubizjak@gmail.com>
16237
16238         * configure.ac (HAVE_AS_IX86_SAHF): On x86 targets check whether
16239         the configured assembler supports the sahf mnemonic.
16240         * configure: Regenerate.
16241         * config.in: Regenerate.
16242
16243         * config/i386/i386.md (x86_sahf_1): Depending on HAVE_AS_IX86_SAHF,
16244         emit "sahf" or ".byte\t0x9e" as asm template.
16245
16246 2007-03-14  Michael Meissner  <michael.meissner@amd.com>
16247
16248         PR 31018
16249         * config/i386/i386.h (X86_TUNE_SHORTEN_X87_SSE): New tuning
16250         option to replace hard coded TARGET_xxx in md file.
16251         (X86_TUNE_AVOID_VECTOR_DECODE): Ditto.
16252         (X86_TUNE_SLOW_IMUL_IMM32_MEM): Ditto.
16253         (X86_TUNE_SLOW_IMUL_IMM8): Ditto.
16254         (X86_TUNE_MOVE_M1_VIA_OR): Ditto.
16255         (X86_TUNE_NOT_UNPAIRABLE): Ditto.
16256         (X86_TUNE_NOT_VECTORMODE): Ditto.
16257         (TUNE_SHORTEN_X87_SSE): Use new tuning option.
16258         (TUNE_AVOID_VECTOR_DECODE): Ditto.
16259         (TUNE_SLOW_IMUL_IMM32_MEM): Ditto.
16260         (TUNE_SLOW_IMUL_IMM8): Ditto.
16261         (TUNE_MOVE_M1_VIA_OR): Ditto.
16262         (TUNE_NOT_UNPAIRABLE): Ditto.
16263         (TUNE_NOT_VECTORMODE): Ditto.
16264
16265         * config/i386/i386.c (ix86_tune_features): Fill in new tuning
16266         options.
16267
16268         * config/i386/i386.md (fix_trunc?f?1_sse peephole2): Use new
16269         tuning options instead of hard coded TARGET_xxx.
16270         (fix ssemode peephole2's): Ditto.
16271         (imul peephole2's): Ditto.
16272         (movsi_or): Ditto.
16273         (movdi_or_rex64): Ditto.
16274         (move peephole2): Ditto.
16275         (not peephole2's): Ditto.
16276
16277 2007-03-14  Dirk Mueller  <dmueller@suse.de>
16278
16279         * c-common.h (empty_body_warning): Rename to empty_if_body_warning.
16280         * c-common.c (empty_if_body_warning): Rephrase diagnostic message.
16281         * c-parser.c (c_parser_if_body): Always add an empty statement in case
16282         of empty body.
16283         * c-parser.c (c_parser_do_statement): Warn about empty body in
16284         do/while statement.
16285         * c-typeck (c_finish_if_stmt): Call empty_if_body_warning.
16286         * doc/invoke.texi (-Wempty-body): Update documentation.
16287
16288 2007-03-14  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
16289
16290         PR c/21438
16291         * c-common.h (warn_for_div_by_zero): Declare.
16292         * c-common.c (warn_for_div_by_zero): Define.
16293         * c-typeck.c (build_binary_op): Call warn_for_div_zero instead of
16294         warning.
16295
16296 2007-03-14  Richard Sandiford  <richard@codesourcery.com>
16297
16298         * Makefile.in (PREPROCESSOR_DEFINES): Add directory terminators
16299         to PREFIX and STANDARD_PREFIX.
16300
16301 2007-03-14  Richard Sandiford  <richard@codesourcery.com>
16302             Phil Edwards  <phil@codesourcery.com>
16303
16304         * gthr-vxworks.h: Add an extern "C" wrapper for C++.
16305         (__gthread_once_t): Remove busy field for RTPs.
16306         (__GTHREAD_ONCE_INIT): Update accordingly.
16307
16308 2007-03-14  Richard Sandiford  <richard@codesourcery.com>
16309
16310         * doc/invoke.texi: Document VxWorks options.
16311
16312 2007-03-14  Uros Bizjak  <ubizjak@gmail.com>
16313
16314         * doc/invoke.texi (i386 and x86-64 Options): Clarify -msahf option.
16315
16316 2007-03-13  Seongbae Park <seongbae.park@gmail.com>
16317
16318         PR tree-optimization/30590
16319         * tree-nrv.c (tree_nrv): Check for the partial update of the
16320         return value.
16321
16322 2007-03-13  Alexandre Oliva  <aoliva@redhat.com>
16323
16324         * flags.h (flag_random_seed): Remove declaration, in favor of...
16325         * toplev.h (get_random_seed, set_random_seed): ... these.
16326         * tree.c (get_file_function_name): Use the former.
16327         * opts.c (common_handle_option): Use the latter.
16328         * toplev.c
16329
16330 2007-03-13  Steven Bosscher  <steven@gcc.gnu.org>
16331
16332         PR middle-end/31127
16333         * cse.c (cse_find_path): Do not bail out if a basic block that
16334         we already visited now becomes part of a path that starts at a
16335         different basic block.  Just disallow this, to make sure we
16336         visit each basic block at most once.
16337
16338 2007-03-13  Jan Hubicka  <jh@suse.cz>
16339
16340         * ipa-inline.c (cgraph_maybe_hot_edge_p): Look for hot/cold
16341         attributes, when profile esitmate is present, calls with very low
16342         frequency are cold.
16343
16344 2007-03-13  Zdenek Dvorak  <dvorakz@suse.cz>
16345
16346         PR tree-optimization/30730
16347         PR tree-optimization/26900
16348         * tree-ssa-loop-niter.c: Include gmp.h.
16349         (bounds): New type.
16350         (mpz_set_double_int, get_type_bounds, mpz_to_double_int,
16351         split_to_var_and_offset, determine_value_range,
16352         bound_difference_of_offsetted_base, refine_bounds_using_guard,
16353         bound_difference, bounds_add, bounds_negate,
16354         number_of_iterations_ne_max, dump_affine_iv): New functions.
16355         (number_of_iterations_ne, number_of_iterations_lt_to_ne,
16356         assert_loop_rolls_lt, assert_loop_rolls_le): Use bounds on the
16357         difference of initial and final value of control iv to validate
16358         results.
16359         (number_of_iterations_cond): Add loop parameter.  Determine bounds
16360         on the difference of the extremes of the control iv.  Add dumps.
16361         (expand_simple_operations): Handle phi nodes.
16362         (simplify_using_initial_conditions): Do not record used conditions.
16363         (number_of_iterations_exit): Pass loop to number_of_iterations_cond.
16364         Do not set additional_info.
16365         (implies_nonnegative_p, implies_ge_p): Removed.
16366         (derive_constant_upper_bound): Do not use parameter `additional'.
16367         (record_estimate): Parameter `additional' removed.  Parameter
16368         `i_bound' added.  Do not call derive_constant_upper_bound.
16369         (record_nonwrapping_iv): Use derive_constant_upper_bound to
16370         bound the number of iterations estimate.
16371         (estimate_numbers_of_iterations_loop): Pass the estimate from
16372         the number of iterations analysis to record_estimate.
16373         * tree.h (multiple_of_p): Declare.
16374         * tree-scalar-evolution.c (expression_expensive_p): Removed.
16375         (scev_const_prop): Do not check expression_expensive_p.
16376         * fold-const.c (multiple_of_p): Exported.
16377         * double-int.c (double_int_mask): Exported.
16378         * double-int.h (double_int_mask): Declare.
16379         * tree-flow.h (struct tree_niter_desc): Removed additional_info
16380         field.  Added max field.
16381
16382 2007-03-13  David Taylor  <taylor@candd.org>
16383
16384         PR driver/12448:
16385         * gcc.c (cpp_unique_options): If -MT or -MQ is seen, don't pass
16386         default -MQ.
16387
16388 2007-03-13  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
16389
16390         PR target/31123
16391         * pa.md (vdepi_ior): Don't allow zero length deposit.  Likewise for
16392         two unamed patterns.
16393
16394 2007-03-13  Uros Bizjak  <ubizjak@gmail.com>
16395
16396         * config/i386/i386.opt (mcx16, msahf): New options.
16397         * config/i386/i386.c (x86_cmpxchg16b, x86_sahf): Remove.
16398         (ix86_tune_features) [X86_TUNE_USE_SAHF]: Enable for m_GENERIC.
16399
16400         * config/i386/driver-i386.c (bit_LAHF_LM): New define.
16401         (host_detect_local_cpu): Detect cx16 and lahf_lm cpuid bits.
16402         Output -mcx16 and -msahf options when corresponding bit is set.
16403
16404         * doc/invoke.texi (i386 and x86-64 Options): Document -mcx16
16405         and -msahf options.
16406
16407 2007-03-13  Alexandre Oliva  <aoliva@redhat.com>
16408
16409         * configure.ac: Test for assembler tolerance to # 0 "".
16410         * configure, config.in: Rebuilt.
16411         * final.c (final_scan_insn): Emit it if HAVE_AS_LINE_ZERO.
16412
16413 2007-03-13  Geoffrey Keating  <geoffk@apple.com>
16414
16415         * doc/invoke.texi (Spec Files): Update for '%{,' spec.
16416
16417         * config/rs6000/darwin-fallback.c: Compile file only on powerpc.
16418         (handle_syscall): Handle direct system calls.
16419         * config/rs6000/darwin.h (HAS_MD_FALLBACK_FRAME_STATE_FOR): Delete.
16420
16421 2007-03-12  Brooks Moses  <brooks.moses@codesourcery.com>
16422
16423         * doc/invoke.texi: Fix cpp.info cross-reference.
16424         * doc/passes.texi: Fix gcc.info cross-reference.
16425
16426 2007-03-12  Zdenek Dvorak  <dvorakz@suse.cz>
16427
16428         PR tree-optimization/30835
16429         * lambda-code.c (can_convert_to_perfect_nest): Check whether
16430         bb_for_stmt is not NULL before accessing it.
16431
16432 2007-03-12  Joseph Myers  <joseph@codesourcery.com>
16433
16434         * gcc.c (main): Handle target_sysroot_hdrs_suffix being NULL for
16435         some multilibs.
16436
16437 2007-03-12  Brooks Moses  <brooks.moses@codesourcery.com>
16438
16439         PR 30635
16440         * doc/install.texi: Document --enable-stage1-languages
16441
16442 2007-03-12  Steven Bosscher  <steven@gcc.gnu.org>
16443
16444         * tree-pass.h (pass_into_cfg_layout_mode,
16445         pass_outof_cfg_layout_mode): Declare.
16446         * cfglayout.c (into_cfg_layout_mode, outof_cfg_layout_mode,
16447         pass_into_cfg_layout_mode, pass_outof_cfg_layout_mode): New.
16448         * passes.c (pass_into_cfg_layout_mode): Schedule before jump2.
16449         (pass_outof_cfg_layout_mode): Schedule after pass_rtl_ifcvt.
16450
16451 2007-03-12  Seongbae Park <seongbae.park@gmail.com>
16452
16453         * c-decl.c (warn_variable_length_array): New function.
16454         Refactored from grokdeclarator to handle warn_vla
16455         and handle unnamed array case.
16456         (grokdeclarator): Refactored VLA warning case.
16457         * c.opt (Wvla): New flag.
16458         * doc/invoke.texi (Wvla): New warning.
16459
16460 2007-03-12  Richard Henderson  <rth@redhat.com>
16461
16462         * config/alpha/alpha.c (alpha_elf_section_type_flags): New.
16463         (TARGET_SECTION_TYPE_FLAGS): New.
16464
16465 2007-03-12  Richard Henderson  <rth@redhat.com>
16466
16467         * config/darwin.c (machopic_reloc_rw_mask): New.
16468         * config/darwin-protos.h (machopic_reloc_rw_mask): Declare.
16469         * config/darwin.h (TARGET_ASM_RELOC_RW_MASK): New.
16470
16471 2007-03-12  Mark Mitchell  <mark@codesourcery.com>
16472
16473         * cppdefault.c (cpp_EXEC_PREFIX): New variable.
16474         * cppdefault.h (cpp_PREFIX): Document.
16475         (cpp_PREFIX_len): Likewise.
16476         (cpp_EXEC_PREFIX): New variable.
16477         * Makefile.in (PREPROCESSOR_DEFINES): Add STANDARD_EXEC_PREFIX.
16478         * c-incpath.c (add_standard_paths): Correct logic for relocating
16479         paths within prefix.
16480
16481 2007-03-12  Uros Bizjak  <ubizjak@gmail.com>
16482
16483         * config/i386/i386.md (fixuns_trunc<mode>hi2): Implement from
16484         fixuns_truncsfhi2 and fixuns_truncdfhi2 using SSEMODEF
16485         mode macro.
16486         (fix_trunc<mode>di_sse): Implement from fix_truncsfdi_sse and
16487         fix_truncdfdi_sse using SSEMODEF mode macro.
16488         (fix_trunc<mode>si_sse): Implement from fix_truncsfsi_sse and
16489         fix_truncdfsi_sse using SSEMODEF mode macro.
16490         (fix_trunc?f?i_sse peephole2): Implement using SSEMODEF mode macro.
16491         (fix_trunc?f?i_sse K8 peephole2): Fix register constraint.
16492
16493 2007-03-12  Richard Sandiford  <richard@codesourcery.com>
16494
16495         * config.gcc (i[4567]86-wrs-vxworks, i[4567]86-wrs-vxworksae): Add
16496         elfos.h to tm_file.
16497
16498 2007-03-12  Olga Golovanevsky  <olga@il.ibm.com>
16499
16500         * tree.h : Add multiple_of_p declaration.
16501         * fold-const.c (multiple_of_p): Make multiple_of_p public.
16502         * ipa-type-escape.c (results_of_malloc): Redundant.
16503         (visited_stmts): New. Visited stmt for walk_use_def_chains.
16504         (cast_type): Extended with new members.
16505         (check_cast): Returns cast_type.
16506         (cast): New structure for data of walk_use_def_chains.
16507         (is_malloc_result, is_cast_from_non_pointer_1,
16508         is_cast_from_non_pointer,
16509         is_array_access_through_pointer_and_index): New functions.
16510         (look_for_casts): Returns cast types.
16511         (check_call): Returns void.
16512         (okay_pointer_operation): Use support of pointer plus index,
16513         pointer plus constant and allow all multiplications.
16514
16515 2007-03-11  Richard Guenther  <rguenther@suse.de>
16516
16517         PR tree-optimization/31115
16518         * tree-vrp.c (extract_range_from_binary_expr): Make sure
16519         the shift count is positive and non-anti-range for RSHIFT_EXPR.
16520         A shift count of zero is not special as with *_DIV_EXPR.
16521         (vrp_int_const_binop): Handle RSHIFT_EXPR for determining overflow
16522         direction.
16523
16524 2007-03-11  Ian Lance Taylor  <iant@google.com>
16525
16526         * tree-vrp.c (vrp_int_const_binop): Handle PLUS_EXPR and
16527         the *_DIV_EXPR codes correctly with overflow infinities.
16528
16529 2007-03-11  Ira Rosen  <irar@il.ibm.com>
16530
16531         * tree-data-ref.c (analyze_offset): Add a return value (bool) to
16532         indicate success/failure of the analysis. Add negation to subtrahend
16533         in case of subtraction. Fail if both operands contain constants.
16534         (create_data_ref): Fail if analyze_offset fails.
16535
16536 2007-03-11  Uros Bizjak  <ubizjak@gmail.com>
16537
16538         * config/i386/i386.md (frndintxf2): Rename to ...
16539         (rintxf2): ... this. Remove expander having same name.
16540         (rintsf2, rintdf2): Implement using SSEMODEF macro.
16541         (roundsf2, rounddf2): Ditto.
16542         (lrint<mode>di2, lrint<mode>si2): Implement using SSEMODEI24 macro.
16543         (lround<mode>di2, lround<mode>si2): Ditto.
16544
16545 2007-03-11  Steven Bosscher  <steven@gcc.gnu.org>
16546
16547         * lower-subreg.c: Include except.h.
16548         (decompose_multiword_subregs): Verify that the only control flow
16549         insns we can split are loads to multi-words pseudos.
16550         Handle breaking such blocks after splitting, instead of calling
16551         find_many_sub_basic_blocks.
16552
16553         * loop-unroll.c (split_edge_and_insert): Don't set BB_SUPERBLOCK
16554         on the new basic block.  Add a lengthy comment explaining why we
16555         thought this was necessary.
16556         * cfglayout.c (cfg_layout_finalize): Don't break superblocks.
16557
16558 2007-03-10  Mark Mitchell  <mark@codesourcery.com>
16559
16560         PR c++/30924
16561         * tree.c (walk_type_fields): Recurse into the element type of
16562         ARRAY_TYPEs if there is a pointer set.
16563
16564 2007-03-10  Dirk Mueller  <dmueller@suse.de>
16565
16566         * c-common.c (warn_logical_operator): Fix condition.
16567
16568 2007-03-10  Tobias Schl�ter  <tobi@gcc.gnu.org>
16569
16570         * config/i386/darwin.h (DARWIN_MINVERSION_SPEC): Add missing
16571         quotation mark.
16572         * config/darwin.c (machopic_select_section): Remove superfluous
16573         argument in call to categorize_decl_for_section.  Remove unused
16574         variable shlib.
16575
16576 2007-03-10  Joseph Myers  <joseph@codesourcery.com>
16577
16578         * configure.ac (glibc_header_dir): Set using with_build_sysroot if
16579         defined.
16580         * configure: Regenerate.
16581
16582 2007-03-10  Uros Bizjak  <ubizjak@gmail.com>
16583
16584         PR target/31101
16585         * config/i386/i386.md (UNSPEC_C2_FLAG): New constant.
16586         (fpremxf4_i387, fprem1xf4_i387): Use UNSPEC_C2_FLAG.
16587         (fmodxf3, fmod<mode>3, remainderxf3, remainder<mode>3):
16588         Add LABEL_NUSES to emitted label.
16589         * config/i386/i386.c (ix86_emit_fp_unordered_jump): Add
16590         branch probability value to emitted jump insn.
16591         * reg-stack.c (subst_stack_regs_pat)[UNSPEC]: Handle UNSPEC_C2_FLAG.
16592         Do not check life information and do not re-arrange input operands
16593         for UNSPEC_FSCALE_EXP, UNSPEC_FPREM_U and UNSPEC_FPREM1_U.
16594
16595 2007-03-10  Kaz Kojima  <kkojima@gcc.gnu.org>
16596
16597         * config/sh/sh.c (sh_insn_length_adjustment): Adjust for
16598         the change of decode_asm_operands.
16599
16600 2007-03-10  Kaz Kojima  <kkojima@gcc.gnu.org>
16601
16602         * mode-switching.c (create_pre_exit): Skip blockage insn.
16603
16604 2007-03-09  Diego Novillo  <dnovillo@redhat.com>
16605
16606         * tree-pass.h (TODO_update_smt_usage): Remove.
16607         Update all users.
16608         * tree-ssa-forwprop.c (forward_propagate_addr_expr_1): Remove
16609         argument SOME.
16610         Update all users.
16611
16612 2007-03-09  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
16613
16614         * pa.c (attr_length_call): Revise condition for long
16615         pc-relative branch.
16616         (output_call): Use "LONG_PIC_SDIFF" instruction sequence for long
16617         local calls on the SOM target.  Don't use "LONG_PIC_PCREL" call
16618         sequence on SOM target.
16619
16620 2007-03-09  Geoffrey Keating  <geoffk@apple.com>
16621
16622         * gcc.c: Document %{, in big comment at top.
16623         (input_suffix_matches): Remove special handling for .s and
16624         .S.
16625         (input_spec_matches): New.
16626         (handle_braces): Handle %{,.
16627         (validate_switches): ',' indicates a value which is not a switch.
16628         * config/alpha/osf.h (ASM_FINAL_SPEC): Use %{, rather than %{.
16629         to detect assembler input.
16630         * config/i386/sol2.h (CPP_SPEC): Likewise.
16631         * config/rs6000/sysv4.h (ASM_SPEC): Likewise.
16632         * config/rs6000/vxworks.h (ASM_SPEC): Likewise.
16633         * config/rs6000/lynx.h (ASM_SPEC): Likewise.
16634         * config/rs6000/linux64.h (ASM_SPEC_COMMON): Likewise.
16635         * config/i386/darwin.h (DARWIN_MINVERSION_SPEC): Objective-C plus
16636         -m64 causes deployment target to default to 10.5.
16637         * config/rs6000/darwin.h (DARWIN_MINVERSION_SPEC): Likewise.
16638
16639 2007-03-09  Richard Henderson  <rth@redhat.com>
16640
16641         PR target/26090
16642         * target.h (targetm.asm.out.reloc_rw_mask): New.
16643         * target-def.h (TARGET_ASM_RELOC_RW_MASK): New.
16644         (TARGET_ASM_OUT): Use it.
16645         * targhooks.c, targhooks.h (default_reloc_rw_mask): New.
16646         * varasm.c (categorize_decl_for_section): Remove shlib argument;
16647         use the new reloc_rw_mask target hook instead.
16648         (default_section_type_flags_1): Merge into...
16649         (default_section_type_flags): ... here.
16650         (decl_readonly_section_1): Merge into...
16651         (decl_readonly_section): ... here.
16652         (default_elf_select_section_1): Merge into...
16653         (default_elf_select_section): ... here.
16654         (default_unique_section_1): Merge into...
16655         (default_unique_section): ... here.
16656         (compute_reloc_for_rtx_1, compute_reloc_for_rtx): New.
16657         (default_select_rtx_section): Use it.
16658         (default_elf_select_rtx_section): Likewise.
16659         * output.h: Update to match.
16660         * doc/tm.texi (TARGET_ASM_RELOC_RW_MASK): New.
16661         * config/alpha/alpha.c (alpha_elf_reloc_rw_mask): New.
16662         (TARGET_ASM_RELOC_RW_MASK): New.
16663         * config/i386/i386.c (x86_64_elf_select_section): Adjust call
16664         to categorize_decl_for_section.
16665         (x86_64_elf_unique_section): Likewise.
16666         * config/ia64/hpux.h (TARGET_ASM_SELECT_SECTION,
16667         TARGET_ASM_UNIQUE_SECTION, TARGET_ASM_SELECT_RTX_SECTION): Remove.
16668         (TARGET_ASM_RELOC_RW_MASK): New.
16669         * config/ia64/ia64.c (ia64_rwreloc_select_section,
16670         ia64_rwreloc_unique_section, ia64_rwreloc_select_rtx_section): Remove.
16671         (ia64_hpux_reloc_rw_mask, ia64_reloc_rw_mask): New.
16672         (TARGET_RWRELOC): Remove.
16673         (ia64_section_type_flags): Adjust call to default_section_type_flags.
16674         * config/ia64/sysv4.h (TARGET_ASM_RELOC_RW_MASK): New.
16675         * config/rs6000/rs6000.c (rs6000_elf_section_type_flags): Remove.
16676         (rs6000_elf_select_section, rs6000_elf_unique_section): Remove.
16677         (rs6000_elf_reloc_rw_mask, rs6000_xcoff_reloc_rw_mask): New.
16678         (rs6000_xcoff_select_section): Use decl_readonly_section.
16679         (rs6000_xcoff_section_type_flags): Use default_section_type_flags.
16680         * config/rs6000/sysv4.h (TARGET_ASM_RELOC_RW_MASK): New.
16681         (TARGET_ASM_SELECT_SECTION, TARGET_ASM_UNIQUE_SECTION): Remove.
16682         (TARGET_SECTION_TYPE_FLAGS): Remove.
16683         * config/rs6000/xcoff.h (TARGET_ASM_RELOC_RW_MASK): New.
16684
16685 2007-03-09  Roger Sayle  <roger@eyesopen.com>
16686
16687         * fold-const.c (fold_comparison): Remove compile-time evaluation of
16688         complex constant equality/inequality comparisons for here.
16689         (fold_binary) <EQ_EXPR>: Simplify complex comparisons that are
16690         known at compile-time or can be simplified to a scalar comparison.
16691         (fold_relational_const): Move compile-time evaluation of complex
16692         constant equality/inequality comparisons to here.
16693
16694 2007-03-09  Alexandre Oliva  <aoliva@redhat.com>
16695
16696         PR rtl-optimization/30643
16697         * cse.c (cse_insn): Recompute dest_hash after insert_regs for
16698         dest_addr_elt.
16699         (fold_rtx): Recurse, like before 2006-11-03.
16700
16701 2007-03-09  DJ Delorie  <dj@redhat.com>
16702
16703         * config/m32c/t-m32c (m32c-pragma.o): Add TM_H dependency to
16704         m32c-pragma.o.
16705
16706 2007-03-09  Aldy Hernandez  <aldyh@redhat.com>
16707
16708         PR tree-optimization/30375
16709         * tree-ssa-dse.c (dse_possible_dead_store_p): Do not eliminate if
16710         LHS of statements is not the same.
16711         * testsuite/gcc.dg/tree-ssa/ssa-dse-10.c: New.
16712
16713 2007-03-09  Chao-ying Fu  <fu@mips.com>
16714
16715         * doc/extend.texi (MIPS DSP Built-in Functions): Document the DSP
16716         REV 2.
16717         * doc/invoke.texi (-mdspr2): Document new option.
16718         * config/mips/mips.md (UNSPEC_ABSQ_S_QB .. UNSPEC_DPSQX_SA_W_PH):
16719         New unspec for DSP REV 2.
16720         (<u>mulsidi3_32bit_internal): Check if !TARGET_DSPR2, because
16721         these instructions are extended in DSP REV 2.
16722         (mips-dspr2.md): Include.
16723         * config/mips/mips.opt (mdspr2): New option.
16724         * config/mips/mips.c (mips_function_type): Add MIPS_V4QI_FTYPE_V4QI,
16725         MIPS_SI_FTYPE_SI_SI_SI, MIPS_DI_FTYPE_DI_USI_USI, MIPS_DI_FTYPE_SI_SI,
16726         MIPS_DI_FTYPE_USI_USI, MIPS_V2HI_FTYPE_SI_SI_SI.
16727         (override_options): Check TARGET_DSPR2 to enable MASK_DSP.
16728         (CODE_FOR_mips_mul_ph): Define it to CODE_FOR_mulv2hi3.
16729         (dsp_bdesc): Add DSP REV 2 builtins.  Remove 32-bit only DSP builtins.
16730         (dsp_32only_bdesc): New description table for 32-bit only DSP REV 1
16731         and 2 builtins.
16732         (bdesc_map): Add one field of unsupported_target_flags.
16733         (bdesc_arrays):  Update entries to have extra fields.  Add
16734         dsp_32only_bdesc.
16735         (mips_init_builtins): Initialize new function types.
16736         Check unsupported_target_fileds to filter out builtins.
16737         * config/mips/mips.h (TARGET_CPU_CPP_BUILTINS): Define __mips_dspr2 if
16738         TARGET_DSPR2.
16739         (ASM_SPEC): Pass mdspr2 to the assembler.
16740         * config/mips/mips-dspr2.md: New file.
16741
16742 2007-03-09  Sa Liu  <saliu@de.ibm.com>
16743
16744         * config/rs6000/altivec.md: Fix vcond patterns using if_then_else.
16745
16746 2007-03-09  Ian Lance Taylor  <iant@google.com>
16747
16748         * opts.c (common_handle_option): Treat -Wstrict-overflow (with no
16749         argument) like -Wstrict-overflow=2.
16750         * doc/invoke.texi (Warning Options): Update documentation.
16751
16752 2007-03-09  Dirk Mueller  <dmueller@suse.de>
16753
16754         PR c++/17946
16755         * doc/invoke.texi (-Wlogical-op): Document.
16756         * common.opt (-Wlogical-op): New.
16757         * c-common.h (warn_logical_operator): Declare.
16758         * c-common.c (warn_logical_operator): Define.
16759         * c-typeck.c (parser_build_binary_op): Call
16760         warn_logical_operator.
16761
16762 2007-03-09  Alexandre Oliva  <aoliva@redhat.com>
16763
16764         * rtl.h (gen_rtx_ASM_INPUT): Use "" instead of NULL file name.
16765         * final.c (final_scan_insn): Test for non-"" file name.
16766
16767 2007-03-09  Sebastian Pop  <sebastian.pop@inria.fr>
16768
16769         * doc/loop.texi: Document the Omega linear constraints solver.
16770         * doc/invoke.texi: Document -fcheck-data-deps, omega-max-vars,
16771         omega-max-geqs, omega-max-eqs, omega-max-wild-cards,
16772         omega-hash-table-size, omega-max-keys, and
16773         omega-eliminate-redundant-constraints.
16774         * tree-pass.h (pass_check_data_deps): Declared.
16775         * omega.c: New.
16776         * omega.h: New.
16777         * timevar.def (TV_CHECK_DATA_DEPS): Declared.
16778         * tree-ssa-loop.c (check_data_deps, gate_check_data_deps,
16779         pass_check_data_deps): New.
16780         * tree-data-ref.c (init_data_ref): Remove declaration.
16781         (dump_data_dependence_relation): Dump DDR_INNER_LOOP.
16782         (analyze_array): Renamed init_array_ref, move up initializations.
16783         (init_data_ref): Renamed init_pointer_ref.  Moved before its call.
16784         Removed arguments that are set to NULL.
16785         (analyze_indirect_ref): Correct indentation, correct call to
16786         init_pointer_ref.
16787         (object_analysis): Call init_array_ref instead of analyze_array.
16788         (initialize_data_dependence_relation): Initialize DDR_INNER_LOOP.
16789         (access_functions_are_affine_or_constant_p): Use DR_ACCESS_FNS instead
16790         of DR_ACCESS_FNS_ADDR.
16791         (init_omega_eq_with_af, omega_extract_distance_vectors,
16792         omega_setup_subscript, init_omega_for_ddr_1, init_omega_for_ddr,
16793         ddr_consistent_p): New.
16794         (compute_affine_dependence): Check consistency of ddrs when
16795         flag_check_data_deps is passed.
16796         (analyze_all_data_dependences): Uncomment.
16797         (tree_check_data_deps): New.
16798         * tree-data-ref.h: Include omega.h.
16799         (DR_ACCESS_FNS_ADDR): Removed.
16800         (data_dependence_relation): Add inner_loop.
16801         (DDR_INNER_LOOP): New.
16802         * common.opt (fcheck-data-deps): New.
16803         * tree-flow.h (tree_check_data_deps): Declare.
16804         * Makefile.in (TREE_DATA_REF_H): Depend on omega.h.
16805         (OBJS-common): Depend on omega.o.
16806         (omega.o): Define.
16807         * passes.c (pass_check_data_deps): Scheduled.
16808         * params.def (PARAM_OMEGA_MAX_VARS, PARAM_OMEGA_MAX_GEQS,
16809         PARAM_OMEGA_MAX_EQS, PARAM_OMEGA_MAX_WILD_CARDS,
16810         PARAM_OMEGA_HASH_TABLE_SIZE, PARAM_OMEGA_MAX_KEYS,
16811         PARAM_VECT_MAX_VERSION_CHECKS,
16812         PARAM_OMEGA_ELIMINATE_REDUNDANT_CONSTRAINTS): New.
16813
16814 2007-03-09  Richard Guenther  <rguenther@suse.de>
16815
16816         PR tree-optimization/30904
16817         PR middle-end/31058
16818         * tree-vrp.c (extract_range_from_binary_expr): Handle RSHIFT_EXPR
16819         the same way as *_DIV_EXPR.
16820
16821 2007-03-09  Alexandre Oliva  <aoliva@redhat.com>
16822
16823         * recog.c (decode_asm_operands): No mixed declarations and code.
16824
16825 2007-03-09  Alexandre Oliva  <aoliva@redhat.com>
16826
16827         * rtl.def (ASM_INPUT): Add location.
16828         * rtl.h (ASM_INPUT_SOURCE_LOCATION): New.
16829         (ASM_INPUT_SOURCE_FILE, ASM_INPUT_SOURCE_LINE): New.
16830         (decode_asm_operands): Add loc operand.
16831         (gen_rtx_ASM_INPUT, gen_rtx_ASM_INPUT_loc): Define.
16832         * stmt.c (expand_asm): Rename to...
16833         (expand_asm_loc): ... this.  Add locus argument.  Pass it on to
16834         gen_rtx_ASM_INPUT_loc.
16835         (expand_asm_expr): Adjust.
16836         * recog.c (decode_asm_operands): Add loc operand.
16837         (check_asm_operands, extract_insn): Adjust.
16838         * reload1.c (maybe_fix_stack_asms): Likewise.
16839         * final.c (asm_insn_count): Likewise.
16840         (final_scan_insn): Output # line before and after asm.
16841
16842 2007-03-09  Daniel Berlin  <dberlin@dberlin.org>
16843
16844         * tree-ssa-structalias.c (variable_info): Remove
16845         finished_solution.
16846         (new_var_info): Ditto.
16847         (shared_bitmap_info_t): New structure.
16848         (shared_bitmap_table): New variable.
16849         (shared_bitmap_hash): New function.
16850         (shared_bitmap_eq): Ditto
16851         (shared_bitmap_lookup): Ditto.
16852         (shared_bitmap_add): Ditto.
16853         (merge_smts_into): Change to take bitmap directly.
16854         (find_what_p_points_to): Rewrite to use shared bitmap hashtable.
16855         (init_alias_vars): Init shared bitmap hashtable.
16856         (delete_points_to_sets): Delete shared bitmap hashtable.
16857         * tree-ssa-operands.c (add_virtual_operand): Partially revert the
16858         is_aliased removal as a change that was still necessary was
16859         deleted.
16860
16861 2007-03-09  Uros Bizjak  <ubizjak@gmail.com>
16862
16863         * config/i386/i386.h (override_options): Conditionally disable
16864         x86_sahf for 64bit targets only.
16865
16866 2007-03-08  Andrew Pinski  <andrew_pinski@playstation.sony.com>
16867
16868         PR C/31072
16869         * c-decl.c (merge_decls): Don't call make_var_volatile.
16870         * varasm.c (make_var_volatile): Remove.
16871         * output.h (make_var_volatile): Remove.
16872
16873 2007-03-08  Zdenek Dvorak  <dvorakz@suse.cz>
16874
16875         PR tree-optimization/31085
16876         * tree-ssa-address.c (create_mem_ref): Fix test of type of base.
16877
16878 2007-03-08  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
16879
16880         * builtins.def (lceil, lceilf, lceill, lfloor, lfloorf, lfloorl,
16881         llceil, llceilf, llceill, llfloor, llfloorf, llfloorl): Mark with
16882         ATTR_CONST_NOTHROW_LIST.
16883
16884         * fold-const.c (tree_expr_nonnegative_warnv_p): Handle
16885         FIX_TRUNC_EXPR.
16886
16887 2007-03-08  Diego Novillo  <dnovillo@redhat.com>
16888
16889         * doc/tree-ssa.texi: Remove documentation for V_MUST_DEF.
16890
16891 2007-03-08  Geoffrey Keating  <geoffk@apple.com>
16892
16893         PR 31013
16894         * gccspec.c (lang_specific_driver): Do nothing when NEXT_OBJC_RUNTIME
16895         is declared.
16896         * config/darwin.h (REAL_LIBGCC_SPEC): When -fgnu-runtime is
16897         passed, use shared libgcc.
16898
16899 2007-03-08  Roger Sayle  <roger@eyesopen.com>
16900
16901         * tree-eh.c (do_return_redirection): Call build_gimple_modify_stmt
16902         instead of calling build2 with a GIMPLE_MODIFY_STMT.
16903         (honor_protect_cleanup_actions, lower_try_finally_switch):
16904         Likewise.
16905         * tree-if-conv.c (replace_phi_with_cond_gimple_modify_stmt,
16906         ifc_temp_var): Likewise.
16907         * tree-inline.c (setup_one_parameter): Likewise.
16908         * tree-mudflap.c (mf_decl_cache_locals,
16909         mf_build_check_statement_for): Likewise.
16910         * tree-nested.c (init_tmp_var, save_tmp_var,
16911         finalize_nesting_tree_1): Likewise.
16912         * tree-outof-ssa.c (insert_copy_on_edge,
16913         insert_backedge_copies): Likewise.
16914         * tree-profile.c (tree_gen_edge_profiler,
16915         tree_gen_ic_profiler): Likewise.
16916         * tree-scalar-evolution.c (scev_const_prop): Likewise.
16917         * tree-sra.c (sra_build_assignment): Likewise.
16918         * tree-ssa-loop-im.c (determine_invariantness_stmt): Likewise.
16919         * tree-ssa-math-opts.c (insert_reciprocals,
16920         execute_cse_sincos_1): Likewise.
16921         * tree-tailcall.c (adjust_accumulator_values,
16922         adjust_return_value): Likewise.
16923         * tree-vect-patterns.c (vect_pattern_recog_1): Likewise.
16924         * tree-vect-transform.c (vect_create_data_ref_ptr,
16925         bump_vector_ptr, vect_init_vector, get_initial_def_for_induction,
16926         vect_create_epilog_for_reduction, vectorizable_reduction,
16927         vectorizable_call, vectorizable_conversion,
16928         vectorizable_assignment, vectorizable_operation,
16929         vectorizable_type_demotion, vect_gen_widened_results_half,
16930         vect_permute_store_chain, vectorizable_store,
16931         vect_setup_realignment, vect_permute_load_chain,
16932         vectorizable_load, vectorizable_condition,
16933         vect_create_cond_for_align_checks): Likewise.
16934         * tree-vrp.c (build_assert_expr_for): Likewise.
16935
16936 2007-03-08  Ian Lance Taylor  <iant@google.com>
16937
16938         * tree-vrp.c: Include "intl.h".
16939         (usable_range_p): New static function.
16940         (compare_values_warnv): Don't test TYPE_OVERFLOW_UNDEFINED for
16941         overflowed values, juts set *strict_overflow_p.
16942         (compare_values): Only return -2 if one of the operands is not a
16943         constant.
16944         (compare_ranges): Call usable_range_p.
16945         (compare_range_with_value): Likewise.
16946         (vrp_evaluate_conditional_warnv): Rename from
16947         vrp_evaluate_conditional.  Make static.  Change all callers.
16948         (vrp_evaluate_conditional): New function.
16949         (simplify_div_or_mod_using_ranges): Issue warning about reliance
16950         on signed overflow.
16951         (simplify_abs_using_ranges): Likewise.
16952         (simplify_stmt_for_jump_threading): Add within_stmt parameter.
16953         * tree-ssa-dom.c (simplify_stmt_for_jump_threading): Add
16954         within_stmt parameter.
16955         * tree-ssa-propagate.c (fold_predicate_in): Update call to
16956         vrp_evaluate_conditional.
16957         * tree-ssa-threadedge.c
16958         (record_temporary_equivalences_from_stmts_at_dest): Change
16959         simplify parameter to take a second tree parameter.
16960         (simplify_control_stmt_condition): Likewise.
16961         (thread_across_edge): Likewise.
16962         * tree-flow.h (vrp_evaluate_conditional): Update declaration.
16963         (thread_across_edge): Likewise.
16964         * Makefile.in (tree-vrp.o): Depend upon intl.h.
16965
16966 2007-03-08  Uros Bizjak  <ubizjak@gmail.com>
16967
16968         * config/i386/i386.h (TARGET_SAHF): New define.
16969         * config/i386/i386.c (ix86_tune_features) [X86_TUNE_USE_SAHF]:
16970         Also enable for m_K8, m_AMDFAM10 and m_CORE2.
16971         (x86_sahf): New global variable.
16972         (override_options): Add PTA_NO_SAHF to pta_flags enum.  Recode
16973         pta_flags masks using shifts.  Add PTA_NO_SAHF to x86_64 and
16974         nocona processor flags.  Set x86_sahf when PTA_NO_SAHF is not set
16975         in processor flags.  Do not unconditionally disable TARGET_USE_SAHF
16976         for 64-bit.
16977         (ix86_fp_comparison_sahf_cost): Return high value for !TARGET_SAHF.
16978         (ix86_expand_fp_compare): Check for TARGET_CMOVE or TARGET_SAHF
16979         when expanding fcomi/sahf based tests.
16980         (ix86_emit_fp_unordered_jump): Check for TARGET_SAHF when
16981         expanding sahf based alternative. Emit sahf based sequence when
16982         optimizing for code size.
16983         * config/i386/i386.md (x86_sahf_1): Do not disable for
16984         TARGET_64BIT, enable for TARGET_SAHF.
16985
16986 2007-03-08  Martin Michlmayr  <tbm@cyrius.com>
16987
16988         * tree-ssa-coalesce.c (fail_abnormal_edge_coalesce): Remove
16989         spurious whitespace from error message.
16990
16991 2007-03-08  Volker Reichelt  <reichelt@netcologne.de>
16992
16993         PR c++/30852
16994         * c-common.c (fold_offsetof_1): Handle COMPOUND_EXPR.
16995
16996 2007-03-08  Alexandre Oliva  <aoliva@redhat.com>
16997
16998         * c-decl.c (grokdeclarator): Disable warnings for anonymous
16999         bitfields.
17000         * tree-sra.c (instantiate_element): Propagate disabled warnings
17001         from the element itself to the created variable.
17002
17003 2007-03-07  Richard Henderson  <rth@redhat.com>
17004
17005         PR target/30848
17006         * reg-stack.c (emit_swap_insn): If a malformed asm was seen,
17007         silently fix up the stack in the case of a missing register.
17008
17009 2007-03-07  Paul Brook  <paul@codesourcery.com>
17010
17011         * config/arm/libunwind.S: Add .arch/.object_arch for armv4 builds.
17012
17013 2007-03-07  Joseph Myers  <joseph@codesourcery.com>
17014
17015         * config/arm/unwind-arm.c (struct wmmxd_regs, struct wmmxc_regs):
17016         New.
17017         (phase1_vrs): Use them.
17018         (DEMAND_SAVE_WMMXD, DEMAND_SAVE_WMMXC): New.
17019         (__gnu_Unwind_Save_WMMXD, __gnu_Unwind_Restore_WMMXD,
17020         __gnu_Unwind_Save_WMMXC, __gnu_Unwind_Restore_WMMXC): Declare.
17021         (restore_non_core_regs): Call __gnu_Unwind_Restore_WMMXD and
17022         __gnu_Unwind_Restore_WMMXC if required.
17023         (_Unwind_VRS_Pop): Implement iWMMXt support.
17024         * config/arm/libunwind.S (gnu_Unwind_Restore_WMMXD,
17025         gnu_Unwind_Save_WMMXD, gnu_Unwind_Restore_WMMXC,
17026         gnu_Unwind_Save_WMMXC): Define.
17027
17028 2007-03-07  Richard Sandiford  <richard@codesourcery.com>
17029
17030         * config/vxworks.h (vxworks_override_options): Declare.
17031         (VXWORKS_OVERRIDE_OPTIONS): Use it.
17032         * config/vxworks.c: Include target.h and toplev.h.
17033         (vxworks_override_options): New function.
17034         * config/t-vxworks (vxworks.o): Depend on $(TARGET_H) and toplev.h.
17035
17036 2007-03-07  Andreas Krebbel  <krebbel1@de.ibm.com>
17037
17038         * config/s390/s390.c (override_options): Don't emit an error when
17039         -mstack-size is used without providing -mstack-guard.
17040         (s390_emit_prologue): Choose stack_guard value automatically if not
17041         provided via command line.
17042         * doc/invoke.texi: Adjust description of -mstack-guard and
17043         -mstack-size.
17044
17045 2007-03-07  Richard Sandiford  <richard@codesourcery.com>
17046
17047         * config/i386/i386.c (output_set_got): Add a GOT initialization
17048         sequence for VxWorks PIC.
17049         (legitimate_pic_address_disp_p): Allow UNSPEC_GOT wrappers
17050         around labels as well as symbols.  Use gotoff_operand instead
17051         of local_symbolic_operand.
17052         (legitimize_pic_address): Use gotoff_operand instead of
17053         local_symbolic_operand.  Use @GOT accesses for labels as
17054         well as symbols.
17055         (ix86_output_addr_diff_elt): Use PC-relative rather than
17056         GP-relative offsets for VxWorks PIC.
17057         (ix86_expand_move): Pass NULL_RTX to legitimize_pic_address unless
17058         no_new_pseudos.  Check whether the returned register is op0.
17059         * config/i386/i386.md (tablejump): Use PC-relative rather than
17060         GP-relative offsets for VxWorks PIC.
17061         * config/i386/predicates.md (gotoff_operand): New predicate.
17062
17063 2007-03-06  Richard Sandiford  <richard@codesourcery.com>
17064
17065         * config/vxworks.h (VXWORKS_GOTT_BASE, VXWORKS_GOTT_INDEX): Undefine
17066         before defining.
17067         * config/vxworks-dummy.h: New file.
17068         * config/i386/i386.h: Include it.
17069
17070 2007-03-07  Alexandre Oliva  <aoliva@redhat.com>
17071
17072         * dwarf2out.c (is_inlined_entry_point): New
17073         (add_high_low_attributes): Emit DW_AT_entry_pc along with
17074         DW_AT_ranges if the first subblock is the entry point.
17075
17076 2007-03-06  David Daney  <ddaney@avtrex.com>
17077
17078         * doc/install.texi (mips-*-*): Change recommended binutils
17079         version.
17080
17081 2007-03-06  Anatoly Sokolov <aesok@post.ru>
17082
17083         * config/avr/avr.c (avr_mcu_types): Add support for ATmega325P,
17084         ATmega3250P, ATmega329P, ATmega3290P, AT90USB82 and AT90USB162
17085         devices.
17086         * config/avr/avr.h (LINK_SPEC, CRT_BINUTILS_SPECS): (Ditto.).
17087         * config/avr/t-avr (MULTILIB_MATCHES): (Ditto.).
17088
17089 2007-03-06  Jan Hubicka  <jh@suse.cz>
17090
17091         * errors.h (warning, error, fatal, internal_error): Mark as cold.
17092         * predict.c (maybe_hot_bb): Cold functions are never hot; hot
17093         functions are hot.
17094         (probably_cold_bb_p): Cold functions are cold.
17095         (probably_never_executed_bb_p): Cold functions are cold.
17096         (tree_bb_level_predictions): Predict calls to cold functions as not
17097         taken.
17098         (compute_function_frequency): Check hot/cold attributes.
17099         * function.h (function_frequency): Update comments.
17100         * predict.def (PRED_COLD_FUNCTION): Predict cold function.
17101         * c-common.c (handle_hot_attribute, handle_cold_attribute): New.
17102         (c_common_att): Add cold and hot.
17103
17104         * doc/extend.texi (hot,cold attributes): Document.
17105
17106 2007-03-06  Andrew Haley  <aph@redhat.com>
17107
17108         * function.c (expand_function_end): Move blockage to just after we
17109         emit the label for the naked return from the function.
17110
17111 2007-03-06  Richard Sandiford  <richard@codesourcery.com>
17112
17113         * config/i386/att.h (ASM_OUTPUT_ASCII, ASM_OUTPUT_SKIP): Undefine
17114         before redefining.
17115
17116 2007-03-06  Jan Hubicka  <jh@suse.cz>
17117
17118         * reg-stack.c (reg_to_stack): Large models don't allow NAN to be
17119         loaded for constant large models.  Non-large 64bit PIC can do.
17120         * i386.h (CASE_VECTOR_MODE): Large PIC cases are 64bit.
17121         * cmodel.h: Add LARGE PIC.
17122         * i386.md (UNSPEC_PLTOFF): New.
17123         (UNSPEC_SET_RIP, UNSPEC_SET_GOT_OFFSET): New; renumber other
17124         unspecs as needed.
17125         (*call_1_rex64): Disable for large models.
17126         (*call_1_rex64_large): New.
17127         (*call_value_1_rex64): Disable for large models.
17128         (*call_value_1_rex64_large): New.
17129         (set_rip_rex4): New.
17130         (set_got_offset_rex64): New.
17131         * predicates.md (constant_call_address_operand): For large model
17132         constant calls are not possible.
17133         * i386-protos.h (construct_plt_address): Declare.
17134         * i386.c (override_options): Accept large models.
17135         (ix86_expand_prologue): Expand large PIC GOT pointer load.
17136         (legitimate_constant_p): Add new UNSPECs.
17137         (legitimate_pic_operand_p): Likewise.
17138         (legitimate_pic_address_disp_p): Disallow local symbols for large PICs.
17139         (legitimize_pic_address): Do easy RIP relative way for TLS only for
17140         non-large model.
17141         (output_pic_addr_const): Add PLTOFF.
17142         (ix86_output_addr_diff_elt): Output 64bit tables when needed.
17143         (ix86_expand_move): Legitimize pic address when in PIC mode.
17144         (construct_plt_address): New function.
17145         (ix86_expand_call): Offload the address to register and use GOT
17146         pointer for large model.
17147         * invoke.texi (mcmodel=large): Update documentation.
17148
17149 2007-03-06  Richard Henderson  <rth@redhat.com>
17150
17151         * config/i386/i386.c (x86_use_leave, x86_push_memory,
17152         x86_zero_extend_with_and, x86_movx, x86_double_with_add,
17153         x86_use_bit_test, x86_unroll_strlen, x86_deep_branch,
17154         x86_branch_hints, x86_use_sahf, x86_partial_reg_stall,
17155         x86_partial_flag_reg_stall, x86_use_himode_fiop, x86_use_simode_fiop,
17156         x86_use_mov0, x86_use_cltd, x86_read_modify_write, x86_read_modify,
17157         x86_split_long_moves, x86_promote_QImode, x86_fast_prefix,
17158         x86_single_stringop, x86_qimode_math, x86_promote_qi_regs,
17159         x86_himode_math, x86_promote_hi_regs, x86_sub_esp_4, x86_sub_esp_8,
17160         x86_add_esp_4, x86_add_esp_8, x86_integer_DFmode_moves,
17161         x86_partial_reg_dependency, x86_memory_mismatch_stall,
17162         x86_prologue_using_move, x86_epilogue_using_move, x86_shift1,
17163         x86_sse_partial_reg_dependency, x86_sse_split_regs,
17164         x86_sse_unaligned_move_optimal, x86_sse_typeless_stores,
17165         x86_sse_load0_by_pxor, x86_use_ffreep, x86_use_incdec,
17166         x86_inter_unit_moves, x86_ext_80387_constants, x86_four_jump_limit,
17167         x86_schedule, x86_use_bt, x86_pad_returns,
17168         x86_use_xchgb): Merge into ...
17169         (ix86_tune_features): ... here.  New array.
17170         (x86_cmove, x86_cmpxchg, x86_cmpxchg8b, x86_xadd,
17171         x86_bswap): Merge into ...
17172         (ix86_arch_features): ... here.  New array.
17173         (x86_3dnow_a): Remove.
17174         (x86_accumulate_outgoing_args): Make static.
17175         (x86_arch_always_fancy_math_387): Make static.
17176         (ix86_tune_mask, ix86_arch_mask): Move ...
17177         (override_options): ... to local variables here.  Apply the
17178         appropriate mask to each element of ix86_arch_features and
17179         ix86_tune_features.  Adjust TARGET_CMOVE and TARGET_USE_SAHF
17180         as were done in the old macros.
17181         (standard_80387_constant_p): Use TARGET_EXT_80387_CONSTANTS.
17182         * config/i386/i386.h (x86_use_leave, x86_push_memory,
17183         x86_zero_extend_with_and, x86_use_bit_test, x86_cmove, x86_deep_branch,
17184         x86_branch_hints, x86_unroll_strlen, x86_double_with_add,
17185         x86_partial_reg_stall, x86_movx, x86_use_himode_fiop,
17186         x86_use_simode_fiop, x86_use_mov0, x86_use_cltd, x86_use_xchgb,
17187         x86_read_modify_write, x86_read_modify, x86_split_long_moves,
17188         x86_promote_QImode, x86_single_stringop, x86_fast_prefix,
17189         x86_himode_math, x86_qimode_math, x86_promote_qi_regs,
17190         x86_promote_hi_regs, x86_integer_DFmode_moves, x86_add_esp_4,
17191         x86_add_esp_8, x86_sub_esp_4, x86_sub_esp_8,
17192         x86_partial_reg_dependency, x86_memory_mismatch_stall,
17193         x86_accumulate_outgoing_args, x86_prologue_using_move,
17194         x86_epilogue_using_move, x86_decompose_lea,
17195         x86_arch_always_fancy_math_387, x86_shift1,
17196         x86_sse_partial_reg_dependency, x86_sse_split_regs,
17197         x86_sse_unaligned_move_optimal, x86_sse_typeless_stores,
17198         x86_sse_load0_by_pxor, x86_use_ffreep, x86_inter_unit_moves,
17199         x86_schedule, x86_use_bt, x86_cmpxchg, x86_cmpxchg8b, x86_xadd,
17200         x86_use_incdec, x86_pad_returns, x86_bswap,
17201         x86_partial_flag_reg_stall): Remove.
17202         (enum ix86_tune_indices): New.
17203         (ix86_tune_features): New.
17204         (TARGET_USE_LEAVE, TARGET_PUSH_MEMORY, TARGET_ZERO_EXTEND_WITH_AND,
17205         TARGET_USE_BIT_TEST, TARGET_UNROLL_STRLEN,
17206         TARGET_DEEP_BRANCH_PREDICTION, TARGET_BRANCH_PREDICTION_HINTS,
17207         TARGET_DOUBLE_WITH_ADD, TARGET_USE_SAHF, TARGET_MOVX,
17208         TARGET_PARTIAL_REG_STALL, TARGET_PARTIAL_FLAG_REG_STALL,
17209         TARGET_USE_HIMODE_FIOP, TARGET_USE_SIMODE_FIOP, TARGET_USE_MOV0,
17210         TARGET_USE_CLTD, TARGET_USE_XCHGB, TARGET_SPLIT_LONG_MOVES,
17211         TARGET_READ_MODIFY_WRITE, TARGET_READ_MODIFY, TARGET_PROMOTE_QImode,
17212         TARGET_FAST_PREFIX, TARGET_SINGLE_STRINGOP, TARGET_QIMODE_MATH,
17213         TARGET_HIMODE_MATH, TARGET_PROMOTE_QI_REGS, TARGET_PROMOTE_HI_REGS,
17214         TARGET_ADD_ESP_4, TARGET_ADD_ESP_8, TARGET_SUB_ESP_4,
17215         TARGET_SUB_ESP_8, TARGET_INTEGER_DFMODE_MOVES,
17216         TARGET_PARTIAL_REG_DEPENDENCY, TARGET_SSE_PARTIAL_REG_DEPENDENCY,
17217         TARGET_SSE_UNALIGNED_MOVE_OPTIMAL, TARGET_SSE_SPLIT_REGS,
17218         TARGET_SSE_TYPELESS_STORES, TARGET_SSE_LOAD0_BY_PXOR,
17219         TARGET_MEMORY_MISMATCH_STALL, TARGET_PROLOGUE_USING_MOVE,
17220         TARGET_EPILOGUE_USING_MOVE, TARGET_SHIFT1, TARGET_USE_FFREEP,
17221         TARGET_INTER_UNIT_MOVES, TARGET_FOUR_JUMP_LIMIT, TARGET_SCHEDULE,
17222         TARGET_USE_BT, TARGET_USE_INCDEC, TARGET_PAD_RETURNS,
17223         TARGET_EXT_80387_CONSTANTS): Use it.
17224         (enum ix86_arch_indices): New.
17225         (ix86_arch_features): New.
17226         (TARGET_CMOVE, TARGET_CMPXCHG, TARGET_CMPXCHG8B, TARGET_XADD,
17227         TARGET_BSWAP): Use it.
17228         (ix86_tune_mask, ix86_arch_mask): Remove.
17229
17230 2007-03-06  Joseph Myers  <joseph@codesourcery.com>
17231
17232         PR bootstrap/31020
17233         * configure.ac (CROSS_SYSTEM_HEADER_DIR, build_system_header_dir):
17234         Define using $${sysroot_headers_suffix}.
17235         * configure: Regenerate.
17236         * cppdefault.c (cpp_include_defaults): Make FIXED_INCLUDE_DIR a
17237         multilib-suffixed directory if SYSROOT_HEADERS_SUFFIX_SPEC
17238         defined.
17239         * doc/invoke.texi (-print-sysroot-headers-suffix): Document.
17240         * gcc.c (print_sysroot_headers_suffix): New.
17241         (option_map): Include --print-sysroot-headers-suffix.
17242         (display_help): Mention -print-sysroot-headers-suffix.
17243         (process_command): Handle -print-sysroot-headers-suffix.
17244         (do_spec_1): Append multilib directory to include-fixed path if
17245         sysroot suffixes in use.
17246         (main): Handle -print-sysroot-headers-suffix.
17247         * Makefile.in (start.encap): Don't depend on xlimits.h
17248         (xlimits.h): Remove.
17249         (stmp-int-hdrs): Don't depend on xlimits.h.  Inline generation of
17250         limits.h for each multilib in fixinc_list.
17251         (fixinc_list, s-fixinc_list): New.
17252         (stmp-fixinc): Depend on fixinc_list.  If not copying headers,
17253         generate them for each multilib in fixinc_list.
17254         (stmp-fixproto): Use include-fixed.  Run fixproto for each
17255         multilib in fixinc_list.
17256         (mostlyclean): Don't remove xlimits.h.
17257         (clean): Remove include-fixed.
17258         (real-install-headers-tar, real-install-headers-cpio,
17259         real-install-headers-cp): Don't copy include, only include-fixed.
17260         (install-mkheaders): Depend on fixinc_list.  Don't depend on
17261         xlimits.h.  Save limits.h files for each multilib in fixinc_list.
17262         Always save mkinstalldirs.  Preserve ${sysroot_headers_suffix} in
17263         SYSTEM_HEADER_DIR setting in mkheaders.conf.
17264
17265 2007-03-06  Jan Hubicka  <jh@suse.cz>
17266
17267         * regstack.c (reg_to_stack): When in 64bit PIC mode, we still can load
17268         NANs easilly.
17269
17270 2007-03-06  Richard Sandiford  <richard@codesourcery.com>
17271
17272         * configure.ac: Allow tm_file to contain build-directory files.
17273         * configure: Regenerate.
17274         * config.gcc (m68k-*-uclinux*): Add ./sysroot-suffix.h to tm_file.
17275         * config/m68k/t-uclinux (sysroot-suffix.h): New target.
17276         * config/m68k/print-sysroot-suffix.sh: New file.
17277
17278 2007-03-06  Richard Sandiford  <richard@codesourcery.com>
17279
17280         * config/m68k/m68k.h (PIC_OFFSET_TABLE_REGNUM): Use the REGNO
17281         of pic_offset_table_rtx if reload_completed.
17282         (CONDITIONAL_REGISTER_USAGE): Use PIC_REG instead of
17283         PIC_OFFSET_TABLE_REGNUM.
17284         * config/m68k/m68k.c (TARGET_ASM_CAN_OUTPUT_MI_THUNK): Always
17285         return true.
17286         (m68k_save_reg): Use PIC_REG instead of PIC_OFFSET_TABLE_REGNO.
17287         (m68k_output_mi_thunk): Rewrite to use RTL.  Honor vcall_offset.
17288
17289 2007-03-06  Richard Sandiford  <richard@codesourcery.com>
17290
17291         * config/m68k/m68k.c (m68k_save_reg): Save the PIC register in
17292         functions that call eh_return.
17293
17294 2007-03-06  Richard Sandiford  <richard@codesourcery.com>
17295
17296         * config/m68k/m68k.c (m68k_save_reg): Save the PIC register in
17297         functions that need a constant pool.
17298
17299 2007-03-06  Richard Sandiford  <richard@codesourcery.com>
17300
17301         PR target/28181
17302         * config/m68k/m68k-protos.h (m68k_secondary_reload_class): Declare.
17303         (m68k_preferred_reload_class): Likewise.
17304         * config/m68k/m68k.h (HARD_REGNO_MODE_OK): Remove duplicated comment.
17305         (SECONDARY_RELOAD_CLASS): Define.
17306         (PREFERRED_RELOAD_CLASS): Use m68k_preferred_reload_class.
17307         (LIMIT_RELOAD_CLASS): Delete.
17308         * config/m68k/m68k.c (m68k_regno_mode_ok): Don't prevent address
17309         registers from storing bytes.
17310         (m68k_secondary_reload_class): New function.
17311         (m68k_preferred_reload_class): Likewise.
17312
17313 2007-03-06  Richard Sandiford  <richard@codesourcery.com>
17314
17315         * config/m68k/m68k.c (m68k_save_reg): Remove special case for
17316         leaf functions.
17317         (m68k_expand_prologue): Likewise.
17318
17319 2007-03-06  Richard Sandiford  <richard@codesourcery.com>
17320
17321         * config/m68k/m68k-protos.h (output_sibcall): Declare.
17322         (mips_expand_epilogue): Add a bool parameter.
17323         (m68k_legitimize_sibcall_address): Declare.
17324         * config/m68k/m68k.c (TARGET_FUNCTION_OK_FOR_SIBCALL): Define.
17325         (m68k_expand_epilogue): Add a parameter to select between sibling
17326         and normal epilogues.  Only generate a return for the latter.
17327         (m68k_ok_for_sibcall_p): New function.
17328         (m68k_legitimize_sibcall_address, output_sibcall): New functions.
17329         * config/m68k/m68k.md (sibcall, *sibcall): New patterns.
17330         (sibcall_value, *sibcall_value): Likewise.
17331         (*call, *call_value): Require !SIBLING_CALL_P.
17332         (epilogue): Update call to m68k_expand_epilogue.
17333         (sibcall_epilogue): New pattern.
17334         * config/m68k/predicates.md (const_call_operand): Say that this
17335         predicate applies to sibling calls too.
17336         (sibcall_operand): New predicate.
17337
17338 2007-03-06  Richard Sandiford  <richard@codesourcery.com>
17339
17340         * config/m68k/m68k.md (movsf_cf_soft): Provide the same non-mov3q
17341         alternatives as movsi_cf.
17342         (movsf_cf_hard): Add commentary.
17343
17344 2007-03-06  Kazu Hirata  <kazu@codesourcery.com>
17345             Richard Sandiford  <richard@codesourcery.com>
17346
17347         * config/m68k/m68k-protos.h (m68k_interrupt_function_p): Declare.
17348         (m68k_movem_pattern_p, m68k_output_movem): Likewise.
17349         (m68k_expand_prologue, m68k_expand_epilogue): Likewise.
17350         * config/m68k/m68k.h (EPILOGUE_USES): Define.  Treat all registers
17351         as being live on exit from an interrupt function.
17352         (PRINT_OPERAND_PUNCT_VALID_P): Return true for '?'.
17353         * config/m68k/m68k.c (MIN_MOVEM_REGS, MIN_FMOVEM_REGS): New macros.
17354         (m68k_frame): Remove reg_rev_mask and fpu_rev_mask.
17355         (TARGET_ASM_FUNCTION_PROLOGUE, TARGET_ASM_FUNCTION_EPILOGUE): Delete.
17356         (m68k_interrupt_function_p): Globalize.
17357         (m68k_compute_frame_layout): Remove reverse mask code.
17358         (m68k_emit_movem, m68k_set_frame_related): New functions.
17359         (m68k_output_function_prologue): Delete in favor of...
17360         (m68k_expand_prologue): ...this new function.
17361         (m68k_output_function_epilogue): Delete in favor of...
17362         (m68k_expand_epilogue): ...this new function.
17363         (m68k_split_offset, m68k_movem_pattern_p, m68k_output_movem): New
17364         functions.
17365         (print_operand): Handle %?.
17366         * config/m68k/m68k.md (UNSPEC_SIN, UNSPEC_COS): Remove excess space.
17367         (UNSPEC_GOT, A1_REG, PIC_REG, FP0_REG): New constants.
17368         (prologue, epilogue): New patterns.
17369         (return): Turn into a define_expand.
17370         (*return): New pattern, derived from old "return" pattern.  Use rte
17371         rather than rts for interrupt functions.  Only use rtd if the pop
17372         count is nonzero.
17373         (*m68k_store_multiple, *m68k_store_multiple_automod): New patterns.
17374         (*m68k_load_multiple, *m68k_load_multiple_automod): Likewise.
17375         (link, *link, unlink, *unlink, load_got): Likewise.
17376
17377 2007-03-06  Richard Sandiford  <richard@codesourcery.com>
17378
17379         PR target/23482
17380         PR target/17114
17381         * config/m68k/m68k-protos.h (m68k_legitimate_base_reg_p): Declare.
17382         (m68k_legitimate_index_reg_p, m68k_legitimate_address_p): Likewise.
17383         (m68k_matches_q_p, m68k_matches_u_p): Likewise.
17384         * config/m68k/m68k.h (EXTRA_CONSTRAINT): Use m68k_matches_q_p
17385         and m68k_matches_u_p.
17386         (PCREL_GENERAL_OPERAND_OK, LEGITIMATE_BASE_REG_P): Delete.
17387         (INDIRECTABLE_1_ADDRESS_P, GO_IF_NONINDEXED_ADDRESS): Delete.
17388         (GO_IF_INDEXABLE_BASE, GO_IF_INDEXING, GO_IF_INDEXED_ADDRESS): Delete.
17389         (LEGITIMATE_INDEX_REG_P, LEGITIMATE_INDEX_P): Delete.
17390         (GO_IF_COLDFIRE_FPU_LEGITIMATE_ADDRESS): Delete.
17391         (REG_STRICT_P): New macro.
17392         (LEGITIMATE_PIC_OPERAND_P): Use REG_STRICT_P rather than
17393         PCREL_GENERAL_OPERAND_OK.
17394         (REG_OK_FOR_BASE_P): Merge definitions.  Use REG_STRICT_P and
17395         m68k_legitimate_base_reg_p.
17396         (REG_MODE_OK_FOR_INDEX_P): Likewise m68k_legitimate_index_reg_p.
17397         (GO_IF_LEGITIMATE_ADDRESS): Likewise m68k_legitimate_address_p.
17398         (PIC_CASE_VECTOR_ADDRESS): Update comment.
17399         * config/m68k/m68k.c (m68k_address): New structure.
17400         (m68k_legitimate_base_reg_p, m68k_legitimate_index_reg_p)
17401         (m68k_decompose_index, m68k_legitimate_constant_address_p)
17402         (m68k_jump_table_ref_p, m68k_decompose_address)
17403         (m68k_legitimate_address_p, m68k_legitimate_mem_p, m68k_matches_q_p)
17404         (m68k_matches_u_p): New functions.
17405         (print_operand_address): Rewrite to use m68k_decompose_index.
17406
17407 2007-03-05  David Taylor  <dtaylor@emc.com>
17408
17409         * gcc.c: Correct copyright date in --version output.
17410
17411 2007-03-05  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
17412
17413         * pa.md: In unamed move patterns, disparge copies between general
17414         and floating point registers using '?' modifier.  Don't include 'f'
17415         constraint for register preferences in DImode, SImode, HImode and
17416         QImode patterns.  Likewise for 'r' in DFmode and SFmode patterns.
17417         Remove constraints for copies between general and floating registers
17418         in soft-float DFmode pattern.
17419         (movdf): Fail if operand1 is a CONST_DOUBLE and operand0 is a hard
17420         floating register.
17421         (movsf): Likewise.
17422
17423 2007-03-05  Mike Stump  <mrs@apple.com>
17424
17425         * c-common.c (targetcm): Add.
17426         * c-opts.c (c_common_handle_option): Handle language specific
17427         target options.
17428         * opts.c (handle_option): Verify language for target options, if
17429         any are given.
17430         * opth-gen.awk: Add CL_LANG_ALL.
17431         * target-def.h (TARGET_HANDLE_C_OPTION): Add.
17432         (TARGETCM_INITIALIZER): Add.
17433         * target.h (struct gcc_targetcm): Add.
17434         (targetcm): Add.
17435         * targhooks.c (default_handle_c_option): Add.
17436         * targhooks.h (default_handle_c_option): Add.
17437         * doc/tm.texi (TARGET_HANDLE_C_OPTION): Add.
17438
17439         * config/darwin.opt (iframework): Add.
17440         * config/darwin.h (TARGET_HAS_TARGETCM): Add.
17441         * config/darwin-c.c (handle_c_option): Add.
17442         (TARGET_HANDLE_C_OPTION): Add.
17443         (targetcm): Add.
17444         * doc/invoke.texi (Darwin Options): Add -iframework.
17445
17446 2007-03-05  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
17447
17448         * convert.c (convert_to_integer): Fix nearbyint/rint -> *lrint
17449         conversion.
17450
17451 2007-03-05  Ian Lance Taylor  <iant@google.com>
17452
17453         * c.opt (fgnu89-inline): New option.
17454         * c-opts.c (c_common_post_options): Set default value for
17455         flag_gnu89_inline.
17456         * c-decl.c (WANT_C99_INLINE_SEMANTICS): Remove.
17457         (pop_scope): Check flag_gnu89_inline rather than flag_isoc99 for
17458         inline functions.
17459         (diagnose_mismatched_decls, merge_decls, start_decl): Likewise.
17460         (grokdeclarator, start_function): Likewise.
17461         * c-cppbuiltin.c (c_cpp_builtins): Define either
17462         __GNUC_GNU_INLINE__ or __GNUC_STDC_INLINE__.
17463         * doc/invoke.texi (Option Summary): Mention -fgnu89-inline.
17464         (C Dialect Options): Document -fgnu89-inline.
17465         * doc/extend.texi (Function Attributes): Explain what the
17466         gnu_inline attribute does.
17467         * doc/cpp.texi (Common Predefined Macros): Document
17468         __GNUC_GNU_INLINE__ and __GNUC_STDC_INLINE__.
17469
17470 2007-03-05  Ian Lance Taylor  <iant@google.com>
17471
17472         PR tree-optimization/31034
17473         * tree-vrp.c (extract_range_from_assert): Don't try to handle a
17474         half-range if the other side is an overflow infinity.
17475
17476 2007-03-05  Bernd Schmidt  <bernd.schmidt@analog.com>
17477
17478         * config.gcc (bfin*-uclinux*): Use t-bfin-uclinux.
17479         (bfin*-linux-uclibc*): New configuration.
17480         * config/linux.h (LINK_GCC_C_SEQUENCE_SPEC): Undefined before
17481         defining.
17482         * config/bfin/linux.h: New file.
17483         * config/bfin/libgcc-bfin.ver: New file.
17484         * config/bfin/t-bfin-uclinux: New file.
17485         * config/bfin/t-bfin-linux: New file.
17486         * config/bfin/uclinux.h (LINUX_TARGET_OS_CPP_BUILTINS): New macro.
17487         (TARGET_OS_CPP_BUILTINS): New macro.
17488
17489 2007-03-05  Richard Guenther  <rguenther@suse.de>
17490
17491         * fold-const.c (fold_binary): Remove duplicate folding
17492         of comparison of non-null ADDR_EXPR against null.
17493
17494 2007-03-05  Richard Guenther  <rguenther@suse.de>
17495             Dorit Nuzman  <dorit@il.ibm.com>
17496
17497         PR tree-optimization/26420
17498         * tree-vectorizer.c (vectorize_loops): Bail out early if there
17499         are no loops in the function.  Only print the number of
17500         vectorized loops if it is greater than zero or we are supposed
17501         to print information about unvectorized loops.
17502
17503 2007-03-05  Revital Eres  <eres@il.ibm.com>
17504
17505         * gcc.dg/var-expand1.c: New test.
17506         * loop-unroll.c (analyze_insn_to_expand_var): Add dump info
17507         when an accumulator is expanded.
17508
17509 2007-03-04  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
17510
17511         PR other/30465
17512         * c-common.c (convert_and_check): Don't give warnings for
17513         conversion if 'expr' already overflowed.
17514
17515 2007-03-04  Roger Sayle  <roger@eyesopen.com>
17516
17517         PR middle-end/30744
17518         * fold-const.c (fold_comparison): Enforce type consistency when
17519         transforming ~X op ~Y to Y op X, and ~X op C to X op' ~C.
17520
17521 2007-03-04  Zdenek Dvorak  <dvorakz@suse.cz>
17522
17523         * tree-ssa-address.c (create_mem_ref): Do not put an expression
17524         containing a cast to the base of TARGET_MEM_REF.
17525
17526 2007-03-04  Martin Michlmayr  <tbm@cyrius.com>
17527
17528         * tree.c (tree_contains_struct_check_failed): Remove spurious
17529         whitespace from error message.
17530
17531 2007-03-04 Andrew Pinski <andrew_pinski@playstation.sony.com>
17532
17533         PR target/30406
17534         * config/rs6000/rs6000.c (rs6000_function_value): Look at bit size
17535         instead of precision.
17536
17537 2007-03-04  Roman Zippel <zippel@linux-m68k.org>
17538             Nathan Sidwell  <nathan@codesourcery.com>
17539
17540         * emit-rtl.c (find_auto_inc): New.
17541         (try_split): recreate REG_INC notes,
17542         Use regular for loops rather than whiles.
17543
17544 2007-03-03  Andreas Schwab  <schwab@suse.de>
17545
17546         * configure.ac (HAVE_AS_REL16): Move test back to correct place.
17547         * configure: Regenerate.
17548
17549 2007-03-03  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
17550
17551         * builtins.def (ATTR_MATHFN_FPROUNDING): Rely on
17552         flag_rounding_math, not flag_unsafe_math_optimizations.
17553
17554         * c-pretty-print.c (pp_c_direct_abstract_declarator): Use
17555         fold_build2.
17556         * config/alpha/alpha.c (alpha_fold_builtin_zapnot,
17557         alpha_fold_vector_minmax): Likewise.
17558         * config/i386/i386.c (ix86_gimplify_va_arg): Likewise.
17559         * config/sparc/sparc.c (sparc_gimplify_va_arg): Likewise.
17560
17561 2007-03-02  Eric Botcazou  <ebotcazou@adacore.com>
17562
17563         * tree-sra.c (sra_walk_fns) <ldst>: Document new restriction.
17564         (sra_walk_modify_expr) <rhs_elt>: Treat the reference as a use
17565         if the lhs has side-effects.
17566         <lhs_elt>: Treat the reference as a use if the rhs has side-effects.
17567
17568 2007-03-02  Uros Bizjak  <ubizjak@gmail.com>
17569
17570         * config/i386/i386.h (TUNEMASK): Remove define.
17571         (ARCHMASK): Remove define.
17572         (TARGET_*): Use ix86_tune_mask variable instead of TUNEMASK.
17573          Use ix86_arch_mask variable instead of ARCHMASK.
17574         * config/i386/i386.c (override_options): Ditto.
17575         (standard_80387_constant_p): Ditto.
17576
17577 2007-03-02  Ian Lance Taylor  <iant@google.com>
17578
17579         Used signed infinities in VRP.
17580         * tree-vrp.c (uses_overflow_infinity): New static function.
17581         (supports_overflow_infinity): New static function.
17582         (make_overflow_infinity): New static function.
17583         (negative_overflow_infinity): New static function.
17584         (positive_overflow_infinity): New static function.
17585         (is_negative_overflow_infinity): New static function.
17586         (is_positive_overflow_infinity): New static function.
17587         (is_overflow_infinity): New static function.
17588         (overflow_infinity_range_p): New static function.
17589         (compare_values_warnv): New function split out of compare_values.
17590         (compare_value): Call it.
17591         (set_value_range_to_nonnegative): Add overflow_infinity
17592         parameter.  Change caller.
17593         (vrp_expr_computes_nonnegative): Add strict_overflow_p parameter.
17594         Change callers.
17595         (vrp_expr_computes_nonzero): Likewise.
17596         (compare_ranges, compare_range_with_value): Likewise.
17597         (compare_name_with_value, compare_names): Likewise.
17598         (vrp_evaluate_conditional): Likewise.
17599         (set_value_range): Handle infinity
17600         (vrp_operand_equal_p, operand_less_p): Likewise.
17601         (extract_range_from_assert): Likewise.
17602         (vrp_int_const_binop): Likewise.
17603         (extract_range_from_binary_expr): Likewise.
17604         (extract_range_from_unary_expr): Likewise.
17605         (extract_range_from_comparison): Likewise.
17606         (extract_range_from_expr): Likewise.
17607         (dump_value_range): Likewise.
17608         (vrp_visit_cond_stmt, vrp_visit_phi_node): Likewise.
17609         (test_for_singularity): Likewise.
17610         (vrp_int_const_binop): Remove inline qualifier.
17611         (adjust_range_with_scev): Add comment.
17612         * tree-flow.h (vrp_evaluate_conditional): Update declaration.
17613
17614 2007-03-02  Diego Novillo  <dnovillo@redhat.com>
17615
17616         * tree-ssa-structalias.c (could_have_pointers): Tidy.
17617         (get_constraint_for): Likewise.
17618         (do_structure_copy): Likewise.
17619         (find_func_aliases): Fix references to MODIFY_EXPR.
17620         (intra_create_variable_infos): Tidy.
17621         * tree-ssa-operands.c (add_virtual_operand): Add argument
17622         IS_CALL_SITE.
17623         When adding members of alias sets, if IS_CALL_SITE is true and
17624         the symbol is not call-clobbered, skip it.
17625         Adjust all callers.
17626
17627 2007-03-02  Eric Botcazou  <ebotcazou@adacore.com>
17628
17629         * config/alpha/alpha.c (alpha_gp_save_rtx): Insert the insns at the
17630         entry by means of emit_insn_at_entry.
17631
17632 2007-03-02  Richard Henderson  <rth@redhat.com>
17633
17634         * expr.h (promoted_input_arg): Remove decl.
17635         * function.c (promoted_input_arg): Merge into ...
17636         * combine.c (setup_incoming_promotions): ... only caller.
17637         Rearrange to avoid double loop.
17638
17639 2007-03-02  Ben Elliston  <bje@au.ibm.com>
17640             Peter Bergner  <bergner@vnet.ibm.com>
17641             Janis Johnson  <janis187@us.ibm.com>
17642
17643         * config/rs6000/dfp.md: New file.
17644         * config/rs6000/rs6000.md: Include dfp.md.
17645         (add<mode>3_internal1): Disable for DECIMAL_FLOAT_MODE_P operands.
17646         * config/rs6000/rs6000.c (rs6000_hard_regno_mode_ok): Handle DDmode
17647         and TDmode decimal float modes in FP registers.
17648         (num_insns_constant): Likewise.
17649         (rs6000_legitimate_offset_address_p): Likewise.
17650         (rs6000_legitimize_address): Likewise.
17651         (rs6000_legitimize_reload_address): Likewise.
17652         (rs6000_legitimate_address): Likewise.
17653         (rs6000_emit_move): Likewise.
17654         (function_arg_boundary): Likewise.
17655         (function_arg_advance): Likewise.
17656         (rs6000_darwin64_record_arg_recurse): Likewise.
17657         (function_arg): Likewise.
17658         (rs6000_gimplify_va_arg): Likewise.
17659         (rs6000_split_multireg_move): Likewise.
17660         (rs6000_output_function_epilogue): Likewise.
17661         (rs6000_output_function_epilogue): Likewise.
17662         (rs6000_register_move_cost): Likewise.
17663         (rs6000_function_value): Likewise.
17664         (rs6000_libcall_value): Likewise.
17665
17666 2007-03-02  Richard Sandiford  <richard@codesourcery.com>
17667
17668         * config/t-vxworks (LIMITS_H_TEST): Define to true for VxWorks.
17669
17670 2007-03-02  Richard Sandiford  <richard@codesourcery.com>
17671
17672         * config/t-vxworks (LIBGCC2_INCLUDES): Pass -nostdinc.
17673         Use $MULTIDIR to choose between the kernel and RTP headers,
17674         and use $WIND_BASE and $WIND_USR to locate them.
17675
17676 2007-03-02  Uros Bizjak  <ubizjak@gmail.com>
17677
17678         * config/i386/i386.c (override_options): Put initialization of
17679         ix86_tune_mask and ix86_arch_mask to the correct place.
17680
17681 2007-03-02  Uros Bizjak  <ubizjak@gmail.com>
17682             Michael Meissner  <michael.meissner@amd.com>
17683
17684         PR target/31019
17685         * config/i386/i386.h (TUNEMASK): Redefine to use ix86_tune_mask.
17686         (ARCHMASK): Define.
17687         (TARGET_CMOVE): Use ARCHMASK.
17688         (TARGET_CMPXCHG): Ditto.
17689         (TARGET_CMPXCHG8B): Ditto.
17690         (TARGET_XADD): Ditto.
17691         (TARGET_BSWAP): Ditto.
17692         * config/i386/i386.c (ix86_tune_mask): New global variable.
17693         (ix86_arch_mask): Ditto.
17694         (override_options): Initialize ix86_tune_mask and
17695         ix86_arch_mask. Use ARCHMASK to clear MASK_NO_FANCY_MATH_387 in
17696         target_flags.
17697
17698 2007-03-02  Ben Elliston  <bje@au.ibm.com>
17699
17700         PR 30992
17701         * config/dfp-bit.c (DFP_TO_INT): Initialise qval with "1.".
17702
17703 2007-03-02  Joseph Myers  <joseph@codesourcery.com>
17704
17705         * target.h (init_dwarf_reg_sizes_extra): New target hook.
17706         * target-def.h (TARGET_INIT_DWARF_REG_SIZES_EXTRA): New default.
17707         * doc/tm.texi (TARGET_INIT_DWARF_REG_SIZES_EXTRA): Document.
17708         * dwarf2out.c (expand_builtin_init_dwarf_reg_sizes): Call this
17709         hook.
17710         * config/rs6000/rs6000.c (TARGET_INIT_DWARF_REG_SIZES_EXTRA,
17711         rs6000_init_dwarf_reg_sizes_extra): New.
17712         * config/rs6000/linux-unwind.h (ppc_fallback_frame_state): Support
17713         SPE register high parts.
17714
17715 2007-03-01  Brooks Moses  <brooks.moses@codesourcery.com>
17716
17717         * Makefile.in: Add install-pdf target as
17718         copied from automake v1.10 rules.
17719         * configure.ac: Add install-pdf to target list.
17720         * configure: Regenerate.
17721
17722 2007-03-01  Paul Brook  <paul@codesourcery.com>
17723
17724         * config/arm/arm.c (arm_legitimate_index_p): Limit iWMMXt addressing
17725         modes to LDRD for DImode.
17726         (output_move_double): Fixup out of range ldrd/strd.
17727         (vfp_secondary_reload_class): Rename...
17728         (coproc_secondary_reload_class): ... to this.  Add wb argument.
17729         * config/arm/arm.h (SECONDARY_OUTPUT_RELOAD_CLASS): Use
17730         coproc_secondary_reload_class for CLASS_IWMMXT.
17731         (SECONDARY_INPUT_RELOAD_CLASS): Ditto.
17732         * arm-protos.h (coproc_secondary_reload_class): Update prototype.
17733
17734 2007-03-01  Zdenek Dvorak  <dvorakz@suse.cz>
17735
17736         * tree-ssa-loop-prefetch.c (determine_unroll_factor):  Bound the
17737         unroll factor by the estimated number of iterations.
17738         (loop_prefetch_arrays): Do not prefetch in loops that iterate less
17739         than prefetch latency.
17740
17741         * config/i386/driver-i386.c (describe_cache, detect_caches_amd,
17742         decode_caches_intel, detect_caches_intel): New functions.
17743         (host_detect_local_cpu): Use detect_caches_amd and
17744         detect_caches_intel.
17745
17746 2007-03-01  Richard Henderson  <rth@redhat.com>
17747
17748         * expr.c (emit_move_complex_push): Export.
17749         (emit_move_complex_parts): Split out from ...
17750         (emit_move_complex): ... here.
17751         * expr.h (emit_move_complex_push, emit_move_complex_parts): Declare.
17752         * config/i386/i386.md (movcdi): New.
17753
17754 2007-03-01  Uros Bizjak  <ubizjak@gmail.com>
17755
17756         * config/i386/i386.c (ix86_modes_tieable_p): Fix typo, use also
17757         size of mode1 to check for tieable modes in MMX case.
17758
17759 2007-03-01  Richard Sandiford  <richard@codesourcery.com>
17760
17761         * Makefile.in (rtlanal.o): Depend on tree.h.
17762         * rtl.h (offset_within_section_p, split_const): Declare.
17763         * rtlanal.c: Include tree.h.
17764         (offset_within_block_p): New function, taken from
17765         mips_offset_within_object_p.
17766         (split_const): New function, taken from mips_split_const.
17767         * config/m68k/m68k-protos.h (m68k_illegitimate_symbolic_constant_p):
17768         Declare.
17769         * config/m68k/m68k.h (M68K_OFFSETS_MUST_BE_WITHIN_SECTIONS_P): Define.
17770         (CONSTANT_ADDRESS_P): Only accept legitimate constants.
17771         (LEGITIMATE_CONSTANT_P): Check m68k_illegitimate_symbolic_constant_p.
17772         * config/m68k/m68k.c (TARGET_CANNOT_FORCE_CONST_MEM): Define.
17773         (m68k_illegitimate_symbolic_constant_p): New function.
17774         * config/m68k/m68k.md (movsi): Remove misleading predicates.
17775         If M68K_OFFSETS_MUST_BE_WITHIN_SECTIONS_P and the source is a
17776         symbolic constant that might be outside the symbol's section,
17777         move the symbol first and then add the offset.
17778         * config/m68k/uclinux.h (M68K_OFFSETS_MUST_BE_WITHIN_SECTIONS_P):
17779         Override.
17780         * config/mips/mips.c (mips_split_const): Delete.
17781         (mips_offset_within_object_p): Delete.
17782         (mips_symbolic_constant_p): Use offset_within_section_p and
17783         split_const instead of mips_offset_within_object_p and
17784         mips_split_const.
17785         (mips_cannot_force_const_mem, mips_const_insns, mips_unspec_address)
17786         (mips_legitimize_const_move, print_operand_reloc)
17787         (mips_dangerous_for_la25_p): Use split_const instead of
17788         mips_split_const.
17789
17790 2007-02-28  Eric Christopher  <echristo@apple.com>
17791
17792         * Makefile.in (install-include-dir): Don't rm -rf include.
17793
17794 2007-02-28  Richard Guenther  <rguenther@suse.de>
17795
17796         PR middle-end/30364
17797         * fold-const.c (fold_binary): Do not associate expressions
17798         with more than one variable for integer types that do not wrap.
17799
17800 2007-02-28  Sandra Loosemore  <sandra@codesourcery.com>
17801
17802         * builtins.c (fold_builtin_call_list, fold_builtin_call_valist):
17803         Delete, and replace with...
17804         (fold_builtin_call_array): This.  Update callers to use it.
17805         * fold-const.c (fold_build_call_list): Delete, and replace with...
17806         (fold_build_call_array): This.
17807         (fold_build_call_list_initializer): Delete, and replace with...
17808         (fold_build_call_array_initializer): This.
17809         * tree.h: Update declarations to reflect above changes.
17810
17811         * c-typeck.c (build_function_call): Store converted arguments
17812         in a stack-allocated array instead of building a list.
17813         (convert_arguments): Store arguments in the array passed in as an
17814         argument, and return the actual number of arguments.
17815         * c-format.c: (check_function_format): Pass arguments in an
17816         array instead of a list.
17817         * c-common.c (check_function_nonnull): Likewise.
17818         (check_function_sentinel): Likewise.
17819         (check_function_arguments): Likewise.
17820         * c-common.h: Update declarations to reflect above changes.
17821
17822 2007-02-28  Jan Hubicka  <jh@suse.cz>
17823
17824         * predict.def (PRED_TREE_EARLY_RETURN, PRED_CONST_RETURN,
17825         PRED_NEGATIVE_RETURN): Update outcomes.
17826
17827 2007-02-28  Bernd Schmidt  <bernd.schmidt@analog.com>
17828
17829         * calls.c (emit_library_call_value_1): Handle partial registers
17830         correctly when building up CALL_INSN_FUNCTION_USAGE.
17831
17832 2007-02-27  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
17833
17834         * pa/predicates.md (move_src_operand): Allow zero for mode.
17835         * pa/pa.md: Fix constraints for zero CONST_DOUBLE in 64-bit DFmode
17836         move pattern.
17837
17838 2007-02-27  Uros Bizjak  <ubizjak@gmail.com>
17839
17840         PR target/30970
17841         * config/i386/sse.md (*mov<mode>_internal, *movv4sf_internal,
17842         *movv2df_internal): Enable pattern only for valid operand
17843         combinations.
17844         * config/i386/i386.c (ix86_modes_tieable_p): For SSE registers,
17845         tie only 128bit modes. For MMX registers, tie only 64bit modes.
17846
17847 2007-02-27  Mike Stump  <mrs@apple.com>
17848
17849         * config/darwin-crt3.c: Avoid compilation when compiling for a
17850         kext multilib.
17851
17852 2007-02-27  Joseph Myers  <joseph@codesourcery.com>
17853
17854         * Makefile.in (PREPROCESSOR_DEFINES, test-protoize-simple): Define
17855         FIXED_INCLUDE_DIR.
17856         (stmp-int-hdrs, stmp-fixinc, install-headers): Use include-fixed
17857         for fixed headers and limits.h.
17858         (install-include-dir, install-headers-tar, install-headers-cpio,
17859         install-headers-cp, real-install-headers-tar,
17860         real-install-headers-cpio, real-install-headers-cp): Handle
17861         include-fixed as well as include.
17862         (install-mkheaders): Don't install files that go only in include
17863         not include-fixed.
17864         * cppdefault.c (cpp_include_defaults): Separate FIXED_INCLUDE_DIR
17865         from GCC_INCLUDE_DIR.
17866         * gcc.c (process_command): Remove special -BstageN/ handling.
17867         (do_spec_1): Add include-fixed directories.
17868
17869 2007-02-27  Bernd Schmidt  <bernd.schmidt@analog.com>
17870
17871         * config/bfin/t-bfin-elf (LIB1ASMFUNCS): Add _umulsi3_highpart and
17872         _smulsi3_highpart.
17873         * config/bfin/lib1funcs.asm (___umulsi3_highpart, ___smulsi3_highpart):
17874         New functions.
17875         * config/bfin/bfin.md (smulsi3_highpart, umulsi3_highpart): New
17876         patterns.
17877
17878 2007-02-27  Mark Mitchell  <mark@codesourcery.com>
17879
17880         * c-common.c (get_priority): Add check for
17881         SUPPORTS_INIT_PRIORITY.
17882
17883 2007-02-27  Bernd Schmidt  <bernd.schmidt@analog.com>
17884
17885         * config/bfin/bfin.md (doloop_end): FAIL if counter reg isn't SImode.
17886
17887         * config/bfin/bfin.c: Include "cfglayout.h".
17888         (MAX_LSETUP_DISTANCE): New macro.
17889         (struct loop_info): New members incoming, incoming_src and
17890         incoming_dest.  Delete member predecessor.
17891         (length_for_loop): New function.
17892         (bfin_optimize_loop): Handle more different loop structures.
17893         (bfin_discover_loop): Rework detection of predecessor blocks by
17894         examining incoming edges.
17895         (bfin_discover_loops, bfin_free_loops): New functions, broken out of
17896         bfin_reorg_loops.
17897         (bfin_reorder_loops): New function.
17898         (bfin_reorg_loops): Use these three new functions.
17899
17900         * config/bfin/bfin.h (enum reg_class, REG_CLASS_NAMES,
17901         REG_CLASS_CONTENTS): Add D0REGS through D7REGS.
17902         (CONSTRAINT_LEN): Add entry for 'q'.
17903         (REG_CLASS_FROM_CONSTRAINT): Renamed from REG_CLASS_FROM_LETTER.
17904         Add 'q' constraints.
17905         (REGNO_REG_CLASS): For R0 through R7, return corresponding regclass.
17906         (CLASS_LIKELY_SPILLED_P): True for R0, R1 and R2.
17907
17908         * config/bfin/bfin.md (add_with_carry): New pattern.
17909         (s_or_u, su_optab, su_modifier): New code macros/attrs.
17910         (<su_optab>hisi_ll, <su_optab>hisi_lh, <su_optab>hisi_hl,
17911         <su_optab>hisi_hh): Renamed from mulhisi_xx patterns; macroized to
17912         support unsigned multiplies too.  Removed incorrect commutativity from
17913         operand 1 constraint where appropriate.
17914         (usmulhisi_ull, usmulhisi_ulh, usmulhisi_uhl, usmulhisi_uhh): New
17915         patterns.
17916         (<su_optab>hisi_ll_lh, <su_optab>hisi_ll_hl, <su_optab>hisi_ll_hh,
17917         <su_optab>hisi_lh_hl, <su_optab>hisi_lh_hh, <su_optab>hisi_hl_hh):
17918         New patterns.
17919         (usmulhisi_ll_lul, usmulhisi_ll_luh, usmulhisi_ll_hul,
17920         usmulhisi_ll_huh, usmulhisi_lh_lul, usmulhisi_lh_luh, usmulhisi_lh_hul,
17921         usmulhisi_lh_huh, usmulhisi_hl_lul, usmulhisi_hl_luh, usmulhisi_hl_hul,
17922         usmulhisi_hl_huh, usmulhisi_hh_lul, usmulhisi_hh_luh, usmulhisi_hh_hul,
17923         usmulhisi_hh_huh): New patterns.
17924
17925         * config/bfin/bfin.md (ssashiftv2hi3, ssashifthi3, lshiftv2hi3,
17926         lshifthi3): Fix output template to use half reg for operand 2.
17927
17928         * config/bfin/bfin.c (bfin_output_mi_thunk): Use R3 as scratch reg
17929         instead of R2.
17930
17931         * config/bfin/bfin.md (rotl16, rotlsi3, rotrsi3): New patterns.
17932
17933 2007-02-27  Andreas Schwab  <schwab@suse.de>
17934
17935         * Makefile.in (TEXI_GCCINSTALL_FILES): Add gcc-common.texi.
17936
17937 2007-02-27  Jan Hubicka  <jh@suse.cz>
17938
17939         * predict.c (last_basic_block_p): Remove.
17940         (tree_estimate_probability): Update return heuristic for commonized
17941         return blocks.
17942
17943 2007-02-26  Brooks Moses  <brooks.moses@codesourcery.com>
17944
17945         * Makefile.in (TEXI_GCCINSTALL_FILES): Add gcc-vers.texi dependency.
17946
17947 2007-02-26  Brooks Moses  <brooks.moses@codesourcery.com>
17948
17949         * doc/include/gcc-common.texi (versionsubtitle): New macro.
17950         * doc/cpp.texi: Standardize title page.
17951         * doc/cppinternals.texi: Likewise.
17952         * doc/gcc.texi: Standardize title page, remove version number
17953         from copyright page.
17954         * doc/gccint.texi: Likewise.
17955         * doc/install.texi: Standardize title page, add table of
17956         contents.
17957
17958 2007-02-26  Jan Hubicka  <jh@suse.cz>
17959
17960         * predict.def: Set outcomes according to more recent results.
17961         (PRED_LOOP_CONDITION, PRED_LOOP_PRECONDITIONING, PRED_LOOP_HEADER):
17962         Remove dead predictors.
17963         * predict.c (return_prediction): Fix pasto.
17964
17965 2007-02-27  Bernd Schmidt  <bernd.schmidt@analog.com>
17966
17967         * loop-iv.c (simplify_using_initial_values): Fix oversight in previous
17968         change; avoid a memory leak when returning early.
17969
17970 2007-02-26  Mark Mitchell  <mark@codesourcery.com>
17971
17972         * c-decl.c (static_ctors): Move to c-common.c.
17973         (static_dtors): Likewise.
17974         (finish_function): Use c_record_cdtor_fn.
17975         (build_cdtor): Move to c-common.c.
17976         (c_write_global_declarations): Use c_build_cdtor_fns.
17977         * c-common.h (static_ctors): Declare.
17978         (static_dtors): Likewise.
17979         (c_record_cdtor_fn): Likewise.
17980         (c_build_cdtor_fns): Likewise.
17981         * c-common.c (static_ctors): New variable.
17982         (static_dtors): Likewise.
17983         (c_record_cdtor_fn): New function.
17984         (build_cdtor): Move from c-decl.c
17985         (c_build_cdtor_fns): New function.
17986
17987         * output.h (assemble_addr_to_section): Declare.
17988         (get_cdtor_priority_section): Likewise.
17989         * varasm.c (assemble_addr_to_section): New function.
17990         (get_cdtor_priority_section): Likewise.
17991         (default_named_section_asm_out_destructor): Use them.
17992         (destor_dtor_section_asm_out_destructor): Likewise.
17993         (default_named_section_asm_out_constructor): Likewise.
17994         (default_ctor_section_asm_out_constructor): Likewise.
17995         * config.gcc (*-*-vxworks*): Include vxworks.o.
17996         * config/t-vxworks (vxworks.o): New target.
17997         * config/vxworks.h (ALWAYS_NUMBER_CTORS_SECTIONS): Remove.
17998         (TARGET_ASM_CONSTRUCTOR): Define.
17999         (TARGET_ASM_DESTRUCTOR): Likewise.
18000         (vxworks_asm_out_constructor): Declare.
18001         (vxworks_asm_out_destructor): Likewise.
18002
18003         * c-common.c (get_priority): Check that we have not just an
18004         INTEGER_CST, but an integer constant with integeral type.
18005
18006 2007-02-25  Uros Bizjak  <ubizjak@gmail.com>
18007
18008         PR tree-optimization/30938
18009         * tree-vect-transform.c (vectorizable_call): Fix off-by-one error:
18010         use &dt[nargs-1] instead of &dt[nargs] in the call to
18011         vect_is_simple_use().
18012
18013 2007-02-25  Ulrich Weigand  <uweigand@de.ibm.com>
18014
18015         * reload.c (find_reloads_address_1): Handle PLUS expressions resulting
18016         from register elimination as PRE_MODIFY / POST_MODIFY increments.
18017         Do not attempt to handle MEM inside auto-inc expressions.
18018         * reload1.c (eliminate_regs_1): Do not attempt to handle elimination
18019         of a register modified by an auto-inc expression.  However, do handle
18020         elimination of a register used as PRE_MODIFY / POST_MODIFY increment.
18021         (elimination_effects): Prohibit elimination of a register modified
18022         by an auto-inc expression.  Disable register elimination rules whose
18023         target register is modified by an auto-inc expression with variable
18024         increment.
18025
18026 2007-02-25  Zdenek Dvorak  <dvorakz@suse.cz>
18027
18028         * tree-ssa-loop-niter.c (compute_estimated_nb_iterations): Fix
18029         off-by-one error.
18030         (array_at_struct_end_p): New function.
18031         (idx_infer_loop_bounds): Use it.
18032         (estimate_numbers_of_iterations_loop): Export.
18033         * predict.c (predict_loops): Use estimated_loop_iterations_int.
18034         Do not use PRED_LOOP_EXIT on exits predicted by # of iterations.
18035         (tree_estimate_probability): Call record_loop_exits.
18036         * tree-data-ref.c (get_number_of_iters_for_loop): Replaced by ...
18037         (estimated_loop_iterations, estimated_loop_iterations_int,
18038         estimated_loop_iterations_tree): New functions.
18039         (analyze_siv_subscript_cst_affine,
18040         compute_overlap_steps_for_affine_1_2,
18041         analyze_subscript_affine_affine): Use estimated_loop_iterations_int.
18042         (analyze_miv_subscript): Use estimated_loop_iterations_tree.
18043         * predict.def (PRED_LOOP_ITERATIONS): Update comment.
18044         (PRED_LOOP_ITERATIONS_GUESSED): New.
18045         * cfgloop.c (record_loop_exits): Do nothing if there are no loops.
18046         * cfgloop.h (estimate_numbers_of_iterations_loop,
18047         estimated_loop_iterations_int): Declare.
18048
18049 2007-02-25  Mark Mitchell  <mark@codesourcery.com>
18050
18051         * doc/extend.texi: Document optional priority argument to
18052         constructors and destructors.
18053         * tree.c (init_priority_for_decl): Adjust GTY markers.
18054         (init_ttree): Use priority-info hash functions for
18055         init_priority_for_decl.
18056         (tree_map_eq): Rename to ...
18057         (tree_map_base_eq): ... this.
18058         (tree_map_marked_p): Rename to ...
18059         (tree_map_base_marked_p): ... this.
18060         (tree_map_base_hash): New function.
18061         (decl_init_priority_lookup): Rework.
18062         (decl_fini_priority_lookup): New function.
18063         (decl_priority_info): New function.
18064         (decl_init_priority_insert): Use it.
18065         (decl_fini_priority_insert): Likewise.
18066         (decl_restrict_base_lookup): Adjust for refactoring of tree_map
18067         hierarchy.
18068         (decl_restrict_base_insert): Likewise.
18069         (decl_debug_expr_insert): Likewise.
18070         (decl_value_expr_lookup): Likewise.
18071         (decl_value_expr_insert): Likewise.
18072         * tree.h (priority_type): New type.
18073         (decl_init_priority_lookup): Use priority_type.
18074         (decl_fini_priority_lookup): New function.
18075         (decl_init_priority_insert): Use priority_type.
18076         (decl_fini_priority_insert): New function.
18077         (DECL_HAS_INIT_PRIORITY): Tweak comments.
18078         (DECL_INIT_PRIORITY): Likewise.
18079         (SET_DECL_INIT_PRIORITY): Add comment.
18080         (DECL_FINI_PRIORITY): New macro.
18081         (SET_DECL_FINI_PRIORITY): Likewise.
18082         (DEFAULT_INIT_PRIORITY): Document.
18083         (MAX_INIT_PRIORITY): Likewise.
18084         (MAX_RESERVED_INIT_PRIORITY): Likewise.
18085         (tree_map_base): New type.
18086         (tree_map_base_eq): New function.
18087         (tree_map_base_hash): Likewise.
18088         (tree_map_base_marked_p): Likewise.
18089         (tree_map): Inherit from tree_map_base.
18090         (tree_map_eq): Make it a macro.
18091         (tree_map_marked_p): Likewise.
18092         (tree_int_map): Inherit from tree_map_base.
18093         (tree_int_map_eq): Make it a macro.
18094         (tree_int_map_hash): Likewise.
18095         (tree_int_map_marked_p): Likewise.
18096         (tree_priority_map): New type.
18097         (tree_priority_map_eq): New macro.
18098         (tree_priority_map_hash): Likewise.
18099         (tree_priority_map_marked_p): Likewise.
18100         * varasm.c (emults_decl): Adjust for refactoring of tree_map
18101         hierarchy.
18102         (emutls_common_1): Likewise.
18103         * lambda-code.c (replace_uses_equiv_to_x_with_y): Likewise.
18104         * tree-ssa-structalias.c (heapvar_lookup): Adjust for refactoring
18105         of tree_map hierarchy.
18106         * tree-cfg.c (move_stmt_r): Likewise.
18107         (new_label_mapper): Likewise.
18108         * c-tree.h (c_expand_body): Move to ...
18109         * c-common.h (c_expand_body): ... here.
18110         * c-decl.c (c_expand_body): Move to ...
18111         * c-common.c (c_expand_body): ... here.
18112         (c_common_attribute_table): Allow 1 argument for the constructor
18113         and destructor attributes.
18114         (get_priority): New function.
18115         (handle_constructor_attribute): Set DECL_INIT_PRIORITY.
18116         (handle_destructor_attribute): Set DECL_FINI_PRIORITY.
18117
18118 2007-02-24  Jan Hubicka  <jh@suse.cz>
18119
18120         PR middle-end/30509
18121         * tree-inline.c (copy_bb): Produce exact copy of EH info when
18122         copying for inlining.
18123
18124 2007-02-24  Uros Bizjak  <ubizjak@gmail.com>
18125             Jan Hubicka  <jh@suse.cz>
18126
18127         PR target/30778
18128         * i386.c (counter_mode): New function.
18129         (expand_set_or_movmem_via_loop): Use it.
18130         (expand_movmem_epilogue): Likewise; fix pasto.
18131         (ix86_expand_movmem): Do emit guard even for constant counts.
18132         (ix86_expand_setmem): Likewise.
18133
18134 2007-02-25  Nick Clifton  <nickc@redhat.com>
18135
18136         * config/frv/frv.h (ASM_OUTPUT_CASE_LABEL): Delete.
18137         (JUMP_TABLES_IN_TEXT_SECTION): Define.
18138
18139 2007-02-24  Uros Bizjak  <ubizjak@gmail.com>
18140
18141         PR target/30770
18142         * config/i386/i386.md (expand_movmem_epilogue): Fix typo, mask
18143         count argument with 0x10, not with 0x16.
18144         (expand_setmem_epilogue): Ditto.
18145
18146 2007-02-24  Mike Stump  <mrs@apple.com>
18147
18148         * config/i386/i386.c (output_pic_addr_const): Stubify optimized
18149         symbols.
18150
18151 2007-02-24  Richard Guenther  <rguenther@suse.de>
18152
18153         PR middle-end/30951
18154         * fold-const.c (fold_binary): Fold x +- CST op x for
18155         EQ_EXPR and NE_EXPR.
18156
18157 2007-02-24  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
18158
18159         * pa.md (muldi3): Force subregs to registers in 64-bit expander.
18160
18161 2007-02-24  Jan Hubicka  <jh@suse.cz>
18162
18163         * cgraphunit.c (decide_is_function_needed): Honor
18164         -fkeep-inline-functions.
18165
18166 2007-02-24  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
18167
18168         * builtins.c (fold_builtin_modf): New.
18169         (fold_builtin_2): Use it.
18170
18171 2007-02-24  Bernd Schmidt  <bernd.schmidt@analog.com>
18172
18173         * loop-iv.c (implies_p): Detect additional cases where A implies B.
18174         (determine_max_iter): Take additional LOOP arg; all callers changed.
18175         Lose broken logic dealing with PLUS.  Try to limit the upper bound by
18176         one using simplifications.
18177         (simplify_using_initial_values): Return if the expression becomes
18178         invalid due to altered regs.
18179
18180 2007-02-23  DJ Delorie  <dj@redhat.com>
18181
18182         * doc/tm.h (BIGGEST_ALIGNMENT): Clarify the purpose of this macro.
18183
18184 2007-02-23  Mike Stump  <mrs@apple.com>
18185
18186         * tlink.c (scan_linker_output): Parse linker messages from
18187         darwin9's linker better.
18188
18189 2007-02-23  Steve Ellcey  <sje@cup.hp.com>
18190
18191         PR debug/29614
18192         * varpool.c (varpool_assemble_pending_decls):  Set
18193         varpool_last_needed_node to null.
18194
18195 2007-02-23  DJ Delorie  <dj@redhat.com>
18196
18197         * config/i386/i386.c (ix86_data_alignment): Don't specify an
18198         alignment bigger than the object file can handle.
18199
18200 2007-02-23  Uros Bizjak  <ubizjak@gmail.com>
18201
18202         PR target/30825
18203         * config/i386/i386.md (*movdi_1_rex64, zero_extendsidi2_32,
18204         zero_extendsidi2_rex64): Penalize MMX register<->memory moves.
18205         (*movsf_1): Penalize MMX moves.
18206
18207 2007-02-23  Bernd Schmidt  <bernd.schmidt@analog.com>
18208
18209         * config/bfin/bfin.md (doloop_end): Fail for loops that can iterate
18210         2^32-1 or more times unless flag_unsafe_loop_optimizations.
18211
18212         * loop-iv.c (determine_max_iter): Moved in front of its sole user.
18213
18214 2007-02-23  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
18215
18216         * builtins.c (fold_builtin_logb, fold_builtin_significand): New.
18217         (fold_builtin_1): Use them.
18218         * fold-const.c (tree_expr_nonnegative_warnv_p): Handle
18219         BUILT_IN_SIGNIFICAND.
18220
18221 2007-02-23  H.J. Lu  <hongjiu.lu@intel.com>
18222
18223         * config/i386/i386.c (bdesc_1arg): Initialize
18224         IX86_BUILTIN_MOVSHDUP and IX86_BUILTIN_MOVSLDUP with
18225         "__builtin_ia32_movshdup" and "__builtin_ia32_movsldup".
18226         (ix86_init_mmx_sse_builtins): Remove IX86_BUILTIN_MOVSHDUP
18227         and IX86_BUILTIN_MOVSLDUP.
18228
18229 2007-02-22  Paolo Bonzini  <bonzini@gnu.org>
18230
18231         PR rtl-optimization/30841
18232         * fwprop.c (propagate_rtx_1): Accept a VOIDmode replacement address.
18233
18234 2007-02-22  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
18235
18236         * builtins.c (fold_builtin_frexp): New.
18237         (fold_builtin_2): Use it.
18238
18239 2007-02-22  Mark Mitchell  <mark@codesourcery.com>
18240
18241         * doc/invoke.texi (Spec Files): Document getenv spec function.
18242
18243         * gcc.c (getenv_spec_function): New function.
18244         (static_spec_functions): Add it.
18245         * config/vxworks.h (VXWORKS_TARGET_DIR): Remove.
18246         (VXWORKS_ADDITIONAL_CPP_SPEC): Use getenv to find the VxWorks
18247         header files.
18248
18249 2007-02-22  Michael Matz  <matz@suse.de
18250
18251         PR c++/29433
18252         * dwarf2out.c (add_AT_string): Call ggc_strdup once per string.
18253         (type_tag): Use lang_hooks.dwarf_name instead of DECL_NAME.
18254
18255 2007-02-22  Ian Lance Taylor  <iant@google.com>
18256
18257         PR debug/30898
18258         * dwarf2out.c (concatn_mem_loc_descriptor): New static function.
18259         (mem_loc_descriptor): Call it.
18260
18261 2007-02-22  Zdenek Dvorak  <dvorakz@suse.cz>
18262             Ira Rosen  <irar@il.ibm.com>
18263
18264         * tree-data-ref.c (ptr_ptr_may_alias_p): Take alias sets into account.
18265
18266 2007-02-22  Ira Rosen  <irar@il.ibm.com>
18267
18268         PR tree-optimization/30843
18269         * tree-vect-transform.c (vect_transform_loop): Remove strided scalar
18270         stores only after all the group is vectorized.
18271
18272 2007-02-22  Dorit Nuzman  <dorit@il.ibm.com>
18273
18274         PR tree-optimization/30858
18275         * tree-vectorizer.c (vect_is_simple_reduction): Check that the stmts
18276         in the reduction cycle have a single use in the loop.
18277         * tree-vectorizer.h (relevant): Add documentation.
18278
18279 2007-02-20  Mike Stump  <mrs@apple.com>
18280
18281         * configure.ac (powerpc*-*-darwin*): #include <sys/cdefs.h>.
18282         * configure: Regenerate.
18283
18284 2007-02-21  Trevor Smigiel  <trevor_smigiel@playstation.sony.com>
18285
18286         Change the defaults of some parameters and options.
18287         * config/spu/spu-protos.h (spu_optimization_options): Declare.
18288         * config/spu/spu.c (spu_optimization_options): Add.
18289         (spu_override_options): Change params in spu_optimization_options.
18290         * config/spu/spu.h (OPTIMIZATION_OPTIONS): Define.
18291
18292         Register 127 is only 16 byte aligned when used as a frame pointer.
18293         * config/spu/spu-protos.h (spu_init_expanders): Declare.
18294         * config/spu/spu.c (spu_expand_prologue): Set REGNO_POINTER_ALIGN for
18295         HARD_FRAME_POINTER_REGNUM.
18296         (spu_legitimate_address):  Use regno_aligned_for_reload.
18297         (regno_aligned_for_load):  HARD_FRAME_POINTER_REGNUM is only 16 byte
18298         aligned when frame_pointer_needed is true.
18299         (spu_init_expanders): New.  Set alignment of HARD_FRAME_POINTER_REGNUM
18300         to 8 bits.
18301         * config/spu/spu.h (INIT_EXPANDERS): Define.
18302
18303         Make sure shift and rotate instructions have valid immediate operands.
18304         * config/spu/predicates.md (spu_shift_operand): Remove.
18305         * config/spu/spu.c (print_operand): Add [efghEFGH] modifiers.
18306         * config/spu/constraints.md (W, O): Extend range.
18307         * config/spu/spu.md (umask, nmask): Define.
18308         (ashl<mode>3, ashldi3, ashlti3_imm, shlqbybi_ti, shlqbi_ti, shlqby_ti,
18309         lshr<mode>3, rotm_<mode>, lshr<mode>3_imm, rotqmbybi_<mode>,
18310         rotqmbi_<mode>, rotqmby_<mode>, ashr<mode>3, rotma_<mode>,
18311         rotl<mode>3, rotlti3, rotqbybi_ti, rotqby_ti, rotqbi_ti): Use
18312         spu_nonmem_operand instead of spu_shift_operands.  Use new modifiers.
18313         (lshr<mode>3_reg):  Fix rtl description.
18314
18315         Make sure mulhisi immediate operands are valid.
18316         * config/spu/predicates.md (imm_K_operand): Add.
18317         * config/spu/spu.md (mulhisi3_imm, umulhisi3_imm): Use imm_K_operand.
18318
18319         Generate constants using fsmbi and andi.
18320         * config/spu/spu.c (enum immediate_class): Add IC_FSMBI2.
18321         (print_operand, spu_split_immediate, classify_immediate,
18322         fsmbi_const_p): Handle IC_FSMBI2.
18323
18324         Correctly handle a CONST_VECTOR containing symbols.
18325         * config/spu/spu.c (print_operand): Handle HIGH correctly.
18326         (spu_split_immediate): Split CONST_VECTORs with -mlarge-mem.
18327         (immediate_load_p): Allow symbols that use 2 instructions to create.
18328         (classify_immediate, spu_builtin_splats):  Don't accept a CONST_VECTOR
18329         with symbols when flag_pic is set.
18330         (const_vector_immediate_p): New.
18331         (logical_immediate_p, iohl_immediate_p, arith_immediate_p): Don't
18332         accept a CONST_VECTOR with symbols.
18333         (spu_legitimate_constant_p): Use const_vector_immediate_p.  Don't
18334         accept a CONST_VECTOR with symbols when flag_pic is set.  Handle HIGH
18335         correctly.
18336         * config/spu/spu.md (high, low): Delete.
18337         (low_<mode>): Define.
18338
18339         Remove INTRmode and INTR_REGNUM, which didn't work.
18340         * config/spu/spu.c (spu_conditional_register_usage): Remove reference
18341         of INTR_REGNUM.
18342         * config/spu/spu-builtins.md (spu_idisable, spu_ienable, set_intr,
18343         set_intr_pic, set_intr_cc, set_intr_cc_pic, set_intr_return, unnamed
18344         peephole2 pattern): Don't use INTR or 131.
18345         (movintrcc): Delete.
18346         * config/spu/spu.h (FIRST_PSEUDO_REGISTER, FIXED_REGISTERS,
18347         CALL_USED_REGISTERS, REGISTER_NAMES, INTR_REGNUM): Remove INTR_REGNUM.
18348         * config/spu/spu.md (UNSPEC_IDISABLE, UNSPEC_IENABLE): Remove.
18349         (UNSPEC_SET_INTR): Add.
18350         * config/spu/spu-modes.def (INTR): Remove.
18351
18352         More accurate warnings about run-time relocations.
18353         * config/spu/spu.c (reloc_diagnostic): Test in_section.
18354
18355         Correctly warn about immediate arguments to specific intrinsics.
18356         * config/spu/spu.c (spu_check_builtin_parm): Handle CONST_VECTORs.
18357         (spu_expand_builtin_1): Call spu_check_builtin_parm before checking
18358         the instruction predicate.
18359
18360         Fix tree check errors with latest update.
18361         * config/spu/spu.c (expand_builtin_args, spu_expand_builtin_1): Use
18362         CALL_EXPR_ARG.
18363         (spu_expand_builtin): Use CALL_EXPR_FN.
18364
18365         Add missing specific intrinsics.
18366         * config/spu/spu-builtins.def: Add si_bisled, si_bisledd and
18367         si_bislede.
18368         * config/spu/spu_internals.h: Ditto.
18369
18370         Fix incorrect operand modifiers.
18371         * config/spu/spu-builtins.md (spu_mpy, spu_mpyu):  Remove use of %H.
18372         * config/spu/spu.md (xor<mode>3):  Change %S to %J.
18373
18374         Optimize one case of zero_extend of a vec_select.
18375         * config/spu/spu.md (_vec_extractv8hi_ze):  Add.
18376
18377         Accept any immediate for hbr.
18378         * config/spu/spu.md (hbr):  Change s constraints to i.
18379
18380 2007-02-21  Paul Brook  <paul@codesourcery.com>
18381
18382         * config/arm/arm.c (thumb2_final_prescan_insn): Don't incrememnt
18383         condexec_count when skipping USE and CLOBBER.
18384
18385 2007-02-21  Nick Clifton  <nickc@redhat.com>
18386
18387         * common.opt (Warray-bounds): Add Warning attribute.
18388         (Wstrict-overflow, Wstrict-overflow=, Wcoverage-mismatch):
18389         Likewise.
18390         (fsized-zeroes): Add Optimization attribute.
18391         (fsplit-wide-types, ftree-scev-cprop): Likewise.
18392         * c.opt (Wc++0x-compat): Add Warning attribute.
18393
18394 2007-02-21  Ulrich Weigand  <uweigand@de.ibm.com>
18395
18396         PR middle-end/30761
18397         * reload1.c (eliminate_regs_in_insn): In the single_set special
18398         case, attempt to re-recognize the insn before falling back to
18399         having reload fix it up.
18400
18401 2007-02-20  Eric Christopher  <echristo@gmail.com>
18402
18403         * config/frv/frv.c (frv_read_argument): Take a tree and int argument.
18404         Rewrite accordingly.
18405         (frv_read_iacc_argument): Ditto.
18406         (frv_expand_set_builtin): Take a call instead of arglist, update for
18407         above changes.
18408         (frv_expand_unop_builtin): Ditto.
18409         (frv_expand_binop_builtin): Ditto.
18410         (frv_expand_cut_builtin): Ditto.
18411         (frv_expand_binopimm_builtin): Ditto.
18412         (frv_expand_voidbinop_builtin): Ditto.
18413         (frv_expand_int_void2arg): Ditto.
18414         (frv_expand_prefetches): Ditto.
18415         (frv_expand_voidtriop_builtin): Ditto.
18416         (frv_expand_voidaccop_builtin): Ditto.
18417         (frv_expand_load_builtin): Ditto.
18418         (frv_expand_store_builtin): Ditto.
18419         (frv_expand_mdpackh_builtin): Ditto.
18420         (frv_expand_mclracc_builtin): Ditto.
18421         (frv_expand_mrdacc_builtin): Ditto.
18422         (frv_expand_mwtacc_builtin): Ditto.
18423         (frv_expand_builtin): Remove usage of CALL_EXPR_ARGS, update
18424         calls for above.
18425
18426 2007-02-20  Janis Johnson  <janis187@us.ibm.com>
18427
18428         * doc/invoke.texi (RS/6000 and PowerPC Options): Add -mcmpb and -mdfp.
18429         * configure.ac (HAVE_GAS_CMPB): Check for assembler support of the
18430         cmpb instruction.
18431         (HAVE_GAS_DFP): Check for assembler support of decimal floating
18432         point instructions.
18433         * configure: Regenerate.
18434         * config.in: Regenerate.
18435         * config/rs6000/rs6000.opt (mcmpb, mdfp): New.
18436         * config/rs6000/rs6000.c (rs6000_override_options): Add CMPB and DFP
18437         masks to power6 and power6x and to POWERPC_MASKS.
18438         * config/rs6000/rs6000-c.c (rs6000_cpu_cpp_builtins): Define
18439         _ARCH_PWR6.
18440         * config/rs6000/rs6000.h: Check assembler support for CMPB and DFP.
18441         * config/rs6000/sysv4.opt (mprototype): Use variable, not mask.
18442         * config/rs6000/linux64.h (SUBSUBTARGET_OVERRIDE_OPTIONS):
18443         Access PROTOTYPE as variable, not mask.
18444
18445 2007-02-20  Steven Bosscher  <steven@gcc.gnu.org>
18446
18447         * rtl.h (remove_reg_equal_equiv_notes): New prototype.
18448         * rtlanal.c (remove_reg_equal_equiv_notes): New function.
18449         * combine.c (adjust_for_new_dest): Use it.
18450         * postreload.c (reload_combine): Likewise.
18451
18452 2007-02-20  Steven Bosscher  <steven@gcc.gnu.org>
18453
18454         * rtlanal.c (find_reg_equal_equiv_note): Do not find REG_EQ*
18455         notes on an insn with multiple sets, even if single_set returns
18456         non-NULL for that insn.
18457
18458 2007-02-20  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
18459
18460         * fold-const.c (tree_expr_nonnegative_warnv_p): Handle scalb,
18461         scalbn and scalbln.
18462
18463 2007-02-20  Geoffrey Keating  <geoffk@apple.com>
18464
18465         * config/darwin.h (LINK_SPEC): Default -mmacosx-version-min only
18466         if user didn't pass it.
18467         * config/i386/darwin.h (CC1_SPEC): Likewise.
18468         * config/rs6000/darwin.h (CC1_SPEC): Likewise.
18469         (DARWIN_MINVERSION_SPEC): Don't depend on user's setting of
18470         -mmacosx-version-min.
18471
18472 2007-02-20  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
18473             Uros Bizjak  <ubizjak@gmail.com>
18474
18475         * optabs.h (enum optab_index): Add new OTI_scalb.
18476         (scalb_optab): Define corresponding macro.
18477         * optabs.c (init_optabs): Initialize scalb_optab.
18478         * genopinit.c (optabs): Implement scalb_optab using scalb?f3
18479         patterns.
18480         * builtins.c (expand_builtin_mathfn_2, expand_builtin): Handle
18481         BUILT_IN_SCALB{,F,L}, BUILT_IN_SCALBN{,F,L} and BUILT_IN_SCALBLN{,F,L}.
18482         (expand_builtin): Expand BUILT_IN_SCALB{,F,L}, BUILT_IN_SCALBN{,F,L}
18483         and BUILT_IN_SCALBLN{,F,L} using expand_builtin_mathfn_2 if
18484         flag_unsafe_math_optimizations is set.
18485
18486         * config/i386/i386.md (scalbxf3, scalb<mode>3): New expanders
18487         to implement scalbf, scalb and scalbl built-ins as inline x87
18488         intrinsics.
18489
18490 2007-02-20  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
18491             DJ Delorie <dj@redhat.com>
18492
18493         PR other/30824
18494         * diagnostic.c (diagnostic_count_diagnostic): Move -Werror logic to...
18495         (diagnostic_report_diagnostic): ... here, and turn them into real
18496         errors. If warnings are inhibited, no need to do anything.
18497
18498 2007-02-20  Uros Bizjak  <ubizjak@gmail.com>
18499
18500         * config/i386/i386.md (expm1xf2): Reorder insn sequence for
18501         better code generation.
18502
18503 2007-02-20  Ben Elliston  <bje@au.ibm.com>
18504
18505         * config/m68hc11/m68hc11.h (OVERRIDE_OPTIONS): Remove extra ;.
18506
18507 2007-02-20  Kazu Hirata  <kazu@codesourcery.com>
18508
18509         * config/alpha/alpha.c, config/alpha/alpha.md,
18510         config/alpha/lib1funcs.asm, config/alpha/vms-crt0-64.c,
18511         config/alpha/vms-psxcrt0-64.c, config/arc/arc.c,
18512         config/arc/arc.h, config/arm/arm.c, config/arm/arm.md,
18513         config/arm/lib1funcs.asm: Follow spelling conventions.
18514
18515         * config/c4x/c4x.md, config/cris/cris.c, config/crx/crx.c,
18516         config/fr30/fr30.md, config/i386/i386.h,
18517         config/iq2000/iq2000.h, config/iq2000/predicates.md,
18518         config/pa/milli64.S, config/pa/pa.c, config/pa/pa.h,
18519         config/pa/pa.md, config/pa/pa32-regs.h, config/pa/pa64-regs.h,
18520         config/pdp11/pdp11.c, config/pdp11/pdp11.h,
18521         config/rs6000/altivec.md, config/rs6000/rs6000.c,
18522         config/s390/s390-modes.def, config/sparc/netbsd-elf.h,
18523         config/sparc/sparc.c, config/sparc/sparc.h,
18524         config/sparc/sparc.md, config/spu/constraints.md,
18525         config/spu/spu.c, config/stormy16/stormy16.md: Follow spelling
18526         conventions.
18527
18528 2007-02-20  Alan Modra  <amodra@bigpond.net.au>
18529
18530         PR target/29943
18531         * varasm.c (use_blocks_for_decl_p): Return false for decls with
18532         alias attribute.
18533
18534 2007-02-19  Kazu Hirata  <kazu@codesourcery.com>
18535
18536         * doc/invoke.texi (-ftree-lrs): Remove.
18537
18538 2007-02-19  Diego Novillo  <dnovillo@redhat.com>
18539
18540         * tree-ssa-pre.c (create_value_expr_from): Initialize POOL to
18541         NULL.
18542
18543 2007-02-19  Lee Millward  <lee.millward@codesourcery.com>
18544
18545         * config/ia64/ia64.c (ia64_expand_builtin): Use the
18546         new CALL_EXPR_FN macro for retrieving the function
18547         declaration of the input expression.
18548
18549 2007-02-19  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
18550
18551         * c.opt (Waddress): New.
18552         * common.opt (Walways-true): Delete.
18553         (Wstring-literal-comparison): Delete.
18554         * doc/invoke.texi (Warning Options): Delete -Walways-true and
18555         -Wstring-literal-comparison. Add -Waddress.
18556         (Waddress): New.
18557         (Walways-true): Delete.
18558         (Wstring-literal-comparison): Delete.
18559         * doc/extend.texi (#pragma GCC diagnostic): Use -Wformat
18560         consistently instead of -Walways-true in example.
18561         * c-opts.c (c_common_handle_option): -Waddress is enabled by -Wall.
18562         * c-typeck.c (parser_build_binary_op): Replace
18563         -Wstring-literal-comparison and -Walways-true with -Waddress.
18564         * c-common.c (c_common_truthvalue_conversion): Replace -Walways-true
18565         with -Waddress.
18566
18567 2007-02-19  Eric Botcazou  <ebotcazou@adacore.com>
18568
18569         * tree-cfg.c (dump_function_to_file): Be prepared for functions
18570         without DECL_STRUCT_FUNCTION initialized.
18571
18572 2007-02-19  Eric Botcazou  <ebotcazou@adacore.com>
18573
18574         * gimplify.c (gimplify_init_ctor_preeval_1): Detect potential overlap
18575         due to calls to functions taking pointers as parameters.
18576
18577 2007-02-19  Richard Henderson  <rth@redhat.com>
18578
18579         PR debug/29558
18580         * var-tracking.c (track_expr_p): Disallow AGGREGATE_TYPE_P
18581         in memory.
18582
18583 2007-02-19  Andreas Krebbel  <krebbel1@de.ibm.com>
18584
18585         * config/s390/s390.c (s390_call_saved_register_used,
18586         s390_function_ok_for_sibcall): Adjust the way CALL_EXPR arguments are
18587         accessed to the new scheme.
18588
18589 2007-02-19  Jan-Benedict Glaw  <jbglaw@lug-owl.de>
18590
18591         * config/cris/cris.c (cris_movem_load_rest_p, cris_store_multiple_op_p)
18592         (cris_print_index, cris_print_operand, cris_print_operand_address)
18593         (cris_reload_address_legitimized, cris_rtx_costs, cris_address_cost)
18594         (cris_side_effect_mode_ok, cris_valid_pic_const, cris_split_movdx)
18595         (cris_expand_pic_call_address): Use xxx_P predicate macros instead of
18596         GET_CODE () == xxx.
18597         * config/cris/cris.h (SECONDARY_RELOAD_CLASS, EXTRA_CONSTRAINT_Q,
18598         EXTRA_CONSTRAINT_T, BDAP_INDEX_P, BIAP_INDEX_P, SIMPLE_ADDRESS_P,
18599         GO_IF_LEGITIMATE_ADDRESS): Ditto.
18600         * config/cris/cris.md (define_insns: *btst, movdi, *mov_side<mode>)
18601         (*mov_sidesisf, *mov_side<mode>_mem, *mov_sidesisf_mem)
18602         (*clear_side<mode>, movsi, *movsi_internal, *ext_sideqihi)
18603         (*ext_side<mode>si, *op_side<mode>, *op_swap_side<mode>, addsi3)
18604         (*extopqihi_side, *extop<mode>si_side, *extopqihi_swap_side)
18605         (*extop<mode>si_swap_side, addi_mul, *addi,andsi3, andhi3, ashl<mode>3)
18606         (uminsi3, call, call_value): Ditto.
18607         (define_split: indir_to_reg_split, unnamed): Ditto.
18608
18609 2007-02-19  Dorit Nuzman  <dorit@il.ibm.com>
18610
18611         PR tree-optimization/30975
18612         * tree-vect-trasnform.c (vect_get_vec_def_for_stmt_copy): Remove
18613         wrong assert.
18614
18615 2007-02-18  Eric Christopher  <echristo@gmail.com>
18616
18617         * mips.c (mips_prepare_builtin_arg): Add argnum parameter.
18618         Remove use of arglist.
18619         (mips_expand_builtin): Remove use of arglist, pass in expr.
18620         (mips_expand_builtin_direct): Rewrite handling for arglist removal.
18621         (mips_expand_builtin_movtf): Ditto.
18622         (mips_expand_builtin_compare): Ditto.
18623
18624 2007-02-19  Alexandre Oliva  <aoliva@redhat.com>
18625
18626         * tree-sra.c (sra_build_assignment): Replace assertion
18627         checking with a comment explaining why it can't be done.
18628
18629 2007-02-18  Sandra Loosemore  <sandra@codesourcery.com>
18630
18631         PR middle-end/30833
18632         * tree-dump.c (dequeue_and_dump): Add tcc_vl_exp case missed
18633         during CALL_EXPR representation conversion.
18634         * tree-ssa-propagate.c (set_rhs): Likewise.
18635
18636 2007-02-19  Alexandre Oliva  <aoliva@redhat.com>
18637
18638         * tree-sra.c (sra_build_assignment): Disable assertion checking
18639         for now.
18640
18641 2007-02-18  Roger Sayle  <roger@eyesopen.com>
18642
18643         * function.c (gimplify_parameters): Call build_gimple_modify_stmt
18644         instead of calling build2 with a GIMPLE_MODIFY_STMT.
18645         * gimple-low.c (lower_function_body, lower_builtin_setjmp):
18646         Likewise.
18647         * gimplify.c (build_stack_save_restore, gimplify_return_expr,
18648         gimplify_decl_expr,  gimplify_self_mod_expr, gimplify_cond_expr,
18649         gimplify_init_ctor_eval_range, gimple_push_cleanup,
18650         gimplify_omp_for, gimplify_omp_atomic_pipeline,
18651         gimplify_omp_atomic_mutex, gimplify_expr, gimplify_one_sizepos,
18652         force_gimple_operand): Likewise.
18653         * ipa-cp.c (constant_val_insert): Likewise.
18654         * lambda-code.c (lbv_to_gcc_expression, lle_to_gcc_expression,
18655         lambda_loopnest_to_gcc_loopnest, replace_uses_equiv_to_x_with_y,
18656         perfect_nestify): Likewise.
18657         * langhooks.c (lhd_omp_assignment): Likewise.
18658         * omp-low.c (lower_rec_input_clauses, lower_reduction_clauses,
18659         lower_copyprivate_clauses, lower_send_clauses,
18660         lower_send_shared_vars, expand_parallel_call,
18661         expand_omp_for_generic, expand_omp_for_static_nochunk,
18662         expand_omp_for_static_chunk, expand_omp_sections,
18663         lower_omp_single_copy, lower_omp_for_lastprivate,
18664         lower_omp_parallel, init_tmp_var, save_tmp_var): Likewise.
18665         * value-prof.c (tree_divmod_fixed_value, tree_mod_pow2,
18666         tree_mod_subtract, tree_ic, tree_stringop_fixed_value):
18667         Likewise.
18668
18669 2007-02-19  Kazu Hirata  <kazu@codesourcery.com>
18670
18671         * config/sh/divtab.c, config/sh/sh.c, config/sh/sh.h,
18672         config/sh/sh.md: Follow spelling conventions.
18673
18674         * config/frv/frv.c, config/frv/frv.h, config/frv/frv.md,
18675         config/frv/predicates.md: Follow spelling conventions.
18676
18677         * config/m68k/linux-unwind.h: Fix a comment typo.
18678         * target.h: Follow spelling conventions.
18679
18680 2007-02-18  Roger Sayle  <roger@eyesopen.com>
18681
18682         PR rtl-optimization/28173
18683         * simplify-rtx.c (simplify_binary_operation_1) <IOR>:  Optimize
18684         (X & C1) | C2 as C2 when (C1 & C2) == C1 and X has no side-effects.
18685         Optimize (X & C1) | C2 as X | C2 when (C1 | C2) == ~0.
18686         Canonicalize (X & C1) | C2 as (X & (C1 & ~C2)) | C2.
18687         <AND>: Canonicalize (X | C1) & C2 as (X & C2) | (C1 & C2).
18688
18689 2007-02-18  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
18690
18691         * builtins.c (fold_builtin_load_exponent): New.
18692         (fold_builtin_2): Use it.
18693
18694 2007-02-18  Steven Bosscher  <steven@gcc.gnu.org>
18695
18696         PR rtl-optimization/30773
18697         * local-alloc.c (update_equiv_regs): Do not set reg_equiv_init
18698         if we fail to attach a REG_EQUIV note.
18699
18700 2007-02-18  David Edelsohn  <edelsohn@gnu.org>
18701             Roger Sayle  <roger@eyesopen.com>
18702
18703         * config/rs6000/rs6000.md (bswapsi2): New define_insn and splitter.
18704
18705 2007-02-18  Sandra Loosemore  <sandra@codesourcery.com>
18706
18707         * calls.c (initialize_argument_information): Pass original EXP
18708         and STRUCT_VALUE_ADDR_VALUE instead of a list of arguments.  Move
18709         code to split complex arguments here, as part of initializing the
18710         ARGS array.
18711         (expand_call): Remove code that builds a list of arguments and
18712         inserts implicit arguments into it.  Instead, just count how many
18713         implicit arguments there will be so we can determine the size of
18714         the ARGS array, and let initialize_argument_information do the work.
18715         (split_complex_values): Delete unused function.
18716
18717 2007-02-18  Eric Botcazou  <ebotcazou@adacore.com>
18718
18719         * tree-eh.c (tree_could_trap_p): Handle VIEW_CONVERT_EXPR.
18720
18721 2007-02-18  Eric Botcazou  <ebotcazou@adacore.com>
18722
18723         * calls.c (mem_overlaps_already_clobbered_arg_p): Return true
18724         for arg pointer based indexed addressing.
18725
18726 2007-02-18  Kazu Hirata  <kazu@codesourcery.com>
18727
18728         * config/ia64/ia64.h, config/ia64/ia64.md,
18729         config/ia64/predicates.md, config/ia64/sysv4.h: Follow
18730         spelling conventions.
18731
18732 2007-02-18  Roman Zippel <zippel@linux-m68k.org>
18733
18734         * config/m68k/m68k.c (split_di): New.
18735         * config/m68k/m68k-protos.h: Declare split_di.
18736         * config/m68k/m68k.md (extendsidi2*,ashldi3*,ashrdi3*,lshrdi3*):
18737           Improve predicate handling and split constant shifts.
18738
18739 2007-02-18  Roman Zippel <zippel@linux-m68k.org>
18740
18741         * config/m68k/m68k.md (extv,extzv,insv): disable dynamic
18742         parameter for register bitfield operations, general predicates
18743         cleanup
18744
18745 2007-02-18  Roman Zippel <zippel@linux-m68k.org>
18746
18747         * config/m68k/linux.h (MD_UNWIND_SUPPORT): Define.
18748         * config/m68k/linux-unwind.h: New file.
18749
18750 2007-02-18  Kazu Hirata  <kazu@codesourcery.com>
18751
18752         * cfgloop.c, config/alpha/alpha.c, config/bfin/bfin.c,
18753         config/i386/athlon.md, config/ia64/ia64.md,
18754         config/rs6000/rs6000.c, config/s390/s390.c, config/spu/spu.md,
18755         df-problems.c, df.h, fold-const.c, ipa-cp.c, ipa-inline.c,
18756         ipa-prop.h, see.c, struct-equiv.c, tree-inline.c,
18757         tree-ssa-loop-niter.c, tree-vect-analyze.c,
18758         tree-vect-transform.c: Fix comment typos.
18759
18760 2007-02-17  Kazu Hirata  <kazu@codesourcery.com>
18761
18762         * sched-deps.c (find_insn_list): Remove.
18763         * sched-int.h: Remove the prototype for find_insn_list.
18764
18765 2007-02-16  Geoffrey Keating  <geoffk@apple.com>
18766
18767         * config/darwin.h (LINK_SPEC): Always pass -macosx_version_min
18768         to linker.
18769         (DARWIN_EXTRA_SPECS): Add %(darwin_minversion).
18770         * config/rs6000/darwin.h (SUBTARGET_OVERRIDE_OPTIONS): Just call
18771         darwin_rs6000_override_options.
18772         (C_COMMON_OVERRIDE_OPTIONS): Expect
18773         darwin_macosx_version_min to be non-NULL always.
18774         (TARGET_C99_FUNCTIONS): Likewise.
18775         (CC1_SPEC): Always pass -mmacosx-version-min to cc1*.
18776         (DARWIN_MINVERSION_SPEC): New.
18777         * config/rs6000/rs6000.c (darwin_rs6000_override_options): New.
18778         * config/i386/darwin.h (CC1_SPEC): Always pass -mmacosx-version-min
18779         to cc1*.
18780         (DARWIN_MINVERSION_SPEC): New.
18781         * config/darwin.opt (mmacosx-version-min): Initialize to non-NULL
18782         value.
18783         * config/darwin-c.c (darwin_cpp_builtins): Expect
18784         darwin_macosx_version_min to be non-NULL always.
18785
18786         * config/rs6000/rs6000.c: Clean up trailing whitespace.
18787
18788 2007-02-16  Uros Bizjak  <ubizjak@gmail.com>
18789
18790         * config/i386/i386.h (x86_use_xchgb): New.
18791         (TARGET_USE_XCHGB): New macro.
18792         * config/i386/i386.c (x86_use_xchgb): Set for PENT4.
18793         * config/i386/i386.md (*rotlhi3_1 splitter, *rotrhi3_1 splitter):
18794         Split after reload into bswaphi for shifts of 8.
18795         (bswaphi_lowpart): Generate rolw insn for HImode byte swaps.
18796         (*bswaphi_lowpart_1): Generate xchgb for Q registers for TARGET_XCHGB
18797         or when optimizing for size.
18798
18799 2007-02-16  Richard Guenther  <rguenther@suse.de>
18800             Christian Bruel  <christian.bruel@st.com>
18801
18802         * fold-const.c (tree_swap_operands_p): Treat SSA_NAMEs like
18803         DECLs but prefer SSA_NAMEs over DECLs.
18804
18805 2007-02-16  Richard Guenther  <rguenther@suse.de>
18806
18807         * tree-flow-inline.h (single_imm_use_p): Remove.
18808         (zero_imm_uses_p): Likewise.
18809         * tree-ssa-coalesce.c (create_outofssa_var_map): Use has_single_use
18810         instead of single_imm_use_p.
18811         * tree-cfg.c (replace_uses_by): Use has_zero_use instead of
18812         zero_imm_uses_p.
18813
18814 2007-02-16  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
18815
18816         PR other/27843
18817         * Makefile.in (SYSTEM_HEADER_DIR): Use single quotes to avoid
18818         nested double- and backquotes.
18819
18820 2007-02-15  Roger Sayle  <roger@eyesopen.com>
18821
18822         PR middle-end/30391
18823         * tree.c (expr_align): Handle MODIFY_EXPR.  GIMPLE_MODIFY_STMT
18824         should be unreachable.
18825         (build2_stat): Allow construction of MODIFY_EXPR at any time.
18826         For the time being redirect GIMPLE_MODIFY_STMT to the new
18827         (renamed) build_gimple_modify_stmt_stat.
18828         (build2_gimple_stat): Rename to...
18829         (build_gimple_modify_stmt_stat): Now longer take a CODE argument.
18830         Always build a GIMPLE_MODIFY_STMT node.
18831         * tree.h (build2_gimple, build2_gimple_stat): Delete.
18832         (build_gimple_modify_stmt, build_gimple_modify_stmt_stat): New
18833         declarations.
18834
18835         * tree-cfg.c (factor_computed_gotos, tree_merge_blocks,
18836         gimplify_val): Use build_gimple_modify_stmt instead of build2_gimple.
18837         * tree-complex.c (set_component_ssa_name, expand_complex_move,
18838         expand_complex_div_wide): Likewise.
18839         * tree-ssa-dom.c (record_equivalences_from_stmt): Likewise.
18840         * tree-ssa-loop-im.c (schedule_sm): Likewise.
18841         * tree-ssa-loop-ivopts.c (rewrite_use_nonlinear_expr): Likewise.
18842         * tree-ssa-loop-manip.c (create_iv): Likewise.
18843         * tree-ssa-phiopt.c (conditional_replacement, minmax_replacement,
18844         abs_replacement): Likewise.
18845         * tree-ssa-pre.c (create_expression_by_pieces, poolify_modify_stmt,
18846         realify_fake_stores): Likewise.
18847
18848         * builtins.c (std_expand_builtin_va_start): Build a MODIFY_EXPR
18849         node rather than a GIMPLE_MODIFY_STMT node.
18850         (std_gimpify_va_arg_expr, expand_builtin_va_copy,
18851         fold_builtin_memset, fold_builtin_memory_op, do_mpfr_sincos):
18852         Likewise.
18853         (integer_valued_real_p): Handle MODIFY_EXPR, not GIMPLE_MODIFY_STMT.
18854         * expr.c (expand_expr_real_1): Handle both MODIFY_EXPR and
18855         GIMPLE_MODIFY_STMT.
18856
18857 2007-02-15  Andrew Pinski  <andrew_pinski@playstation.sony.com>
18858
18859         PR middle-end/30433
18860         * fold-const.c (fold_comparison): Add back the
18861         folding of constant complex comparisions.
18862
18863 2007-02-15  Andrew Pinski  <andrew_pinski@playstation.sony.com>
18864
18865         PR middle-end/30729
18866         * stmt.c (warn_if_unused_value): VA_ARG_EXPR has side
18867         effects unknown to this function, return early.
18868
18869 2007-02-15  Ian Lance Taylor  <iant@google.com>
18870
18871         * lower-subreg.c (move_eh_region_note): New static function.
18872         (resolve_simple_move): Call it.
18873         (decompose_multiword_subregs): Track blocks for which we resolve a
18874         simple move which is also a control flow insn.  Pass them to
18875         find_many_sub_basic_blocks.
18876         (pass_lower_subreg): Add TODO_verify_flow.
18877         (pass_lower_subreg2): Likewise.
18878
18879 2007-02-15  Sandra Loosemore  <sandra@codesourcery.com>
18880             Brooks Moses  <brooks.moses@codesourcery.com>
18881             Lee Millward  <lee.millward@codesourcery.com>
18882
18883         * tree.h (enum tree_code_class): Add tcc_vl_exp.
18884         (VL_EXP_CLASS_P): New.
18885         (TREE_OPERAND_CHECK): Use TREE_OPERAND_LENGTH instead of
18886         TREE_CODE_LENGTH.
18887         (TREE_OPERAND_CHECK_CODE): Likewise.
18888         (GIMPLE_STMT_OPERAND_CHECK): Likewise.
18889         (TREE_RTL_OPERAND_CHECK): Likewise.
18890         (tree_operand_check_failed): Make second parameter the whole tree
18891         instead of its code.  Fixed callers.
18892         (VL_EXP_CHECK): New.
18893         (TREE_OPERAND_LENGTH): New.
18894         (VL_EXP_OPERAND_LENGTH): New.
18895         (CALL_EXPR_FN): New.
18896         (CALL_EXPR_STATIC_CHAIN): New.
18897         (CALL_EXPR_ARGS): New.
18898         (CALL_EXPR_ARG): New.
18899         (call_expr_nargs): New.
18900         (CALL_EXPR_ARGP): New.
18901         (build_nt_call_list): Declare.
18902         (build_vl_exp_stat): Declare.
18903         (build_vl_exp): New.
18904         (build_call_list): Declare.
18905         (build_call_nary): Declare.
18906         (build_call_valist): Declare.
18907         (build_call_array): Declare.
18908         (call_expr_arg): Declare.
18909         (call_expr_argp): Declare.
18910         (call_expr_arglist): Declare.
18911         (fold_build_call_list): Declare.
18912         (fold_build_call_list_initializer): Declare.
18913         (fold_call_expr): Declare to replace fold_builtin.
18914         (fold_builtin_fputs): Update to agree with modified definition.
18915         (fold_builtin_strcpy): Likewise.
18916         (fold_builtin_strncpy): Likewise.
18917         (fold_builtin_memory_chk): Likewise.
18918         (fold_builtin_stxcpy_chk): Likewise.
18919         (fold_builtin_strncpy_chk): Likewise.
18920         (fold_builtin_next_arg): Likewise.
18921         (fold_build_call_expr): Declare.
18922         (fold_builtin_call_list): Declare.
18923         (fold_builtin_call_valist): Declare.
18924         (build_call_expr): Declare.
18925         (validate_arglist): Update to agree with modified definition.
18926         (tree_operand_length): New.
18927         (call_expr_arg_iterator): New.
18928         (init_call_expr_arg_iterator): New.
18929         (next_call_expr_arg): New.
18930         (first_call_expr_arg): New.
18931         (more_call_expr_args_p): New.
18932         (FOR_EACH_CALL_EXPR_ARG): New.
18933
18934         * tree.c (tree_code_class_string): Add entries for tcc_vl_exp
18935         and tcc_gimple_stmt.
18936         (tree_code_size): Update documentation.  Use sizeof (tree) rather
18937         than sizeof (char *).
18938         (tree_size): Likewise.  Add case for tcc_vl_exp.
18939         (tree_node_structure): Add case for tcc_vl_exp.
18940         (contains_placeholder_p): Likewise.
18941         (substitute_in_expr): Likewise.
18942         (substitute_placeholder_in_expr): Likewise.
18943         (stabilize_reference_1): Likewise.
18944         (build3_stat): Remove logic for CALL_EXPRs.  Replace with assertion
18945         to diagnose breakage of this interface for constructing CALL_EXPRs.
18946         (build_nt): Add similar assertion here.
18947         (build_nt_call_list): New.
18948         (simple_cst_equal) <CALL_EXPR>: Rewrite to use new accessors.
18949         (iterative_hash_expr): Use TREE_OPERAND_LENGTH instead of
18950         TREE_CODE_LENGTH.
18951         (get_callee_fndecl): Use new CALL_EXPR accessors.
18952         (tree_operand_check_failed): Change parameters to pass entire node
18953         instead of its code, so that we can call TREE_OPERAND_LENGTH on it.
18954         (process_call_operands): New.
18955         (build_vl_exp_stat): New.
18956         (build_call_list): New.
18957         (build_call_nary): New.
18958         (build_call_valist): New.
18959         (build_call_array): New.
18960         (walk_tree): Use TREE_OPERAND_LENGTH instead of TREE_CODE_LENGTH.
18961         (call_expr_arglist): New.
18962
18963         * tree.def (CALL_EXPR): Change representation of CALL_EXPRs to use
18964         tcc_vl_exp instead of a fixed-size tcc_expression.
18965
18966         * doc/c-tree.texi (CALL_EXPR): Document new representation and
18967         accessors for CALL_EXPRs.
18968         (AGGR_INIT_EXPR): Likewise.
18969
18970 2007-02-15  Sandra Loosemore  <sandra@codesourcery.com>
18971             Brooks Moses  <brooks.moses@codesourcery.com>
18972             Lee Millward  <lee.millward@codesourcery.com>
18973
18974         * builtins.c (c_strlen): Return NULL_TREE instead of 0.
18975         (expand_builtin_nonlocal_goto): Change parameter to be entire
18976         CALL_EXPR instead of an arglist.  Use new CALL_EXPR accessors.
18977         (expand_builtin_prefetch): Likewise.
18978         (expand_builtin_classify_type): Likewise.
18979         (mathfn_built_in): Return NULL_TREE instead of 0.
18980         (expand_errno_check): Use new CALL_EXPR accessors.
18981         (expand_builtin_mathfn): Use new CALL_EXPR accessors and constructors.
18982         Return NULL_RTX instead of 0.
18983         (expand_builtin_mathfn_2): Likewise.
18984         (expand_builtin_mathfn_3): Likewise.
18985         (expand_builtin_interclass_mathfn): Likewise.
18986         (expand_builtin_sincos): Likewise.
18987         (expand_builtin_cexpi): Likewise.
18988         (expand_builtin_int_roundingfn): Likewise.
18989         (expand_builtin_int_roundingfn_2): Likewise.
18990         (expand_builtin_pow): Likewise.
18991         (expand_builtin_powi): Likewise.
18992         (expand_builtin_strlen): Pass entire CALL_EXPR as parameter instead
18993         of arglist, fixing callers appropriately.  Use new CALL_EXPR
18994         accessors and constructors.  Return NULL_RTX instead of 0.
18995         (expand_builtin_strstr): Likewise.
18996         (expand_builtin_strchr): Likewise.
18997         (expand_builtin_strrchr): Likewise.
18998         (expand_builtin_strpbrk): Likewise.
18999         (expand_builtin_memcpy): Likewise.
19000         (expand_builtin_mempcpy): Likewise.
19001         (expand_builtin_mempcpy_args): New.
19002         (expand_builtin_memmove): Similarly to expand_builtin_mempcpy.
19003         (expand_builtin_memmove_args): New.
19004         (expand_builtin_bcopy): Similarly to expand_builtin_mempcpy.
19005         (expand_movstr): Likewise.
19006         (expand_builtin_strcpy): Likewise.
19007         (expand_builtin_strcpy_args): New.
19008         (expand_builtin_stpcpy): Similarly to expand_builtin_strcpy.
19009         (expand_builtin_strncpy): Likewise.
19010         (expand_builtin_memset): Likewise.
19011         (expand_builtin_memset_args): New.
19012         (expand_builtin_bzero): Similarly to expand_builtin_memset.
19013         (expand_builtin_memcmp): Likewise.
19014         (expand_builtin_strcmp): Likewise.
19015         (expand_builtin_strncmp): Likewise.
19016         (expand_builtin_strcat): Likewise.
19017         (expand_builtin_strncat): Likewise.
19018         (expand_builtin_strspn): Likewise.
19019         (expand_builtin_strcspn): Likewise.
19020         (expand_builtin_args_info): Likewise.
19021         (expand_builtin_va_start): Likewise.
19022         (gimplify_va_arg_expr): Likewise.
19023         (expand_builtin_va_end): Likewise.
19024         (expand_builtin_va_copy): Likewise.
19025         (expand_builtin_frame_address): Likewise.
19026         (expand_builtin_alloca): Likewise.
19027         (expand_builtin_bswap): Likewise.
19028         (expand_builtin_unop): Likewise.
19029         (expand_builtin_fputs): Likewise.
19030         (expand_builtin_expect): Likewise.
19031         (expand_builtin_fabs): Likewise.
19032         (expand_builtin_copysign): Likewise.
19033         (expand_builtin_printf): Likewise.
19034         (expand_builtin_fprintf): Likewise.
19035         (expand_builtin_sprintf): Likewise.
19036         (expand_builtin_init_trampoline): Likewise.
19037         (expand_builtin_signbit): Likewise.
19038         (expand_builtin_fork_or_exec): Likewise.
19039         (expand_builtin_sync_operation): Likewise.
19040         (expand_builtin_compare_and_swap): Likewise.
19041         (expand_builtin_lock_test_and_set): Likewise.
19042         (expand_builtin_lock_release): Likewise.
19043         (expand_builtin): Likewise.
19044         (builtin_mathfn_code): Likewise.
19045
19046         (fold_builtin_constant_p): Pass call arguments individually instead
19047         of as an arglist, fixing callers appropriately.  Use new CALL_EXPR
19048         accessors and constructors.  Return NULL_TREE instead of 0.
19049         (fold_builtin_expect): Likewise.
19050         (fold_builtin_classify_type): Likewise.
19051         (fold_builtin_strlen): Likewise.
19052         (fold_builtin_nan): Likewise.
19053         (integer_valued_real_p): Likewise.
19054         (fold_trunc_transparent_mathfn): Likewise.
19055         (fold_fixed_mathfn): Likewise.
19056         (fold_builtin_cabs): Likewise.
19057         (fold_builtin_sqrt): Likewise.
19058         (fold_builtin_cbrt): Likewise.
19059         (fold_builtin_cos): Likewise.
19060         (fold_builtin_cosh): Likewise.
19061         (fold_builtin_tan): Likewise.
19062         (fold_builtin_sincos): Likewise.
19063         (fold_builtin_cexp): Likewise.
19064         (fold_builtin_trunc): Likewise.
19065         (fold_builtin_floor): Likewise.
19066         (fold_builtin_ceil): Likewise.
19067         (fold_builtin_round): Likewise.
19068         (fold_builtin_int_roundingfn): Likewise.
19069         (fold_builtin_bitop): Likewise.
19070         (fold_builtin_bswap): Likewise.
19071         (fold_builtin_logarithm): Likewise.
19072         (fold_builtin_hypot): Likewise.
19073         (fold_builtin_pow): Likewise.
19074         (fold_builtin_powi): Likewise.
19075         (fold_builtin_exponent): Likewise.
19076         (fold_builtin_memset): Likewise.
19077         (fold_builtin_bzero): Likewise.
19078         (fold_builtin_memory_op): Likewise.
19079         (fold_builtin_bcopy): Deleted; call site changed to invoke
19080         fold_builtin_memory_op directly.
19081         (fold_builtin_strcpy): Similarly as for fold_builtin_memory_op.
19082         (fold_builtin_strncpy): Likewise.
19083         (fold_builtin_memcmp): Likewise.
19084         (fold_builtin_strcmp): Likewise.
19085         (fold_builtin_strncmp): Likewise.
19086         (fold_builtin_signbit): Likewise.
19087         (fold_builtin_copysign): Likewise.
19088         (fold_builtin_isascii): Likewise.
19089         (fold_builtin_toascii): Likewise.
19090         (fold_builtin_isdigit): Likewise.
19091         (fold_builtin_fabs): Likewise.
19092         (fold_builtin_abs): Likewise.
19093         (fold_builtin_fmin_fmax): Likewise.
19094         (fold_builtin_carg): Likewise.
19095         (fold_builtin_classify): Likewise.
19096         (fold_builtin_unordered_cmp): Likewise.
19097
19098         (fold_builtin_0, fold_builtin_2, fold_builtin_3, fold_builtin_4):
19099         New functions split out from fold_builtin_1.
19100         (fold_builtin_n): New.
19101         (fold_builtin_varargs): New.
19102         (fold_builtin): Deleted.  Most callers changed to use fold_call_expr
19103         instead.
19104         (fold_call_expr): New.
19105         (build_function_call_expr): Rewrite to use new helper function.
19106         (fold_builtin_call_list): New.
19107         (build_call_expr): New.
19108         (fold_builtin_call_valist): New.
19109         (rewrite_call_expr): New.
19110         (validate_arg): New.
19111         (validate_arglist): Change parameter to be entire CALL_EXPR instead
19112         of an arglist.  Change return type to bool.  Use new CALL_EXPR
19113         accessors.
19114
19115         (fold_builtin_strstr):  Pass call arguments individually instead
19116         of as an arglist, fixing callers appropriately.  Use new CALL_EXPR
19117         accessors and constructors.  Return NULL_TREE instead of 0.
19118         (fold_builtin_strchr): Likewise.
19119         (fold_builtin_strrchr): Likewise.
19120         (fold_builtin_strpbrk): Likewise.
19121         (fold_builtin_strcat): Likewise.
19122         (fold_builtin_strncat): Likewise.
19123         (fold_builtin_strspn): Likewise.
19124         (fold_builtin_strcspn): Likewise.
19125         (fold_builtin_fputs): Likewise.
19126         (fold_builtin_next_arg): Likewise.
19127         (fold_builtin_sprintf): Likewise.
19128
19129         (expand_builtin_object_size): Use new CALL_EXPR accessors.  Use
19130         NULL_RTX instead of 0.
19131         (expand_builtin_memory_chk): Likewise.
19132         (maybe_emit_chk_warning): Likewise.
19133         (maybe_emit_sprintf_chk_warning): Likewise.
19134
19135         (fold_builtin_object_size): Pass call arguments individually instead
19136         of as an arglist, fixing callers appropriately.  Use new CALL_EXPR
19137         accessors and constructors.  Return NULL_TREE instead of 0.
19138         (fold_builtin_memory_chk): Likewise.
19139         (fold_builtin_stxcpy_chk): Likewise.
19140         (fold_builtin_strncpy_chk): Likewise.
19141         (fold_builtin_strcat_chk): Likewise.
19142         (fold_builtin_strcat_chk): Likewise.
19143         (fold_builtin_strncat_chk): Likewise.
19144         (fold_builtin_sprintf_chk): Likewise.
19145         (fold_builtin_snprintf_chk): Likewise.
19146         (fold_builtin_printf): Likewise.
19147         (fold_builtin_vprintf): Likewise.
19148
19149         * fold-const.c (negate_expr_p): Use new CALL_EXPR accessors and
19150         constructors.
19151         (operand_equal_p): Add separate tcc_vl_exp/CALL_EXPR case.
19152         (make_range): Use TREE_OPERAND_LENGTH instead of TREE_CODE_LENGTH.
19153         (extract_muldiv_1): Add VL_EXP_CLASS_P case.
19154         (fold_mathfn_compare): Use new CALL_EXPR accessors and constructors.
19155         (fold_unary): Likewise.
19156         (fold_binary): Likewise.
19157         (fold_ternary): Remove CALL_EXPR case, since they are no longer
19158         ternary expressions.
19159         (fold): Add logic for tcc_vl_exp.
19160         (fold_checksum_tree):  Make it know about tcc_vl_exp.  Use
19161         TREE_OPERAND_LENGTH instead of TREE_CODE_LENGTH.
19162         (fold_build3_stat): Add assertion to flag broken interface for
19163         constructing CALL_EXPRs.
19164         (fold_build_call_list): New.
19165         (fold_build_call_list_initializer): New.
19166         (tree_expr_nonnegative_p): Use new CALL_EXPR accessors and
19167         constructors.
19168         (fold_strip_sign_ops): Likewise.
19169
19170 2007-02-15  Sandra Loosemore  <sandra@codesourcery.com>
19171             Brooks Moses  <brooks.moses@codesourcery.com>
19172             Lee Millward  <lee.millward@codesourcery.com>
19173
19174         * tree-dump.c (dequeue_and_dump) <CALL_EXPR>: Use new CALL_EXPR
19175         accessors and dump arguments explicitly.
19176
19177         * tree-pretty-print.c (do_niy): Use TREE_OPERAND_LENGTH instead of
19178         TREE_CODE_LENGTH.
19179         (dump_generic_node): Use new CALL_EXPR accessors and walk arguments
19180         explicitly.
19181         (print_call_name): Use new CALL_EXPR accessors.
19182
19183         * print-tree.c (print_node): Add case tcc_vl_exp.  Print
19184         CALL_EXPR arguments explicitly instead of as a list.  Use
19185         TREE_OPERAND_LENGTH instead of TREE_CODE_LENGTH.
19186
19187         * tree-vrp.c (stmt_interesting_for_vrp): Use new CALL_EXPR accessors.
19188         (vrp_visit_stmt): Likewise.
19189
19190         * tree-ssa-loop-im.c (outermost_invariant_loop_expr):  Make it
19191         know about tcc_vl_exp.  Use TREE_OPERAND_LENGTH instead of
19192         TREE_CODE_LENGTH.
19193         (force_move_till_expr): Likewise.
19194
19195         * targhooks.c (default_external_stack_protect_fail): Use
19196         build_call_expr instead of build_function_call_expr.
19197         (default_hidden_stack_protect_fail): Likewise.
19198
19199         * tree-complex.c (expand_complex_libcall): Use build_call_expr to
19200         build the call.
19201
19202         * cgraphbuild.c (build_cgraph_edges): Use new CALL_EXPR accessors
19203         and walk arguments explicitly.
19204
19205         * tree-ssa-loop-niter.c (simplify_replace_tree): Use
19206         TREE_OPERAND_LENGTH instead of TREE_CODE_LENGTH.
19207         (expand_simple_operations): Likewise.
19208         (infer_loop_bounds_from_array): Use new CALL_EXPR accessors.
19209
19210         * gengtype.c (adjust_field_tree_exp): Use TREE_OPERAND_LENGTH instead
19211         of TREE_CODE_LENGTH.
19212         (walk_type): Tweak walking of arrays not to blow up on CALL_EXPRs.
19213
19214         * optabs.c (expand_widen_pattern-expr): Use TREE_OPERAND_LENGTH
19215         instead of TREE_CODE_LENGTH.
19216
19217         * value_prof.c (tree_ic): Use new CALL_EXPR accessors.
19218         (tree_ic_transform): Likewise.
19219         (interesting_stringop_to_profile_p): Pass entire CALL_EXPR as
19220         parameter instead of arglist.  Fix callers.
19221         (tree_stringop_fixed_value): Use new CALL_EXPR accessors.
19222         (tree_stringops_transform): Likewise.
19223         (tree_indirect_call_to_profile): Likewise.
19224         (tree_stringops_values_to_profile): Likewise.
19225
19226         * tree-tailcall.c (find_tail_calls): Use new CALL_EXPR iterator.
19227         (eliminate_tail_call): Likewise.
19228
19229         * ipa-cp.c (ipcp_update_callgraph): Use new CALL_EXPR accessors.
19230
19231         * tree-scalar-evolution.c (chrec_contains_symbols_defined_in_loop):
19232         Use TREE_OPERAND_LENGTH and generalize to handle any number of
19233         operands.
19234         (instantiate_parameters_1): Can't handle tcc_vl_exp here.
19235
19236         * omp-low.c (build_omp_barrier): Use build_call_expr.
19237         (lower_rec_input_clauses): Likewise.
19238         (lower_reduction_clauses): Likewise.
19239         (expand_parallel_call): Likewise.
19240         (maybe_catch_exception): Likewise.
19241         (expand_omp_for_generic): Likewise.
19242         (expand_omp_for_static_nochunk): Likewise.
19243         (expand_omp_sections): Likewise.
19244         (lower_omp_single_simple): Likewise.
19245         (lower_omp_single_copy): Likewise.
19246         (lower_omp_master): Likewise.
19247         (lower_omp_ordered): Likewise.
19248         (lower_omp_critical): Likewise.
19249
19250         * ipa-reference.c (check-call): Use new CALL_EXPR iterator.
19251         (scan_for_static_refs): Create tcc_vl_exp case for CALL_EXPR.
19252
19253         * tree-gimple.c (is_gimple_call_addr): Fix doc.
19254         (recalculate_side_effects): Use TREE_OPERAND_LENGTH instead of
19255         TREE_CODE_LENGTH.  Add tcc_vl_exp case.
19256
19257         * tree-chrec.c (chrec_contains_symbols): Use TREE_OPERAND_LENGTH
19258         and generalize to handle any number of operands.
19259         (chrec_contains_undetermined): Likewise.
19260         (tree_contains_chrecs): Likewise.
19261         (evolution_function_is_invariant_rec_p): Use TREE_OPERAND_LENGTH.
19262
19263         * cgraphunit.c (update_call_expr): Use new CALL_EXPR accessors.
19264
19265         * tree-ssa-ccp.c (ccp_fold): Use new CALL_EXPR accessors.  Use
19266         fold_call_expr instead of fold_builtin.
19267         (ccp_fold_builtin): Likewise.  Update calls into builtins.c to
19268         match declarations there.
19269         (fold_stmt): Use new CALL_EXPR constructor and accessors.  Doc
19270         updates.
19271
19272         * tree-ssa-loop-ivopts.c (expr_invariant_in_loop_p): Use
19273         TREE_OPERAND_LENGTH instead of TREE_CODE_LENGTH.
19274
19275         * ipa-pure-const.c (check_call): Use new CALL_EXPR accessors.
19276         (scan_function): Add case tcc_vl_exp for CALL_EXPR.
19277
19278         * tree-stdarg.c (execute_optimize_stdarg): Use new CALL_EXPR
19279         accessors.
19280
19281         * tree-ssa-math-opts.c (execute_cse_sincos_1): Use build_call_expr.
19282         (execute_cse_sincos): Use new CALL_EXPR accessors.
19283
19284         * tree-ssa-alias.c (find_used_portions): Use new CALL_EXPR iterator.
19285
19286         * gimple-low.c (lower_function_body): Use build_call_expr.
19287         (lower_builtin_setjmp): Likewise.
19288
19289         * expr.c (emit_block_move_via_libcall): Use build_call_expr.
19290         (set_storage_via_libcall): Likewise.
19291         (safe_from_p): Add tcc_vl_exp case.  Use TREE_OPERAND_LENGTH
19292         instead of TREE_CODE_LENGTH.
19293         (expand_expr_real_1): Use new CALL_EXPR accessors.
19294
19295         * tree-browser.c (store_child_info): Use TREE_OPERAND_LENGTH and
19296         generalize to handle any number of operands.
19297         (TB_parent_eq): Likewise.
19298
19299         * predict.c (expr_expected_value): Use new CALL_EXPR accessors.
19300         (strip_builtin_expect): Likewise.
19301
19302         * function.c (gimplify_parameters): Use build_call_expr.
19303
19304         * tree-vectorizer.c (vect_is_simple_reduction): Use
19305         TREE_OPERAND_LENGTH instead of TREE_CODE_LENGTH.
19306
19307         * ipa-type-escape.c (check_call): Use new CALL_EXPR iterators.
19308         (scan_for_refs): Add case tcc_vl_exp for CALL_EXPR.
19309
19310         * tree-data-ref.c (get_references_in_stmt): Use new CALL_EXPR
19311         iterators.
19312
19313         * gimplify.c (build_stack_save_restore): Use build_call_expr.
19314         (gimplify_decl_expr): Likewise.
19315         (gimplify_call_expr): Use fold_call_expr instead of fold_builtin.
19316         Use new CALL_EXPR iterators.
19317         (gimplify_modify_expr_to_memcpy): Use build_call_expr.
19318         (gimplify_modify_expr_to_memset): Likewise.
19319         (gimplify_variable_sized_compare): Likewise.
19320         (gimplify_omp_atomic_fetch_op): Likewise.
19321         (gimplify_omp_atomic_pipeline): Likewise.
19322         (gimplify_omp_atomic_mutex): Likewise.
19323         (gimplify_function_tree): Likewise.
19324
19325         * calls.c (alloca_call_p): Use new CALL_EXPR accessors.
19326         (call_expr_flags): Likewise.
19327         (expand_call): Likewise.
19328
19329         * except.c (expand_builtin_eh_return_data_regno): Pass entire
19330         CALL_EXPR as parameter instead of arglist.  Use new CALL_EXPR
19331         accessors.
19332
19333         * coverage.c (create_coverage): Use build_call_expr.
19334
19335         * tree-ssa-pre.c (expression_node_pool, list_node_pool): Delete.
19336         (temp_call_expr_obstack): New.
19337         (pool_copy_list): Delete.
19338         (temp_copy_call_expr): New.
19339         (phi_translate): Add case tcc_vl_exp for CALL_EXPR.  Use new
19340         CALL_EXPR accessors.  Get rid of special goo for copying argument
19341         lists and use temp_copy_call_expr instead.
19342         (valid_in_sets): Add case tcc_vl_exp for CALL_EXPR.  Use new
19343         CALL_EXPR accessors.
19344         (create_expression_by_pieces): Likewise.  Use build_call_array
19345         to construct the result instead of fold_build3.
19346         (create_value_expr_from): Add tcc_vl_exp.  Delete special goo for
19347         dealing with argument lists.
19348         (init_pre): Remove references to expression_node_pool and
19349         list_node_pool.  Init temp_call_expr_obstack instead.
19350         (fini_pre): Remove references to expression_node_pool and
19351         list_node_pool.
19352
19353         * tree-sra.c (sra_walk_call_expr): Use new CALL_EXPR accessors
19354         and walk arguments explicitly instead of as a list.
19355
19356         * tree-mudflap.c (mf_build_check_statement_for): Use build_call_expr.
19357         (mx_register_decls): Likewise.
19358         (mudflap_register_call): Likewise.
19359         (mudflap_finish_file): Likewise.
19360
19361         * ipa-prop.c (ipa_callsite_compute_count): Use new CALL_EXPR accessors.
19362         (ipa_callsite_compute_param): Likewise.
19363
19364         * tree-vect-patterns.c (vect_recog_pow_pattern): Use new CALL_EXPR
19365         accessors and constructor.
19366
19367         * tree-nested.c (convert_nl_goto_reference): Use new CALL_EXPR
19368         accessors and constructor.
19369         (convert_tramp_reference): Likewise.
19370         (convert_call_expr): Likewise.
19371         (finalize_nesting_tree_1): Likewise.
19372
19373         * tree-ssa.c (tree_ssa_useless_type_conversion): Use new CALL_EXPR
19374         accessors.
19375
19376         * tree-ssa-loop-prefetch.c (issue_prefetch_ref): Use build_call_expr.
19377
19378         * tree-inline.c (initialize_inlined_parameters): Pass entire
19379         CALL_EXPR as parameter instead of arglist.  Use new CALL_EXPR
19380         accessors.
19381         (estimate_num_insns_1): Use new CALL_EXPR accessors.
19382         (expand_call_inline): Tidy up call to initialize_inlined_parameters.
19383
19384         * tree-vect-transform.c (vect_create_epilog_for_reduction):  Use
19385         TREE_OPERAND_LENGTH instead of TREE_CODE_LENGTH.
19386         (vectorizable_reduction): Likewise.
19387         (vectorizable_call): Use new CALL_EXPR iterators.
19388         (vectorizable_conversion): Use build_call_expr.
19389         (vectorizable_operation): Use TREE_OPERAND_LENGTH.
19390         (vect_gen_widened_results_half): Use build_call_expr.
19391         (vect_setup_realignment): Likewise.
19392         (vectorizable_live_operation): Use TREE_OPERAND_LENGTH.
19393
19394         * tree-object-size.c (alloc_object_size): Use new CALL_EXPR accessors.
19395         (pass_through_call): Likewise.
19396         (compute_object_sizes): Likewise.  Use fold_call_expr instead of
19397         fold_builtin.
19398
19399         * tree-profile.c (tree_gen_interval_profiler): Use build_call_expr.
19400         (tree_gen_pow2_profiler): Likewise.
19401         (tree_gen_one_value_profiler): Likewise.
19402         (tree_gen_ic_func_profiler): Likewise.
19403         (tree_gen_average_profiler): Likewise.
19404         (tree_gen_ior_profiler): Likewise.
19405
19406         * tree-ssa-structalias.c (get_constraint_for): Add case tcc_vl_exp.
19407         (find_func_aliases): Use new CALL_EXPR accessors.  Add case
19408         tcc_vl_exp.  Use TREE_OPERAND_LENGTH instead of TREE_CODE_LENGTH.
19409
19410         * tree-ssa-reassoc.c (get_rank): Use TREE_OPERAND_LENGTH instead
19411         of TREE_CODE_LENGTH.
19412
19413         * stmt.c (warn_if_unused_value): Use TREE_OPERAND_LENGTH instead
19414         of TREE_CODE_LENGTH.
19415
19416         * convert.c (convert_to_real): Use new CALL_EXPR accessors and
19417         constructor.
19418         (convert_to_integer): Likewise.
19419
19420         * tree-ssa-operands.c (get_call_expr_operands): Use new CALL_EXPR
19421         accessors.
19422
19423 2007-02-15  Sandra Loosemore  <sandra@codesourcery.com>
19424             Brooks Moses  <brooks.moses@codesourcery.com>
19425             Lee Millward  <lee.millward@codesourcery.com>
19426
19427         * config/alpha/alpha.c (alpha_expand_builtin): Use new CALL_EXPR
19428         accessors.
19429         * config/frv/frv.c (frv_expand_builtin): Likewise.
19430         * config/s390/s390.c (s390_expand_builtin): Likewise.
19431
19432         * config/sparc/sparc.c (sparc_gimplify_va_arg): Use build_call_expr.
19433         (sparc_expand_builtin): Use new CALL_EXPR accessors.
19434
19435         * config/i386/i386.c (ix86_function_ok_for_sibcall): Likewise.
19436         (ix86_expand_binop_builtin): Pass entire CALL_EXPR as parameter
19437         instead of arglist.  Use new CALL_EXPR accessors on it.  Fix callers.
19438         (ix86_expand_store_builtin): Likewise.
19439         (ix86_expand_unop_builtin): Likewise.
19440         (ix86_expand_unop1_builtin): Likewise.
19441         (ix86_expand_sse_compare): Likewise.
19442         (ix86_expand_sse_comi): Likewise.
19443         (ix86_expand_vec_init_builtin): Likewise.
19444         (ix86_expand_vec_ext_builtin): Likewise.
19445         (ix86_expand_vec_set_builtin): Likewise.
19446         (ix86_expand_builtin): Use new CALL_EXPR accessors.
19447
19448         * config/sh/sh.c (sh_expand_builtin): Use new CALL_EXPR accessors.
19449         * config/c4x/c4x.c (c4x_expand_builtin): Likewise.
19450
19451         * config/iq2000/iq2000.c (expand_one_builtin): Pass entire CALL_EXPR
19452         instead of arglist.  Use new CALL_EXPR accessors.  Fix callers.
19453         (iq2000_expand_builtin): Use new CALL_EXPR accessors.
19454
19455         * config/rs6000/rs6000-c.c (altivec_build_resolved_builtin): Use
19456         build_call_expr.
19457         * config/rs6000/rs6000.c (rs6000_gimplify_va_arg): Likewise.
19458         (rs6000_expand_unop_builtin): Pass entire CALL_EXPR instead of
19459         arglist.  Use new CALL_EXPR accessors.  Fix callers.
19460         (altivec_expand_abs_builtin): Likewise.
19461         (rs6000_expand_binop_builtin): Likewise.
19462         (altivec_expand_predicate_builtin): Likewise.
19463         (altivec_expand_lv_builtin): Likewise.
19464         (spe_expand_stv_builtin): Likewise.
19465         (altivec_expand_stv_builtin): Likewise.
19466         (rs6000_expand_ternop_builtin): Likewise.
19467         (altivec_expand_ld_builtin): Use new CALL_EXPR accessors.
19468         (altivec_expand_st_builtin): Likewise.
19469         (altivec_expand_dst_builtin): Likewise.
19470         (altivec_expand_vec_init_builtin): Pass entire CALL_EXPR instead of
19471         arglist.  Use new CALL_EXPR accessors.  Fix callers.
19472         (altivec_expand_vec_set_builtin): Likewise.
19473         (altivec_expand_vec_ext_builtin): Likewise.
19474         (altivec_expand_builtin): Use new CALL_EXPR accessors.
19475         (spe_expand_builtin): Likewise.
19476         (spe_expand_predicate_builtin): Pass entire CALL_EXPR instead of
19477         arglist.  Use new CALL_EXPR accessors.  Fix callers.
19478         (spe_expand_evsel_builtin): Likewise.
19479         (rs6000_expand_builtin): Use new CALL_EXPR accessors.  VCFUX and
19480         FCFSX cases must construct whole new CALL_EXPR, not just arglist.
19481
19482         * config/arm/arm.c (arm_expand_binop_builtin): Pass entire CALL_EXPR
19483         instead of arglist.  Use new CALL_EXPR accessors.  Fix callers.
19484         (arm_expand_unop_builtin): Likewise.
19485         (arm_expand_builtin): Use new CALL_EXPR accessors.
19486
19487         * config/mips/mips.c (mips_expand_builtin):  Use new CALL_EXPR
19488         accessors.
19489
19490         * config/bfin/bfin.c (bfin_expand_binop_builtin): Pass entire
19491         CALL_EXPR instead of arglist.  Use new CALL_EXPR accessors.
19492         Fix callers.
19493         (bfin_expand_unop_builtin): Likewise.
19494         (bfin_expand_builtin): Use new CALL_EXPR accessors.
19495
19496 2007-02-15  Sandra Loosemore  <sandra@codesourcery.com>
19497             Brooks Moses  <brooks.moses@codesourcery.com>
19498             Lee Millward  <lee.millward@codesourcery.com>
19499
19500         * c-semantics.c (build_stmt): Add internal diagnostic check.
19501
19502         * c-pretty-print.c (pp_c_postfix_expression): Use new CALL_EXPR
19503         accessors.  Print arguments explicitly instead of as a list.
19504
19505         * c-typeck.c (build_function_call): Use new CALL_EXPR constructors.
19506
19507         * c-omp.c (c_finish_omp_barrier): Use build_call_expr.
19508         (c_finish_omp_flish): Likewise.
19509
19510         * c-common.c (verify_tree): Use new CALL_EXPR accessors.  Traverse
19511         arguments explicitly instead of as a list.  Use TREE_OPERAND_LENGTH
19512         instead of TREE_CODE_LENGTH.
19513         (check_function_arguments_recurse): Use new CALL_EXPR accessors.
19514         (c_warn_unused_result): Likewise.
19515
19516 2007-02-15  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
19517
19518         PR c/26494
19519         * doc/invoke.texi (Warning Options): Remove
19520         -Werror-implicit-function-declaration.
19521         (Wimplicit-function-declaration): Update description.
19522         * opts.c (common_handle_option): Move handling of -Werror=* to...
19523         (enable_warning_as_error): ...here.
19524         * opts.h (enable_warning_as_error): Declare.
19525         * c-decl.c (implicit_decl_warning): Unless
19526         -Wno-implicit-function-declaration is given, emit a pedwarn if
19527         -std=c99 or emit a warning if -Wimplicit-function-declaration.
19528         * c.opt (Wimplicit-function-declaration): Replace
19529         mesg_implicit_function_declaration with
19530         warn_implicit_function_declaration.
19531         * c-opts.c (c_common_handle_option):
19532         -Werror-implicit-function-declaration is exactly equal as
19533         -Werror=implicit-function-declaration.
19534         (set_Wimplicit): Replace mesg_implicit_function_declaration with
19535         warn_implicit_function_declaration.
19536         (c_common_post_options): -Wimplict-function-declaration is enabled
19537         by default by -std=c99, otherwise is disabled by default.
19538         * c-objc-common.c (c_objc_common_init): Remove flawed logic.
19539
19540 2007-02-15  Eric Botcazou  <ebotcazou@adacore.com>
19541
19542         * gimplify.c (gimplify_modify_expr): During gimplification, attach a
19543         DECL on the rhs to a DECL on the lhs for debug info purposes if the
19544         former is ignored but not the latter.
19545
19546 2007-02-15  Eric Botcazou  <ebotcazou@adacore.com>
19547
19548         * expr.c (expand_expr_real_1) <normal_inner_ref>: If a temporary
19549         is made and the reference doesn't use the alias set of its type,
19550         do not create the temporary using that type.
19551
19552 2007-02-15  Aldy Hernandez  <aldyh@redhat.com>
19553
19554         * jump.c: Remove prototypes for delete_computation and
19555         delete_prior_computation.
19556
19557 2007-02-15  Paolo Bonzini  <bonzini@gnu.org>
19558
19559         * jump.c (get_label_after): Delete.
19560         (get_label_before, delete_computation, delete_jump,
19561         delete_prior_computation, follow_jumps): Move...
19562         * reorg.c (delete_computation, delete_prior_computation): ... here...
19563         (get_label_before, delete_jump): ... making these static ...
19564         (follow_jumps): ... and simplifying this since it only runs after
19565         reload.
19566         * rtl.h (get_label_after, get_label_before, delete_jump,
19567         follow_jumps): Delete prototypes.
19568
19569 2007-02-15  Paolo Bonzini  <bonzini@gnu.org>
19570
19571         * caller-save.c (save_call_clobbered_regs): Do not process sibcalls.
19572
19573 2007-02-15  Nick Clifton  <nickc@redhat.com>
19574
19575         * varasm.c (default_asm_output_anchor): Prepend * to . symbol in
19576         order to prevent it from being munged by the target.
19577
19578 2007-02-15  Uros Bizjak  <ubizjak@gmail.com>
19579
19580         * config/i386/i386.md: Remove misleading comment.
19581
19582 2007-02-15  Alexandre Oliva  <aoliva@redhat.com>
19583
19584         * config/frv/frv.md (reload_incc, reload_outcc, reload_incc_uns,
19585         reload_outcc_uns, reload_incc_nz, reload_outcc_nz): Remove
19586         invalid patterns.
19587
19588 2007-02-15  Alexandre Oliva  <aoliva@redhat.com>
19589
19590         * tree-sra.c (instantiate_missing_elements): Canonicalize
19591         bit-field types.
19592         (sra_build_assignment): New.
19593         (generate_copy_inout, generate_element_copy,
19594         generate_element_zero, generate_one_element_init): Use it.
19595
19596 2007-02-15  Alexandre Oliva  <aoliva@redhat.com>
19597
19598         * tree-sra.c (instantiate_missing_elements): Canonicalize
19599         bit-field types.
19600         (sra_build_assignment): New.
19601         (generate_copy_inout, generate_element_copy,
19602         generate_element_zero, generate_one_element_init): Use it.
19603
19604 2007-02-15  Alexandre Oliva  <aoliva@redhat.com>
19605
19606         * dwarf2out.c (dwarf2out_finish): Accept namespaces as context of
19607         limbo die nodes.
19608
19609 2007-02-14  Joseph Myers  <joseph@codesourcery.com>
19610
19611         * emit-rtl.c (set_mem_attributes_minus_bitpos): Treat complex
19612         types as aggregates not scalars.
19613         * function.c (assign_stack_temp_for_type): Likewise.
19614
19615 2007-02-14  Roger Sayle  <roger@eyesopen.com>
19616             Zdenek Dvorak  <dvorakz@suse.cz>
19617
19618         * tree-dump.c (dump_switch_p_1): Require exact match of the option
19619         name.
19620
19621 2007-02-14  Zdenek Dvorak  <dvorakz@suse.cz>
19622
19623         * passes.c (next_pass_1): Clear the next field of the copied
19624         pass structure.
19625
19626 2007-02-14  Richard Henderson  <rth@redhat.com>
19627
19628         * tree-sra.c (early_sra): New.
19629         (decl_can_be_decomposed_p): Deny va_list if early_sra.
19630         (tree_sra_early, pass_sra_early): New.
19631         * tree-pass.h (pass_sra_early): Declare.
19632         * passes.c (init_optimization_passes): Use it.
19633
19634 2007-02-14  Richard Guenther  <rguenther@suse.de>
19635
19636         * flags.h (issue_strict_overflow_warning): Convert to a macro.
19637
19638 2007-02-14  Dorit Nuzman  <dorit@il.ibm.com>
19639
19640          PR tree-optimization/30771
19641         * tree-vect-analyze.c (vect_determine_vectorization_factor): Traverse
19642         also phi nodes.
19643         (vect_analyze_operations): Induction phis can now be marked as
19644         used_in_loop.
19645         (vect_mark_stmts_to_be_vectorized): No special treatment for phis.
19646         Update documentation accordingly.
19647
19648 2007-02-14  Nick Clifton  <nickc@redhat.com>
19649
19650         * builtin-types.def (DEF_FUNCTION_TYPE_x): Do not imply that at
19651         most 3 arguments are supported.
19652         (DEF_FUNCTION_TYPE_VAR_5): Fix typo in its description.
19653
19654 2007-02-13  Seongbae Park <seongbae.park@gmail.com>
19655
19656         * bitmap.c (bitmap_and, bitmap_and_compl, bitmap_xor):
19657         Ensure dst->current is valid.
19658
19659 2007-02-13  Paul Brook  <paul@codesourcery.com>
19660
19661         * config.gcc: Add arm*-*-uclinux-*eabi.
19662         * config/arm/uclinux-elf.h (TARGET_OS_CPP_BUILTINS): Define.
19663         (SUBTARGET_EXTRA_LINK_SPEC): Define.
19664         (STARTFILE_SPEC, ENDFILE_SPEC): Remove broken -shared handling.
19665         (LINK_GCC_C_SEQUENCE_SPEC): Undef.
19666         (LINK_SPEC): Define.
19667         (LIB_SPEC): Define.
19668         * config/arm/arm.c (arm_override_options): Use r9 as EABI PIC
19669         register.
19670         * config/arm/uclinux-eabi.h: New file.
19671         * config/arm/linux-eabi.h (WCHAR_TYPE): Remove.
19672         * config/arm/linux-gas.h (WCHAR_TYPE): Use unsigned long on AAPCS
19673         based targets.
19674
19675 2007-02-13  Ian Lance Taylor  <iant@google.com>
19676
19677         * common.opt: Add Wstrict-overflow and Wstrict-overflow=.
19678         * flags.h (warn_strict_overflow): Declare.
19679         (enum warn_strict_overflow_code): Define.
19680         (issue_strict_overflow_warning): New static inline function.
19681         * opts.c (warn_strict_overflow): New variable.
19682         (common_handle_option): Handle OPT_Wstrict_overflow and
19683         OPT_Wstrict_overflow_.
19684         * c-opts.c (c_common_handle_option): Set warn_strict_overflow for
19685         OPT_Wall.
19686         * fold-const.c: Include intl.h.
19687         (fold_deferring_overflow_warnings): New static variable.
19688         (fold_deferred_overflow_warning): New static variable.
19689         (fold_deferred_overflow_code): New static variable.
19690         (fold_defer_overflow_warnings): New function.
19691         (fold_undefer_overflow_warnings): New function.
19692         (fold_undefer_and_ignore_overflow_warnings): New function.
19693         (fold_deferring_overflow_warnings_p): New function.
19694         (fold_overflow_warning): New static function.
19695         (make_range): Add strict_overflow_p parameter.  Change all
19696         callers.
19697         (extract_muldiv, extract_muldiv_1): Likewise.
19698         (fold_unary) [ABS_EXPR]: Check ABS_EXPR before calling
19699         tree_expr_nonnegative_p.
19700         (fold_negate_expr): Call fold_overflow_warning.
19701         (fold_range_test): Likewise.
19702         (fold_comparison): Likewise.
19703         (fold_binary): Likewise.  Call tree_expr_nonnegative_warnv_p
19704         instead of tree_expr_nonnegative_p.
19705         (tree_expr_nonnegative_warnv_p): Rename from
19706         tree_expr_nonnegative_p, add strict_overflow_p parameter.
19707         (tree_expr_nonnegative_p): New function.
19708         (tree_expr_nonzero_warnv_p): Rename from tree_expr_nonzero_p, add
19709         strict_overflow_p parameter.
19710         (tree_expr_nonzero_p): New function.
19711         * passes.c (verify_interpass_invariants): New static function.
19712         (execute_one_pass): Call it.
19713         * tree-ssa-loop-niter.c (expand_simple_operations): Ignore fold
19714         warnings.
19715         (number_of_iterations_exit, loop_niter_by_eval): Likewise.
19716         (estimate_numbers_of_iterations): Likewise.
19717         (scev_probably_wraps_p): Likewise.
19718         * tree-ssa-ccp.c: Include "toplev.h".
19719         (evaluate_stmt): Defer fold overflow warnings until we know we are
19720         going to optimize.
19721         (struct fold_stmt_r_data): Add stmt field.
19722         (fold_stmt_r): Defer fold overflow warnings until we know we
19723         optimized.
19724         (fold_stmt): Initialize stmt field of fold_stmt_r_data.
19725         (fold_stmt_inplace): Likewise.
19726         * tree-cfgcleanup.c: Include "toplev.h" rather than "errors.h".
19727         (cleanup_control_expr_graph): Defer fold overflow warnings until
19728         we know we are going to optimize.
19729         * tree-cfg.c (fold_cond_expr_cond): Likewise.
19730         * tree-ssa-threadedge.c (simplify_control_stmt_condition):
19731         Likewise.
19732         * tree-vrp.c (vrp_expr_computes_nonnegative): Call
19733         tree_expr_nonnegative_warnv_p instead of tree_expr_nonnegative_p.
19734         * tree-ssa-loop-manip.c (create_iv): Likewise.
19735         * c-typeck.c (build_conditional_expr): Likewise.
19736         (build_binary_op): Likewise.
19737         * tree-vrp.c (vrp_expr_computes_nonzero): Call
19738         tree_expr_nonzero_warnv_p instead of tree_expr_nonzero_p.
19739         (extract_range_from_unary_expr): Likewise.
19740         * simplify-rtx.c (simplify_const_relational_operation): Warn when
19741         assuming that signed overflow does not occur.
19742         * c-common.c (pointer_int_sum): Ignore fold overflow warnings.
19743         * tree.h (tree_expr_nonnegative_warnv_p): Declare.
19744         (fold_defer_overflow_warnings): Declare.
19745         (fold_undefer_overflow_warnings): Declare.
19746         (fold_undefer_and_ignore_overflow_warnings): Declare.
19747         (fold_deferring_overflow_warnings_p): Declare.
19748         (tree_expr_nonzero_warnv_p): Declare.
19749         * doc/invoke.texi (Option Summary): Add -Wstrict-overflow to list
19750         of warning options.
19751         (Warning Options): Document -Wstrict-overflow.
19752         * Makefile.in (tree-ssa-threadedge.o): Depend on toplev.h.
19753         (tree-ssa-ccp.o): Likewise.
19754         (tree-cfgcleanup.o): Change errors.h dependency to toplev.h.
19755         (fold-const.o): Depend on intl.h.
19756
19757 2007-02-13  Ian Lance Taylor  <iant@google.com>
19758
19759         PR middle-end/30751
19760         * lower-subreg.c (resolve_simple_move): Decompose subregs in
19761         addresses.
19762
19763 2007-02-13  Stuart Hastings  <stuart@apple.com>
19764
19765         * config/i386/i386.md (fixuns_truncdfhi2): Require SSE2.
19766
19767 2007-02-13  Richard Henderson  <rth@redhat.com>
19768
19769         * config/alpha/alpha.c (alpha_stdarg_optimize_hook): Strip
19770         handled_component_p before looking for the indirect_ref.
19771
19772 2007-02-13  Richard Henderson  <rth@redhat.com>
19773
19774         * config/i386/i386.md (bswapsi_1): Rename from bswapsi2,
19775         remove flags clobber.
19776         (bswapsi2): New expander, emit code for !TARGET_BSWAP.
19777         (bswaphi_lowpart): New.
19778         (bswapdi2): Rename from bswapdi2_rex, remove flags clobber,
19779         remove TARGET_BSWAP test.  Delete expander of the same name.
19780
19781         * optabs.c (widen_bswap, expand_doubleword_bswap): New.
19782         (expand_unop): Use them.
19783
19784 2007-02-13  Uros Bizjak  <ubizjak@gmail.com>
19785
19786         * config/i386/i386.md (cmpdi_ccno_1_rex64, *cmpsi_ccno_1,
19787         *cmphi_ccno_1, *cmpqi_ccno_1, *movsi_xor, *movstricthi_xor,
19788         *movstrictqi_xor, *movdi_xor_rex64, *ashldi3_1_rex64,
19789         *ashldi3_cmp_rex64, *ashldi3_cconly_rex64, ashlsi3, *ashlsi3_1_zext,
19790         *ashlsi3_cmp, *ashlsi3_cconly, *ashlsi3_cmp_zext, *ashlhi3_1_lea,
19791         *ashlhi3_1, *ashlhi3_cmp, *ashlhi3_cconly, *ashlqi3_1_lea,
19792         *ashlqi3_1, *ashlqi3_cmp, *ashlqi3_cconly): Remove equivalent
19793         assembler dialect choice from asm templates.
19794
19795 2007-02-12  Richard Henderson  <rth@redhat.com>
19796
19797         * config/i386/i386.md (fixuns_trunc<SSEMODEF>si_1): New insn.
19798         (fixuns_trunc<SSEMODEF>si2): Use it.
19799         * config/i386/sse.md (vec_setv4sf_0): Export.
19800         * config/i386/i386.c (ix86_build_const_vector): Export.
19801         (ix86_split_convert_uns_si_sse): Rename from
19802         ix86_expand_convert_uns_si_sse and rewrite as a splitter.
19803         * config/i386/i386-protos.h: Update.
19804
19805 2007-02-13  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
19806
19807         PR c/29521
19808         * c-typeck.c (c_finish_return): Improve warning message.
19809
19810 2007-02-12  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
19811
19812         * alias.c (find_symbolic_term): Delete unused function.
19813
19814 2007-02-12  Uros Bizjak  <ubizjak@gmail.com>
19815
19816         * config/i386/i386.md (paritydi2, paritysi2): New expanders.
19817         (paritydi2_cmp, paritydi2_cmp): New insn and split patterns.
19818         (*parityhi2_cmp, *parityqi2_cmp): New insn patterns.
19819
19820 2007-02-12  Eric Botcazou  <ebotcazou@adacore.com>
19821
19822         * tree.h (DECL_IGNORED_P): Document further effect for FUNCTION_DECL.
19823         * cgraphunit.c (cgraph_expand_function): If DECL_IGNORED_P is set on
19824         the function, temporarily point the debug interface to the null one.
19825
19826 2007-02-12  Eric Botcazou  <ebotcazou@adacore.com>
19827
19828         * dwarf2out.c (round_up_to_align): New static function.
19829         (field_byte_offset): Use it to round the offset.
19830
19831 2007-02-12  Richard Henderson  <rth@redhat.com>
19832
19833         * config/alpha/alpha.md (bswapsi2, bswapdi2): New.
19834         (inswl_const): Export.
19835
19836 2007-02-12  Richard Henderson  <rth@redhat.com>
19837
19838         * calls.c (emit_library_call_value_1): If PROMOTE_MODE modifed the
19839         result mode of the libcall, convert back to outmode.
19840
19841 2007-02-12  Roger Sayle  <roger@eyesopen.com>
19842
19843         * config/i386/i386.md (*bswapdi2_rex): Renamed from bswapdi2.
19844         (bswapdi2): New define_expand to implement 32-bit implementation.
19845
19846 2007-02-12  Nick Clifton  <nickc@redhat.com>
19847
19848         * doc/invoke.texi (Overall Options): Document --help=.
19849         * gcc.c (target_help_flag): Rename to print_subprocess_flag.
19850         (cc1_options): Pass --help= on to cc1.
19851         (display_help): Add description of --help=.
19852         (process_command): Add code to handle --help=.  Allow translated
19853         --help and --target-help switches to be passed on to compiler
19854         sub-process.
19855         (main): Remove unused if statement.
19856         * opts.c (columns): Remove.
19857         (LEFT_COLUMN): Define.
19858         (wrap_help): Add columns argument.
19859         (print_filtered_help): Change parameters to be an include bitmask,
19860         an exclude bitmask, an any bitmask and the column width.  Move the
19861         code to display the params list here.  Add code to display the
19862         status of options rather than their descriptions if the quiet flag
19863         is not active.
19864         (print_specific_help): Change parameters to be an include bitmask,
19865         an exclude bitmask and an any bitmask.  Move code to look up the
19866         column width here.  Decide upon the title for an options listing.
19867         (common_handle_options): Add code to handle --help=.  Adapt code
19868         for --help and --target-help to use the revised form of the
19869         print_specific_help function.
19870         (print_help): Delete.
19871         (print_param_help): Delete.
19872         (print_switch): Delete.
19873         * opts.h (cl_lang_count): Add prototype.
19874         (CL_PARAMS, CL_WARNING, CL_OPTIMIZATION, CL_MIN_OPTION_CLASS,
19875         CL_MAX_OPTION_CLASS): New defines.
19876         * optc-gen.awk: Add construction of cl_lang_count.
19877         * c.opt: Add Warning attribute to warning options and Optimization
19878         attribute to optimization options.
19879         * common.opt: Likewise.
19880         Add --help=.
19881         Add -fhelp and -ftarget-help as aliases for the transformed --help
19882         and --target-help options.
19883         * opt-functions.awk: Add code to handle Warning and Optimization
19884         attributes.
19885
19886 2007-02-12  Richard Henderson  <rth@redhat.com>
19887
19888         * config/alpha/constraints.md: New file.
19889         * config/alpha/alpha.c: Include tm-constrs.h.
19890         (alpha_const_ok_for_letter_p, alpha_const_double_ok_for_letter_p,
19891         alpha_extra_constraint): Remove.
19892         (alpha_emit_conditional_branch): Use satisfies_constraint_*.
19893         * config/alpha/alpha-protos.h: Update.
19894         * config/alpha/alpha.h (REG_CLASS_FROM_LETTER): Remove.
19895         (CONST_OK_FOR_LETTER_P, CONST_DOUBLE_OK_FOR_LETTER_P): Remove.
19896         (EXTRA_CONSTRAINT): Remove.
19897         * config/alpha/alpha.md: Include constraints.md.
19898         (adddi splitter): Use satisfies_constraint_*.
19899         * config/alpha/predicates.md (add_operand): Likewise.
19900         (sext_add_operand, addition_operation): Likewise.
19901
19902 2007-02-12  Dorit Nuzman  <dorit@il.ibm.com>
19903
19904         PR tree-optimization/29145
19905         * tree-data-ref.c (base_addr_differ_p): Make us more conservative
19906         in our handling of restrict qualified pointers.
19907
19908 2007-02-12  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
19909
19910         PR middle-end/7651
19911         * doc/invoke.texi (Wunused-value): Update description.
19912         (Wextra): Delete item.
19913         * opts.c (set_Wextra): Don't use the value of Wextra to set the
19914         value of Wunused-value.
19915         * c-typeck.c (c_process_expr_stmt): Don't check extra_warnings.
19916         (c_finish_stmt_expr): Don't check extra_warnings.
19917         (emit_side_effect_warnings): The caller is responsible to check
19918         warn_unused_value.
19919
19920 2007-02-11  Roger Sayle  <roger@eyesopen.com>
19921             Matt Thomas  <matt@3am-software.com>
19922
19923         * simplify-rtx.c (simplify_relational_operation_1): Correct typo.
19924
19925 2007-02-11  Roger Sayle  <roger@eyesopen.com>
19926
19927         * simplify-rtx.c (simplify_relational_operation_1): Optimize
19928         comparisons of POPCOUNT against zero.
19929         (simplify_const_relational_operation): Likewise.
19930
19931 2007-02-11  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
19932
19933         * doc/invoke.texi (Wextra): Delete outdated paragraph.
19934
19935 2007-02-11  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
19936
19937         * dwarf2out.c (root_type): Delete unused function.
19938
19939 2007-02-11  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
19940
19941         * genattrtab.c (contained_in_p): Delete unused function.
19942         (write_expr_attr_cache): Likewise.
19943
19944 2007-02-11  Jan Hubicka  <jh@suse.cz>
19945
19946         * ipa-inline.c (cgraph_edge_badness): Add "else" missing in the
19947         previous patch.
19948
19949 2007-02-11  Steven Bosscher  <steven@gcc.gnu.org>
19950
19951         * fwprop.c (try_fwprop_subst): Use set_unique_reg_note
19952         to add the REG_EQ* note.
19953         * see.c (see_merge_one_use_extension): Likewise.
19954         * local-alloc.c (update_equiv_regs): Likewise.  Also don't
19955         turn REG_EQUAL notes into REG_EQUIV notes if the target
19956         register may have more than one set.
19957         * function.c (assign_parm_setup_reg): Use set_unique_reg_note.
19958         * gcse.c (try_replace_reg): Likewise.
19959         * alias.c (init_alias_analysis): Use find_reg_equal_equiv_note.
19960         * calls.c (fixup_tail_calls): Likewise.  Abort if there is
19961         more than one REG_EQUIV note.
19962         * reload1.c (gen_reload): Use set_unique_reg_note.
19963
19964 2007-02-11  Uros Bizjak  <ubizjak@gmail.com>
19965
19966         * config/i386/i386.c (TARGET_VECTORIZE_BUILTIN_CONVERSION): Define.
19967         (ix86_builtin_conversion): New function.
19968
19969 2007-02-06  Mark Mitchell  <mark@codesourcery.com>
19970
19971         PR target/29487
19972         * tree.h (DECL_REPLACEABLE_P): New macro.
19973         * except.c (set_nothrow_function_flags): Likewise.
19974
19975 2007-02-11  Tehila Meyzels  <tehila@il.ibm.com>
19976             Ira Rosen  <irar@il.ibm.com>
19977             Dorit Nuzman  <dorit@il.ibm.com>
19978
19979         * doc/tm.texi (TARGET_VECTORIZE_BUILTIN_CONVERSION): New target hook.
19980         * targhooks.c (default_builtin_vectorized_conversion): New.
19981         * targhooks.h (default_builtin_vectorized_function): New declaration.
19982         * target.h (struct vectorize): Add builtin_conversion field.
19983         * tree-vectorizer.h (type_conversion_vec_info_type): New enum
19984         stmt_vec_info_type value.
19985         (vectorizable_conversion): New declaration.
19986         * tree-vect-analyze.c (vect_analyze_operations): Add
19987         vectorizable_conversion call.
19988         * target-def.h (TARGET_VECTORIZE_BUILTIN_CONVERSION): New.
19989         * tree-vect-transform.c (vectorizable_conversion): New function.
19990         (vect_transform_stmt): Add case for type_conversion_vec_info_type.
19991         * tree-vect-generic.c (expand_vector_operations_1): Consider correct
19992         mode.
19993         * config/rs6000/rs6000.c (rs6000_builtin_conversion): New.
19994         (TARGET_VECTORIZE_BUILTIN_CONVERSION): Defined.
19995         (rs6000_expand_builtin): Add handling a case of ALTIVEC_BUILTIN_VCFUX
19996         or ALTIVEC_BUILTIN_VCFSX.
19997
19998 2007-02-10  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
19999
20000         PR target/30634
20001         * pa.md (movdf): For 64-bit target, fail if operand 1 is a non-zero
20002         CONST_DOUBLE and operand 0 is a hard register.
20003         (movdi): For 64-bit target, remove code to force CONST_DOUBLE to
20004         memory.  Fail if operand 1 is a non-zero CONST_INT and operand 0
20005         is a hard floating-point register.
20006
20007 2007-02-10  Richard Henderson  <rth@redhat.com>
20008             Jakub Jelinek  <jakub@redhat.com>
20009             Alexandre Oliva  <aoliva@redhat.com>
20010
20011         * Makefile.in (libgcc-support, libgcc.mvars): Add emutls.c.
20012         * builtin-types.def (BT_WORD): Make unsigned.
20013         (BT_FN_VOID_PTR_WORD_WORD_PTR): New.
20014         * builtins.def (BUILT_IN_EMUTLS_GET_ADDRESS): New.
20015         (BUILT_IN_EMUTLS_REGISTER_COMMON): New.
20016         * c-decl.c (grokdeclarator): Don't error if !have_tls.
20017         * c-parser.c (c_parser_omp_threadprivate): Likewise.
20018         * dwarf2out.c (loc_descriptor_from_tree_1): Don't do anything for
20019         emulated tls.
20020         * expr.c (emutls_var_address): New.
20021         (expand_expr_real_1): Expand emulated tls.
20022         (expand_expr_addr_expr_1): Likewise.
20023         * libgcc-std.ver: Add __emutls_get_address, __emutls_register_common.
20024         * output.h (emutls_finish): Declare.
20025         * toplev.c (compile_file): Call it.
20026         * tree-ssa-address.c (gen_addr_rtx): Check for const-ness of the
20027         address before wrapping in CONST.
20028         * varasm.c (emutls_htab, emutls_object_type): New.
20029         (EMUTLS_VAR_PREFIX, EMUTLS_TMPL_PREFIX): New.
20030         (get_emutls_object_name, get_emutls_object_type): New.
20031         (get_emutls_init_templ_addr, emutls_decl): New.
20032         (emutls_common_1, emutls_finish): New.
20033         (assemble_variable): When emulating tls, swap decls; generate
20034         constructor for the emutls objects.
20035         (do_assemble_alias): When emulating tls, swap decl and target name.
20036         (default_encode_section_info): Don't add SYMBOL_FLAG_TLS_SHIFT
20037         for emulated tls.
20038         * varpool.c (decide_is_variable_needed): Look at force_output.
20039         Recurse for emulated tls.
20040         (cgraph_varpool_remove_unreferenced_decls): Remove checks redundant
20041         with decide_is_variable_needed.
20042         * emutls.c: New file.
20043         * config/sparc/sol2.h (ASM_DECLARE_OBJECT_NAME): Only emit
20044         tls_object for real tls.
20045
20046 2007-02-10  Kaz Kojima  <kkojima@gcc.gnu.org>
20047
20048         PR rtl-optimization/29599
20049         * reload1.c (eliminate_regs_in_insn): Take the destination
20050         mode into account when computing the offset.
20051
20052 2007-02-09  Stuart Hastings  <stuart@apple.com>
20053             Richard Henderson  <rth@redhat.com>
20054
20055         * config/i386/i386.h (TARGET_KEEPS_VECTOR_ALIGNED_STACK): New.
20056         * config/i386/darwin.h: (TARGET_KEEPS_VECTOR_ALIGNED_STACK): New.
20057         * config/i386/i386.md (fixuns_trunc<mode>si2, fixuns_truncsfhi2,
20058         fixuns_truncdfhi2): New.
20059         (fix_truncsfdi_sse): Call ix86_expand_convert_sign_didf_sse.
20060         (floatunsdidf2): Call ix86_expand_convert_uns_didf_sse.
20061         (floatunssisf2): Add call to ix86_expand_convert_uns_sisf_sse.
20062         (floatunssidf2): Allow nonimmediate source.
20063         * config/i386/sse.md (movdi_to_sse): New.
20064         (vec_concatv2di): Drop '*'.
20065         * config/i386/i386-protos.h (ix86_expand_convert_uns_si_sse,
20066         ix86_expand_convert_uns_didf_sse, ix86_expand_convert_uns_sidf_sse,
20067         ix86_expand_convert_uns_sisf_sse, ix86_expand_convert_sign_didf_sse):
20068         New.
20069         * config/i386/i386.c (ix86_expand_convert_uns_si_sse,
20070         ix86_expand_convert_uns_didf_sse, ix86_expand_convert_uns_sidf_sse,
20071         ix86_expand_convert_uns_sisf_sse, ix86_expand_convert_sign_didf_sse,
20072         ix86_build_const_vector, ix86_expand_vector_init_one_nonzero): New.
20073         (ix86_build_signbit_mask): Fix decl of v, refactor to call
20074         ix86_build_const_vector.
20075         (x86_emit_floatuns): Rewrite.
20076
20077 2007-02-10  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
20078
20079         * genautomata.c (longest_path_length): Delete unused function.
20080         (struct state): Delete unused longest_path_length.
20081         (UNDEFINED_LONGEST_PATH_LENGTH): Delete unused macro.
20082         (get_free_state): Delete unused.
20083
20084 2007-02-09  Jan Hubicka  <jh@suse.cz>
20085
20086         * params.def (PARAM_INLINE_UNIT_GROWTH): Set to 30.
20087         * doc/invoke.texi (inline-unit-growth): Update default value.
20088
20089         * Makefile.in (passes.o, ipa-inline.o): Add dependencies.
20090         * cgraphbuild.c (build_cgraph_edges): Compute frequencies.
20091         (rebuild_cgraph_edges): Likewise.
20092         * cgraph.c (cgraph_set_call_stmt): Add new argument frequency.
20093         (dump_cgraph_node): Dump frequencies.
20094         (cgraph_clone_edge): Add frequency scales.
20095         (cgraph_clone_node): Add freuqnecy.
20096         * cgraph.h (cgraph_edge): Add freuqnecy argument.
20097         (CGRAPH_FREQ_BASE, CGRAPH_FREQ_MAX): New constants.
20098         (cgraph_create_edge, cgraph_clone_edge, cgraph_clone_node): Update.
20099         * tree-pass.h (TODO_rebuild_frequencies): New constant.
20100         * cgraphunit.c (verify_cgraph_node): Verify frequencies.
20101         (cgraph_copy_node_for_versioning): Update call of cgraph_clone_edge.
20102         (save_inline_function_body): Likewise.
20103         * ipa-inline.c: inluce rtl.h
20104         (cgraph_clone_inlined_nods): Update call of cgraph_clone_node.
20105         (cgraph_edge_badness): Use frequencies.
20106         (cgraph_decide_recursive_inlining): Update clonning.
20107         (cgraph_decide_inlining_of_small_function): Dump frequency.
20108         * predict.c (estimate_bb_frequencies): Export.
20109         * predict.h (estimate_bb_frequencies): Declare.
20110         * tree-inline.c (copy_bb): Watch overflows.
20111         (expand_call_inline): Update call of cgraph_create_edge.
20112         (optimize_inline_calls): Use TODO flags to update frequnecies.
20113         * passes.h: Include predict.h
20114         (init_optimization_passes): Move profile ahead.
20115         (execute_function_todo): Handle TODO_rebuild_frequencies.
20116
20117 2007-02-09  Roger Sayle  <roger@eyesopen.com>
20118
20119         * config/alpha/alpha.c (emit_insxl): Force the first operand of
20120         the insbl or inswl pattern into a register.
20121
20122 2007-02-09  Roger Sayle  <roger@eyesopen.com>
20123
20124         * config/ia64/ia64.md (bswapdi2): New define_insn.
20125
20126 2007-02-09  Richard Henderson  <rth@redhat.com>
20127
20128         * config/i386/constraints.md (Ym): New constraint.
20129         * config/i386/i386.md (movsi_1): Change Y2 to Yi constraints.
20130         (movdi_1_rex64): Split sse and xmm general register moves from
20131         memory move alternatives.  Use conditional register constraints.
20132         (movsf_1, movdf_integer): Likewise.
20133         (zero_extendsidi2_32, zero_extendsidi2_rex64): Likewise.
20134         (movdf_integer_rex64): New.
20135         (pushsf_rex64): Fix output constraints.
20136         * config/i386/sse.md (sse2_loadld): Split rm alternative, use Yi.
20137         (sse2_stored): Likewise.
20138         (sse2_storeq_rex64): New.
20139         * config/i386/i386.c (x86_inter_unit_moves): Enable for not
20140         amd and not generic.
20141         (ix86_secondary_memory_needed): Don't bypass TARGET_INTER_UNIT_MOVES
20142         for optimize_size.  Remove SF/DFmode hack.
20143
20144 2007-02-09  Dwarakanath Rajagopal  <dwarak.rajagopal@amd.com>
20145
20146         * config/i386/driver-i386.c: Turn on -mtune=native for AMDFAM10.
20147         (bit_SSE4a): New.
20148
20149 2007-02-09  Nathan Sidwell  <nathan@codesourcery.com>
20150             Richard Sandiford  <richard@codesourcery.com>
20151
20152         * config.gcc (m68010-*-netbsdelf*, m68k*-*-netbsdelf*)
20153         (m68k*-*-openbsd*, m68k-*-linux*): Set default_cf_cpu.
20154         (m68k-*-aout*, m68k-*-coff*, m68k-*-uclinux*, m68k-*-rtems*): Add
20155         m68k/t-mlib to tmake_file.
20156         (m68020-*-elf*, m68k-*-elf*): Likewise.  Add t-m68kbare as well.
20157         (m68k*-*-*): Use --with-arch to pick a default for --with-cpu.
20158         (m680[012]0-*-*, m68k*-*-*): Add support for --with-arch.
20159         Allow it to be cf or m68k.  Set m68k_arch_family.  If that
20160         variable is not empty, add t-$m68k_arch_family to tmake_file.
20161         Add t-mlibs to tmake_file.
20162         * doc/install.texi: Document --with-arch=m68k and --with-arch=cf.
20163         * config/m68k/t-cf: New file.
20164         * config/m68k/t-m68k: Likewise.
20165         * config/m68k/t-mlibs: Likewise.
20166         * config/m68k/t-m68kbare (MULTILIB_OPTIONS, MULTILIB_DIRNAMES)
20167         (MULTILIB_MATCHES, MULTILIB_EXCEPTIONS): Delete.
20168         (M68K_MLIB_DIRNAMES, M68K_MLIB_OPTIONS): Define.
20169         * config/m68k/t-m68kelf (MULTILIB_OPTIONS, MULTILIB_DIRNAMES)
20170         (MULTILIB_MATCHES, MULTILIB_EXCEPTIONS, LIBGCC, INSTALL_LIBGCC):
20171         Delete.
20172         * config/m68k/t-openbsd (MULTILIB_OPTIONS, LIBGCC): Delete.
20173         (INSTALL_LIBGCC): Delete.
20174         (M68K_MLIB_DIRNAMES, M68K_MLIB_OPTIONS): Define.
20175         * config/m68k/t-rtems (MULTILIB_OPTIONS, MULTILIB_DIRNAMES)
20176         (MULTILIB_MATCHES, MULTILIB_EXCEPTIONS): Delete.
20177         (M68K_MLIB_CPU): Define.
20178         * config/m68k/t-uclinux (MULTILIB_OPTIONS, MULTILIB_DIRNAMES)
20179         (MULTILIB_MATCHES, MULTILIB_EXCEPTIONS): Delete.
20180         (M68K_MLIB_CPU, M68K_MLIB_OPTIONS, M68K_MLIB_DIRNAMES): Define.
20181
20182 2007-02-09  Zdenek Dvorak  <dvorakz@suse.cz>
20183             Richard Guenther  <rguenther@suse.de>
20184
20185         PR middle-end/23361
20186         * fold-const.c (fold_comparison): Handle obfuscated comparisons
20187         against INT_MIN/INT_MAX.
20188         * tree-ssa-loop-ivcanon.c (remove_empty_loop): Print to dump
20189         file if a loop is removed.
20190
20191 2007-02-09  Joseph Myers  <joseph@codesourcery.com>
20192
20193         * calls.c (store_one_arg): Pass correct alignment to
20194         emit_push_insn for non-BLKmode values.
20195         * expr.c (emit_push_insn): If STRICT_ALIGNMENT, copy to an
20196         unaligned stack slot via a suitably aligned slot.
20197
20198 2007-02-08  DJ Delorie  <dj@redhat.com>
20199
20200         * config/m32c/m32c.c (m32c_unpend_compare): Add default to silence
20201         warnings.
20202         (legal_subregs): Use unsigned char, make const.
20203         (m32c_illegal_subreg_p): Use ARRAY_SIZE.  Delete unused variables.
20204
20205 2007-02-08  Paul Brook  <paul@codesourcery.com>
20206
20207         * config/arm/lib1funcs.asm (RETLDM): Pop directly into PC when no
20208         special interworking needed.
20209
20210 2007-02-08  Harsha Jagasia  <harsha.jagasia@amd.com>
20211
20212         * config/i386/xmmintrin.h: Make inclusion of emmintrin.h
20213         conditional to __SSE2__.
20214         (Entries below should have been added to first ChangeLog
20215         entry for amdfam10 dated 2007-02-05)
20216         * config/i386/emmintrin.h: Generate #error if __SSE2__ is not
20217         defined.
20218         * config/i386/pmmintrin.h: Generate #error if __SSE3__ is not
20219         defined.
20220         * config/i386/tmmintrin.h: Generate #error if __SSSE3__ is not
20221         defined.
20222
20223 2007-02-08  DJ Delorie  <dj@redhat.com>
20224
20225         * config/m32c/m32c-protos.h (m32c_illegal_subreg_p): New.
20226         * config/m32c/m32c.c (legal_subregs): New.
20227         (m32c_illegal_subreg_p): New.
20228         * config/m32c/predicates.md (m32c_any_operand): Use it to reject
20229         unsupported subregs of hard regs.
20230
20231 2007-02-08  Jan Hubicka  <jh@suse.cz>
20232
20233         * tree-cfg.c (bsi_replace): Shortcut when replacing the statement with
20234         the same one; always update histograms.
20235
20236 2007-02-08  Diego Novillo  <dnovillo@redhat.com>
20237
20238         * passes.c (init_optimization_passes): Tidy comment.
20239
20240 2007-02-08  Roger Sayle  <roger@eyesopen.com>
20241
20242         * simplify-rtx.c (simplify_unary_operation_1) <POPCOUNT>: We can
20243         strip zero_extend, bswap and rotates from POCOUNT's argument.
20244         <PARITY>: Likewise, we can strip not, bswap, sign_extend,
20245         zero_extend and rotates from PARITY's argument.
20246         <BSWAP>: A byte-swap followed by a byte-swap is an identity.
20247         (simplify_const_unary_operation) <BSWAP>: Evaluate the byte-swap
20248         of an integer constant at compile-time.
20249
20250 2007-02-08  Diego Novillo  <dnovillo@redhat.com>
20251
20252         PR 30562
20253         * tree-flow.h (struct var_ann_d): Remove field 'is_used'.
20254         Update all users.
20255         * tree-ssa-alias.c (compute_is_aliased): Remove.  Update all
20256         users.
20257         (init_alias_info):
20258         * tree-ssa-live.c (remove_unused_locals): Do not remove
20259         TREE_ADDRESSABLE variables.
20260         * tree-ssa-structalias.c (compute_points_to_sets): Tidy.
20261         * tree-ssa-operands.c (add_virtual_operand): Remove argument
20262         FOR_CLOBBER.  Update all users.
20263         If VAR has an associated alias set, add a virtual operand for
20264         it if no alias is found to conflict with the memory reference.
20265
20266 2007-02-07  Jan Hubicka  <jh@suse.cz>
20267             Robert Kidd <rkidd@crhc.uiuc.edu>
20268
20269         * value-prof.c (visit_hist, free_hist): Return 1 instead of 0.
20270
20271 2007-02-07  Ian Lance Taylor  <iant@google.com>
20272
20273         * lower-subreg.c (simple_move): Reject PARTIAL_INT modes.
20274
20275 2007-02-07  Roger Sayle  <roger@eyesopen.com>
20276
20277         * config/rs6000/rs6000.md (ctz<mode>2, ffs<mode>2, popcount<mode>2,
20278         parity<mode>2, smulsi3_highpart, abstf2_internal, allocate_stack,
20279         tablejumpdi, movsi_to_cr_one): Remove constraints from
20280         define_expand's match_operands.
20281
20282 2007-02-07  Roger Sayle  <roger@eyesopen.com>
20283
20284         * global.c (compute_regsets): Move declatation of "i" inside of
20285         #ifdef ELIMINABLE_REGS to avoid unused variable bootstrap failure.
20286
20287 2007-02-07  Jakub Jelinek  <jakub@redhat.com>
20288
20289         PR c++/30703
20290         * gimplify.c (gimplify_scan_omp_clauses): Remove special casing
20291         of INDIRECT_REF <RESULT_DECL>.
20292
20293         * config/i386/i386.c (override_options): Set PTA_SSSE3 for core2.
20294
20295 2007-02-06  J"orn Rennecke  <joern.rennecke@arc.com>
20296             Kaz Kojima  <kkojima@gcc.gnu.org>
20297
20298         PR target/29746
20299         * config/sh/sh.c (expand_cbranchdi4): Use scratch register
20300         properly.
20301         (sh_initialize_trampoline): Add parentheses to avoid a warning.
20302
20303 2007-02-06  Zdenek Dvorak <dvorakz@suse.cz>
20304
20305         * doc/loop.texi: Document possibility not to perform disambiguation
20306         of loops with multiple latches.
20307         * cfgloopmanip.c (alp_enum_p): Removed.
20308         (add_loop): Handle subloops.  Use get_loop_body_with_size.
20309         (create_preheader): Do not allow ENTRY_BLOCK_PTR to be preheader.
20310         * cfghooks.c (redirect_edge_and_branch_force): Set dominator for
20311         the new forwarder block.
20312         (make_forwarder_block): Only call new_bb_cbk if it is not NULL.
20313         Handle the case latch is NULL.
20314         * tree-ssa-dom.c (tree_ssa_dominator_optimize): Avoid cfg
20315         modifications when marking loop exits.
20316         * ifcvt.c (if_convert): Ditto.  Mark loop exits even if cfg cannot
20317         be modified.
20318         * loop-init.c (loop_optimizer_init): Do not modify cfg.  Call
20319         disambiguate_loops_with_multiple_latches.
20320         * tree-cfgcleanup.c (cleanup_tree_cfg_loop): Calculate dominators
20321         before fix_loop_structure.
20322         * cfgloop.c: Include pointer-set.h and output.h.
20323         (canonicalize_loop_headers, HEADER_BLOCK, LATCH_EDGE,
20324         update_latch_info, mfb_keep_just, mfb_keep_nonlatch): Removed.
20325         (get_loop_latch_edges, find_subloop_latch_edge_by_profile,
20326         find_subloop_latch_edge_by_ivs, find_subloop_latch_edge,
20327         mfb_redirect_edges_in_set, form_subloop, merge_latch_edges,
20328         disambiguate_multiple_latches, get_loop_body_with_size,
20329         disambiguate_loops_with_multiple_latches): New functions.
20330         (flow_loop_dump): Dump multiple latch edges.
20331         (flow_loop_nodes_find): Handle loops with multiple latches.
20332         (flow_loops_find): Ditto. Do not call canonicalize_loop_headers.
20333         (glb_enum_p): Modified.
20334         (get_loop_body): Use get_loop_body_with_size.
20335         * cfgloop.h (LOOPS_HAVE_RECORDED_EXITS): New flag.
20336         (AVOID_CFG_MODIFICATIONS): New constant.
20337         (disambiguate_loops_with_multiple_latches, add_loop,
20338         get_loop_body_with_size): Declare.
20339         * Makefile.in (cfgloop.o): Add pointer-set.h and output.h.
20340
20341 2007-02-06  Seongbae Park <seongbae.park@gmail.com>
20342
20343         PR inline-asm/28686
20344         * global.c (compute_regsets): New function.
20345         (global_alloc): Refactored ELIMINABLE_REGSET
20346         and NO_GLOBAL_ALLOC_REGS computation out.
20347         (rest_of_handle_global_alloc): Call compute_regsets()
20348         for non-optimizing case.
20349
20350 2007-02-06  Richard Henderson  <rth@redhat.com>
20351
20352         * config/i386/constraints.md (Y2): Rename from Y.
20353         (Yi): New constraint.
20354         * config/i386/i386.md (movsi_1, movdi_2, pushdf_nointeger,
20355         pushdf_integer, movdf_nointeger, movdf_integer, zero_extendsidi2_32,
20356         zero_extendsidi2_rex64, truncxfdf2_mixed): Change Y constraints to Y2.
20357         (extendsfdf2_mixed, extendsfdf2_sse, truncdfsf_fast_mixed,
20358         truncdfsf_fast_sse, truncdfsf_mixed, fix_truncdfdi_sse,
20359         fix_truncdfsi_sse, floatsidf2_mixed, floatsidf2_sse,
20360         floatdidf2_mixed, floatdidf2_sse, absnegdf2_mixed,
20361         absnegdf2_sse, sse_setccdf, fop_df_comm_mixed, fop_df_comm_sse,
20362         fop_df_1_mixed, fop_df_1_sse): Change Y constraints to x.
20363         * config/i386/mmx.md (mov<MMXMODEI>_internal_rex64,
20364         mov<MMXMODEI>_internal, movv2sf_internal_rex64, movv2sf_internal,
20365         vec_extractv2si_1): Change Y constraints to Y2.
20366         * config/i386/sse.md (vec_setv4sf_0, vec_concatv2df, vec_dupv4si,
20367         vec_dupv2di, sse2_concatv2si, vec_concatv4si_1, vec_concatv2di):
20368         Change Y constraints to Y2.
20369         (sse2_loadld): Change Y constraints to x.
20370
20371 2007-02-06  Roger Sayle  <roger@eyesopen.com>
20372
20373         * config/rs6000/rs6000.md (popcount<mode>2): Rewrite.
20374         (parity<mode>2): New define_expand using rs6000_emit_parity.
20375         * config/rs6000/rs6000.c (rs6000_emit_popcount,
20376         rs6000_emit_parity): New functions.
20377         * config/rs6000/rs6000-protos.h (rs6000_emit_popcount,
20378         rs6000_emit_parity): Prototype here.
20379
20380 2007-02-06  Ian Lance Taylor  <iant@google.com>
20381
20382         * lower-subreg.c (simple_move_operand): Reject CONST.
20383         (resolve_clobber): Call validate_change rather than directly
20384         assigning to XEXP (pat, 0).
20385
20386 2006-02-06  Paolo Bonzini  <bonzini@gnu.org>
20387
20388         * Makefile.in (tree-ssa-loop-ivopts.o): Add pointer-set.h dependency.
20389         (tree-ssa-reassoc.o): Add pointer-set.h dependency.
20390         (tree-cfg.o): Remove hashtab.h dependency.
20391
20392         * tree-ssa-loop-ivopts.c: Include pointer-set.h.
20393         (struct ivopts_data): Change niters to pointer_map_t.
20394         (struct nfe_cache_elt, nfe_hash, nfe_eq): Delete.
20395         (niter_for_exit): Create pointer_map on demand.  Change for
20396         pointer_map API.
20397         (tree_ssa_iv_optimize_init): Initialize data->niters to NULL.
20398         (free_loop_data): Destroy data->niters if created and reset field.
20399         (tree_ssa_iv_optimize_finalize): Don't delete data->niters here.
20400         (tree_ssa_iv_optimize_loop): Check for presence of stale data.
20401
20402         * tree-ssa-reassoc.c: Include pointer-set.h.
20403         (bb_rank): Change to long *.
20404         (operand_rank): Change to pointer_map_t.
20405         (find_operand_rank): Return long, -1 if not found.  Declare as inline.
20406         (insert_operand_rank): Accept long.
20407         (operand_entry_hash, operand_entry_eq): Remove.
20408         (get_rank): Return long.  Adjust for changes above.
20409         (init_reassoc): Change rank type to long.  Adjust creation of bb_rank
20410         and operand_rank.
20411         (fini_reassoc): Delete operand_rank with pointer_map_destroy.
20412
20413         * tree-ssa-structalias.c (vi_for_tree): Change to pointer_map.
20414         (struct tree_vi, tree_vi_t, tree_vi_hash, tree_vi_eq): Delete.
20415         (insert_vi_for_tree): Rewrite for pointer_map API.  Assert argument
20416         is not NULL.
20417         (lookup_vi_for_tree): Rewrite for pointer_map API.  Return varinfo_t
20418         directly since it cannot be NULL.
20419         (get_vi_for_tree): Rewrite for pointer_map API.
20420         (find_what_p_points_to): Adjust for change to lookup_vi_for_tree.
20421         (init_alias_vars): Create vi_for_tree as pointer_map.
20422         (delete_points_to_sets): Delete vi_for_tree using pointer_map_destroy.
20423
20424         * tree-cfg.c: Don't include hashtab.h.
20425         (edge_to_cases): Declare as pointer_map.
20426         (struct edge_to_cases_elt, edge_to_cases_hash, edge_to_cases_eq):
20427         Delete.
20428         (edge_to_cases_cleanup): Rewrite as pointer_map_traverse callback.
20429         (start_recording_case_labels): Create edge_to_cases as pointer_map.
20430         (end_recoding_case_labels): Cleanup edge_to_cases manually before
20431         destroying it.
20432         (record_switch_edge): Delete.
20433         (get_cases_for_edge): Adjust for pointer_map API, inline
20434         record_switch_edge (rewritten for new API), remove goto.
20435
20436 2006-02-06  Paolo Bonzini  <bonzini@gnu.org>
20437
20438         * Makefile.in (tree-nested.o): Add pointer-set.h dependency.
20439         * tree-nested.c: Include pointer-set.h.
20440         (var_map_elt, var_map_eq, var_map_hash): Delete.
20441         (struct nesting_info): Remove GTY marker.  Change the two htab_t's
20442         to pointer_map_t's.
20443         (nesting_info_bitmap_obstack): New.
20444         (lookup_field_for_decl): Adjust for pointer_map API.
20445         (lookup_tramp_for_decl): Adjust for pointer_map API.
20446         (get_nonlocal_debug_decl): Adjust for pointer_map API.
20447         (get_local_debug_decl): Adjust for pointer_map API.
20448         (convert_nl_goto_reference): Adjust for pointer_map API.
20449         (convert_nl_goto_receiver): Adjust for pointer_map API.
20450         (create_nesting_tree): Create outside GGC space.  Create bitmap on
20451         the new obstack.  Create field_map and var_map as pointer_maps.
20452         (free_nesting_tree): Adjust for changes to create_nesting_tree.
20453         (root): Delete.
20454         (lower_nested_functions): Move root here, no need to NULL it.
20455         Initialize and release the obstack.
20456
20457 2007-02-06  Paolo Bonzini  <bonzini@gnu.org>
20458
20459         * tree.c (tree_int_map_hash, tree_int_map_eq, tree_int_map_marked_p):
20460         Remove prototypes and make them non-static.
20461         (struct tree_int_map): Remove.
20462         * tree.h (struct tree_int_map): Move here, turning TO into an
20463         unsigned int.
20464         (tree_int_map_hash, tree_int_map_eq, tree_int_map_marked_p): Declare.
20465
20466         * tree.h (TREE_COMPLEXITY): Remove.
20467         (struct tree_exp): Remove complexity field.
20468         * tree.c (build1_stat): Don't set it.
20469
20470 2007-02-06  Dorit Nuzman  <dorit@il.ibm.com>
20471             Victor Kaplansky  <victork@il.ibm.com>
20472
20473         * tree-vectorizer.c (vect_is_simple_use): Support induction.
20474         (vect_is_simple_reduction): Support reduction with induction as
20475         one of the operands.
20476         (vect_is_simple_iv_evolution): Fix formatting.
20477         * tree-vect-analyze.c (vect_mark_stmts_to_be_vectorized): Fix
20478         formatting.  Don't mark induction phis for vectorization.
20479         (vect_analyze_scalar_cycles): Analyze all inductions, then reductions.
20480         * tree-vect-transform.c (get_initial_def_for_induction): New function.
20481         (vect_get_vec_def_for_operand): Support induction.
20482         (vect_get_vec_def_for_stmt_copy): Fix formatting and add check for
20483         induction case.
20484         (vectorizable_reduction): Support reduction with induction as one of
20485         the operands.
20486         (vectorizable_type_demotion): Use def-type of stmt argument rather
20487         than dummy def-type.
20488
20489         * tree-ssa-loop.c (gate_scev_const_prop): Return the value of
20490         flag_tree_scev_cprop.
20491         * common.opt (tree-scev-cprop): New flag.
20492
20493         * tree-vect-transform.c (vect_create_destination_var): Use 'kind' in
20494         call to vect_get_new_vect_var.
20495
20496 2007-02-06  Ira Rosen  <irar@il.ibm.com>
20497
20498         * tree-vect-patterns.c (vect_recog_widen_mult_pattern): Check that
20499         vectype is not NULL.
20500         (vect_pattern_recog_1): Likewise.
20501
20502 2007-02-05  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
20503
20504         * fold-const.c (negate_expr_p): Handle CONJ_EXPR.
20505         (fold_negate_expr): Likewise.
20506
20507 2007-02-05  Alexandre Oliva  <aoliva@redhat.com>
20508
20509         PR debug/30189
20510         * dwarf2out.c (modified_type_die): Follow DECL_ORIGINAL_TYPE
20511         even if cv-qualification is the same.
20512
20513 2007-02-05  Geoffrey Keating  <geoffk@apple.com>
20514
20515         * config/rs6000/darwin-tramp.asm (__trampoline_setup): Call
20516         __enable_execute_stack on completion.
20517
20518 2007-02-05  Harsha Jagasia  <harsha.jagasia@amd.com>
20519
20520         * config/i386/athlon.md (athlon_fldxf_k8, athlon_fld_k8,
20521         athlon_fstxf_k8, athlon_fst_k8, athlon_fist, athlon_fmov,
20522         athlon_fadd_load, athlon_fadd_load_k8, athlon_fadd, athlon_fmul,
20523         athlon_fmul_load, athlon_fmul_load_k8, athlon_fsgn,
20524         athlon_fdiv_load, athlon_fdiv_load_k8, athlon_fdiv_k8,
20525         athlon_fpspc_load, athlon_fpspc, athlon_fcmov_load,
20526         athlon_fcmov_load_k8, athlon_fcmov_k8, athlon_fcomi_load_k8,
20527         athlon_fcomi, athlon_fcom_load_k8, athlon_fcom): Added amdfam10.
20528
20529 2007-02-05  Harsha Jagasia  <harsha.jagasia@amd.com>
20530
20531         * config/i386/i386.md (x86_sahf_1, cmpfp_i_mixed, cmpfp_i_sse,
20532         cmpfp_i_i387, cmpfp_iu_mixed, cmpfp_iu_sse, cmpfp_iu_387,
20533         swapsi, swaphi_1, swapqi_1, swapdi_rex64, fix_truncsfdi_sse,
20534         fix_truncdfdi_sse, fix_truncsfsi_sse, fix_truncdfsi_sse,
20535         x86_fldcw_1, floatsisf2_mixed, floatsisf2_sse, floatdisf2_mixed,
20536         floatdisf2_sse, floatsidf2_mixed, floatsidf2_sse,
20537         floatdidf2_mixed, floatdidf2_sse, muldi3_1_rex64, mulsi3_1,
20538         mulsi3_1_zext, mulhi3_1, mulqi3_1, umulqihi3_1, mulqihi3_insn,
20539         umulditi3_insn, umulsidi3_insn, mulditi3_insn, mulsidi3_insn,
20540         umuldi3_highpart_rex64, umulsi3_highpart_insn,
20541         umulsi3_highpart_zext, smuldi3_highpart_rex64,
20542         smulsi3_highpart_insn, smulsi3_highpart_zext, x86_64_shld,
20543         x86_shld_1, x86_64_shrd, sqrtsf2_mixed, sqrtsf2_sse,
20544         sqrtsf2_i387, sqrtdf2_mixed, sqrtdf2_sse, sqrtdf2_i387,
20545         sqrtextendsfdf2_i387, sqrtxf2, sqrtextendsfxf2_i387,
20546         sqrtextenddfxf2_i387): Added amdfam10_decode.
20547
20548         * config/i386/athlon.md (athlon_idirect_amdfam10,
20549         athlon_ivector_amdfam10, athlon_idirect_load_amdfam10,
20550         athlon_ivector_load_amdfam10, athlon_idirect_both_amdfam10,
20551         athlon_ivector_both_amdfam10, athlon_idirect_store_amdfam10,
20552         athlon_ivector_store_amdfam10): New define_insn_reservation.
20553         (athlon_idirect_loadmov, athlon_idirect_movstore): Added
20554         amdfam10.
20555
20556 2007-02-05  Harsha Jagasia  <harsha.jagasia@amd.com>
20557
20558         * config/i386/athlon.md (athlon_call_amdfam10,
20559         athlon_pop_amdfam10, athlon_lea_amdfam10): New
20560         define_insn_reservation.
20561         (athlon_branch, athlon_push, athlon_leave_k8, athlon_imul_k8,
20562         athlon_imul_k8_DI, athlon_imul_mem_k8, athlon_imul_mem_k8_DI,
20563         athlon_idiv, athlon_idiv_mem, athlon_str): Added amdfam10.
20564
20565 2007-02-05  Harsha Jagasia  <harsha.jagasia@amd.com>
20566
20567         * config/i386/athlon.md (athlon_sseld_amdfam10,
20568         athlon_mmxld_amdfam10, athlon_ssest_amdfam10,
20569         athlon_mmxssest_short_amdfam10): New define_insn_reservation.
20570
20571 2007-02-05  Harsha Jagasia  <harsha.jagasia@amd.com>
20572
20573         * config/i386/athlon.md (athlon_sseins_amdfam10): New
20574         define_insn_reservation.
20575         * config/i386/i386.md (sseins): Added sseins to define_attr type
20576         and define_attr unit.
20577         * config/i386/sse.md: Set type attribute to sseins for insertq
20578         and insertqi.
20579
20580 2007-02-05  Harsha Jagasia  <harsha.jagasia@amd.com>
20581
20582         * config/i386/athlon.md (sselog_load_amdfam10, sselog_amdfam10,
20583         ssecmpvector_load_amdfam10, ssecmpvector_amdfam10,
20584         ssecomi_load_amdfam10, ssecomi_amdfam10,
20585         sseaddvector_load_amdfam10, sseaddvector_amdfam10): New
20586         define_insn_reservation.
20587         (ssecmp_load_k8, ssecmp, sseadd_load_k8, seadd): Added amdfam10.
20588
20589 2007-02-05  Harsha Jagasia  <harsha.jagasia@amd.com>
20590
20591         * config/i386/athlon.md (cvtss2sd_load_amdfam10,
20592         cvtss2sd_amdfam10, cvtps2pd_load_amdfam10, cvtps2pd_amdfam10,
20593         cvtsi2sd_load_amdfam10, cvtsi2ss_load_amdfam10,
20594         cvtsi2sd_amdfam10, cvtsi2ss_amdfam10, cvtsd2ss_load_amdfam10,
20595         cvtsd2ss_amdfam10, cvtpd2ps_load_amdfam10, cvtpd2ps_amdfam10,
20596         cvtsX2si_load_amdfam10, cvtsX2si_amdfam10): New
20597         define_insn_reservation.
20598
20599         * config/i386/sse.md (cvtsi2ss, cvtsi2ssq, cvtss2si,
20600         cvtss2siq, cvttss2si, cvttss2siq, cvtsi2sd, cvtsi2sdq,
20601         cvtsd2si, cvtsd2siq, cvttsd2si, cvttsd2siq,
20602         cvtpd2dq, cvttpd2dq, cvtsd2ss, cvtss2sd,
20603         cvtpd2ps, cvtps2pd): Added amdfam10_decode attribute.
20604
20605 2007-02-05  Harsha Jagasia  <harsha.jagasia@amd.com>
20606
20607         * config/i386/athlon.md (athlon_ssedivvector_amdfam10,
20608         athlon_ssedivvector_load_amdfam10, athlon_ssemulvector_amdfam10,
20609         athlon_ssemulvector_load_amdfam10): New define_insn_reservation.
20610         (athlon_ssediv, athlon_ssediv_load_k8, athlon_ssemul,
20611         athlon_ssemul_load_k8): Added amdfam10.
20612
20613 2007-02-05  Harsha Jagasia  <harsha.jagasia@amd.com>
20614
20615         * config/i386/i386.h (TARGET_SSE_UNALIGNED_MOVE_OPTIMAL): New macro.
20616         (x86_sse_unaligned_move_optimal): New variable.
20617
20618         * config/i386/i386.c (x86_sse_unaligned_move_optimal): Enable for
20619         m_AMDFAM10.
20620         (ix86_expand_vector_move_misalign): Add code to generate movupd/movups
20621         for unaligned vector SSE double/single precision loads for AMDFAM10.
20622
20623 2007-02-05  Harsha Jagasia  <harsha.jagasia@amd.com>
20624
20625         * config/i386/i386.h (TARGET_AMDFAM10): New macro.
20626         (TARGET_CPU_CPP_BUILTINS): Add code for amdfam10.
20627         Define TARGET_CPU_DEFAULT_amdfam10.
20628         (TARGET_CPU_DEFAULT_NAMES): Add amdfam10.
20629         (processor_type): Add PROCESSOR_AMDFAM10.
20630
20631         * config/i386/i386.md: Add amdfam10 as a new cpu attribute to match
20632         processor_type in config/i386/i386.h.
20633         Enable imul peepholes for TARGET_AMDFAM10.
20634
20635         * config.gcc: Add support for --with-cpu option for amdfam10.
20636
20637         * config/i386/i386.c (amdfam10_cost): New variable.
20638         (m_AMDFAM10): New macro.
20639         (m_ATHLON_K8_AMDFAM10): New macro.
20640         (x86_use_leave, x86_push_memory, x86_movx, x86_unroll_strlen,
20641         x86_cmove, x86_3dnow_a, x86_deep_branch, x86_use_simode_fiop,
20642         x86_promote_QImode, x86_integer_DFmode_moves,
20643         x86_partial_reg_dependency, x86_memory_mismatch_stall,
20644         x86_accumulate_outgoing_args, x86_arch_always_fancy_math_387,
20645         x86_sse_partial_reg_dependency, x86_sse_typeless_stores,
20646         x86_use_ffreep, x86_use_incdec, x86_four_jump_limit,
20647         x86_schedule, x86_use_bt, x86_cmpxchg16b, x86_pad_returns):
20648         Enable/disable for amdfam10.
20649         (override_options): Add amdfam10_cost to processor_target_table.
20650         Set up PROCESSOR_AMDFAM10 for amdfam10 entry in
20651         processor_alias_table.
20652         (ix86_issue_rate): Add PROCESSOR_AMDFAM10.
20653         (ix86_adjust_cost): Add code for amdfam10.
20654
20655 2007-02-05  Harsha Jagasia  <harsha.jagasia@amd.com>
20656
20657         * config/i386/i386.opt: Add new Advanced Bit Manipulation (-mabm)
20658         instruction set feature flag. Add new (-mpopcnt) flag for popcnt
20659         instruction. Add new SSE4A (-msse4a) instruction set feature flag.
20660         * config/i386/i386.h: Add builtin definition for SSE4A.
20661         * config/i386/i386.md: Add support for ABM instructions
20662         (popcnt and lzcnt).
20663         * config/i386/sse.md: Add support for SSE4A instructions
20664         (movntss, movntsd, extrq, insertq).
20665         * config/i386/i386.c: Add support for ABM and SSE4A builtins.
20666         Add -march=amdfam10 flag.
20667         * config/i386/ammintrin.h: Add support for SSE4A intrinsics.
20668         * doc/invoke.texi: Add documentation on flags for sse4a, abm, popcnt
20669         and amdfam10.
20670         * doc/extend.texi: Add documentation for SSE4A builtins.
20671
20672 2007-02-05  Bob Wilson  <bob.wilson@acm.org>
20673
20674         * config/xtensa/xtensa.c (constantpool_mem_p): Skip over SUBREGs.
20675
20676 2007-02-05  Richard Guenther  <rguenther@suse.de>
20677
20678         * tree-vectorizer.h (vectorizable_function): Add argument type
20679         argument, change return type.
20680         * tree-vect-patterns.c (vect_recog_pow_pattern): Adjust caller.
20681         * tree-vect-transform.c (vectorizable_function): Handle extra
20682         argument, return vectorized function decl.
20683         (build_vectorized_function_call): Remove.
20684         (vectorizable_call): Handle calls with result and argument types
20685         differing.  Handle loop vectorization factor correctly.
20686         * targhooks.c (default_builtin_vectorized_function): Adjust for
20687         extra argument.
20688         * targhooks.h (default_builtin_vectorized_function): Likewise.
20689         * target.h (builtin_vectorized_function): Add argument type
20690         argument.
20691         * config/i386/i386.c (ix86_builtin_vectorized_function): Handle
20692         extra argument, allow vectorizing of lrintf.
20693         * doc/tm.texi (TARGET_VECTORIZE_BUILTIN_VECTORIZED_FUNCTION): Adjust
20694         documentation of target hook.
20695
20696 2007-02-05  Hans-Peter Nilsson  <hp@axis.com>
20697
20698         PR target/30665
20699         * config/cris/cris.md ("*andsi_movu", "*andsi_clear", "*andhi_movu")
20700         ("*andhi_clear", andu (casesi+45)): For size-changed operand where
20701         memory is allowed, require !side_effects_p, not just !MEM_VOLATILE_P.
20702
20703 2007-02-05  Roger Sayle  <roger@eyesopen.com>
20704
20705         * fold-const.c (fold_unary) <REAL_PART>: Test for availability of
20706         BUILT_IN_COS before simplifying REAL_PART(CEXPI)) to COS.
20707         <IMAG_PART>: Likewise, check for availability of BUILT_IN_SIN.
20708         * builtins.c (fold_builtin_sincos): Check for TARGET_C99_FUNCTIONS
20709         before canonicalizing sincos to cexpi.
20710         (fold_builtin_cexp): Likewise, for canonicalizing cexp to cexpi.
20711
20712 2007-02-05  Roger Sayle  <roger@eyesopen.com>
20713
20714         * config/alpha/alpha.c (alpha_add_builtins): New Helper function.
20715         Set TREE_READONLY and TREE_NOTHROW directly, not via attributes.
20716         (alpha_init_builtins): Use alpha_add_builtins to process tables.
20717
20718 2007-02-05  Roger Sayle  <roger@eyesopen.com>
20719
20720         * mips-tfile.c (initialize_init_file): Correct endianness test.
20721
20722 2007-02-05  Kazu Hirata  <kazu@codesourcery.com>
20723
20724         * config/m68k/m68k.md (pushdi-1, pushdi, movsi+1): Don't use
20725         the 'y' constraint.
20726
20727 2007-02-05  Richard Sandiford  <richard@codesourcery.com>
20728
20729         * dwarf2out.c (dwarf2out_frame_debug_expr): Record the register
20730         saves in a PARALLEL before the register assignments.
20731
20732 2007-02-05  Richard Sandiford  <richard@codesourcery.com>
20733
20734         * doc/tm.texi (DWARF_ALT_FRAME_RETURN_COLUMN): Do not require
20735         DWARF_FRAME_RETURN_COLUMN to be a general register.
20736         * dwarf2out.c (init_return_column_size): New function, split from...
20737         (expand_builtin_init_dwarf_reg_sizes): ...here.  Allow both
20738         DWARF_FRAME_RETURN_COLUMN and DWARF_ALT_FRAME_RETURN_COLUMN
20739         to be nongeneral registers.
20740         * config/m68k/m68k.h (DWARF_FRAME_REGNUM): Only map FP and
20741         integer registers.
20742         (DWARF_FRAME_REGISTERS, DWARF_FRAME_RETURN_COLUMN): Define.
20743         (DWARF_ALT_FRAME_RETURN_COLUMN): Define.
20744
20745 2007-02-04  Zdenek Dvorak <dvorakz@suse.cz>
20746
20747         * cfgcleanup.c (try_optimize_cfg): Avoid removing ENTRY_BLOCK_PTR.
20748
20749 2007-02-04  Zdenek Dvorak <dvorakz@suse.cz>
20750
20751         * cfgloopmanip.c (loop_delete_branch_edge): Removed.
20752         (remove_path): Use can_remove_branch_p and remove_branch instead
20753         of loop_delete_branch_edge.
20754         * tree-ssa-loop-manip.c (scale_dominated_blocks_in_loop): New function.
20755         (tree_transform_and_unroll_loop): Remove dead branches immediately.
20756         Update profile using scale_dominated_blocks_in_loop.
20757         * cfghooks.c (can_remove_branch_p, remove_branch): New functions.
20758         * cfghooks.h (struct cfg_hooks): Add can_remove_branch_p.
20759         (can_remove_branch_p, remove_branch): Declare.
20760         * tree-cfg.c (tree_can_remove_branch_p): New function.
20761         (tree_cfg_hooks): Add tree_can_remove_branch_p.
20762         * cfgrtl.c (rtl_can_remove_branch_p): New function.
20763         (rtl_cfg_hooks, cfg_layout_rtl_cfg_hook): Add rtl_can_remove_branch_p.
20764
20765 2007-02-05  Jan Hubicka  <jh@suse.cz>
20766
20767         PR middle-end/30696
20768         * ipa-inline.c (cgraph_clone_inlined_nodes): When there are unanalyzed
20769         nodes in cgraph, don't remove offline copy of the function.
20770
20771 2007-02-04  Jan Hubicka  <jh@suse.cz>
20772
20773         * tree-sra.c (sra_walk_expr): Add linebreaks. BITFIELD_REFs into
20774         vectors might cause maybe_lookup_element_for_expr to be called
20775         on non-sra-candidate.
20776
20777 2007-02-04  Kazu Hirata  <kazu@codesourcery.com>
20778
20779         * config/bfin/bfin-modes.def, config/bfin/bfin.c,
20780         config/bfin/bfin.md, config/bfin/predicates.md: Follow
20781         spelling conventions.
20782
20783 2007-02-04  Richard Guenther  <rguenther@suse.de>
20784
20785         PR middle-end/30636
20786         * fold-const.c (try_move_mult_to_index): Make sure to not
20787         overflow one dimension of a multi-dimensional array access.
20788
20789 2007-02-04  Jan Hubicka  <jh@suse.cz>
20790
20791         * passes.c (init_optimization_passes): Reindent.
20792
20793 2007-02-04  Jan Hubicka  <jh@suse.cz>
20794             Eric Botcazou  <ebotcazou@adacore.com>
20795
20796         * tree-optimize.c (has_abnormal_outgoing_edge_p): Move to...
20797         (execute_fixup_cfg): Break out the abnormal goto code.
20798         * tree-inline.c (has_abnormal_outgoing_edge_p): ...here.
20799         (make_nonlocal_label_edges): Move here from execute_fixup_cfg.
20800         (optimize_inline_calls): Call make_nonlocal_label_edges.
20801
20802 2007-02-04  Jan Hubicka  <jh@suse.cz>
20803
20804         * tree-ssa-copyrename.c (copy_rename_partition_coalesce): Return
20805         true when something was changed.
20806         (rename_ssa_copies): When something was changed, do
20807         TODO_remove_unused_locals.
20808         * tree-ssa-forwprop.c (tree_ssa_forward_propagate_single_use_value):
20809         add TODO_remove_unused_locals when instruction was removed.
20810
20811 2007-02-04  Jan Hubicka  <jh@suse.cz>
20812
20813         * ipa-inline.c (try_inline): Improve debug output; work on already
20814         inline edges too.
20815         (cgraph_decide_inlining_incrementally): Indent; improve debug output;
20816         call try_inline for already inlined edges too when flattening;
20817         inline also functions that make callee growth but overall unit size
20818         reduce.
20819
20820 2007-02-04  Kazu Hirata  <kazu@codesourcery.com>
20821
20822         * config/m32c/bitops.md, config/m32c/jump.md,
20823         config/m32c/m32c.c, config/m32c/m32c.h, config/m32r/m32r.c,
20824         config/m32r/m32r.h, config/m32r/m32r.md,
20825         config/m32r/predicates.md, config/m68hc11/larith.asm,
20826         config/m68hc11/m68hc11.c, config/m68hc11/m68hc11.h,
20827         config/m68k/m68k.h, config/mcore/mcore.md, config/mips/4k.md,
20828         config/mips/mips-protos.h, config/mips/mips.c,
20829         config/mips/mips.h, config/mips/mips.md, config/mips/mips16.S,
20830         config/mn10300/mn10300.h, config/mn10300/predicates.md,
20831         config/mt/mt.c, config/mt/mt.h, config/mt/mt.md: Follow
20832         spelling conventions.
20833
20834         * config/v850/v850.c, config/v850/v850.h, config/v850/v850.md:
20835         Follow spelling conventions.
20836
20837 2007-02-03  Douglas Gregor  <doug.gregor@gmail.com>
20838
20839         * c-opts.c (c_common_post_options): If C++0x mode is enabled, don't
20840         warn about C++0x compatibility.
20841
20842 2007-02-04  Kazu Hirata  <kazu@codesourcery.com>
20843
20844         * config/h8300/h8300.c, config/h8300/h8300.h,
20845         config/h8300/h8300.md: Follow spelling conventions.
20846
20847 2007-02-03  Uros Bizjak  <ubizjak@gmail.com>
20848
20849         PR middle-end/30667
20850         * combine.c (try_combine): Do not substitute source operand
20851         with constants wider than 2 * HOST_BITS_PER_WIDE_INT.
20852
20853 2007-02-03  Jan Hubicka  <jh@suse.cz>
20854
20855         PR gcov-profile/30650
20856         * value-prof.c (stringop_block_profile): Fix handling of size counter;
20857         do not divide by zero for never executed counters.
20858         (tree_find_values_to_profile): Fix counters.
20859         * gcov-ui.h (GCOV_COUNTER_AVERAGE, GCOV_COUNTER_IOR): Fix comments.
20860
20861 2007-02-03  Ian Lance Taylor  <iant@google.com>
20862
20863         * lower-subreg.c (simple_move_operand): New static function,
20864         broken out of simple_move.  Reject LABEL_REF, SYMBOL_REF, and HIGH
20865         operands.
20866         (simple_move): Call simple_move_operand.
20867         (find_decomposable_subregs): Add special handling of MEMs.
20868         (can_decompose_p): Rename from cannot_decompose_p.  Reverse
20869         meaning of return value.  If we see a hard register, test whether
20870         it can store a word_mode value.  Change all callers.
20871
20872 2007-02-03  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
20873
20874         * pa.md (addvdi3, addvsi3, subvdi3, subvsi3, negvdi2, negvsi2): New
20875         ftrapv insns and expanders.
20876         (subdi3): Change define_expand operand 1 to arith11_operand, and
20877         operand 2 to reg_or_0_operand.  Change constraints of 64-bit insn
20878         pattern to handle reg_or_0 operands.  Revise 32-bit insn pattern to
20879         handle 11-bit constants and reg_or_0 operands in operands 1 and 2,
20880         respectively.
20881
20882         PR middle-end/30174
20883         * varasm.c (notice_global_symbol): Treat global objects as weak when
20884         flag_shlib is true.
20885
20886 2007-02-03  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
20887
20888         * emit-rtl.c (dconstpi): Delete.
20889         (dconstsqrt2): New.
20890         (init_emit_once): Delete dconstpi and init dconstsqrt2.
20891         * real.h (dconstpi): Delete.
20892         (dconstsqrt2): New.
20893         * builtins.c (fold_builtin_cabs): Use dconstsqrt2.
20894         (fold_builtin_hypot): Likewise.
20895
20896 2007-02-03  Tom Tromey  <tromey@redhat.com>
20897
20898         PR driver/30246
20899         * gcc.c (cpp_unique_options): Any of -ggdb3, -gstabs3,
20900         -gcoff3, -gxcoff3, -gvms3 implies -dD.
20901
20902 2007-02-03  Kazu Hirata  <kazu@codesourcery.com>
20903
20904         * c-decl.c, config/avr/avr.c, config/avr/avr.h,
20905         config/m68k/m68k.c, config/m68k/netbsd-elf.h,
20906         config/mn10300/mn10300.c, config/pdp11/pdp11.h,
20907         config/rs6000/cell.md, config/rs6000/darwin.h,
20908         config/sh/sh.md, config/sh/sh4-300.md, config/spu/spu.c,
20909         config/spu/spu.md, cselib.c, expr.c, haifa-sched.c, hwint.h,
20910         jump.c, reload.c, sched-deps.c, sched-int.h, tree-inline.c,
20911         tree-profile.c, tree-ssa-live.h, tree-vrp.c: Fix comment
20912         typos.  Follow spelling conventions.
20913         * doc/invoke.texi: Follow spelling conventions.
20914
20915 2007-02-03  Roger Sayle  <roger@eyesopen.com>
20916
20917         * simplify-rtx.c (simplify_relational_operation_1): Implement some
20918         canonicalization transformations that attempt to simplify integer
20919         constant comparisons to become comparisons against zero.
20920
20921 2007-02-03  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
20922
20923         * builtins.c (fold_builtin_cabs): Fold cabs(x+xi) into
20924         fabs(x)*sqrt(2).
20925         * fold-const.c (fold_binary): Fix comment typos.  Fold complex
20926         (x,0)-(0,y) into (x,-y).  Likewise (0,y)-(x,0) into (-x,y).
20927
20928 2007-02-02  Mike Stump  <mrs@apple.com>
20929
20930         * config/darwin9.h (DARWIN_LINKER_GENERATES_ISLANDS): Add.
20931         * config/rs6000/rs6000.c (DARWIN_GENERATE_ISLANDS): Add.
20932         (output_call): Use DARWIN_GENERATE_ISLANDS to decide when to
20933         generate a branch island.
20934
20935 2007-02-02  Bob Wilson  <bob.wilson@acm.org>
20936
20937         * config/xtensa/xtensa.c (smalloffset_mem_p): Use BASE_REG_P.
20938         (xtensa_legitimate_address_p): New.
20939         (xtensa_legitimize_address): New.
20940         (xtensa_output_addr_const_extra): New.
20941         * config/xtensa/xtensa.h (REG_OK_STRICT_FLAG): Define.
20942         (BASE_REG_P): New.
20943         (REG_OK_FOR_BASE_P): Use BASE_REG_P.
20944         (GO_IF_LEGITIMATE_ADDRESS): Move code to xtensa_legitimate_address_p.
20945         (LEGITIMIZE_ADDRESS): Move code to xtensa_legitimize_address.
20946         (OUTPUT_ADDR_CONST_EXTRA): Move code to xtensa_output_addr_const_extra.
20947         * config/xtensa/xtensa-protos.h (xtensa_legitimate_address_p): New.
20948         (xtensa_legitimize_address): New.
20949         (xtensa_output_addr_const_extra): New.
20950
20951 2007-02-02  Steve Ellcey  <sje@cup.hp.com>
20952
20953         * config/ia64/ia64.c (ia64_print_operand): Fix compare strings.
20954
20955 2007-02-02  Ian Lance Taylor  <iant@google.com>
20956
20957         * expmed.c (expand_divmod): Add comment.
20958
20959 2007-02-02  Kazu Hirata  <kazu@codesourcery.com>
20960
20961         * emit-rtl.c (renumber_insns): Remove.
20962         * flags.h: Remove the extern for flag_renumber_insns.
20963         * rtl.h: Remove the prototype for renumber_insns.
20964         * toplev.c (flag_renumber_insns): Remove.
20965
20966 2007-02-02  Hui-May Chang  <hm.chang@apple.com>
20967
20968         Revert for x86 darwin:
20969         2005-06-19  Uros Bizjak  <uros@kss-loka.si>
20970
20971         * config/i386/i386.c (ix86_function_arg_regno_p): Put back the
20972         code before the following patch under TARGET_MACHO.
20973         (ix86_function_value_regno_p): Likewise.
20974
20975 2007-02-02  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
20976
20977         * fold-const.c (negate_expr_p, fold_negate_expr): Handle
20978         COMPLEX_EXPR.
20979
20980 2007-02-02  Maxim Kuvyrkov  <mkuvyrkov@ispras.ru>
20981
20982         PR target/29682
20983         * config/ia64/ia64.c (ia64_speculate_insn): Restrict to memory
20984         loads to general or fp registers.  Add comments.
20985         * config/ia64/ia64.md (reg_pred_prefix): Add comment.
20986
20987 2007-02-02  Paolo Bonzini  <bonzini@gnu.org>
20988
20989         * pointer-set.c (insert_aux): Only return insertion slot.
20990         (pointer_set_insert): Adjust.
20991         (pointer_set_traverse, struct pointer_map_t, pointer_map_create,
20992         pointer_map_destroy, pointer_map_insert, pointer_map_contains,
20993         pointer_map_traverse): New.
20994         * pointer-set.h (pointer_set_traverse, struct pointer_map_t,
20995         pointer_map_create,  pointer_map_destroy, pointer_map_insert,
20996         pointer_map_contains, pointer_map_traverse): Declare.
20997
20998 2007-02-02  Jakub Jelinek  <jakub@redhat.com>
20999
21000         PR middle-end/30473
21001         * builtins.c (fold_builtin_sprintf): Do not attempt to optimize
21002         sprintf (str, "%s").  Do not optimize sprintf (str, "nopercent", p++).
21003
21004 2007-02-02  Maxim Kuvyrkov  <mkuvyrkov@ispras.ru>
21005
21006         * sched-int.h (ds_to_dk, dk_to_ds): Declare functions.
21007
21008         (struct _dep): New type.
21009         (dep_t): New typedef.
21010         (DEP_PRO, DEP_CON, DEP_KIND): New access macros.
21011         (DEP_STATUS): New access macro.  The macro with the same name was
21012         renamed to DEP_LINK_STATUS.
21013         (dep_init): Declare function
21014
21015         (struct _dep_link): New type.
21016         (dep_link_t): New typedef.
21017         (DEP_LINK_NODE, DEP_LINK_NEXT, DEP_LINK_PREV_NEXTP): New access macros.
21018         (DEP_LINK_DEP, DEP_LINK_PRO, DEP_LINK_CON, DEP_LINK_KIND): New macros.
21019         (DEP_LINK_STATUS): New macro.
21020         (debug_dep_links): New debug function.
21021
21022         (struct _deps_list): New type.
21023         (deps_list_t): New typedef.
21024         (DEPS_LIST_FIRST): New access macro.
21025         (FOR_EACH_DEP_LINK): New cycle macro.
21026         (create_deps_list, free_deps_list, delete_deps_list): Declare
21027         functions.
21028         (deps_list_empty_p, debug_deps_list, add_back_dep_to_deps_list): Ditto.
21029         (find_link_by_pro_in_deps_list, find_link_by_con_in_deps_list): Ditto.
21030         (copy_deps_list_change_con): Ditto.
21031
21032         (move_dep_link): Declare function.
21033
21034         (struct _dep_node): New type.
21035         (dep_node_t): New typedef.
21036         (DEP_NODE_BACK, DEP_NODE_DEP, DEP_NODE_FORW): New access macros.
21037
21038         (struct haifa_insn_data.back_deps): New field to hold backward
21039         dependencies of the insn.
21040         (struct haifa_insn_data.depend): Rename to forw_deps.  Change its type
21041         to deps_list_t.
21042         (struct haifa_insn_data.resolved_deps): Rename to resolved_back_deps.
21043         Change its type to deps_list_t.
21044         (INSN_BACK_DEPS): New access macro to use instead of LOG_LINKS.
21045         (INSN_DEPEND): Rename to INSN_FORW_DEPS.
21046         (RESOLVED_DEPS): Rename to INSN_RESOLVED_BACK_DEPS.
21047
21048         (INSN_COST): Move to haifa-sched.c.  Use insn_cost () instead.
21049
21050         (DEP_STATUS): Rename to DEP_LINK_STATUS.  Fix typo in the comment.
21051
21052         (add_forw_dep, delete_back_forw_dep, insn_cost): Update declaration
21053         and all callers.
21054         (dep_cost): Declare.
21055
21056         * sched-deps.c (CHECK): New macro to (en/dis)able sanity checks.
21057         (ds_to_dk, dk_to_ds): New functions.
21058
21059         (init_dep_1): New static function.
21060         (init_dep): New function.
21061         (copy_dep): New static function.
21062
21063         (dep_link_consistent_p, attach_dep_link, add_to_deps_list): New static
21064         functions.
21065         (detach_dep_link): New static function.
21066         (move_dep_link): New function.
21067
21068         (dep_links_consistent_p, dump_dep_links): New static functions.
21069         (debug_dep_links): New debugging function.
21070
21071         (deps_obstack, dl_obstack, dn_obstack): New static variables.
21072
21073         (alloc_deps_list, init_deps_list): New static functions.
21074         (create_deps_list): New function.
21075         (clear_deps_list): New static function.
21076         (free_deps_list, delete_deps_list, deps_list_empty_p): New functions.
21077         (deps_list_consistent_p, dump_deps_list): New static functions.
21078         (debug_deps_list): New function.
21079         (add_back_dep_to_deps_list, find_link_by_pro_in_deps_list): New
21080         functions.
21081         (find_link_by_con_in_deps_list, copy_deps_list_change_con): Ditto.
21082
21083         (maybe_add_or_update_back_dep_1, add_or_update_back_dep_1): Update to
21084         use new scheduler dependencies lists.
21085         (add_back_dep, delete_all_dependences, fixup_sched_groups): Ditto.
21086         (sched_analyze): Ditto.  Initialize dependencies lists.
21087         (add_forw_dep, compute_forward_dependences): Update to use new
21088         scheduler dependencies lists.
21089
21090         (init_dependency_caches): Init deps_obstack.
21091         (free_dependency_caches): Free deps_obstack.
21092
21093         (adjust_add_sorted_back_dep, adjust_back_add_forw_dep): Update to use
21094         new scheduler dependencies lists.
21095         (delete_forw_dep, add_or_update_back_forw_dep): Ditto.
21096         (add_back_forw_dep, delete_back_forw_dep): Ditto.
21097
21098         * sched-rgn.c (set_spec_fed, find_conditional_protection, is_pfree):
21099         Update to use new scheduler dependencies lists.
21100         (is_conditionally_protected, is_prisky, add_branch_dependences): Ditto.
21101         (debug_dependencies): Ditto.
21102         (schedule_region): Update comments.
21103
21104         * sched-ebb.c (earliest_block_with_similiar_load): Update to use new
21105         scheduler dependencies lists.
21106         (schedule_ebb): Update comments.
21107
21108         * rtl.def (DEPS_LIST): Remove.
21109
21110         * lists.c (unused_deps_list): Remove.
21111         (free_list): Update assertions.
21112
21113         (alloc_DEPS_LIST, free_DEPS_LIST_list, free_DEPS_LIST_node): Remove.
21114         (remove_free_DEPS_LIST_elem, copy_DEPS_LIST_list): Ditto.
21115
21116         * rtl.h (free_DEPS_LIST_list, alloc_DEPS_LIST): Remove declarations.
21117         (remove_free_DEPS_LIST_elem, copy_DEPS_LIST_list): Ditto.
21118
21119         * haifa-sched.c (comments): Update.
21120         (insn_cost1): Remove.  Inline the code into insn_cost ().
21121         (insn_cost): Update to use new scheduler dependencies lists.  Move
21122         processing of the dependency cost to dep_cost ().
21123         (dep_cost): New function.  Use it instead of insn_cost () when
21124         evaluating cost of the dependency.  Use compatible interface to
21125         interact with the target.
21126         (priority): Update to use new scheduler dependencies lists.
21127         (rank_for_schedule): Ditto.  Optimize heuristic that prefers the insn
21128         with greater number of insns that depend on the insn.
21129         (schedule_insn): Update to use new scheduler dependencies lists.  Add
21130         code to free backward dependencies lists.  Inline and optimize code
21131         from resolve_dep () - see PR28071.
21132         (ok_for_early_queue_removal): Update to use new scheduler dependencies
21133         lists.  Update call to targetm.sched.is_costly_dependence hook.
21134
21135         (fix_inter_tick, try_ready, fix_tick_ready): Update to use new
21136         scheduler dependencies lists.
21137
21138         (resolve_dep): Remove.  Move the logic to schedule_insn ().
21139         (init_h_i_d): Initialize dependencies lists.
21140
21141         (process_insn_depend_be_in_spec): Rename to
21142         process_insn_forw_deps_be_in_spec.  Update to use new scheduler
21143         dependencies lists.
21144         (add_to_speculative_block, create_check_block_twin, fix_recovery_deps):
21145         Update to use new scheduler dependencies lists.
21146         (clear_priorities, calc_priorities, add_jump_dependencies): Ditto.
21147
21148         * ddg.c (create_ddg_dependence, create_ddg_dep_no_link): Update to use
21149         new scheduler dependencies lists.
21150         (build_intra_loop_deps): Ditto.
21151
21152         * target.h (struct _dep): Declare to use in
21153         gcc_target.sched.is_costly_dependence.
21154         (struct gcc_target.sched.adjust_cost): Fix typo.
21155         (struct gcc_target.sched.is_costly_dependence): Change signature to
21156         use single dep_t parameter instead of an equivalent triad.
21157         (struct gcc_target.sched.adjust_cost_2): Remove.
21158
21159         * target-def.h (TARGET_SCHED_ADJUST_COST_2): Remove.
21160
21161         * reg-notes.def (DEP_TRUE, DEP_OUTPUT, DEP_ANTI): Update comments.
21162
21163         * doc/tm.texi (TARGET_SCHED_IS_COSTLY_DEPENDENCE): Update
21164         documentation.
21165         (TARGET_SCHED_ADJUST_COST_2): Remove documentation.
21166
21167         * doc/rtl.texi (LOG_LINKS): Remove part about instruction scheduler.
21168         (REG_DEP_TRUE): Document.
21169
21170         * config/ia64/ia64.c (ia64_adjust_cost_2): Rename to ia64_adjust_cost.
21171         Change signature to correspond to the targetm.sched.adjust_cost hook.
21172         Update use in TARGET_SCHED_ADJUST_COST_2.
21173         (TARGET_SCHED_ADJUST_COST_2): Rename to TARGET_SCHED_ADJUST_COST.
21174         (ia64_dependencies_evaluation_hook, ia64_dfa_new_cycle): Update to use
21175         new scheduler dependencies lists.
21176         (ia64_gen_check): Ditto.
21177
21178         * config/mips/mips.c (vr4130_swap_insns_p): Update to use new
21179         scheduler dependencies lists.
21180
21181         * config/rs6000/rs6000.c (rs6000_is_costly_dependence): Change
21182         signature to correspond to the targetm.sched.is_costly_dependence hook.
21183         (is_costly_group): Update to use new scheduler dependencies lists.
21184
21185         * config/spu/spu.c (spu_sched_adjust_cost): Use insn_cost () function
21186         instead of INSN_COST () macro.
21187
21188 2007-02-01  Ian Lance Taylor  <iant@google.com>
21189
21190         * lower-subreg.c (resolve_clobber): Handle a subreg of a concatn.
21191
21192 2007-02-01  Guy Martin  <gmsoft@gentoo.org>
21193
21194         * pa.md (tp_load): Correct mfctl instruction syntax.
21195
21196 2007-02-01  Geoffrey Keating  <geoffk@apple.com>
21197
21198         * config/rs6000/rs6000.c (rs6000_stack_info): Correct
21199         altivec_padding_size calculation on AIX.  Improve comment, add
21200         assert to verify that it's right.
21201
21202         * config/rs6000/darwin.h (MD_UNWIND_SUPPORT): Don't define for
21203         64-bit.
21204
21205 2007-2-01  Seongbae Park  <seongbae.park@gmail.com>
21206
21207         PR inline-asm/28686
21208         * global.c (global_alloc): Add mising initialization of
21209         ELIMINABLE_REGSET.
21210
21211 2007-02-01  Roger Sayle  <roger@eyesopen.com>
21212
21213         * alias.c (init_alias_analysis): Correct whitespace.
21214         * bb-reorder.c (fix_edges_for_rarely_executed_code,
21215         partition_hot_cold_basic_blocks): Likewise.
21216         * builtins.c (expand_builtin_printf, expand_builtin_fprintf,
21217         expand_builtin_sprintf, fold_builtin_carg, fold_builtin_sprintf,
21218         maybe_emit_sprintf_chk_warning, fold_builtin_sprintf_chk,
21219         fold_builtin_snprintf_chk, fold_builtin_printf,
21220         fold_builtin_fprintf, do_mpfr_ckconv, do_mpfr_arg1, do_mpfr_arg2,
21221         do_mpfr_arg3, do_mpfr_sincos): Likewise.
21222         * cfgcleanup.c (cleanup_cfg): Likewise.
21223         * cfgexpand.c (tree_expand_cfg): Likewise.
21224         * fold-const.c (fold_binary) <RDIV_EXPR>: Likewise.
21225         * function.c (get_next_funcdef_no): Likewise.
21226         * gengtype.c (main): Likewise.
21227         * genmodes.c (main): Likewise.
21228         * gcse.c (bypass_conditional_jumps, print_ldst_list): Likewise.
21229         * haifa-sched.c (schedule_block, extend_h_i_d): Likewise.
21230         * ifcvt.c (noce_emit_move_insn): Likewise.
21231         * modulo-sched.c (generate_prolog_epilog, sms_schedule_by_order):
21232         Likewise.
21233         * stor-layout.c (get_best_mode): Likewise.
21234         * tree-ssa-loop-niter.c (get_val_for): Likewise.
21235         * tree-ssa-structalias.c (get_varinfo, get_varinfo_fc,
21236         scc_visit, do_ds_constraint, do_complex_constraint, label_visit,
21237         perform_var_substitution, solve_graph): Likewise.
21238         * tree-vrp.c (vrp_finalize): Likewise.
21239
21240 2007-02-01  Ian Lance Taylor  <iant@google.com>
21241
21242         * lower-subreg.c (simplify_gen_subreg_concatn): If we ask for the
21243         high part of a paradoxical subreg, return a constant zero.
21244
21245 2007-02-01  Zdenek Dvorak <dvorakz@suse.cz>
21246
21247         * toplev.c (lang_dependent_init): Call init_set_costs.
21248         * loop-init.c (loop_optimizer_init): Do not call init_set_costs.
21249
21250 2007-02-01  Richard Guenther  <rguenther@suse.de>
21251
21252         PR middle-end/30656
21253         * fold-const.c (fold_negate_expr): Allow negating a
21254         constant if overflow does not change.
21255
21256 2007-02-01  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
21257
21258         * doc/c-tree.texi (Expression trees): Improve markup.
21259         * doc/tm.texi (Register Classes, Addressing Modes)
21260         (Floating Point): Fix spacing after abbreviations.  Fix some
21261         typos.
21262
21263 2007-02-01  Ben Elliston  <bje@au.ibm.com>
21264
21265         * doc/invoke.texi: Replace "bugfix" with "bug fix" throughout.
21266         * doc/contrib.texi: Likewise.
21267         * doc/install.texi: Likewise.
21268
21269 2007-01-31  Richard Henderson  <rth@redhat.com>
21270             Ian Lance Taylor  <iant@google.com>
21271
21272         * lower-subreg.c: New file.
21273         * rtl.def (CONCATN): Define.
21274         * passes.c (init_optimization_passes): Add pass_lower_subreg and
21275         pass_lower_subreg2.
21276         * emit-rtl.c (update_reg_offset): New static function, broken out
21277         of gen_rtx_REG_offset.
21278         (gen_rtx_REG_offset): Call update_reg_offset.
21279         (gen_reg_rtx_offset): New function.
21280         * regclass.c: Revert patch of 2006-03-05, restoring
21281         reg_scan_update.
21282         (clear_reg_info_regno): New function.
21283         * dwarf2out.c (concatn_loc_descriptor): New static function.
21284         (loc_descriptor): Handle CONCATN.
21285         * common.opt (fsplit_wide_types): New option.
21286         * opts.c (decode_options): Set flag_split_wide_types when
21287         optimizing.
21288         * timevar.def (TV_LOWER_SUBREG): Define.
21289         * rtl.h (gen_reg_rtx_offset): Declare.
21290         (reg_scan_update): Declare.
21291         * regs.h (clear_reg_info_regno): Declare.
21292         * tree-pass.h (pass_lower_subreg): Declare.
21293         (pass_lower_subreg2): Declare.
21294         * doc/invoke.texi (Option Summary): List -fno-split-wide-types.
21295         (Optimize Options): Add -fsplit-wide-types to -O1 list.  Document
21296         -fsplit-wide-types.
21297         * doc/rtl.texi (Regs and Memory): Document concat and concatn.
21298         * Makefile.in (OBJS-common): Add lower-subreg.o.
21299         (lower-subreg.o): New target.
21300
21301 2007-01-31  Kazu Hirata  <kazu@codesourcery.com>
21302
21303         * config/sh/sh.h (HAVE_SECONDARY_RELOADS): Remove.
21304
21305 2007-01-31  Anatoly Sokolov <aesok@post.ru>
21306
21307         PR target/19087
21308         * config/avr/avr.c (DWARF2_ADDR_SIZE): Define.
21309
21310 2007-01-31  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
21311
21312         PR middle-end/29335
21313         * builtins.c (fold_builtin_sqrt): Use MPFR for constant args.
21314
21315 2007-01-31  Zdenek Dvorak <dvorakz@suse.cz>
21316
21317         * cfgloop.h: Include vec-prim.h.
21318         (enum li_flags): Remove LI_ONLY_OLD.
21319         (loop_iterator): Changed.
21320         (fel_next, fel_init): Iterate over loop tree.
21321         (FOR_EACH_LOOP_BREAK): New macro.
21322         * loop-unswitch.c (unswitch_loops): Do not pass LI_ONLY_OLD to
21323         FOR_EACH_LOOP.
21324         * tree-ssa-loop-unswitch.c (tree_ssa_unswitch_loops): Ditto.
21325         * modulo-sched.c (sms_schedule): Ditto.
21326         * tree-vectorizer.c (vectorize_loops): Ditto.
21327         * doc/loop.texi: Update information on loop numbering and behavior of
21328         FOR_EACH_LOOP wrto new loops.
21329         * tree-scalar-evolution.c (compute_overall_effect_of_inner_loop,
21330         add_to_evolution_1): Test nestedness of loops instead of comparing
21331         their numbers.
21332         * tree-chrec.c (chrec_fold_plus_poly_poly,
21333         chrec_fold_multiply_poly_poly, chrec_evaluate,
21334         hide_evolution_in_other_loops_than_loop, chrec_component_in_loop_num,
21335         reset_evolution_in_loop): Ditto.
21336         * Makefile.in (CFGLOOP_H): Add vecprim.h dependency.
21337
21338 2007-01-31  Dirk Mueller  <dmueller@suse.de>
21339
21340         * c-common.c (warn_about_parentheses): Separate warning about
21341         un-parenthized sequence of comparison operators from the one
21342         which is supposed to warn about x <= y <= z.
21343
21344 2007-01-31  Uros Bizjak  <ubizjak@gmail.com>
21345
21346         * optabs.h (enum optab_index): Add new OTI_isinf.
21347         (isinf_optab): Define corresponding macro.
21348         * optabs.c (init_optabs): Initialize isinf_optab.
21349         * genopinit.c (optabs): Implement isinf_optab using isinf?f2
21350         patterns.
21351         * builtins.c (mathfn_built_in): Handle BUILT_IN_ISINF{,F,L}.
21352         (expand_builtin_interclass_mathfn): Expand BUILT_IN_ISINF{,F,L}
21353         using isinf_optab.
21354         (expand_builtin): Expand BUILT_IN_ISINF{,F,L} using
21355         expand_builtin_interclass_mathfn.
21356         * reg_stack.c (subst_stack_regs_pat): Handle UNSPEC_FXAM.
21357         * config/i386/i386.md (UNSPEC_FXAM): New constant.
21358         (fxam<mode>2_i387): New insn pattern.
21359         (isinf<mode>2) New expander to implement isinf, isinff and isinfl
21360         built-in functions as x87 inline asm.
21361
21362 2007-01-31  Kazu Hirata  <kazu@codesourcery.com>
21363
21364         * config/arm/unwind-arm.h (_sleb128_t, _uleb128_t): New.
21365
21366 2007-01-30  Eric Christopher  <echristo@apple.com>
21367
21368         * config.gcc: Add geode.
21369
21370 2007-01-31  Kazu Hirata  <kazu@codesourcery.com>
21371
21372         * cgraphunit.c, config/arm/arm.c, config/m68k/m68k.c,
21373         ipa-inline.c, tree-profile.c, tree-ssa-live.c,
21374         tree-ssa-math-opts.c, tree-ssanames.c, tree-vect-analyze.c,
21375         value-prof.c: Fix comment typos.
21376
21377 2007-01-30  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
21378
21379         PR c++/24745
21380         * doc/invoke.texi (Wpointer-arith): Document warning.
21381
21382 2007-01-30  Janis Johnson  <janis187@us.ibm.com>
21383
21384         * doc/extend.texi (Decimal Floating Types): Remove decfloat.h from
21385         the list of discrepancies from the draft TR.
21386
21387 2007-01-30  Dirk Mueller  <dmueller@suse.de>
21388
21389         PR c++/30601
21390         * doc/invoke.texi (-Wreturn-type): Update description to
21391         match new behavior.
21392
21393 2007-01-30  Richard Sandiford  <richard@codesourcery.com>
21394
21395         * cfgrtl.c (try_redirect_by_replacing_jump): Check only_sets_cc0_p.
21396
21397 2007-01-30  Uros Bizjak  <ubizjak@gmail.com>
21398
21399         * builtins.c (expand_builtin_int_interclass_roundingfn): New function
21400         to handle optabs that operate on floating point input argument and
21401         output to integer output.
21402         (expand_builtin_mathfn) [BUILT_IN_ILOGB]: Move from here ...
21403         (expand_builtin_interclass_mathfn) [BUILT_IN_ILOGB]: ... to here.
21404         (expand_builtin): Expand BUILT_IN_ILOGB{,F,L} using
21405         expand_builtin_interclass_mathfn ().
21406         * config/i386/i386.md (fxtractxf3_i387): Rename from *fxtractxf3_i387.
21407         (ilogbsi2): Remove.
21408         (ilogbxf2, ilogb<mode>2): New expanders to implement ilogb, ilogbf and
21409         ilogbl built-in functions as x87 intrinsics.
21410
21411 2007-01-30  Richard Guenther  <rguenther@suse.de>
21412
21413         PR middle-end/27657
21414         * dwarf2out.c (reference_to_unused): Query varpool if the
21415         variable was output.
21416
21417 2007-01-30  Richard Guenther  <rguenther@suse.de>
21418
21419         PR middle-end/30313
21420         * passes.c (execute_one_pass): Reset in_gimple_form to not
21421         confuse non-unit-at-a-time mode.
21422
21423 2007-01-29  Roger Sayle  <roger@eyesopen.com>
21424             Richard Guenther  <rguenther@suse.de>
21425
21426         * fold-const.c (round_up): Make HIGH an unsigned HOST_WIDE_INT to
21427         avoid undefined behaviour on overflow.  Use force_fit_type_double
21428         to construct the constant with the specified TREE_OVERFLOW.
21429
21430 2007-01-29  Janis Johnson  <janis187@us.ibm.com>
21431
21432         * config/dfp-bit.c: Add parameterized support for fp exceptions.
21433         * config/dfp-bit.h: Ditto.
21434
21435 2007-01-29  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
21436
21437         * c-decl.c (pop_scope): Replace warnings with call to
21438         warn_for_unused_label.
21439         * c-common.h (warn_for_unused_label): Declare.
21440         * c-common.c (warn_for_unused_label): Define.
21441
21442 2007-01-29  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
21443
21444         * tree-optimize.c (update_inlined_to_pointers): Delete unused
21445         function.
21446
21447 2007-01-29  Janis Johnson  <janis187@us.ibm.com>
21448
21449         * Makefile.in (USER_H): Remove decfloat.h.
21450         * ginclude/decfloat.h: Delete, moving contents to ...
21451         * ginclude/float.h: Add support for decimal floating point,
21452         guarded by __STDC_WANT_DEC_FP__.
21453
21454 2007-01-29  Mike Stump  <mrs@apple.com>
21455
21456         * doc/gccint.texi (Top): Rename Loop Representation to Loop
21457         Analysis and Representation to resolve case insensitive conflict.
21458         * doc/loop.texi (Loop Analysis and Representation): Likewise.
21459
21460 2007-01-28  Daniel Berlin  <dberlin@dberlin.org>
21461
21462         * tree.h (struct tree_memory_tag): Add aliases member.
21463         (MTAG_ALIASES): New macro.
21464         * tree-ssa-alias.c (alias_bitmap_obstack): New variable.
21465         (add_may_alias): Remove pointer-set. Update for may_aliases being
21466         a bitmap.
21467         (mark_aliases_call_clobbered): Update for may_aliases being a
21468         bitmap.
21469         (compute_tag_properties): Ditto.
21470         (create_partition_for): Ditto.
21471         (compute_memory_partitions): Ditto.
21472         (dump_may_aliases_for): Ditto.
21473         (is_aliased_with): Ditto.
21474         (add_may_alias_for_new_tag): Ditto.
21475         (rewrite_alias_set_for): Rewrite for may_aliases being a bitmap.
21476         (compute_is_aliased): New function.
21477         (compute_may_aliases): Call compute_is_aliased).
21478         (init_alias_info): Initialize alias_bitmap_obstack.
21479         (union_alias_set_into): New function.
21480         (compute_flow_sensitive_aliasing): Use union_aliases_into.
21481         (have_common_aliases_p): Rewrite to take two bitmaps and use
21482         intersection.
21483         (compute_flow_insensitive_aliasing): Stop using pointer-sets.
21484         Update for bitmaps.
21485         (finalize_ref_all_pointers): Update for add_may_alias changes.
21486         (new_type_alias): Ditto.
21487         * tree-flow-inline.h (may_aliases): Return a bitmap.
21488         * tree-dfa.c (dump_variable): Check for MTAG_P'ness.
21489         * tree-ssa.c (verify_flow_insensitive_alias_info): Update for
21490         may_aliases being a bitmap.
21491         * tree-flow.h (struct var_ann_d): Remove may_aliases member.
21492         may_aliases now returns a bitmap.
21493         * tree-ssa-structalias.c (merge_smts_into): Update for may_aliases
21494         being a bitmap.
21495         * tree-ssa-operands.c (add_virtual_operand): Update for
21496         may_aliases being a bitmap.
21497
21498 2007-01-29  Daniel Berlin  <dberlin@dberlin.org>
21499
21500         PR tree-optimization/30630
21501         * tree-ssa-structalias.c (do_complex_constraint): Mark correct
21502         variable as changed.
21503
21504 2007-01-29  Simon Martin  <simartin@users.sourceforge.net>
21505
21506         PR c++/28266
21507         * gimplify.c (gimplify_target_expr): Make sure that the TARGET_EXPR is
21508         expanded only once even if an error occurs.
21509
21510 2007-01-29  Ben Elliston  <bje@au.ibm.com>
21511
21512         * gcov-io.h (__gcov_indirect_call_profiler): Declare.
21513         (__gcov_average_profiler): Likewise.
21514         (__gcov_ior_profiler): Likewise.
21515         (__gcov_merge_ior): Likewise.
21516
21517 2007-01-28  Jan Hubicka  <jh@suse.cz>
21518
21519         * builtins.c (expand_builtin_memset): Fix typo in my last patch.
21520         * value-prof.c (stringop_block_profile): Likewise.
21521
21522 2007-01-28  Jan Hubicka  <jh@suse.cz>
21523
21524         * expr.c (emit_block_move_via_movmem, emit_block_move_via_libcall):
21525         Add variant handling histograms; add wrapper.
21526         (clear_storage_via_libcall): Export.
21527         (emit_block_move_hints): Break out from ...; add histograms.
21528         (emit_block_move): ... this one.
21529         (clear_storage_hints): Break out from ...; add histograms.
21530         (clear_storage): ... this one.
21531         (set_storage_via_memset): Handle histogram.
21532         * expr.h (emit_block_move_via_libcall, emit_block_move_hints): Declare.
21533         (clear_storage_hints, clear_storage_via_libcall): Declare.
21534         (set_storage_via_setmem): Update prototype.
21535         * doc/md.texi (movmem, setmem): Document new arguments.
21536
21537         * value-prof.c (dump_histogram_value, tree_find_values_to_profile):
21538         Add new histograms.
21539         (stringop_block_profile): New global function.
21540         (tree_stringops_values_to_profile): Profile block size and alignment.
21541         * value-prof.h (enum hist_type): add HIST_TYPE_AVERAGE and
21542         HIST_TYPE_IOR.
21543         (struct profile_hooks): Add gen_average_profiler and gen_ior_profiler.
21544         (stringop_block_profile): Declare.
21545         * builtins.c: Include value-prof.h.
21546         (expand_builtin_memcpy, expand_builtin_memset): Pass block profile.
21547         * gcov-ui.h (GCOV_COUNTER_NAMES): Add new counter.
21548         (GCOV_COUNTER_AVERAGE, GCOV_COUNTER_IOR): New constants.
21549         (GCOV_COUNTERS, GCOV_LAST_VALUE_COUNTER): Update.
21550         * profile.c (instrument_values): Add new counters.
21551         * cfgexpand.c (expand_gimple_basic_block): Propagate histograms to
21552         calls.
21553         * tree-profile.c (tree_average_profiler_fn, tree_ior_profiler_fn): New.
21554         (tree_init_edge_profiler): Build new profilers.
21555         (tree_gen_average_profiler, tree_gen_ior_profiler): New.
21556         (pass_tree_profile): Add dump.
21557         (tree_profile_hooks): Update.
21558         * Makefile.in (LIBGCOV): Add new constants.
21559         * libgcov.c (__gcov_merge_ior, __gcov_average_profiler,
21560         __gcov_ior_profiler): New.
21561         * i386.md (movmem/setmem expanders): Add new optional arguments.
21562
21563 2007-01-28  David Edelsohn  <edelsohn@gnu.org>
21564
21565         * doc/md.texi (Standard Pattern Names): Document blockage pattern.
21566
21567 2007-01-28  Zdenek Dvorak <dvorakz@suse.cz>
21568
21569         * tree-ssa-loop-unswitch.c: Include tree-inline.h.
21570         (tree_unswitch_single_loop): Pass eni_size_weights to
21571         tree_num_loop_insns.
21572         * tree-ssa-loop-manip.c: Include tree-inline.h.
21573         (can_unroll_loop_p): Pass eni_size_weights to
21574         tree_num_loop_insns.
21575         * tree-ssa-loop-ch.c (should_duplicate_loop_header_p):
21576         Pass eni_size_weights to estimate_num_insns.
21577         * tree.h (init_inline_once): Export.
21578         * toplev.c (backend_init): Call init_inline_once.
21579         * cgraphunit.c (cgraph_process_new_functions,
21580         cgraph_analyze_function): Pass eni_inlining_weights to
21581         estimate_num_insns.
21582         * ipa-inline.c (compute_inline_parameters): Ditto.
21583         * tree-ssa-loop-ivcanon.c (tree_num_loop_insns): Pass weights
21584         to estimate_num_insns.
21585         (try_unroll_loop_completely): Pass eni_size_weights to
21586         tree_num_loop_insns.
21587         * tree-eh.c (decide_copy_try_finally): Pass eni_size_weights
21588         ot estimate_num_insns.
21589         * tree-ssa-loop-prefetch.c: Include tree-inline.h.
21590         (loop_prefetch_arrays): Pass eni_time_weights to tree_num_loop_insns.
21591         * tree-inline.c (eni_inlining_weights, eni_size_weights,
21592         eni_time_weights): New variables.
21593         (init_inline_once): Initialize them.
21594         (struct eni_data): Mew.
21595         (estimate_num_insns_1, estimate_num_insns): Use weights.
21596         * tree-inline.h (struct eni_weights_d): New.
21597         (eni_inlining_weights, eni_size_weights, eni_time_weights): Declare.
21598         (estimate_num_insns): Declaration changed.
21599         * cfgloop.h (tree_num_loop_insns): Declaration changed.
21600         * Makefile.in (tree-ssa-loop-unswitch.o, tree-ssa-loop-prefetch.o,
21601         tree-ssa-loop-manip.o): Add TREE_INLINE_H dependency.
21602
21603 2007-01-28  Zdenek Dvorak <dvorakz@suse.cz>
21604
21605         * tree-data-ref.c (conflict_fn): Assert that the number of affine
21606         relations in the conflict function is valid.
21607
21608 2007-01-27  Ian Lance Taylor  <iant@google.com>
21609
21610         * common.opt: Add fstrict-overflow.
21611         * opts.c (decode_options): Set flag_strict_overflow if -O2.
21612         * flags.h (TYPE_OVERFLOW_WRAPS): Define.
21613         (TYPE_OVERFLOW_UNDEFINED): Define.
21614         (TYPE_OVERFLOW_TRAPS): Define.  This replaces TYPE_TRAP_SIGNED.
21615         Replace all uses.
21616         * tree.h (TYPE_TRAP_SIGNED): Don't define.
21617         * fold-const.c (negate_expr_p): Use TYPE_OVERFLOW_UNDEFINED.
21618         (fold_negate_expr): Likewise.
21619         (make_range): Likewise.
21620         (extract_muldiv_1): Likewise.
21621         (maybe_canonicalize_comparison): Likewise.
21622         (fold_comparison): Likewise.
21623         (fold_binary): Likewise.
21624         (tree_expr_nonnegative_p): Likewise.
21625         (tree_expr_nonzero_p): Likewise.
21626         * tree-vrp.c (compare_values): Likewise.
21627         (extract_range_from_binary_expr): Likewise.
21628         (extract_range_from_unary_expr): Likewise.
21629         * tree-ssa-loop-niter.c (infer_loop_bounds_from_signedness):
21630         Likewise.
21631         (nowrap_type_p): Likewise.
21632         * tree-scalar-evolution.c (simple_iv): Likewise.
21633         * fold-const.c (negate_expr_p): Use TYPE_OVERFLOW_WRAPS.
21634         (build_range_check): Likewise.
21635         (extract_muldiv_1): Likewise.
21636         (fold_comparison): Likewise.
21637         * tree-vrp.c (vrp_int_const_binop): Likewise.
21638         (extract_range_from_unary_expr): Likewise.
21639         * convert.c (convert_to_integer): Likewise.
21640         * fold-const.c (fold_negate_expr): Use TYPE_OVERFLOW_TRAPS.
21641         (fold_comparison): Likewise.
21642         (fold_binary): Likewise.
21643         * optabs.c (optab_for_tree_code): Likewise.
21644         * tree-vectorizer.c (vect_is_simple_reduction): Likewise.
21645         * simplify-rtx.c (simplify_const_relational_operation): Check
21646         flag_strict_overflow and flag_trapv.
21647         (simplify_const_relational_operation): Likewise.
21648         * doc/invoke.texi (Option Summary): Mention -fstrict-overflow.
21649         (Optimize Options): Add -fstrict-overflow to -O2 list.  Document
21650         -fstrict-overflow.
21651
21652 2007-01-27  Roger Sayle  <roger@eyesopen.com>
21653
21654         * tree.c (tree_fold_gcd): Delete.
21655         * tree.h (tree_fold_gcd): Remove prototype.
21656         * tree-data-ref.c (tree_fold_divides_p): Don't use tree_fold_gcd to
21657         test whether one constant integer is a multiple of another.  Instead
21658         call int_const_binop with TRUNC_MOD_EXPR and test for a zero result.
21659         * fold-const.c (multiple_of_p):  We've determined both TOP and
21660         BOTTOM are integer constants so we can call int_const_binop directly
21661         instead of the more generic const_binop.
21662
21663 2007-01-27  Roger Sayle  <roger@eyesopen.com>
21664
21665         * fold-const.c (size_binop): In the fast-paths for X+0, 0+X, X-0 and
21666         1*X check that the constant hasn't overflowed, to preserve the
21667         TREE_OVERFLOW bit.
21668         (round_up): Provide an efficient implementation when rouding-up an
21669         INTEGER_CST to a power-of-two.
21670
21671 2007-01-28  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
21672
21673         * doc/sourcebuild.texi: Add comma for clarity.
21674         * doc/extend.texi: Fix some typos.
21675         * doc/passes.texi: Likewise.
21676         * doc/cppinternals.texi: Likewise.
21677         * doc/c-tree.texi: Likewise.
21678         * doc/tree-ssa.texi: Likewise.
21679         * doc/install.texi: Likewise.
21680
21681 2007-01-27  Jan Hubicka  <jh@suse.cz>
21682
21683         * tree-sra.c (sra_walk_function): Don't rely on aliases being build.
21684         (pass_sra): Do not require alias information.
21685         * passes.c (init_optimization_passes): Add SRA
21686
21687 2007-01-27  Steven Bosscher  <steven@gcc.gnu.org>
21688
21689         * tracer.c (rest_of_handle_tracer): We already cleaned
21690         up the CFG in tracer() so don't do it here again.
21691         * cfgcleanup.c (rest_of_handle_jump2): Don't repeat
21692         cleanup_cfg here, either.  And don't call renumber_insns.
21693
21694         * cfgrtl.c (rtl_verify_flow_info_1): Don't verify that BB_END
21695         and BB_HEAD are in the insn stream here.  Instead make sure
21696         that BB_INSN is valid on all insns.  Also, do check here that
21697         there are no pending branch predictions...
21698         (rtl_verify_flow_info): ...instead of doing it here.  Checks
21699         for BB_END and BB_HEAD moved from rtl_verify_flow_info_1 to
21700         here.
21701
21702 2007-01-26  Roger Sayle  <roger@eyesopen.com>
21703
21704         * config/i386/i386.c (ix86_swap_binary_operands_p): New helper
21705         function to simplify/factorize operand order canonicalization.
21706         (ix86_fixup_binary_operands): Reorganize using the above function.
21707         (ix86_binary_operator_ok): Likewise.
21708
21709 2007-01-27  Jakub Jelinek  <jakub@redhat.com>
21710
21711         * genattrtab.c (struct attr_value_list, insn_code_values): Move to
21712         file scope from optimize_attrs.
21713         (simplify_test_exp): If insn_code_values is not NULL, use it to speed
21714         up search.
21715         (optimize_attrs): Clear insn_code_values after freeing it.
21716
21717 2007-01-26  Zdenek Dvorak <dvorakz@suse.cz>
21718
21719         * tree-ssa-address.c (create_mem_ref): Remove ", bsi" from
21720         a parts.base assignment.
21721
21722 2007-01-26  Zdenek Dvorak <dvorakz@suse.cz>
21723
21724         * tree-data-ref.c (dump_subscript): Use dump_conflict_function.
21725         (compute_subscript_distance, initialize_data_dependence_relation,
21726         finalize_ddr_dependent, analyze_ziv_subscript,
21727         analyze_siv_subscript_cst_affine,
21728         compute_overlap_steps_for_affine_univar,
21729         compute_overlap_steps_for_affine_1_2, analyze_subscript_affine_affine,
21730         analyze_siv_subscript, analyze_miv_subscript,
21731         analyze_overlapping_iterations, subscript_dependence_tester_1,
21732         compute_self_dependence, free_dependence_relation): Work
21733         with affine_fn instead of chrecs.
21734         (dump_affine_function, dump_conflict_function, affine_function_equal_p,
21735         common_affine_function, affine_function_base,
21736         affine_function_constant_p, affine_fn_op, affine_fn_plus,
21737         affine_fn_minus, affine_fn_free, conflict_fn_not_known,
21738         conflict_fn_no_dependence, free_conflict_function, free_subscripts,
21739         conflict_fn, affine_fn_cst, affine_fn_univar): New functions.
21740         (all_chrecs_equal_p): Removed.
21741         * tree-data-ref.h (affine_fn, conflict_function): New types.
21742         (struct subscript): Change type of conflicting_iterations_in_a
21743         and conflicting_iterations_in_b.
21744
21745 2007-01-26  Steve Ellcey  <sje@cup.hp.com>
21746
21747         PR other/30182
21748         * config/pa/pa.h (TARGET_HPUX_11): New.
21749         * config/pa/pa-hpux11.h (TARGET_HPUX_11): New.
21750         * config/pa/pa.c (pa_init_builtins): Use TARGET_HPUX_11.
21751
21752 2007-01-26  Daniel Berlin  <dberlin@dberlin.org>
21753         Richard Guenther  <rguenther@suse.de>
21754
21755         * tree-ssa-structalias.c (solve_graph): Handle case
21756         we merged the variable to another.
21757
21758 2007-01-25  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
21759
21760         * builtins.c (fold_builtin_1): Treat ccos and ccosh as 'even'
21761         functions.
21762
21763         * fold-const.c (negate_mathfn_p): Treat casin, casinh, catan,
21764         catanh, cproj, csin, csinh, ctan and ctanh as 'odd' functions.
21765
21766 2007-01-25  DJ Delorie  <dj@redhat.com>
21767
21768         * config/m32c/m32c.c (m32c_cannot_change_mode_class): We don't
21769         allow changes to modes which don't fit in those registers.
21770
21771         * reload1.c (choose_reload_regs): Check for invalid subregs before
21772         computing their locations, not after.
21773
21774 2007-01-25  Geoffrey Keating  <geoffk@apple.com>
21775
21776         PR 25127
21777         * config/rs6000/rs6000.c (first_altivec_reg_to_save): On Darwin,
21778         save Altivec registers in an eh_return function.
21779         (compute_vrsave_mask): Likewise.
21780         (rs6000_stack_info): Correct AIX/Darwin stack alignment computation
21781         for saving Altivec registers.
21782         (rs6000_emit_prologue): Don't allocate stack twice in
21783         eh_return function.  Correct expected value of altivec_save_offset
21784         when using save_world.  Describe save of R0 to stack when using
21785         save_world.  Describe stack pointer adjustment when using
21786         save_world.  Remove duplicated eh_return parameter register saving.
21787         Update sp_offset variable after save_world.
21788         * config/rs6000/t-darwin (LIB2FUNCS_STATIC_EXTRA): Remove
21789         darwin-world.asm.
21790         (LIB2FUNCS_EXTRA): Add darwin-world.asm.
21791         * config/rs6000/darwin.h (SUBTARGET_OVERRIDE_OPTIONS): -m64
21792         implies Altivec.
21793
21794 2007-01-25  Steve Ellcey  <sje@cup.hp.com>
21795
21796         * config.gcc (ia64*-*-hpux*): Make posix threads the default.
21797
21798 2007-01-25  Steve Ellcey  <sje@cup.hp.com>
21799
21800         PR other/30182
21801         * config/pa/pa.c (pa_init_builtins): Set asm names for finite routines.
21802         * config/ia64/ia64.c (ia64_init_builtins):  Ditto.
21803
21804 2007-01-25  Richard Guenther  <rguenther@suse.de>
21805
21806         * doc/invoke.texi (-Wcoverage-mismatch): Document.
21807         * common.opt (-Wcoverage-mismatch): New warning option.
21808         * coverage.c (get_coverage_counts): Ignore coverage mismatch
21809         if -Wcoverage-mismatch is given.
21810
21811 2007-01-25  Razya Ladelsky  <razya@il.ibm.com>
21812
21813         * ipa-cp.c (ipcp_insert_stage, ipcp_driver): Support for SSA.
21814         (ipcp_driver): Change to static definition.
21815         Add dumping of the ifunctions.
21816         (constant_val_insert): Remove unused parameter. Support for SSA.
21817         (ipcp_propagate_const): Support for SSA.
21818         (ipcp_profile_bb_print): Print only analyzed nodes.
21819         (ipcp_replace_map_create): Remove support for Fortran constant
21820         for now.
21821         * ipa-prop.c (ipa_method_modify_stmt,
21822         ipa_callsite_compute_param): Support for SSA.
21823         * ipa-prop.h (ipcp_driver): Remove declaration.
21824         (IS_VALID_TREE_MAP_INDEX): Add define.
21825
21826 2007-01-24  Geoffrey Keating  <geoffk@apple.com>
21827
21828         * unwind-dw2.c (execute_stack_op): Handle DW_OP_swap.
21829
21830 2007-01-24  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
21831
21832         PR middle-end/30447
21833         * builtins.c (fold_builtin_cabs): Use MPFR to evaluate a
21834         constant argument to cabs and do it without checking for
21835         -funsafe-math-optimizations.
21836
21837 2007-01-24  Douglas Gregor  <dgregor@osl.iu.edu>
21838
21839         * c-common.h (RID_FIRST_CXX0X): New.
21840         (RID_LAST_CXX0X): New.
21841         * c-opts.c (c_common_handle_option): -Wc++0x-compat is triggered
21842         by -Wall.
21843         * c.opt (Wc++0x-compat): New.
21844         * doc/invoke.texi (-Wc++0x-compat): Document.
21845
21846 2007-01-24  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
21847
21848         * builtins.c (fold_builtin_carg): New.
21849         (fold_builtin_1): Use it.
21850
21851 2007-01-24  Jan Hubicka  <jh@suse.cz>
21852
21853         * ipa-inline.c (cgraph_decide_inlining): Initialize initial_insns.
21854
21855         * ipa-inline.c (initial_insns, max_insns): Delete.
21856         (compute_max_insns): New function.
21857         (cgraph_decide_inlining_of_small_function): Use it; take minimal
21858         amount of insns as base for code growth.
21859         (cgraph_decide_inlining): Make initial_insns local; do not compute
21860         max_insns.
21861         * params.def (PARAM_INLINE_UNIT_GROWTH): Set to 60.
21862         * doc/invoke.texi (inline-unit-growth): Update docs.
21863
21864 2007-01-24  Jakub Jelinek  <jakub@redhat.com>
21865
21866         * config/i386/i386.h (x86_cmpxchg16b): Remove const.
21867         (TARGET_CMPXCHG16B): Define to x86_cmpxchg16b.
21868         * config/i386/i386.c (x86_cmpxchg16b): Remove const.
21869         (override_options): Add PTA_CX16 flag.  Set x86_cmpxchg16b
21870         for CPUs that have PTA_CX16 set.
21871
21872         PR middle-end/27416
21873         * gimplify.c (omp_check_private): New function.
21874         (gimplify_scan_omp_clauses): Use it for
21875         firstprivate/lastprivate/reduction.
21876
21877         PR middle-end/30494
21878         * gimplify.c (omp_add_variable): Don't call omp_notice_variable
21879         on TYPE_SIZE_UNIT for GOVD_LOCAL VLAs.
21880
21881         PR middle-end/30421
21882         * omp-low.c (lower_omp_for_lastprivate): Add dlist argument.
21883         If lower_lastprivate_clauses emits some statements, append them
21884         to dlist rather than body_p and to body_p append an initializer.
21885         (lower_omp_for): Adjust caller.
21886
21887 2007-01-24  Steve Ellcey  <sje@cup.hp.com>
21888
21889         * target.h (globalize_decl_name): New.
21890         * target-def.h (TARGET_ASM_GLOBALIZE_DECL_NAME): New.
21891         * output.h (default_globalize_decl_name): New.
21892         * varasm.c (asm_output_bss): Use globalize_decl_name instead of
21893         globalize_label.
21894         (globalize_decl): Ditto.
21895         (default_globalize_decl_name): New.
21896         * config/ia64/ia64.c (ia64_globalize_decl_name): New.
21897         (ia64_handle_version_id_attribute): New.
21898         (TARGET_ASM_GLOBALIZE_DECL_NAME): New.
21899         (ia64_asm_output_external): Use globalize_decl_name instead
21900         of globalize_label.
21901         * doc/extend.texi (version_id): New pragma.
21902         * doc/tm.texi (ARGET_ASM_GLOBALIZE_DECL_NAME): New target hook.
21903
21904 2007-01-24  Andreas Krebbel  <krebbel1@de.ibm.com>
21905
21906         * unwind-dw2-fde.c (get_cie_encoding): Replaced _Unwind_Word with
21907         _uleb128_t and _Unwind_SWord with _sleb128_t.
21908         * unwind-dw2.c (extract_cie_info, execute_stack_op,
21909         execute_cfa_program, uw_frame_state_for, uw_update_context_1):
21910         Likewise.
21911         * unwind-c.c (parse_lsda_header, PERSONALITY_FUNCTION): Likewise.
21912         * unwind-pe.h (read_uleb128, read_sleb128,
21913         read_encoded_value_with_base): Likewise.
21914         * unwind-generic.h: Define _sleb128_t and _uleb128_t types.
21915
21916 2007-01-24  Richard Guenther  <rguenther@suse.de>
21917
21918         * builtins.c (expand_builtin_cexpi): Get the fndecl
21919         for cexp in the correct way.
21920
21921 2007-01-24  Jan Hubicka  <jh@suse.cz>
21922
21923         * tree-ssa-dce.c (eliminate_unnecesary_stmts): Remove dead LHS
21924         of calls.
21925
21926 2007-01-24  Andreas Krebbel  <krebbel1@de.ibm.com>
21927
21928         * c-cppbuiltin.c (builtin_define_type_sizeof): New function.
21929         (c_cpp_builtins): New builtin macros: __SIZEOF_INT__, __SIZEOF_LONG__,
21930         __SIZEOF_LONG_LONG__, __SIZEOF_SHORT__, __SIZEOF_POINTER__,
21931         __SIZEOF_FLOAT__, __SIZEOF_DOUBLE__, __SIZEOF_LONG_DOUBLE__,
21932         __SIZEOF_SIZE_T__, __SIZEOF_WCHAR_T__, __SIZEOF_WINT_T__ and
21933         __SIZEOF_PTRDIFF_T__.
21934         * doc/cpp.texi: Documentation for the new builtin macros added.
21935
21936 2007-01-24  Uros Bizjak  <ubizjak@gmail.com>
21937
21938         * config/i386/i386.md (tanxf2, tan<mode>2, atan<mode>2, log<mode>2,
21939         log10<mode>2, log2<mode>2, expxf2, exp10xf2, exp2xf2): Use op2
21940         instead of operands[2] to avoid access past the end of array.
21941
21942 2007-01-24  Richard Sandiford  <richard@codesourcery.com>
21943
21944         * reload1.c (emit_reload_insns): Pass the reload register
21945         for a non-spill output reload through forget_old_reloads_1.
21946
21947 2007-01-23  Joseph Myers  <joseph@codesourcery.com>
21948
21949         * config/rs6000/rs6000-c.c (rs6000_cpu_cpp_builtins): Define
21950         _SOFT_DOUBLE if doubles use software floating-point.
21951         * config/rs6000/libgcc-ppc-glibc.ver: Export additional long
21952         double functions if _SOFT_DOUBLE, not _SOFT_FLOAT.
21953         * config/rs6000/darwin-ldouble.c: Also compile functions for
21954         hard-float without FPRs.  Use fmsub function for all __NO_FPRS__
21955         cases.  Compile extra functions if _SOFT_DOUBLE, not _SOFT_FLOAT.
21956         * config/rs6000/linuxspe.h (SUBSUBTARGET_OVERRIDE_OPTIONS): Remove
21957         commented-out long double override.
21958         (CPP_LONGDOUBLE_DEFAULT_SPEC): Likewise.
21959         * config/rs6000/eabispe.h: Likewise.
21960         * config/rs6000/rs6000.c (rs6000_override_options): Don't override
21961         long double for non-SPE.
21962         (rs6000_handle_option): Likewise.
21963         (invalid_e500_subreg): Disallow more subregs involding DImode,
21964         DFmode, TImode or TFmode.
21965         (rs6000_legitimate_offset_address_p): Check TFmode offsets for
21966         E500 double.
21967         (legitimate_lo_sum_address_p): Also check for TFmode for E500
21968         double.
21969         (rs6000_legitimize_address): Also handle TFmode for E500 double.
21970         (rs6000_legitimize_reload_address): Also handle TFmode for E500
21971         double.
21972         (rs6000_legitimate_address): Also check for TFmode for E500
21973         double.
21974         (rs6000_emit_move): Use DFmode subregs of TFmode for E500 double.
21975         (spe_build_register_parallel): Handle TFmode and TCmode.
21976         (rs6000_spe_function_arg): Handle TFmode and TCmode for E500
21977         double.
21978         (function_arg): Handle TFmode and TCmode for E500 double.
21979         (rs6000_init_libfuncs): Initialize extra libfuncs for soft double
21980         in general.
21981         (print_operand): Handle TFmode and TImode for %y.
21982         (rs6000_generate_compare): Handle TFmode comparisons for E500
21983         double.
21984         (spe_func_has_64bit_regs_p): Check for TFmode for E500 double.
21985         (rs6000_function_value): Handle TFmode and TCmode for E500 double.
21986         (rs6000_libcall_value): Handle TFmode and TCmode for E500 double.
21987         * config/rs6000/rs6000.h (CANNOT_CHANGE_MODE_CLASS): Check for
21988         TFmode for E500 double.
21989         * config/rs6000/rs6000.md (FP): Allow TF for E500 double.
21990         (floatsidf2): Enable for E500 double.
21991         (movtf_softfloat): Use rs6000_nonimmediate_operand.
21992         (extenddftf2): Change to extenddftf2_fprs.
21993         (extenddftf2): Call gen_spe_extenddftf2 or gen_extenddftf2_fprs
21994         depending on TARGET_E500_DOUBLE.
21995         (extendsftf2): Enable for E500 double.
21996         (trunctfdf2): Enable for E500 double.
21997         (trunctfsf2): Change to trunctfsf2_fprs.
21998         (trunctfsf2): Call gen_spe_trunctfsf2 or gen_trunctfsf2_fprs
21999         depending on TARGET_E500_DOUBLE.
22000         (floatsitf2): Enable for E500 double.
22001         (fix_trunctfsi2): Change to fix_trunctfsi2_fprs.
22002         (fix_trunctfsi2): Call gen_spe_fix_trunctfsi2 or
22003         gen_fix_trunctfsi2_fprs depending on TARGET_E500_DOUBLE.
22004         (negtf2): Change to negtf2_internal.
22005         (negtf2): New expander.
22006         (abstf2): Enable for E500 double.  Call gen_spe_abstf2_tst,
22007         gen_spe_abstf2_cmp or gen_abstf2_internal depending on
22008         TARGET_E500_DOUBLE and flag_unsafe_math_optimizations.
22009         (movdi_internal32): Use rs6000_nonimmediate_operand.
22010         (unnamed splitter): Likewise.
22011         * config/rs6000/spe.md (CMPTFEQ_GPR, TSTTFEQ_GPR, CMPTFGT_GPR,
22012         TSTTFGT_GPR, CMPTFLT_GPR, TSTTFLT_GPR): New unspecs.
22013         (SPE64TF, DITI): New mode macros.
22014         (frob_df_di): Change to frob_<SPE64:mode>_<DITI:mode>; allow more
22015         modes.
22016         (frob_tf_ti): New.
22017         (frob_<mode>_di_2): New.
22018         (frob_tf_di_8_2): New.
22019         (frob_di_df): Change to frob_di_<mode>; allow more modes.
22020         (frob_ti_tf): New.
22021         (frob_di_df_2): Change to frob_<DITI:mode>_<SPE64:mode>_2; allow
22022         more modes.
22023         (frob_ti_<mode>_8_2): New.
22024         (frob_ti_tf_2): New.
22025         (mov_si<mode>_e500_subreg0, mov_si<mode>_e500_subreg0_2,
22026         mov_si<mode>_e500_subreg4, mov_si<mode>_e500_subreg4_2): Allow
22027         TFmode.
22028         (mov_sitf_e500_subreg8, mov_sitf_e500_subreg8_2,
22029         mov_sitf_e500_subreg12, mov_sitf_e500_subreg12_2): New.
22030         (spe_trunctfdf2_internal1, spe_trunctfsf2, spe_extenddftf2,
22031         spe_fix_trunctfsi2, spe_fix_trunctfsi2_internal,
22032         spe_negtf2_internal, spe_abstf2_cmp, spe_abstf2_tst): New.
22033         (cmptfeq_gpr, tsttfeq_gpr, cmptfgt_gpr, tsttfgt_gpr, cmptflt_gpr,
22034         tsttflt_gp): New.
22035
22036 2007-01-23  Ian Lance Taylor  <iant@google.com>
22037
22038         * Makefile.in (OBJS-common): Reformat, alphabetize, but put
22039         insn-*.o first.
22040         (OBJS-archive): Reformat, alphabetize.
22041         (OBJS): Change out_object_file to OBJS-md.
22042
22043 2007-01-23  Uros Bizjak  <ubizjak@gmail.com>
22044
22045         * config/i386/i386.md: Use REG_P, MEM_P, CONST_INT_P, LABEL_P,
22046         JUMP_P and CALL_P predicates where applicable.
22047         * config/i386/i386.c: Ditto.
22048         * config/i386/i386.md: Ditto.
22049         * config/i386/mmx.md: Ditto.
22050         * config/i386/predicates.md: Ditto.
22051
22052 2007-01-22  Andreas Schwab  <schwab@suse.de>
22053
22054         * config/m68k/m68k.h: Fix comment.
22055
22056 2007-01-22  Jan Hubicka  <jh@suse.cz>
22057
22058         * passes.c (init_optimization_passes): Do not rerun
22059         pass_early_warn_uninitialized.
22060
22061 2007-01-22  Richard Guenther  <rguenther@suse.de>
22062
22063         PR tree-optimization/30038
22064         * tree-ssa-math-opts.c (maybe_record_sincos): New static helper
22065         function.
22066         (execute_cse_sincos_1): Likewise.
22067         (execute_cse_sincos): Likewise.
22068         (gate_cse_sincos): Likewise.
22069         (pass_cse_sincos): New pass CSEing sin() and cos() calls using
22070         the cexpi() canonicalization of sincos().
22071         * tree-pass.h (pass_cse_sincos): Declare.
22072         * passes.c (init_optimization_passes): New pass pas_cse_sincos.
22073
22074 2007-01-21  Eric Botcazou  <ebotcazou@libertysurf.fr>
22075
22076         PR rtl-optimization/29329
22077         * combine.c (replaced_rhs_insn): Rename to i2mod.
22078         (replaced_rhs_value): Rename to i2mod_new_rhs.
22079         (i2mod_old_rhs): New global variable.
22080         (combine_instructions): Adjust for above change.  Save a copy of
22081         the old RHS into i2mod_old_rhs when the contents of a REG_EQUAL
22082         note are substituted in the second instruction.
22083         (distribute_notes) <REG_DEAD>: Adjust for above change.  Do not
22084         ditch the note if it pertains to the second eliminated register
22085         and this register is mentioned in i2mod_old_rhs.
22086
22087         Revert:
22088         2006-09-12  Eric Botcazou  <ebotcazou@libertysurf.fr>
22089
22090         * combine.c (distribute_notes) <REG_DEAD>: Do not consider SETs past
22091         the insn to which the note was originally attached.
22092
22093 2007-01-21  Jan Hubicka  <jh@suse.cz>
22094
22095         * ipa-inline.c (inlining_mode): Comment, move up.
22096         (cgraph_decide_inlining_incrementally): Do not perform inlining
22097         itself; fix handling of flattening of self recursive functions.
22098         (cgraph_find_cycles): Remove.
22099         (cgraph_flatten_node): Remove.
22100         (cgraph_decide_inlining): Use incremental inliner to handle flattening.
22101         (try_inline): New function.
22102         (cgraph_early_inlining): Update call of
22103         cgraph_decide_inlining_incrementally.  Apply inlining here.
22104         (apply_inline): Update call of cgraph_decide_inlining_incrementally.
22105
22106 2007-01-21  Dirk Mueller  <dmueller@suse.de>
22107
22108         PR bootstrap/30511
22109         * tree-vrp.c (check_array_bounds): do not warn
22110         about ADDR_EXPR's of ARRAY_REF's which are immediately
22111         used in binary expressions.
22112
22113 2007-01-21  Ira Rosen  <irar@il.ibm.com>
22114
22115         * tree-vectorizer.h (struct _stmt_vec_info): Add new field
22116         read_write_dep and macros for its access.
22117         * tree-vectorizer.c (new_stmt_vec_info): Initialize the new field.
22118         * tree-vect-analyze.c (vect_analyze_data_ref_dependence): Remove
22119         argument, call vect_check_interleaving for every independent pair of
22120         data-refs. Mark loads that access the same memory location as a store
22121         in the loop.
22122         (vect_check_dependences): Remove.
22123         (vect_analyze_data_ref_dependences): Remove  vect_check_dependences
22124         call, fix the call to vect_analyze_data_ref_dependence.
22125         (vect_analyze_data_ref_access): For statements that access the same
22126         data-ref, check that they are not stores; for loads, check that there
22127         is no store that access the same location.
22128
22129 2007-01-20  Roger Sayle  <roger@eyesopen.com>
22130             Joseph Myers  <joseph@codesourcery.com>
22131
22132         * doc/invoke.texi (-fdump-rtl-combine): Fix under/overfull hbox.
22133         (-fdump-rtl-stack): Likewise.
22134         (-fno-signed-zeros): Use @minus{} for a minus sign.  Correct typo.
22135         (-mcheck-zero-division, -mcpu): Fix under/overfull hbox.
22136         (-mpt-fixed): Use @minus{} for minus sign.
22137         (Using Precompiled Headers): Fix under/overfull hbox.
22138
22139 2007-01-20  Jan Hubicka  <jh@suse.cz>
22140
22141         * tree-flow.h (struct stmt_ann_d): Move references_memory to proper
22142         place within annotation.
22143
22144 2007-01-20  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
22145
22146         * pa.c (output_move_double): Change array size of xoperands to 4.
22147
22148 2007-01-20  Jan Hubicka  <jh@suse.cz>
22149
22150         * tree-tailcall.c (adjust_return_value): Do not use RESULT_DECL
22151         as temporary.
22152
22153 2007-01-19  Ian Lance Taylor  <iant@google.com>
22154
22155         * expmed.c (expand_divmod) [TRUNC_MOD_EXPR, TRUNC_DIV_EXPR]: Cast
22156         constant to unsigned HOST_WIDE_INT before negating.
22157
22158 2007-01-19  Ian Lance Taylor  <iant@google.com>
22159
22160         * tree-ssa-operands.h (struct vuse_vec_d): Change num_vuse field
22161         to unsigned.
22162         (VUSE_VECT_ELEMENT) [ENABLE_CHECKING]: Use unsigned comparison.
22163         (VUSE_ELEMENT_PTR) [ENABLE_CHECKING]: Likewise.
22164         (SET_VUSE_VECT_ELEMENT) [ENABLE_CHECKING]: Likewise.
22165         (SET_VUSE_ELEMENT_VAR) [ENABLE_CHECKING]: Likewise.
22166         (SET_VUSE_ELEMENT_PTR) [ENABLE_CHECKING]: Likewise.
22167         (realloc_vdef, realloc_vuse): Change second parameter to
22168         unsigned.
22169         (ssa_operand_iterator_d): Change vuse_index and mayuse_index
22170         fields to unsigned.
22171         * tree-ssa-operands.c (realloc_vop): Change num_elem parameter to
22172         unsigned. Change x and lim locals to unsigned.
22173         (realloc_vdef, realloc_vuse): Change num_elem parameter to
22174         unsigned.
22175         (finalize_ssa_vuse_ops): Change old_i local to unsigned.
22176         (copy_virtual_operands): Change i and n locals to unsigned.
22177
22178 2007-01-19  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
22179
22180         PR middle-end/29335
22181         * builtins.c (fold_builtin_1): Handle builtin fdim.
22182
22183 2007-01-20  Jan Hubicka  <jh@suse.cz>
22184
22185         * tree-ssa.c (init_tree_ssa): Do not call init_alias_heapvars.
22186         * tree-ssa-structalias.c (compute_points_to_sets): Do call
22187         init_alias_heapvars.
22188         (init_alias_heapvars): Initialize only when not already initialized.
22189         (delete_alias_heapvars): Set heapvar_for_stmt to NULL.
22190
22191 2007-01-19  Roger Sayle  <roger@eyesopen.com>
22192
22193         * common.opt (fsigned-zeros): New command line option.
22194         * flags.h (HONOR_SIGNED_ZEROS): Control via flag_signed_zeros instead
22195         of flag_unsafe_math_optimizations.
22196         * opts.c (set_fast_math_flags): The -ffast-math command line option
22197         implies -fno-signed-zeros.
22198         (fast_math_flags_set_p): Likewise.
22199
22200         * doc/invoke.texi: Document new -fno-signed-zeros option, and update
22201         the documentation of -ffast-math appropriately.  Wrap long lines.
22202
22203 2007-01-19  Steve Ellcey  <sje@cup.hp.com>
22204
22205         * system.h (ASM_MAKE_LABEL_LINKONCE): Poison.
22206         * varasm.c (globalize_decl): Remove ASM_MAKE_LABEL_LINKONCE ifdef.
22207
22208 2007-01-19  Tomas Bily  <tbily@suse.cz>
22209
22210         * cgraphunit.c (cgraph_finalize_function): Updating of pid
22211         * tree-profile.c:
22212         (tree_init_ic_make_global_vars): New function
22213         (tree_init_edge_profiler): call of tree_init_ic_make_global_vars
22214         (tree_gen_ic_profiler): New function
22215         (tree_gen_ic_func_profiler): New function
22216         (tree_profiling): Added calling of tree_gen_ic_func_profiler
22217         (tree_profile_hooks): Added hook for indirec/virtual calls
22218         * value-prof.c (tree_find_values_to_profile): New case for
22219         indirect calls
22220         (tree_values_to_profile): Call for determining indirect/virtual
22221         counters
22222         (tree_indirect_call_to_profile): New function
22223         (tree_ic_transform): New function
22224         (tree_ic): New function
22225         (find_func_by_pid): New function
22226         (init_pid_map): New function
22227         (tree_value_profile_transformations): Added check for
22228         indirect/virtual call transformation
22229         * value-prof.h (enum hist_type): New counter type for
22230         indirect/virtual calls
22231         (profile_hooks): Added new hook for profiling indirect/virtual
22232         calls
22233         * profile.c (instrument_values): New case for indirect/virtual
22234         call added
22235         * gcov-io.h (GCOV_LAST_VALUE_COUNTER): Changed to 6
22236         (GCOV_COUNTER_V_INDIR): New counter type
22237         (GCOV_COUNTER_NAMES): New name of counter "indirect" added
22238         (GCOV_MERGE_FUNCTIONS): New merge function for indirect/virtual
22239         call added
22240         * cgraph.c: Definition of cgraph_max_pid
22241         (cgraph_create_node): Default init of pid attribute
22242         * cgraph.h: Declaration of cgraph_max_pid
22243         (struct cgraph_node): Added pid attribute
22244         * libgcov.c (__gcov_indirect_call_profiler): New function
22245         (__gcov_one_value_profiler_body): New function
22246         (__gcov_one_value_profiler): Body was moved to
22247         __gcov_one_value_profiler_body and calls it
22248
22249 2007-01-19  Basile Starynkevitch  <basile@starynkevitch.net>
22250
22251         * doc/gty.texi (Options): Document the mark_hook option to GTY.
22252         * gengtype.c (write_types_data, write_func_for_structure,
22253         write_types, ggc_wtd, pch_wtd): Add skip_hooks to
22254         write_types_data, ggc_wtd, pch_wtd for processing mark_hook.
22255         (walk_type, write_func_for_structure): Generate the mark_hook if
22256         needed.
22257
22258 2007-01-19  Jan Hubicka  <jh@suse.cz>
22259
22260         * ipa-inline.c (cgraph_decide_inlining_incrementally): Instead of
22261         'early' argument take inlining mode argument specifying whether to
22262         inline for size/speeed or all functions; add support for flattening;
22263         improve dumpting.
22264         (cgraph_early_inlining): Update call of decide_inlining_incrementally.
22265
22266 2007-01-19  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
22267
22268         PR c++/17947
22269         * toplev.c (warn_deprecated_use): Use %qD instead of %qs to print
22270         the name of the declared identifier.
22271
22272 2007-01-19  Dirk Mueller  <dmueller@suse.de>
22273
22274         * config/i386.h (CONDITIONAL_REGISTER_USAGE): Store
22275         result of PIC_OFFSET_TABLE_REGNUM in temporary variable to avoid
22276         duplicate evaluation.
22277
22278 2007-01-19  Uros Bizjak  <ubizjak@gmail.com>
22279
22280         * config/i386/i386.md (acos<mode>2): Rename from acossf2 and acosdf2.
22281         Macroize expander using X87MODEF12 mode macro.  Extend operand 1
22282         to XFMode, use acosxf2 and truncate result to requested mode.
22283         Use SSE_FLOAT_MODE_P to disable patterns for SSE math.
22284         (asin<mode>2): Similarly, with asin expanders.
22285         (*fscalexf4_i387): Rename from *fscalexf4.
22286         (expNcorexf3): New expander.
22287         (expxf2, exp10xf2, exp2xf2): Use expNcorexf3 expander.
22288         (exp<mode>2): Rename from expsf2 and expdf2. Macroize expander using
22289         X87MODEF12 mode macro.  Extend operand 1 to XFMode, use expxf2 and
22290         truncate result to requested mode. Use SSE_FLOAT_MODE_P to disable
22291         patterns for SSE math.
22292         (exp10<mode>2): Similarly, with exp10 expanders.
22293         (exp2<mode>2): Similarly, with exp2 expanders.
22294         (expm1<mode>2): Similarly, with expm1 expanders.
22295         (ldexp<mode>3): Similarly, with ldexp expanders.
22296         (log<mode>2, log10<mode>2, log2<mode>2, log1p<mode>2, logb<mode>2):
22297         Use gen_truncxf<mode>2_i387_noop to truncate result.
22298
22299 2007-01-19  Richard Sandiford  <richard@codesourcery.com>
22300
22301         * config/m68k/m68k.h (PREFERRED_STACK_BOUNDARY): Define to 32
22302         for ColdFire targets.
22303
22304 2007-01-19  Nathan Sidwell  <nathan@codesourcery.com>
22305             Richard Sandiford  <richard@codesourcery.com>
22306
22307         * config/m68k/m68k.h (M68K_STATIC_CHAIN_REG_NAME): New macro.
22308         (INITIALIZE_TRAMPOLINE): Use STATIC_CHAIN_REGNUM.
22309         (__transfer_from_trampoline): Use M68K_STATIC_CHAIN_REG_NAME.
22310         * config/m68k/m68kelf.h (STATIC_CHAIN_REGNUM): Override.
22311         (M68K_STATIC_CHAIN_REG_NAME): Likewise.
22312         * config/m68k/netbsd-elf.h (M68K_STATIC_CHAIN_REG_NAME): Likewise.
22313
22314 2007-01-19  Richard Sandiford  <richard@codesourcery.com>
22315
22316         * config/m68k/m68k.md (adddi_dilshr32): Rename to...
22317         (*adddi_dilshr32): ...this.  Fix formatting.  Remove commented-out
22318         non-canonical pattern.  Restrict to !TARGET_COLDFIRE.
22319         (*adddi_dilshr32_cf): New pattern.
22320         (adddi3, subdi3): Remove first alternatives.
22321
22322 2007-01-19  Richard Sandiford  <richard@codesourcery.com>
22323
22324         * config/m68k/m68k.c (notice_update_cc): If an SFmode move is
22325         implemented using move.l, do not use its cc result for floating-point
22326         comparisons.
22327
22328 2007-01-19  Richard Sandiford  <richard@codesourcery.com>
22329
22330         * config/m68k/m68k.h (EXTRA_CONSTRAINT): Stop the 'T' constraint
22331         from accepting 's' constraints if flag_pic.
22332
22333 2007-01-19  Richard Sandiford  <richard@codesourcery.com>
22334
22335         * config/m68k/m68k.md (bordered, bunordered, buneq, bunge, bungt)
22336         (bunle, bunlt, bltgt, bordered_rev, bunordered_rev, buneq_rev)
22337         (bunge_rev, bungt_rev, bunle_rev, bunlt_rev, bltgt_rev): Change
22338         condition from TARGET_68881 to TARGET_HARD_FLOAT.
22339
22340 2007-01-19  Sandra Loosemore  <sandra@codesourcery.com>
22341
22342         * longlong.h (count_leading_zeros, COUNT_LEADING_ZEROS_0): Add
22343         ColdFire alternatives.
22344         * config/m68k/m68k.h (CLZ_DEFINED_VALUE_AT_ZERO): New macro.
22345         * config/m68k/m68k.md (clzsi2):  Define for ColdFire
22346         architectures that support ff1 instruction.
22347
22348 2007-01-19  Richard Sandiford  <richard@codesourcery.com>
22349             Julian Brown  <julian@codesourcery.com>
22350
22351         * config/m68k/m68k.h (CONST_OK_FOR_LETTER_P): Add an 'R' case.
22352         * config/m68k/m68k.md (*movsi_cfv4): Fold into...
22353         (*movsi_cf): ...here.  Remove unnecessary 'R' from 'Rg'.
22354         Add commentary.
22355
22356 2007-01-19  Richard Sandiford  <richard@codesourcery.com>
22357
22358         * config/m68k/m68k-protos.h (valid_mov3q_const): Take a HOST_WIDE_INT
22359         and return a bool.
22360         (output_move_const_into_data_reg, output_move_simode_const): Delete.
22361         * config/m68k/m68k.c (const_method, const_int_cost): Take a
22362         HOST_WIDE_INT instead of an rtx.
22363         (m68k_rtx_costs): Update call accordingly.
22364         (output_move_const_into_data_reg): Likewise.  Fix formatting.
22365         (valid_mov3q_const): Take a HOST_WIDE_INT instead of an rtx.
22366         Return a bool.
22367         (output_move_simode_const): Update calls after above changes.
22368         Rework to use automatic variables and predicates like MEM_P.
22369         * config/m68k/m68k.md (pushexthisi_const): Update call to
22370         valid_mov3q_const.
22371
22372 2007-01-19  Dirk Mueller  <dmueller@suse.de>
22373
22374         * tree-ssa-alias.c (perform_var_substitution): Fix typo
22375         in dump_flags test.
22376
22377 2007-01-19  Richard Guenther  <rguenther@suse.de>
22378
22379         * builtins.c (expand_builtin_cexpi): Fall back to expanding
22380         via cexp in case sincos is not available.
22381
22382 2007-01-19  Richard Guenther  <rguenther@suse.de>
22383
22384         * doc/tm.texi (TARGET_HAS_SINCOS): Document new target macro.
22385         * defaults.h (TARGET_HAS_SINCOS): Default to off.
22386         * config/linux.h (TARGET_HAS_SINCOS): Set to on if we have glibc.
22387         * config/alpha/linux.h (TARGET_HAS_SINCOS): Likewise.
22388         * config/sparc/linux.h (TARGET_HAS_SINCOS): Likewise.
22389         * config/sparc/linux64.h (TARGET_HAS_SINCOS): Likewise.
22390         * config/rs6000/linux.h (TARGET_HAS_SINCOS): Likewise.
22391         * config/rs6000/linux64.h (TARGET_HAS_SINCOS): Likewise.
22392
22393 2007-01-19  Uros Bizjak  <ubizjak@gmail.com>
22394
22395         * config/i386/i386.md (*fpatanxf3_i387, fpatan_extend<mode>xf3_i387):
22396         New insn patterns.
22397         (atan2sf3_1, atan2df3_1, atan2xf3_1): Remove insn patterns.
22398         (atan2xf3): Directly generate RTL pattern.
22399         (atan2<mode>3): Rename from atan2sf3 and atan2df3 and macroize insn
22400         patterns using X87MODEF12 mode macro.  Use fpatan_extend<mode>xf3_i387
22401         and truncate result to requested mode.  Use SSE_FLOAT_MODE_P to
22402         disable patterns for SSE math.
22403         (atan<mode>2): Rename from atansf2 and atandf2 and macroize insn
22404         patterns using X87MODEF12 mode macro.  Use fpatan_extend<mode>xf3_i387
22405         and truncate result to requested mode.  Use SSE_FLOAT_MODE_P to
22406         disable patterns for SSE math.
22407
22408 2007-01-19  Alexandre Oliva  <aoliva@redhat.com>
22409
22410         * libgcc-std.ver: Fix typo in %inherit for GCC_4.3.0.
22411
22412 2007-01-18  Roger Sayle  <roger@eyesopen.com>
22413
22414         * fold-const.c (fold_unary) <VIEW_CONVERT_EXPR>: Optimize away a
22415         VIEW_CONVERT_EXPR to the same type as it's operand.
22416
22417 2007-01-18  David Edelsohn  <edelsohn@gnu.org>
22418
22419         * config/rs6000/darwin-ldouble.c: Only build _SOFT_FLOAT if
22420         configured for long double 128.
22421
22422 2007-01-18  Mike Stump  <mrs@apple.com>
22423
22424         * config/rs6000/rs6000.c (rs6000_emit_vector_compare): Fix build
22425         error.
22426
22427 2007-01-18  Michael Meissner  <michael.meissner@amd.com>
22428
22429         * i386.c (ix86_compute_frame_layout): Make fprintf's in #if 0 code
22430         type correct.
22431
22432 2007-01-18  Jan Hubicka  <jh@suse.cz>
22433
22434         * tree-ssa-operands.c (vop_free_bucket_size): Never return value
22435         greater than NUM_VOP_FREE_BUCKETS.
22436
22437 2007-01-18  Daniel Berlin  <dberlin@dberlin.org>
22438
22439         * tree-ssa-structalias.c: Update comments.
22440         (ptabitmap_obstack): Removed.
22441         (pta_obstack): New.
22442         (oldpta_obstack): Ditto.
22443         (stats): Add a few members.
22444         (struct variable_info): Remove node, complex, address_taken, and
22445         indirect_target members. Add oldsolution member.
22446         (new_var_info): Do not initialize removed members.
22447         (constraint_expr_type): Remove INCLUDES.
22448         (constraint_graph): Add size, implicit_preds, rep,
22449         indirect_cycles, eq_rep, label, direct_nodes, and complex members.
22450         (FIRST_REF_NODE): New macro.
22451         (LAST_REF_NODE): Ditto.
22452         (FIRST_ADDR_NODE): Ditto.
22453         (find): New function.
22454         (unite): Ditto.
22455         (dump_constraint): Do not handle INCLUDES.
22456         (insert_into_complex): Do not insert duplicate constraints.
22457         (condense_varmap_nodes): Renamed and rewritten into ...
22458         (merge_node_constraints): This. Also fix bug in handling of
22459         offseted copy constraints.
22460         (clear_edges_for_node): No longer need to deal with preds at all,
22461         or removing associated preds/succs.
22462         (merge_graph_nodes): Deal with indirect_cycles.
22463         Don't deal with predecessors.
22464         (add_implicit_graph_edge): New function.
22465         (add_pred_graph_edge): Ditto.
22466         (add_graph_edge): Don't deal with predecessors.
22467         (build_constraint_graph): Removed.
22468         (build_pred_graph): New function.
22469         (build_succ_graph): Ditto.
22470         (struct scc_info): Removed in_component. Added roots, dfs, and
22471         node_mapping. Remove visited_index, unification_queue.
22472         (scc_visit): Deal with union-find we do now.
22473         Deal with cycles with REF nodes.
22474         (collapse_nodes): Renamed and rewritten to ...
22475         (unify_nodes): This.
22476         (process_unification_queue): Removed.
22477         (topo_visit): Cleanup
22478         (do_da_constraint): Use find.
22479         (do_sd_constraint): Ditto.
22480         (do_ds_constraint): Ditto.
22481         (do_complex_constraint): Ditto.
22482         (init_scc_info): Update for removed and added members.
22483         (find_and_collapse_graph_cycles): Renamed and rewritten into ...
22484         (find_indirect_cycles): This.
22485         (equivalence_class): New variable.
22486         (label_visit): New function.
22487         (perform_variable_substitution): Rewritten.
22488         (free_var_substitution_info): New function.
22489         (find_equivalent_node): Ditto.
22490         (move_complex_constraints): Ditto.
22491         (eliminate_indirect_cycles): Ditto.
22492         (solve_graph): Only propagate changed bits.
22493         Use indirect cycle elimination.
22494         Use find.
22495         (tree_id_t): Rename to tree_vi_t, delete id member, add vi member.
22496         (tree_id_eq): Renamed to ...
22497         (tree_vi_eq): This. Update for member change
22498         (insert_id_for_tree): Renamed and rewritten to ...
22499         (insert_vi_for_tree): This.
22500         (lookup_id_for_tree): Renamed and rewritten to ...
22501         (lookup_vi_for_tree): This.
22502         (get_id_for_tree): Renamed and rewritten to ...
22503         (get_vi_for_tree): Ditto.
22504         (get_constraint_exp_from_ssa_var): Update to use get_vi_for_tree.
22505         (process_constraint): Don't handle INCLUDES.
22506         Remove special ADDRESSOF case.
22507         (find_func_aliases): Rewrite to use vi functions instead of id
22508         ones.
22509         (create_function_info_for): Ditto.
22510         (create_variable_info_for): Ditto.
22511         (intra_create_variable_infos): Ditto.
22512         (merge_smts_into): Ditto.
22513         (find_what_p_points_to): Ditto.
22514         (init_base_vars): Ditto.
22515         (init_alias_vars): Ditto.
22516         (remove_preds_and_fake_succs): New function.
22517         (dump_sa_points_to_info): Dump new stats.
22518         (dump_solution_for_var): Use find.
22519         (set_used_smts): Fix formatting.
22520         (compute_points_to_sets): Updated for new functions.
22521         (ipa_pta_execute): Ditto.
22522
22523 2007-01-18  Kazu Hirata  <kazu@codesourcery.com>
22524             Richard Sandiford  <richard@codesourcery.com>
22525
22526         * doc/tm.texi (TARGET_FUNCTION_VALUE): Expand documentation of
22527         parallels.
22528         * calls.c (expand_call): If the return value is a PARALLEL,
22529         extract its first member.
22530         * config/m68k/linux.h (FUNCTION_EXTRA_EPILOGUE): Remove.
22531         * config/m68k/m68k.c (m68k_output_function_epilogue): Don't
22532         use FUNCTION_EXTRA_EPILOGUE.
22533         (m68k_function_value): Return a PARALLEL if the return value
22534         is of a pointer type.
22535         * config/m68k/netbsd-elf.h (current_function_returns_pointer)
22536         (FUNCTION_EXTRA_EPILOGUE): Remove.
22537         * config/m68k/m68k.md (D0_REG): New constant.
22538
22539 2007-01-18  Kazu Hirata  <kazu@codesourcery.com>
22540
22541         * config/m68k/m68k.c (m68k_output_function_epilogue): Don't
22542         output a NOP for empty epilogues.
22543
22544 2007-01-18  Richard Sandiford  <richard@codesourcery.com>
22545
22546         * config/m68k/m68k.c (m68k_use_return_insn): Update comments
22547         before function.  Extend register save check to include all
22548         registers, not just integer ones.
22549
22550 2007-01-18  Kazu Hirata  <kazu@codesourcery.com>
22551
22552         * config/m68k/m68k-protos.h (use_return_insn): Rename to...
22553         (m68k_use_return_insn): ...this.
22554         * config/m68k/m68k.h (USE_RETURN_INSN): Delete.
22555         * config/m68k/m68k.c (use_return_insn): Rename to...
22556         (m68k_use_return_insn): ...this.
22557         * config/m68k/m68k.md (return): Use m68k_use_return_insn instead
22558         of USE_RETURN_INSN.
22559
22560 2007-01-18  Nathan Sidwell  <nathan@codesourcery.com>
22561
22562         * config/m68k/fpgnulib.c (__truncdfsf2): Implement round to
22563         nearest even, fix denormal rounding overflow.
22564
22565 2007-01-18  Richard Sandiford  <richard@codesourcery.com>
22566
22567         * config/m68k/m68k.md (movsf_cf_hard): Use fsmove instead of
22568         f%$smove and f%$move.
22569         (movdf_cf_hard): Use fdmove for cases 0 and 3 and fmove for case 1.
22570         (extendsfdf2_cf): Use fdmove instead of f%&move.
22571         (truncdfsf2_cf): Use fsmove instead of f%$smove.
22572         (add<mode>3_cf, sub<mode>3_cf): Use <FP:prec> instead of <FP:round>.
22573
22574 2007-01-18  Richard Sandiford  <richard@codesourcery.com>
22575
22576         * config/m68k/m68k.md (movdf_cf_hard): Use output_move_double for
22577         GPR<-GPR moves.
22578
22579 2007-01-18  Richard Sandiford  <richard@codesourcery.com>
22580
22581         * real.h (real_format): Add a canonical_nan_lsbs_set field.
22582         (coldfire_single_format): Declare.
22583         (coldfire_double_format): Likewise.
22584         * real.c (encode_ieee_single): Use canonical_nan_lsbs_set instead
22585         of qnan_msb_set to determine the lower bits of a canonical
22586         NaN significand.
22587         (encode_ieee_double): Likewise.
22588         (encode_ieee_quad): Likewise.
22589         (ieee_single_format): Initialize canonical_nan_lsbs_set.
22590         (mips_single_format): Likewise.
22591         (ieee_double_format): Likewise.
22592         (mips_double_format): Likewise.
22593         (ieee_extended_motorola_format): Likewise.
22594         (ieee_extended_intel_96_format): Likewise.
22595         (ieee_extended_intel_128_format): Likewise.
22596         (ieee_extended_intel_96_round_53_format): Likewise.
22597         (ibm_extended_format): Likewise.
22598         (mips_extended_format): Likewise.
22599         (ieee_quad_format): Likewise.
22600         (mips_quad_format): Likewise.
22601         (vax_f_format): Likewise.
22602         (vax_d_format): Likewise.
22603         (vax_g_format): Likewise.
22604         (i370_single_format): Likewise.
22605         (i370_double_format): Likewise.
22606         (decimal_single_format): Likewise.
22607         (decimal_double_format): Likewise.
22608         (decimal_quad_format): Likewise.
22609         (c4x_single_format): Likewise.
22610         (c4x_extended_format): Likewise.
22611         (real_internal_format): Likewise.
22612         (coldfire_single_format): New real_format.
22613         (coldfire_double_format): Likewise.
22614         * config/pdp11/pdp11.c (pdp11_f_format): Initialize
22615         canonical_nan_lsbs_set.
22616         (pdp11_d_format): Likewise.
22617         * config/m68k/m68k.c (override_options): Override REAL_FORMAT_MODE
22618         if TARGET_COLDFIRE_CPU.
22619
22620 2007-01-18  Richard Sandiford  <richard@codesourcery.com>
22621
22622         * config/m68k/m68k-protos.h (m68k_output_pic_call): Delete.
22623         (output_call, m68k_legitimize_call_address): Declare.
22624         * config/m68k/m68k.h (EXTRA_CONSTRAINT): Remove unnecessary
22625         parenthesees.  Add support for a 'W' constraint.
22626         (LEGITIMATE_PIC_OPERAND_P): Remove SYMBOL_REF_FLAG handling.
22627         (PRINT_OPERAND_PUNCT_VALID_P): Remove comment about 'o'.
22628         (m68k_symbolic_call, m68k_symbolic_jump): Declare.
22629         * config/m68k/m68k.c (m68k_symbolic_call, m68k_symbolic_jump): New
22630         variables.
22631         (override_options): Initialize them.  Do not set flag_no_function_cse
22632         for TARGET_ID_SHARED_LIBRARY.
22633         (m68k_output_pic_call): Delete.
22634         (m68k_legitimize_call_address): New function.
22635         (print_operand): Remove the %o prefix.  Handle the %p prefix.
22636         (output_call): New function.
22637         (m68k_output_mi_thunk): Use m68k_symbolic_jump.  Always load the
22638         target address from the GOT if symbolic jumps are not allowed.
22639         * config/m68k/m68k.md (call, general_operand): Do not set
22640         SYMBOL_REF_FLAG.  Use m68k_legitimize_call_address instead.
22641         Merge separate flag_pic and !flag_pic define_insns into...
22642         (*call, *call_value): ...these new patterns.  Match the address
22643         rather than the containing MEM and require it to be a call_operand.
22644         Use output_call to generate the asm template.
22645         * config/m68k/predicates.md (const_call_operand): New predicate.
22646         (call_operand): Likewise.
22647
22648 2007-01-18  Nathan Sidwell  <nathan@codesourcery.com>
22649
22650         * config/m68k/m68k.h (REGISTER_MOVE_COST): Simplify definition.
22651         (STACK_GROWS_DOWNWARD): Define to 1.
22652         (FUNCTION_VALUE, LIBCALL_VALUE, FUNCTION_VALUE_REGNO_P): Equivocate
22653         comments, emphasizing that these values are only defaults.
22654         * config/m68k/linux.h (LINK_SPEC): Fix formatting in #undef.
22655         * config/m68k/m68k.c (const_method): Remove trailing whitespace.
22656
22657 2007-01-18  Richard Sandiford  <richard@codesourcery.com>
22658
22659         * config/m68k/m68k.md (cmpsi): Remove outdated flag_pic handling.
22660
22661 2007-01-18  Kazu Hirata  <kazu@codesourcery.com>
22662             Richard Sandiford  <richard@codesourcery.com>
22663
22664         * config/m68k/m68k.h (DATA_REGNO_P, ADDRESS_REGNO_P, INT_REGNO_P)
22665         (FP_REGNO_P): New macros.
22666         (REGNO_OK_FOR_INDEX_P, REGNO_OK_FOR_BASE_P, REGNO_OK_FOR_DATA_P)
22667         (REGNO_OK_FOR_FP_P, REG_OK_FOR_INDEX_P, REG_OK_FOR_BASE_P): Use them.
22668         (EH_RETURN_STACKADJ_RTX): Use A0_REG.
22669         * config/m68k/m68k.c (m68k_regno_mode_ok): Use the new REGNO macros.
22670
22671 2007-01-18  Nathan Sidwell  <nathan@codesourcery.com>
22672
22673         * config.gcc (m68k-*-aout*, m68k-*-coff*, m68020-*-elf*, m68k-*-elf*)
22674         (m68k-*-uclinuxoldabi, m68k-*-uclinux*, m68k-*-rtems*): Add t-floatlib
22675         to $tmake_file.
22676         * config/m68k/t-floatlib: New file, extracting common code from...
22677         * config/m68k/t-m68kbare, config/m68k/t-m68kelf,
22678         * config/m68k/t-uclinux: Here.
22679         * config/m68k/fpgnulib.c: Do not compile extendeed precision
22680         routines on ColdFire targets.
22681
22682 2007-01-18  Nathan Sidwell  <nathan@codesourcery.com>
22683
22684         * config.gcc (m68k-*-aout*, m68k-*-coff*, m68020-*-elf*, m68k-*-elf*)
22685         (m68010-*-netbsdelf*, m68k*-*-netbsdelf*, m68k*-*-openbsd*)
22686         (m68k-*-uclinuxoldabi, m68k-*-uclinux*, m68k-*-linux*)
22687         (m68k-*-rtems*): Use tm_file rather than m68k/m68k.h and
22688         explicitly set MOTOROLA to 1.
22689         * config/m68k/m68k.h (MOTOROLA): Simplify definition accordingly.
22690
22691 2007-01-18  Richard Sandiford  <richard@codesourcery.com>
22692             Nathan Sidwell  <nathan@codesourcery.com>
22693
22694         * config/m68k/m68k.h (PCC_STATIC_STRUCT_RETURN): Delete.
22695         (ASM_OUTPUT_REG_PUSH, ASM_OUTPUT_REG_POP): Add MOTOROLA cases.
22696         * config/m68k/coff.h (REGISTER_PREFIX_MD): Delete.
22697         * config/m68k/m68020-elf.h (LIB_SPEC): Delete.
22698         * config/m68k/m68k-none.h (CC1_SPEC, CPP_SUBTARGET_SPEC): Delete.
22699         * config/m68k/m68kelf.h (IMMEDIATE_PREFIX, REGISTER_PREFIX_MD)
22700         (ASM_OUTPUT_REG_PUSH, ASM_OUTPUT_REG_POP): Delete.
22701         (NO_DOLLAR_IN_LABEL, PCC_STATIC_STRUCT_RETURN): Don't undefine.
22702         (BSS_ASM_OP, ASM_OUTPUT_SKIP, ASM_OUTPUT_ASCII): Delete.
22703         * config/m68k/m68kemb.h (PCC_STATIC_STRUCT_RETURN): Don't undefine.
22704         * config/m68k/linux.h (SIZE_TYPE, PTRDIFF_TYPE, WCHAR_TYPE)
22705         (WCHAR_TYPE_SIZE, TARGET_OBJFMT_CPP_BUILTINS): Delete.
22706         (TARGET_OS_CPP_BUILTINS): Don't define mc68000 and mc68020 here.
22707         (DBX_REGISTER_NUMBER): Delete.
22708         * config/m68k/netbsd-elf.h (IMMEDIATE_PREFIX): Delete.
22709         (PCC_STATIC_STRUCT_RETURN): Don't undefine.
22710         * config/m68k/openbsd.h (PCC_STATIC_STRUCT_RETURN): Define.
22711
22712 2007-01-18  Richard Sandiford  <richard@codesourcery.com>
22713
22714         * config.gcc (m68k-*-uclinux*): Add flat.h to $tm_file.
22715         * config/flat.h: New file.
22716         * crtstuff.c (USE_PT_GNU_EH_FRAME): Don't define if
22717         OBJECT_FORMAT_FLAT.
22718         * config/m68k/m68k.h (ASM_PREFERRED_EH_DATA_FORMAT): Do not use
22719         indirect references for -msep-data or -mid-shared-library.
22720         Do not use PC-relative code addresses either.
22721         * config/m68k/m68k.c (override_options): Restrict -fPIC error
22722         to -mpcrel.
22723         * config/m68k/uclinux.h (STARTFILE_SPEC): Define.  Use Scrt1.o
22724         for shared libraries and crt1.o for executables.  Use crti.o and
22725         crtbegin.o.
22726         (ENDFILE_SPEC): Use crtend.o and crtn.o.
22727         (LIB_SPEC): Suppress -Rlibc.gdb if -static-libc is given.
22728         Do not add -elf2flt or -shared-lib-id options here.
22729         (LINK_SPEC): Define.  Pass -elf2flt if no -elf2flt option is given.
22730         Pass -shared-lib-id if -mid-shared-library, taking the library
22731         identifier from -mshared-library-id if given, otherwise
22732         defaulting to 0.
22733         (EH_FRAME_IN_DATA_SECTION): Do not undefine.
22734         (INIT_SECTION_ASM_OP, FINI_SECTION_ASM_OP): Likewise.
22735         (TARGET_OS_CPP_BUILTINS): Define __GXX_MERGED_TYPEINFO_NAMES=0
22736         and __GXX_TYPEINFO_EQUALITY_INLINE=0 if -mid-shared-library.
22737         (DRIVER_SELF_SPECS): Map unadorned PIC options to -msep-data.
22738         * config/m68k/t-uclinux (EXTRA_MULTILIB_PARTS): Add crtbegin.o
22739         and crtend.o.
22740         * config/m68k/lb1sf68.asm (PICCALL): Use an lea and pc-relative
22741         jump sequence for ISA A and ISA A+.
22742         (PICJUMP): Likewise.
22743
22744 2007-01-18  Richard Sandiford  <richard@codesourcery.com>
22745
22746         * config.gcc (m68k-*-uclinux*): Base the port on the common
22747         and m68k GNU/Linux files rather than on the generic ELF ones.
22748         * config/m68k/uclinux.h (TARGET_VERSION): Override.
22749         (TARGET_OS_CPP_BUILTINS): Use LINUX_TARGET_OS_CPP_BUILTINS.
22750
22751 2007-01-18  Julian Brown  <julian@codesourcery.com>
22752             Richard Sandiford  <richard@codesourcery.com>
22753
22754         * config/m68k/m68k.h (LONG_DOUBLE_TYPE_SIZE): Make 64-bit on ColdFire.
22755         (LIBGCC2_LONG_DOUBLE_TYPE_SIZE): Likewise.
22756         * config/m68k/netbsd-elf.h (LIBGCC2_LONG_DOUBLE_TYPE_SIZE): Undefine
22757         before redefining.
22758         * config/m68k/uclinux-oldabi.h (LONG_DOUBLE_TYPE_SIZE): Redefine to
22759         80 unconditionally.
22760         (LIBGCC2_LONG_DOUBLE_TYPE_SIZE): Likewise.
22761
22762 2007-01-18  Richard Sandiford  <richard@codesourcery.com>
22763
22764         * doc/install.texi: Document m68k-uclinuxoldabi.
22765         * config.gcc (m68k-*-uclinuxoldabi): New configuration.
22766         * config/m68k/uclinux-oldabi.h: New file, copied from
22767         config/m68k/uclinux.h.
22768
22769 2007-01-18  Kaz Kojima  <kkojima@rr.iij4u.or.jp>
22770
22771         * config/m32r/m32r-protos.h (m32r_expand_epilogue): Declare it.
22772         * config/m32r/m32r.c (m32r_setup_incoming_varargs): Use gen_frame_mem.
22773         (m32r_compute_frame_size): Use unsigned for regno.
22774         (m32r_reload_lr): Use gen_frame_mem.
22775         (pop): New.
22776         (m32r_output_function_epilogue): Don't output the function epilogue
22777         textually here.
22778         (m32r_expand_epilogue): New.
22779         (direct_return): Return false if the function has the interrupt
22780         attribute.
22781         (m32r_hard_regno_rename_ok): Remove code for the textual epilogue.
22782         * config/m32r/m32r.md (epilogue): New expander.
22783         (return_lr, return_rte): New insns.
22784         (return): Make it expander.
22785         (return_normal): New expander.
22786
22787 2007-01-18  Josh Conner  <jconner@apple.com>
22788
22789         PR target/30485
22790         * config/rs6000/rs6000.c (rs6000_emit_vector_compare): Add
22791         support for UNLE, UNLT, UNGE, and UNGT.
22792
22793 2007-01-18  Jan Hubicka  <jh@suse.cz>
22794
22795         * tree-vrp.c (finalize_jump_threads): Do not call cleanup_cfg by hand.
22796         * tree-tailcall (add_virtual_phis): Likewise.
22797         (optimize_tail_call): Return TODOs.
22798         (execute_tail_calls): Return TODOs.
22799         * tree-ssa-ccp (execute_fold_all_builtins): Do cleanup_cfg via TODO.
22800         * tree-cfgcleanup.c (cleanup_tree_cfg_loop): Return if something
22801         changed.
22802         * tree-ssa-forwprop.c (tree_ssa_forward_propagate_single_use_value):
22803         Cleanup cfg using TODO.
22804         * tree-flow.h (cleanup_tree_cfg_loop): Update prototype.
22805         * passes.c (execute_function_todo): When cleanup did something, remove
22806         unused locals.
22807         * tree-cfg.c (pass_build_cfg): Add cleanup_cfg TODO.
22808         (make_edges): Don't cleanup_cfg.
22809
22810 2007-01-18  Uros Bizjak  <ubizjak@gmail.com>
22811
22812         * reg-stack.c (subst_stack_regs_pat) [UNSPEC_SINCOS_COS,
22813         UNSPEC_XTRACT_FRACT]: Use generic code for instructions that
22814         operate on the top of stack.
22815         [UNSPEC_SINCOS_SIN, UNSPEC_XTRACT_EXP, UNSPEC_TAN]: Rewrite
22816         register handling of instructions that output to the second
22817         stack slot.
22818         [UNSPEC_TAN_ONE, UNSPEC_TAN_TAN]: Remove.
22819         (move_for_stack_reg): Special-case check for dead destination
22820         stack slot for constant load of 1.0 inside UNSPEC_TAN.
22821
22822         * config/i386/i386.md (UNSPEC_TAN): New constant.
22823         (UNSPEC_TAN_ONE, UNSPEC_TAN_TAN): Remove.
22824         (fptanxf4_i387, fptan_extend<mode>xf4_i387): New patterns
22825         to correctly model move of constant 1.0 to top stack slot.
22826         (*tandf3_1, *tansf3_1, *tanxf3_1): Remove insn patterns.
22827         (unnamed peephole2 pattern): Remove corresponding peephole2
22828         pattern that optimizes tan insn and loading of constant 1.0.
22829         (tanxf2): Use fptanxf4_i387.
22830         (tan<mode>2): Rename from tansf2 and tandf2 and macroize insn
22831         patterns using X87MODEF12 mode macro.  Use fptan_extend<mode>xf4_i387
22832         and truncate result to requested mode.  Use SSE_FLOAT_MODE_P to
22833         disable patterns for SSE math.
22834         (sincos<mode>3): Use truncxf<mode>2_i387_noop for truncation.
22835         (fyl2x_extend<mode>xf3_i387): Use X87MODEF12 for operand 1.
22836
22837 2007-01-18  Dirk Mueller  <dmueller@suse.de>
22838             Richard Guenther <rguenther@suse.de>
22839
22840         PR diagnostic/8268
22841         * doc/invoke.texi (Warray-bounds): Document -Warray-bounds.
22842         * common.opt (Warray-bounds): Add new warning option.
22843         * c-opts.c (c_common_handle_option): Define -Warray-bounds
22844         if -Wall is given.
22845         * Makefile.in: make tree-vrp.o depend on toplev.h
22846         * tree-vrp.c (vrp_finalize): Call check_array_refs if -Warray-bounds
22847         is enabled.
22848         (check_array_refs, check_array_bounds, check_array_ref): New.
22849
22850 2007-01-18  Jan Hubicka  <jh@suse.cz>
22851
22852         * tree-ssa-ccp.c (ccp_finalize): Return if something changed.
22853         (execute_ssa_ccp): Return flags conditionally.
22854         * tree-ssa-propagate.c (substitue_and_fold): Return if something was
22855         changed.
22856         * tree-ssa-propagate.h (substitute_and_fold): Update prototype.
22857
22858 2007-01-18  Steven Bosscher  <steven@gcc.gnu.org>
22859
22860         * cfgcleanup.c (cleanup_cfg): Detect cfglayout mode and set
22861         the CLEANUP_CFGLAYOUT flag when in cfglayout mode.
22862
22863         * Makefile.c (GTFILES): Add cfglayout.h.
22864         * gengtype.c (open_base_files): Likewise.
22865         * cfglayout.c (cfg_layout_function_footer,
22866         cfg_layout_function_header) Reindent to make gengtype happy.
22867         * cfglayout.h (cfg_layout_function_footer,
22868         cfg_layout_function_header): Add GTY(()) marker.
22869
22870         * ifcvt.c (noce_try_sign_mask): Make sure INSN_B is non-null.
22871
22872 2007-01-18  Ben Elliston  <bje@au.ibm.com>
22873
22874         * genautomata.c (write_automata): Include xstrerror output in the
22875         error message if writing the DFA description file fails.
22876
22877 2007-01-17  H.J. Lu  <hongjiu.lu@intel.com>
22878
22879         * config/mips/mips-protos.h (mips_output_external): Make it
22880         return void.
22881         * config/mips/iris.h (TARGET_ASM_EXTERNAL_LIBCALL): Removed.
22882         * config/mips/mips.c (irix_output_external_libcall): Likewise.
22883         (extern_list): Likewise.
22884         (extern_head): Likewise.
22885         (TARGET_ASM_FILE_END): Likewise.
22886         (mips_file_end): Likewise.
22887         (mips_output_external): Rewritten.
22888
22889 2007-01-18  Ben Elliston  <bje@au.ibm.com>
22890
22891         * genpreds.c (write_insn_preds_c): Only write out the function
22892         body for regclass_for_constraint if we have register constraints.
22893
22894 2007-01-17  Tom Tromey  <tromey@redhat.com>
22895
22896         * doc/sourcebuild.texi (libgcj Tests): Use sourceware.org.
22897         * doc/install.texi (Testing): Use sourceware.org.
22898         (Binaries): Likewise.
22899         (Specific): Likewise.
22900         * doc/contrib.texi (Contributors): Use sourceware.org.
22901
22902 2007-01-17  Anatoly Sokolov <aesok@post.ru>
22903
22904         * config/avr/avr.h (AVR_HAVE_LPMX): New macro.
22905         (AVR_ENHANCED): Rename to ...
22906         (AVR_HAVE_MUL): ... new.
22907         (avr_enhanced_p): Rename to ...
22908         (avr_have_mul_p): ... new.
22909         (TARGET_CPU_CPP_BUILTINS): Use 'avr_have_mul_p' instead of
22910         'avr_enhanced_p' for "__AVR_ENHANCED__". Define "__AVR_HAVE_MUL__".
22911         * config/avr/avr.c (avr_enhanced_p): Rename to ...
22912         (avr_have_mul_p): ... new.
22913         (base_arch_s): Rename 'enhanced' to 'have_mul'.
22914         (avr_override_options): Use 'avr_have_mul_p' and 'have_mul' instead of
22915         'avr_enhanced_p' and 'enhanced'.
22916         (ashlhi3_out, ashrhi3_out, lshrhi3_out, avr_rtx_costs): Use
22917         AVR_HAVE_MUL instead of AVR_ENHANCED.
22918         * avr.md (*tablejump_enh): Use AVR_HAVE_LPMX instead of AVR_ENHANCED.
22919         (mulqi3, *mulqi3_enh, *mulqi3_call, mulqihi3, umulqihi3, mulhi3,
22920         *mulhi3_enh, *mulhi3_call, mulsi3, *mulsi3_call): Use AVR_HAVE_MUL
22921         instead of AVR_ENHANCED.
22922         (*tablejump_enh): Use AVR_HAVE_LPMX instead of AVR_ENHANCED.
22923         * libgcc.S: Use __AVR_HAVE_MUL__ instead of __AVR_ENHANCED__.
22924         (__tablejump__): Use __AVR_HAVE_LPMX__ instead of __AVR_ENHANCED__.
22925
22926 2007-01-17  Ian Lance Taylor  <iant@google.com>
22927
22928         * vec.h (VEC_reserve_exact): Define.
22929         (vec_gc_p_reserve_exact): Declare.
22930         (vec_gc_o_reserve_exact): Declare.
22931         (vec_heap_p_reserve_exact): Declare.
22932         (vec_heap_o_reserve_exact): Declare.
22933         (VEC_OP (T,A,reserve_exact)): New static inline function, three
22934         versions.
22935         (VEC_OP (T,A,reserve)) [all versions]: Remove handling of
22936         negative parameter.
22937         (VEC_OP (T,A,alloc)) [all versions]: Call ...reserve_exact.
22938         (VEC_OP (T,A,copy)) [all versions]: Likewise.
22939         (VEC_OP (T,a,safe_grow)) [all versions]: Likewise.
22940         * vec.c (calculate_allocation): Add exact parameter.  Change all
22941         callers.
22942         (vec_gc_o_reserve_1): New static function, from vec_gc_o_reserve.
22943         (vec_gc_p_reserve, vec_gc_o_reserve): Call vec_gc_o_reserve_1.
22944         (vec_gc_p_reserve_exact, vec_gc_o_reserve_exact): New functions.
22945         (vec_heap_o_reserve_1): New static function, from vec_heap_o_reserve.
22946         (vec_heap_p_reserve, vec_heap_o_reserve): Call vec_heap_o_reserve_1.
22947         (vec_heap_p_reserve_exact): New function.
22948         (vec_heap_o_reserve_exact): New function.
22949
22950 2007-01-17  Jan Hubicka  <jh@suse.cz>
22951
22952         * ipa-type-escape.c (look_for_casts): Revamp using handled_component_p.
22953
22954 2007-01-17  Eric Christopher  <echristo@apple.com>
22955
22956         * config.gcc: Support core2 processor.
22957
22958 2007-01-16  Jan Hubicka  <jh@suse.cz>
22959
22960         * tree-ssanames.c (release_dead_ssa_names): Instead of ggc_freeing
22961         the names, just unlink the chain so we don't crash on dangling
22962         pointers
22963         to dead SSA names.
22964
22965 2007-01-16  Jan Hubicka  <jh@suse.cz>
22966
22967         * cgraph.h (cgraph_decide_inlining_incrementally): Kill.
22968         * tree-pass.h: Reorder to make IPA passes appear toegher.
22969         (pass_early_inline, pass_inline_parameters, pass_apply_inline):
22970         Declare.
22971         * cgraphunit.c (cgraph_finalize_function): Do not compute inling
22972         parameters, do not call early inliner.
22973         * ipa-inline.c: Update comments.  Include tree-flow.h
22974         (cgraph_decide_inlining): Do not compute inlining parameters.
22975         (cgraph_decide_inlining_incrementally): Return TODOs; assume to
22976         be called with function context set up.
22977         (pass_ipa_inline): Remove unreachable functions before pass.
22978         (cgraph_early_inlining): Simplify assuming to be called from the
22979         PM as local pass.
22980         (pass_early_inline): New pass.
22981         (cgraph_gate_ipa_early_inlining): New gate.
22982         (pass_ipa_early_inline): Turn into simple wrapper.
22983         (compute_inline_parameters): New function.
22984         (gate_inline_passes): New gate.
22985         (pass_inline_parameters): New pass.
22986         (apply_inline): Move here from tree-optimize.c
22987         (pass_apply_inline): New pass.
22988         * ipa.c (cgraph_remove_unreachable_nodes): Verify cgraph after
22989         transforming.
22990         * tree-inline.c (optimize_inline_calls): Return TODOs rather than
22991         doing them by hand.
22992         (tree_function_versioning): Do not allocate dummy struct function.
22993         * tree-inline.h (optimize_inline_calls): Update prototype.
22994         * tree-optimize.c (execute_fixup_cfg): Export.
22995         (pass_fixup_cfg): Remove
22996         (tree_rest_of_compilation): Do not apply inlines.
22997         * tree-flow.h (execute_fixup_cfg): Declare.
22998         * Makefile.in (gt-passes.c): New.
22999         * passes.c: Include gt-passes.h
23000         (init_optimization_passes): New passes.
23001         (nnodes, order): New static vars.
23002         (do_per_function_toporder): New function.
23003         (execute_one_pass): Dump current pass here.
23004         (execute_ipa_pass_list): Don't dump current pass here.
23005
23006 2007-01-16  Janis Johnson  <janis187@us.ibm.com>
23007
23008         * config/dfp-bit.c (dfp_compare_op): Return separate value for NaN.
23009         (DFP_NE, DFP_LE, DFP_GE): Return false for NaN.
23010
23011 2007-01-16  David Edelsohn  <edelsohn@gnu.org>
23012
23013         * config/rs6000/darwin-ldouble.c: Build file for SOFT_FLOAT.
23014         (strong_alias): Define.
23015         (__gcc_qmul): Provide non-FMA for soft-float.
23016         (__gcc_qdiv): Same.
23017         (__gcc_qneg): New.
23018         (__gcc_qeq): New.
23019         (__gcc_qle): New.
23020         (__gcc_qge): New.
23021         (__gcc_qunord): New.
23022         (__gcc_stoq): New.
23023         (__gcc_dtoq): New.
23024         (__gcc_qtos): New.
23025         (__gcc_qtod): New.
23026         (__gcc_qtoi): New.
23027         (__gcc_qtou): New.
23028         (__gcc_itoq): New.
23029         (__gcc_utoq): New.
23030         (fmsub): New.
23031         * config/rs6000/rs6000.c (rs6000_init_libfuncs): Initialize
23032         soft-float functions.
23033         * config/rs6000/libgcc-ppc-glibc.ver: Version soft-float symbols.
23034         * config/rs6000/sysv4.h (SUBTARGET_OVERRIDE_OPTIONS): Do not warn
23035         about long double soft float.
23036
23037 2007-01-16  Dorit Nuzman  <dorit@il.ibm.com>
23038             Tehila Meyzels  <tehila@il.ibm.com>
23039
23040         * tree-vectorizer.h (is_pattern_stmt_p): New.
23041         * tree-vect-analyze.c (vect_determine_vectorization_factor): Fix
23042         formatting (tabs instead of spaces). Cleanup and clarify setting
23043         of STMT_VINFO_VECTYPE. Call is_pattern_stmt_p.
23044         * tree-vect-transform.c (vect_get_vec_def_for_operand): Fix typo.
23045         (vectorizable_type_demotion): Check that types are integral.
23046         (vectorizable_type_promotion): Likewise.
23047         (vectorizable_store): Fix typo.  Eliminate new-line at end of
23048         comments.
23049
23050 2007-01-16  Jan Hubicka  <jh@suse.cz>
23051
23052         * tree-ssanames.c (release_dead_ssa_names): Remove invalidated
23053         cgraph edges too.
23054
23055 2007-01-15  Eric Christopher  <echristo@apple.com>
23056
23057         * ifcvt.c: Include vec.h, vecprim.h.
23058         (check_cond_move_block): New argument regs.
23059         Reorganize. Add registers used to regs.
23060         (cond_move_process_if_block): Use regs set above as
23061         loop bounds.
23062
23063 2007-01-15  Eric Christopher  <echristo@apple.com>
23064
23065         * config/darwin.h: Update copyright.
23066         (TARGET_OPTION_TRANSLATE_TABLE): Add umbrella.
23067         (LINK_COMMAND_SPEC): Add -u.
23068         (LINK_SPEC): Fix umbrella for above.
23069
23070 2007-01-15  Joseph S. Myers  <joseph@codesourcery.com>
23071
23072         * config/soft-fp/op-common.h, config/soft-fp/op-4.h: Update from
23073         glibc CVS.
23074
23075 2007-01-15  Tom Tromey  <tromey@redhat.com>
23076
23077         * doc/sourcebuild.texi (libgcj Tests): Don't mention jacks.
23078         * doc/install.texi (Testing): Don't mention jacks.
23079         (Configuration): Document --enable-java-maintainer-mode.  Move
23080         --with-java-home to libgcj-specific section.  Document
23081         --with-ecj-jar.
23082         (Prerequisites): Mention --enable-java-maintainer-mode, ecj1.
23083
23084 2007-01-15  Jan Hubicka  <jh@suse.cz>
23085
23086         * tree-ssa-dce.c (DCE_TODOs): New.
23087         (propagate_necessity): Return if something changed.
23088         (eliminate_unnecessary_stmts): Likewise.
23089         (perform_tree_ssa_dce): Return TODO flags when needed.
23090         (pass_dce, pass_dce_loop, pass_cd_dce): Remove TODO flags.
23091
23092 2007-01-15  Uros Bizjak  <ubizjak@gmail.com>
23093
23094         * config/i386/i386.md (fyl2xxf3_i387): Rename from fyl2x_xf3.
23095         (fyl2x_extend<mode>xf3_i387): New insn pattern.
23096         (log<mode>2): Rename from logsf2 and logdf2 and macroize insn
23097         patterns using X87MODEF12 mode macro.  Extend operand 1
23098         to XFmode. Use SSE_FLOAT_MODE_P to disable patterns for SSE math.
23099         (log10<mode>2): Ditto.
23100         (log2<mode>2): Ditto.
23101         (log1p<mode>2): Ditto.
23102         (logb<mode>2): Ditto.
23103         (fyl2xp1xf3_i387): Rename from fyl2xp1_xf3.
23104         (fyl2xp1_extend<mode>xf3_i387): New insn pattern.
23105         (*fxtractxf3_i387): Rename from *fxtractxf3.
23106         (fxtract_extend<mode>xf3_i387): New insn pattern.
23107         (ilogbsi2): Use match_dup 3, not match_operand:XF 3.
23108         * config/i386/i386.c (ix86_emit_i387_log1p): Use gen_fyl2xp1xf3_i387()
23109         and gen_fyl2xxf3_i387().
23110
23111 2007-01-14  Zdenek Dvorak <dvorakz@suse.cz>
23112
23113         * loop-unswitch.c (unswitch_loop): Do not call fix_loop_placement.
23114         * cfgloopmanip.c (fix_loop_placement): Made static.  Use
23115         get_loop_exit_edges.  Changed return type to bool.
23116         * cfgloop.h (fix_loop_placement): Declaration removed.
23117
23118 2007-01-14  Dorit Nuzman  <dorit@il.ibm.com>
23119
23120         * param.h (MIN_VECT_LOOP_BOUND): New.
23121         * params.def (MIN_VECT_LOOP_BOUND): New.
23122         * tree-vectorizer.c (slpeel_tree_peel_loop_to_edge): Takes another
23123         argument - minimum threshold for number of iterations.
23124         * tree-vectorizer.h (slpeel_tree_peel_loop_to_edge): Add another
23125         argument to declaration.
23126         * tree-vect-analyze.c (vect_analyze_operations): Check value of
23127         MIN_VECT_LOOP_BOUND.
23128         * tree-vect-transform.c (vect_do_peeling_for_loop_bound): Call
23129         slpeel_tree_peel_loop_to_edge with additional argument.
23130         (vect_do_peeling_for_alignment): Likewise.
23131         * doc/invoke.texi (min-vect-loop-bound): Document new param option.
23132
23133 2007-01-14  Uros Bizjak  <ubizjak@gmail.com>
23134
23135         PR target/30413
23136         * config/i386/i386.c (print_operand) ['z']: Output 'b' for
23137         operands of size 1.
23138
23139 2007-01-14  Jan Hubicka  <jh@suse.cz>
23140
23141         * tree-dfa.c (remove_referenced_var): New function.
23142         * tree-ssa-live.c (remove_unused_locals): Walk referenced vars and
23143         prune referenced vars list too.
23144         * tree-flow.h (remove_referenced_var): Declare.
23145
23146 2007-01-14  Jan Hubicka  <jh@suse.cz>
23147
23148         * tree-eh.c (add_stmt_to_eh_region_fn): Do not add call_exprs
23149         separately.
23150         (remove_stmt_from_eh_region_fn): Do not remove call_exprs.
23151         (verify_eh_throw_stmt_node, verify_eh_throw_table_statements): Kill.
23152         * except.h (verify_eh_throw_table_statements): Kill prototype.
23153         * cfgexpand.c (expand_gimple_basic_block): Propagate Eh regions
23154         into call exrepssions.
23155         * tree-optimize.c (execute_free_cfg_annotatiosn): Do not call
23156         eh trhow verifier.
23157         * tree-cfg.c: Include pointer-set.h.
23158         (verify_node_sharing): Work on pointer set.
23159         (verify_eh_throw_stmt_node): New.
23160         (verify_stmts): Use pointers sets, verify throw_stmt.
23161
23162 2007-01-13  Zdenek Dvorak <dvorakz@suse.cz>
23163
23164         * ipa-reference.c (analyze_function): Consider also addresses taken
23165         in phi nodes.
23166
23167 2007-01-12  Roger Sayle  <roger@eyesopen.com>
23168
23169         * c-typeck.c (null_pointer_constant_p): Replace use of
23170         TREE_CONSTANT_OVERFLOW with TREE_OVERFLOW.
23171         (build_c_cast): Likewise.
23172
23173 2007-01-12  Roger Sayle  <roger@eyesopen.com>
23174
23175         * tree.h (force_fit_type_double): Remove unused final argument.
23176         * c-common.c (constant_expression_warning): Replace use of
23177         TREE_CONSTANT_OVERFLOW with TREE_OVERFLOW.
23178         (convert_and_check): Likewise.
23179         (shorten_compare): Update call to force_fit_type_double.
23180         (c_common_truthvalue_conversion) <INTEGER_CST>: Use integer_zerop.
23181         * convert.c (convert_to_pointer): Update call to
23182         force_fit_type_double.
23183         * fold-const.c (force_fit_type_double): Remove overflowed_const
23184         argument.
23185         (int_const_binop, fold_convert_const_int_from_int,
23186         fold_convert_const_int_from_real, fold_div_compare,
23187         fold_sign_changed_comparison, fold_unary, fold_negate_const,
23188         fold_abs_const, fold_not_const): Remove the final argument from
23189         calls to force_fit_type_double.
23190
23191 2007-01-12  Andrew Pinski  <andrew_pinski@playstation.sony.com>
23192
23193         * configure.ac: Set insn to "nop" for spu-*-* also.
23194         * configure: Regenerate.
23195
23196 2007-01-12  Olga Golovanevsky  <olga@il.ibm.com>
23197
23198         * builtins.def : Add BUILT_IN_FREE.
23199
23200 2007-01-12  Jan Hubicka  <jh@suse.cz>
23201
23202         PR tree-optimization/30443
23203         * tree-inline.c (tree_function_versioning): Do not optimize when
23204         cloning for inlining.
23205
23206 2007-01-12  Zdenek Dvorak <dvorakz@suse.cz>
23207
23208         * doc/loop.texi: Document recording of loop exits.
23209         * cfgloopmanip.c (loopify, duplicate_loop): Use alloc_loop.
23210         (update_single_exits_after_duplication,
23211         update_single_exit_for_duplicated_loop,
23212         update_single_exit_for_duplicated_loops): Removed.
23213         (duplicate_loop_to_header_edge): Do not call
23214         update_single_exits_after_duplication and
23215         update_single_exit_for_duplicated_loops.
23216         (loop_version): Do not update single_exit information.
23217         (fix_loop_structure): Use record_loop_exits instead of
23218         mark_single_exit_loops.
23219         * tree-ssa-loop-manip.c (tree_transform_and_unroll_loop): Update
23220         the lists of loop exits.
23221         * cfghooks.c (redirect_edge_and_branch, redirect_edge_and_branch_force,
23222         split_edge, merge_blocks): Update the lists of loop exits.
23223         * modulo-sched.c (sms_schedule): Pass LOOPS_HAVE_RECORDED_EXITS to
23224         loop_optimizer_init.
23225         * loop-init.c (loop_optimizer_init): Call record_loop_exits instead
23226         of mark_single_exit_loops.
23227         (loop_optimizer_finalize): Call release_recorded_exits.
23228         * tree-ssa-loop.c (tree_loop_optimizer_init): Pass
23229         LOOPS_HAVE_RECORDED_EXITS to loop_optimizer_init.
23230         * tree-vectorizer.c (slpeel_tree_duplicate_loop_to_edge_cfg): Do not
23231         update single exit information.
23232         * lambda-code.c (perfect_nestify): Ditto.
23233         * cfgloop.c (flow_loop_free): Destroy the list of exits of the loop.
23234         (mark_single_exit_loops): Removed.
23235         (alloc_loop, loop_exit_hash, loop_exit_eq, loop_exit_free,
23236         get_exit_descriptions, rescan_loop_exit, record_loop_exits,
23237         dump_recorded_exit, dump_recorded_exits, release_recorded_exits): New
23238         functions.
23239         (get_loop_exit_edges, single_exit): Use recorded exit lists.
23240         (add_bb_to_loop, remove_bb_from_loops): Update the lists of loop exits.
23241         (verify_loop_structure): Verify consistency of the exit lists.
23242         (flow_loops_find): Use alloc_loop.  Initialize exits hash.
23243         (set_single_exit): Removed.
23244         * cfgloop.h (struct loop_exit): New function.
23245         (struct loop): single_exit_ field replaced by exits field.
23246         (LOOPS_HAVE_MARKED_SINGLE_EXITS): Replaced by
23247         LOOPS_HAVE_RECORDED_EXITS.
23248         (struct loops): Added exits hash.
23249         (mark_single_exit_loops, set_single_exit): Declaration removed.
23250         (release_recorded_exits, record_loop_exits, rescan_loop_exit): Declare.
23251
23252 2007-01-12  Richard Sandiford  <richard@codesourcery.com>
23253
23254         * doc/invoke.texi: Avoid use of @headitem.
23255
23256 2007-01-12  Richard Sandiford  <richard@codesourcery.com>
23257
23258         * cse.c (cse_insn): Move HAVE_CC0 code after declarations.
23259
23260 2007-01-12  Richard Sandiford  <richard@codesourcery.com>
23261
23262         * doc/install.texi: Fix m68k-*-* anchor and add m68k-*-* to the
23263         list of targets.
23264
23265 2007-01-12  Nathan Sidwell  <nathan@codesourcery.com>
23266             Richard Sandiford  <richard@codesourcery.com>
23267
23268         * doc/invoke.texi: Document -mno-bitfield, -mno-rtd and -mno-short.
23269         * config/m68k/m68k.opt: Resort options.
23270         (mbitfield, mrtd, mshort): Remove RejectNegative properties.
23271
23272 2007-01-12  Nathan Sidwell  <nathan@codesourcery.com>
23273             Richard Sandiford  <richard@codesourcery.com>
23274
23275         * doc/invoke.texi: Document the macros that are defined by
23276         m68k's -mtune and -mhard-float options.
23277         * config/m68k/m68k-protos.h (m68k_cpp_cpu_ident) Declare.
23278         (m68k_cpp_cpu_family): Likewise.
23279         * config/m68k/m68k.h (TARGET_CPU_CPP_BUILTINS): Add a full set
23280         of __ucfv*__ macros.  Define __mcffpu__ if generating code for
23281         ColdFire FPUs.  Define __mcf_cpu_* and __mcf_family_* macros.
23282         * config/m68k/m68k.c (m68k_cpp_cpu_ident): New function.
23283         (m68k_cpp_cpu_family): Likewise.
23284
23285 2007-01-12  Richard Sandiford  <richard@codesourcery.com>
23286
23287         * config/m68k/m68k.h (TARGET_CPU_CPP_BUILTINS): Treat all mc68*
23288         macros besides mc68000 as tuning macros.  Use a switch statement
23289         to set them and mcpu32.
23290
23291 2007-01-12  Julian Brown  <julian@codesourcery.com>
23292
23293         * config/m68k/m68k.h: Use TARGET_68040 instead of TARGET_68040_ONLY.
23294         (TARGET_68040_ONLY): Rename to...
23295         (TARGET_68040): ...this.
23296         * config/m68k/m68k.c: Use TARGET_68040 instead of TARGET_68040_ONLY.
23297         * config/m68k/m68k.md: Likewise.
23298
23299 2007-01-12  Julian Brown  <julian@codesourcery.com>
23300             Nathan Sidwell  <nathan@codesourcery.com>
23301             Richard Sandiford  <richard@codesourcery.com>
23302
23303         * config.gcc (m680[012]0-*-*, m68k*-*-*): Set m68k_cpu_ident to
23304         the -mcpu= argument associated with the --with-cpu setting.
23305         Define M68K_DEFAULT_TUNE to the default -mtune= option,
23306         if different from the one implied by the -mcpu setting.
23307         Accept --with-cpu=FOO if FOO is listed in m68k-devices.def,
23308         using mcpu=FOO as the default CPU option.  Set target_cpu_default2.
23309         * doc/invoke.texi: Mention ColdFire in the introduction to the
23310         m68k options.  Document the new -march, -mcpu, -mtune, -mdiv,
23311         -mno-div and -mhard-float options.  Make -m68881 a synonym for
23312         -mhard-float.  Document the previously-undocumented -m5206e,
23313         -m528x, -m5307 and -m5407 options.  Tweak the existing option
23314         documentation for consistency.
23315         * doc/install.texi: Mention new --with-cpu arguments.
23316         * config/m68k/m68k.h (OPTION_DEFAULT_SPECS): Only use the
23317         default CPU if neither -mcpu nor -march are specified.
23318         (ASM_CPU_SPEC): Pass down -mcpu and -march options.
23319         (TARGET_CPU_CPP_BUILTINS): Set __mcfisa*__ macros from
23320         TARGET_ISA*.  Set the legacy __mcf*__ cpu macros in the same way,
23321         using m68k_tune to decide between families that implement the
23322         same ISA.  Use m68k_tune to set __mcfv4e__.
23323         (FL_BITFIELD, FL_68881, FL_COLDFIRE, FL_CF_HWDIV, FL_CF_MAC)
23324         (FL_CF_EMAC, FL_CF_EMAC_B, FL_CF_USP, FL_CF_FPU, FL_ISA_68000)
23325         (FL_ISA_68010, FL_ISA_68020, FL_ISA_68040, FL_ISA_A, FL_ISA_B)
23326         (FL_ISA_C, FL_ISA_MMU): New macros.
23327         (MASK_COLDFIRE): Delete.
23328         (TARGET_68010, TARGET_68020, TARGET_68040_ONLY, TARGET_COLDFIRE)
23329         (TARGET_ISAB): Redefine in terms of m68k_cpu_flags.
23330         (TARGET_68881, TARGET_COLDFIRE_FPU): Redefine in terms of m68k_fpu.
23331         (TARGET_HARD_FLOAT): Do not define here.
23332         (TARGET_ISAAPLUS, TARGET_ISAC): New macros.
23333         (TUNE_68000): New macro.
23334         (TUNE_68000_10): Redefine in terms of TUNE_68000 and TUNE_68010.
23335         (TUNE_68010, TUNE_68030, TUNE_68040, TUNE_68060, TUNE_CPU32)
23336         (TUNE_CFV2): Redefine in terms of m68k_tune.
23337         (uarch_type, target_device, fpu_type): New enums.
23338         (m68k_cpu, m68k_tune, m68k_fpu, m68k_cpu_flags): Declare.
23339         * config/m68k/m68k.c (TARGET_DEFAULT): Remove MASK_68881.
23340         (FL_FOR_isa_00, FL_FOR_isa_10, FL_FOR_isa_20, FL_FOR_isa_40)
23341         (FL_FOR_isa_cpu32, FL_FOR_isa_a, FL_FOR_isa_aplus, FL_FOR_isa_b)
23342         (FL_FOR_isa_c): New macros.
23343         (m68k_isa): New enum.
23344         (m68k_target_selection): New structure.
23345         (all_devices, all_isas, all_microarchs): New tables.
23346         (m68k_cpu_entry, m68k_arch_entry, m68k_tune_entry, m68k_cpu)
23347         (m68k_tune, m68k_fpu, m68k_cpu_flags): New variables.
23348         (MASK_ALL_CPU_BITS): Delete.
23349         (m68k_find_selection): New function.
23350         (m68k_handle_option): Handle -mcpu=, -march= and -mtune=.
23351         Map the legacy target options to a combination of the new ones.
23352         (override_options): Set m68k_cpu, m68k_tune, m68k_fpu and
23353         m68k_cpu_flags.  Handle M68K_DEFAULT_TUNE.  Use m68k_cpu_flags
23354         to derive default MASK_BITFIELD, MASK_CF_HWDIV and MASK_HARD_FLOAT
23355         settings.
23356         * config/m68k/m68k.opt (m5200, m5206e, m528x, m5307, m5407, mcfv4e)
23357         (m68010, m68020, m68020-40, m68020-60, m68030, m68040): Remove Mask
23358         properties.
23359         (m68881, msoft-float): Change mask from 68881 to HARD_FLOAT.
23360         (march=, mcpu=, mdiv, mhard-float, mtune=): New options.
23361         * config/m68k/m68k-devices.def: New file.
23362
23363 2007-01-12  Richard Sandiford  <richard@codesourcery.com>
23364             Nathan Sidwell  <nathan@codesourcery.com>
23365
23366         * config/m68k/m68k.h (ASM_CPU_SPEC, ASM_SPEC, EXTRA_SPECS)
23367         (SUBTARGET_EXTRA_SPECS): New macros.
23368         * config/m68k/linux.h (ASM_SPEC): Remove CPU flags;
23369         use %(asm_cpu_spec) instead.
23370         * config/m68k/m68k-none.h (ASM_SPEC): Likewise.
23371         * config/m68k/openbsd.h (ASM_SPEC): Likewise.
23372         * config/m68k/netbsd-elf.h (ASM_SPEC): Likewise.
23373         (EXTRA_SPECS): Rename to...
23374         (SUBTARGET_EXTRA_SPECS): ...this.
23375
23376 2007-01-12  Nathan Sidwell  <nathan@codesourcery.com>
23377             Richard Sandiford  <richard@codesourcery.com>
23378             Julian Brown  <julian@codesourcery.com>
23379
23380         * config.gcc (m68k-*-aout*, m68k-*-coff*, m68020-*-elf*, m68k-*-elf*)
23381         (m68k-*-uclinux*, m68k-*-linux*, m68k-*-rtems*): Set default_m68k_cpu
23382         to the configuration's default CPU.
23383         (m68010-*-netbsdelf*, m68k*-*-netbsdelf*, m68k*-*-openbsd*): Likewise.
23384         Remove default masks.
23385         (m680[012]0-*-*): Set the default with_cpu to the first part of
23386         the target name.
23387         (m68k*-*-*): Set the default with_cpu to m$default_m68k_cpu.
23388         (m68k*-*-linux): Extend the --with-cpu handling to...
23389         (m680[012]0-*-*, m68k*-*-*): ...these configurations.  Allow m68000
23390         and m68010.  Don't set target_cpu_default2.
23391         * doc/install.texi: Document --with-cpu for m68k.
23392         * config/m68k/m68k.h (OPTION_DEFAULT_SPECS): Define.
23393         * config/m68k/m68k-none.h (TARGET_CPU_DEFAULT, M68K_CPU_m68k)
23394         (M68K_CPU_m68000, M68K_CPU_m68010, M68K_CPU_m68020, M68K_CPU_m68030)
23395         (M68K_CPU_m68040, M68K_CPU_m68302, M68K_CPU_m68332, TARGET_DEFAULT)
23396         (ASM_CPU_DEFAULT_SPEC, CC1_CPU_DEFAULT_SPEC): Delete.
23397         (ASM_SPEC): Remove use of %(asm_cpu_default).
23398         (EXTRA_SPECS, SUBTARGET_EXTRA_SPECS, MULTILIB_DEFAULTS): Delete.
23399         * config/m68k/linux.h (TARGET_DEFAULT): Delete.
23400         (CPP_SPEC): Merge definitions.  Do not handle __HAVE_68881__ here.
23401         * config/m68k/netbsd-elf.h (TARGET_OS_CPP_BUILTINS): Define
23402         __HAVE_FPU__ if TARGET_HARD_FLOAT.
23403         (TARGET_DEFAULT): Delete.
23404         (EXTRA_SPECS): Delete cpp_cpu_default_spec, cpp_cpu_spec,
23405         cpp_fpu_spec, asm_default_spec and netbsd_cpp_spec.
23406         (CPP_CPU_SPEC): Delete.
23407         (TARGET_VERSION): Merge definitions, using TARGET_68010 to pick
23408         the appropriate string.
23409         (CPP_CPU_DEFAULT_SPEC, ASM_DEFAULT_SPEC, CPP_FPU_SPEC): Delete.
23410         (CPP_SPEC): Define to NETBSD_CPP_SPEC.
23411         (ASM_SPEC): Don't use %(asm_default_spec).
23412         * config/m68k/m68k.c (TARGET_DEFAULT_TARGET_FLAGS): Remove
23413         TARGET_DEFAULT and add MASK_68881.
23414         * config/m68k/m68k.md: Remove mention of TARGET_DEFAULT from comments.
23415
23416 2007-01-12  Richard Sandiford  <richard@codesourcery.com>
23417
23418         * config.gcc (m68010-*-netbsdelf*): Add MASK_68010.
23419         (m68k*-*-netbsdelf*, m68k*-*-openbsd*, m68k*-linux*): Add
23420         MASK_68010 alongside MASK_68020.
23421         * doc/invoke.texi: Document -m68010.
23422         * config/m68k/m68k.opt (m68010): New.
23423         * config/m68k/m68k.h (TARGET_CPU_CPP_BUILTINS): Define mc68010
23424         if TUNE_68010.
23425         (TUNE_68010): New macro.
23426         * config/m68k/m68k-none.h (M68K_CPU_m68k, M68K_CPU_m68010)
23427         (M68K_CPU_m68020, M68K_CPU_m68030, M68K_CPU_m68040)
23428         (M68K_CPU_m68332): Add MASK_68010.
23429         * config/m68k/linux.h (TARGET_DEFAULT): Add MASK_68010 to
23430         fallback definition.
23431         * config/m68k/netbsd-elf.h (CPP_CPU_SPEC): Remove now-redundant
23432         defines.
23433         * config/m68k/m68k.c (MASK_ALL_CPU_BITS): Add MASK_68010.
23434         (m68k_handle_option): Handle OPT_m68010.  Add MASK_68010
23435         to all entries that use MASK_68020.
23436         (output_move_simode_const, output_move_himode, output_move_qimode)
23437         (output_move_stricthi, output_move_strictqi): Use TARGET_68010
23438         instead of TARGET_68020 to select clr behavior.  Remove comment
23439         about there being no TARGET_68010.
23440         * config/m68k/m68k.md: Likewise throughout.
23441
23442 2007-01-12  Julian Brown  <julian@codesourcery.com>
23443
23444         * config/m68k/m68k.h (TARGET_ISAB): New macro.
23445         * config/m68k/m68k.c: Use TARGET_ISAB rather than TARGET_CFV4.
23446         * config/m68k/m68k.md: Likewise.
23447
23448 2007-01-12  Julian Brown  <julian@codesourcery.com>
23449
23450         * config/m68k/m68k.h (LEGITIMATE_INDEX_P, LEGITIMIZE_ADDRESS): Use
23451         TARGET_COLDFIRE_FPU instead of TARGET_CFV4E.
23452
23453 2007-01-12  Julian Brown  <julian@codesourcery.com>
23454
23455         * config/m68k/m68k.h (TUNE_68040_60): New macro.
23456         * config/m68k/m68k.c (standard_68881_constant_p): Use it.
23457         * config/m68k/m68k.md: Likewise.
23458
23459 2007-01-12  Julian Brown  <julian@codesourcery.com>
23460             Richard Sandiford  <richard@codesourcery.com>
23461
23462         * config/m68k/m68k.h (TARGET_CPU_CPP_BUILTINS): Use TUNE_68030
23463         instead of TARGET_68030, TUNE_68040 instead of TARGET_68040,
23464         TUNE_68060 instead of TARGET_68060 and TUNE_CPU32 instead of
23465         TARGET_CPU32.
23466         (TARGET_CPU32): Rename to...
23467         (TUNE_CPU32): ...this.
23468         (TUNE_68000_10, TUNE_68030, TUNE_68040, TUNE_68060)
23469         (TUNE_CFV2): New macros.
23470         * config/m68k/netbsd-elf.h (LONG_DOUBLE_TYPE_SIZE): Simplify;
23471         remove conditions that are implied by TARGET_68020.
23472         * config/m68k/m68k.c (m68k_output_function_prologue): Use TUNE_68040
23473         instead of TARGET_68040 and TUNE_CPU32 instead of TARGET_CPU32.
23474         (m68k_output_function_epilogue): Likewise.
23475         (m68k_rtx_costs): Likewise.  Use TUNE_68060 instead of TARGET_68060
23476         and TUNE_CFV2 instead of TARGET_5200.  Use TUNE_68000_10 instead of
23477         "!TARGET_68020 && !TARGET_COLDFIRE" to choose between 68000 and
23478         non-68000 timings.  Refactor multiplication and division costs.
23479         (output_addsi3): Use TUNE_68040 instead of TARGET_68040 and
23480         TUNE_CPU32 instead of TARGET_CPU32.
23481         (standard_68881_constant_p): Use TUNE_68040 instead of TARGET_68040
23482         and TUNE_68060 instead of TARGET_68060.
23483         * config/m68k/m68k.md: Use TUNE_68040 instead of TARGET_68040,
23484         TUNE_68060 instead of TARGET_68060, and TUNE_CPU32 instead of
23485         TARGET_CPU32.
23486         (movsi_const0): Use TUNE_68000_10 rather than "!TARGET_68020
23487         && !TARGET_COLDFIRE" to choose between moveq and clr.
23488         Likewise in the unnamed movsf pattern.
23489         (ashlsi_17_24, lshrsi_17_24): Guard with TUNE_68000_10 rather than
23490         "!TARGET_68020 && !TARGET_COLDFIRE".  Likewise the unnamed
23491         ashiftrt pattern.
23492
23493 2007-01-12  Richard Sandiford  <richard@codesourcery.com>
23494
23495         * config/m68k/m68k.h (TARGET_CPU_CPP_BUILTINS): Increase amount
23496         of tabbing before backslashes.
23497
23498 2007-01-11  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
23499
23500         * pa-linux.h (ASM_OUTPUT_INTERNAL_LABEL): Undefine.
23501         * pa.h (ASM_OUTPUT_LABEL): Output colon when using GAS.
23502         (ASM_OUTPUT_INTERNAL_LABEL): Define.
23503
23504 2007-01-11  Zdenek Dvorak <dvorakz@suse.cz>
23505
23506         * tree-ssa-loop-ivopts.c (extract_cond_operands): Split from
23507         find_interesting_uses_cond.
23508         (find_interesting_uses_cond): Use extract_cond_operands.
23509         (rewrite_use_compare): Use extract_cond_operands and
23510         force_gimple_operand_bsi.  Do not call update_stmt.
23511         (determine_use_iv_cost_condition): Use extract_cond_operands.
23512         Return cheaper of using original bound and changing the exit bound.
23513
23514 2007-01-11  Zdenek Dvorak <dvorakz@suse.cz>
23515
23516         PR tree-optimization/29516
23517         * tree-ssa-address.c (tree_mem_ref_addr, add_to_parts,
23518         most_expensive_mult_to_index, addr_to_parts,
23519         create_mem_ref, maybe_fold_tmr): Make the type of
23520         fields of TARGET_MEM_REF sizetype.
23521         (move_fixed_address_to_symbol, move_pointer_to_base):
23522         New functions.
23523         * tree.def (TARGET_MEM_REF): Add comment on types of
23524         the operands.
23525
23526 2007-01-11  Joseph Myers  <joseph@codesourcery.com>
23527
23528         * c-common.c (vector_types_convertible_p): Treat opaque types as
23529         always convertible if they have the same size, but not otherwise.
23530
23531 2007-01-11  Steven Bosscher  <steven@gcc.gnu.org>
23532
23533         * ifcvt.c (struct noce_if_info): Add comments to the fields.
23534         Remove the b_unconditional field.
23535         (noce_try_sign_mask): Do not look at b_unconditional.
23536         (noce_process_if_block): Do not use merge_if_blocks.  Update
23537         the CFG here.  Do not set b_unconditional.
23538         (cond_move_process_if_block): Likewise.
23539         (find_cond_trap): Likewise.
23540         (check_cond_move_block): Require simple jump insns at the end
23541         of the basic block.
23542
23543 2007-01-11  Jan Hubicka  <jh@suse.cz>
23544
23545         PR tree-optimization/1046
23546         * tree-tailcall.c (suitable_for_tail_call_opt_p): Use TREE_ADDRESSABLE
23547         when alias info is not ready.
23548         (pass_tail_recursion): Do not require aliasing.
23549         * tree-ssa-copyrename.c (pass_rename_ssa_cop): Likewise.
23550         * tree-ssa-ccp.c (pass_ccp, pass_fold_builtins): Likewise.
23551         * tree-ssa-copy.c (pass_copy_prop): Likewise.
23552         * tree-ssa-forwprop.c (pass_forwprop): Likewise.
23553         * tree-ssa-dce.c (pass_dce, pass_dce_loop, pass_cd_dce): Likewise.
23554         * passes.c (init_optimization_passes): Execute rename_ssa_copies,
23555         ccp, forwprop, copy_prop, merge_phi, copy_prop, dce and tail recursion
23556         before inlining.
23557         * tree-ssa-operands.c (add_virtual_operand, get_indirect_ref_operand):
23558         When aliasing is not build, mark statement as volatile.
23559
23560 2007-01-11  Tom Tromey  <tromey@redhat.com>
23561
23562         PR preprocessor/15185, PR preprocessor/20989:
23563         * doc/cppopts.texi <-MT>: Update description of algorithm for
23564         computing default target.
23565         <-M, -MD>: Reword "basename" text.
23566
23567 2007-01-11  Roger Sayle  <roger@eyesopen.com>
23568
23569         * builtins.c (expand_builtin_pow, expand_builtin_powi,
23570         fold_builtin_cabs, fold_builtin_sqrt, fold_builtin_trunc,
23571         fold_builtin_floor, fold_builtin_ceil, fold_builtin_round,
23572         fold_builtin_int_int_roundingfn, fold_builtin_bitop,
23573         fold_builtin_bswap, real_constp, fold_builtin_pow,
23574         fold_builtin_powi, fold_builtin_signbit, fold_builtin_copysign,
23575         do_mpfr_arg1, do_mpfr_arg2, do_mpfr_arg3, do_mpfr_sincos): Replace
23576         uses of the macro TREE_CONSTANT_OVERFLOW with TREE_OVERFLOW.
23577         * convert.c (convert_to_pointer): Likewise.
23578         * expr.c (highest_pow2_factor, expand_expr_real_1): Likewise.
23579         * fold-const.c (force_fit_type, fold_negate_expr, int_const_binop,
23580         const_binop, fold_convert_const_int_from_int,
23581         fold_convert_const_int_from_real,
23582         fold_convert_const_real_from_real, sign_bit_p,
23583         optimize_minmax_comparison, extract_muldiv_1, fold_div_compare,
23584         fold_sign_changed_comparison, fold_unary, fold_comparison,
23585         fold_binary, multiple_of_p, tree_Expr_non_zero_p,
23586         fold_negate_const, fold_abs_const, fold_not_const): Likewise.
23587         * print-tree.c (print_node_brief, print_node): Likewise.
23588         * stor-layout.c (place_field, layout_type): Likewise.
23589         * tree-chrec.c (keep_cast): Likewise.
23590         * tree.c (build_vector, build_real, build_real_from_int_cst,
23591         build_complex): Likewise.
23592
23593 2007-01-11  Roger Sayle  <roger@eyesopen.com>
23594
23595         * tree.h (TREE_CONSTANT_OVERFLOW): Obsolete.  For the time being,
23596         treat TREE_CONSTANT_OVERFLOW as a synonym of TREE_OVERFLOW.
23597
23598 2007-01-11  Paolo Bonzini  <bonzini@gnu.org>
23599
23600         * configure.ac (strict1_warn): Rename to strict_warn.
23601         (WERROR, --enable-werror, symlink hacks, stage1_cflags,
23602         cc_set_by_configure, quoted_cc_set_by_configure,
23603         stage_prefix_set_by_configure, quoted_stage_prefix_set_by_configure,
23604         all_boot_languages, all_stagestuff): Remove.
23605         (target_list): Remove bootstrap targets.
23606         * Makefile.in (quickstrap): Unconditionally make a synonym of all.
23607         (BOOT_LANGUAGES, STAGE1_CFLAGS, STAGE1_CHECKING,
23608         REMAKEFLAGS, FLAGS_TO_PASS, PREPEND_DOTDOT_TO_RELATIVE_PATHS,
23609         SUBDIR_FLAGS_TO_PASS, WERROR_FLAGS, STRICT2_WARN, LANG_STAGESTUFF,
23610         VOL_FILES, POSTSTAGE1_FLAGS_TO_PASS, STAGE2_FLAGS_TO_PASS,
23611         STAGEPROFILE_FLAGS_TO_PASS, STAGEFEEDBACK_FLAGS_TO_PASS, stage1_build,
23612         stage1_copy, stage2_build, stage2_copy, stageprofile_build,
23613         stageprofile_copy, stage3_build, stage3_copy, stagefeedback_build,
23614         stagefeedback_copy, stage4_build, clean_s1, clean_sw, bootstrap,
23615         bootstrap-lean, bootstrap2, bootstrap2-lean, bootstrap3,
23616         bootstrap3-lean, bootstrap4, bootstrap4-lean, unstage1, unstage2,
23617         unstage3, unstage4, unstageprofile, unstagefeedback, restage, restage2,
23618         restage3, restage4, restageprofile, restagefeedback, bubbleestrap,
23619         cleanstrap, unstrap, restrap, *compare, *compare3, *compare4,
23620         *compare-lean, *compare3-lean, *compare4-lean, stage1-start, stage1,
23621         stage2-start, stage2, stage3-start, stage3, stage4-start, stage4,
23622         stageprofile-start, stageprofile, stagefeedback-start, stagefeedback,
23623         risky-stage1, risky-stage2, risky-stage3, risky-stage4): Remove.
23624         (ORDINARY_FLAGS_TO_PASS): Rename to FLAGS_TO_PASS.
23625         (STAGECOPYSTUFF, STAGEMOVESTUFF): Consolidate into MOSTLYCLEANFILES.
23626         (mostlyclean): Adjust.
23627         (clean, distclean): Don't mention bootstrap stuff.
23628         * configure: Regenerate.
23629         * ada/config-lang.in, cp/config-lang.in, forttran/config-lang.in,
23630         java/config-lang.in, objc/config-lang.in, objcp/config-lang.in,
23631         treelang/config-lang.in (stagestuff): Remove.
23632         * doc/sourcebuild.texi (stage1, stage2, stage3, stage4,
23633         stageprofile, stagefeedback, stagestuff): Remove mention.
23634
23635 2007-01-11  Nick Clifton  <nickc@redhat.com>
23636
23637         * config/mcore/predicates.md (mcore_general_movesrc_operand):
23638         Accept CONSTs.
23639         (mcore_general_movdst_operand): Do not accept CONST_INTs.
23640         (mcore_arith_K_S_operand): Run the test for the S constraint not
23641         the test for the M constraint.
23642         (mcore_addsub_operand): Do not accept integer values that are
23643         larger than 32 bits.
23644         * config/mcore/mcore.md: Remove unused constraints from split.
23645         (andsi3): Use HOST_WIDE_INT instead of int to hold an INTVAL.
23646         (addsi3): Likewise.
23647         (allocate_stack): Likewise.
23648         * config/mcore/mcore.c (mcore_print_operand): Restrict output of P
23649         operands to 32 bits.
23650         (mcore_const_costs): Use HOST_WIDE_INT instead of int to hold an
23651         INTVAL.
23652         (mcore_and_cost, mcore_modify_comparison, const_ok_for_mcore,
23653         mcore_const_ok_for_inline, mcore_const_trick_uses_not,
23654         try_constant_tricks, mcore_num_ones, mcore_num_zeros,
23655         mcore_output_bclri, mcore_output_andn, output_inline_const,
23656         mcore_output_move, mcore_output_movedouble): Likewise.
23657         (mcore_output_cmov): Use CONST_OK_FOR_M and CONST_OK_FOR_N.
23658         (output_inline_const): Likewise.
23659         (output_inline_const): Fix format strings used in sprintf
23660         statements.
23661         * config/mcore/mcore-protos.h: Update prototypes for changed
23662         functions in mcore.c.
23663         * config/mcore/mcore.h (CONST_OK_FOR_I): Cast values to
23664         HOST_WIDE_INT and not int.
23665         (CONST_OK_FOR_J, CONST_OK_FOR_K, CONST_OK_FOR_L, CONST_OK_FOR_M,
23666         CONST_OK_FOR_N): Likewise.
23667         (LEGITIMATE_CONSTANT_P): Also check CONSTANT_P.
23668         (GO_IF_LEGITIMATE_INDEX): Use HOST_WIDE_INT instead of int to hold
23669         an INTVAL.
23670
23671 2007-01-10  Jan Hubicka  <jh@suse.cz>
23672
23673         * tree-vrp.c (remove_range_assertions): Release defs.
23674         * tree-ssa-loop-ivopts.c (rmeove_statement): Likewise.
23675         * tree-ssa-dom.c (remove_stmt_or_phi): Likewise.
23676
23677 2007-01-10  Paul Brook  <paul@codesourcery.com>
23678
23679         * config/arm/arm.c (arm_rtx_costs_1): Handle mutiply-subtract.
23680         * config/arm/arm.md (mulsi3subsi): New insn.
23681
23682 2007-01-10  Zdenek Dvorak <dvorakz@suse.cz>
23683
23684         * tree-ssa-loop-manip.c (tree_unroll_loop): Make it a wrapper over ...
23685         (tree_transform_and_unroll_loop): New.
23686         * tree-flow.h (transform_callback, tree_transform_and_unroll_loop):
23687         Declare.
23688
23689 2007-01-10  Robert Kennedy <jimbob@google.com>
23690
23691         * fold-const.c (fold_comparison): Fold comparisons like (x *
23692         1000 < 0) to (x < 0).
23693
23694 2007-01-10  Ian Lance Taylor  <iant@google.com>
23695
23696         * tree-pretty-print.c (dump_generic_node): Print parentheses when
23697         operands have the same priority.
23698
23699 2007-01-10  Tom Tromey  <tromey@redhat.com>
23700
23701         * fold-const.c (fold_truthop): Don't check can_use_bit_fields_p.
23702         (fold_binary): Likewise.
23703         * langhooks.c (lhd_can_use_bit_fields_p): Removed.
23704         * langhooks-def.h (lhd_can_use_bit_fields_p): Removed.
23705         (LANG_HOOKS_CAN_USE_BIT_FIELDS_P): Removed.
23706         (LANG_HOOKS_INITIALIZER): Remove LANG_HOOKS_CAN_USE_BIT_FIELDS_P.
23707         * langhooks.h (struct lang_hooks): Removed field
23708         'can_use_bit_fields_p'.
23709
23710 2007-01-10  Ralf Corsépius <ralf.corsepius@rtems.org>
23711
23712         * config/bfin/t-bfin, config/bfin/t-bfin-elf: Remove GCC_CFLAGS.
23713
23714 2007-01-10  Razya Ladelsky  <razya@il.ibm.com>
23715
23716         * function.c (get_last_funcdef_no): New function.
23717         * function.h (get_last_funcdef_no): Declare.
23718         * tree-inline.c (initialize_cfun): Add initialization.
23719         (tree_function_versioning): Cleanup.
23720
23721 2007-01-10  Jan Hubicka  <jh@suse.cz>
23722
23723         * tree-inline.c (setup_one_parameter): Do not propagate into abnormal
23724         PHIs.
23725
23726 2007-01-10  Sa Liu  <saliu@de.ibm.com>
23727             Ben Elliston  <bje@au.ibm.com>
23728
23729         * spu.h (STACK_SAVE_AREA): Use VOIDmode for SAVE_FUNCTION, SImode
23730         for SAVE_NONLOCAL and Pmode for any other save level.
23731         * spu-protos.h (spu_restore_stack_block): Declare.
23732         * spu.md (save_stack_block): Remove.
23733         (restore_stack_block): Call spu_restore_stack_block.
23734         * spu.c (spu_restore_stack_block): New function.
23735         (spu_expand_epilogue): Remove old comment.
23736
23737 2007-01-09  Zdenek Dvorak <dvorakz@suse.cz>
23738
23739         PR tree-optimization/30322
23740         * tree-ssa-loop-ivopts.c (fold_affine_expr, iv_value): Removed.
23741         (cand_value_at): Return the value as aff_tree.
23742         (may_eliminate_iv): Convert the bound from aff_tree to tree.
23743         * tree-affine.c (aff_combination_add_cst, aff_combination_add_product,
23744         aff_combination_mult): New functions.
23745         (aff_combination_add): Use aff_combination_add_cst.
23746         (aff_combination_convert): Allow conversions to a wider type.
23747         (tree_to_aff_combination): Handle BIT_NOT_EXPR.
23748         * tree-affine.h (aff_combination_mult): Declare.
23749
23750 2007-01-09  Carlos O'Donell  <carlos@codesourcery.com>
23751
23752         * doc/tm.texi: Update documentation to reflect reality of exec
23753         and start file search behaviours. Update copyright year.
23754         * doc/invoke.texi: Explain how GCC_EXEC_PREFIX is used to find
23755         header file directories.
23756
23757 2007-01-09  Uros Bizjak  <ubizjak@gmail.com>
23758
23759         * config/i386/i386.md (*sinxf2): Rename to *sinxf2_i387.
23760         (*cosxf2): Rename to cosxf2_i387.
23761         (*sindf2, *sinsf2): Extend operand 1 to XFmode.  Macroize patterns
23762         using X87MODEF12 mode macro. Rename patterns to
23763         *sin_extend<mode>xf2_i387.  Use SSE_FLOAT_MODE_P to disable patterns
23764         for SSE math.
23765         (*cosdf2, *cossf2): Ditto.
23766         (sincosdf3, sincossf3): Ditto.  Rewrite corresponding splitters
23767         to match extended input operands.
23768         (sincos<mode>3): New expander.
23769         (*sinextendsfdf2, *cosextendsfdf2, *sincosextendsfdf3): Remove
23770         insn patterns and corresponding splitters.
23771
23772 2007-01-09  Kaz Kojima  <kkojima@gcc.gnu.org>
23773
23774         * config/sh/t-linux (TARGET_LIBGCC2_CFLAGS): Delete.
23775         (SHLIB_MAPFILES, SHLIB_LINK, SHLIB_INSTALL): Likewise.
23776
23777 2007-01-09  Nicolas Pitre  <nico@cam.org>
23778
23779         PR target/30173
23780         * arm/ieee754-df.S (Lad_s): Also test the low word of X for zero.
23781
23782 2007-01-08  Geoffrey Keating  <geoffk@apple.com>
23783
23784         * target.h (struct gcc_target): New field library_rtti_comdat.
23785         * target-def.h (TARGET_CXX_LIBRARY_RTTI_COMDAT): New.
23786         (TARGET_CXX): Add TARGET_CXX_LIBRARY_RTTI_COMDAT.
23787         * doc/tm.texi (C++ ABI): Document TARGET_CXX_LIBRARY_RTTI_COMDAT.
23788         * config/darwin.h (TARGET_CXX_LIBRARY_RTTI_COMDAT): Define.
23789
23790 2007-01-08  Geoffrey Keating  <geoffk@apple.com>
23791
23792         * doc/invoke.texi (Optimize Options): Correct description of -O0.
23793
23794 2007-01-08  Richard Guenther  <rguenther@suse.de>
23795
23796         * tree.h (force_fit_type_double): Export.
23797         (force_fit_type): Remove.
23798         * fold-const.c (force_fit_type_double): New function.
23799         (force_fit_type): Remove.
23800         (int_const_binop): Use it.
23801         (fold_convert_const_int_from_int): Likewise.
23802         (fold_convert_const_int_from_real): Likewise.
23803         (fold_div_compare): Likewise.
23804         (fold_sign_changed_comparison): Likewise.
23805         (fold_unary): Likewise.
23806         (fold_negate_const): Likewise.
23807         (fold_abs_const): Likewise.
23808         (fold_not_const): Likewise.
23809         * c-common.c (shorten_compare): Use force_fit_type_double.
23810         * convert.c (convert_to_pointer): Likewise.
23811
23812 2007-01-08  Richard Guenther  <rguenther@suse.de>
23813
23814         * tree.h (build_int_cst_wide_type): Export.
23815         * tree.c (build_int_cst_wide_type): New function.
23816         (build_int_cst_wide): Fix comment.
23817         * builtins.c (fold_builtin_object_size): Use build_int_cst
23818         to build -1 or 0 of the correct type.  Use fit_double_type
23819         to check for overflow.
23820         * fold-const.c (optimize_bit_field_compare): Use build_int_cst_type
23821         to build the mask.
23822         (decode_field_reference): Likewise.
23823         (all_ones_mask_p): Likewise.
23824         (native_interpret_int): Use build_int_cst_wide_type.
23825         (fold_binary): Use build_int_cst_type to build an all-ones
23826         value.
23827         * stor-layout.c (set_sizetype): Use build_int_cst_wide_type.
23828
23829 2007-01-08  Daniel Jacobowitz  <dan@codesourcery.com>
23830
23831         * config/pa/t-pa64 (libgcc_stub.a): Use $(T).
23832
23833 2007-01-09  Ben Elliston  <bje@au.ibm.com>
23834
23835         * genautomata.c (STATS_OPTION): New option.
23836         (stats_flag): New flag.
23837         (gen_automata_option): Handle it.
23838         (initiate_automaton_gen): Ditto.
23839         (write_automata): Output statistics only if stats_flag is
23840         set. Likewise, output time statistics only if time_flag is set.
23841         * doc/md.texi (Processor pipeline description): Document new flag.
23842
23843 2007-01-08  Richard Guenther  <rguenther@suse.de>
23844
23845         * builtins.c (fold_builtin_int_roundingfn): Use fit_double_type.
23846         * tree.c (build_int_cst_type): Likewise.
23847         (size_in_bytes): Don't call force_fit_type on the result.
23848         (int_fits_type_p): Use fit_double_type.
23849         * fold-const.c (fit_double_type): New function.
23850         (force_fit_type): Use it.
23851         * tree.h (fit_double_type): Export.
23852
23853 2007-01-08  Jan Hubicka  <jh@suse.cz>
23854
23855         * tree-vectorizer.c (gate_increase_alignment): Fix return type.
23856         * ipa.c (function_and_variable_visibility): Fix return type.
23857
23858 2007-01-08  Richard Guenther  <rguenther@suse.de>
23859
23860         * tree-ssa-ccp.c (maybe_fold_offset_to_array_ref): Use type
23861         of offset to build the index.
23862         * tree-pretty-print.c (dump_generic_node): Don't build negated
23863         const just for printing.
23864         * c-pretty-print.c (pp_c_integer_constant): Likewise.
23865         * builtins.c (fold_builtin_int_roundingfn): Check if result
23866         fits the type by using force_fit_type and comparing the result.
23867         * predict.c (predict_loops): Use compare_tree_int for comparison.
23868         * tree.c (build_int_cst): Fall back to integer_type_node for
23869         NULL_TREE type.
23870         (build_int_cst_wide): Assert type is non-null.
23871
23872 2007-01-08  Roberto Costa  <roberto.costa@st.com>
23873
23874         * tree-vrp.c (extract_range_from_cond_expr): New.
23875         (extract_range_from_expr): Handle COND_EXPR nodes used as expressions.
23876         * tree-ssa-ccp.c (get_maxval_strlen): Handle COND_EXPR nodes used
23877         as expressions.
23878         (fold_stmt): Bug fix, avoid infinite recursion when folding COND_EXPRs.
23879         * tree-ssa-forwprop.c (simplify_cond, forward_propagate_into_cond,
23880         tree_ssa_forward_propagate_single_use_vars): Handle COND_EXPR nodes
23881         used as expressions.
23882         * tree-object-size.c (cond_expr_object_size): New.
23883         (collect_object_sizes_for): Handle COND_EXPR nodes used as expressions.
23884
23885 2007-01-08  Jan Hubicka  <jh@suse.cz>
23886
23887         * tree-ssa-forwprop.c (forward_propagate_into_cond,
23888         tree_ssa_forward_propagate_single_use_va): Release defs of propagated
23889         statement.
23890
23891 2007-01-08  Richard Guenther  <rguenther@suse.de>
23892
23893         PR tree-optimization/23603
23894         * tree-vrp.c (set_value_range_to_truthvalue): New function.
23895         (extract_range_from_binary): Fall back to truthvalue instead of
23896         varying for TRUTH_*_EXPR.
23897         (extract_range_from_comparison): Fall back to truthvalue instead of
23898         varying.
23899         (vrp_visit_phi_node): Don't adjust new range bounds to +INF/-INF
23900         if all visited PHI values were constant.
23901
23902 2007-01-08  Jan Hubicka  <jh@suse.cz>
23903
23904         * cgraphunit.c (cgraph_process_new_functions): Reset reachable flag.
23905         (cgraph_analyze_function): break out from ...
23906         (cgraph_finalize_compilation_unit): ... here.
23907         (cgraph_expand_function): Remove forgoten commented out line.
23908         (cgraph_optimize): Analyze functions.
23909
23910 2007-01-08  Jan Hubicka  <jh@suse.cz>
23911
23912         * tree-pas.h (TODO_remove_function): New flag.
23913         (TODO_update*): Renumber.
23914         (pass_ipa_increase_alignment,
23915         pass_ipa_function_and_variable_visibility): New passes.
23916         * cgraphunit.c (cgraph_increase_alignment): Move to tree-vectorizer.c
23917         (cgraph_function_and_variable_visibility): Move to ipa.c
23918         (cgraph_optimize): Don't call cgraph_function_and_variable_visibility,
23919         cgraph_increase_alignment.
23920         * ipa-inline.c (cgraph_decide_inlining): Don't push timevar.
23921         (cgraph_decide_inlining_incrementally): Push TV_INTEGRATION before
23922         calling tree-inline.
23923         (cgraph_early_inlining): Do not call cgraph_remove_unreachable_nodes.
23924         (pass_ipa_inline, pass_early_ipa_inlining): Set TODO_remove_functions
23925         * tree-vectorizer.c (increase_alignment): Move here from cgraphunit.c
23926         (gate_increase_alignment): New function.
23927         (pass_ipa_increase_alignment): New pass.
23928         * ipa.c: Inline tree-pass.h and timevar.h
23929         (function_and_variable_visibility): Move here from cgraphunit.c
23930         * tree-optimize.c (pass_early_local_passes): Add TODO_remove_functions.
23931         * passes.c (init_optimization_passes): Add the two new passes.
23932         (execute_todo): Handle cgraph_remove_functions.
23933
23934 2007-01-08  Nick Clifton  <nickc@redhat.com>
23935
23936         * config/frv/predicates.md (reg_or_0_operand): Accept
23937         CONST_DOUBLEs.
23938
23939 2007-01-08  Ralf Corsépius <ralf.corsepius@rtems.org>
23940
23941         * config/bfin/rtems.h, config/bfin/t-rtems: New.
23942         * config.gcc: Add bfin*-rtems*.
23943
23944 2007-01-08  Mark Shinwell  <shinwell@codesourcery.com>
23945
23946         * c.opt: Add -flax-vector-conversions.
23947         * c-typeck.c (convert_for_assignment): Pass flag to
23948         vector_types_convertible_p to allow emission of note.
23949         (digest_init): Likewise.
23950         * c-opts.c: Handle -flax-vector-conversions.
23951         * c-common.c (flag_lax_vector_conversions): New.
23952         (vector_types_convertible_p): Unless -flax-vector conversions
23953         has been passed, disallow conversions between vectors with
23954         differing numbers of subparts and/or element types.  If such
23955         a conversion is disallowed, possibly emit a note on the first
23956         occasion only to inform the user of -flax-vector-conversions.
23957         The new last argument specifies this.
23958         * c-common.h (flag_lax_vector_conversions): New.
23959         (vector_types_convertible_p): Add extra argument.
23960         * config/i386/i386.c (ix86_init_mmx_sse_builtins): Use
23961         char_type_node for V*QI type vectors.
23962         * config/rs6000/rs6000-c.c (altivec_overloaded_builtins):
23963         Update to satisfy new typechecking rules.
23964         * config/rs6000/altivec.h (vec_cmple): Use vec_cmpge, for both
23965         C and C++ variants.
23966         * doc/invoke.texi (C Dialect Options): Document
23967         -flax-vector-conversions.
23968
23969 2007-01-08  Mark Shinwell  <shinwell@codesourcery.com>
23970
23971         PR tree-optimization/29877
23972         * tree-ssa-ter.c (is_replaceable_p): Deem assignments with
23973         a register variable on the RHS to not be replaceable.
23974
23975 2007-01-08  Chen Liqin  <liqin@sunnorth.com.cn>
23976         * config/score/t-score-elf (MULTILIB_OPTIONS): Change.
23977         * config/score/predicates.md (const_uimm5, sr0_operand, const_simm12,
23978         const_simm15, const_pow2, const_npow2): Added.
23979         * config/score/misc.md (insv, extv, extzv, movmemsi,
23980         move_lbu_a/b, mov_lhu_a/b etc): Added and fix some bug.
23981         * config/score/score.c (score_address_cost, score_select_cc_mode):
23982         Added.
23983         Change CONST_OK_FOR_LETTER_P/EXTRA_CONSTRAINT define.
23984         Update score_rtx_costs for MACRO TARGET_RTX_COSTS.
23985         Update score_print_operand.
23986         * config/score/score.h (DATA_ALIGNMENT, SELECT_CC_MODE): Added.
23987         Adjust register allocate order and update some macro define.
23988         * config/score/score-mdaux.c (mdx_unaligned_load, mdx_unsigned_store,
23989         mdx_block_move_straight, mdx_block_move_loop_head,
23990         mdx_block_move_loop_body, mdx_block_move_loop_foot,
23991         mdx_block_move_loop, mdx_block_move): Added.
23992         (mdx_movsicc, mdp_select_add_imm, mdp_select, mds_zero_extract_andi,
23993         mdp_limm): Updated and fix some bug and typo.
23994         * config/score/score.md (movqi/hi/si, add/sub/zero/ext): Updated.
23995         (movsf, movdf, doloop_end): Added.
23996
23997 2007-01-08  Kazu Hirata  <kazu@codesourcery.com>
23998
23999         * config/arm/arm.c, config/arm/arm.h, config/arm/arm.md,
24000         config/arm/thumb2.md: Fix comment typos.
24001         * doc/extend.texi: Fix a typo.
24002
24003 2007-01-07  Eric Christopher  <echristo@apple.com>
24004
24005         * configure.ac: Check for __stack_chk_fail for darwin.
24006         * configure: Regenerate.
24007
24008 2007-01-07  Richard Guenther  <rguenther@suse.de>
24009
24010         * tree-vrp.c (extract_range_from_assert): CSE calls to
24011         compare_values where possible.
24012         (extract_range_from_unary_expr): Likewise.
24013
24014 2007-01-07  Anatoly Sokolov <aesok@post.ru>
24015
24016         * config/avr/avr-protos.h (call_insn_operand): Delete prototype.
24017         * config/avr/avr.c (call_insn_operand): Delete function.
24018         * config/avr/avr.md (*pushqi, *pushhi, *pushsi, *pushsf): Use REG_SP
24019         instead of register number. Use predicates.
24020         * config/avr/predicates.md (const0_operand, reg_or_0_operand,
24021         call_insn_operand): Add.
24022
24023 2007-01-06  Jan Hubicka  <jh@suse.cz>
24024
24025         * tree-pass.h (pass_build_cgraph_edges): Declare.
24026         * cgraphunit.c (record_refernece): Move to cgraphbuild.c
24027         (visited_nodes): Remove.
24028         (cgraph_create_edges): Move to cgraphbuild.c; rename to
24029         build_cgrpah_edges; make visited_nodes local.
24030         (cgraph_process_new_functions): DO not call initialize_inline_failed.
24031         (record_references_in_initializer): Move to cgraphbuild.c
24032         (initialize_inline_failed, rebuild_cgraph_edges,
24033         pass_rebuild_cgraph_edges): Move to cgraphbuild.c.
24034         (verify_cgraph_node): Make visited_nodes local.
24035         (cgraph_analyze_function): Do not call cgraph_create_edges and
24036         initialize_inline_failed.
24037         (cgraph_expand_function): Do not call cgraph_lower_function;
24038         assert that function is already lowered.
24039         * Makefile.in (cgraphbuild.o): New.
24040         * passes.c (init_optimization_passes): Add pass_build_cgraph_edges
24041         at the end of lowering passes.
24042
24043 2007-01-06  Steven Bosscher  <steven@gcc.gnu.org>
24044
24045         * ifcvt.c (cond_move_convert_if_block): New function, code
24046         factored out from...
24047         (cond_move_process_if_block): ...here.  Call the new function
24048         on the THEN and ELSE blocks.
24049         (merge_if_block): Do not copy global_live_at_end, merge_blocks
24050         already takes care of this.
24051
24052 2007-01-05  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
24053
24054         PR c/19978
24055         * tree.h (TREE_OVERFLOW_P): New.
24056         * c-typeck.c (parser_build_unary_op): Warn only if result
24057         overflowed and operands did not.
24058         (parser_build_binary_op): Likewise.
24059         (convert_for_assignment): Remove redundant overflow_warning.
24060         * c-common.c (overflow_warning): Don't check or set TREE_OVERFLOW.
24061
24062 2007-01-05  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
24063
24064         * c-typeck.c (store_init_value): Split over two lines to follow
24065         the GNU coding style.
24066
24067 2007-01-05  Benjamin Kosnik  <bkoz@redhat.com>
24068
24069         * c-cppbuiltin.c (c_cpp_builtins): __GXX_EXPERIMENTAL_CPP0X__ to
24070         __GXX_EXPERIMENTAL_CXX0X__.
24071         * doc/cpp.texi: Same.
24072
24073 2007-01-05  Richard Guenther  <rguenther@suse.de>
24074
24075         PR middle-end/27826
24076         * tree.c (get_narrower): Do not construct COMPONENT_REFs
24077         with mismatched types.  Instead explicitly build a
24078         conversion NOP_EXPR.
24079
24080 2007-01-05  Ian Lance Taylor  <iant@google.com>
24081
24082         * c-common.c (decl_with_nonnull_addr_p): New function.
24083         (c_common_truthvalue_conversion): Call it.
24084         * c-typeck.c (build_binary_op): Likewise.
24085         * c-common.h (decl_with_nonnull_addr_p): Declare.
24086
24087 2007-01-05  Jakub Jelinek  <jakub@redhat.com>
24088
24089         PR c/30360
24090         * libgcc2.c (__divdc3): Compare c and d against 0.0 instead of
24091         denom against 0.0.
24092
24093 2007-01-05  Joel Brobecker  <brobecker@adacore.com>
24094
24095         * doc/install.texi (Final install): Document the fact that
24096         the GNAT runtime should not be stripped.
24097
24098 2007-01-04  Jan Hubicka  <jh@suse.cz>
24099
24100         * tree-inline.c (fold_marked_statements): Update operand caches
24101         and EH after folding
24102
24103 2007-01-04  Ian Lance Taylor  <iant@google.com>
24104
24105         * c-common.c (check_function_nonnull): Whitespace fix.
24106
24107 2007-01-04  Jan Hubicka  <jh@suse.cz>
24108
24109         * tree-optimize.c (execute_fixup_cfg): Correct previously mistakely
24110         comitted older version of patch.
24111         (pass_fixup_cfg): Add TODOs to verify flow and statements, dump
24112         function, celanup cfg and collect garbage.
24113
24114 2007-01-04  Mike Stump  <mrs@apple.com>
24115
24116         * Makefile.in (mostlyclean): Don't remove libgcc anymore.
24117         (clean): Likewise.
24118
24119 2007-01-04  Eric Christopher  <echristo@apple.com>
24120
24121         * libgcc2.c (__bswapsi2): Use SItype.
24122         (__bswapdi2): Use DItype.
24123         * libgcc2.h: Update for above.
24124
24125 2007-01-04  Paul Brook  <paul@codesourcery.com>
24126
24127         * config/arm/arm.md (arm_mulsi3, thumb_mulsi3, mulsi3_compare0,
24128         mulsi_compare0_scratch, mulsi3addsi, mulsi3addsi_compare0,
24129         mulsi3addsi_compare0_scratch, mulsidi3adddi, mulsidi3,
24130         umulsidi3, umulsidi3adddi, smulsi3_highpart,
24131         umulsi3_highpart): Make conditional on !arm_arch6.
24132         (arm_mulsi3_v6, thumb_mulsi3_v6, mulsi3_compare0_v6,
24133         mulsi_compare0_scratch_v6, mulsi3addsi_v6, mulsi3addsi_compare0_v6,
24134         mulsi3addsi_compare0_scratch_v6, mulsidi3adddi_v6, mulsidi3_v6,
24135         umulsidi3_v6, umulsidi3adddi_v6, smulsi3_highpart_v6,
24136         umulsi3_highpart_v6): New insns.
24137
24138 2007-01-04  Roger Sayle  <roger@eyesopen.com>
24139
24140         * fold-const.c (fold_convert): When casting an expression to void,
24141         fold_ignored_result may discover a GIMPLE_MODIFY_STMT which doesn't
24142         have a type.  Instead of attempting to build a NOP_EXPR, return
24143         these "special" trees directly.
24144
24145 2007-01-04  Joseph Myers  <joseph@codesourcery.com>
24146
24147         * config/rs6000/rs6000.c (rs6000_rtx_costs): Make adjustment for
24148         MULT inside MINUS as either argument.  Use rs6000_cost->dmul -
24149         rs6000_cost->fp not 0 as adjustment for outer NEG.
24150
24151 2007-01-04  Jan Hubicka  <jh@suse.cz>
24152
24153         * cgraph.c (cgraph_release_function_body): New function.
24154         (cgraph_remove_node): Use it.
24155         * cgraph.h (cgraph_release_function_body): Declare.
24156         * cgraphunit.c (cgraph_expand_function): Use it.
24157         * ipa.c (cgraph_remove_unreahchable_nodes): Use it.
24158         * tree-ssa.c (delete_tree_ssa): Allow to be called before aliasing
24159         is initialized and while compilation of other function is running.
24160         * tree-optimize.c (execute_free_cfg_annotations): Move code to clear
24161         statement CFG annotations from here to ...
24162         * tree-cfg.c (delete_tree_cfg_annotations): ... here.
24163
24164 2007-01-04  Zdenek Dvorak <dvorakz@suse.cz>
24165
24166         * cfgloop.h (enum li_flags): Make the constants powers of two.
24167
24168 2007-01-04  Jan Hubicka  <jh@suse.cz>
24169
24170         * tree-inline.c (copy_bb): Insert new statements to statements_to_fold
24171         set.
24172         (fold_marked_statements): New function.
24173         (optimize_inline_calls, tree_function_versioning): Fold new statements.
24174         * tree-inline.h (copy_body_data): Add statements_to_fold.
24175
24176 2007-01-03  Daniel Jacobowitz  <dan@codesourcery.com>
24177
24178         * config.gcc: Mention libgcc/config.host.
24179         * Makefile.in: Update comments mentioning libgcc.
24180         (LIBGCC, INSTALL_LIBGCC, GCC_PARTS, mklibgcc): Delete.
24181         (all.cross, start.encap, rest.encap, rest.cross): Update
24182         dependencies for libgcc move.
24183         (libgcc.mk, LIBGCC_DEPS, libgcov.a, libgcc.a, stmp-multilib)
24184         (clean-target, clean-target-libgcc): Delete.
24185         (srcdirify, GCC_EXTRA_PARTS): New macros.
24186         (libgcc-support, libgcc.mvars): New rules.
24187         (distclean): Remove mention of mklibgcc.
24188         (install): Don't reference INSTALL_LIBGCC.
24189         (install-common): Don't reference EXTRA_PARTS.
24190         (install-libgcc, install-multilib): Delete rules.
24191         * mklibgcc.in: Delete file.
24192         * doc/configfiles.texi: Don't mention mklibgcc.
24193
24194         * config/i386/t-darwin (SHLIB_VERPFX): Delete (moved to libgcc).
24195         * config/i386/t-darwin64 (SHLIB_VERPFX): Likewise.
24196         * config/rs6000/t-darwin (SHLIB_VERPFX): Likewise.
24197         * config/rs6000/t-ppccomm (TARGET_LIBGCC2_CFLAGS, SHLIB_MAPFILES)
24198         (mklibgcc, ldblspecs): Likewise.
24199
24200         * config/i386/t-nwld (libgcc.def, libc.def, libpcre.def)
24201         (posixpre.def): Use $(T).
24202         (SHLIB_EXT, SHLIB_NAME, SHLIB_SLIBDIR_QUAL, SHLIB_DEF, SHLIB_MAP)
24203         (SHLIB_SRC, SHLIB_INSTALL): Delete.
24204         (SHLIB_LINK): Make dummy.
24205         * config/t-slibgcc-darwin: Delete contents except for dummy SHLIB_LINK.
24206
24207         * config/frv/t-linux (EXTRA_MULTILIB_PARTS): Clear.
24208
24209         * config/alpha/t-crtfm: Use $(T) in rules for EXTRA_PARTS.
24210         * config/alpha/t-vms, config/alpha/t-vms64, config/fr30/t-fr30,
24211         config/i386/t-rtems-i386, config/ia64/t-ia64, config/rs6000/t-beos,
24212         config/rs6000/t-newas, config/sparc/t-elf: Likewise.
24213
24214         * configure.ac (all_outputs): Remove mklibgcc.
24215         * configure: Regenerated.
24216
24217 2007-01-03  Josh Conner  <jconner@apple.com>
24218
24219         PR middle-end/29683
24220         * calls.c (compute_argument_addresses): Set stack and stack_slot
24221         for partial args, too.
24222         (store_one_arg): Use locate.size.constant for the size when
24223         generating a save_area.
24224
24225 2007-01-03  Robert Kennedy <jimbob@google.com>
24226
24227         * tree-cfg.c (tree_merge_blocks): Release SSA_NAME phi results
24228         whose definitions are deleted due to basic block merging.
24229
24230 2007-01-03  Paul Brook  <paul@codesourcery.com>
24231
24232         PR target/16634
24233         * config/arm/arm.c (output_return_instruction): Pop PC in interrupt
24234         functions.
24235         (use_return_insn): Return 0 for Thumb interrupt functions.
24236         (print_multi_reg): Add rfe argument for IRQ returns.
24237         (arm_output_epilogue): Pop interrupt return address directly into PC.
24238         (arm_expand_prologue): Only adjust IRQ return address in Arm mode.
24239
24240 2007-01-03  Paul Brook  <paul@codesourcery.com>
24241
24242         Merge from sourcerygxx-4_1.
24243         * config/arm/thumb2.md: New file.
24244         * config/arm/elf.h (JUMP_TABLES_IN_TEXT_SECTION): Return True for
24245         Thumb-2.
24246         * config/arm/coff.h (JUMP_TABLES_IN_TEXT_SECTION): Ditto.
24247         * config/arm/aout.h (ASM_OUTPUT_ADDR_VEC_ELT): Add !Thumb-2 assertion.
24248         (ASM_OUTPUT_ADDR_DIFF_ELT): Output Thumb-2 jump tables.
24249         * config/arm/aof.h (ASM_OUTPUT_ADDR_DIFF_ELT): Output Thumb-2 jump
24250         tables.
24251         (ASM_OUTPUT_ADDR_VEC_ELT): Add !Thumb-2 assertion.
24252         * config/arm/ieee754-df.S: Use macros for Thumb-2/Unified asm
24253         comptibility.
24254         * config/arm/ieee754-sf.S: Ditto.
24255         * config/arm/arm.c (thumb_base_register_rtx_p): Rename...
24256         (thumb1_base_register_rtx_p): ... to this.
24257         (thumb_index_register_rtx_p): Rename...
24258         (thumb1_index_register_rtx_p): ... to this.
24259         (thumb_output_function_prologue): Rename...
24260         (thumb1_output_function_prologue): ... to this.
24261         (thumb_legitimate_address_p): Rename...
24262         (thumb1_legitimate_address_p): ... to this.
24263         (thumb_rtx_costs): Rename...
24264         (thumb1_rtx_costs): ... to this.
24265         (thumb_compute_save_reg_mask): Rename...
24266         (thumb1_compute_save_reg_mask): ... to this.
24267         (thumb_final_prescan_insn): Rename...
24268         (thumb1_final_prescan_insn): ... to this.
24269         (thumb_expand_epilogue): Rename...
24270         (thumb1_expand_epilogue): ... to this.
24271         (arm_unwind_emit_stm): Rename...
24272         (arm_unwind_emit_sequence): ... to this.
24273         (thumb2_legitimate_index_p, thumb2_legitimate_address_p,
24274         thumb1_compute_save_reg_mask, arm_dwarf_handle_frame_unspec,
24275         thumb2_index_mul_operand, output_move_vfp, arm_shift_nmem,
24276         arm_save_coproc_regs, thumb_set_frame_pointer, arm_print_condition,
24277         thumb2_final_prescan_insn, thumb2_asm_output_opcode, arm_output_shift,
24278         thumb2_output_casesi): New functions.
24279         (TARGET_DWARF_HANDLE_FRAME_UNSPEC): Define.
24280         (FL_THUMB2, FL_NOTM, FL_DIV, FL_FOR_ARCH6T2, FL_FOR_ARCH7,
24281         FL_FOR_ARCH7A, FL_FOR_ARCH7R, FL_FOR_ARCH7M, ARM_LSL_NAME,
24282         THUMB2_WORK_REGS): Define.
24283         (arm_arch_notm, arm_arch_thumb2, arm_arch_hwdiv, arm_condexec_count,
24284         arm_condexec_mask, arm_condexec_masklen)): New variables.
24285         (all_architectures): Add armv6t2, armv7, armv7a, armv7r and armv7m.
24286         (arm_override_options): Check new CPU capabilities.
24287         Set new architecture flag variables.
24288         (arm_isr_value): Handle v7m interrupt functions.
24289         (user_return_insn): Return 0 for v7m interrupt functions.  Handle
24290         Thumb-2.
24291         (const_ok_for_arm): Handle Thumb-2 constants.
24292         (arm_gen_constant): Ditto.  Use movw when available.
24293         (arm_function_ok_for_sibcall): Return false for v7m interrupt
24294         functions.
24295         (legitimize_pic_address, arm_call_tls_get_addr): Handle Thumb-2.
24296         (thumb_find_work_register, arm_load_pic_register,
24297         legitimize_tls_address, arm_address_cost, load_multiple_sequence,
24298         emit_ldm_seq, emit_stm_seq, arm_select_cc_mode, get_jump_table_size,
24299         print_multi_reg, output_mov_long_double_fpa_from_arm,
24300         output_mov_long_double_arm_from_fpa, output_mov_double_fpa_from_arm,
24301         output_mov_double_fpa_from_arm, output_move_double,
24302         arm_compute_save_reg_mask, arm_compute_save_reg0_reg12_mask,
24303         output_return_instruction, arm_output_function_prologue,
24304         arm_output_epilogue, arm_get_frame_offsets, arm_regno_class,
24305         arm_output_mi_thunk, thumb_set_return_address): Ditto.
24306         (arm_expand_prologue): Handle Thumb-2.  Use arm_save_coproc_regs.
24307         (arm_coproc_mem_operand): Allow POST_INC/PRE_DEC.
24308         (arithmetic_instr, shift_op): Use arm_shift_nmem.
24309         (arm_print_operand): Use arm_print_condition.  Handle '(', ')', '.',
24310         '!' and 'L'.
24311         (arm_final_prescan_insn): Use extract_constrain_insn_cached.
24312         (thumb_expand_prologue): Use thumb_set_frame_pointer.
24313         (arm_file_start): Output directive for unified syntax.
24314         (arm_unwind_emit_set): Handle stack alignment instruction.
24315         * config/arm/lib1funcs.asm: Remove default for __ARM_ARCH__.
24316         Add v6t2, v7, v7a, v7r and v7m.
24317         (RETLDM): Add Thumb-2 code.
24318         (do_it, shift1, do_push, do_pop, COND, THUMB_SYNTAX): New macros.
24319         * config/arm/arm.h (TARGET_CPU_CPP_BUILTINS): Define __thumb2__.
24320         (TARGET_THUMB1, TARGET_32BIT, TARGET_THUMB2, TARGET_DSP_MULTIPLY,
24321         TARGET_INT_SIMD, TARGET_UNIFIED_ASM, ARM_FT_STACKALIGN, IS_STACKALIGN,
24322         THUMB2_TRAMPOLINE_TEMPLATE, TRAMPOLINE_ADJUST_ADDRESS,
24323         ASM_OUTPUT_OPCODE, THUMB2_GO_IF_LEGITIMATE_ADDRESS,
24324         THUMB2_LEGITIMIZE_ADDRESS, CASE_VECTOR_PC_RELATIVE,
24325         CASE_VECTOR_SHORTEN_MODE, ADDR_VEC_ALIGN, ASM_OUTPUT_CASE_END,
24326         ADJUST_INSN_LENGTH): Define.
24327         (TARGET_REALLY_IWMMXT, TARGET_IWMMXT_ABI, CONDITIONAL_REGISTER_USAGE,
24328         STATIC_CHAIN_REGNUM, HARD_REGNO_NREGS, INDEX_REG_CLASS,
24329         BASE_REG_CLASS, MODE_BASE_REG_CLASS, SMALL_REGISTER_CLASSES,
24330         PREFERRED_RELOAD_CLASS, SECONDARY_OUTPUT_RELOAD_CLASS,
24331         SECONDARY_INPUT_RELOAD_CLASS, LIBCALL_VALUE, FUNCTION_VALUE_REGNO_P,
24332         TRAMPOLINE_SIZE, INITIALIZE_TRAMPOLINE, HAVE_PRE_INCREMENT,
24333         HAVE_POST_DECREMENT, HAVE_PRE_DECREMENT, HAVE_PRE_MODIFY_DISP,
24334         HAVE_POST_MODIFY_DISP, HAVE_PRE_MODIFY_REG, HAVE_POST_MODIFY_REG,
24335         REGNO_MODE_OK_FOR_BASE_P, LEGITIMATE_CONSTANT_P,
24336         REG_MODE_OK_FOR_BASE_P, REG_OK_FOR_INDEX_P, GO_IF_LEGITIMATE_ADDRESS,
24337         LEGITIMIZE_ADDRESS, THUMB2_LEGITIMIZE_ADDRESS,
24338         GO_IF_MODE_DEPENDENT_ADDRESS, MEMORY_MOVE_COST, BRANCH_COST,
24339         ASM_APP_OFF, ASM_OUTPUT_CASE_LABEL, ARM_DECLARE_FUNCTION_NAME,
24340         FINAL_PRESCAN_INSN, PRINT_OPERAND_PUNCT_VALID_P,
24341         PRINT_OPERAND_ADDRESS): Adjust for Thumb-2.
24342         (arm_arch_notm, arm_arch_thumb2, arm_arch_hwdiv): New declarations.
24343         * config/arm/arm-cores.def: Add arm1156t2-s, cortex-a8, cortex-r4 and
24344         cortex-m3.
24345         * config/arm/arm-tune.md: Regenerate.
24346         * config/arm/arm-protos.h: Update prototypes.
24347         * config/arm/vfp.md: Enable patterns for Thumb-2.
24348         (arm_movsi_vfp): Add movw alternative.  Use output_move_vfp.
24349         (arm_movdi_vfp, movsf_vfp, movdf_vfp): Use output_move_vfp.
24350         (thumb2_movsi_vfp, thumb2_movdi_vfp, thumb2_movsf_vfp,
24351         thumb2_movdf_vfp, thumb2_movsfcc_vfp, thumb2_movdfcc_vfp): New.
24352         * config/arm/libunwind.S: Add Thumb-2 code.
24353         * config/arm/constraints.md: Update include Thumb-2.
24354         * config/arm/ieee754-sf.S: Add Thumb-2/Unified asm support.
24355         * config/arm/ieee754-df.S: Ditto.
24356         * config/arm/bpabi.S: Ditto.
24357         * config/arm/t-arm (MD_INCLUDES): Add thumb2.md.
24358         * config/arm/predicates.md (low_register_operand,
24359         low_reg_or_int_operand, thumb_16bit_operator): New.
24360         (thumb_cmp_operand, thumb_cmpneg_operand): Rename...
24361         (thumb1_cmp_operand, thumb1_cmpneg_operand): ... to this.
24362         * config/arm/t-arm-elf: Add armv7 multilib.
24363         * config/arm/arm.md: Update patterns for Thumb-2 and Unified asm.
24364         Include thumb2.md.
24365         (UNSPEC_STACK_ALIGN, ce_count): New.
24366         (arm_incscc, arm_decscc, arm_umaxsi3, arm_uminsi3,
24367         arm_zero_extendsidi2, arm_zero_extendqidi2): New
24368         insns/expanders.
24369         * config/arm/fpa.md: Update patterns for Thumb-2 and Unified asm.
24370         (thumb2_movsf_fpa, thumb2_movdf_fpa, thumb2_movxf_fpa,
24371         thumb2_movsfcc_fpa, thumb2_movdfcc_fpa): New insns.
24372         * config/arm/cirrus.md: Update patterns for Thumb-2 and Unified asm.
24373         (cirrus_thumb2_movdi, cirrus_thumb2_movsi_insn,
24374         thumb2_cirrus_movsf_hard_insn, thumb2_cirrus_movdf_hard_insn): New
24375         insns.
24376         * doc/extend.texi: Document ARMv7-M interrupt functions.
24377         * doc/invoke.texi: Document Thumb-2 new cores+architectures.
24378
24379 2007-01-03  Jakub Jelinek  <jakub@redhat.com>
24380
24381         * unwind-dw2.c (SIGNAL_FRAME_BIT, EXTENDED_CONTEXT_BIT): Define.
24382         (struct _Unwind_Context): Rename args_size to flags, remove
24383         signal_frame field, add a new args_size field and version field.
24384         (_Unwind_IsSignalFrame, _Unwind_SetSignalFrame,
24385         _Unwind_IsExtendedContext): New inline functions.
24386         (_Unwind_GetGR, _Unwind_SetGR, _Unwind_GetGRPtr, _Unwind_SetGRPtr):
24387         Assume by_value array is only present if _Unwind_IsExtendedContext.
24388         (_Unwind_GetIPInfo, execute_cfa_program, uw_frame_state_for): Use
24389         _Unwind_IsSignalFrame.
24390         (__frame_state_for): Initialize context.flags to EXTENDED_CONTEXT_BIT.
24391         (uw_update_context_1): Use _Unwind_SetSignalFrame.
24392         (uw_init_context_1): Initialize context->flags to
24393         EXTENDED_CONTEXT_BIT.
24394         * config/rs6000/linux-unwind.h (frob_update_context): Use
24395         _Unwind_SetSignalFrame.
24396
24397 2007-01-03  Andrew Pinski  <andrew_pinski@playstation.sony.com>
24398
24399         PR middle-end/30353
24400         * gimplify.c (gimplify_modify_expr_complex_part): Move below
24401         tree_to_gimple_tuple.  Call tree_to_gimple_tuple when we need
24402         the value.
24403
24404 2007-01-03  Kazu Hirata  <kazu@codesourcery.com>
24405
24406         * config/i386/i386.h (NON_STACK_REG_P, REGNO_OK_FOR_SIREG_P,
24407         REGNO_OK_FOR_DIREG_P, REWRITE_ADDRESS, ASM_OPERAND_LETTER,
24408         RET, AT_SP): Remove.
24409         * config/i386/i386.md (*sse_prologue_save_insn): Use return
24410         instead of RET.
24411
24412         * alias.c (init_alias_analysis): Use VEC_safe_grow_cleared.
24413         * cfgbuild.c (find_basic_blocks): Likewise.
24414         * cfgrtl.c (rtl_create_basic_block): Likewise.
24415         * function.c (temp_slots_at_level): Likewise.
24416         * reg-stack.c (stack_regs_mentioned): Likewise.
24417         * regclass.c (allocate_reg_info): Likewise.
24418         * tree-cfg.c (init_empty_tree_cfg, build_tree_cfg, create_bb,
24419         set_bb_for_stmt, move_block_to_fn): Likewise.
24420         * tree-complex.c (tree_lower_complex): Likewise.
24421         * vec.h (VEC_safe_grow_cleared): New.
24422
24423         * cgraphunit.c, tree-ssa-alias.c: Fix comment typos.
24424
24425 2007-01-03  Zdenek Dvorak <dvorakz@suse.cz>
24426
24427         * loop-unswitch.c (unswitch_loop): Pass probabilities to loopify.
24428         * tree-ssa-loop-unswitch.c (tree_unswitch_loop): Pass probabilities
24429         to loop_version.
24430         * cfgloopmanip.c (scale_loop_frequencies): Export.
24431         (loopify): Scale the frequencies by prescribed coefficients.
24432         (set_zero_probability): New function.
24433         (duplicate_loop_to_header_edge): Improve updating of frequencies.
24434         (lv_adjust_loop_entry_edge, loop_version): Set probabilities
24435         and frequencies according to arguments.
24436         * tree-ssa-loop-manip.c (tree_unroll_loop): Set probabilities
24437         correctly.
24438         * cfg.c (scale_bbs_frequencies_int): Allow scaling the frequencies up.
24439         * modulo-sched.c (sms_schedule): Set probabilities for entering
24440         versioned loop correctly.
24441         * tree-vect-transform.c (vect_transform_loop): Ditto.
24442         * cfgloop.h (loopify, loop_version): Declaration changed.
24443         (scale_loop_frequencies): Declared.
24444
24445 2007-01-02  Jan Hubicka  <jh@suse.cz>
24446
24447         * cgraph.c: Include tree-flow.h
24448         (cgraph_add_new-function): Handle IPA_SSA mode; execute
24449         early_local_passes.
24450         * cgraph.h (enum cgraph_state): Add CGRAPH_STATE_IPA_SSA.
24451         * tree-pass.h (pass_all_early_optimizations): Declare.
24452         * cgraphunit.c (cgraph_process_new_functions): Add IPA_SSA; execute
24453         early_local_passes.
24454         (cgraph_analyze_function): Do early_local_passes.
24455         * tree-mudflap.c (mf_decl_cache_locals, mf_build_check_statement_for):
24456         Do not add referenced vars.
24457         * tree-optimize.c (gate_all_optimizations): Do not execute when not in
24458         SSA form.
24459         (gate_all_early_local_passes): New gate.
24460         (pass_early_local_passes): Use new gate.
24461         (execute_early_local_optimizations): New functions.
24462         (gate_all_early_optimizations): New gate.
24463         (pass_all_early_optimizations): New pass.
24464         (execute_free_datastructures): Free SSA only when initialized.
24465         (gate_init_datastructures): Init only when optimizing.
24466         (tree_lowering_passes): Do early local passes when called late.
24467         * tree-profile.c (do_tree_profiling): Don't profile functions added
24468         late.
24469         (do_early_tree_profiling, pass_early_tree_profile): Kill.
24470         * tree-cfg.c (update_modified_stmts): Do not update when operands are
24471         not active.
24472         * passes.c (init_optimizations_passes): Reorder so we go into SSA
24473         during early_local_passes.
24474         * Makefile.in (cgraph.o): Add dependency on tree-flow.h.
24475
24476
24477 2007-01-02  Carlos O'Donell  <carlos@codesourcery.com>
24478
24479         * Makefile.in: Update copyright year.
24480
24481 2007-01-02  Carlos O'Donell  <carlos@codesourcery.com>
24482
24483         * Makefile.in: Export GCC_EXEC_PREFIX before calling $(RUNTEST)
24484         in $(lang_checks) and check-consistency targets.
24485
24486 2007-01-02  Jan Hubicka  <jh@suse.cz>
24487
24488         * tree-mudflap.c (mf_decl_cache_locals, mf_build_check_statement_for):
24489         Do not add referenced vars.
24490         * tree-cfg.c (update_modified_stmts): Do not update when SSA operands
24491         are not active.
24492         * passes.c (init_optimization_passes): Put mudflap_2 after
24493         free_datastructures.
24494
24495 2007-01-02  Jan Hubicka  <jh@suse.cz>
24496
24497         * tree-optimize (execute_fixup_cfg): Set after_inlining flag.
24498         Set NOTHROW flag on call statements proved to be nothrow.
24499         Update statement of local calls so new pure/const functions are
24500         updated. Update_ssa when in ssa form. Mark PHI nodes of nonlocal
24501         goto receivers.
24502         (tree_rest_of_compilation): Register hooks and initialize bitmap
24503         early. Do not set after_inlining flag.
24504
24505 2007-01-02  Steve Ellcey  <sje@cup.hp.com>
24506
24507         * sbitmap.c (HOST_BITS_PER_LONG_LONG):  Change to
24508         HOST_BITS_PER_LONGLONG
24509
24510 2007-01-02  Manuel Lopez-Ibanez <manu@gcc.gnu.org>
24511
24512         PR c/19977
24513         * c-typeck.c (store_init_value): Don't emit pedantic overflow
24514         warning for non-static initializers.
24515
24516 2007-01-02  Steven Bosscher  <steven@gcc.gnu.org>
24517
24518         * config/alpha/alpha.md, arm/arm.c, darwin.c, frv/frv.md,
24519         m32r/m32r.c, m32r/m32r.c, mn10300/mn10300.md, pa/pa.c,
24520         rs6000/rs6000.c, s390/s390.md, sh/sh.md, sparc/sparc.c:
24521         Always use set_unique_reg_note to add REG_EQUAL notes.
24522
24523 2007-01-02  Kazu Hirata  <kazu@codesourcery.com>
24524
24525         Revert:
24526         2007-01-02  Kazu Hirata  <kazu@codesourcery.com>
24527
24528         * alias.c (init_alias_analysis): Use VEC_safe_grow_cleared.
24529         * cfgbuild.c (find_basic_blocks): Likewise.
24530         * cfgrtl.c (rtl_create_basic_block): Likewise.
24531         * function.c (temp_slots_at_level): Likewise.
24532         * reg-stack.c (stack_regs_mentioned): Likewise.
24533         * regclass.c (allocate_reg_info): Likewise.
24534         * tree-cfg.c (init_empty_tree_cfg, build_tree_cfg, create_bb,
24535         set_bb_for_stmt, move_block_to_fn): Likewise.
24536         * tree-complex.c (tree_lower_complex): Likewise.
24537         * vec.h (VEC_safe_grow_cleared): New.
24538
24539 2007-01-02  Ian Lance Taylor  <iant@google.com>
24540
24541         * c-common.c (c_common_truthvalue_conversion): When warning about
24542         using an assignment as a truth value, set TREE_NO_WARNING.
24543
24544 2007-01-02  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
24545
24546         PR middle-end/7651
24547         * c.opt (Wold-style-declaration): New.
24548         * doc/invoke.texi (C-only Warning Options): New.
24549         (Wold-style-declaration): Document it.
24550         (Wextra): Enabled by -Wextra.
24551         * c-opts.c (c_common_post_options): Enabled by -Wextra.
24552         * c-decl.c (declspecs_add_scspec): Replace -Wextra with
24553         -Wold-style-declaration.
24554
24555 2007-01-02  Kazu Hirata  <kazu@codesourcery.com>
24556
24557         * alias.c (init_alias_analysis): Use VEC_safe_grow_cleared.
24558         * cfgbuild.c (find_basic_blocks): Likewise.
24559         * cfgrtl.c (rtl_create_basic_block): Likewise.
24560         * function.c (temp_slots_at_level): Likewise.
24561         * reg-stack.c (stack_regs_mentioned): Likewise.
24562         * regclass.c (allocate_reg_info): Likewise.
24563         * tree-cfg.c (init_empty_tree_cfg, build_tree_cfg, create_bb,
24564         set_bb_for_stmt, move_block_to_fn): Likewise.
24565         * tree-complex.c (tree_lower_complex): Likewise.
24566         * vec.h (VEC_safe_grow_cleared): New.
24567
24568 2007-01-02  Douglas Gregor  <doug.gregor@gmail.com>
24569
24570         * c-common.c (c_common_nodes_and_builtins): Since variants of
24571         void_type_node get built before it is given a name, we need to
24572         give those variants the name, too.
24573         (complete_array_type): We need to work with the canonical main
24574         type of the array, from which we will build the qualified version.
24575         * params.def (PARAM_VERIFY_CANONICAL_TYPES): New.
24576         * print-tree.c (print_node): Display canonical type information
24577         for each type.
24578         * stor-layout.c (layout_type): When we don't know the
24579         alignment of a type for which we're building an array, we end up
24580         guessing wrong, so make the type require structural equality.
24581         * tree.c (make_node_stat): When we build a new type, it is its
24582         own canonical type.
24583         (build_type_attribute_qual_variant): When building an attribute
24584         variant, its canonical type is the non-attribute variant. However,
24585         if the attributes are target-dependent and they differ, we need to
24586         use structural equality checks for this type.
24587         (build_qualified_type): A qualified type is not equivalent to its
24588         unqualified variant; set the canonical type appropriately.
24589         (build_distinct_type_copy): When building a distinct type from
24590         another type, the new type is its own canonical type.
24591         (build_variant_type_copy): When building a new type variant, we
24592         assume that it is equivalent to the original type.
24593         (build_pointer_type_for_mode): When building a pointer type, also
24594         build a canonical type pointer.
24595         (build_reference_type_for_mode): When building a reference type,
24596         also build a canonical type reference.
24597         (build_index_type): When we can't hash an index type (e.g.,
24598         because its maximum value is negative), the index type requires
24599         structural equality tests.
24600         (build_array_type): Build the canonical form of an array type.
24601         (build_function_type): Function types require structural equality,
24602         because they contain default arguments, attributes, etc.
24603         (build_method_type_directly): Ditto for method types.
24604         (build_offset_type): Build the canonical offset type.
24605         (build_complex_type): Build the canonical vector type.
24606         (make_vector_type): Build the canonical vector type.
24607         * tree.h (TYPE_CANONICAL): New.
24608         (TYPE_STRUCTURAL_EQUALITY_P): New.
24609         (SET_TYPE_STRUCTURAL_EQUALITY): New.
24610         (struct tree_type): Added "canonical" field.
24611         * params.h (VERIFY_CANONICAL_TYPES): New.
24612         * doc/c-tree.texi (TYPE_CANONICAL): Document.
24613         (TYPE_STRUCTURAL_EQUALITY_P): Document.
24614         (SET_TYPE_STRUCTURAL_EQUALITY): Document.
24615         * doc/invoke.texi (verify-canonical-types): Document --param
24616         parameter for verifying canonical types.
24617
24618 2007-01-02  Joseph Myers  <joseph@codesourcery.com>
24619
24620         * config.gcc (powerpc-*-eabispe*, powerpc-*-eabisimaltivec*,
24621         powerpc-*-eabisim*, powerpc-*-eabialtivec*, powerpc-*-eabi*,
24622         powerpc-*-rtems*, powerpc-wrs-vxworks, powerpc-wrs-vxworksae,
24623         powerpcle-*-eabisim*, powerpcle-*-eabi*): Add rs6000/e500.h to
24624         tm_file.
24625         * config/rs6000/e500.h: New.
24626         * config/rs6000/eabi.h (TARGET_SPE_ABI, TARGET_SPE, TARGET_E500,
24627         TARGET_ISEL, TARGET_FPRS, TARGET_E500_SINGLE, TARGET_E500_DOUBLE):
24628         Remove.
24629         * config/rs6000/linuxspe.h (TARGET_SPE_ABI, TARGET_SPE,
24630         TARGET_E500, TARGET_ISEL, TARGET_FPRS, TARGET_E500_SINGLE,
24631         TARGET_E500_DOUBLE): Remove.
24632         * config/rs6000/vxworks.h (TARGET_SPE_ABI, TARGET_SPE,
24633         TARGET_E500, TARGET_ISEL, TARGET_FPRS): Remove.
24634         * config/rs6000/rs6000.h (CHECK_E500_OPTIONS): Define.
24635         * config/rs6000/rs6000.c (rs6000_override_options): Use
24636         CHECK_E500_OPTIONS.
24637
24638 2007-01-02  Joseph Myers  <joseph@codesourcery.com>
24639
24640         * config/rs6000/rs6000.c (print_operand): Check (TARGET_SPE ||
24641         TARGET_E500_DOUBLE), not TARGET_E500, for %y.
24642         (rs6000_generate_compare, rs6000_emit_sCOND, output_cbranch,
24643         rs6000_emit_cmove): Don't check TARGET_E500.
24644         * config/rs6000/rs6000.md (bunordered, bordered, sunordered,
24645         sordered): Don't check TARGET_E500.
24646
24647 2007-01-01  Eric Christopher  <echristo@apple.com>
24648
24649         * config/mips/mips.c (mips_regno_mode_ok_for_base_p): Use
24650         HARD_REGISTER_NUM_P.
24651
24652 2007-01-01  Roger Sayle  <roger@eyesopen.com>
24653
24654         * fold-const.c (fold_binary) <EQ_EXPR>: Fold "(X^C1) eq/ne C2" into
24655         "X eq/ne (C1^C2)".  Fold "(X^Z) eq/ne (Y^Z)" as "X eq/ne Y" when Z
24656         has no side-effects.  Fold "(X^C1) eq/ne (Y^C2)" as "(X^(C1^C2))
24657         eq/ne Y".
24658
24659 2007-01-01  Mike Stump  <mrs@apple.com>
24660
24661         * configure.ac: Remove support for building with Apple's gcc-3.1.
24662
24663 2007-01-02  Joseph Myers  <joseph@codesourcery.com>
24664
24665         PR middle-end/30311
24666         * caller-save.c (add_stored_regs): Only handle SUBREGs if inner
24667         REG is a hard register.  Do not modify REG before calling
24668         subreg_nregs.
24669         * rtlanal.c (subreg_get_info): Don't assert size of XMODE is a
24670         multiple of the size of YMODE for certain lowpart cases.
24671
24672 2007-01-01  Andrew Pinski  <pinskia@gmail.com>
24673
24674         PR middle-end/30253
24675         * gimplify (voidify_wrapper_expr): Update for
24676         GIMPLE_MODIFY_STMT.
24677
24678 2007-01-01  Andreas Schwab  <schwab@suse.de>
24679
24680         PR target/29166
24681         * config/ia64/ia64.c (ia64_compute_frame_size): Account space for
24682         save of BR0 in extra_spill_size instead of spill_size.
24683         (ia64_expand_prologue): Save BR0 outside of the gr/br/fr spill
24684         area.
24685         (ia64_expand_epilogue): Restore BR0 from its new location.
24686
24687 2007-01-01  Andrew Pinski  <pinskia@gmail.com>
24688
24689         * gimplify.c (gimplify_init_constructor <case VECTOR_TYPE>):
24690         Use a temporary variable if the left hand side is not a gimple
24691         register.
24692
24693 2007-01-01  Andrew Pinski  <pinskia@gmail.com>
24694
24695         * gimplify.c (gimplify_return_expr): Make the temporary variable
24696         for the return expression, a gimple register variable.
24697
24698 2007-01-01  Jan Hubicka  <jh@suse.cz>
24699
24700         * emit-rtl.c (emit_copy_of_insn_after): Do not call copy_insn_1 for
24701         INSN_LIST.
24702
24703 2007-01-01  Mike Stump  <mrs@apple.com>
24704
24705         * configure.ac (HAVE_GAS_LITERAL16): Add autoconf check for
24706         .literal16.
24707         * config/darwin.c (machopic_select_rtx_section): Use
24708         HAVE_GAS_LITERAL16.
24709         (darwin_mergeable_constant_section): Likewise.
24710         * configure: Regenerate.
24711         * config.in: Regenerate.
24712
24713 2007-01-01  Jan Hubicka  <jh@suse.cz>
24714             Andrew Pinski  <pinskia@gmail.com>
24715
24716         * cgraphunit.c (cgraph_optimize): Call cgraph_add_new_functions
24717         before starting IPA passes.