OSDN Git Service

* sched-int.h (struct _dep): Rename field 'kind' to 'type'.
[pf3gnuchains/gcc-fork.git] / gcc / ChangeLog
1 2007-08-14  Maxim Kuvyrkov  <maxim@codesourcery.com>
2
3         * sched-int.h (struct _dep): Rename field 'kind' to 'type'.
4         (DEP_KIND): Rename to DEP_TYPE.  Update all uses.
5         (dep_def): New typedef.
6         (init_dep_1, sd_debug_dep): Declare functions.
7         (DEP_LINK_KIND): Rename to DEP_LINK_TYPE.
8         (debug_dep_links): Remove.
9         (struct _deps_list): New field 'n_links'.
10         (DEPS_LIST_N_LINKS): New macro.
11         (FOR_EACH_DEP_LINK): Remove.
12         (create_deps_list, free_deps_list, delete_deps_list): Remove
13         declaration.
14         (deps_list_empty_p, debug_deps_list, add_back_dep_to_deps_list): Ditto.
15         (find_link_by_pro_in_deps_list, find_link_by_con_in_deps_list): Ditto.
16         (copy_deps_list_change_con, move_dep_link): Ditto.
17         (struct haifa_insn_data): Split field 'back_deps' into 'hard_back_deps'
18         and 'spec_back_deps'.  New field 'resolved_forw_deps'.  Remove field
19         'dep_count'.
20         (INSN_BACK_DEPS): Remove.
21         (INSN_HARD_BACK_DEPS, INSN_SPEC_BACK_DEPS, INSN_RESOLVED_FORW_DEPS):
22         New macros.
23         (INSN_DEP_COUNT): Remove.
24         (enum DEPS_ADJUST_RESULT): Add new constant DEP_NODEP.  Fix comments.
25         (spec_info, haifa_recovery_block_was_added_during_scheduling_p):
26         Declare global variables.
27         (deps_pools_are_empty_p, sched_free_deps): Declare functions.
28         (add_forw_dep, compute_forward_dependences): Remove declarations.
29         (add_or_update_back_dep, add_or_update_back_forw_dep): Ditto.
30         (add_back_forw_dep, delete_back_forw_dep): Ditto.
31         (debug_ds, sched_insn_is_legitimate_for_speculation_p): Declare
32         functions.
33         (SD_LIST_NONE, SD_LIST_HARD_BACK, SD_LIST_SPEC_BACK, SD_LIST_FORW): New
34         constants.
35         (SD_LIST_RES_BACK, SD_LIST_RES_FORW, SD_LIST_BACK): Ditto.
36         (sd_list_types_def): New typedef.
37         (sd_next_list): Declare function.
38         (struct _sd_iterator): New type.
39         (sd_iterator_def): New typedef.
40         (sd_iterator_start, sd_iterator_cond, sd_iterator_next): New inline
41         functions.
42         (FOR_EACH_DEP): New cycle wrapper.
43         (sd_lists_size, sd_lists_empty_p, sd_init_insn, sd_finish_insn):
44         Declare functions.
45         (sd_find_dep_between, sd_add_dep, sd_add_or_update_dep): Ditto.
46         (sd_resolve_dep, sd_copy_back_deps, sd_delete_dep, sd_debug_lists):
47         Ditto.
48
49         * sched-deps.c (init_dep_1): Make global.
50         (DUMP_DEP_PRO, DUMP_DEP_CON, DUMP_DEP_STATUS, DUMP_DEP_ALL): New
51         constants.
52         (dump_dep): New static function.
53         (dump_dep_flags): New static variable.
54         (sd_debug_dep): New function.
55         (add_to_deps_list, remove_from_deps_list): Update 'n_links' field of
56         the list.
57         (move_dep_link): Use remove_from_deps_list (), instead of
58         detach_dep_link ().
59         (dep_links_consistent_p, dump_dep_links, debug_dep_links): Remove.
60         (dep_link_is_detached_p): New static function.
61         (deps_obstack, dl_obstack, dn_obstack): Remove.  Use dn_pool, dl_pool
62         instead.
63         (dn_pool, dl_pool): New alloc_pools.
64         (dn_pool_diff, dl_pool_diff): New static variables.
65         (create_dep_node, delete_dep_node): New static function.
66         (create_deps_list): Make it static.  Use alloc_pool 'dl_pool'.
67         (deps_list_empty_p): Make it static.  Use 'n_links' field.
68         (deps_pools_are_empty_p): New static function.
69         (alloc_deps_list, delete_deps_list): Remove.
70         (dump_deps_list, debug_deps_list, add_back_dep_to_deps_list): Remove.
71         (find_link_by_pro_in_deps_list, find_link_by_con_in_deps_list): Ditto.
72         (copy_deps_list_change_con): Remove.  Use sd_copy_back_deps () instead.
73         (forward_dependency_cache): Remove.
74         (maybe_add_or_update_back_dep_1, add_or_update_back_dep_1): Remove
75         'back' from the names.  Change signature to use dep_t instead of
76         equivalent quad.
77         (add_back_dep): Ditto.  Make global.
78         (check_dep_status): Rename to check_dep ().
79         (sd_next_list, sd_lists_size, sd_lists_empty_p, sd_init_insn):
80         New functions.
81         (sd_finish_insn): Ditto.
82         (sd_find_dep_between_no_cache): New static function.
83         (sd_find_dep_between): New function.
84         (ask_dependency_caches, set_dependency_caches): New static functions.
85         (update_dependency_caches, change_spec_dep_to_hard, update_dep): Ditto.
86         (add_or_update_dep_1): Separate pieces of functionality into
87         ask_dependency_caches (), update_dependency_caches (),
88         change_spec_dep_to_hard (), update_dep ().
89         (get_back_and_forw_lists): New static function.
90         (sd_add_dep): Separate setting of dependency caches into
91         set_dependency_caches ().
92         (sd_add_or_update_dep, sd_resolve_dep, sd_copy_back_deps):
93         New functions.
94         (sd_delete_dep): Ditto.
95         (DUMP_LISTS_SIZE, DUMP_LISTS_DEPS, DUMP_LISTS_ALL): New constants.
96         (dump_lists): New static function.
97         (sd_debug_lists): New debug function.
98         (delete_all_dependences, fixup_sched_groups): Update to use
99         sd_* infrastructure.
100         (sched_analyze_2): Create data-speculative dependency only if
101         data-speculation is enabled.
102         (sched_analyze_insn): If insn cannot be speculative, make all its
103         dependencies non-speculative.
104         (sched_analyze): Use sd_init_insn ().
105         (add_forw_dep, compute_forward_dependencies): Remove.
106         (delete_dep_nodes_in_back_deps): New static function.
107         (sched_free_deps): New function.
108         (init_dependency_caches): Init alloc_pools.
109         (extend_depedency_caches): Update after removing of
110         forward_dependency_cache.
111         (free_dependency_caches): Ditto.  Free alloc_pools.
112         (adjust_add_sorted_back_dep, adjust_back_add_forw_dep): Remove.
113         (delete_forw_dep, add_or_update_back_dep, add_or_update_back_forw_dep):
114         Ditto.
115         (add_back_forw_dep, delete_back_forw_dep): Ditto.
116         (add_dependence): Use init_dep ().
117         (get_dep_weak_1): New static function.
118         (get_dep_weak): Move logic to get_dep_weak_1 ().
119         (dump_ds): New static function moved from haifa-sched.c:
120         debug_spec_status ().
121         (debug_ds): New debug function.
122         (check_dep_status): Rename to check_dep ().  Update to check whole
123         dependencies.
124
125         * haifa-sched.c (spec_info): Make global.
126         (added_recovery_block_p): Rename to
127         'haifa_recovery_block_was_added_during_current_schedule_block_p'.
128         (haifa_recovery_block_was_added_during_scheduling_p): New variable.
129         (dep_cost, priority, rank_for_schedule, schedule_insn): Update
130         to use new interfaces.
131         (ok_for_early_queue_removal): Ditto.
132         (schedule_block): Initialize logical uids of insns emitted by the
133         target.
134         (sched_init): Initialize new variable.
135         (fix_inter_tick, try_ready, fix_tick_ready): Update to use new
136         interfaces.
137         (extend_global): Initialize insn data.
138         (init_h_i_d): Remove code that is now handled in sd_init_insn ().
139         (process_insn_forw_deps_be_in_spec): Change signature.  Update to use
140         new interfaces.
141         (add_to_speculative_block): Update to use new interfaces.
142         (create_recovery_block): Set new variables.
143         (create_check_block_twin, fix_recovery_deps): Update to use new
144         interfaces.
145         (sched_insn_is_legitimate_for_speculation_p): New function.
146         (speculate_insn): Move checking logic to
147         sched_insn_is_legitimate_for_speculation_p ().
148         (sched_remove_insn): Finalize sched-deps information of instruction.
149         (clear_priorities, add_jump_dependencies): Update to use new
150         interfaces.
151         (debug_spec_status): Rename to dump_ds () and move to sched-deps.c.
152         
153         * sched-rgn.c (set_spec_fed, find_conditional_protection): Update
154         to use new interfaces.
155         (is_conditionally_protected, is_pfree, is_prisky) Ditto.
156         (new_ready): Try to use control speculation only if it is available.
157         (add_branch_dependences): Update to use new interfaces.
158         (compute_block_backward_dependences): Rename to
159         compute_block_dependences ().  Call
160         targetm.sched.dependencies_evaluation_hook ().
161         (free_block_dependencies): New static function.
162         (debug_dependencies): Update to use new interfaces.
163         (schedule_region): Remove separate computation of forward dependencies.
164         Move call of targetm.sched.dependencies_evaluation_hook () to
165         compute_block_dependences ().  Free dependencies at the end of
166         scheduling the region.
167
168         * sched-ebb.c (earliest_block_with_similiar_load): Update to use
169         new interfaces.
170         (add_deps_for_risky_insns): Ditto.
171         (schedule_ebb): Remove separate computation of forward dependencies.
172         Free dependencies at the end of scheduling the ebb.
173
174         * ddg.c (create_ddg_dependence): Update to use new interfaces.
175         (build_intra_loop_deps): Ditto.  Remove separate computation of forward
176         dependencies.  Free sched-deps dependencies.
177
178         * config/ia64/ia64.c (ia64_dependencies_evaluation_hook): Update
179         to use new interfaces.
180         (ia64_dfa_new_cycle, ia64_gen_check): Ditto.
181
182         * config/rs6000/rs6000.c (rs6000_is_costly_dependence): Update to use
183         new interfaces.
184         (is_costly_group): Ditto.
185
186 2007-08-14  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
187
188         * alias.c (rtx_equal_for_memref_p): Constify.
189         * basic-block.h (const_edge, const_basic_block): New.
190         (reg_set_to_hard_reg_set, dfs_enumerate_from, single_succ_p,
191         single_pred_p, single_succ_edge, single_pred_edge, single_succ,
192         single_pred, maybe_hot_bb_p, probably_cold_bb_p,
193         probably_never_executed_bb_p, edge_probability_reliable_p,
194         br_prob_note_reliable_p, forwarder_block_p, flow_nodes_print,
195         inside_basic_block_p, control_flow_insn_p, dominated_by_p):
196         Likewise.
197         * bb-reorder.c (better_edge_p, push_to_next_round_p): Likewise.
198         * bt-load.c (basic_block_freq, insn_sets_btr_p, can_move_up):
199         Likewise.
200         * cfganal.c (flow_active_insn_p, forwarder_block_p,
201         flow_nodes_print, dfs_enumerate_from): Likewise.
202         * cfgbuild.c (count_basic_blocks, inside_basic_block_p,
203         control_flow_insn_p, count_basic_blocks): Likewise.
204         * cfgloop.c (flow_bb_inside_loop_p, glb_enum_p,
205         get_loop_body_with_size, loop_exit_edge_p): Likewise.
206         * cfgloop.h (flow_bb_inside_loop_p, num_loop_insns,
207         average_num_loop_insns, loop_exit_edge_p,
208         just_once_each_iteration_p, can_duplicate_loop_p): Likewise.
209         * cfgloopanal.c (just_once_each_iteration_p, num_loop_insns,
210         average_num_loop_insns, seq_cost): Likewise.
211         * cfgloopmanip.c (rpe_enum_p, can_duplicate_loop_p): Likewise.
212         * dominance.c (dominated_by_p): Likewise.
213         * emit-rtl.c (validate_subreg): Likewise.
214         * except.c (can_throw_internal, can_throw_external): Likewise.
215         * except.h (can_throw_internal, can_throw_external): Likewise.
216         * gcse.c (gcse_constant_p, oprs_unchanged_p, oprs_anticipatable_p,
217         oprs_available_p, hash_expr, expr_equiv_p, oprs_not_set_p,
218         compute_transp, load_killed_in_block_p, reg_killed_on_edge,
219         simple_mem, store_ops_ok, load_kills_store, find_loads,
220         store_killed_in_insn, store_killed_after, store_killed_before,
221         gcse_mem_operand, implicit_set_cond_p, store_killed_in_pat):
222         Likewise.
223         * ifcvt.c (count_bb_insns, cheap_bb_rtx_cost_p, noce_operand_ok,
224         noce_mem_write_may_trap_or_fault_p): Likewise.
225         * pointer-set.c (pointer_set_contains, pointer_map_contains):
226         Likewise.
227         * pointer-set.h (pointer_set_contains, pointer_map_contains):
228         Likewise.
229         * predict.c (can_predict_insn_p, maybe_hot_bb_p,
230         probably_cold_bb_p, probably_never_executed_bb_p,
231         edge_probability_reliable_p, br_prob_note_reliable_p,
232         can_predict_insn_p): Likewise.
233         * regclass.c (reg_set_to_hard_reg_set): Likewise.
234         * resource.c (return_insn_p): Likewise.
235         * rtl.h (reg_set_between_p, reg_set_p, validate_subreg):
236         Likewise.
237         * rtlanal.c (reg_set_between_p, reg_set_p): Likewise.
238         * tracer.c (count_insns, ignore_bb_p, better_p): Likewise.
239         * tree-cfg.c (verify_gimple_unary_expr, verify_gimple_binary_expr,
240         verify_gimple_modify_stmt): Likewise.
241         * tree-chrec.c (is_not_constant_evolution,
242         is_multivariate_chrec_rec, is_multivariate_chrec,
243         chrec_contains_symbols, chrec_contains_undetermined,
244         tree_contains_chrecs, evolution_function_is_affine_multivariate_p,
245         evolution_function_is_univariate_p, avoid_arithmetics_in_type_p,
246         eq_evolutions_p, scev_direction): Likewise.
247         * tree-chrec.h (automatically_generated_chrec_p, tree_is_chrec,
248         eq_evolutions_p, is_multivariate_chrec, chrec_contains_symbols,
249         chrec_contains_symbols_defined_in_loop,
250         chrec_contains_undetermined, tree_contains_chrecs,
251         evolution_function_is_affine_multivariate_p,
252         evolution_function_is_univariate_p, chrec_zerop,
253         evolution_function_is_constant_p, evolution_function_is_affine_p,
254         evolution_function_is_affine_or_constant_p,
255         tree_does_not_contain_chrecs, chrec_type): Likewise.
256         * tree-data-ref.c (tree_fold_divides_p,
257         object_address_invariant_in_loop_p, dr_may_alias_p,
258         ziv_subscript_p, siv_subscript_p, gcd_of_steps_may_divide_p,
259         same_access_functions, constant_access_functions,
260         access_functions_are_affine_or_constant_p, find_vertex_for_stmt):
261         Likewise.
262         * tree-flow.h (scev_direction): Likewise.
263         * tree-gimple.c (is_gimple_stmt): Likewise.
264         * tree-outof-ssa.c (identical_copies_p, identical_stmt_lists_p):
265         Likewise.
266         * tree-pretty-print.c (op_prio): Likewise.
267         * tree-scalar-evolution.c (chrec_contains_symbols_defined_in_loop,
268         analyzable_condition, backedge_phi_arg_p): Likewise.
269         * tree-scalar-evolution.h (get_chrec_loop): Likewise.
270         * tree-ssa-operands.c (get_name_decl, operand_build_cmp): Likewise.
271         * tree-ssa-threadupdate.c (dbds_continue_enumeration_p):
272         Likewise.
273
274 2007-08-13  Dan Hipschman  <dsh@google.com>
275
276         PR c/32953
277         * c-format.c (check_format_arg): Move check for zero-length
278         format strings below the check for unterminated strings.
279
280 2007-08-13  Andrew Pinski  <pinskia@gmail.com>
281
282         PR C/30427
283         * c-typeck.c (build_unary_op <case BIT_NOT_EXPR>): Reject vector float
284         types.
285
286 2007-08-13  Nick Clifton  <nickc@redhat.com>
287
288         * config/arm/arm_neon.h: Revert GPLv3 patch to this file.
289
290 2007-08-12  Francois-Xavier Coudert  <fxcoudert@gcc.gnu.org>
291
292         PR fortran/32860
293         * c-format.c (gcc_gfc_length_specs): New array.
294         (gcc_gfc_char_table): Add unsigned specifier, and references to
295         the l length modifier.
296         (format_types_orig): Use the new gcc_gfc_length_specs.
297
298 2007-08-12  Sa Liu  <saliu@de.ibm.com>
299
300         * emit-rtl.c (try_split): Relink the insns with REG_LIBCALL note
301         and with REG_RETVAL note after split.
302
303 2007-08-11  David Daney  <ddaney@avtrex.com>
304
305         * config/mips/mips.c (mips_sched_reorder):  Mark cycle parameter
306         as ATTRIBUTE_UNUSED.
307
308 2007-08-11  David Edelsohn  <edelsohn@gnu.org>
309             Segher Boessenkool  <segher@kernel.crashing.org>
310
311         * config/rs6000/rs6000.h (CC1_CPU_SPEC): Define as empty string if
312         HAVE_LOCAL_CPU_DETECT not defined.
313
314 2007-08-11  Jan Hubicka  <jh@suse.cz>
315
316         * cgraphunit.c (record_cdtor_fn): Declare all cdtors always inlined.
317         (cgraph_process_new_functions): Honor previous value of
318         disregard_inline_limits.
319         * ipa-inline.c (compute_inline_parameters): Likewise.
320
321 2007-08-11  Ian Lance Taylor  <iant@google.com>
322
323         * alias.h (alias_set_type): Define new type.
324         (ALIAS_SET_MEMORY_BARRIER): Use it.
325         * rtl.h: Include alias.h.
326         (struct mem_attrs): Use alias_set_type.
327         * tree.h: Include alias.h
328         (struct tree_type): Use alias_set_type.
329         (struct tree_struct_field_tag): Likewise.
330         (struct tree_decl_common): Likewise.
331         * alias.c (struct alias_set_entry): Use alias_set_type.
332         (get_alias_set_entry, alias_set_subset_of): Likewise.
333         (alias_sets_conflict_p): Likewise.
334         (alias_sets_must_conflict_p): Likewise.
335         (objects_must_conflict_p): Likewise.
336         (get_alias_set, new_alias_set): Likewise.
337         (record_alias_subset, record_component_aliases): Likewise.
338         (varargs_set, frame_set): Change to alias_set_type.
339         (get_varargs_alias_set): Use alias_set_type.
340         (get_frame_alias_set): Likewise.
341         * builtins.c (setjmp_alias_set): Change to alias_set_type.
342         * dse.c (struct store_info): Use alias_set_type.
343         (struct read_info, struct clear_alias_mode_holder): Likewise.
344         (clear_alias_set_lookup, canon_address): Likewise.
345         (record_store, check_mem_read_rtx): Likewise.
346         (dse_record_singleton_alias_set): Likewise.
347         (dse_invalidate_singleton_alias_set): Likewise.
348         * emit-rtl.c (get_mem_attrs): Likewise.
349         (set_mem_attributes_minus_bitpos): Likewise.
350         (set_mem_alias_set): Likewise.
351         * expr.c (store_constructor_field, store_field): Likewise.
352         * gimplify.c (struct gimplify_init_ctor_preeval_data): Likewise.
353         * langhooks.c (lhd_get_alias_set): Likewise.
354         * langhooks-def.h (lhd_get_alias_set): Likewise.
355         * reload1.c (alter_reg): Likewise.
356         * tree-flow.h (struct fieldoff): Likewise.
357         * tree-ssa-alias.c (struct alias_map_d): Likewise.
358         (may_alias_p, get_smt_for, create_sft): Likewise.
359         * tree-ssa-alias-warnings.c (nonstandard_alias_types_p): Likewise.
360         * tree-ssa-structalias.c (set_uids_in_ptset): Likewise.
361         (merge_smts_into): Likewise.
362         * varasm.c (const_alias_set): Likewise.
363         * c-common.c (strict_aliasing_warning): Likewise.
364         (c_common_get_alias_set): Likewise.
365         * dse.h (dse_record_singleton_alias_set): Update declaration.
366         (dse_invalidate_singleton_alias_set): Likewise.
367         * emit-rtl.h (set_mem_alias_set): Likewise.
368         * c-common.h (c_common_get_alias_set): Likewise.
369         * print-rtl.c (print_rtx): Cast MEM_ALIAS_SET when printing it.
370         * print-tree.c (print_node): Likewise.
371         * config/alpha/alpha.c (alpha_sr_alias_set): Change to
372         alias_set_type.
373         (alpha_setup_incoming_varargs): Use alias_set_type.
374         * config/i386/i386.c (setup_incoming_varargs_64): Use
375         alias_set_type.
376         (setup_incoming_varargs_ms_64): Likewise.
377         (ix86_GOT_alias_set): Likewise.
378         * config/mn10300/mn10300.c (mn10300_builtin_saveregs): Likewise.
379         * config/rs6000/rs6000.c (setup_incoming_varargs): Likewise.
380         (set): Change to alias_set_type.
381         (get_TOC_alias_set): Use alias_set_type.
382         * config/rs6000/rs6000-protos.h (get_TOC_alias_set): Update
383         declaration.
384         * config/sh/sh.c (sh_builtin_saveregs): Use alias_set_type.
385         * config/sparc/sparc.c (sparc_sr_alias_set): Change to
386         alias_set_type.
387         (struct_value_alias_set): Likewise.
388         * Makefile.in (GTFILES): Add $(srcdir)/alias.h.
389
390 2007-08-11  Richard Sandiford  <richard@codesourcery.com>
391
392         * config/vxworks-dummy.h (TARGET_VXWORKS): Define.
393         * config/vxworks.h (TARGET_VXWORKS): Override.
394         * config/mips/mips.h (TARGET_CPU_CPP_BUILTINS): Don't define
395         "mips" if TARGET_VXWORKS.
396
397 2007-08-11  Richard Sandiford  <richard@codesourcery.com>
398
399         * calls.c (avoid_likely_spilled_reg): New function.
400         (expand_call): Use it.
401
402 2007-08-11  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
403
404         * c-typeck.c (build_c_cast): Add OPT_Wcast_qual to warnings.
405
406 2007-08-10  Adam Nemet  <anemet@caviumnetworks.com>
407
408         * config/mips/predicates.md (const_call_insn_operand): Invoke
409         SYMBOL_REF_LONG_CALL_P only on SYMBOL_REFs.
410
411 2007-08-10  David Edelsohn  <edelsohn@gnu.org>
412
413         PR target/33042
414         * config/rs6000/driver-rs6000.c: Include link.h.
415         Use ElfW instead of wordsize-specif typedef.
416
417 2007-08-10  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
418
419         * system.h (CONST_CAST): New.
420         * c-decl.c (c_make_fname_decl): Use it.
421         * c-lex.c (cb_ident, lex_string): Likewise.
422         * c-typeck.c (free_all_tagged_tu_seen_up_to): Likewise.
423         * gcc.c (set_spec, read_specs, for_each_path, execute, do_spec_1,
424         give_switch, set_multilib_dir): Likewise.
425         * gengtype-parse.c (string_seq, typedef_name): Likewise.
426         * passes.c (execute_one_pass): Likewise.
427         * prefix.c (update_path): Likewise.
428         * pretty-print.c (pp_base_destroy_prefix): Likewise.
429         * tree.c (build_string): Likewise.
430
431 2007-08-10  Aldy Hernandez  <aldyh@redhat.com>
432
433         * tree-flow-inline.h (is_exec_stmt): Remove.
434         (is_label_stmt): Remove.
435         * tree-flow.h: Remove prototypes for is_exec_stmt, get_filename, and
436         is_label_stmt.
437
438 2007-08-10  Andreas Krebbel  <krebbel1@de.ibm.com>
439
440         * lower-subreg.c (resolve_shift_zext): Don't adjust
441         src_reg_num for wordmode operands.
442
443 2007-08-10  Sandra Loosemore  <sandra@codesourcery.com>
444             David Ung  <davidu@mips.com>
445
446         * config/mips/mips.c (TARGET_SCHED_INIT): Define.
447         (TARGET_SCHED_REORDER2): Define.
448         (mips_maybe_swap_ready): New.
449         (mips_last_74k_agen_insn): New.
450         (mips_74k_agen_init): New.
451         (mips_74k_agen_reorder): New function to group loads and stores
452         in the ready queue.
453         (mips_sched_init): New.  
454         (mips_sched_reorder): Don't do initialization here.  Call
455         mips_74k_agen_reorder.
456         (mips_variable_issue): Call mips_74k_agen_init.
457
458 2007-08-10  Aldy Hernandez  <aldyh@redhat.com>
459
460         * tree-flow-inline.h (get_filename): Remove.
461
462 2007-08-10  Richard Sandiford  <richard@codesourcery.com>
463
464         * config/mips/mips-protos.h (mips_address_insns): Add a boolean
465         argument.
466         (mips_fetch_insns): Delete in favor of...
467         (mips_load_store_insns): ...this new function.
468         * config/mips/mips.c (mips_address_insns): Add a boolean argument
469         to say whether multiword moves _might_ be split.
470         (mips_fetch_insns): Delete in favor of...
471         (mips_load_store_insns): ...this new function.
472         (mips_rtx_costs): Update the call to mips_address_insns.
473         (mips_address_cost): Likewise.
474         * config/mips/mips.md (length): Use mips_load_store_insns instead
475         of mips_fetch_insns.
476         * config/mips/constraints.md (R): Use mips_address_insns rather
477         than mips_fetch_insns.  Assume that the move never needs to be split.
478
479 2007-08-09  Sandra Loosemore  <sandra@codesourcery.com>
480
481         * config/mips/mips.opt (mhard-float, msoft-float):  Make these
482         control TARGET_HARD_FLOAT_ABI and TARGET_SOFT_FLOAT_ABI, rather
483         than TARGET_HARD_FLOAT and TARGET_SOFT_FLOAT.  
484         * config/mips/mips.h (mips16_hard_float): Delete.
485         (TARGET_HARD_FLOAT_ABI, TARGET_SOFT_FLOAT_ABI):  Delete these
486         definitions, and replace with....
487         (TARGET_HARD_FLOAT, TARGET_SOFT_FLOAT): Define.
488         * config/mips/mips.c (mips16_hard_float): Delete.  Replace
489         all references with (TARGET_MIPS16 && TARGET_HARD_FLOAT_ABI).
490         (MIPS_MARCH_CONTROLS_SOFT_FLOAT): Update comments.
491         (override_options):  Replace MASK_SOFT_FLOAT references with
492         MASK_SOFT_FLOAT_ABI.  Delete twiddling with MASK_SOFT_FLOAT
493         and mips16_hard_float when TARGET_MIPS16.
494         
495 2007-08-09  Andrew Pinski  <andrew_pinski@playstation.sony.com>
496
497         PR c/32796
498         * c-typeck.c (build_binary_op): Check for non pointer types before
499         calling int_fits_type_p.
500
501 2007-08-09  Andrew Pinski  <andrew_pinski@playstation.sony.com>
502
503         PR middle-end/32813
504         * fold-const.c (omit_one_operand): Return only the ommitted expression
505         if the result is an empty statement.
506         (pedantic_omit_one_operand): Likewise.
507
508 2007-08-09  Daniel Berlin  <dberlin@dberlin.org>
509
510         * c-typeck.c (readonly_error): Improve error for assignment.
511         
512         * c-pretty-print.c (pp_c_additive_expression): Handle pointer-plus
513         expression. 
514         (pp_c_expression): Ditto.
515
516 2007-08-09  Simon Baldwin  <simonb@google.com>
517
518         * simplify-rtx.c (simplify_binary_operation_1): Removed erroneous
519         break that was preventing simplify_associative_operation() for xor.
520
521 2007-08-09  Sandra Loosemore  <sandra@codesourcery.com>
522             Nigel Stephens  <nigel@mips.com>
523
524         * doc/tm.texi (CLZ_DEFINED_VALUE_AT_ZERO, CTZ_DEFINED_VALUE_AT_ZERO):
525         Document change in interpretation of value from boolean to
526         tri-state integer.
527         * optabs.c (expand_ffs, expand_ctz): New functions to compute
528         ffs and ctz using clz.
529         (expand_unop):  Call them.
530         * config/rs6000/rs6000.h (CLZ_DEFINED_VALUE_AT_ZERO): Fix its
531         result value.
532         (CTZ_DEFINED_VALUE_AT_ZERO): Likewise.
533         * config/mips/mips.h (CLZ_DEFINED_VALUE_AT_ZERO): Likewise, to
534         enable the new ffs expansion on this target.
535
536 2007-08-09  Jan Hubicka  <jh@suse.cz>
537
538         * optabs.c (expand_widen_pattern_expr): Use optabs accestors.
539         (expand_ternary_op): Likewise.
540         (expand_vec_shift_expr): Likewise.
541         (expand_binop_directly): Likewise.
542         (expand_binop): Likewise.
543         (sign_expand_binop): Likewise.
544         (expand_twoval_unop): Likewise.
545         (expand_twoval_binop): Likewise.
546         (expand_twoval_binop_libfunc): Likewise.
547         (widen_clz): Likewise.
548         (widen_bswap): Likewise.
549         (expand_parity): Likewise.
550         (expand_unop): Likewise.
551         (expand_abs_nojump): Likewise.
552         (expand_copysign): Likewise.
553         (emit_no_conflict_block): Likewise.
554         (emit_libcall_block): Likewise.
555         (can_compare_p): Likewise.
556         (prepare_cmp_insn): Likewise.
557         (emit_cmp_and_jump_insn_1): Likewise.
558         (prepare_float_lib_cmp): Likewise.
559         (emit_conditional_add): Likewise.
560         (gen_add2_insn): Likewise.
561         (have_add2_insn): Likewise.
562         (gen_sub2_insn): Likewise.
563         (have_sub2_insn): Likewise.
564         (can_extend_p): Likewise.
565         (can_fix_p): Likewise.
566         (can_float_p): Likewise.
567         (expand_float): Likewise.
568         (expand_fix): Likewise.
569         (expand_sfix_optab): Likewise.
570         (new_optab): Likewise.
571         (new_convert_optab): Likewise.
572         (init_libfuncs): Likewise.
573         (init_interclass_conv_libfuncs): Likewise.
574         (init_intraclass_conv_libfuncs): Likewise.
575         (set_conv_libfunc): Likewise.
576         (init_optabs): Likewise.
577         (debug_optab_libfuncs): Likewise.
578         (gen_cond_trap): Likewise.
579         * optabs.h (optab_handler, convert_optab_hanlder): New.
580         * genopinit.c: Update optabs generation table.
581         * reload.c (find_reloads_address_1): Use optabs accestors.
582         * builtins.c (expand_builtin_mathfn): Likewise.
583         (expand_builtin_mathfn_2): Likewise.
584         (expand_builtin_mathfn_3): Likewise.
585         (expand_builtin_interclass_mathfn): Likewise.
586         (expand_builtin_sincos): Likewise.
587         (expand_builtin_cexpi): Likewise.
588         (expand_builtin_powi): Likewise.
589         (expand_builtin_strlen): Likewise.
590         * dojump.c (do_jump): Likewise.
591         * expr.c (convert_move): Likewise.
592         (move_by_pieces): Likewise.
593         (move_by_pieces_ninsns): Likewise.
594         (can_store_by_pieces): Likewise.
595         (store_by_pieces_1): Likewise.
596         (emit_move_via_integer): Likewise.
597         (emit_move_complex): Likewise.
598         (emit_move_ccmode): Likewise.
599         (emit_move_insn_1): Likewise.
600         (emit_single_push_insn): Likewise.
601         (store_constructor): Likewise.
602         (expand_expr_real_1): Likewise.
603         (do_store_flag): Likewise.
604         * ada/misc.c (gnat_compute_largest_alignment): Likewise.
605         (enumerate_modes): Likewise.
606         * tree-vectorizer.c (vect_supportable_dr_alignment): Likewise.
607         (supportable_widening_operation): Likewise.
608         (supportable_narrowing_operation): Likewise.
609         * expmed.c (store_bit_field_1): Likewise.
610         (extract_bit_field_1): Likewise.
611         (expand_mult_highpart_optab): Likewise.
612         (expand_smod_pow2): Likewise.
613         (expand_divmod): Likewise.
614         (emit_store_flag): Likewise.
615         * tree-vect-patterns.c
616         (vect_pattern_recog_1): Likewise.
617         * tree-ssa-loop-prefetch.c
618         (nontemporal_store_p): Likewise.
619         * tree-vect-transform.c (vect_model_reduction_cost): Likewise.
620         (vect_create_epilog_for_reduction): Likewise.
621         (vectorizable_reduction): Likewise.
622         (vectorizable_operation): Likewise.
623         (vect_strided_store_supported): Likewise.
624         (vectorizable_store): Likewise.
625         (vect_strided_load_supported): Likewise.
626         (vectorizable_load): Likewise.
627         * combine.c (simplify_comparison): Likewise.
628         * tree-vect-generic.c
629         (type_for_widest_vector_mode): Likewise.
630         (expand_vector_operations_1): Likewise.
631         * config/spu/spu.c (spu_expand_mov): Likewise.
632         (spu_emit_vector_compare): Likewise.
633         * config/rs6000/rs6000.c
634         (rs6000_emit_vector_compare): Likewise.
635         * stmt.c (add_case_node): Likewise.
636         * reload1.c (gen_reload):
637
638 2007-08-09  Michael Matz  <matz@suse.de>
639
640         * tree.h (fixed_zerop): Declare as taking a const_tree.
641         * tree.c (fixed_zerop): Take a const_tree.
642
643 2007-08-09  Ira Rosen  <irar@il.ibm.com>
644
645         * tree-vect-transform.c (vectorizable_store): Remove call to
646         copy_virtual_operands() and call mark_symbols_for_renaming() for
647         the created vector store.
648         (vect_setup_realignment): Don't call copy_virtual_operands() and
649         update_vuses_to_preheader(). 
650         (vectorizable_load): Don't call copy_virtual_operands(). 
651         (update_vuses_to_preheader): Remove.
652
653 2007-08-08  Chao-ying Fu  <fu@mips.com>
654
655         * tree.def (FIXED_POINT_TYPE): New type.
656         (FIXED_CST): New constant.
657         (FIXED_CONVERT_EXPR): New expr.
658         * doc/c-tree.texi (Types): Document FIXED_POINT_TYPE.
659         (Expressions): Document FIXED_CST and FIXED_CONVERT_EXPR.
660         * tree.h (struct tree_base): Add saturating_flag.
661         Remove one bit of spare for saturating_flag.
662         (NUMERICAL_TYPE_CHECK): Support FIXED_POINT_TYPE.
663         (NON_SAT_FIXED_POINT_TYPE_P, SAT_FIXED_POINT_TYPE_P,
664         FIXED_POINT_TYPE_P): Define.
665         (TYPE_SATURATING): Define.
666         (TREE_FIXED_CST_PTR, TREE_FIXED_CST): Define.
667         (struct tree_fixed_cst): New.
668         (TYPE_IBIT, TYPE_FBIT): Define.
669         (tree_node): Add fixed_cst.
670         (enum tree_index): Add new enumeration values of
671         TI_SAT_SFRACT_TYPE, TI_SAT_FRACT_TYPE, TI_SAT_LFRACT_TYPE,
672         TI_SAT_LLFRACT_TYPE, TI_SAT_USFRACT_TYPE, TI_SAT_UFRACT_TYPE,
673         TI_SAT_ULFRACT_TYPE, TI_SAT_ULLFRACT_TYPE, TI_SFRACT_TYPE,
674         TI_FRACT_TYPE, TI_LFRACT_TYPE, TI_LLFRACT_TYPE, TI_USFRACT_TYPE,
675         TI_UFRACT_TYPE, TI_ULFRACT_TYPE, TI_ULLFRACT_TYPE,
676         TI_SAT_SACCUM_TYPE, TI_SAT_ACCUM_TYPE, TI_SAT_LACCUM_TYPE,
677         TI_SAT_LLACCUM_TYPE, TI_SAT_USACCUM_TYPE, TI_SAT_UACCUM_TYPE,
678         TI_SAT_ULACCUM_TYPE, TI_SAT_ULLACCUM_TYPE, TI_SACCUM_TYPE,
679         TI_ACCUM_TYPE, TI_LACCUM_TYPE, TI_LLACCUM_TYPE, TI_USACCUM_TYPE,
680         TI_UACCUM_TYPE, TI_ULACCUM_TYPE, TI_ULLACCUM_TYPE,
681         TI_QQ_TYPE, TI_HQ_TYPE,_TYPE, TI_SQ_TYPE, TI_DQ_TYPE, TI_TQ_TYPE,
682         TI_UQQ_TYPE, TI_UHQ_TYPE, TI_USQ_TYPE, TI_UDQ_TYPE, TI_UTQ_TYPE,
683         TI_SAT_QQ_TYPE, TI_SAT_HQ_TYPE, TI_SAT_SQ_TYPE, TI_SAT_DQ_TYPE,
684         TI_SAT_TQ_TYPE, TI_SAT_UQQ_TYPE, TI_SAT_UHQ_TYPE, TI_SAT_USQ_TYPE,
685         TI_SAT_UDQ_TYPE, TI_SAT_UTQ_TYPE, TI_HA_TYPE, TI_SA_TYPE, TI_DA_TYPE,
686         TI_TA_TYPE, TI_UHA_TYPE, TI_USA_TYPE, TI_UDA_TYPE, TI_UTA_TYPE,
687         TI_SAT_HA_TYPE, TI_SAT_SA_TYPE, TI_SAT_DA_TYPE, TI_SAT_TA_TYPE,
688         TI_SAT_UHA_TYPE, TI_SAT_USA_TYPE, TI_SAT_UDA_TYPE, TI_SAT_UTA_TYPE.
689         (sat_short_fract_type_node, sat_fract_type_node,
690         sat_long_fract_type_node, sat_long_long_fract_type_node,
691         sat_unsigned_short_fract_type_node, sat_unsigned_fract_type_node,
692         sat_unsigned_long_fract_type_node,
693         sat_unsigned_long_long_fract_type_node, short_fract_type_node,
694         fract_type_node, long_fract_type_node, long_long_fract_type_node,
695         unsigned_short_fract_type_node, unsigned_fract_type_node,
696         unsigned_long_fract_type_node, unsigned_long_long_fract_type_node,
697         sat_short_accum_type_node, sat_accum_type_node,
698         sat_long_accum_type_node, sat_long_long_accum_type_node,
699         sat_unsigned_short_accum_type_node, sat_unsigned_accum_type_node,
700         sat_unsigned_long_accum_type_node,
701         sat_unsigned_long_long_accum_type_node, short_accum_type_node,
702         accum_type_node, long_accum_type_node, long_long_accum_type_node,
703         unsigned_short_accum_type_node, unsigned_accum_type_node,
704         unsigned_long_accum_type_node, unsigned_long_long_accum_type_node,
705         qq_type_node, hq_type_node, sq_type_node, dq_type_node, tq_type_node,
706         uqq_type_node, uhq_type_node, usq_type_node, udq_type_node,
707         utq_type_node, sat_qq_type_node, sat_hq_type_node, sat_sq_type_node,
708         sat_dq_type_node, sat_tq_type_node, sat_uqq_type_node,
709         sat_uhq_type_node, sat_usq_type_node, sat_udq_type_node,
710         sat_utq_type_node, ha_type_node, sa_type_node, da_type_node,
711         ta_type_node, uha_type_node, usa_type_node, uda_type_node,
712         uta_type_node, sat_ha_type_node, sat_sa_type_node, sat_da_type_node,
713         sat_ta_type_node, sat_uha_type_node, sat_usa_type_node,
714         sat_uda_type_node, sat_uta_type_node): New macro.
715         (make_fract_type, make_accum_type): Declare.
716         (make_signed_fract_type, make_unsigned_fract_type,
717         make_sat_signed_fract_type, make_sat_unsigned_fract_type,
718         make_signed_accum_type, make_unsigned_accum_type,
719         make_sat_signed_accum_type, make_sat_unsigned_accum_type,
720         make_or_reuse_signed_fract_type, make_or_reuse_unsigned_fract_type,
721         make_or_reuse_sat_signed_fract_type,
722         make_or_reuse_sat_unsigned_fract_type, make_or_reuse_signed_accum_type,
723         make_or_reuse_unsigned_accum_type, make_or_reuse_sat_signed_accum_type,
724         make_or_reuse_sat_unsigned_accum_type): New macro.
725         (fixed_zerop): Declare.
726         * defaults.h (SHORT_FRACT_TYPE_SIZE, FRACT_TYPE_SIZE,
727         LONG_FRACT_TYPE_SIZE, LONG_LONG_FRACT_TYPE_SIZE,
728         SHORT_ACCUM_TYPE_SIZE, ACCUM_TYPE_SIZE, LONG_ACCUM_TYPE_SIZE,
729         LONG_LONG_ACCUM_TYPE_SIZE): Define.
730         * treestruct.def: Add TS_FIXED_CST.
731         * Makefile.in (c-pretty-print.o): Add dependence on fixed-value.h.
732         (tree.o): Likewise.
733         (tree-dump.o): Likewise.
734         (print-tree.o): Likewise.
735         (tree-pretty-print.o): Likewise.
736         (fold-const.o): Likewise.
737         * tree-complex.c (some_nonzerop): Handle FIXED_CST.
738         * tree-gimple.c (is_gimple_formal_tmp_rhs): Handle FIXED_CST.
739         (is_gimple_min_invariant): Handle FIXED_CST.
740         * stor-layout.c (int_mode_for_mode): Handle MODE_FRACT, MODE_UFRACT,
741         MODE_ACCUM, MODE_UACCUM, MODE_VECTOR_FRACT, MODE_VECTOR_UFRACT,
742         MODE_VECTOR_ACCUM, MODE_VECTOR_UACCUM.
743         (layout_type): Handle FIXED_POINT_TYPE.
744         (make_fract_type, make_accum_type): New functions.
745         * tree-browser.c (browse_tree): Handle FIXED_POINT_TYPE.
746         * tree-dump.c (fixed-value.h): New include.
747         (dump_fixed): New function.
748         (dequeue_and_dump): Handle FIXED_POINT_TYPE and FIXED_CST.
749         * tree-inline.c (remap_type_1): Handle FIXED_POINT_TYPE.
750         (estimate_num_insns_1): Handle FIXED_CST and FIXED_CONVERT_EXPR.
751         * tree-pretty-print.c (fixed-value.h): New include.
752         (dump_generic_node): Handle FIXED_POINT_TYPE, FIXED_CST, and
753         FIXED_CONVERT_EXPR.
754         * tree-scalar-evolution.c (get_scalar_evolution): Handle FIXED_CST.
755         * tree-ssa-loop-im.c (for_each_index): Handle FIXED_CST.
756         * tree-ssa-pre.c (poolify_tree): Handle FIXED_CST.
757         * tree-ssa-reassoc.c (break_up_subtract_bb): We can do reassociation
758         for non-saturating fixed-point types.
759         (reassociate_bb): Likewise.
760         * emit-rtl.c (fixed-value.h): New include.
761         (fconst0, fconst1): New array.
762         (init_emit_once): Initialize fconst0 and fconst1 for fixed-point modes.
763         * tree-vect-generic.c expand_vector_operation): Support
764         MODE_VECTOR_FRACT, MODE_VECTOR_UFRACT, MODE_VECTOR_ACCUM, and
765         MODE_VECTOR_UACCUM.
766         (type_for_widest_vector_mode): Add one parameter for the 
767         saturating flag.
768         Check scalar FRACT, UFRACT, ACCUM, and UACCUM mode to select their
769         vector mode.
770         Pass the satp parameter to type_for_mode for fixed-point types.
771         (expand_vector_operations_1): Pass the saturating flag to
772         type_for_widest_vector_mode.
773         Support MODE_VECTOR_FRACT, MODE_VECTOR_UFRACT, MODE_VECTOR_ACCUM,
774         and MODE_VECTOR_UACCUM.
775         * tree-vect-transform.c (vect_is_simple_cond): Support FIXED_CST.
776         (vectorizable_condition): Likewise.
777         * tree.c (fixed-value.h): New include.
778         (tree_code_size): Support FIXED_CST.
779         (build_fixed): New function.
780         (build_one_cst): Support FIXED_POINT_TYPE for accum types.
781         (fixed_zerop): New function.
782         (tree_node_structure): Support FIXED_CST.
783         (type_contains_placeholder_1): Support FIXED_POINT_TYPE.
784         (build_type_attribute_qual_variant): Handle FIXED_POINT_TYPE.
785         (type_hash_eq): Handle FIXED_POINT_TYPE.
786         (simple_cst_equal): Support FIXED_CST.
787         (iterative_hash_expr): Handle FIXED_CST.
788         (get_unwidened): Make sure type is not FIXED_POINT_TYPE.
789         (get_narrower): Likewise.
790         (variably_modified_type_p): Handle FIXED_POINT_TYPE.
791         (make_or_reuse_fract_type, make_or_reuse_accum_type): New functions.
792         (build_common_tree_nodes_2): Use MAKE_FIXED_TYPE_NODE_FAMILY and
793         MAKE_FIXED_MODE_NODE macros to initialize fixed-point type
794         nodes.
795         (build_vector_type_for_mode): Handle MODE_VECTOR_FRACT,
796         MODE_VECTOR_UFRACT, MODE_VECTOR_ACCUM, MODE_VECTOR_UACCUM.
797         (initializer_zerop): Support FIXED_CST.
798         (walk_tree): Handle FIXED_CST and FIXED_POINT_TYPE.
799         * dwarf2out.c (base_type_die): Use DW_ATE_signed_fixed or
800         DW_ATE_unsigned_fixed to describe FIXED_POINT_TYPE.
801         (is_base_type): Handle FIXED_POINT_TYPE.
802         (add_type_attribute): Handle FIXED_POINT_TYPE.
803         (gen_type_die_with_usage): Handle FIXED_POINT_TYPE.
804         * print-tree.c (fixed-value.h): New include.
805         (print_node_brief): Support FIXED_CST.
806         (print_node): Support FIXED_POINT_TYPE and FIXED_CST.
807         * c-pretty-print.c (fixed-value.h): New include.
808         (pp_c_type_specifier): Handle FIXED_POINT_TYPE.  Need to pass
809         TYPE_SATURATING to c_common_type_for_mode for fixed-point modes.
810         (pp_c_direct_abstract_declarator): Handle FIXED_POINT_TYPE.
811         Support fixed-point types for inner items in VECTOR_TYPE.
812         (pp_c_direct_declarator): Likewise.
813         (pp_c_declarator): Likewise.
814         (pp_c_fixed_constant): New function.
815         (pp_c_constant): Handle FIXED_CST.
816         (pp_c_primary_expression): Likewise.
817         (pp_c_expression): Likewise.
818         * fold-const.c (fixed-value.h): New include.
819         (negate_expr_p): Return true for FIXED_CST.
820         (fold_negate_expr): Support FIXED_CST.
821         (split_tree): Support FIXED_CST.
822         (const_binop): Support FIXED_CST.
823         (fold_convert_const_int_from_fixed): New function to convert from
824         fixed to int.
825         (fold_convert_const_real_from_fixed): New function to convert from
826         fixed to real.
827         (fold_convert_const_fixed_from_fixed): New function to convert from
828         fixed to another fixed.
829         (fold_convert_const_fixed_from_int): New function to convert from
830         int to fixed.
831         (fold_convert_const_fixed_from_real): New function to convert from
832         real to fixed.
833         (fold_convert_const): Support conversions from fixed to int, from
834         fixed to real, from fixed to fixed, from int to fixed, and from real
835         to fixed.
836         (fold_convert): Support FIXED_CST and FIXED_POINT_TYPE.
837         (operand_equal_p): Support FIXED_CST.
838         (make_range): For fixed-point modes, we need to pass the
839         saturating flag as the 2nd parameter.
840         (tree_swap_operands_p): Handle FIXED_CST.
841         (fold_plusminus_mult_expr): For fract modes, we cannot generate
842         constant 1.
843         (fold_unary): Support FIXED_CONVERT_EXPR.
844         (fold_binary): Handle FIXED_CST.
845         Make sure the type is not saturating, before associating operations.
846         Ex: A + B + C, A * B * C, (A1 * C1) +/- (A2 * C2).
847         (tree_expr_nonnegative_warnv_p): Handle FIXED_CST.
848         (fold_negate_const): Support FIXED_CST.
849         (fold_relational_const): Support FIXED_CST.
850         * gimplify.c (omp_firstprivatize_type_sizes): Handle FIXED_POINT_TYPE.
851         (gimplify_expr): Handle FIXED_CST.
852         (gimplify_type_sizes): Handle FIXED_POINT_TYPE.
853         * ipa-prop.c (ipa_callsite_compute_param): Support FIXED_CST.
854         * ipa-type-escape.c (type_to_consider): Handle FIXED_POINT_TYPE.
855         * doc/tm.texi (Type Layout): Document SHORT_FRACT_TYPE_SIZE,
856         FRACT_TYPE_SIZE, LONG_FRACT_TYPE_SIZE, LONG_LONG_FRACT_TYPE_SIZE,
857         SHORT_ACCUM_TYPE_SIZE, ACCUM_TYPE_SIZE, LONG_ACCUM_TYPE_SIZE,
858         LONG_LONG_ACCUM_TYPE_SIZE.
859         * dbxout.c (dbxout_type): Handle FIXED_POINT_TYPE.
860         * c-aux-info.c (gen_type): Handle FIXED_POINT_TYPE.
861         * tree-sra.c (is_sra_scalar_type): Support FIXED_POINT_TYPE.
862         * expmed.c (extract_bit_field): Support MODE_FRACT, MODE_UFRACT,
863         MODE_ACCUM, and MODE_UACCUM.
864         * tree-vectorizer.c (vect_is_simple_reduction): Check for saturating
865         fixed-point types to disable reduction.
866         * explow.c (promote_mode): Support FIXED_POINT_TYPE.
867
868 2007-08-08  David Edelsohn  <edelsohn@gnu.org>
869
870         * config/rs6000/x-rs6000: New file.
871         * config/rs6000/darwin.h (CC1_SPEC): Add cc1_cpu.
872         * config/rs6000/rs6000.h (EXTRA_SPECS): Add cc1_cpu.
873         (EXTRA_SPEC_FUNCTIONS): Define.
874         (HAVE_LOCAL_CPU_DETECT): Define.
875         (CC1_CPU_SPEC): Define.
876         * config/rs6000/driver-rs6000.c: New file.
877         * config/rs6000/aix.h (CC1_SPEC): Define.
878         * config/rs6000/sysv4.h (CC1_SPEC): Add cc1_cpu.
879         * config.host: Add x-rs6000 to host_xmake_file if host and target
880         are rs6000 or powerpc.
881
882 2007-08-08  Paolo Bonzini <paolo.bonzini@lu.unisi.ch>
883
884         * config/i386/t-crtstuff (CRTSTUFF_T_CFLAGS): Use +=.
885
886 2007-08-08  Richard Sandiford  <richard@codesourcery.com>
887             Sandra Loosemore  <sandra@codesourcery.com>
888             Chao-ying Fu  <fu@mips.com>
889             Nigel Stephens  <nigel@mips.com>
890             David Ung  <davidu@mips.com>
891
892         * doc/invoke.texi (-mcode-readable): Document.
893         * config/mips/mips.opt (mcode-readable): New option.
894         * config/mips/mips-protos.h (SYMBOL_32_HIGH): New symbol type.
895         * config/mips/mips.h (mips_code_readable_setting): New enum.
896         (mips_code_readable): Declare.
897         (TARGET_MIPS16_TEXT_LOADS, TARGET_MIPS16_PCREL_LOADS): New macros.
898         (TARGET_MIPS16_SHORT_JUMP_TABLES): New macro.
899         (JUMP_TABLES_IN_TEXT_SECTION): Use it.
900         (CASE_VECTOR_MODE, CASE_VECTOR_PC_RELATIVE): Likewise.  Remove
901         boiler-plate comments.
902         (ASM_OUTPUT_ADDR_DIFF_ELT): Use TARGET_MIPS16_SHORT_JUMP_TABLES.
903         * config/mips/mips.c (mips_code_readable): New variable.
904         (mips_classify_symbol): Only return SYMBOL_PC_RELATIVE for
905         MIPS16 labels if TARGET_MIPS16_SHORT_JUMP_TABLES.  Use both the
906         context and -mcode-readable setting to restrict the use of
907         SYMBOL_PC_RELATIVE for MIPS16 constant pool references.
908         Only return TARGET_FORCE_TO_MEM if PC-relative loads are allowed.
909         (mips_symbolic_constant_p): Handle SYMBOL_32_HIGH.
910         (mips_blocks_for_constant_p): Only return false for
911         TARGET_MIPS16_PCREL_LOADS.
912         (mips_symbol_insns_1): Treat HIGHs as 2 extended instructions
913         for MIPS16.  Handle SYMBOL_32_HIGH.
914         (mips_const_insns): Allow HIGHs for MIPS16 too.
915         (mips_unspec_address_offset): New function, split out from...
916         (mips_unspec_address): ...here.
917         (mips_output_move): Handle MIPS16 HIGH moves.  Use "li" to load
918         16-bit symbolic constants.  Assert approropiate conditions for
919         using the "la" and "dla" macros.
920         (mips_handle_option): Handle -mcode-readable=.
921         (override_options): Use %hi/%lo relocations for TARGET_MIPS16 too.
922         Set up mips_lo_relocs[SYMBOL_32_HIGH].
923         (mips_strip_unspec_address): New function, split out from...
924         (print_operand_reloc): ...here.
925         (print_operand): Pass constants through mips_strip_unspec_address.
926         (print_operand_address): Likewise.
927         (mips_output_mi_thunk): Remove guard of mips16_lay_out_constants.
928         (mips_select_rtx_section): Remove MIPS16 handling.
929         (mips16_gp_pseudo_reg): Check currently_expanding_to_rtl.
930         (mips16_rewrite_pool_refs): Wrap the labels in an address UNSPEC.
931         (mips16_lay_out_constants): Do nothing unless
932         TARGET_MIPS16_PCREL_LOADS.
933         (mips_avoid_hazards): Remove guard of mips16_lay_out_constants.
934         * config/mips/mips.md: Split HIGHs for MIPS16.
935         (tablejump): Use TARGET_MIPS16_SHORT_JUMP_TABLES.
936
937 2007-08-08  Richard Sandiford  <richard@codesourcery.com>
938
939         * config/mips/mips-protos.h (mips_emit_move): Declare.
940         * config/mips/mips.c (mips_emit_move): New function.
941         (mips_force_temporary): Use mips_emit_move instead of emit_move_insn.
942         (mips_legitimize_const_move): Likewise.
943         (mips_legitimize_move): Likewise.
944         (mips_split_64bit_move): Likewise.
945         (mips_restore_gp): Likewise.
946         (mips_load_call_address): Likewise.
947         (mips_emit_fcc_reload): Likewise.
948         (mips_set_return_address): Likewise.
949         (mips_block_move_straight): Likewise.
950         (mips_block_move_loop): Likewise.
951         (mips_setup_incoming_varargs): Likewise.
952         (mips_save_reg): Likewise.
953         (mips_expand_prologue): Likewise.
954         (mips_restore_reg): Likewise.
955         (mips_expand_epilogue): Likewise.
956         (mips_output_mi_thunk): Likewise.
957         (build_mips16_call_stub): Likewise.
958         (mips_builtin_branch_and_move): Likewise.
959         * config/mips/mips.h (INITIALIZE_TRAMPOLINE): Likewise.
960         * config/mips/mips.md (fixuns_truncdfsi2): Likewise.
961         (fixuns_truncdfdi2): Likewise.
962         (fixuns_truncsfsi2): Likewise.
963         (fixuns_truncsfdi2): Likewise.
964         (loadgp_absolute): Likewise.
965         (builtin_setjmp_setup): Likewise.
966         (builtin_longjmp): Likewise.
967         (untyped_call): Likewise.
968
969 2007-08-08  Richard Sandiford  <richard@codesourcery.com>
970
971         * config/mips/mips-protos.h (mips_split_symbol): Add a mode and
972         an "rtx *" argument.  Return a bool.
973         * config/mips/mips.c (mips_split_symbol): Accept arbitrary source
974         values and return true if they can be split.  Take the same kind of
975         mode argument as mips_symbol_insns.  Add a "lo_sum_out" parameter
976         and store the lo_sum there if nonnull.  Use the symbol type to
977         determine whether a $gp or HIGH is needed.
978         (mips_legitimize_address): Update call to mips_split_symbol and
979         simplify accordingly.
980         (mips_legitimize_const_move): Likewise.
981         * config/mips/mips.md: In the combine define_split,
982         check mips_split_symbol instead of splittable_symbolic_operand.
983         Update use of mips_split_symbol in the generator code.
984         * config/mips/predicates.md (splittable_symbolic_operand): Delete.
985
986 2007-08-08  Richard Sandiford  <richard@codesourcery.com>
987
988         * config/mips/mips.c (mips_symbolic_address_p): Delete.
989         (mips_symbol_insns_1): New function, split out from...
990         (mips_symbol_insns): ...here.  Take a mode argument.  Treat loads
991         and stores separately from load addresses.
992         (mips_classify_address): Replace uses of mips_symbolic_address_p
993         with uses of mips_symbol_insns.
994         (mips_address_insns): Update calls to mips_symbol_insns.
995         (mips_const_insns): Likewise.
996         (mips_legitimize_address): Likewise.
997
998 2007-08-08  Richard Sandiford  <richard@codesourcery.com>
999
1000         * config/mips/mips-protos.h (SYMBOL_FORCE_TO_MEM): New symbol type.
1001         * config/mips/mips.c (mips_classify_symbol): Skip TARGET_ABICALLS
1002         block for locally-binding symbols if TARGET_ABSOLUTE_ABICALLS.
1003         Return SYMBOL_FORCE_TO_MEM instead of SYMBOL_ABSOLUTE for
1004         non-call contexts if TARGET_MIPS16.
1005         (mips_symbolic_constant_p): Handle SYMBOL_FORCE_TO_MEM.
1006         (mips_symbolic_address_p): Likewise.  Remove special TARGET_MIPS16
1007         code for SYMBOL_ABSOLUTE.
1008         (mips_symbol_insns): Likewise.
1009
1010 2007-08-08  Richard Sandiford  <richard@codesourcery.com>
1011
1012         * config/mips/mips-protos.h (mips_symbol_context): New enumeration.
1013         * config/mips/mips.c (mips_classify_symbol): Take a context argument.
1014         (mips_symbolic_constant_p): Likewise.  Update the call to
1015         mips_classify_symbol.
1016         (mips_classify_address): Update the calls to mips_symbolic_constant_p.
1017         (mips_const_insns): Likewise.  Update the call to mips_classify_symbol.
1018         (mips_legitimize_address): Update the call to mips_symbolic_constant_p.
1019         (print_operand_reloc): Add a context argument.  Update the call to
1020         mips_symbolic_constant_p.
1021         (print_operand): Update the calls to print_operand_reloc.
1022         (print_operand_address): Use print_operand_reloc rather than
1023         print_operand.
1024         (mips_rewrite_small_data_p): Add a context argument.  Update the call
1025         to mips_symbolic_constant_p.
1026         (mips_small_data_pattern_1): Make DATA the containing mem.
1027         Update the call to mips_rewrite_small_data_p.
1028         (mips_rewrite_small_data_1): Likewise.
1029         (mips_use_anchors_for_symbol_p): Update the call to
1030         mips_symbolic_constant_p.
1031         * config/mips/predicates.md (const_call_insn_operand): Likewise.
1032         (splittable_symbolic_operand): Likewise.
1033         (move_operand): Likewise.
1034         (absolute_symbolic_operand): Likewise.
1035         (got_disp_operand): Likewise.
1036         (got_page_ofst_operand): Likewise.
1037
1038 2007-08-08  Richard Sandiford  <richard@codesourcery.com>
1039
1040         * config/mips/mips-protos.h (SYMBOL_GENERAL): Rename to...
1041         (SYMBOL_ABSOLUTE): ...this.
1042         (SYMBOL_SMALL_DATA): Rename to...
1043         (SYMBOL_GP_RELATIVE): ...this.
1044         (SYMBOL_CONSTANT_POOL): Rename to...
1045         (SYMBOL_PC_RELATIVE): ...this.
1046         * config/mips/mips.c (mips_classify_symbol, mips_symbolic_constant_p)
1047         (mips_symbolic_address_p, mips_symbol_insns, override_options)
1048         (mips_rewrite_small_data_p, mips_use_anchors_for_symbol_p): Update
1049         after above changes.
1050         * config/mips/predicates.md (const_call_insn_operand): Likewise.
1051         (general_symbolic_operand): Rename to...
1052         (absolute_symbolic_operand): ...this.
1053         * config/mips/mips.md: Update after above changes.
1054
1055 2007-08-08  Vladimir Yanovsky  <yanov@il.ibm.com>
1056             Revital Eres  <eres@il.ibm.com>
1057
1058         * ddg.c (print_ddg): Add dump information.
1059         * modulo-sched.c (print_node_sched_params): Add parameter and
1060         verbosity.
1061         (calculate_maxii): Remove function.
1062         (undo_generate_reg_moves): Likewise.
1063         (undo_permute_partial_schedule): Likewise.
1064         (kernel_number_of_cycles): Likewise.
1065         (MAXII_FACTOR): New definition to calculate the upper bound of II.
1066         (sms_schedule): Use it.  Remove profitability checks.
1067         (sms_schedule_by_order): Fix order of nodes within the cycle.
1068
1069 2007-08-08  Samuel Thibault  <samuel.thibault@ens-lyon.org>
1070
1071         * gcc/config/i386/gnu.h (STARTFILE_SPEC): Use gcrt0.o in profile mode, add
1072         -profile option, add pie support.
1073         (ENDFILE_SPEC): New spec.
1074         * gcc/config/gnu.h (LIB_SPEC): Add -profile option.
1075
1076 2007-08-08  Samuel Thibault  <samuel.thibault@ens-lyon.org>
1077
1078         * gcc/config/i386/gnu.h (CPP_SPEC): Add -pthread option.
1079         * gcc/config/gnu.h (LIB_SPEC): Likewise.
1080
1081 2007-08-07  Yaz Saito  <saito@google.com>
1082             Ian Lance Taylor  <iant@google.com>
1083
1084         * common.opt (finstrument-functions-exclude-function-list): New
1085         option.
1086         (finstrument-functions-exclude-file-list): New option.
1087         * opts.c (char_p): Define and DEF_VEC.
1088         (flag_instrument_functions_exclude_functions): New static
1089         variable.
1090         (flag_instrument_functions_exclude_files): New static variable.
1091         (add_instrument_functions_exclude_list): New static function.
1092         (flag_instrument_functions_exclude_p): New function.
1093         (common_handle_option): Handle new options.
1094         * flags.h (flag_instrument_functions_exclude_p): Declare.
1095         * gimplify.c (gimplify_function_tree): Call
1096         flag_instrument_functions_exclude_p.
1097         * doc/invoke.texi (Option Summary): Mention new options.
1098         (Code Gen Options): Document new options.
1099
1100 2007-08-07  Ian Lance Taylor  <iant@google.com>
1101
1102         PR rtl-optimization/32776
1103         * lower-subreg.c (resolve_clobber): Call resolve_reg_notes.
1104         (resolve_use): Likewise.
1105         (decompose_multiword_subregs): Remove "changed" local variable.
1106
1107 2007-08-07  Carlos O'Donell  <carlos@codesourcery.com>
1108
1109         * configure.ac: Define HAVE_GNU_AS if $gas_flag is yes.
1110         * configure: Regenerate.
1111         * config.in: Regenerate.
1112         * gcc.c [HAVE_GNU_AS]: Add "%{v} %{w:-W} %{I*} " to asm_options
1113         spec string.
1114
1115 2007-08-07  Ian Lance Taylor  <iant@google.com>
1116
1117         * lower-subreg.c (resolve_clobber): If the clobber has a LIBCALL
1118         note, just delete the insn.
1119
1120 2007-08-07  Andreas Schwab  <schwab@suse.de>
1121
1122         PR bootstrap/32973
1123         * gengtype-lex.l: Ignore backslash/newline pair while scanning a
1124         struct definition.
1125
1126 2007-08-07  Andreas Krebbel  <krebbel1@de.ibm.com>
1127
1128         * lower-subreg.c (resolve_subreg_use): Remove assertion.
1129         (find_decomposable_shift_zext, resolve_shift_zext): New functions.
1130         (decompose_multiword_subregs): Use the functions above to decompose
1131         multiword shifts and zero-extends.
1132
1133 2007-08-07  Rask Ingemann Lambertsen  <rask@sygehus.dk>
1134
1135         * doc/sourcebuild.texi (Test Directives): Fix "compile" and
1136         "assemble" descriptions which were swapped.
1137
1138 2007-08-06  Chao-ying Fu  <fu@mips.com>
1139
1140         * fixed-value.h: New file.
1141         * fixed-value.c: New file.
1142         * Makefile.in (OBJS-common): Add fixed-value.o.
1143         (fixed-value.o): New rule.
1144         (GTFILES): Add fixed-value.h.
1145         * double-int.c (double_int_scmp): We should use unsigned HOST_WIDE_INT
1146         to compare a.low and b.low.
1147         * gengtype.c (main): Handle FIXED_VALUE_TYPE type as scalar typedef.
1148
1149 2007-08-06  H.J. Lu  <hongjiu.lu@intel.com>
1150             Daniel Jacobowitz  <dan@codesourcery.com>
1151
1152         PR target/31868
1153         * config.gcc (x86_64-*-freebsd*): Add i386/t-crtstuff to
1154         tmake_file.
1155         (x86_64-*-netbsd*): Likewise.
1156         (x86_64-*-linux*): Likewise.
1157         (x86_64-*-kfreebsd*-gnu): Likewise.
1158         (x86_64-*-knetbsd*-gnu): Likewise.
1159         (i[34567]86-*-solaris2.1[0-9]*): Likewise.
1160
1161         * config/i386/t-linux64 (CRTSTUFF_T_CFLAGS): Removed.
1162
1163         * config/i386/t-crtstuff (CRTSTUFF_T_CFLAGS): Update comments.
1164         Add -fno-asynchronous-unwind-tables.
1165
1166         * config/t-freebsd (CRTSTUFF_T_CFLAGS_S): Add $(CRTSTUFF_T_CFLAGS).
1167         * config/t-libc-ok (CRTSTUFF_T_CFLAGS_S): Likewise.
1168         * config/t-lynx (CRTSTUFF_T_CFLAGS_S): Likewise.
1169         * config/t-netbsd (CRTSTUFF_T_CFLAGS_S): Likewise.
1170         * config/t-svr4 (CRTSTUFF_T_CFLAGS_S): Likewise.
1171
1172 2007-08-06  Steve Ellcey  <sje@cup.hp.com>
1173
1174         * config/ia64/ia64.c (ia64_c_mode_for_suffix): New.
1175         (TARGET_C_MODE_FOR_SUFFIX): New.
1176
1177 2007-08-06  Steve Ellcey  <sje@cup.hp.com>
1178
1179         * config/ia64/div.md (m2subrf4_cond): Change 'g' to 'G'.
1180
1181 2007-08-06  Steve Ellcey  <sje@cup.hp.com>
1182
1183         * config/ia64/ia64.h (MODES_TIEABLE_P): Fix typo.
1184
1185 2007-08-06  H.J. Lu  <hongjiu.lu@intel.com>
1186
1187         * config/i386/i386.md: Check TARGET_ macros and optimize_size
1188         before checking function returns in conditional expressions.
1189
1190 2007-08-06  Alfred Minarik  <a.minarik@aon.at>
1191
1192         PR pch/13676
1193         * doc/invoke.texi: Add .hp, .hxx, .hpp, .h, .HPP, .tcc as c++ header.
1194
1195 2008-08-05  Andrew Pinski  <andrew_pinski@playstation.sony.com>
1196
1197         PR middle-end/32988
1198         * tree.c (build2_stat): Instead of checking for INTEGER_TYPE, check
1199         for INTEGRAL_TYPE_P.
1200
1201 2008-08-05  Paolo Bonzini  <bonzini@gnu.org>
1202
1203         * configure.ac: Remove --enable-checking=df from default settings.
1204         * tree-pass.h (TODO_df_verify): New.  Shift TODO_mark_first_instance.
1205         * df-core.c (df_finish_pass) [ENABLE_CHECKING]: Schedule verification
1206         if the parameter is true.
1207         (df_analyze) [!ENABLE_DF_CHECKING]: Also do verification if the
1208         DF_VERIFY_SCHEDULED flag is true.
1209         * df.h (enum df_changeable_flags): Add DF_VERIFY_SCHEDULED.
1210         (df_finish_pass): Adjust prototype.
1211         * passes.c (execute_todo): Schedule verification if TODO_df_verify is
1212         true.
1213
1214         * see.c (pass_see): Add TODO_df_verify.
1215         * loop-init.c (pass_rtl_move_loop_invariants): Add TODO_df_verify.
1216         * global.c (rest_of_handle_global_alloc): Schedule verification
1217         after the pass.
1218         * local-alloc.c (rest_of_handle_local_alloc): Schedule verification
1219         before the pass.
1220         * function.c (pass_thread_prologue_and_epilogue): Add TODO_df_verify.
1221         * gcse.c (rest_of_handle_gcse): Adjust call to df_finish_pass.
1222         * loop-iv.c (iv_analysis_done): Schedule verification after the pass.
1223
1224         * config/sh/sh.c (sh_output_mi_thunk): Remove dead code.
1225         * config/ia64/ia64.c (ia64_reorg): Adjust call to df_finish_pass.
1226         * config/bfin/bfin.c (bfin_reorg): Adjust call to df_finish_pass.
1227
1228 2007-08-05  Vladimir Yanovsky  <yanov@il.ibm.com>
1229             Revital Eres <eres@il.ibm.com>
1230
1231         * doc/invoke.texi (-fmodulo-sched-allow-regmoves): Document new
1232         flag.
1233         * ddg.c (create_ddg_dependence): Rename to...
1234         (create_ddg_dep_from_intra_loop_link): This.  Do not check
1235         for interloop edges.  Do not create anti dependence edge when
1236         a true dependence edge exists in the opposite direction and
1237         -fmodulo-sched-allow-regmoves is set.
1238         (build_intra_loop_deps): Call create_ddg_dep_from_intra_loop_link.
1239         (add_cross_iteration_register_deps): Create anti dependence edge
1240         when -fno-modulo-sched-allow-regmoves is set.
1241         * common.opt (-fmodulo-sched-allow-regmoves): New flag.
1242
1243 2007-08-04  Richard Sandiford  <richard@codesourcery.com>
1244
1245         * config/arm/arm.md (movsi): Add braces.
1246
1247 2007-08-04  Andrew Pinski  <andrew_pinski@playstation.sony.com>
1248
1249         PR middle-end/32780
1250         * fold-const.c (fold_binary <case MINUS_EXPR>): Fix the type of operands
1251         for the folding of "A - (A & B)" into "~B & A"; cast them to type.
1252
1253 2007-08-03  Zdenek Dvorak  <ook@ucw.cz>
1254
1255         * tree-ssa-threadupdate.c (thread_through_all_blocks): Use loops' state
1256         accessor functions.
1257         * cfgloopmanip.c (remove_path, create_preheaders,
1258         force_single_succ_latches, fix_loop_structure): Ditto.
1259         * tree-ssa-loop-manip.c (rewrite_into_loop_closed_ssa,
1260         tree_duplicate_loop_to_header_edge): Ditto.
1261         * cfgloopanal.c (mark_irreducible_loops): Ditto.
1262         * loop-init.c (loop_optimizer_init, loop_optimizer_finalize):
1263         Ditto.
1264         * tree-cfgcleanup.c (cleanup_tree_cfg_noloop, repair_loop_structures,
1265         cleanup_tree_cfg): Ditto.
1266         * tree-cfg.c (tree_merge_blocks): Ditto.
1267         * cfgloop.c (rescan_loop_exit, record_loop_exits,
1268         release_recorded_exits, get_loop_exit_edges, verify_loop_structure,
1269         loop_preheader_edge, single_exit): Ditto.
1270         (flow_loops_find): Do not clear loops->state.
1271         * cfgloop.h (loops_state_satisfies_p, loops_state_set,
1272         loops_state_clear): New functions.
1273
1274 2007-08-03  Andrew Pinski  <andrew_pinski@playstation.sony.com>
1275
1276         PR middle-end/32399
1277         * tree-ssa-address.c (add_to_parts): Use POINTER_PLUS_EXPR
1278         when adding to the base and convert ELT to sizetype instead of type.
1279
1280 2007-08-03  Andrew Pinski  <andrew_pinski@playstation.sony.com>
1281
1282         PR middle-end/32304
1283         * ipa-reference.c (has_proper_scope_for_analysis): Return false when
1284         the decl's type has TYPE_NEEDS_CONSTRUCTING set.
1285
1286 2007-08-03  Andrew Pinski  <andrew_pinski@playstation.sony.com>
1287
1288         PR middle-end/32935
1289         * fold-convert.c (fold_negate_expr <NOP_EXPR>): Convert back to the
1290          correct type the negate expression.
1291
1292 2007-08-03  Jan Hubicka  <jh@suse.cz>
1293
1294         * i386.c (setup_incoming_varargs_64): Tolerate 64bit preferred
1295         stack boundary.
1296
1297 2007-08-03  David Edelsohn  <edelsohn@gnu.org>
1298
1299         * config/rs6000/rs6000.c (struct processor_cost): Change
1300         l1_cache_lines to l1_cache_size.  Add l2_cache_size.
1301         (*_cost): Convert l1 cache information to kilobytes.  Add l2 cache
1302         information.
1303         (rios1_costs, rios2_cost): Correct cache line size.
1304         (rs6000_override_options): Set l2-cache-size parameter.
1305
1306 2007-08-03  Andrew Pinski  <andrew_pinski@playstation.sony.com>
1307             Diego Novillo  <dnovillo@google.com>
1308
1309         PR 31521
1310         * tree-vrp.c (simplify_div_or_mod_using_ranges): Also simplify
1311         if the range includes 0.
1312
1313 2007-08-03  Ben Elliston  <bje@au.ibm.com>
1314
1315         * config/spu/spu.md (dftsv, dftsv_celledp): Attach the appropriate
1316         mode to unspec expressions to silence a warning from the generator
1317         programs.
1318         
1319 2007-08-02  Steve Ellcey  <sje@cup.hp.com>
1320
1321         * config/ia64/constraints.md ("U"): Make constraint vector only.
1322
1323 2007-08-02  Nathan Froyd  <froydnj@codesourcery.com>
1324
1325         PR middle-end/25446
1326         * c-objc-common.c (c_cannot_inline_tree_fn): Check for an
1327         always_inline attribute on the function decl.
1328
1329 2007-08-02  Nathan Froyd  <froydnj@codesourcery.com>
1330
1331         PR middle-end/25445
1332         * varasm.c (default_binds_local_p_1): Consult flag_whole_program
1333         if we are compiling with -fPIC.
1334
1335 2007-08-02  Sandra Loosemore  <sandra@codesourcery.com>
1336             Nigel Stephens  <nigel@mips.com>
1337
1338         * longlong.h [__mips__] (count_leading_zeros, COUNT_LEADING_ZEROS_0):
1339         Define for MIPS32 and MIPS64.
1340
1341 2007-08-02  Nick Clifton  <nickc@redhat.com>
1342
1343         * config/host-hpux.c: Change copyright header to refer to version
1344         3 of the GNU General Public License and to point readers at the
1345         COPYING3 file and the FSF's license web page.
1346         * config/alpha/predicates.md, config/alpha/vms-ld.c,
1347         config/alpha/linux.h, config/alpha/alpha.opt,
1348         config/alpha/linux-elf.h, config/alpha/vms.h, config/alpha/elf.h,
1349         config/alpha/vms-unwind.h, config/alpha/ev4.md,
1350         config/alpha/ev6.md, config/alpha/alpha.c, config/alpha/vms-cc.c,
1351         config/alpha/alpha.h, config/alpha/sync.md,
1352         config/alpha/openbsd.h, config/alpha/alpha.md,
1353         config/alpha/alpha-modes.def, config/alpha/ev5.md,
1354         config/alpha/alpha-protos.h, config/alpha/freebsd.h,
1355         config/alpha/osf5.h, config/alpha/netbsd.h, config/alpha/vms64.h,
1356         config/alpha/constraints.md, config/alpha/osf.h,
1357         config/alpha/xm-vms.h, config/alpha/unicosmk.h, config/linux.h,
1358         config/frv/predicates.md, config/frv/frv.h, config/frv/linux.h,
1359         config/frv/frv.md, config/frv/frv.opt, config/frv/frv-modes.def,
1360         config/frv/frv-asm.h, config/frv/frv-protos.h,
1361         config/frv/frv-abi.h, config/frv/frv.c, config/s390/tpf.h,
1362         config/s390/s390.c, config/s390/predicates.md, config/s390/s390.h,
1363         config/s390/linux.h, config/s390/tpf.md, config/s390/tpf.opt,
1364         config/s390/2064.md, config/s390/2084.md, config/s390/s390.md,
1365         config/s390/s390.opt, config/s390/s390-modes.def,
1366         config/s390/fixdfdi.h, config/s390/constraints.md,
1367         config/s390/s390-protos.h, config/s390/s390x.h, config/elfos.h,
1368         config/dbxcoff.h, config/m32c/predicates.md, config/m32c/cond.md,
1369         config/m32c/m32c.c, config/m32c/minmax.md, config/m32c/blkmov.md,
1370         config/m32c/m32c-pragma.c, config/m32c/m32c.h,
1371         config/m32c/prologue.md, config/m32c/m32c.abi,
1372         config/m32c/muldiv.md, config/m32c/bitops.md, config/m32c/mov.md,
1373         config/m32c/addsub.md, config/m32c/m32c.md, config/m32c/m32c.opt,
1374         config/m32c/t-m32c, config/m32c/m32c-modes.def,
1375         config/m32c/jump.md, config/m32c/shift.md,
1376         config/m32c/m32c-protos.h, config/libgloss.h,
1377         config/spu/spu-protos.h, config/spu/predicates.md,
1378         config/spu/spu-builtins.h, config/spu/spu.c,
1379         config/spu/spu-builtins.def, config/spu/spu-builtins.md,
1380         config/spu/spu.h, config/spu/spu-elf.h, config/spu/constraints.md,
1381         config/spu/spu.md, config/spu/spu-c.c, config/spu/spu.opt,
1382         config/spu/spu-modes.def, config/spu/t-spu-elf, config/interix.h,
1383         config/sparc/hypersparc.md, config/sparc/predicates.md,
1384         config/sparc/linux.h, config/sparc/sp64-elf.h,
1385         config/sparc/supersparc.md, config/sparc/cypress.md,
1386         config/sparc/openbsd1-64.h, config/sparc/openbsd64.h,
1387         config/sparc/niagara.md, config/sparc/sparc.md,
1388         config/sparc/long-double-switch.opt, config/sparc/ultra3.md,
1389         config/sparc/sparc.opt, config/sparc/sync.md,
1390         config/sparc/sp-elf.h, config/sparc/sparc-protos.h,
1391         config/sparc/ultra1_2.md, config/sparc/biarch64.h,
1392         config/sparc/sparc.c, config/sparc/little-endian.opt,
1393         config/sparc/sysv4-only.h, config/sparc/sparc.h,
1394         config/sparc/linux64.h, config/sparc/freebsd.h,
1395         config/sparc/sol2.h, config/sparc/rtemself.h,
1396         config/sparc/netbsd-elf.h, config/sparc/vxworks.h,
1397         config/sparc/sparc-modes.def, config/sparc/sparclet.md,
1398         config/sparc/sysv4.h, config/vx-common.h, config/netbsd-aout.h,
1399         config/flat.h, config/m32r/m32r.md, config/m32r/predicates.md,
1400         config/m32r/little.h, config/m32r/m32r.c, config/m32r/m32r.opt,
1401         config/m32r/linux.h, config/m32r/constraints.md,
1402         config/m32r/m32r.h, config/m32r/m32r-protos.h, config/vxworks.opt,
1403         config/darwin-c.c, config/darwin.opt, config/i386/i386.h,
1404         config/i386/cygming.h, config/i386/linux.h, config/i386/cygwin.h,
1405         config/i386/i386.md, config/i386/netware-crt0.c,
1406         config/i386/sco5.h, config/i386/mmx.md, config/i386/vx-common.h,
1407         config/i386/kaos-i386.h, config/i386/winnt-stubs.c,
1408         config/i386/netbsd64.h, config/i386/djgpp.h, config/i386/gas.h,
1409         config/i386/sol2.h, config/i386/constraints.md,
1410         config/i386/netware-libgcc.c, config/i386/sysv5.h,
1411         config/i386/predicates.md, config/i386/geode.md,
1412         config/i386/x86-64.h, config/i386/kfreebsd-gnu.h,
1413         config/i386/freebsd64.h, config/i386/vxworksae.h,
1414         config/i386/pentium.md, config/i386/lynx.h, config/i386/i386elf.h,
1415         config/i386/rtemself.h, config/i386/netbsd-elf.h,
1416         config/i386/ppro.md, config/i386/k6.md, config/i386/netware.c,
1417         config/i386/netware.h, config/i386/i386-modes.def,
1418         config/i386/sysv4-cpp.h, config/i386/i386-interix.h,
1419         config/i386/cygwin1.c, config/i386/djgpp.opt, config/i386/uwin.h,
1420         config/i386/unix.h, config/i386/ptx4-i.h, config/i386/xm-djgpp.h,
1421         config/i386/att.h, config/i386/winnt.c, config/i386/beos-elf.h,
1422         config/i386/sol2-10.h, config/i386/darwin64.h, config/i386/sse.md,
1423         config/i386/i386.opt, config/i386/bsd.h, config/i386/cygming.opt,
1424         config/i386/xm-mingw32.h, config/i386/linux64.h,
1425         config/i386/openbsdelf.h, config/i386/xm-cygwin.h,
1426         config/i386/sco5.opt, config/i386/darwin.h, config/i386/mingw32.h,
1427         config/i386/winnt-cxx.c, config/i386/i386-interix3.h,
1428         config/i386/nwld.c, config/i386/nwld.h, config/i386/host-cygwin.c,
1429         config/i386/cygwin2.c, config/i386/i386-protos.h,
1430         config/i386/sync.md, config/i386/openbsd.h,
1431         config/i386/host-mingw32.c, config/i386/i386-aout.h,
1432         config/i386/nto.h, config/i386/biarch64.h,
1433         config/i386/i386-coff.h, config/i386/freebsd.h,
1434         config/i386/driver-i386.c, config/i386/knetbsd-gnu.h,
1435         config/i386/host-i386-darwin.c, config/i386/vxworks.h,
1436         config/i386/crtdll.h, config/i386/i386.c, config/i386/sysv4.h,
1437         config/darwin-protos.h, config/linux.opt, config/sol2.c,
1438         config/sol2.h, config/sh/symbian.c, config/sh/sh-protos.h,
1439         config/sh/linux.h, config/sh/elf.h, config/sh/superh.h,
1440         config/sh/sh4.md, config/sh/coff.h, config/sh/newlib.h,
1441         config/sh/embed-elf.h, config/sh/symbian-pre.h, config/sh/rtems.h,
1442         config/sh/kaos-sh.h, config/sh/sh4a.md, config/sh/constraints.md,
1443         config/sh/sh64.h, config/sh/sh.opt, config/sh/symbian-post.h,
1444         config/sh/sh-c.c, config/sh/predicates.md, config/sh/sh.c,
1445         config/sh/sh.h, config/sh/shmedia.md, config/sh/sh-modes.def,
1446         config/sh/little.h, config/sh/sh1.md, config/sh/sh4-300.md,
1447         config/sh/superh64.h, config/sh/rtemself.h,
1448         config/sh/netbsd-elf.h, config/sh/sh.md, config/sh/vxworks.h,
1449         config/usegas.h, config/svr3.h, config/pdp11/pdp11-protos.h,
1450         config/pdp11/2bsd.h, config/pdp11/pdp11.md, config/pdp11/pdp11.c,
1451         config/pdp11/pdp11.opt, config/pdp11/pdp11-modes.def,
1452         config/pdp11/pdp11.h, config/avr/rtems.h, config/avr/avr-protos.h,
1453         config/avr/predicates.md, config/avr/constraints.md,
1454         config/avr/avr.md, config/avr/avr.c, config/avr/avr.opt,
1455         config/avr/avr.h, config/sol2-protos.h, config/dbxelf.h,
1456         config/lynx.opt, config/crx/crx.h, config/crx/crx-protos.h,
1457         config/crx/crx.md, config/crx/crx.c, config/crx/crx.opt,
1458         config/c4x/c4x-c.c, config/c4x/c4x.c, config/c4x/c4x.opt,
1459         config/c4x/c4x-modes.def, config/c4x/rtems.h,
1460         config/c4x/predicates.md, config/c4x/c4x.h,
1461         config/c4x/c4x-protos.h, config/c4x/c4x.md, config/kfreebsd-gnu.h,
1462         config/xtensa/predicates.md, config/xtensa/xtensa.c,
1463         config/xtensa/linux.h, config/xtensa/xtensa.h,
1464         config/xtensa/elf.h, config/xtensa/xtensa.md,
1465         config/xtensa/xtensa.opt, config/xtensa/constraints.md,
1466         config/xtensa/xtensa-protos.h, config/dbx.h,
1467         config/stormy16/predicates.md, config/stormy16/stormy16.md,
1468         config/stormy16/stormy16.c, config/stormy16/stormy16.opt,
1469         config/stormy16/stormy16.h, config/stormy16/stormy16-protos.h,
1470         config/host-solaris.c, config/fr30/fr30.h,
1471         config/fr30/predicates.md, config/fr30/fr30-protos.h,
1472         config/fr30/fr30.md, config/fr30/fr30.c, config/fr30/fr30.opt,
1473         config/vxworksae.h, config/sol2-c.c, config/lynx.h,
1474         config/m68hc11/m68hc11-protos.h, config/m68hc11/predicates.md,
1475         config/m68hc11/m68hc11.md, config/m68hc11/m68hc11.c,
1476         config/m68hc11/m68hc11.opt, config/m68hc11/m68hc11.h,
1477         config/m68hc11/m68hc12.h, config/openbsd-oldgas.h,
1478         config/host-linux.c, config/interix3.h, config/cris/cris.c,
1479         config/cris/predicates.md, config/cris/linux.h,
1480         config/cris/cris.h, config/cris/aout.h, config/cris/cris.md,
1481         config/cris/linux.opt, config/cris/cris.opt, config/cris/elf.opt,
1482         config/cris/aout.opt, config/cris/cris-protos.h,
1483         config/vxworks-dummy.h, config/netbsd.h, config/netbsd-elf.h,
1484         config/iq2000/iq2000.h, config/iq2000/predicates.md,
1485         config/iq2000/iq2000-protos.h, config/iq2000/iq2000.md,
1486         config/iq2000/iq2000.c, config/iq2000/iq2000.opt,
1487         config/host-darwin.c, config/mt/mt.md, config/mt/mt.c,
1488         config/mt/mt.opt, config/mt/t-mt, config/mt/mt.h,
1489         config/mt/mt-protos.h, config/svr4.h, config/host-darwin.h,
1490         config/chorus.h, config/mn10300/mn10300.c,
1491         config/mn10300/mn10300.opt, config/mn10300/predicates.md,
1492         config/mn10300/mn10300.h, config/mn10300/linux.h,
1493         config/mn10300/constraints.md, config/mn10300/mn10300-protos.h,
1494         config/mn10300/mn10300.md, config/ia64/predicates.md,
1495         config/ia64/itanium1.md, config/ia64/unwind-ia64.h,
1496         config/ia64/ia64-c.c, config/ia64/sync.md, config/ia64/ia64.c,
1497         config/ia64/itanium2.md, config/ia64/ia64.h, config/ia64/vect.md,
1498         config/ia64/freebsd.h, config/ia64/ia64.md,
1499         config/ia64/ia64-modes.def, config/ia64/constraints.md,
1500         config/ia64/hpux.h, config/ia64/ia64-protos.h, config/windiss.h,
1501         config/gofast.h, config/rtems.h, config/sol2-10.h,
1502         config/m68k/predicates.md, config/m68k/m68k.md,
1503         config/m68k/linux.h, config/m68k/m68k-modes.def,
1504         config/m68k/print-sysroot-suffix.sh, config/m68k/m68k-protos.h,
1505         config/m68k/coff.h, config/m68k/m68k-none.h, config/m68k/ieee.opt,
1506         config/m68k/openbsd.h, config/m68k/m68k-aout.h,
1507         config/m68k/m68k.opt, config/m68k/m68020-elf.h,
1508         config/m68k/m68kelf.h, config/m68k/m68k-devices.def,
1509         config/m68k/uclinux-oldabi.h, config/m68k/m68k.c,
1510         config/m68k/constraints.md, config/m68k/rtemself.h,
1511         config/m68k/netbsd-elf.h, config/m68k/m68k.h,
1512         config/m68k/uclinux.h, config/rs6000/power4.md,
1513         config/rs6000/host-darwin.c, config/rs6000/6xx.md,
1514         config/rs6000/linux.h, config/rs6000/eabi.h,
1515         config/rs6000/aix41.opt, config/rs6000/xcoff.h,
1516         config/rs6000/secureplt.h, config/rs6000/linuxspe.h,
1517         config/rs6000/eabialtivec.h, config/rs6000/8540.md,
1518         config/rs6000/darwin8.h, config/rs6000/kaos-ppc.h,
1519         config/rs6000/windiss.h, config/rs6000/603.md,
1520         config/rs6000/aix41.h, config/rs6000/cell.md,
1521         config/rs6000/mpc.md, config/rs6000/aix43.h, config/rs6000/beos.h,
1522         config/rs6000/gnu.h, config/rs6000/rtems.h, config/rs6000/aix.opt,
1523         config/rs6000/darwin.md, config/rs6000/darwin64.h,
1524         config/rs6000/default64.h, config/rs6000/7xx.md,
1525         config/rs6000/darwin.opt, config/rs6000/spe.md,
1526         config/rs6000/rs6000.opt, config/rs6000/rs6000-c.c,
1527         config/rs6000/rios2.md, config/rs6000/linuxaltivec.h,
1528         config/rs6000/7450.md, config/rs6000/linux64.h,
1529         config/rs6000/constraints.md, config/rs6000/440.md,
1530         config/rs6000/darwin.h, config/rs6000/host-ppc64-darwin.c,
1531         config/rs6000/rs6000.c, config/rs6000/aix52.h,
1532         config/rs6000/rs6000.h, config/rs6000/power6.md,
1533         config/rs6000/predicates.md, config/rs6000/altivec.md,
1534         config/rs6000/aix64.opt, config/rs6000/rios1.md,
1535         config/rs6000/rs6000-modes.def, config/rs6000/rs64.md,
1536         config/rs6000/eabisim.h, config/rs6000/sysv4le.h,
1537         config/rs6000/darwin7.h, config/rs6000/dfp.md,
1538         config/rs6000/linux64.opt, config/rs6000/sync.md,
1539         config/rs6000/vxworksae.h, config/rs6000/power5.md,
1540         config/rs6000/lynx.h, config/rs6000/biarch64.h,
1541         config/rs6000/rs6000.md, config/rs6000/sysv4.opt,
1542         config/rs6000/eabispe.h, config/rs6000/e500.h,
1543         config/rs6000/freebsd.h, config/rs6000/rs6000-protos.h,
1544         config/rs6000/netbsd.h, config/rs6000/e500-double.h,
1545         config/rs6000/aix.h, config/rs6000/vxworks.h,
1546         config/rs6000/40x.md, config/rs6000/aix51.h,
1547         config/rs6000/sysv4.h, config/arc/arc-protos.h, config/arc/arc.md,
1548         config/arc/arc.c, config/arc/arc.opt, config/arc/arc-modes.def,
1549         config/arc/arc.h, config/mcore/mcore-elf.h,
1550         config/mcore/mcore-protos.h, config/mcore/predicates.md,
1551         config/mcore/mcore.md, config/mcore/mcore.c,
1552         config/mcore/mcore.opt, config/mcore/mcore.h,
1553         config/mcore/mcore-pe.h, config/darwin.c, config/freebsd-nthr.h,
1554         config/score/predicates.md, config/score/score-version.h,
1555         config/score/score-protos.h, config/score/misc.md,
1556         config/score/elf.h, config/score/score.c, config/score/mac.md,
1557         config/score/score7.md, config/score/score.h,
1558         config/score/score-conv.h, config/score/score-mdaux.c,
1559         config/score/score.md, config/score/score.opt,
1560         config/score/score-modes.def, config/score/score-mdaux.h,
1561         config/score/mul-div.S, config/arm/uclinux-elf.h,
1562         config/arm/semi.h, config/arm/ecos-elf.h, config/arm/arm1020e.md,
1563         config/arm/symbian.h, config/arm/linux-elf.h,
1564         config/arm/arm1026ejs.md, config/arm/arm1136jfs.md,
1565         config/arm/elf.h, config/arm/aout.h, config/arm/arm.c,
1566         config/arm/thumb2.md, config/arm/vec-common.md, config/arm/coff.h,
1567         config/arm/strongarm-pe.h, config/arm/arm.h,
1568         config/arm/cortex-a8-neon.md, config/arm/semiaof.h,
1569         config/arm/cortex-a8.md, config/arm/uclinux-eabi.h,
1570         config/arm/arm-modes.def, config/arm/linux-eabi.h,
1571         config/arm/rtems-elf.h, config/arm/neon-schedgen.ml,
1572         config/arm/arm-cores.def, config/arm/arm-protos.h,
1573         config/arm/vfp.md, config/arm/aof.h, config/arm/linux-gas.h,
1574         config/arm/wince-pe.h, config/arm/neon.md,
1575         config/arm/constraints.md, config/arm/neon.ml,
1576         config/arm/xscale-elf.h, config/arm/strongarm-coff.h,
1577         config/arm/arm.opt, config/arm/arm926ejs.md,
1578         config/arm/predicates.md, config/arm/iwmmxt.md,
1579         config/arm/arm_neon.h, config/arm/unknown-elf.h,
1580         config/arm/kaos-arm.h, config/arm/bpabi.h, config/arm/pe.opt,
1581         config/arm/neon-testgen.ml, config/arm/arm.md,
1582         config/arm/xscale-coff.h, config/arm/pe.c,
1583         config/arm/arm-generic.md, config/arm/pe.h,
1584         config/arm/kaos-strongarm.h, config/arm/freebsd.h,
1585         config/arm/neon-docgen.ml, config/arm/netbsd.h, config/arm/fpa.md,
1586         config/arm/strongarm-elf.h, config/arm/cirrus.md,
1587         config/arm/netbsd-elf.h, config/arm/vxworks.h,
1588         config/arm/neon-gen.ml, config/kaos.h, config/darwin-driver.c,
1589         config/pa/predicates.md, config/pa/pa64-hpux.h,
1590         config/pa/pa-hpux.opt, config/pa/som.h, config/pa/pa-hpux1010.opt,
1591         config/pa/pa-hpux1111.opt, config/pa/pa-pro-end.h,
1592         config/pa/elf.h, config/pa/fptr.c, config/pa/pa64-linux.h,
1593         config/pa/pa.md, config/pa/pa.opt, config/pa/pa-hpux.h,
1594         config/pa/pa-hpux10.h, config/pa/pa-hpux11.h,
1595         config/pa/pa-hpux1010.h, config/pa/pa-protos.h,
1596         config/pa/pa-osf.h, config/pa/pa-hpux1111.h, config/pa/pa-64.h,
1597         config/pa/milli64.S, config/pa/pa.c, config/pa/pa-linux.h,
1598         config/pa/pa.h, config/pa/pa32-linux.h, config/pa/pa64-hpux.opt,
1599         config/pa/pa64-regs.h, config/pa/pa-modes.def,
1600         config/pa/constraints.md, config/darwin9.h, config/mips/4100.md,
1601         config/mips/linux.h, config/mips/elfoabi.h, config/mips/elf.h,
1602         config/mips/sdb.h, config/mips/windiss.h, config/mips/rtems.h,
1603         config/mips/3000.md, config/mips/iris5.h, config/mips/5000.md,
1604         config/mips/7000.md, config/mips/9000.md, config/mips/4600.md,
1605         config/mips/linux64.h, config/mips/elforion.h,
1606         config/mips/constraints.md, config/mips/generic.md,
1607         config/mips/predicates.md, config/mips/4300.md,
1608         config/mips/mips-ps-3d.md, config/mips/iris.h, config/mips/24k.md,
1609         config/mips/mips.md, config/mips/mips.opt, config/mips/4k.md,
1610         config/mips/5k.md, config/mips/vr4120-div.S,
1611         config/mips/openbsd.h, config/mips/iris6.h, config/mips/4000.md,
1612         config/mips/mips-protos.h, config/mips/6000.md,
1613         config/mips/mips.c, config/mips/mips.h, config/mips/r3900.h,
1614         config/mips/74k.md, config/mips/netbsd.h, config/mips/vxworks.h,
1615         config/mips/mips-modes.def, config/mips/vr.h,
1616         config/soft-fp/t-softfp, config/openbsd.h, config/ptx4.h,
1617         config/freebsd-spec.h, config/vax/vax.c, config/vax/openbsd.h,
1618         config/vax/vax.h, config/vax/elf.h, config/vax/vax.md,
1619         config/vax/bsd.h, config/vax/vax.opt, config/vax/vax-modes.def,
1620         config/vax/openbsd1.h, config/vax/netbsd.h,
1621         config/vax/vax-protos.h, config/vax/netbsd-elf.h,
1622         config/vax/vaxv.h, config/vax/ultrix.h, config/freebsd.h,
1623         config/h8300/rtems.h, config/h8300/predicates.md,
1624         config/h8300/h8300.c, config/h8300/h8300.h, config/h8300/elf.h,
1625         config/h8300/h8300.md, config/h8300/h8300.opt,
1626         config/h8300/coff.h, config/h8300/h8300-protos.h,
1627         config/v850/v850.md, config/v850/predicates.md,
1628         config/v850/v850-c.c, config/v850/v850.c, config/v850/v850.opt,
1629         config/v850/v850.h, config/v850/v850-protos.h, config/vxworks.c,
1630         config/knetbsd-gnu.h, config/sol2-6.h, config/vxworks.h,
1631         config/mmix/mmix.h, config/mmix/predicates.md,
1632         config/mmix/mmix-protos.h, config/mmix/mmix.md,
1633         config/mmix/mmix.c, config/mmix/mmix.opt,
1634         config/mmix/mmix-modes.def, config/bfin/bfin.opt,
1635         config/bfin/rtems.h, config/bfin/bfin-modes.def,
1636         config/bfin/predicates.md, config/bfin/bfin-protos.h,
1637         config/bfin/bfin.c, config/bfin/bfin.h, config/bfin/bfin.md:
1638         Likewise.
1639
1640 2007-08-02  Richard Sandiford  <richard@codesourcery.com>
1641
1642         * emit-rtl.c (reset_used_decls): Rename to...
1643         (set_used_decls): ...this.  Set the used flag rather than clearing it.
1644         (unshare_all_rtl_again): Update accordingly.  Set flags on argument
1645         DECL_RTLs rather than resetting them.
1646
1647 2007-08-02  Andreas Krebbel  <krebbel1@de.ibm.com>
1648
1649         * config/s390/s390.md ("*xordi3_cconly"): Change xr to xg.
1650
1651 2007-08-01  Sandra Loosemore  <sandra@codesourcery.com>
1652
1653         * reload.c (find_reloads_address_part):  Pass correct MEMREFLOC
1654         argument to find_reloads_address.
1655
1656 2007-08-01  Daniel Jacobowitz  <dan@codesourcery.com>
1657
1658         PR tree-optimization/32919
1659         * tree-ssa-sccvn.c (visit_phi): Do not visit abnormal PHIs.
1660         * tree-ssa-coalesce.c (ssa_conflicts_dump): New.
1661         (coalesce_ssa_name): Call it.
1662
1663 2007-08-01  Sandra Loosemore  <sandra@codesourcery.com>
1664             David Ung  <davidu@mips.com>
1665
1666         * config/mips/mips16.S (__mips16_unordsf2, __mips16_floatunsisf): New.
1667         (__mips16_unorddf2, __mips16_floatunsidf): New.
1668         * config/mips/mips.c (mips_init_libfuncs): Add optab entries for
1669         above functions.
1670         * config/mips/t-libgcc-mips16 (LIB1ASMFUNCS): Add new functions.
1671
1672 2007-08-01  Zdenek Dvorak  <ook@ucw.cz>
1673
1674         * tree-pretty-print.c (dump_generic_node): Dump OMP_SECTIONS_SWITCH.
1675         Display new operands of OMP_SECTIONS and OMP_CONTINUE.
1676         * tree.h (OMP_SECTIONS_CONTROL): New macro.
1677         (OMP_DIRECTIVE_P): Add OMP_SECTIONS_SWITCH.
1678         * omp-low.c (get_ws_args_for, determine_parallel_type,
1679         expand_omp_for_generic, expand_omp_for_static_nochunk,
1680         expand_omp_for_static_chunk, expand_omp_for, expand_omp_sections):
1681         Work with more precise CFG.
1682         (build_omp_regions_1): Handle OMP_SECTIONS_SWITCH.
1683         (lower_omp_sections): Emit OMP_SECTIONS_SWITCH.  Add arguments to
1684         OMP_CONTINUE.
1685         * tree-gimple.c (is_gimple_stmt): Handle OMP_SECTIONS_SWITCH.
1686         * gimple-low.c (lower_stmt): Ditto.
1687         * tree-inline.c (estimate_num_insns_1): Ditto.
1688         * tree.def (OMP_SECTIONS, OMP_CONTINUE): Added new operands.
1689         (OMP_SECTIONS_SWITCH): New.
1690         * tree-cfgcleanup.c (cleanup_omp_return): New.
1691         (cleanup_tree_cfg_bb): Call cleanup_omp_return.
1692         * tree-cfg.c (make_edges): Create back edges for OMP_CONTINUE
1693         and exit edge for OMP_FOR.  Handle OMP_SECTIONS_SWITCH.
1694         (tree_redirect_edge_and_branch): Handle omp constructs.
1695
1696         * fortran/trans-openmp.c (gfc_trans_omp_sections): Build OMP_SECTIONS
1697         with three arguments.
1698
1699 2007-08-01  Zdenek Dvorak  <ook@ucw.cz>
1700
1701         * tree-cfg.c (tree_merge_blocks): Preserve loop exit phi nodes only
1702         in loop closed ssa.
1703
1704 2007-08-01  Zdenek Dvorak  <ook@ucw.cz>
1705
1706         * tree-ssa-threadupdate.c (thread_through_all_blocks): Record that
1707         the loop structures may need fixing.
1708         * tree-cfgcleanup.c (cleanup_tree_cfg_noloop, repair_loop_structures):
1709         New functions.
1710         (cleanup_tree_cfg_loop): Removed.
1711         (cleanup_tree_cfg): If loops need fixing, call repair_loop_structures.
1712         * tree-predcom.c (tree_predictive_commoning): Return TODO_cleanup_cfg
1713         instead of running cleanup_tree_cfg_loop.
1714         * cfgloop.h (LOOPS_NEED_FIXUP): New constant.
1715         * tree-flow.h (cleanup_tree_cfg_loop): Declaration removed.
1716         (tree_predictive_commoning): Declaration changed.
1717         * passes.c (execute_function_todo): Do not use cleanup_tree_cfg_loop.
1718
1719 2007-08-01  Zdenek Dvorak  <ook@ucw.cz>
1720
1721         * doc/invoke.texi (l1-cache-size): Update documentation.
1722         (l2-cache-size): Document.
1723         * params.h (L2_CACHE_SIZE): New macro.
1724         * tree-ssa-loop-prefetch.c (L1_CACHE_SIZE_BYTES): Reflect
1725         that L1_CACHE_SIZE is in kB now.
1726         (L2_CACHE_SIZE_BYTES): New macro.
1727         (tree_ssa_prefetch_arrays): Show size in kB.
1728         * config/i386/i386.h (struct processor_costs): Add l1_cache_size
1729         and l2_cache_size fields.
1730         * config/i386/driver-i386.c (describe_cache): Detect cache size
1731         in kB.
1732         * config/i386/i386.c (size_cost, i386_cost, i486_cost,pentium_cost,
1733         pentiumpro_cost, geode_cost, k6_cost, athlon_cost, k8_cost,
1734         amdfam10_cost, pentium4_cost, nocona_cost, core2_cost,
1735         generic64_cost, generic32_cost): Add l1_cache_size and l2_cache_size.
1736         (override_options): Set l1-cache-size and l2-cache-size to default
1737         values if not specified otherwise.
1738         * params.def (PARAM_L1_CACHE_SIZE): Change to set in kB.
1739         (PARAM_L2_CACHE_SIZE): New.
1740
1741 2007-08-01  Nigel Stephens  <nigel@mips.com>
1742             David Ung  <davidu@mips.com>
1743             Thiemo Seufer  <ths@mips.com>
1744             Chris Dearman  <chris@mips.com>
1745             Richard Sandiford  <richard@codesourcery.com>
1746
1747         * config.gcc (mips*-sde-elf*): New stanza.
1748         (mipsisa32-*-elf*, mipsisa32el-*-elf*, mipsisa32r2-*-elf*)
1749         (mipsisa32r2el-*-elf*, mipsisa64-*-elf*, mipsisa64el-*-elf*)
1750         (mipsisa64sb1-*-elf*, mipsisa64sb1el-*-elf*, mips-*-elf*)
1751         (mipsel-*-elf*, mips64-*-elf*, mips64el-*-elf*, mips64orion-*-elf*)
1752         (mips64orionel-*-elf*, mips*-*-rtems*, mips-wrs-windiss)
1753         (mipstx39-*-elf*, mipstx39el-*-elf*): Add mips/t-libgcc-mips16
1754         to tmake_file.
1755         * config/mips/sde.h: New file.
1756         * config/mips/t-libgcc-mips16: Likewise.
1757         * config/mips/t-sde: Likewise.
1758         * config/mips/linux.h (TARGET_OS_CPP_BUILTINS): Remove settings
1759         of _ABIN32, _ABI64, _ABIO32, _MIPS_SIM, _MIPS_SZLONG, _MIPS_SZPTR,
1760         _MIPS_FPSET and _MIPS_SZINT.
1761         * config/mips/iris.h (TARGET_OS_CPP_BUILTINS): Likewise.
1762         * config/mips/elfoabi.h (DRIVER_SELF_SPECS): Remove separate
1763         insertion of a default -mips option.  Use MIPS_32BIT_OPTION_SPEC.
1764         * config/mips/t-isa3264 (LIB1ASMSRC, LIB1ASMFUNCS): Delete.
1765         * config/mips/t-r3900 (LIB1ASMSRC, LIB1ASMFUNCS): Likewise.
1766         * config/mips/t-elf (LIB1ASMSRC, LIB1ASMFUNCS): Likewise.
1767         * config/mips/mips.h (TARGET_CPU_CPP_BUITINS): Define _ABIO32,
1768         _ABIN32, _ABI64, _ABIO64, _MIPS_SIM, _MIPS_SZINT, _MIPS_SZLONG,
1769         _MIPS_SZPTR and _MIPS_FPSET.
1770         (MIPS_ISA_LEVEL_SPEC): Inject the default -mips option if no
1771         architecture is specified.
1772         (MIPS_32BIT_OPTION_SPEC): New macro.
1773
1774 2007-07-31  Dan Hipschman  <dsh@google.com>
1775
1776         * gcc.c (end_going_arg): New function.
1777         (do_spec_2): Use it.
1778         (do_spec_1): Use it.
1779
1780 2007-07-31  H.J. Lu  <hongjiu.lu@intel.com>
1781
1782         * ddg.c (add_cross_iteration_register_deps): Declare bb_info
1783         only if ENABLE_CHECKING is defined.
1784
1785 2007-07-31  Kenneth Zadeck <zadeck@naturalbridge.com>
1786
1787         * df.h (DF_RU, DF_RU_BB_INFO, df_ru_bb_info, df_ru,
1788         df_ru_add_problem, df_ru_get_bb_info): Removed.
1789         (DF_RD, DF_UREC, DF_CHAIN, DF_NOTE): Renumbered.
1790         * df-problems.c (df_ru_problem_data, df_ru_set_bb_info,
1791         df_ru_free_bb_info, df_ru_alloc,
1792         df_ru_bb_local_compute_process_def,
1793         df_ru_bb_local_compute_process_use, df_ru_bb_local_compute,
1794         df_ru_local_compute, df_ru_init_solution, df_ru_confluence_n,
1795         df_ru_transfer_function, df_ru_free, df_ru_start_dump,
1796         df_ru_top_dump, df_ru_bottom_dump, df_problem problem_RU,
1797         df_ru_add_problem): Removed.
1798
1799 2007-07-31  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
1800
1801         PR target/32847
1802         * pa.md (casesi32): Use match_scratch.  Revise insn condition.
1803         (casesi32p, casesi64p): Likewise.
1804         (casesi): Adjust for above.
1805
1806 2007-07-31  Richard Sandiford  <richard@codesourcery.com>
1807
1808         * mode-switching.c (create_pre_exit): Don't search past calls.
1809
1810 2007-07-31  Sandra Loosemore  <sandra@codesourcery.com>
1811
1812         * config/mips/mips.h (ISA_HAS_SYNCI):  Add !TARGET_MIPS16 test.
1813
1814 2007-07-31  Revital Eres  <eres@il.ibm.com>
1815
1816         * ddg.c (add_deps_for_def): Rename to...
1817         (add_cross_iteration_register_deps): This.  Change implementation
1818         to use only reaching def and def-use chains to construct the
1819         inter loop dependencies.
1820         (add_deps_for_use): Remove function.
1821         (build_inter_loop_deps): Call add_cross_iteration_register_deps
1822         function to build the inter loop dependencies.
1823         * modulo-sched.c (sms_schedule): Build only
1824         reaching def and def-use chains for the propose of the ddg
1825         construction.
1826
1827 2007-07-31  Julian Brown  <julian@codesourcery.com>
1828
1829         * config/arm/neon.md (vec_set<mode>_internal, vec_setv2di_internal):
1830         New define_insns. Use correct RTL.
1831         (vec_set<mode>): Write as expander.
1832
1833 2007-07-31  Razya Ladelsky  <razya@il.ibm.com>
1834
1835         * matrix-reorg.c (analyze_matrix_allocation_site): Avoid referring 
1836         to an unallocated space.
1837
1838 2007-07-30  Jan Sjodin  <jan.sjodin@amd.com>
1839
1840         * tree-data-ref.c
1841         (split_constant_offset): Enable split_constant_offset to extract
1842         constants from other statements.
1843         * tree-vect-transform.c
1844         (vect_create_addr_base_for_vector_ref): Generate data_ref_base
1845         to a temp var. Force base_offset to be simple.
1846
1847 2007-07-30  Seongbae Park <seongbae.park@gmail.com>
1848
1849         * df-scan.c (df_scan_verify): Remove artificial limit on
1850         the number of blocks for verification.
1851         * df-problems.c (df_lr_bb_local_compute, df_simulate_find_defs,
1852         df_simulate_defs): Avoid unnecessary insn checking for defs.
1853
1854 2007-07-29  Mark Mitchell  <mark@codesourcery.com>
1855
1856         gcc/
1857         * config/m68k/lb1sf68.asm (FUNC): New macro.
1858         (__mulsi3): Use it.
1859         (__udivsi3): Likewise.
1860         (__divsi3): Likewise.
1861         (__umodsi3): Likewise.
1862         (__modsi3): Likewise.
1863         (__subdf3): Likewise.
1864         (__adddf3): Likewise.
1865         (__muldf3): Likewise.
1866         (__divdf3): Likewise.
1867         (__negdf2): Likewise.
1868         (__cmpdf2): Likewise.
1869         (__subsf3): Likewise.
1870         (__addsf3): Likewise.
1871         (__mulsf3): Likewise.
1872         (__divsf3): Likewise.
1873         (__negsf2): Likewise.
1874         (__cmpsf2): Likewise.
1875         (__eqdf2): Likewise.
1876         (__nedf2): Likewise.
1877         (__gtdf2): Likewise.
1878         (__gedf2): Likewise.
1879         (__ltdf2): Likewise.
1880         (__ledf2): Likewise.
1881         (__eqsf2): Likewise.
1882         (__nesf2): Likewise.
1883         (__gtsf2): Likewise.
1884         (__gesf2): Likewise.
1885         (__ltsf2): Likewise.
1886         (__lesf2): Likewise.
1887
1888 2007-07-30  Ollie Wild  <aaw@google.com>
1889
1890         * c-ppoutput.c (print_lines_directives_only): New function.
1891         (scan_translation_unit_directives_only): New function.
1892         (preprocess_file): Add call to scan_translation_unit_directives_only.
1893         * c-opts.c (c_common_handle_option): Add OPT_fdirectives_only.
1894         (sanitize_cpp_opts): Add default flag_dump_macros setting for
1895         -fdirectives-only.  Add errors for -fdirectives-only conflict with
1896         -Wunused-macros and -traditional.
1897         (finish_options): Add builtin macro initialization for
1898         -fdirectives-only + -fpreprocessed.
1899         * c.opt (fdirectives-only): New.
1900         * doc/cppopts.texi (fdirectives-only): New.
1901
1902 2007-07-30  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
1903
1904         * alias.c (record_set, memory_modified_1): Constify.
1905         * bt-load.c (note_btr_set): Likewise.
1906         * caller-save.c (mark_set_regs, add_stored_regs): Likewise.
1907         * combine.c (set_nonzero_bits_and_sign_copies,
1908         expand_field_assignment, record_dead_and_set_regs_1,
1909         use_crosses_set_p, reg_dead_at_p_1, can_combine_p,
1910         likely_spilled_retval_1): Likewise.
1911         * config/frv/frv.c (frv_registers_update_1, frv_io_check_address,
1912         frv_io_handle_set): Likewise.
1913         * config/mips/mips.c (mips_sim_record_set,
1914         vr4130_true_reg_dependence_p_1): Likewise.
1915         * config/mt/mt.c (insn_dependent_p_1): Likewise.
1916         * config/s390/s390.c (s390_reg_clobbered_rtx): Likewise.
1917         * config/sh/sh.c (flow_dependent_p_1): Likewise.
1918         * cselib.c (cselib_invalidate_rtx_note_stores): Likewise.
1919         * dce.c (mark_nonreg_stores_1, mark_nonreg_stores_2): Likewise.
1920         * ddg.c (mark_mem_store): Likewise.
1921         * df-problems.c (df_urec_mark_reg_change): Likewise.
1922         * function.c (update_epilogue_consts): Likewise.
1923         * gcse.c (record_set_info, record_last_set_info,
1924         mems_conflict_for_gcse_p, canon_list_insert, reg_set_info,
1925         reg_clear_last_set): Likewise.
1926         * global.c (mark_reg_store, mark_reg_clobber, reg_becomes_live):
1927         Likewise.
1928         * jump.c (reversed_comparison_code_parts): Likewise.
1929         * local-alloc.c (validate_equiv_mem_from_store, no_equiv,
1930         reg_is_set): Likewise.
1931         * loop-iv.c (mark_altered): Likewise.
1932         * mode-switching.c (reg_becomes_live): Likewise.
1933         * optabs.c (no_conflict_move_test): Likewise.
1934         * postreload-gcse.c (record_last_set_info, find_mem_conflicts):
1935         Likewise.
1936         * postreload.c (reload_combine_note_store, move2add_note_store):
1937         Likewise.
1938         * regmove.c (flags_set_1): Likewise.
1939         * regrename.c (note_sets, kill_clobbered_value, kill_set_value):
1940         Likewise.
1941         * reload1.c (mark_not_eliminable, forget_old_reloads_1):
1942         Likewise. 
1943         * resource.c (update_live_status): Likewise.
1944         * rtl.h (set_of, note_stores): Likewise.
1945         * rtlanal.c (set_of_1, parms_set, struct set_of_data, set_of,
1946         note_stores, parms_set): Likewise.
1947         * sched-rgn.c (sets_likely_spilled_1): Likewise.
1948         * stack-ptr-mod.c (notice_stack_pointer_modification_1):
1949         Likewise. 
1950         * var-tracking.c (count_stores, add_stores): Likewise.
1951
1952 2007-07-30  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
1953
1954         * alias.c (mems_in_disjoint_alias_sets_p,
1955         fixed_scalar_and_varying_struct_p, aliases_everything_p,
1956         nonoverlapping_component_refs_p, nonoverlapping_memrefs_p,
1957         write_dependence_p, mems_in_disjoint_alias_sets_p,
1958         read_dependence, true_dependence, canon_true_dependence,
1959         anti_dependence, output_dependence): Constify.
1960         * combine.c (extended_count): Likewise.
1961         * cse.c (cse_rtx_varies_p, hash_rtx, exp_equiv_p): Likewise.
1962         * cselib.c (get_value_hash, references_value_p,
1963         cselib_reg_set_mode, cselib_rtx_varies_p): Likewise.
1964         * cselib.h (cselib_reg_set_mode, references_value_p): Likewise.
1965         * emit-rtl.c (mem_expr_equal_p, active_insn_p): Likewise.
1966         * function.c (contains, prologue_epilogue_contains,
1967         sibcall_epilogue_contains): Likewise. 
1968         * jump.c (simplejump_p, condjump_p, condjump_in_parallel_p,
1969         pc_set, any_uncondjump_p, any_condjump_p, onlyjump_p,
1970         only_sets_cc0_p, sets_cc0_p, rtx_renumbered_equal_p, true_regnum,
1971         reg_or_subregno): Likewise.
1972         * recog.c (asm_noperands): Likewise.
1973         * reload1.c (function_invariant_p): Likewise.
1974         * rtl.h (mem_expr_equal_p, active_insn_p, rtx_varies_p,
1975         rtx_addr_varies_p, asm_noperands, exp_equiv_p, hash_rtx,
1976         condjump_p, any_condjump_p, any_uncondjump_p, pc_set,
1977         simplejump_p, onlyjump_p, only_sets_cc0_p, sets_cc0_p,
1978         true_regnum, reg_or_subregno, condjump_in_parallel_p,
1979         extended_count, prologue_epilogue_contains,
1980         sibcall_epilogue_contains, function_invariant_p, true_dependence,
1981         canon_true_dependence, read_dependence, anti_dependence,
1982         output_dependence): Likewise.
1983         * rtlanal.c (rtx_varies_p, rtx_addr_varies_p): Likewise.
1984
1985 2007-07-30  Julian Brown  <julian@codesourcery.com>
1986
1987         * config/arm/neon.md (V_ext): New mode attribute.
1988         (neon_vget_lane<mode>): Replace with define_expand.
1989         (neon_vget_lane<mode>_sext_internal)
1990         (neon_vget_lane<mode>_zext_internal): New define_insns for double
1991         and quad precision vectors.
1992         (neon_vget_lanedi): Add bounds check. Remove dead comment.
1993         * config/arm/neon.ml (get_lane): Make 32-bit get-lane intrinsics
1994         have typeless 32-bit result.
1995
1996 2007-07-30  Andrew Pinski  <andrew_pinski@playstation.sony.com>
1997
1998         PR tree-opt/32527
1999         * tree-affine.h (aff_tree): The type of rest is sizetype for types
2000         of pointers.
2001         * tree-affine.c (aff_combination_scale): If type is a pointer type,
2002         use sizetype for rest.
2003         (aff_combination_add_elt): Likewise. Don't specialize pointer types.
2004         (aff_combination_convert): Don't convert rest for pointer types.
2005
2006 2007-07-28  Daniel Berlin  <dberlin@dberlin.org>
2007
2008         * Makefile.in (tree-ssa-alias.o): Add alloc-pool.h
2009
2010         * tree-ssa-alias.c: Add alloc-pool.h.
2011         (init_alias_info): Free alias_bitmap_obstack.
2012         (delete_alias_info): Call delete_mem_ref_stats.
2013         (get_mem_sym_stats_for): Use alloc_pool.
2014         (init_mem_ref_stats): Do not delete mem_ref_stats here.
2015         (delete_mem_sym_stats): Removed.
2016         
2017 2007-07-29  Sebastian Pop  <sebpop@gmail.com>
2018
2019         * tree-data-ref.c (add_multivariate_self_dist): Parametric access
2020         functions cannot be represented as classical distance vectors.
2021
2022 2007-07-29  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
2023
2024         * attribs.c (hash_attr, eq_attr, init_attributes): Constify.
2025         * builtins.c (validate_arg, builtin_mathfn_code,
2026         validate_arglist): Likewise.
2027         * calls.c (call_expr_flags): Likewise.
2028         * combine.c (reg_nonzero_bits_for_combine,
2029         reg_num_sign_bit_copies_for_combine, get_last_value,
2030         reg_truncated_to_mode): Likewise.
2031         * emit-rtl.c (subreg_lowpart_p): Likewise.
2032         * expr.c (highest_pow2_factor_for_target,
2033         categorize_ctor_elements_1, categorize_ctor_elements,
2034         count_type_elements, contains_packed_reference,
2035         highest_pow2_factor, highest_pow2_factor_for_target): Likewise.
2036         * fold-const.c (may_negate_without_overflow_p, int_const_binop,
2037         fold_convertible_p, operand_equal_p, tree_swap_operands_p,
2038         native_encode_int, native_encode_real, native_encode_complex,
2039         native_encode_vector, native_encode_expr, native_interpret_int,
2040         native_interpret_real, native_interpret_complex,
2041         native_interpret_vector, native_interpret_expr): Likewise.
2042         * function.c (use_register_for_decl): Likewise.
2043         * gimplify.c (get_name): Likewise.
2044         * langhooks-def.h (lhd_return_null_const_tree): New.
2045         (LANG_HOOKS_GET_CALLEE_FNDECL): Use it.
2046         * langhooks.c (lhd_return_null_const_tree): New.
2047         * langhooks.h (lang_get_callee_fndecl): Constify.
2048         * output.h (constructor_static_from_elts_p): Likewise.
2049         * rtl-factoring.c (gen_symbol_ref_rtx_for_label): Likewise.
2050         * rtl.h (nonzero_bits, num_sign_bit_copies, truncated_to_mode,
2051         subreg_lowpart_p, noop_move_p, struct rtl_hooks): Likewise.
2052         * rtlanal.c (cached_nonzero_bits, nonzero_bits1,
2053         cached_num_sign_bit_copies, num_sign_bit_copies1, noop_move_p,
2054         nonzero_bits, num_sign_bit_copies, truncated_to_mode): Likewise.
2055         * rtlhooks-def.h (reg_nonzero_bits_general,
2056         reg_num_sign_bit_copies_general, reg_truncated_to_mode_general):
2057         Likewise. 
2058         * rtlhooks.c (reg_num_sign_bit_copies_general,
2059         reg_nonzero_bits_general, reg_truncated_to_mode_general):
2060         Likewise. 
2061         * stmt.c (warn_if_unused_value, is_body_block): Likewise.
2062         * stor-layout.c (mode_for_size_tree): Likewise.
2063         * tree-ssa-loop-im.c (memref_eq): Likewise.
2064         * tree-ssa-loop-ivopts.c (tree_int_cst_sign_bit): Likewise.
2065         * tree.c (contains_placeholder_p, type_list_equal,
2066         simple_cst_equal, get_callee_fndecl, operand_equal_for_phi_arg_p):
2067         Likewise. 
2068         * tree.h (tree_int_cst_sign_bit, may_negate_without_overflow_p,
2069         mode_for_size_tree, categorize_ctor_elements, count_type_elements,
2070         contains_placeholder_p, contains_packed_reference,
2071         get_callee_fndecl, operand_equal_for_phi_arg_p,
2072         warn_if_unused_value, is_body_block, native_encode_expr,
2073         native_interpret_expr, fold_convertible_p, operand_equal_p,
2074         int_const_binop, tree_swap_operands_p, builtin_mathfn_code,
2075         validate_arglist, simple_cst_equal, type_list_equal,
2076         use_register_for_decl, call_expr_flags, get_name,
2077         highest_pow2_factor): Likewise.
2078         (const_call_expr_arg_iterator_d,
2079         init_const_call_expr_arg_iterator, next_const_call_expr_arg,
2080         first_const_call_expr_arg, more_const_call_expr_args_p,
2081         FOR_EACH_CONST_CALL_EXPR_ARG): New.
2082         * varasm.c (constructor_static_from_elts_p): Constify.
2083
2084 2007-07-28  Kazu Hirata  <kazu@codesourcery.com>
2085
2086         * cfglayout.c, config/arm/arm.c, config/arm/cortex-a8.md,
2087         config/arm/neon-schedgen.ml, config/arm/neon.ml,
2088         config/arm/vec-common.md, config/ia64/div.md, cselib.c,
2089         df-core.c, df.h, dominance.c, optabs.c, opts.c, reg-stack.c,
2090         regstat.c, target.h, tree-ssa-live.c, tree-ssa-pre.c,
2091         tree-vect-transform.c, tree.def: Fix comment typos.  Follow
2092         spelling conventions.
2093         * doc/invoke.texi: Follow spelling conventions.
2094
2095 2007-07-29  Vladimir Yanovsky  <yanov@il.ibm.com>
2096             Revital Eres  <eres@il.ibm.com>
2097
2098         * modulo-sched.c (sms_schedule): Avoid loops which includes
2099         auto-increment instructions.
2100
2101 2007-07-28  Richard Guenther  <rguenther@suse.de>
2102
2103         PR middle-end/32920
2104         * fold-const.c (fold_cond_expr_with_comparison): Convert
2105         operand zero of MIN/MAX_EXPR to correct type.
2106
2107 2007-07-28  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
2108
2109         * calls.c (special_function_p, setjmp_call_p, alloca_call_p,
2110         flags_from_decl_or_type): Constify.
2111         * gcc.c (do_spec_1): Likewise.
2112         * print-tree.c (dump_addr, print_node_brief): Likewise.
2113         * tree-cfg.c (stmt_starts_bb_p, is_ctrl_stmt, computed_goto_p,
2114         simple_goto_p, tree_can_make_abnormal_goto, stmt_starts_bb_p,
2115         tree_purge_all_dead_eh_edges): Likewise.
2116         * tree-flow.h (is_ctrl_stmt, computed_goto_p, simple_goto_p,
2117         tree_can_make_abnormal_goto, tree_purge_all_dead_eh_edges):
2118         Likewise. 
2119         * tree.c (expr_location, expr_has_location, expr_locus,
2120         expr_filename, expr_lineno, get_inner_array_type,
2121         fields_compatible_p): Likewise.
2122         * tree.h (get_inner_array_type, fields_compatible_p,
2123         expr_location, expr_has_location, expr_locus, expr_filename,
2124         expr_lineno, dump_addr, print_node_brief, flags_from_decl_or_type,
2125         setjmp_call_p, alloca_call_p): Likewise.
2126
2127 2007-07-28  Daniel Berlin  <dberlin@dberlin.org>
2128
2129         * timevar.def: Add TV_CALL_CLOBBER, TV_FLOW_SENSITIVE,
2130         TV_FLOW_INSENSITIVE.
2131
2132         * tree-ssa-alias.c (compute_call_clobbered): Push/pop
2133         TV_CALL_CLOBBER.
2134         (compute_flow_sensitive_aliasing): Ditto for TV_FLOW_SENSITIVE.
2135         (compute_flow_insensitive_aliasing): Ditto for
2136         TV_FLOW_INSENSITIVE.    
2137
2138 2007-07-27  Jan Hubicka  <jh@suse.cz>
2139
2140         * config/i386/i386.c (register_move_cost): Remove accidentally comitted
2141         #if 0 block.
2142
2143         * attribs.c: Include hashtab.h
2144         (attribute_hash): New.
2145         (substring): New structure.
2146         (extract_attribute_substring, substring_hash, hash_attr, eq_attr):
2147         New function.
2148         (init_attributes): Initialize attribute hash.
2149         (decl_attributes): Use attribute hash.
2150         * Makefile.in (attribs.c): Depend on hashtab.h.
2151
2152 2007-07-27  Steve Ellcey  <sje@cup.hp.com>
2153
2154         * config/ia64/vect.md (vec_initv2si): Remove bad BIG_ENDIAN test.
2155
2156 2007-07-27  Richard Sandiford  <richard@codesourcery.com>
2157
2158         * doc/invoke.texi (mdsp, mdspr2): Document the __mips_dsp,
2159         __mips_dspr2 and __mips_dsp_rev macros.
2160         * config/mips/mips.h (TARGET_CPU_CPP_BUILTINS): Define __mips_dsp_rev.
2161
2162 2007-07-27  Douglas Gregor  <doug.gregor@gmail.com>
2163         
2164        * c-common.h (enum rid): Add RID_DECLTYPE, update RID_LAST_CXX0X.
2165
2166 2007-07-26  Kenneth Zadeck <zadeck@naturalbridge.com>
2167
2168         PR middle-end/32749
2169         
2170         * df-problems.c (df_create_unused_note): Removed do_not_gen parm
2171         and the updating of the live and do_not_gen sets.
2172         (df_note_bb_compute): Added updating of live and do_not_gen sets
2173         for regular defs so that the case of clobber inside conditional
2174         call is processed correctly.
2175         
2176 2007-07-27  Zdenek Dvorak  <dvorakz@suse.cz>
2177
2178         * config/rs6000/rs6000.c (rs6000_gimplify_va_arg): Generate the
2179         operands with compatible type.
2180
2181 2007-07-27  Richard Sandiford  <richard@codesourcery.com>
2182
2183         * expr.h (store_bit_field): Don't return a value.
2184         * expmed.c (check_predicate_volatile_ok): New function.
2185         (store_bit_field_1): New function, extracted from store_bit_field.
2186         Take a fallback_p argument and return true if the operation succeeded.
2187         Only use store_fixed_bit_field if fallback_p.  Don't recompute
2188         mode_for_extraction; use op_mode instead.  Try forcing memories
2189         into registers if the insv expander fails.
2190         (store_bit_field): Use store_bit_field_1 with fallback_p true.
2191         Don't return a value.
2192         (convert_extracted_bit_field): New function, extracted from
2193         store_bit_field.
2194         (extract_bit_field_1): Likewise.  Take a fallback_p argument
2195         and return NULL if the operation succeeded.  Only use
2196         extract_fixed_bit_field if fallback_p.  Only calculate one
2197         extraction mode.  Combine code for extv and extzv.  Try forcing
2198         memories into registers if the ext(z)v expander fails.
2199         (extract_bit_field): Use extract_bit_field_1 with fallback_p true.
2200
2201 2007-07-27  Richard Sandiford  <rsandifo@nildram.co.uk>
2202
2203         * df.h (df_mw_hardreg): Turn df_ref_type and df_ref_flags
2204         into bitfields.
2205         (df_ref): Likewise.  Put regno with other integer fields.
2206
2207 2007-07-27  Richard Sandiford  <rsandifo@nildram.co.uk>
2208
2209         * df.h (df_mw_hardreg): Remove "loc" field.
2210         * df-scan.c (df_ref_record): Don't set it.  Remove redundant
2211         local variable.
2212         * df-problems.c (df_whole_mw_reg_unused_p): New function,
2213         split out from df_set_unused_notes_for_mw.  Return false for
2214         partial references.  Assert that mw_reg is a REG when returning true.
2215         (df_set_unused_notes_for_mw): Use it.  Use mw_reg instead of *loc.
2216         (df_whole_mw_reg_dead_p): New function, split out from
2217         df_set_dead_notes_for_mw.  Return false for partial references.
2218         Assert that mw_reg is a REG when returning true.
2219         (df_set_dead_notes_for_mw): Use it.  Use mw_reg instead of *loc.
2220         Remove redundant bitmap check.
2221
2222 2007-07-26  H.J. Lu  <hongjiu.lu@intel.com>
2223
2224         * config/ia64/t-ia64 ($(T)crtbegin.o): Removed.
2225         ($(T)crtend.o): Likwise.
2226         ($(T)crtbeginS.o): Likwise.
2227         ($(T)crtendS.o): Likwise.
2228         ($(T)crtfastmath.o): Likwise.
2229
2230 2007-07-26  Zdenek Dvorak  <dvorakz@suse.cz>
2231
2232         * dominance.c (dom_computed, n_bbs_in_dom_tree): Removed.
2233         * function.h (dom_computed, n_bbs_in_dom_tree): New macros.
2234         * basic-block.h (struct control_flow_graph): Added x_dom_computed
2235         and x_n_bbs_in_dom_tree fields.
2236
2237 2007-07-26  Steve Ellcey  <sje@cup.hp.com>
2238
2239         PR tree-optimization/32087
2240         * tree-ssa-loop-manip.c (tree_transform_and_unroll_loop):
2241         Do not call scale_bbs_frequencies_int with prob of zero.
2242
2243 2007-07-26  Julian Brown  <julian@codesourcery.com>
2244
2245         * config/arm/arm-protos.h (neon_lane_bounds, neon_const_bounds)
2246         (neon_element_bits): Add prototypes.
2247         * config/arm/arm.c (bounds_check, neon_lane_bounds)
2248         (neon_const_bounds, neon_element_bits): New functions.
2249         * config/arm/neon.md (neon_vget_lane<mode>, neon_vget_lanedi)
2250         (neon_vget_lanev2di, neon_vset_lane<mode>, neon_vset_lanedi)
2251         (neon_vset_lanev2di, neon_vdup_lane<mode>, neon_vdup_lanedi)
2252         (neon_vdup_lanev2di, neon_vcvt_n<mode>, neon_vmul_lane<mode>)
2253         (neon_vmull_lane<mode>, neon_vqdmull_lane<mode>)
2254         (neon_vqdmulh_lane<mode>, neon_vmla_lane<mode>)
2255         (neon_vmlal_lane<mode>, neon_vqdmlal_lane<mode>)
2256         (neon_vmls_lane<mode>, neon_vmlsl_lane<mode>)
2257         (neon_vqdmlsl_lane<mode>, neon_vext<mode>, neon_vshr_n<mode>)
2258         (neon_vshrn_n<mode>, neon_vqshrn_n<mode>, neon_vqshrun_n<mode>)
2259         (neon_vshl_n<mode>, neon_vshl_n<mode>, neon_vqshl_n<mode>)
2260         (neon_vqshlu_n<mode>, neon_vshll_n<mode>, neon_vsra_n<mode>)
2261         (neon_vsri_n<mode>, neon_vsli_n<mode>): Add bounds checks.
2262
2263 2007-07-26  Nathan Froyd  <froydnj@codesourcery.com>
2264
2265         * config/vxworks.h (VXWORKS_LINK_SPEC): Fix typo.
2266         (HAVE_AS_GNU_ATTRIBUTE): Undefine.
2267
2268 2007-07-26  Mark Shinwell  <shinwell@codesourcery.com>
2269             Julian Brown  <julian@codesourcery.com>
2270
2271         * config/arm/arm.c (arm_mac_accumulator_is_mul_result): New.
2272         * config/arm/arm-protos.h (arm_mac_accumulator_is_mul_result): New.
2273         * config/arm/cortex-a8.md: New.
2274         * config/arm/cortex-a8-neon.md: New.
2275         * config/arm/neon-schedgen.ml: New.
2276         * config/arm/neon.md (vqh_mnem): New.
2277         (neon_type): New.
2278         (Is_float_mode): New.
2279         (Scalar_mul_8_16): New.
2280         (Is_d_reg): New.
2281         (V_mode_nunits): New.
2282         (All instruction patterns): Annotate with neon_type attribute
2283         values.
2284         * config/arm/arm.md: Include cortex-a8.md.
2285         (insn): Add smmla, umaal, smlald, smlsld, clz, mrs, msr and xtab
2286         values.
2287         Annotate instruction patterns accordingly.
2288         (generic_sched): Do not use generic scheduling for Cortex-A8.
2289         (generic_vfp): Do not use generic VFP scheduling for Cortex-A8.
2290
2291 2007-07-26  Daniel Jacobowitz  <dan@codesourcery.com>
2292
2293         * fold-const.c (fold_read_from_constant_string): Use
2294         build_int_cst_type.
2295         * tree-ssa-ccp.c (fold_const_aggregate_ref): Likewise.
2296
2297 2007-07-26  Nick Clifton  <nickc@redhat.com>
2298
2299         * tree-ssa-operands.h: Change copyright header to refer to version
2300         3 of the GNU General Public License and to point readers at the
2301         COPYING3 file and the FSF's license web page.
2302         * tree-vrp.c, regrename.c, attribs.c, loop-unswitch.c,
2303         sched-ebb.c, fwprop.c, tree-loop-linear.c, dwarf2asm.c,
2304         tree-into-ssa.c, dwarf2asm.h, tree-ssa-loop-im.c, sbitmap.c,
2305         targhooks.c, tree-dump.c, tree-complex.c, sbitmap.h, targhooks.h,
2306         tree-dump.h, regstat.c, see.c, machmode.h, hooks.c, cgraphbuild.c,
2307         hooks.h, genrecog.c, tree-ssa-threadupdate.c, gen-protos.c,
2308         flags.h, rtlhooks.c, gencheck.c, tree-ssa-loop-niter.c,
2309         opts-common.c, dbgcnt.def, tree-pretty-print.c, tracer.c,
2310         gengtype.c, mkconfig.sh, gengtype.h, tree-ssa-loop-unswitch.c,
2311         cgraph.c, c-lex.c, cgraph.h, libfuncs.h, cfgloopmanip.c,
2312         rtl-error.c, optabs.c, postreload-gcse.c, tree-ssa-loop-manip.c,
2313         optabs.h, genmddeps.c, defaults.h, postreload.c, value-prof.c,
2314         tree-ssa-loop-ch.c, tree-tailcall.c, gengenrtl.c, value-prof.h,
2315         genopinit.c, tree.c, tree.h, reload.c, tree-pass.h, ipa-cp.c,
2316         reload.h, bitmap.c, bitmap.h, tree-scalar-evolution.c,
2317         c-config-lang.in, tree-scalar-evolution.h, target.h, cppspec.c,
2318         rtlanal.c, ddg.c, lambda-mat.c, mips-tdump.c, ddg.h,
2319         tree-phinodes.c, mips-tfile.c, pointer-set.c, pointer-set.h,
2320         diagnostic.c, final.c, diagnostic.h, builtins.c, genoutput.c,
2321         gcc.c, lists.c, tree-ssa-alias-warnings.c, gcc.h, cfghooks.c,
2322         input.h, gensupport.c, fold-const.c, cfghooks.h, insn-notes.def,
2323         gensupport.h, builtin-attrs.def, sync-builtins.def, params.c,
2324         cfgloopanal.c, params.h, graphds.c, omp-low.c, tree-ssa-dse.c,
2325         graphds.h, gcov.c, cfg.c, genextract.c, ipa-reference.c,
2326         genautomata.c, tree-ssa-uncprop.c, auto-inc-dec.c, toplev.c,
2327         tree-gimple.c, ipa-reference.h, vmsdbgout.c, errors.c, toplev.h,
2328         reorg.c, tree-gimple.h, tree-chrec.c, pretty-print.c, errors.h,
2329         real.c, tree-chrec.h, pretty-print.h, debug.c, real.h, genemit.c,
2330         omega.c, c-cppbuiltin.c, genmultilib, debug.h, omega.h,
2331         tree-ssa-sccvn.c, genconfig.c, tree-ssa-sccvn.h, cgraphunit.c,
2332         regs.h, df-scan.c, vec.c, hosthooks-def.h, vec.h,
2333         tree-ssa-copyrename.c, scan.c, builtin-types.def, tree-ssa-ccp.c,
2334         scan.h, mode-classes.def, haifa-sched.c, dominance.c, dojump.c,
2335         double-int.c, gcov-io.c, dbxout.c, builtins.def, double-int.h,
2336         dbxout.h, tree-ssa-loop-ivopts.c, df-core.c, mode-switching.c,
2337         gengtype-lex.l, tree-nomudflap.c, modulo-sched.c, c-objc-common.c,
2338         hosthooks.h, c-objc-common.h, caller-save.c, graph.c,
2339         ipa-pure-const.c, graph.h, c-format.c, cse.c, fix-header.c,
2340         c-format.h, web.c, tree-stdarg.c, genpeep.c, tree-stdarg.h,
2341         tree-ssa-math-opts.c, xcoffout.c, tree-ssa-dom.c, tree-nrv.c,
2342         xcoffout.h, tree-ssa-propagate.c, ipa-utils.c,
2343         tree-ssa-propagate.h, tree-ssa-alias.c, loop-init.c, ipa-utils.h,
2344         gimple-low.c, rtl.def, c-tree.h, tree-ssa-sink.c, ipa-inline.c,
2345         mkmap-symver.awk, machmode.def, c-pch.c, cfganal.c, global.c,
2346         alloc-pool.c, c-semantics.c, alloc-pool.h, jump.c, ifcvt.c,
2347         dwarf2out.c, expr.c, cfgbuild.c, tree-browser.c, dwarf2out.h,
2348         expr.h, longlong.h, opts.c, gcov-iov.c, opts.h, dwarf2.h,
2349         genattrtab.c, genconditions.c, genattr.c, optc-gen.awk,
2350         timevar.def, tree-ssa-loop-ivcanon.c, hard-reg-set.h, predict.c,
2351         tree-ssa-loop.c, host-default.c, predict.h, recog.c, dbgcnt.c,
2352         recog.h, dbgcnt.h, c-aux-info.c, tree-ssa-address.c, timevar.c,
2353         dse.c, lcm.c, tree-ssa-ifcombine.c, timevar.h, dse.h,
2354         matrix-reorg.c, tree-vn.c, treestruct.def, fp-test.c, c-decl.c,
2355         tree-eh.c, c-errors.c, c-pretty-print.c, regmove.c,
2356         lambda-trans.c, c-pretty-print.h, et-forest.c, et-forest.h,
2357         ebitmap.c, configure.ac, local-alloc.c, function.c, langhooks.c,
2358         ebitmap.h, cppdefault.c, tree-vectorizer.c, function.h,
2359         langhooks.h, print-rtl.c, cppdefault.h, df.h, tree-vectorizer.h,
2360         sdbout.c, stor-layout.c, sdbout.h, rtlhooks-def.h, read-rtl.c,
2361         gcse.c, ipa-type-escape.c, vmsdbg.h, alias.c, gengtype-parse.c,
2362         ipa-type-escape.h, domwalk.c, alias.h, tree-if-conv.c, profile.c,
2363         init-regs.c, domwalk.h, ipa.c, gccbug.in, tree-data-ref.c,
2364         loop-unroll.c, tree-data-ref.h, tree-flow-inline.h, tree-affine.c,
2365         mkmap-flat.awk, tree-affine.h, tree-vect-analyze.c, c.opt, ggc.h,
2366         opt-gather.awk, c-typeck.c, gimplify.c, coretypes.h, exec-tool.in,
2367         insn-addr.h, tree-ssa-phiopt.c, c-pragma.c, c-pragma.h, calls.c,
2368         tree-ssa-coalesce.c, genmodes.c, loop-doloop.c, predict.def,
2369         dwarf.h, tree.def, rtl-factoring.c, lower-subreg.c, expmed.c,
2370         bt-load.c, ggc-common.c, genflags.c, tree-dfa.c, except.c,
2371         coverage.c, except.h, emit-rtl.c, cfgexpand.c, coverage.h,
2372         stringpool.c, cselib.c, emit-rtl.h, tree-cfgcleanup.c, c-opts.c,
2373         cselib.h, cfgcleanup.c, simplify-rtx.c, tree-ssa-pre.c, explow.c,
2374         tree-ssa-live.c, tree-sra.c, tree-ssa-live.h, tree-predcom.c,
2375         loop-invariant.c, genpreds.c, protoize.c, opth-gen.awk, c-dump.c,
2376         lambda.h, loop-iv.c, tree-mudflap.c, ipa-prop.c, print-tree.c,
2377         tree-mudflap.h, tree-ssa-copy.c, ipa-prop.h, cfglayout.c,
2378         tree-ssa-forwprop.c, c-convert.c, cfglayout.h, common.opt,
2379         ggc-zone.c, ggc-page.c, c-omp.c, tree-ssa-dce.c, gencodes.c,
2380         varasm.c, tree-vect-patterns.c, libada-mk.in, tree-ssa-ter.c,
2381         sched-deps.c, tree-nested.c, c-ppoutput.c, tree-ssa.c,
2382         target-def.h, tree-ssa-loop-prefetch.c, lambda-code.c,
2383         omp-builtins.def, rtl.c, regclass.c, stab.def, intl.c, rtl.h,
2384         intl.h, tree-inline.c, conditions.h, tree-inline.h, integrate.c,
2385         sched-int.h, tree-iterator.c, integrate.h, tree-iterator.h,
2386         genchecksum.c, tree-optimize.c, output.h, tree-vect-transform.c,
2387         tree-object-size.c, combine.c, tree-outof-ssa.c, addresses.h,
2388         bb-reorder.c, stack-ptr-mod.c, resource.c, var-tracking.c,
2389         cfgloop.c, system.h, resource.h, ggc-none.c, tree-profile.c,
2390         cfgloop.h, c-gimplify.c, c-common.c, opt-functions.awk,
2391         tree-vect-generic.c, tree-flow.h, df-problems.c, scan-decls.c,
2392         c-common.h, config.gcc, reg-stack.c, tlink.c, main.c, stub-objc.c,
2393         fixproto, config.host, Makefile.in, gccspec.c, sched-rgn.c,
2394         vecprim.h, basic-block.h, tree-ssa-structalias.c,
2395         tree-ssa-structalias.h, c-common.def, sched-vis.c, tree-cfg.c,
2396         passes.c, genconstants.c, c-incpath.c, c-incpath.h,
2397         struct-equiv.c, c-parser.c, tree-ssa-reassoc.c, varray.c, sreal.c,
2398         varray.h, dfp.c, sreal.h, combine-stack-adj.c, dfp.h,
2399         reg-notes.def, cfgrtl.c, config.build, varpool.c, gengtype-yacc.y,
2400         stmt.c, dce.c, tree-browser.def, prefix.c, statistics.h,
2401         params.def, dce.h, c-lang.c, gcov-dump.c, prefix.h,
2402         tree-ssanames.c, collect2.c, collect2.h, tree-ssa-threadedge.c,
2403         convert.c, convert.h, langhooks-def.h, reload1.c,
2404         tree-ssa-operands.c: Likewise.
2405
2406 2007-07-26  Jan Hubicka  <jh@suse.cz>
2407
2408         * tree-ssa-live.c: Include debug.h and flags.h.
2409         (mark_scope_block_unused): New function.
2410         (remove_unused_scope_block_p): New function.
2411         (remove_unused_locals): Remove unused blocks too.
2412
2413 2007-07-25  Ian Lance Taylor  <iant@google.com>
2414
2415         * combine.c (combine_max_regno): Remove.  Remove all uses.
2416         (struct reg_stat_struct): Rename from struct reg_stat.
2417         (reg_stat_type): Define, and declare VECs.
2418         (reg_stat): Change from pointer to VEC.  Change all uses.
2419         (combine_split_insns): New static function.
2420         (try_combine, find_split_point): Call it instead of split_insns.
2421
2422 2007-07-25  Zdenek Dvorak  <dvorakz@suse.cz>
2423
2424         * cfghooks.c (split_block): Fix the information about loop latch.
2425
2426 2007-07-25  Zdenek Dvorak  <dvorakz@suse.cz>
2427
2428         * cfgloopmanip.c (fix_loop_structure): Call force_single_succ_latches.
2429
2430 2007-07-25  Zdenek Dvorak  <dvorakz@suse.cz>
2431
2432         * tree-ssa-threadupdate.c (create_edge_and_update_destination_phis):
2433         Scan the new edge for loop exit info.
2434
2435 2007-07-25  Andreas Tobler  <a.tobler@schweiz.org>
2436
2437         * config/darwin.c: Include debug.h.
2438
2439 2007-07-25  Steve Ellcey  <sje@cup.hp.com>
2440
2441         PR target/32218
2442         * tree-vect-patterns.c (vect_pattern_recog_1): Check for valid type.
2443
2444 2007-07-25  Steve Ellcey  <sje@cup.hp.com>
2445
2446         * config/ia64/ia64.h (HARD_REGNO_NREGS): Handle RFmode.
2447         (HARD_REGNO_MODE_OK): Ditto.
2448         (MODES_TIEABLE_P): Ditto.
2449         (HARD_REGNO_CALLER_SAVE_MODE): Ditto.
2450         (CLASS_MAX_NREGS): Ditto.
2451         * config/ia64/ia64.c (ia64_print_operand_address): Add R format.
2452         * config/ia64/ia64.md (divsf3_internal_thr): Removed.
2453         (divdf3_internal_thr): Removed.
2454         * config/ia64/div.md: New file.
2455         * config/ia64/constraints.md: Add H constraint.
2456
2457 2007-07-25  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
2458
2459         * sbitmap.c (sbitmap_verify_popcount, sbitmap_alloc_with_popcount,
2460         sbitmap_copy, sbitmap_copy_n, sbitmap_equal, sbitmap_empty_p,
2461         sbitmap_union_of_diff_cg, sbitmap_union_of_diff, sbitmap_not,
2462         sbitmap_difference, sbitmap_any_common_bits, sbitmap_a_and_b_cg,
2463         sbitmap_a_and_b, sbitmap_a_xor_b_cg, sbitmap_a_xor_b,
2464         sbitmap_a_or_b_cg, sbitmap_a_or_b, sbitmap_a_subset_b_p,
2465         sbitmap_a_or_b_and_c_cg, sbitmap_a_or_b_and_c,
2466         sbitmap_a_and_b_or_c_cg, sbitmap_a_and_b_or_c,
2467         sbitmap_first_set_bit, sbitmap_last_set_bit, dump_sbitmap,
2468         dump_sbitmap_file, debug_sbitmap, popcount_table,
2469         sbitmap_popcount): Constify.
2470         * sbitmap.h (const_sbitmap, const_sbitmap_ptr): New.
2471         (sbitmap_iterator, sbitmap_iter_init, dump_sbitmap,
2472         dump_sbitmap_file, sbitmap_copy, sbitmap_copy_n, sbitmap_equal,
2473         sbitmap_empty_p, sbitmap_union_of_diff, sbitmap_union_of_diff_cg,
2474         sbitmap_difference, sbitmap_not, sbitmap_a_or_b_and_c,
2475         sbitmap_a_or_b_and_c_cg, sbitmap_a_and_b_or_c,
2476         sbitmap_a_and_b_or_c_cg, sbitmap_any_common_bits, sbitmap_a_and_b,
2477         sbitmap_a_and_b_cg, sbitmap_a_or_b, sbitmap_a_or_b_cg,
2478         sbitmap_a_xor_b, sbitmap_a_xor_b_cg, sbitmap_a_subset_b_p,
2479         sbitmap_first_set_bit, sbitmap_last_set_bit, debug_sbitmap,
2480         sbitmap_popcount, sbitmap_verify_popcount): Constify.
2481
2482 2007-07-25  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
2483
2484         * bitmap.c (hash_descriptor, eq_descriptor, bitmap_element_zerop,
2485         bitmap_copy, bitmap_clear_bit, popcount_table, bitmap_count_bits,
2486         bitmap_first_set_bit, bitmap_and, bitmap_and_into,
2487         bitmap_elt_copy, bitmap_and_compl, bitmap_and_compl_into,
2488         bitmap_compl_and_into, bitmap_elt_ior, bitmap_ior,
2489         bitmap_ior_into, bitmap_xor, bitmap_xor_into, bitmap_equal_p,
2490         bitmap_intersect_p, bitmap_intersect_compl_p,
2491         bitmap_ior_and_compl, bitmap_ior_and_compl_into,
2492         debug_bitmap_file, debug_bitmap, bitmap_print, bitmap_hash):
2493         Constify.
2494         * bitmap.h (bitmap_copy, bitmap_equal_p, bitmap_intersect_p,
2495         bitmap_intersect_compl_p, bitmap_count_bits, bitmap_and,
2496         bitmap_and_into, bitmap_and_compl, bitmap_and_compl_into,
2497         bitmap_compl_and_into, bitmap_ior, bitmap_ior_into, bitmap_xor,
2498         bitmap_xor_into, bitmap_ior_and_compl, bitmap_ior_and_compl_into,
2499         debug_bitmap, debug_bitmap_file, bitmap_print,
2500         bitmap_first_set_bit, bitmap_hash, bmp_iter_set_init,
2501         bmp_iter_and_init, bmp_iter_and_compl_init): Likewise.
2502
2503 2007-07-25  Daniel Berlin  <dberlin@dberlin.org>
2504
2505         * config/darwin.c (darwin_override_options): Additional fix for
2506         debug info formats that don't support var tracking.
2507
2508 2007-07-25  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
2509
2510         * cselib.c (entry_and_rtx_equal_p): Constify.
2511         * gengtype.c (output_mangled_typename, write_types, write_local):
2512         Likewise.
2513         * gengtype.h (const_type_p): New.
2514         * see.c (eq_descriptor_extension, hash_descriptor_extension):
2515         Constify.
2516         * tlink.c (scan_linker_output): De-constify.
2517         * tree-ssa-loop-im.c (memref_eq): Constify.
2518         * tree-ssa-structalias.c (const_shared_bitmap_info_t): New.
2519         (shared_bitmap_hash, shared_bitmap_eq): Constify.
2520
2521 2007-07-25  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
2522
2523         * c-common.c (fname_as_string, c_type_hash): Constify.
2524         * c-typeck.c (free_all_tagged_tu_seen_up_to): Likewise.
2525         * cgraph.c (edge_hash, edge_eq): Likewise.
2526         * dwarf2out.c (decl_die_table_eq, decl_loc_table_eq): Likewise.
2527         * emit-rtl.c (mem_attrs_htab_eq, reg_attrs_htab_hash,
2528         reg_attrs_htab_eq): Likewise.
2529         * except.c (t2r_eq, t2r_hash, ttypes_filter_eq, ehl_hash, ehl_eq):
2530         Likewise.
2531         * genautomata.c (const_reserv_sets_t, const_unit_decl_t,
2532         const_decl_t, const_state_t, const_automata_list_el_t): New.
2533         (first_out_arc, DECL_UNIT, DECL_BYPASS, DECL_AUTOMATON, DECL_EXCL,
2534         DECL_PRESENCE, DECL_ABSENCE, DECL_RESERV, DECL_INSN_RESERV,
2535         automaton_decl_hash, automaton_decl_eq_p, insn_decl_hash,
2536         insn_decl_eq_p, decl_hash, decl_eq_p, alt_state_cmp,
2537         reserv_sets_cmp, reserv_sets_eq, state_hash, state_eq_p,
2538         automata_list_hash, automata_list_eq_p, compare_states_for_equiv,
2539         compare_max_occ_cycle_nums, out_state_arcs_num,
2540         compare_transition_els_num, units_cmp, state_reservs_cmp):
2541         Constify.
2542         * genmodes.c (cmp_modes): Likewise.
2543         * ggc-common.c (saving_htab_hash, saving_htab_eq): Likewise.
2544         * gimplify.c (compare_case_labels): Likewise.
2545         * ipa-type-escape.c (get_name_of_type, type_brand_s): Likewise.
2546         * loop-unroll.c (si_info_hash, ve_info_hash): Likewise.
2547         * matrix-reorg.c (mtt_info_hash): Likewise.
2548         * postreload-gcse.c (hash_expr_for_htab, expr_equiv_p): Likewise.
2549         * rtl-factoring.c (const_p_hash_bucket, const_p_hash_elem): New.
2550         (htab_hash_bucket, htab_hash_elem): Constify.
2551         * tree-browser.c (TB_parent_eq): Likewise.
2552         * tree-scalar-evolution.c (hash_scev_info): Likewise.
2553         * tree-ssa-alias.c (sort_tags_by_id): Likewise.
2554         * tree-ssa-coalesce.c (const_coalesce_pair_p): New.
2555         (coalesce_pair_map_hash, coalesce_pair_map_eq, compare_pairs):
2556         Constify.
2557         * tree-ssa-dom.c (avail_expr_hash, avail_expr_eq): Likewise.
2558         * tree-ssa-pre.c (const_expr_pred_trans_t): New.
2559         (expr_pred_trans_hash, expr_pred_trans_eq): Constify.
2560         * tree-ssa-sccvn.c (const_vn_binary_op_t, const_vn_unary_op_t,
2561         const_vn_phi_t, const_vn_reference_op_t, const_vn_reference_t):
2562         New.
2563         (vn_reference_op_eq, vn_reference_hash, vn_reference_eq,
2564         vn_unary_op_hash, vn_unary_op_eq, vn_binary_op_hash,
2565         vn_binary_op_eq, vn_phi_hash, vn_phi_eq): Constify.
2566         * tree-ssa-threadupdate.c (redirection_data_hash,
2567         redirection_data_eq): Likewise. 
2568         * tree-ssa-uncprop.c (equiv_hash, equiv_eq): Likewise.
2569         * tree-ssa.c (var_ann_eq): Likewise.
2570         * tree-vrp.c (compare_case_labels): Likewise.
2571         * tree.c (int_cst_hash_hash, int_cst_hash_eq,
2572         tree_map_base_marked_p, type_hash_marked_p, tree_check_failed,
2573         tree_not_check_failed, tree_class_check_failed,
2574         tree_range_check_failed, tree_not_class_check_failed,
2575         omp_clause_check_failed, omp_clause_range_check_failed,
2576         tree_contains_struct_check_failed, tree_operand_check_failed):
2577         Likewise. 
2578         * tree.h (tree_contains_struct_check_failed, tree_check_failed,
2579         tree_not_check_failed, tree_class_check_failed,
2580         tree_range_check_failed, tree_not_class_check_failed,
2581         tree_operand_check_failed, omp_clause_operand_check_failed,
2582         tree_operand_length): Likewise. 
2583         * var-tracking.c (const_variable): New.
2584         (variable_htab_hash, variable_htab_eq): Constify.
2585         * varasm.c (const_desc_hash): Likewise.
2586
2587 2007-07-25  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
2588
2589         * expr.c (handled_component_p): Constify.
2590         * fold-const.c (fit_double_type): Likewise.
2591         * real.h (real_value_from_int_cst): Likewise.
2592         * tree-flow-inline.h (gimple_in_ssa_p,
2593         gimple_aliases_computed_p, gimple_addressable_vars,
2594         gimple_call_clobbered_vars, gimple_referenced_vars,
2595         gimple_global_var, gimple_nonlocal_all, gimple_var_anns,
2596         end_htab_p, end_referenced_vars_p, var_ann, function_ann,
2597         may_aliases, end_readonly_imm_use_p, has_zero_uses,
2598         has_single_use, single_imm_use, num_imm_uses, is_exec_stmt,
2599         is_label_stmt, is_global_var, phi_ssa_name_p,
2600         factoring_name_p, is_call_clobbered, tree_common_ann,
2601         op_iter_done, end_imm_use_stmt_p, end_imm_use_on_stmt_p,
2602         unmodifiable_var_p, array_ref_contains_indirect_ref,
2603         ref_contains_array_ref, lookup_subvars_for_var,
2604         var_can_have_subvars, overlap_subvar, gimple_ssa_operands,
2605         gimple_mem_ref_stats): Likewise.
2606         * tree-flow.h (tree_common_ann, var_ann, function_ann,
2607         may_aliases, is_exec_stmt, is_label_stmt,
2608         ref_contains_array_ref, array_ref_contains_indirect_ref,
2609         var_can_have_subvars, overlap_subvar, is_call_clobbered,
2610         unmodifiable_var_p): Likewise.
2611         * tree-gimple.c (is_gimple_min_invariant): Likewise.
2612         * tree-gimple.h (is_gimple_min_invariant): Likewise. 
2613         * tree.c (type_hash_list, attribute_hash_list, tree_size,
2614         cst_and_fits_in_hwi, real_value_from_int_cst,
2615         build_real_from_int_cst, integer_zerop, integer_onep,
2616         integer_all_onesp, integer_pow2p, integer_nonzerop, tree_log2,
2617         tree_floor_log2, real_zerop, real_onep, real_twop,
2618         real_minus_onep, really_constant_p, purpose_member, chain_member,
2619         list_length, fields_length, int_size_in_bytes, bit_position,
2620         int_bit_position, byte_position, int_byte_position, expr_align,
2621         array_type_nelts, tree_node_structure,
2622         type_contains_placeholder_1, iterative_hash_pointer,
2623         is_attribute_with_length_p, is_attribute_p, check_qualified_type,
2624         tree_map_base_eq, type_hash_list, type_hash_eq,
2625         attribute_hash_list, type_num_arguments, tree_int_cst_equal,
2626         tree_int_cst_lt, tree_int_cst_compare, host_integerp,
2627         tree_low_cst, tree_int_cst_msb, tree_int_cst_sgn,
2628         simple_cst_list_equal, compare_tree_int, iterative_hash_expr,
2629         int_fits_type_p, get_containing_scope, decl_function_context,
2630         decl_type_context, omp_clause_operand_check_failed,
2631         initializer_zerop, int_cst_value, num_ending_zeros): Likewise.
2632         * tree.h (omp_clause_operand_check_failed, tree_size,
2633         build_real_from_int_cst, array_type_nelts, purpose_member,
2634         tree_int_cst_equal, tree_int_cst_lt, tree_int_cst_compare,
2635         host_integerp, tree_low_cst, tree_int_cst_msb, tree_int_cst_sgn,
2636         is_attribute_p, check_qualified_type, expr_align,
2637         int_size_in_bytes, bit_position, int_bit_position, byte_position,
2638         int_byte_position, list_length, fields_length, initializer_zerop,
2639         integer_zerop, integer_onep, integer_all_onesp, integer_pow2p,
2640         integer_nonzerop, cst_and_fits_in_hwi, num_ending_zeros,
2641         tree_node_structure, handled_component_p, get_containing_scope,
2642         decl_function_context, decl_type_context, real_zerop,
2643         type_num_arguments, fit_double_type, really_constant_p,
2644         int_fits_type_p, tree_log2, tree_floor_log2, iterative_hash_expr,
2645         compare_tree_int, chain_member, simple_cst_list_equal, real_onep,
2646         real_twop, real_minus_onep, int_cst_value): Likewise.
2647
2648 2007-07-25  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
2649
2650         * cfglayout.c (insn_scope, insn_line): Constify.
2651         * emit-rtl.c (const_int_htab_hash, const_int_htab_eq,
2652         const_double_htab_hash, const_double_htab_eq,
2653         mem_attrs_htab_hash): Likewise.
2654         * loop-iv.c (biv_eq): Likewise.
2655         * print-rtl.c (print_rtx, print_decl_name, print_mem_expr,
2656         print_inline_rtx, debug_rtx, debug_rtx_list, debug_rtx_range,
2657         debug_rtx_find, print_rtl, print_rtl_single, print_simple_rtl):
2658         Likewise. 
2659         * rtl-error.c (location_for_asm, diagnostic_for_asm,
2660         error_for_asm, warning_for_asm, _fatal_insn,
2661         _fatal_insn_not_found): Likewise. 
2662         * rtl.c (rtx_size, shared_const_p, shallow_copy_rtx_stat,
2663         rtx_equal_p, rtl_check_failed_bounds, rtl_check_failed_type1,
2664         rtl_check_failed_type2, rtl_check_failed_code1,
2665         rtl_check_failed_code2, rtl_check_failed_code_mode,
2666         rtvec_check_failed_bounds, rtl_check_failed_flag): Likewise.
2667         * rtl.h (rtl_check_failed_bounds, rtl_check_failed_type1,
2668         rtl_check_failed_type2, rtl_check_failed_code1,
2669         rtl_check_failed_code2, rtl_check_failed_code_mode,
2670         rtvec_check_failed_bounds, rtl_check_failed_flag, LABEL_KIND,
2671         SET_LABEL_KIND, rhs_regno, subreg_lsb, subreg_regno, subreg_nregs,
2672         shared_const_p, rtx_size, shallow_copy_rtx_stat, rtx_equal_p,
2673         get_pool_mode, insn_line, insn_file, simplify_replace_rtx,
2674         mode_signbit_p, rtx_addr_can_trap_p, nonzero_address_p,
2675         rtx_unstable_p, get_integer_term, get_related_value,
2676         offset_within_block_p, reg_mentioned_p, count_occurrences,
2677         reg_referenced_p, reg_used_between_p, no_labels_between_p,
2678         single_set_2, multiple_sets, set_noop_p, refers_to_regno_p,
2679         reg_overlap_mentioned_p, dead_or_set_p, dead_or_set_regno_p,
2680         find_reg_note, find_regno_note, find_reg_equal_equiv_note,
2681         find_constant_src, find_reg_fusage, find_regno_fusage,
2682         pure_call_p, remove_note, side_effects_p, volatile_refs_p,
2683         volatile_insn_p, may_trap_p, may_trap_after_code_motion_p,
2684         may_trap_or_fault_p, inequality_comparisons_p, tablejump_p,
2685         computed_jump_p, auto_inc_p, in_expr_list_p,
2686         remove_node_from_expr_list, loc_mentioned_in_p,
2687         label_is_jump_target_p, reversed_comparison_code_parts,
2688         debug_rtx, debug_rtx_list, debug_rtx_range, debug_rtx_find,
2689         print_mem_expr, print_rtl, print_simple_rtl, print_rtl_single,
2690         print_inline_rtx): Likewise.
2691         * rtlanal.c (covers_regno_p, covers_regno_no_parallel_p,
2692         computed_jump_p_1, nonzero_bits1, rtx_unstable_p,
2693         rtx_addr_can_trap_p_1, rtx_addr_can_trap_p, nonzero_address_p,
2694         get_integer_term, get_related_value, offset_within_block_p,
2695         count_occurrences, reg_mentioned_p, no_labels_between_p,
2696         reg_used_between_p, reg_referenced_p, single_set_2,
2697         multiple_sets, set_noop_p, refers_to_regno_p,
2698         reg_overlap_mentioned_p, dead_or_set_p,
2699         covers_regno_no_parallel_p, covers_regno_p,
2700         dead_or_set_regno_p, find_reg_note, find_regno_note,
2701         find_reg_equal_equiv_note, find_constant_src, find_reg_fusage,
2702         find_regno_fusage, pure_call_p, remove_note, in_expr_list_p,
2703         remove_node_from_expr_list, volatile_insn_p, volatile_refs_p,
2704         side_effects_p, may_trap_p_1, may_trap_p,
2705         may_trap_after_code_motion_p, may_trap_or_fault_p,
2706         inequality_comparisons_p, tablejump_p, computed_jump_p_1,
2707         computed_jump_p, auto_inc_p, loc_mentioned_in_p, subreg_lsb,
2708         subreg_regno, subreg_nregs, label_is_jump_target_p): Likewise.
2709         * simplify-rtx.c (neg_const_int, plus_minus_operand_p,
2710         mode_signbit_p, simplify_replace_rtx, plus_minus_operand_p):
2711         Likewise. 
2712         * toplev.h (_fatal_insn_not_found, _fatal_insn, error_for_asm,
2713         warning_for_asm): Likewise.
2714         * tree.h (print_rtl): Likewise.
2715         * varasm.c (get_pool_mode): Likewise.
2716
2717 2007-07-25  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
2718
2719         * c-lex.c (c_lex_with_flags, lex_string): Constify.
2720         * c-ppoutput.c (print_line, pp_dir_change): Likewise.
2721         * c-typeck.c (free_all_tagged_tu_seen_up_to): Likewise.
2722         * cfg.c (bb_copy_original_hash, bb_copy_original_eq): Likewise.
2723         * cfgloop.c (loop_exit_hash, loop_exit_eq): Likewise.
2724         * ddg.c (compare_sccs): Likewise.
2725         * df-scan.c (df_ref_compare, df_mw_compare): Likewise.
2726         * dfp.c (decimal_real_from_string, decimal_to_decnumber,
2727         decimal_to_binary, decimal_do_compare, decimal_real_to_decimal,
2728         decimal_do_fix_trunc, decimal_real_to_integer,
2729         decimal_real_to_integer2, decimal_real_maxval): Likewise.
2730         * dse.c (const_group_info_t): New.
2731         (invariant_group_base_eq, invariant_group_base_hash): Constify.
2732         * dwarf2out.c (const_dw_die_ref): New.
2733         (decl_die_table_hash, decl_die_table_eq, file_info_cmp): Constify.
2734         * tree-browser.c (TB_parent_eq): Likewise.
2735         * unwind-dw2-fde.c (__register_frame_info_bases,
2736         __deregister_frame_info_bases, fde_unencoded_compare, fde_split,
2737         add_fdes, linear_search_fdes, binary_search_unencoded_fdes):
2738         Likewise.
2739         * unwind-dw2-fde.h (get_cie, next_fde): Likewise.
2740         * unwind-dw2.c (uw_frame_state_for): Likewise.
2741         * value-prof.c (histogram_hash, histogram_eq): Likewise.
2742         * value-prof.h (const_histogram_value): New.
2743
2744 2007-07-25  Richard Sandiford  <richard@codesourcery.com>
2745
2746         * config/mips/mips.c (machine_function): Add
2747         initialized_mips16_gp_pseudo_p.
2748         (mips16_gp_pseudo_reg): Do not emit the initialization of
2749         mips16_gp_pseudo_rtx when being called from the gimple cost-
2750         calculation routines; emit it on the first use outside those
2751         routines.
2752
2753 2007-07-25  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
2754
2755         * coretypes.h (const_bitmap, const_rtx, const_rtvec, const_tree):
2756         New.
2757         
2758         * rtl.h (RTL_CHECK1, RTL_CHECK2, RTL_CHECKC1, RTL_CHECKC2,
2759         RTVEC_ELT, XWINT, XCWINT, XCMWINT, XCNMPRV, BLOCK_SYMBOL_CHECK,
2760         RTL_FLAG_CHECK1, RTL_FLAG_CHECK2, RTL_FLAG_CHECK3,
2761         RTL_FLAG_CHECK4, RTL_FLAG_CHECK5, RTL_FLAG_CHECK6,
2762         RTL_FLAG_CHECK7, RTL_FLAG_CHECK8, LABEL_KIND, SET_LABEL_KIND):
2763         Preserve const-ness of parameters through use of __typeof(),
2764         also constify and tidy.
2765         
2766         * tree.h (TREE_CHECK, TREE_NOT_CHECK, TREE_CHECK2,
2767         TREE_NOT_CHECK2, TREE_CHECK3, TREE_NOT_CHECK3, TREE_CHECK4,
2768         NON_TREE_CHECK4, TREE_CHECK5, TREE_NOT_CHECK5,
2769         CONTAINS_STRUCT_CHECK, TREE_CLASS_CHECK, TREE_RANGE_CHECK,
2770         OMP_CLAUSE_SUBCODE_CHECK, OMP_CLAUSE_RANGE_CHECK, EXPR_CHECK,
2771         GIMPLE_STMT_CHECK, NON_TYPE_CHECK, TREE_VEC_ELT_CHECK,
2772         PHI_NODE_ELT_CHECK, OMP_CLAUSE_ELT_CHECK, TREE_OPERAND_CHECK,
2773         TREE_OPERAND_CHECK_CODE, GIMPLE_STMT_OPERAND_CHECK,
2774         TREE_RTL_OPERAND_CHECK, TREE_CHAIN, TREE_TYPE): Likewise.
2775
2776 2007-07-25  Julian Brown  <julian@codesourcery.com>
2777             Mark Shinwell  <shinwell@codesourcery.com>
2778
2779         * config/alpha/alpha.c (alpha_mangle_fundamental_type): Rename to...
2780         (alpha_mangle_type): This.
2781         (TARGET_MANGLE_FUNDAMENTAL_TYPE): Don't define.
2782         (TARGET_MANGLE_TYPE): Define this instead.
2783         * config/arm/arm-protos.h (arm_mangle_type): Add prototype.
2784         * config/arm/arm.c (TARGET_MANGLE_TYPE): Define target hook.
2785         (arm_init_neon_builtins): Fix comment.
2786         (arm_mangle_map_entry): New.
2787         (arm_mangle_map): New.
2788         (arm_mangle_type): New.
2789         * config/i386/i386.c (ix86_mangle_fundamental_type): Rename to...
2790         (ix86_mangle_type): This. Use TYPE_MAIN_VARIANT and restrict
2791         mangled types to VOID_TYPE, BOOLEAN_TYPE, INTEGER_TYPE, REAL_TYPE.
2792         (TARGET_MANGLE_FUNDAMENTAL_TYPE): Don't define.
2793         (TARGET_MANGLE_TYPE): Define this instead.
2794         * config/ia64/ia64.c (ia64_mangle_fundamental_type): Rename to...
2795         (ia64_mangle_type): This. Use TYPE_MAIN_VARIANT  and restrict
2796         mangled types to VOID_TYPE, BOOLEAN_TYPE, INTEGER_TYPE, REAL_TYPE.
2797         (TARGET_MANGLE_FUNDAMENTAL_TYPE): Don't define.
2798         (TARGET_MANGLE_TYPE): Define this instead.
2799         * config/rs6000/rs6000.c (rs6000_mangle_fundamental_type): Rename
2800         to...
2801         (rs6000_mangle_type): This. Use TYPE_MAIN_VARIANT.
2802         (TARGET_MANGLE_FUNDAMENTAL_TYPE): Don't define.
2803         (TARGET_MANGLE_TYPE): Define this instead.
2804         * config/s390/s390.c (s390_mangle_fundamental_type): Rename to...
2805         (s390_mangle_type): This.
2806         (TARGET_MANGLE_FUNDAMENTAL_TYPE): Don't define.
2807         (TARGET_MANGLE_TYPE): Define this instead.
2808         * config/sparc/sparc.c (sparc_mangle_fundamental_type): Rename to...
2809         (sparc_mangle_type): This.
2810         (TARGET_MANGLE_FUNDAMENTAL_TYPE): Don't define.
2811         (TARGET_MANGLE_TYPE): Define this instead.
2812         * cp/mangle.c (write_type): Call mangle_type target hook on all
2813         types before mangling.  Use original type, not main variant, as
2814         argument.
2815         * target-def.h (TARGET_MANGLE_FUNDAMENTAL_TYPE): Rename hook to...
2816         (TARGET_MANGLE_TYPE): This.
2817         * target.h (gcc_target): Rename mangle_fundamental_type to
2818         mangle_type.
2819         * doc/tm.texi (TARGET_MANGLE_FUNDAMENTAL_TYPE): Rename section to...
2820         (TARGET_MANGLE_TYPE): This. Note slightly different semantics.
2821
2822 2007-07-25  Julian Brown  <julian@codesourcery.com>
2823             Paul Brook  <paul@codesourcery.com>
2824             Joseph Myers  <joseph@codesourcery.com>
2825             Mark Shinwell  <shinwell@codesourcery.com>
2826
2827         * Makefile.in (TEXI_GCC_FILES): Add arm-neon-intrinsics.texi.
2828         * config.gcc (arm*-*-*): Add arm_neon.h to extra headers.
2829         (with_fpu): Allow --with-fpu=neon.
2830         * config/arm/aof.h (ADDITIONAL_REGISTER_NAMES): Add Q0-Q15.
2831         * config/arm/aout.h (ADDITIONAL_REGISTER_NAMES): Add Q0-Q15.
2832         * config/arm/arm-modes.def (EI, OI, CI, XI): New modes.
2833         * config/arm/arm-protos.h (neon_immediate_valid_for_move)
2834         (neon_immediate_valid_for_logic, neon_output_logic_immediate)
2835         (neon_pairwise_reduce, neon_expand_vector_init, neon_reinterpret)
2836         (neon_emit_pair_result_insn, neon_disambiguate_copy)
2837         (neon_vector_mem_operand, neon_struct_mem_operand, output_move_quad)
2838         (output_move_neon): Add prototypes.
2839         * config/arm/arm.c (FL_NEON): New flag for NEON processor capability.
2840         (all_fpus): Add FPUTYPE_NEON.
2841         (fp_model_for_fpu): Add NEON field.
2842         (arm_return_in_memory): Return vectors <= 16 bytes in ARM registers.
2843         (arm_arg_partial_bytes): Allow NEON vectors to be passed partially
2844         in registers.
2845         (arm_legitimate_address_p): Don't support fancy addressing for NEON
2846         structure moves.
2847         (thumb2_legitimate_address_p): Likewise.
2848         (neon_valid_immediate): Recognize and prepare constants suitable for
2849         NEON instructions.
2850         (neon_immediate_valid_for_move): New function. Recognize and prepare
2851         immediates for NEON move instructions.
2852         (neon_immediate_valid_for_logic): New function. Recognize and
2853         prepare immediates for NEON logic instructions.
2854         (neon_output_logic_immediate): New function. Create asm string
2855         suitable for outputting immediate logic instructions.
2856         (neon_pairwise_reduce): New function. Implement reduction using
2857         pairwise operations.
2858         (neon_expand_vector_init): New function. Expand a (possibly
2859         non-constant) vector initialization.
2860         (neon_vector_mem_operand): New function. Memory operands supported
2861         for quad-word loads/stores to/from ARM or NEON registers. Don't
2862         allow base+offset addressing for core regs.
2863         (neon_struct_mem_operand): New function. Valid mems for NEON
2864         structure moves.
2865         (coproc_secondary_reload_class): Enable NEON registers to be loaded
2866         from neon_vector_mem_operand addresses without a secondary register.
2867         (add_minipool_forward_ref): Handle >8-byte minipool entries.
2868         (add_minipool_backward_ref): Likewise.
2869         (dump_minipool): Likewise.
2870         (push_minipool_fix): Likewise.
2871         (output_move_quad): New function. Output quad-word moves, loads and
2872         stores using ARM registers.
2873         (output_move_vfp): Add support for vectors in VFP (NEON) D
2874         registers.
2875         (output_move_neon): Output a NEON load/store to/from a quadword
2876         register.
2877         (arm_print_operand): Implement new codes:
2878         - 'c' for unadorned integers (without a # sign).
2879         - 'J', 'K' for reg+2/reg+3, reg+3/reg+2 in little/big-endian
2880         mode.
2881         - 'e', 'f' for the low and high D parts of a NEON Q register.
2882         - 'q' outputs a NEON Q register.
2883         - 'h' outputs ranges of D registers for VLDM/VSTM etc.
2884         - 'T' prints NEON opcode features from a coded bitmask.
2885         - 'F' is similar to T, but signed/unsigned codes both print as
2886         'i'.
2887         - 't' is similar to T, but 'u' is printed instead of 'p'.
2888         - 'O' prints 'r' if NEON instruction should perform rounding (as
2889         specified by bitmask), else prints nothing.
2890         - '#' is a punctuation character to stop operand numbers from
2891         running together with following digits in the assembler
2892         strings for instructions (when using mode attributes).
2893         (arm_assemble_integer): Handle extra NEON vector modes. Permute
2894         constant vectors in big-endian mode, where necessary.
2895         (arm_hard_regno_mode_ok): Allow vectors in VFP/NEON registers.
2896         Handle EI, OI, CI, XI modes.
2897         (ashlv4hi3, ashlv2si3, lshrv4hi3, lshrv2si3, ashrv4hi3)
2898         (ashrv2si3): Rename IWMMXT2_BUILTINs to...
2899         (ashlv4hi3_iwmmxt, ashlv2si3_iwmmxt, lshrv4hi3_iwmmxt)
2900         (lshrv2si3_iwmmxt, ashrv4hi3_iwmmxt, ashrv2si3_iwmmxt): New names.
2901         (neon_builtin_type_bits): Add enumeration, one bit for each vector
2902         type.
2903         (v8qi_UP, v4hi_UP, v2si_UP, v2sf_UP, di_UP, v16qi_UP, v8hi_UP)
2904         (v4si_UP, v4sf_UP, v2di_UP, ti_UP, ei_UP, oi_UP, UP): Define macros
2905         to turn v8qi, etc. into bits defined above.
2906         (neon_itype): New enumeration. Classifications of NEON builtins.
2907         (neon_builtin_datum): Define struct. Contains information about
2908         a single builtin (with multiple modes).
2909         (CF): Define helper macro for...
2910         (VAR1...VAR10): Define builtins with a type, name and 1-10 different
2911         modes.
2912         (neon_builtin_data): New array. Define information about builtins
2913         for use during initialization/expansion.
2914         (arm_init_neon_builtins): New function.
2915         (arm_init_builtins): Call arm_init_neon_builtins if TARGET_NEON is
2916         true.
2917         (neon_builtin_compare): New function.
2918         (locate_neon_builtin_icode): New function. Find an insn code for a
2919         builtin given a function code for that builtin. Also return type of
2920         builtin (NEON_BINOP, NEON_UNOP etc.).
2921         (builtin_arg): New enumeration. Types of arguments for builtins.
2922         (arm_expand_neon_args): New function. Expand a generic NEON builtin.
2923         Takes a variable argument list of builtin_arg types, terminated by
2924         NEON_ARG_STOP.
2925         (arm_expand_neon_builtin): New function. Expand a NEON builtin.
2926         (neon_reinterpret): New function. Expand NEON reinterpret intrinsic.
2927         (neon_emit_pair_result_insn): New function. Support returning pairs
2928         of vectors via a pointer.
2929         (neon_disambiguate_copy): New function. Set up operands for a
2930         multi-word copy such that registers do not get clobbered.
2931         (arm_expand_builtin): Call arm_expand_neon_builtin if fcode >=
2932         ARM_BUILTIN_NEON_BASE.
2933         (arm_file_start): Set float-abi attribute for NEON.
2934         (arm_vector_mode_supported_p): Enable NEON vector modes.
2935         (arm_mangle_map_entry): New.
2936         (arm_mangle_map): New.
2937         (arm_mangle_vector_type): New.
2938         * config/arm/arm.h (TARGET_CPU_CPP_BUILTINS): Define __ARM_NEON__
2939         when appropriate.
2940         (TARGET_NEON): New macro. Target supports NEON.
2941         (fputype): Add FPUTYPE_NEON.
2942         (UNITS_PER_SIMD_WORD): Define. Allow quad-word registers to be used
2943         for vectorization based on command-line arg.
2944         (NEON_REGNO_OK_FOR_NREGS): Define.
2945         (VALID_NEON_DREG_MODE, VALID_NEON_QREG_MODE)
2946         (VALID_NEON_STRUCT_MODE): Define.
2947         (PRINT_OPERAND_PUNCT_VALID_P): '#' is valid punctuation.
2948         (arm_builtins): Add ARM_BUILTIN_NEON_BASE.
2949         * config/arm/arm.md (VUNSPEC_POOL_16): Insert constant for unspec.
2950         (consttable_16): Add pattern for outputting 16-byte minipool
2951         entries.
2952         (movv2si, movv4hi, movv8qi): Remove blank expanders (redefined in
2953         vec-common.md).
2954         (vec-common.md, neon.md): Include md files.
2955         * config/arm/arm.opt (mvectorize-with-neon-quad): Add option.
2956         * config/arm/constraints.md (constraint "Dn", "Dl", "DL"): Define.
2957         (memory_constraint "Ut", "Un", "Us"): Define.
2958         * config/arm/iwmmxt.md (VMMX, VSHFT): New mode macros.
2959         (MMX_char): New mode attribute.
2960         (addv8qi3, addv4hi3, addv2si3): Remove. Replace with...
2961         (*add<mode>3_iwmmxt): New insn pattern.
2962         (subv8qi3, subv4hi3, subv2si3): Remove. Replace with...
2963         (*sub<mode>3_iwmmxt): New insn pattern.
2964         (mulv4hi3): Rename to...
2965         (*mulv4hi3_iwmmxt): This.
2966         (smaxv8qi3, smaxv4hi3, smaxv2si3, umaxv8qi3, umaxv4hi3)
2967         (umaxv2si3, sminv8qi3, sminv4hi3, sminv2si3, uminv8qi3)
2968         (uminv4hi3, uminv2si3): Remove. Replace with...
2969         (*smax<mode>3_iwmmxt, *umax<mode>3_iwmmxt, *smin<mode>3_iwmmxt)
2970         (*umin<mode>3_iwmmxt): These.
2971         (ashrv4hi3, ashrv2si3, ashrdi3_iwmmxt): Replace with...
2972         (ashr<mode>3_iwmmxt): This new pattern.
2973         (lshrv4hi3, lshrv2si3, lshrdi3_iwmmxt): Replace with...
2974         (lshr<mode>3_iwmmxt): This new pattern.
2975         (ashlv4hi3, ashlv2si3, ashldi3_iwmmxt): Replace with...
2976         (ashl<mode>3_iwmmxt): This new pattern.
2977         * config/arm/neon-docgen.ml: New file. Generate documentation for
2978         intrinsics.
2979         * config/arm/neon-gen.ml: New file. Generate arm_neon.h header.
2980         * config/arm/arm_neon.h: New (autogenerated).
2981         * config/arm/neon-testgen.ml: New file. Generate NEON tests
2982         automatically.
2983         * config/arm/neon.md: New file. Define NEON instructions.
2984         * config/arm/neon.ml: New file. Abstract description of NEON
2985         instructions, used to generate arm_neon.h header, documentation and
2986         tests.
2987         * config/arm/t-arm (MD_INCLUDES): Add vec-common.md, neon.md.
2988         * vec-common.md: New file. Shared parts for iWMMXt and NEON vector
2989         support.
2990         * doc/extend.texi (ARM Built-in Functions): Rename and remove
2991         extraneous comma.
2992         (ARM NEON Intrinsics): New subsection.
2993         * doc/arm-neon-intrinsics.texi: New (autogenerated).
2994
2995 2007-07-25  Danny Smith   <dannysmith@users.sourceforge.net>
2996
2997         * config/i386/i386-protos.h (i386_pe_asm_file_end): Remove
2998         prototype.
2999
3000 2007-07-24  Jan Hubicka  <jh@suse.cz>
3001
3002         * regclass.c (move_table): New type.
3003         (move_cost, may_move_in_cost, may_move_out_cost): Use it.
3004         (init_move_cost): Break out from ...
3005         (init_reg_sets_1): ... here; simplify computation of
3006         have_regs-of_mode and contains_reg_of_mode.
3007         (record_reg_classes): Unswitch internal loops.
3008         (copy_cost): Trigger lazy initialization of move cost
3009         (record_address_regs): Likewise.
3010
3011 2007-07-24  Daniel Berlin  <dberlin@dberlin.org>
3012
3013         * config/darwin.c (darwin_override_options): Don't force on
3014         flag_var_tracking_uninit when no debug info is requested.
3015
3016 2007-07-25  Zdenek Dvorak  <dvorakz@suse.cz>
3017
3018         * cfgloop.c (init_loops_structure): New function.
3019         (flow_loops_find): Create root of the loop tree unconditionally.
3020
3021 2007-07-24  Daniel Jacobowitz  <dan@codesourcery.com>
3022
3023         * tree-ssa-ccp.c (fold_const_aggregate_ref): Use fold_convert.
3024
3025 2007-07-24  Jan Hubicka  <jh@suse.cz>
3026
3027         * caller-save.c: Include ggc.h, gt-caller-save.h
3028         (reg_save_code, reg_restore_code): Rename to ...
3029         (cached_reg_save_code, cached_reg_restore_code): ... those.
3030         (savepat, restpat, test_reg, test_mem, saveinsn, restinsn): New.
3031         (reg_save_code, reg_restore_code): New functions.
3032         (init_caller_save): Do not intialize
3033         reg_save_code/reg_restore_code tables.
3034         * Makefile.in: (gt-caller-save.h): New.
3035
3036 2007-07-24  Andreas Krebbel  <krebbel1@de.ibm.com>
3037
3038         * tree-ssa-ifcombine.c (ifcombine_ifandif): Use a ONE operand
3039         with the mode of the original operand instead of
3040         integer_one_node.
3041
3042 2007-07-23  Jan Hubicka  <jH@suse.cz>
3043
3044         * i386.c (ix86_secondary_memory_needed): Break out to...
3045         (inline_secondary_memory_needed): ... here.
3046         (ix86_memory_move_cost): Break out to ...
3047         (inline_memory_move_cost): ... here; add support for IN value of 2 for
3048         maximum of input and output; fix handling of Q_REGS on 64bit.
3049         (ix86_secondary_memory_needed): Microoptimize.
3050
3051 2007-07-23  Sebastian Pop  <sebpop@gmail.com>
3052
3053         * tree-data-ref.c (find_vertex_for_stmt, create_rdg_edge_for_ddr,
3054         create_rdg_edges_for_scalar, create_rdg_edges, create_rdg_vertices,
3055         stmts_from_loop, known_dependences_p, build_rdg): New.
3056         * tree-data-ref.h: Depends on graphds.h.
3057         (rdg_vertex, RDGV_STMT, rdg_dep_type, rdg_edge, RDGE_TYPE): New.
3058         (build_rdg): Declared.
3059         * Makefile.in (TREE_DATA_REF_H): Depends on graphds.h.
3060
3061 2007-07-23  Daniel Berlin  <dberlin@dberlin.org>
3062
3063         * tree-ssa-propagate.c (valid_gimple_expression_p): Match up with
3064         ccp_min_invariant.
3065
3066 2007-07-23  Peter Bergner  <bergner@vnet.ibm.com>
3067             Jakub Jelinek  <jakub@redhat.com>
3068
3069         PR middle-end/PR28690
3070         * optabs.c (expand_binop): (emit_cmp_and_jump_insns): Allow EQ compares.
3071         * rtlanal.c (commutative_operand_precedence): Prefer both REG_POINTER
3072         and MEM_POINTER operands over REG and MEM operands.
3073         (swap_commutative_operands_p): Change return value to bool.
3074         * rtl.h: Update the corresponding prototype.
3075         * tree-ssa-address.c (gen_addr_rtx): Use simplify_gen_binary
3076         instead of gen_rtx_PLUS.
3077         * simplify-rtx.c (simplify_plus_minus_op_data_cmp): Change return
3078         value to bool.  Change function arguments to rtx's and update code
3079         to match.
3080         (simplify_plus_minus): Update the simplify_plus_minus_op_data_cmp
3081         calls to match the new declaration.
3082         * simplify-rtx.c (simplify_associative_operation): Don't
3083         reorder simplify_binary_operation arguments.
3084
3085 2007-07-23  Richard Sandiford  <richard@codesourcery.com>
3086
3087         * config/mips/mips.c (override_options): Use mips_costs to derive
3088         the default branch cost.
3089         * config/mips/mips.h (BRANCH_COST): Use mips_branch_cost rather
3090         than mips_costs.
3091         * config/mips/mips.opt (mbranch-cost=): New option.
3092         * doc/invoke.texi (-mbranch-cost): Document new MIPS option.
3093
3094 2007-07-23  Richard Sandiford  <richard@codesourcery.com>
3095
3096         * config/mips/mips.h (GR_REG_CLASS_P, COP_REG_CLASS_P): Delete.
3097         (SECONDARY_MEMORY_NEEDED): Delete commented-out definition.
3098         * config/mips/mips.c (mips_register_move_cost): Use reg_class_subset_p
3099         instead of GR_REG_CLASS_P and COP_REG_CLASS_P.
3100
3101 2007-07-23  Richard Sandiford  <richard@codesourcery.com>
3102
3103         * config/mips/constraints.md (ks): New constraint.
3104         * config/mips/mips.md (*add<mode>3_sp1, *add<mode>3_sp2): Fold into...
3105         (*add<mode>3_mips16): ...here.
3106
3107 2007-07-21  Uros Bizjak  <ubizjak@gmail.com>
3108
3109         * optabs.h (enum optab_index): Add new OTI_signbit.
3110         (signbit_optab): Define corresponding macro.
3111         (enum insn_code signbit_optab[]): Remove array.
3112         * optabs.c (init_optabs): Initialize signbit_optab using init_optab.
3113         (expand_copysign_absneg): If back end provides signbit insn, use it
3114         instead of bit operations on floating point argument.
3115         * builtins.c (enum insn_code signbit_optab[]): Remove array.
3116         (expand_builtin_signbit): Check signbit_optab->handlers[].insn_code for
3117         availability of signbit insn.
3118
3119         * config/i386/i386.md (signbit<mode>2): New insn pattern to implement
3120         signbitf, signbit and signbitl built-ins as inline x87 intrinsics when
3121         SSE mode is not active.
3122         (isinf<mode>2): Disable for mfpmath=sse,387.
3123
3124 2007-07-22  Ben Elliston  <bje@au.ibm.com>
3125
3126         * regclass.c (invalid_mode_change_p): Attach ATTRIBUTE_UNUSED to
3127         `class' parameter.
3128         * struct-equiv.c (note_local_live): Likewise for `y_regno'.
3129
3130 2007-07-20  Richard Guenther  <rguenther@suse.de>
3131
3132         * tree-cfg.c (verify_expr): COND_EXPRs can have any
3133         integral typed condition.
3134         * tree-ssa.c (useless_type_conversion_p): Do not preserve
3135         booleanness.  Only preserve conversions from a non-base
3136         type to a base type, not in general between types with
3137         different TYPE_MIN_VALUE or TYPE_MAX_VALUE.
3138         * tree.def (COND_EXPR): Document that the condition
3139         can be of any integral type.
3140
3141 2007-07-20  Nigel Stephens  <nigel@mips.com>
3142             Richard Sandiford  <richard@codesourcery.com>
3143
3144         * config/mips/mips.h (mips_dwarf_regno): Declare.
3145         (DBX_REGISTER_NUMBER): Remove redundant brackets.
3146         (HI_REGNUM, LO_REGNUM): Define in an endian-dependent way.
3147         (AC1HI_REGNUM, AC1LO_REGNUM, AC2HI_REGNUM, AC2LO_REGNUM)
3148         (AC3HI_REGNUM, AC3LO_REGNUM, ACC_HI_REG_P): Delete.
3149         (reg_class): Rename HI_REG to MD0_REG and LO_REG to MD1_REG.
3150         (REG_CLASS_NAMES): Update accordingly.
3151         * config/mips/mips.c (mips_dwarf_regno): New array.
3152         (mips_regno_to_class): Rename HI_REG to MD0_REG and LO_REG to MD1_REG.
3153         (mips_subword): Remove special handling for accumulator registers.
3154         (override_options): Initiailize mips_dwarf_regno.  Remove use
3155         of ACC_HI_REG_P.
3156         (mips_swap_registers): New function.
3157         (mips_conditional_register_usage): Swap accumulator registers
3158         around if TARGET_LITTLE_ENDIAN.
3159         (mips_cannot_change_mode_class): Remove special treatment of ACC_REGS.
3160         * config/mips/constraints.md (h, l): Use the endianness to choose
3161         between MD0_REG and MD1_REG.
3162         * config/mips/mips.md (*mfhilo_<mode>_macc): Use a fixed-string,
3163         alternative-dependent template.
3164
3165 2007-07-20  Richard Sandiford  <richard@codesourcery.com>
3166
3167         * config/arm/arm.md (movsi): Use can_create_pseudo_p instead of
3168         no_new_pseudos.
3169
3170 2007-07-20  Zdenek Dvorak  <dvorakz@suse.cz>
3171
3172         * function.c (thread_prologue_and_epilogue_insns): Fix exit
3173         predecessor fallthru flags.
3174
3175 2007-07-20  Zdenek Dvorak  <dvorakz@suse.cz>
3176
3177         * tree-ssa-loop-niter.c (assert_loop_rolls_lt): Convert the operands
3178         of compare to the same type.
3179         * cfgloopmanip.c (add_loop): Update information about loop exits.
3180         (loop_version): Remove the innermost loop requirement.
3181         * tree-ssa-loop-manip.c (determine_exit_conditions): Convert bounds
3182         to sizetype for pointers.
3183
3184 2007-07-18  H.J. Lu  <hongjiu.lu@intel.com>
3185
3186         * Makefile.in (D32PBIT_FUNCS): Add _sd_to_tf and _tf_to_sd.
3187         (D64PBIT_FUNCS): Add _dd_to_tf and _tf_to_dd.
3188         (D128PBIT_FUNCS): Add _td_to_tf and _tf_to_td.
3189
3190         * config/dfp-bit.c: Empty for TFmode conversions.
3191
3192 2007-07-18  Caroline Tice  <ctice@apple.com>
3193         
3194         * var-tracking.c (find_src_status):  Check for  COND_EXEC insns
3195         and handle them correctly; check that src is not NULL before
3196         trying to use it.
3197         (find_src_set_src): Likewise.
3198         
3199 2007-07-18  Bob Wilson  <bob.wilson@acm.org>
3200         
3201         * config/xtensa/xtensa.c (xtensa_expand_mask_and_shift): New.
3202         (struct alignment_context, init_alignment_context): New.
3203         (xtensa_expand_compare_and_swap, xtensa_expand_atomic): New.
3204         * config/xtensa/xtensa.h (XCHAL_HAVE_RELEASE_SYNC): Add default.
3205         (XCHAL_HAVE_S32C1I): Likewise.
3206         (TARGET_RELEASE_SYNC, TARGET_S32C1I): New.
3207         * config/xtensa/xtensa.md (UNSPECV_MEMW): New constant.
3208         (UNSPECV_S32RI, UNSPECV_S32C1I): Likewise.
3209         (ATOMIC, HQI): New macros.
3210         (memory_barrier, *memory_barrier): New.
3211         (sync_lock_releasesi): New.
3212         (sync_compare_and_swapsi, sync_compare_and_swap<mode>): New.
3213         (sync_lock_test_and_set<mode>): New.
3214         (sync_<atomic><mode>): New.
3215         (sync_old_<atomic><mode>, sync_new_<atomic><mode>): New.
3216         * config/xtensa/xtensa-protos.h (xtensa_expand_compare_and_swap): New.
3217         (xtensa_expand_atomic): New.
3218         
3219 2007-07-18  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
3220
3221         PR target/30652
3222
3223         * builtins.c (expand_builtin_interclass_mathfn): Provide a generic
3224         transformation for builtin ISNORMAL.
3225         (expand_builtin): Handle BUILT_IN_ISNORMAL.
3226         * builtins.def (BUILT_IN_ISNORMAL): New.
3227         * doc/extend.texi: Document isnormal.
3228
3229 2007-07-18  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
3230
3231         PR target/30652
3232
3233         * builtins.c (expand_builtin_interclass_mathfn): Allow for missing
3234         optabs infrastructure.  Provide generic implementation for
3235         FINITE/ISFINITE.
3236         (expand_builtin): Handle FINITE/ISFINITE.
3237         (fold_builtin_classify): Make ISFINITE canonical instead of FINITE.
3238         (fold_builtin_1): Likewise.
3239
3240         * builtins.def (BUILT_IN_ISFINITE): New.
3241
3242         * doc/extend.texi: Document isfinite.
3243
3244 2007-07-18  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
3245
3246         PR target/30652
3247         PR middle-end/20558
3248
3249         * builtins.c (expand_builtin_interclass_mathfn): Provide a
3250         generic fallback for isinf.
3251         * c-cppbuiltin.c (builtin_define_float_constants): Move FP max
3252         calculation code ...
3253         * real.c (get_max_float): ... to here.
3254         * real.h (get_max_float): New.
3255
3256 2007-07-18  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
3257
3258         PR middle-end/32668
3259
3260         * builtin-attrs.def (ATTR_TYPEGENERIC,
3261         ATTR_CONST_NOTHROW_TYPEGENERIC): New.
3262
3263         * builtins.def (BUILT_IN_ISINF, BUILT_IN_ISNAN,
3264         BUILT_IN_ISGREATER, BUILT_IN_ISGREATEREQUAL, BUILT_IN_ISLESS,
3265         BUILT_IN_ISLESSEQUAL, BUILT_IN_ISLESSGREATER,
3266         BUILT_IN_ISUNORDERED): Use ATTR_CONST_NOTHROW_TYPEGENERIC.
3267
3268         * c-common.c (handle_type_generic_attribute): New.
3269         (c_common_attribute_table): Add "type generic".
3270
3271         * c-typeck.c (convert_arguments): Handle "type generic" functions.
3272
3273 2007-07-18  Daniel Berlin  <dberlin@dberlin.org>
3274
3275         * tree-ssa-sccvn.c (try_to_simplify): Use valid_gimple_expression
3276         * tree-ssa-propagate (valid_gimple_expression): Handle ADDR_EXPR
3277         properly.
3278
3279 2007-07-18  Rask Ingemann Lambertsen  <rask@sygehus.dk>
3280
3281         PR target/32808
3282         * config/cris/cris.c (cris_print_index): Don't use XEXP before
3283         checking that the operand is an expression.
3284
3285 2007-07-19  Christoph von Wittich  <Christoph_vW@reactos.org>
3286             Danny Smith  <dannysmith@users.sourceforge.net>
3287
3288         PR/other 30335
3289         * config/i386/host-mingw32.c (mingw32_gt_pch_use_address): Put
3290         file mapping object in local namespace if Windows version later
3291         than NT4
3292
3293 2007-07-18  Richard Sandiford  <richard@codesourcery.com>
3294
3295         * config/arm/arm-protos.h (arm_cannot_force_const_mem): Declare.
3296         * config/arm/arm.c (TARGET_CANNOT_FORCE_CONST_MEM): Redefine to
3297         arm_cannot_force_const_mem.
3298         (arm_cannot_force_const_mem): New function.
3299         * config/arm/arm.h (ARM_OFFSETS_MUST_BE_WITHIN_SECTIONS_P): New macro.
3300         (LEGITIMATE_CONSTANT_P): Test arm_cannot_force_const_mem instead
3301         of arm_tls_referenced_p.
3302         * config/arm/arm.md (movsi): Split out-of-section constants when
3303         ARM_OFFSETS_MUST_BE_WITHIN_SECTIONS_P.
3304         * config/arm/vxworks.h (ARM_OFFSETS_MUST_BE_WITHIN_SECTIONS_P): Define.
3305
3306 2007-07-18  Richard Sandiford  <richard@codesourcery.com>
3307
3308         * config/mips/mips.md (clear_cache): Treat the size argument as Pmode.
3309
3310 2007-07-18  Richard Sandiford  <richard@codesourcery.com>
3311
3312         * config/mips/mips.md (*extendqihi2): Convert the destination
3313         to SImode.
3314
3315 2007-07-17  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
3316
3317         * config/pa/fptr.c: Update license header.
3318         * config/pa/milli64.S: Likewise.
3319
3320 2007-07-17  Nick Clifton  <nickc@redhat.com>
3321
3322         * COPYING_v3: New file.  Contains version 3 of the GNU General
3323         Public License.
3324         * COPYING.LIB_v3: New file.  Contains version 3 of the GNU
3325         Lesser General Public License.
3326         * doc/include/gpl_v3.texi: New file.  Contains version 3 of
3327         the GNU General Public License.
3328
3329 2007-07-17  Zdenek Dvorak  <dvorakz@suse.cz>
3330
3331         PR rtl-optimization/32773
3332         * cfglayout.c (force_one_exit_fallthru): New function.
3333         (cfg_layout_finalize): Use it.
3334
3335 2007-07-16  Richard Guenther  <rguenther@suse.de>
3336             Uros Bizjak  <ubizjak@gmail.com>
3337
3338         * tree-if-conv.c (find_phi_replacement_condition): Unshare "*cond"
3339         before forcing it to gimple operand.
3340
3341 2007-07-16  Sandra Loosemore  <sandra@codesourcery.com>
3342             David Ung  <davidu@mips.com>
3343
3344         * config/mips/mips.h (TUNE_24K): Define.
3345         (TUNE_MACC_CHAINS): Add TUNE_24K.
3346         * config/mips/mips.md: (*mul_acc_si, *mul_sub_si): Change type to
3347         imadd.
3348         * config/mips/74k.md (r74k_int_mult): Split madd/msub to ..
3349         (r74k_int_madd): .. this new reservation.
3350         (define_bypass): Fixed bypasses for r74k_int_madd to use
3351         mips_linked_madd_p.
3352         * config/mips/24k.md (define_bypass): Define new
3353         r24k_int_mul3->r24k_int_madd bypass using mips_linked_madd_p.
3354
3355 2007-07-16  Sandra Loosemore  <sandra@codesourcery.com>
3356             Nigel Stephens  <nigel@mips.com>
3357
3358         * config/mips/mips.md:  Include 20kc.md.
3359         * config/mips/20kc.md: New file.
3360         * config/mips/mips.c (mips_rtx_cost_data): Fill in 20Kc costs.
3361         (mips_adjust_cost): Tweak for 20Kc.
3362         (mips_issue_rate): Likewise.
3363         * config/mips/mips.h (TUNE_20KC): Define.
3364
3365 2007-07-16  David Edelsohn  <edelsohn@gnu.og>
3366
3367         * config/rs6000/rs6000.c (struct processor_cost): Add
3368         cache_line_size, l1_cache_lines, and simultaneous_prefetches
3369         fields.
3370         (*_cost): Add cache information.
3371         (rs6000_override_options): Set cache parameters.
3372
3373 2007-07-16  Rainer Orth  <ro@TechFak.Uni-Bielefeld.DE>
3374
3375         PR bootstrap/3456
3376         * config.gcc (mips-sgi-irix[56]*): Enable pthread support.
3377         * doc/install.texi (mips-sgi-irix6): pthread support works now.
3378
3379 2007-07-16  Paul Brook  <paul@codesourcery.com>
3380
3381         PR target/32753
3382         * config/arm/cirrus.md (cirrus_arm_movsi_insn): Remove dead insn.
3383         (cirrus_thumb2_movsi_insn): Ditto.
3384
3385 2007-07-15  Geoffrey Keating  <geoffk@apple.com>
3386
3387         * config/rs6000/darwin-fallback.c (interpret_libc): Change
3388         CR2_REGNO to R_CR2.
3389
3390 2007-07-15  Andrew Haley  <aph@redhat.com>
3391
3392         * unwind-sjlj.c (_Unwind_GetIPInfo): Check for context->fc != NULL
3393         before looking in the context.
3394
3395 2007-07-15  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
3396
3397         PR middle-end/32398
3398         PR middle-end/32769
3399         * pa-protos.h (pa_eh_return_handler_rtx): Declare.
3400         * pa.c (pa_extra_live_on_entry, rp_saved): Declare.
3401         (TARGET_EXTRA_LIVE_ON_ENTRY): Define.
3402         (pa_output_function_prologue): Use rp_saved and current_function_is_leaf
3403         to generate .CALLINFO statement.
3404         (hppa_expand_prologue): Set rp_saved.
3405         (hppa_expand_epilogue): Use rp_saved.
3406         (pa_extra_live_on_entry, pa_eh_return_handler_rtx): New functions.
3407         * pa.h (EH_RETURN_HANDLER_RTX): Use pa_eh_return_handler_rtx.
3408
3409 2007-07-14  Dirk Mueller  <dmueller@suse.de>
3410
3411         * omega.c (coalesce): Fix memory leak on early exit.
3412         * matrix-reorg.c (check_allocation_function): Likewise.
3413         * tree-vect-transform.c (vect_get_new_vect_var): free result
3414         of concat().
3415         * bb-reorder.c (find_rarely_executed_basic_blocks_and_crossing_edges):
3416         pass pointer to edge vector
3417         (partition_hot_cold_basic_blocks): Fix memory leak.
3418         * collect2.c (prefix_from_string): Free temporary storage.
3419         * reload1.c (fixup_abnormal_edges): Free sbitmap.
3420
3421 2007-07-14  Kaz Kojima  <kkojima@gcc.gnu.org>
3422
3423         * config/sh/sh.h (DO_GLOBAL_CTORS_BODY): Add void to prototype.
3424         (DO_GLOBAL_DTORS_BODY): Likewise.
3425
3426 2007-07-14  Sandra Loosemore  <sandra@codesourcery.com>
3427             Nigel Stephens  <nigel@mips.com>
3428
3429         * config/mips/mips.c (mips_classify_symbol): Don't return
3430         SYMBOL_SMALL_DATA for constant pool addresses if
3431         TARGET_EMBEDDED_DATA is true.
3432
3433 2007-07-14  Uros Bizjak  <ubizjak@gmail.com>
3434
3435         * config/i386/i386.c (init_mmx_sse_builtins): Define all builtins
3436         except __builtin_ia32_emms, __builtin_ia32_ldmxcsr,
3437         __builtin_ia32_stmxcsr, __builtin_ia32_maskmovq, __builtin_ia32_loadups,
3438         __builtin_ia32_storeups, __builtin_ia32_loadhps, __builtin_ia32_loadlps,
3439         __builtin_ia32_storehps, __builtin_ia32_storelps,
3440         __builtin_ia32_movntps, __builtin_ia32_movntq, __builtin_ia32_sfence,
3441         __builtin_ia32_femms, __builtin_ia32_maskmovdqu, __builtin_ia32_loadupd,
3442         __builtin_ia32_storeupd, __builtin_ia32_loadhpd, __builtin_ia32_loadlpd,
3443         __builtin_ia32_movnti, __builtin_ia32_movntpd, __builtin_ia32_movntdq,
3444         __builtin_ia32_clflush, __builtin_ia32_lfence, __builtin_ia32_mfence,
3445         __builtin_ia32_loaddqu, __builtin_ia32_storedqu, __builtin_ia32_monitor,
3446         __builtin_ia32_mwait, __builtin_ia32_lddqu, __builtin_ia32_movntdqa,
3447         __builtin_ia32_movntsd and __builtin_ia32_movntss as const builtins
3448         using def_builtin_const.
3449
3450 2007-07-14  Eric Botcazou  <ebotcazou@adacore.com>
3451
3452         PR tree-optimization/32705
3453         * tree-ssa-sccvn.c (set_ssa_val_to): Accept VN_TOP as value number.
3454         (simplify_binary_expression): Use SSA_VAL consistently.
3455
3456 2007-07-13  David Edelsohn  <edelsohn@gnu.org>
3457
3458         * config/rs6000/spe.md (SPE_ACC_REGNO): Delete definition.
3459         (SPEFSCR_REGNO): Delete definition.
3460         * config/rs6000/rs6000.c: LINK_REGISTER_REGNUM -> LR_REGNO.
3461         COUNT_REGISTER_REGNUM -> CTR_REGNO.
3462         * config/rs6000/rs6000.h: Do not define *_REGNO.
3463         LINK_REGISTER_REGNUM -> LR_REGNO.
3464         COUNT_REGISTER_REGNUM -> CTR_REGNO.
3465         * config/rs6000/predicates.md: LINK_REGISTER_REGNUM ->  LR_REGNO.
3466         COUNT_REGISTER_REGNUM -> CTR_REGNO.
3467         * config/rs6000/linux-unwind.h: Define R_LR, R_CR2, R_VR0,
3468         R_VRSAVE, R_VSCR. Use them.
3469         * config/rs6000/darwin-fallback.c: Define R_LR, R_CTR, R_CR2,
3470         R_XER, R_VR0, R_VRSAVE, R_VSCR, R_SPEFSCR.  Use them.
3471         * config/rs6000/rs6000.md: Define REGNO constants.  Use them.
3472         * config/rs6000/aix.h: Define R_LR.  Use it.
3473         
3474 2007-07-13  Caroline Tice  <ctice@apple.com>
3475         
3476         * toplev.c (process_options): Turn flag_var_tracking_uninit off when
3477         flag_var_tracking is explicitly turned off (i.e. when variable
3478         tracking is not feasible); otherwise, turn flag_var_tracking on when
3479         flag_var_tracking_uninit is on.
3480         * rtl.def (VAR_LOCATION): Add a new integer subfield to VAR_LOCATION
3481         note definitions, to allow recording of initialization status in the
3482         notes.
3483         * dwarf2out.c (dwarf_stack_op_name): Add case for DW_OP_GNU_uninit.
3484         (add_var_loc_to_decl): Add comparison of NOTE_VAR_LOCATION_STATUS to
3485         determine if two note locations are equal.
3486         (output_loc_list): Don't output list entries whose start & end labels
3487         are the same.
3488         (reg_loc_descriptor): Add parameter for initialization status; pass it
3489         to other loc descriptor functions.
3490         (one_reg_loc_descriptor): Add parameter for initialization status;
3491         check its value and add DW_OP_GNU_uninit to returned loc descr if
3492         appropriate.
3493         (multiple_reg_loc_descriptor): Add parameter for initialization
3494         status;
3495         pass init status argument to other loc descriptor functions; check
3496         value of intialization parameter and add DW_OP_GNU_uninit to returned
3497         loc descr if appropriate.
3498         (based_loc_descr): Add parameter for initialization status; add new
3499         variable for return value; check value of initialization parameter and
3500         add DW_OP_GNU_uninit to returned loc descr if appropriate.
3501         (concatn_mem_loc_descriptor): Add parameter for initialization status;
3502         pass init status argument to other loc descriptor functions; check
3503         value of intialization parameter and add DW_OP_GNU_uninit to returned
3504         loc descr if appropriate.
3505         (mem_loc_descriptor): Likewise.
3506         (concat_loc_descriptor): Likewise.
3507         (concatn_loc_descriptor): Likewise.
3508         (loc_descriptor): Add parameter for initialization status; pass it as
3509         argument to other loc descriptor function calls.
3510         (loc_descriptor_from_tree_1): Add appropriate initialization status
3511         to loc descriptor function calls.
3512         (add_location_or_const_value_attribute): Get initialization status
3513         from VAR_LOCATION note; add initialization status to loc descriptor
3514         function calls.
3515         * dwarf2.h (enum dwarf_location_atom): New op, DW_OP_GNU_uninit.
3516         * print-rtl.c (print_rtx): When printing a VAR_LOCATION note, if
3517         status is uninitialized, add "[uninint]" to output.
3518         * common.opt (fvar-tracking-uninit): New option, similar to
3519         fvar-tracking, to turn on tracking of uninitialized variables; creates
3520         a new global flag, flag_var_tracking_uninit.
3521         * rtl.h (NOTE_VAR_LOCATION_STATUS): New macro for accessing new field.
3522         (enum var_init_status): New type, for var initialization status field.
3523         * var-tracking.c (struct location_chain_def): Two new fields, init,
3524         for initialization status, and set_src for the assignment value expr.
3525         (unshare_variable): New parameter for initialization status;
3526         initialize new init and set_src fields.
3527         (var_reg_set): New parameters for initialization status and value;
3528         pass them to set_variable_part.
3529         (var_mem_set): Likewise.
3530         (get_init_value): New function.
3531         (var_reg_delete_and_set): New initialization status & value
3532         parameters; add call to get_init_value if status is unknown; pass new
3533         parameters to clobber_variable_part and var_reg_set.
3534         (var_mem_delete_and_set): Likewise.
3535         (var_reg_delete): Pass null set_src value to clobber_variable_part.
3536         (var_mem_delete): Likewise.
3537         (variable_union): Pass status to unshare_variable; initialize new init
3538         and set_src fields. If flag_var_tracking_uninit is not set, force
3539         status to initialized.
3540         (add_stores): Store insn, rather than NEXT_INSN(insn), so it can be
3541         used later to get the set_src value.
3542         (find_src_status): New function.
3543         (find_src_set_src): New function.
3544         (compute_bb_dataflow): Pass init status to calls to var_reg_set,
3545         var_mem_set, var_reg_delete_and_set and var_mem_delete_and_set; for
3546         MO_SET, get set_src value and pass it to var_reg_delete_and_set
3547         and var_mem_delete_and_set.
3548         (dump_variable): Print out "[uninit]" if appropriate.
3549         (set_variable_part): Add new initialization and set_src parameters;
3550         pass status to unshare_variable; set node->init and node- >set_src
3551         fields and modify slot in hash table appropriately; save the init and
3552         set_src values if appropriate and assign to the new node.
3553         (clobber_variable_part): New set_src parameter; if two nodes have
3554         same variable and same location but different set_src (assignment)
3555         values, clobber old node.
3556         (delete_variable_part): Pass init status to unshare_variable.
3557         (emit_note_insn_var_location): Add initialized var; assign var's init
3558         status to new 'initialized'; pass new init status field to calls to
3559         gen_rtx_VAR_LOCATION. If flag_var_tracking_uninit is not set, force
3560         status to initialized.
3561         (emit_notes_in_bb): Pass initialization status to calls to
3562         var_reg_set, var_mem_set, var_reg_delete_and_set and
3563         var_mem_delete_and_set; for MO_SET, get set_src value and pass it to
3564         var_reg_delete_and_set and var_mem_delete_and_set; call
3565         emit_notes_for_changes on NEXT_INSN(insn) rather than on insn, to
3566         make up for change in add_stores.
3567         (vt_add_function_parameters): Add status to calls to
3568         set_variable_part.
3569         * config/darwin.c (darwin_override_options): Turn on uninitialized
3570         tracking automatically, if var_tracking is on and the system is
3571         10.5 or higher.
3572         
3573 2007-07-13  Sa Liu  <saliu@de.ibm.com>
3574
3575         * config.gcc: Add options for arch and tune on SPU.
3576         * config/spu/predicates.md: Add constant operands 0 and 1.
3577         * config/spu/spu-builtins.def: Add builtins for double precision 
3578         floating point comparison: si_dfceq, si_dfcmeq, si_dfcgt, si_dfcmgt, 
3579         si_dftsv, spu_cmpeq_13, spu_cmpabseq_1, spu_cmpgt_13, spu_cmpabsgt_1,
3580         spu_testsv.
3581         * config/spu/spu-c.c: Define __SPU_EDP__ when builtins invoked with 
3582         a CELLEDP target.
3583         * config/spu/spu-protos.h: Add new function prototypes. 
3584         * config/spu/spu.c (spu_override_options): Check options -march and
3585         -mtune.
3586         (spu_comp_icode): Add comparison code for DFmode and vector mode.
3587         (spu_emit_branch_or_set): Use the new code for DFmode and vector 
3588         mode comparison.
3589         (spu_const_from_int): New.  Create a vector constant from 4 ints.
3590         (get_vec_cmp_insn): New.  Get insn index of vector compare instruction.
3591         (spu_emit_vector_compare): New.  Emit vector compare.
3592         (spu_emit_vector_cond_expr): New.  Emit vector conditional expression.
3593         * config/spu/spu.h: Add options -march and -mtune.  Define processor
3594         types PROCESSOR_CELL and PROCESSOR_CELLEDP.  Define macro
3595         CANONICALIZE_COMPARISON.
3596         * config/spu/spu.md: Add new insns for double precision compare
3597         and double precision vector compare.  Add vcond and smax/smin patterns
3598         to enable DFmode vector conditional expression.
3599         * config/spu/spu.opt: Add options -march and -mtune.
3600         * config/spu/spu_internals.h: Add builtins for CELLEDP target:
3601         si_dfceq, si_dfcmeq, si_dfcgt, si_dfcmgt, si_dftsv.  Add builtin for
3602         both CELL and CELLEDP targets: spu_testsv.
3603         * config/spu/spu_intrinsics.h: Add flag mnemonics for test special 
3604         values.
3605
3606 2007-07-13  Richard Guenther  <rguenther@suse.de>
3607
3608         PR tree-optimization/32721
3609         * tree-ssa-ccp.c (maybe_fold_stmt_indirect): Preserve
3610         TREE_THIS_VOLATILE on the folded reference.
3611         * tree-ssa-operands.c (get_expr_operands): Set has_volatile_ops
3612         if the array reference has TREE_THIS_VOLATILE set.
3613
3614 2007-07-13  H.J. Lu  <hongjiu.lu@intel.com>
3615
3616         PR other/32188
3617         * doc/libgcc.texi: Update DFP intrinsics for DPD and BID.
3618
3619 2007-07-13  Andreas Schwab  <schwab@suse.de>
3620
3621         * gengtype-lex.l: Allow declarations to be indented.
3622
3623 2007-07-12  Geoffrey Keating  <geoffk@apple.com>
3624
3625         * ginclude/tgmath.h: New.
3626         * config.gcc: Use GCC's tgmath.h on non-glibc systems.
3627         * doc/sourcebuild.texi (Headers): Document use_gcc_tgmath.
3628         * configure.ac (STMP_FIXPROTO): Honor use_gcc_tgmath.
3629         * configure: Regenerate.
3630
3631 2007-07-13  Kaz Kojima  <kkojima@gcc.gnu.org>
3632
3633         * config/sh/linux-unwind.h (sh_fallback_frame_state): Use
3634         correct index when setting register save state for xd
3635         registers.
3636
3637 2007-07-13  Kaz Kojima  <kkojima@gcc.gnu.org>
3638
3639         * config/sh/sh.c (mark_use): Remove.
3640
3641 2007-07-12  Paul Brook  <paul@codesourcery.com>
3642
3643         * config/arm/arm.c (thumb1_compute_save_reg_mask): Make sure scratch
3644         reg does not overlap return value.
3645
3646 2007-07-12  Daniel Berlin  <dberlin@dberlin.org>
3647
3648         * tree-ssa-pre.c (get_expression_vuses): Move out side-effect.
3649         (set_expression_vuses): Ditto.
3650         (init_pre): Initialize expression_vuses.
3651
3652 2007-07-12  Zdenek Dvorak  <dvorakz@suse.cz>
3653
3654         * config/i386/sse.md (storentdf, storentsf): New.
3655
3656 2007-07-12  Geoffrey Keating  <geoffk@apple.com>
3657
3658         * builtins.c (get_pointer_alignment): Honor DECL_ALIGN on a
3659         FUNCTION_DECL.
3660         * tree.c (build_decl_stat): Move code from here...
3661         (make_node_stat): ... to here.  Don't uselessly clear DECL_USER_ALIGN.
3662         (expr_align): Honor DECL_ALIGN on a FUNCTION_DECL.  Add comment
3663         about using DECL_ALIGN of LABEL_DECL and CONST_DECL.
3664         * tree.h (DECL_USER_ALIGN): Fix misplaced comment.
3665         * varasm.c (assemble_start_function): Use DECL_ALIGN instead of
3666         FUNCTION_BOUNDARY.
3667
3668 2007-07-12  Dorit Nuzman  <dorit@il.ibm.com>
3669             Devang Patel  <dpatel@apple.com>
3670
3671         PR tree-optimization/25413
3672         * targhooks.c (default_builtin_vector_alignment_reachable): New.
3673         * targhooks.h (default_builtin_vector_alignment_reachable): New.
3674         * tree.h (contains_packed_reference): New.
3675         * expr.c (contains_packed_reference): New.
3676         * tree-vect-analyze.c (vector_alignment_reachable_p): New.
3677         (vect_enhance_data_refs_alignment): Call
3678         vector_alignment_reachable_p.
3679         * target.h (vector_alignment_reachable): New builtin.
3680         * target-def.h (TARGET_VECTOR_ALIGNMENT_REACHABLE): New.
3681         * config/rs6000/rs6000.c (rs6000_vector_alignment_reachable): New.
3682         (TARGET_VECTOR_ALIGNMENT_REACHABLE): Define.
3683
3684 2007-07-12  Dorit Nuzman  <dorit@il.ibm.com>
3685
3686         * target.h (builtin_vectorization_cost): Add new target builtin.
3687         * target-def.h (TARGET_VECTORIZE_BUILTIN_VECTORIZATION_COST): New.
3688         * tree-vectorizer.h (TARG_SCALAR_STMT_COST): New.
3689         (TARG_SCALAR_LOAD_COST, TARG_SCALAR_STORE_COST): New.
3690         * tree-vect-analyze.c (vect_analyze_slp_instance): Initisliaze
3691         uninitialized variables.
3692         * tree-vect-transform.c (cost_for_stmt): New function.
3693         (vect_estimate_min_profitable_iters): Call cost_for_stmt instead of
3694         using cost 1 for all scalar stmts. Be less conservative when
3695         estimating the number of prologue/epulogue iterations. Call
3696         targetm.vectorize.builtin_vectorization_cost. Return
3697         min_profitable_iters-1.
3698         (vect_model_reduction_cost): Use TARG_SCALAR_TO_VEC_COST for
3699         initialization cost instead of TARG_VEC_STMT_COST. Use
3700         TARG_VEC_TO_SCALAR_COST instead of TARG_VEC_STMT_COST for reduction
3701         epilogue code. Fix epilogue cost computation.
3702         * config/spu/spu.c (spu_builtin_vectorization_cost): New.
3703         (TARGET_VECTORIZE_BUILTIN_VECTORIZATION_COST): Implement.
3704         * config/spu/spu.h (TARG_COND_BRANCH_COST, TARG_SCALAR_STMT_COST):
3705         (TARG_SCALAR_LOAD_COST, TARG_SCALAR_STORE_COST, TARG_VEC_STMT_COST):
3706         (TARG_VEC_TO_SCALAR_COST, TARG_SCALAR_TO_VEC, TARG_VEC_LOAD_COST):
3707         (TARG_VEC_UNALIGNED_LOAD_COST, TARG_VEC_STORE_COST): Define.
3708
3709 2007-07-12  Richard Guenther  <rguenther@suse.de>
3710
3711         * gimplify.c (gimplify_conversion): Make sure that the result
3712         from maybe_fold_offset_to_reference is trivially convertible
3713         to the desired type before doing the simplification.
3714         (gimplify_expr): Likewise.
3715         * fold-const.c (fold_binary): Use the correct types for
3716         building the simplified expression.
3717
3718 2007-07-12  Zdenek Dvorak  <dvorakz@suse.cz>
3719
3720         PR rtl-optimization/32729
3721         * cfghooks.c (can_duplicate_block_p): Do not forbid duplicating blocks
3722         that fallthru to exit.
3723
3724 2007-07-12  Kaz Kojima  <kkojima@gcc.gnu.org>
3725
3726         * config/sh/sh.md (symGOTOFF2reg): Add missing parenthesis.
3727         (symDTPOFF2reg): Likewise.
3728
3729 2007-07-11  Daniel Berlin  <dberlin@dberlin.org>
3730
3731         PR tree-optimization/32663
3732         
3733         * tree.h (VALUE_HANDLE_VUSES): Remove.
3734         (struct tree_value_handle): Remove vuses.
3735
3736         * tree-vn.c (create_value_handle_for_expr): Don't set
3737         VALUE_HANDLE_VUSES. 
3738
3739         * tree-ssa-pre.c (expression_vuses): New.
3740         (alloc_expression_id): Set up expression_vuses.
3741         (get_expression_vuses): New.
3742         (set_expression_vuses): Ditto.
3743         (clear_expression_ids): Modify for expression_vuses.
3744         (phi_translate_1): Ditto.
3745         (phi_translate_set): Ditto.
3746         (value_dies_in_block_x): Ditto
3747         (valid_in_sets): Ditto.
3748         (add_to_sets): Ditto.
3749         (find_existing_value_expr): Ditto.
3750         (create_value_handle_for_expr): Ditto.
3751         (make_values_for_stmt): Ditto.
3752         (vuse_equiv): Remove.
3753
3754 2007-07-11  Alexandre Oliva  <aoliva@redhat.com>
3755
3756         * Makefile.in (mostlyclean): Remove object files.
3757
3758 2007-07-11  Kenneth Zadeck <zadeck@naturalbridge.com>
3759
3760         * toplev.c (no_new_pseudos): Deleted.
3761         * rtl.h (no_new_pseudos): Deleted.
3762         * tree-pass.h (pass_no_new_pseudos): Deleted. 
3763         * passes.c (pass_no_new_pseudos): Deleted.
3764         * final.c (rest_of_clean_state): Removed no_new_pseudos.
3765         (rest_of_no_new_pseudos, pass_no_new_pseudos): Deleted.
3766         * struct-equiv.c (rtx_equiv_p): Replaced no_new_pseudos with 
3767         reload_completed.
3768         * cfgcleanup.c (try_crossjump_to_edge): Ditto. 
3769         * rtlhooks.c (gen_lowpart_general): Ditto.
3770         * optabs.c (prepare_operand): Ditto.
3771         * mode-switching.c (rest_of_handle_mode_switching): Deleted set of
3772         no_new_pseudos.
3773         * modulo-sched.c (rest_of_handle_sms): Ditto.
3774         * see.c (rest_of_handle_see): Ditto.
3775         * ifcvt.c (if_convert): Ditto.
3776         (gate_handle_if_after_combine): Replaced no_new_pseudos with 
3777         reload_completed.
3778         * init-regs.c (gate_initialize_regs): Deleted set of
3779         no_new_pseudos.
3780         * lower-subreg.c (decompose_multiword_subregs): Ditto. 
3781         * bb-reorder.c (rest_of_handle_partition_blocks): Ditto.
3782         * doc/md.texi: Changed no_new_pseudos to can_create_pseudo_p.
3783         
3784 2007-07-11  Uros Bizjak  <ubizjak@gmail.com>
3785
3786         PR target/32661
3787         * config/i386/sse.md (*sse2_storeq_rex64): Handle 64bit mem->reg moves.
3788         (*vec_extractv2di_1_sse2): Disable for TARGET_64BIT.
3789         (*vec_extractv2di_1_rex64): New insn pattern.
3790
3791 2007-07-11  David Daney  <ddaney@avtrex.com>
3792
3793         * config/mips/linux-unwind.h (mips_fallback_frame_state): Rewrite
3794         return address calculation.  Substitute DWARF_ALT_FRAME_RETURN_COLUMN
3795         for SIGNAL_UNWIND_RETURN_COLUMN.
3796         * config/mips/mips.h (SIGNAL_UNWIND_RETURN_COLUMN): Remove.
3797         (DWARF_FRAME_REGNUM): Rewrite.
3798         (DWARF_ALT_FRAME_RETURN_COLUMN) Define.
3799
3800 2007-07-11  Nick Clifton  <nickc@redhat.com>
3801
3802         * config/m32r/m32r.h (INITIALIZE_TRAMPOLINE): Revert previous
3803         delta and use gen_int_mode in place of GET_INT instead.
3804
3805 2007-07-11  Uros Bizjak  <ubizjak@gmail.com>
3806
3807         * reg-stack.c (struct tree_opt_pass pass_stack_regs): Nullify name
3808         and letter field.
3809
3810 2007-07-11  Douglas Gregor  <doug.gregor@gmail.com>
3811
3812         * params.def (PARAM_VERIFY_CANONICAL_TYPES): Remove.
3813         (PARAM_USE_CANONICAL_TYPES): New; decides whether to use canonical 
3814         types or not.
3815         * params.h (VERIFY_CANONICAL_TYPES): Remove.
3816         (USE_CANONICAL_TYPES): New.
3817         * doc/invoke.texi (verify-canonical-types): Remove.
3818         (use-canonical-types): Add.
3819
3820 2007-07-11  Ulrich Weigand  <uweigand@de.ibm.com>
3821
3822         * config/spu/spu.c (spu_optimization_options): Remove setting of
3823         parameter PARAM_MAX_COMPLETELY_PEEL_TIMES.
3824         (spu_override_options): Move it here.
3825
3826 2007-07-11  Richard Sandiford  <richard@codesourcery.com>
3827
3828         * config/mips/mips.h (MIPS_ISA_LEVEL_SPEC): Handle -m4ksc and -m4ksd.
3829         * config/mips/mips.c (mips_cpu_info_table): Mention
3830         MIPS_ISA_LEVEL_SPEC in the comment.
3831
3832 2007-07-11  Eric Botcazou  <ebotcazou@adacore.com>
3833
3834         PR tree-optimization/32713
3835         * tree-ssa-sccvn.c (copy_reference_ops_from_ref): Handle REAL_CST.
3836
3837 2007-07-11  Paolo Carlini  <pcarlini@suse.de>
3838
3839         PR middle-end/30482
3840         * c-opts.c (c_common_post_options): Do not change flag_complex_method
3841         conditional to flag_isoc99.
3842         (c_common_init_options): Do it here, unconditionally.
3843
3844 2007-07-11  Eric Botcazou  <ebotcazou@adacore.com>
3845
3846         PR tree-optimization/32589
3847         * doc/tree-ssa.texi (Rough GIMPLE Grammar): Add missing rule.
3848         * tree-gimple.c (is_gimple_min_invariant): Clarify head comment.
3849         * tree-ssa-propagate.c (valid_gimple_expression_p): New
3850         predicate, extracted from...
3851         (set_rhs): ...here.  Call it for the expression on entry.
3852         * tree-ssa-propagate.h (valid_gimple_expression_p): Declare.
3853         * tree-ssa-sccvn.c: Include tree-ssa-propagate.h.
3854         (simplify_binary_expression): Use valid_gimple_expression_p
3855         to validate the simplification.
3856         * Makefile.in (tree-ssa-sccvn.o): Depends on tree-ssa-propagate.h.
3857
3858 2007-07-11  Danny Smith  <dannysmith@users.sourceforge.net>
3859
3860         * config/i386/cygming.h (PREFERRED_DEBUGGING_TYPE): Define to
3861         DWARF2_DEBUG on 32 bit target too.
3862         (DWARF2_UNWIND_INFO): Reorganize 64-bit vs 32-bit definition. 
3863
3864 2007-07-11  Nick Clifton  <nickc@redhat.com>
3865
3866         * config/m32r/m32r.h (INITIALIZE_TRAMPOLINE): Provide alternative
3867         version for 64-bit hosts.
3868
3869 2007-07-10  David Daney  <ddaney@avtrex.com>
3870
3871         * config/mips/mips.h (ISA_HAS_SYNCI): New target capability
3872         predicate.
3873         (INITIALIZE_TRAMPOLINE): Emit clear_cache insn instead of  library
3874         call.
3875         * config/mips/mips.c (mips_expand_synci_loop): New function.
3876         * config/mips/mips.md (UNSPEC_CLEAR_HAZARD): New constant.
3877         (UNSPEC_RDHWR): Same.
3878         (UNSPEC_SYNCI): Same.
3879         (UNSPEC_SYNC): Same.
3880         (clear_cache): New expand.
3881         (sync): New insn.
3882         (synci): Same.
3883         (rdhwr): Same.
3884         (clear_hazard): Same.
3885         * config/mips/mips-protos.h (mips_expand_synci_loop): Declare
3886         function.
3887         * testsuite/gcc.target/mips/clear-cache-1.c: New test.
3888         * testsuite/gcc.target/mips/clear-cache-2.c: New test.
3889
3890 2007-07-10  Ian Lance Taylor  <iant@google.com>
3891
3892         * emit-rtl.c (gen_reg_rtx): Check can_create_pseudo_p rather than
3893         no_new_pseudos.
3894
3895 2007-07-10  David Daney  <ddaney@avtrex.com>
3896
3897         * builtins.def (BUILT_IN_CLEAR_CACHE): New builtin.
3898         * builtins.c (expand_builtin___clear_cache): New function.
3899         (expand_builtin): Call expand_builtin___clear_cache for
3900         BUILT_IN_CLEAR_CACHE case.
3901         * doc/extend.texi (__builtin___clear_cache): Document new builtin.
3902         * doc/md.texi (clear_cache): Document new instruction pattern.
3903         * testsuite/gcc.dg/builtins-64.c: New test.
3904
3905 2007-07-11  Hans-Peter Nilsson  <hp@axis.com>
3906
3907         * config/cris/cris.md ("movsi"): Fix typo in last change.
3908
3909 2007-07-09  Geoffrey Keating  <geoffk@apple.com>
3910
3911         PR 32617
3912         * c-common.c (c_alignof_expr): Look at DECL_ALIGN of
3913         FUNCTION_DECLs.
3914         (handle_aligned_attribute): Allow use on FUNCTION_DECLs.
3915         * varasm.c (assemble_start_function): Honor DECL_ALIGN
3916         for FUNCTION_DECLs.  Don't use align_functions_log if
3917         DECL_USER_ALIGN.
3918         * print-tree.c (print_node): Print DECL_ALIGN and DECL_USER_ALIGN
3919         even for FUNCTION_DECLs.
3920         * c-decl.c (merge_decls): Propagate DECL_ALIGN even for
3921         FUNCTION_DECLs.
3922         * tree.h (DECL_ALIGN): Update for new location of 'align'.
3923         (DECL_FUNCTION_CODE): Update for new location and name of
3924         'function_code'.
3925         (DECL_OFFSET_ALIGN): Update for new location of 'off_align'.
3926         (struct tree_decl_common): Move 'align' and 'off_align' out
3927         of union, ensure they're still on a 32-bit boundary.  Remove
3928         other fields in union 'u1'.
3929         (struct tree_function_decl): Add field 'function_code' replacing
3930         'u1.f' in tree_decl_common.
3931         * tree.c (build_decl_stat): Set initial value of DECL_ALIGN.
3932         * doc/extend.texi (Function Attributes): Add 'aligned' attribute.
3933         (Variable Attributes): Cross-reference 'aligned' attribute
3934         to Function Attributes.
3935         * flags.h (force_align_functions_log): Delete.
3936         * toplev.c (force_align_functions_log): Delete.
3937
3938 2007-07-10  Uros Bizjak  <ubizjak@gmail.com>
3939
3940         PR target/32708
3941         * config/i386/sse.md (vec_concatv2di): Disable for TARGET_64BIT.
3942         (*vec_concatv2di_rex): New insn pattern.
3943
3944 2007-07-10  Rainer Orth  <ro@TechFak.Uni-Bielefeld.DE>
3945
3946         PR target/32538
3947         * config/mips/iris6.h (LIBGCC_SPEC): Add libm.
3948
3949 2007-07-10  Ian Lance Taylor  <iant@google.com>
3950
3951         Replace no_new_pseudos in backends.
3952         * rtl.h (can_create_pseudo_p): Define.
3953         * config/darwin.c (machopic_indirect_data_reference): Use
3954         can_create_pseudo_p () instead of no_new_pseudos.
3955         (machopic_indirect_data_reference): Likewise.
3956         (machopic_legitimize_pic_address): Likewise.
3957         * config/alpha/alpha.c (alpha_legitimize_address): Likewise.
3958         (alpha_emit_set_const_1): Likewise.
3959         (alpha_emit_set_const): Likewise.
3960         (alpha_emit_conditional_move): Likewise.
3961         (alpha_split_conditional_move): Likewise.
3962         * config/alpha/alpha.md (various splitters): Likewise.
3963         (movti): Likewise.
3964         * config/arm/arm.c (legitimize_pic_address): Likewise.
3965         (arm_load_pic_register): Likewise.
3966         * config/arm/arm.md (addsi3, subsi3, andsi3, iorsi3): Likewise.
3967         (movdi, movsi, movhi, movqi, movsf, movdf): Likewise.
3968         * config/bfin/bfin.c (legitimize_pic_address): Likewise.
3969         * config/cris/cris.c (cris_expand_pic_call_address): Likewise.
3970         * config/cris/cris.md (movsi): Likewise.
3971         * config/frv/frv.md (symGOT2reg_hilo): Likewise.
3972         (symGOTOFF2reg_hilo): Likewise.
3973         (symGPREL2reg, symGPREL2reg_hilo): Likewise.
3974         * config/h8300/h8300.md (insv, extzv): Likewise.
3975         * config/i386/i386.c (ix86_expand_move): Likewise.
3976         (ix86_expand_vector_move): Likewise.
3977         (ix86_prepare_fp_compare_args): Likewise.
3978         (ix86_expand_carry_flag_compare): Likewise.
3979         * config/i386/i386.md (tls_dynamic_gnu2_32): Likewise.
3980         (tls_dynamic_gnu2_combine_32): Likewise.
3981         (tls_dynamic_gnu2_64, tls_dynamic_gnu2_combine_64): Likewise.
3982         * config/ia64/ia64.c (ia64_expand_move): Likewise.
3983         (ia64_expand_movxf_movrf): Likewise.
3984         * config/m32c/m32c.c (m32c_prepare_move): Likewise.
3985         (m32c_split_move): Likewise.
3986         (m32c_expand_insv): Likewise.
3987         * config/m68k/m68k.md (movsi): Likewise.
3988         * config/mips/mips.c (mips_force_temporary): Likewise.
3989         (mips_split_symbol): Likewise.
3990         (mips_move_integer): Likewise.
3991         (mips_legitimize_const_move): Likewise.
3992         * config/mn10300/mn10300.md (movsi): Likewise.
3993         * config/pa/pa.c (emit_move_sequence): Likewise.
3994         * config/rs6000/rs6000.c (rs6000_emit_move): Likewise.
3995         (rs6000_got_register): Likewise.
3996         (create_TOC_reference): Likewise.
3997         (rs6000_machopic_legitimize_pic_address): Likewise.
3998         * config/rs6000/rs6000.md (add<mode>3): Likewise.
3999         (various splitters): Likewise.
4000         (iorsi3, xorsi3, iordi3, xordi3): Likewise.
4001         (movsi_got): Likewise.
4002         * config/s390/s390.c (emit_symbolic_move): Likewise.
4003         * config/s390/s390.md (movhi, movqi): Likewise.
4004         (load_multiple, store_multiple): Likewise.
4005         * config/score/score.c (score_force_temporary): Likewise.
4006         * config/sh/sh.c (prepare_move_operands): Likewise.
4007         (prepare_cbranch_operands): Likewise.
4008         (emit_fpu_switch): Likewise.
4009         (fpscr_set_from_mem): Likewise.
4010         * config/sh/sh.md (movdicc, movsicc, movsicc_umin): Likewise.
4011         (adddi3, subsi3): Likewise.
4012         (various splitters): Likewise.
4013         (divsi_inv_fp_combine): Likewise.
4014         (symGOT_load, symGOTOFF2reg, symDTPOFF2reg): Likewise.
4015         (seq, slt, sle, sgt, sge, sgtu, sltu, sleu, sgeu): Likewise.
4016         (sne): Likewise.
4017         * config/sh/predicates.md (xor_operand): Likewise.
4018         * config/sparc/sparc.c (legitimize_tls_address): Likewise.
4019         * config/sparc/sparc.md (movsi_pic_label_ref): Likewise.
4020         (movdi_pic_label_ref): Likewise.
4021         * config/spu/spu.c (spu_split_immediate): Likewise.
4022         * config/alpha/alpha.md (various splitters): Remove test
4023         !no_new_pseudos || reload_completed.
4024         * config/ia64/ia64.c (ia64_output_mi_thunk): Don't set
4025         no_new_pseudos.
4026         * config/m68k/m68k.c (m68k_output_mi_thunk): Likewise.
4027         * config/mips/mips.c (mips_output_mi_thunk): Likewise.
4028         * config/rs6000/rs6000.c (rs6000_output_mi_thunk): Likewise.
4029         * config/score/score.c (th_output_mi_thunk): Likewise.
4030         * config/sh/sh.c (sh_output_mi_thunk): Likewise.
4031         * config/sparc/sparc.c (sparc_output_mi_thunk): Likewise.
4032
4033 2007-07-10  Kaz Kojima  <kkojima@gcc.gnu.org>
4034
4035         PR rtl-optimization/32664
4036         * mode-switching.c (create_pre_exit): Skip barrier insns.
4037
4038 2007-07-10  Zdenek Dvorak  <dvorakz@suse.cz>
4039
4040         * tree-scalar-evolution.c (scev_const_prop): Add arguments to
4041         force_gimple_operand_bsi.
4042         * tree-ssa-loop-ivopts.c (rewrite_use_nonlinear_expr,
4043         rewrite_use_compare): Ditto.
4044         * tree-ssa-address.c (gimplify_mem_ref_parts, create_mem_ref):
4045         Ditto.
4046         * tree-ssa-ifcombine.c (ifcombine_ifandif): Ditto.
4047         * tree-ssa-loop-prefetch.c (issue_prefetch_ref): Ditto.
4048         * lambda-code.c (replace_uses_equiv_to_x_with_y): Ditto.
4049         * tree-profile.c (prepare_instrumented_value,
4050         tree_gen_interval_profiler, tree_gen_pow2_profiler,
4051         tree_gen_one_value_profiler, tree_gen_ic_profiler,
4052         tree_gen_ic_func_profiler, tree_gen_average_profiler,
4053         tree_gen_ior_profiler): Ditto.
4054         * tree-ssa-reassoc.c (negate_value): Ditto.
4055         * matrix-reorg.c (transform_access_sites, transform_allocation_sites):
4056         Use force_gimple_operand_bsi.
4057         * tree-vect-transform.c (vect_update_ivs_after_vectorizer): Ditto.
4058         * tree-if-conv.c (add_to_dst_predicate_list,
4059         find_phi_replacement_condition): Ditto.
4060         * gimplify.c (force_gimple_operand_bsi): Add before and m arguments.
4061         Call mark_symbols_for_renaming for new statements.
4062         * tree-flow.h (force_gimple_operand_bsi): Declaration changed.
4063
4064 2007-07-10  Zdenek Dvorak  <dvorakz@suse.cz>
4065
4066         * cfghooks.c (remove_edge): New function.
4067         (redirect_edge_and_branch, remove_branch, merge_blocks): Updated
4068         loop exit rescans.
4069         * cfghooks.h (remove_edge): Declare.
4070         * cfg.c (remove_edge): Renamed to remove_edge_raw.
4071         * basic-block.h (remove_edge): Declaration changed to remove_edge_raw.
4072
4073 2007-07-09  Wolfgang Gellerich  <gellerich@de.ibm.com>
4074
4075         * optabs.h: Added declaration for signbit_optab.  
4076         * optabs.c: (init_optabs): Added initialization for signbit_optab.
4077         * genoptinit.c (optabs): Added entry for signbit insns.  
4078         * builtins.c (expand_builtin_signbit): Added code to use a signbit
4079         insn, if available.  
4080         * config/s390/s390.h (S390_TDC_SIGNBIT_SET): New constant.  
4081         * config/s390/s390.md (signbit<mode>2): New expander.  
4082
4083 2007-07-09  Richard Guenther  <rguenther@suse.de>
4084
4085         PR middle-end/32698
4086         * fold-const.c (fold_plusminus_mult_expr): Move constant
4087         arguments second to allow decomposing.
4088
4089 2007-07-09  Alexandre Oliva  <aoliva@oliva.athome.lsd.ic.unicamp.br>
4090
4091         Revert:
4092         2007-07-06  Alexandre Oliva  <aoliva@redhat.com>
4093         PR debug/23551
4094         * tree-ssa-copyrename.c (copy_rename_partition_coalesce):
4095         Disregard DECL_FROM_INLINE.
4096
4097 2007-07-09  Uros Bizjak  <ubizjak@gmail.com>
4098
4099         PR target/27855
4100         * doc/invoke.texi: Add ftree-reassoc flag.
4101         * common.opt (ftree-reassoc): New flag.
4102         * tree-ssa-reassoc.c (gate_tree_ssa_reassoc): New static function.
4103         (struct tree_opt_pass pass_reassoc): Use gate_tree_ssa_reassoc.
4104
4105 2007-07-09  Uros Bizjak  <ubizjak@gmail.com>
4106
4107         PR tree-optimization/32681
4108         * tree-if-conv.c (find_phi_replacement_condition): Use the condition
4109         saved in second_edge->aux when first_bb is a loop header.
4110
4111 2007-07-09  Jan HUbicka  <jh@suse.cz>
4112
4113         * cse.c (cse_insn): Avoid invalid sharing on trial replacement.
4114
4115 2007-07-09  Richard Guenther  <rguenther@suse.de>
4116
4117         * c-decl.c (start_function): Do not promote return type.
4118
4119 2007-07-08  Daniel Franke  <franke.daniel@gmail.com>
4120
4121         * function.c (do_warn_unused_parameter): Do not warn if
4122         TREE_NO_WARNING is set.
4123
4124 2007-07-08  Andreas Schwab  <schwab@suse.de>
4125
4126         * doc/invoke.texi (DEC Alpha/VMS Options): Fix typo.
4127
4128 2007-07-08  Sandra Loosemore  <sandra@codesourcery.com>
4129
4130         Revert this patch:
4131         2007-07-06  Sandra Loosemore  <sandra@codesourcery.com>
4132
4133         * c-opts.c (c_common_handle_option): Make DOLLARS_IN_IDENTIFIERS
4134         apply to assembly language, too.
4135         * doc/tm.texi (DOLLARS_IN_IDENTIFIERS): Update.
4136
4137 2007-07-07  Daniel Berlin  <dberlin@dberlin.org>
4138
4139         Revert (note the sccvn portions are *not* reverted)
4140         2007-07-06  Daniel Berlin  <dberlin@dberlin.org>
4141
4142         Fix PR tree-optimization/23488
4143
4144         * tree-vn.c (set_value_handle): Use decl_vh_map for decl value
4145         handles.
4146         * tree-flow-inline.h (get_value_handle): Ditto.
4147         * tree-ssa-pre.c (decl_vh_map): New.
4148         (decl_node_pool): New.
4149         (can_value_number_operation): Support DECL_P.
4150         (can_PRE_operation): Ditto.
4151         (create_expression_by_pieces): Ditto.
4152         (find_existing_value_expr): Modify to differnetiate between
4153         addressing and top level.
4154         (create_value_handle_for_expr): Handle DECL's.
4155         (poolify_tree): Ditto.
4156         (make_values_for_phi): Don't insert into PHI_GEN during FRE.
4157         (make_values_for_stmt): Handle DECL's properly.
4158         (init_pre): Reorg to not init useless things during FRE.
4159         (fini_pre): Ditto.
4160         * tree-flow.h: Include pointer-set.h.
4161         (decl_vh_map): Declare.
4162         * Makefile.in (TREE_FLOW_H): Add pointer-set.h
4163
4164 2007-07-07 Eric Weddington  <eweddington@cso.atmel.com>
4165
4166         * config/avr/constraints.md (define_memory_constraint "Q"): Fix
4167         the constraint description.
4168         * doc/md.texi: Update documentation of AVR constraints.
4169
4170 2007-07-07  Kazu Hirata  <kazu@codesourcery.com>
4171
4172         * auto-inc-dec.c, config/arm/arm.c,
4173         config/m32r/constraints.md, config/mips/mips.md,
4174         config/rs6000/rs6000.c, cselib.c, dce.c, df-core.c,
4175         df-problems.c, df-scan.c, df.h, dse.c, gimplify.c,
4176         tree-if-conv.c, tree-ssa-sccvn.c, tree-ssa.c: Fix comment
4177         typos.  Follow spelling conventions.
4178         * doc/invoke.texi, doc/rtl.texi: Fix typos.
4179
4180         * cfgrtl.c (delete_insn_chain_and_edges): Remove.
4181         * rtl.h: Remove the prototype for delete_insn_chain_and_edges.
4182
4183         * tree-ssa-operands.c (realloc_vop, realloc_vdef,
4184         realloc_vuse): Remove.
4185         * tree-ssa-operands.h: Remove the prototype for realloc_vdef
4186         and realloc_vuse.
4187
4188 2007-07-06  Daniel Berlin  <dberlin@dberlin.org>
4189
4190         Fix PR tree-optimization/23488
4191
4192         * tree-ssa-sccvn.c (expr_has_constants): Handle tcc_declaration.
4193         (try_to_simplify): Ditto.
4194         (visit_use): Ditto.
4195         * tree-vn.c (set_value_handle): Use decl_vh_map for decl value
4196         handles.
4197         * tree-flow-inline.h (get_value_handle): Ditto.
4198         * tree-ssa-pre.c (decl_vh_map): New.
4199         (decl_node_pool): New.
4200         (can_value_number_operation): Support DECL_P.
4201         (can_PRE_operation): Ditto.
4202         (create_expression_by_pieces): Ditto.
4203         (find_existing_value_expr): Modify to differnetiate between
4204         addressing and top level.
4205         (create_value_handle_for_expr): Handle DECL's.
4206         (poolify_tree): Ditto.
4207         (make_values_for_phi): Don't insert into PHI_GEN during FRE.
4208         (make_values_for_stmt): Handle DECL's properly.
4209         (init_pre): Reorg to not init useless things during FRE.
4210         (fini_pre): Ditto.
4211         * tree-flow.h: Include pointer-set.h.
4212         (decl_vh_map): Declare.
4213         * Makefile.in (TREE_FLOW_H): Add pointer-set.h
4214                 
4215 2007-07-06  Sandra Loosemore  <sandra@codesourcery.com>
4216
4217         * c-opts.c (c_common_handle_option): Make DOLLARS_IN_IDENTIFIERS
4218         apply to assembly language, too.
4219         * doc/tm.texi (DOLLARS_IN_IDENTIFIERS): Update.
4220
4221 2007-07-06  Ian Lance Taylor  <iant@google.com>
4222             Zack Weinberg  <zackw@panix.com>
4223
4224         PR middle-end/32441
4225         * builtins.c (std_expand_builtin_va_start): Don't use make_tree.
4226
4227 2007-07-06  Richard Sandiford  <richard@codesourcery.com>
4228
4229         * config/sh/sh.md (*prefetch_i4): Disable for TARGET_VXWORKS_RTP.
4230         (prefetch): Likewise if "pref" would be used.
4231
4232 2007-07-06  Josh Conner  <jconner@apple.com>
4233
4234         PR middle-end/32602
4235         PR middle-end/32603
4236         * calls.c (store_one_arg): Handle arguments which are partially
4237         on the stack when detecting argument overlap.
4238
4239 2007-07-06  Bernd Schmidt  <bernd.schmidt@analog.com>
4240
4241         * reload1.c (choose_reload_regs): Set reload_spill_index for regs
4242         chosen during find_reloads.
4243
4244 2007-07-06  Richard Guenther  <rguenther@suse.de>
4245
4246         * gimplify.c (gimplify_call_expr): Prefer DECL_ARGUMENTS over
4247         TYPE_ARG_TYPES for verification of argument types.  Use
4248         DECL_ARG_TYPE instead of the PARM_DECL type.  Take excess
4249         parameters as variable arguments.
4250
4251 2007-07-06  Andreas Krebbel  <krebbel1@de.ibm.com>
4252
4253         * libgcc2.h (word_type): Type definition removed.
4254         (cmp_return_type, shift_count_type): Type definitions added.
4255         (__lshrdi3, __ashldi3, __ashrdi3): word_type of second parameter
4256         replaced with shift_count_type.
4257         (__cmpdi2, __ucmpdi2): word_type of return type replaced with
4258         cmp_return_type.
4259         * libgcc2.c (__udivmoddi4, __moddi3): Type of local variable c
4260         changed from word_type to Wtype.
4261         (__lshrdi3, __ashldi3, __ashrdi3): word_type of second parameter
4262         replaced with shift_count_type.
4263         (__cmpdi2, __ucmpdi2): word_type of return type replaced with
4264         cmp_return_type.
4265         * c-common.c (handle_mode_attribute): Handling for libgcc_cmp_return
4266         and libgcc_shift_count attribute added.
4267         * target-def.h (TARGET_LIBGCC_CMP_RETURN_MODE,
4268         TARGET_LIBGCC_SHIFT_COUNT_MODE): New target hooks defined.
4269         (TARGET_INITIALIZER): New target hooks added.
4270         * targhooks.c (default_libgcc_cmp_return_mode,
4271         default_libgcc_shift_count_mode): Default implementations for the new
4272         target hooks added.
4273         * targhooks.h (default_libgcc_cmp_return_mode,
4274         default_libgcc_shift_count_mode): Function prototypes added.
4275         * target.h (struct gcc_target): Fields for the new target hooks added.
4276         * optabs.c (expand_binop): Use shift_count_mode when expanding shift
4277         as library call.
4278         (prepare_cmp_insn): Use cmp_return_mode when expanding comparison as
4279         library call.
4280
4281         * doc/tm.texi (TARGET_LIBGCC_CMP_RETURN_MODE,
4282         TARGET_LIBGCC_SHIFT_COUNT_MODE): Documentation added.
4283
4284         * config/s390/s390.c (s390_libgcc_cmp_return_mode,
4285         s390_libgcc_shift_count_mode): Functions added.
4286         (TARGET_LIBGCC_CMP_RETURN_MODE, TARGET_LIBGCC_SHIFT_COUNT_MODE):
4287         Target hooks defined.
4288
4289 2007-07-06  Richard Sandiford  <richard@codesourcery.com>
4290
4291         * config/mips/mips.c (compute_frame_size): Restore the original
4292         gp_sp_offset for !GENERATE_MIPS16E_SAVE_RESTORE and remove the
4293         fp_size term from the GENERATE_MIPS16E_SAVE_RESTORE calculation.
4294         Document why the difference is needed.
4295
4296 2007-07-06  Richard Guenther  <rguenther@suse.de>
4297
4298         * c-common.c (boolean_increment): Use correctly typed
4299         constant.
4300
4301 2007-07-06  Richard Sandiford  <richard@codesourcery.com>
4302
4303         * config/mips/mips.c (mips16e_save_restore_pattern_p): Check that
4304         the topmost argument register is not also included in the save mask.
4305         (mips16e_collect_argument_save_p): Take a pointer to the argument
4306         register, rather than a pointer to the number of arguments.
4307         (mips16e_collect_argument_saves): Only include argument saves
4308         that aren't in the register mask.
4309
4310 2007-07-06  Uros Bizjak  <ubizjak@gmail.com>
4311
4312         PR rtl-optimization/32450
4313         * function.c (thread_prologue_and_epilogue_insns): Emit blockage insn
4314         to ensure that instructions are not moved into the prologue when
4315         profiling is on.  Remove unused prologue_end variable.
4316         (expand_function_end): Emit blockage insn instead of ASM_INPUT rtx
4317         as a scheduling barrier.
4318
4319 2007-07-06  Alexandre Oliva  <aoliva@redhat.com>
4320
4321         PR debug/23551
4322         * tree-ssa-copyrename.c (copy_rename_partition_coalesce):
4323         Disregard DECL_FROM_INLINE.
4324
4325 2007-07-05  Adam Nemet  <anemet@caviumnetworks.com>
4326
4327         * rtlanal.c (num_sign_bit_copies1): Improve cases of ANDing or
4328         IORing with a constant.
4329
4330 2007-07-05  Seongbae Park  <seongbae.park@gmail.com>
4331
4332         PR rtl-optimization/32475
4333         * df-scan.c (df_def_record_1): Add a use of the stack pointer
4334         for every definition of the stack pointer.
4335
4336 2007-07-05  Richard Earnshaw  <rearnsha@arm.com>
4337
4338         * arm.c (vfp3_const_double_index): Copy signed results of
4339         REAL_VALUE_TO_INT into unsigned vars.
4340
4341 2007-07-05  Richard Guenther  <rguenther@suse.de>
4342
4343         PR middle-end/32639
4344         * alias.c (get_alias_set): Tread METHOD_TYPE the same as
4345         FUNCTION_TYPE.
4346         * tree-ssa.c (useless_type_conversion_p): Check canonical
4347         types early.
4348
4349 2007-07-05 Anatoly Sokolov <aesok@post.ru>
4350
4351         * config/avr/avr.md (zero_extendqihi2, zero_extendqisi2, 
4352         zero_extendhisi2): Change to define_insn_and_split. 
4353         (zero_extendqidi2, zero_extendhidi2, zero_extendsidi2): New.
4354
4355 2007-07-05  Paolo Bonzini  <bonzini@gnu.org>
4356
4357         * function.c (match_asm_constraints_1, rest_of_match_asm_constraints,
4358         pass_match_asm_constraints): New.
4359         * passes.c (init_optimization_passes): Add new pass.
4360         * stmt.c (expand_asm_operands): Set cfun->has_asm_statement.
4361         * function.h (struct function): Add has_asm_statement bit.
4362         (current_function_has_asm_statement): New.
4363         * tree-pass.h (pass_match_asm_constraints): New.
4364
4365 2007-07-05  Richard Sandiford  <rsandifo@nildram.co.uk>
4366
4367         * config/mips/mips.c (mips_file_start): Avoid declaration
4368         after code.
4369
4370 2007-07-05  Sandra Loosemore  <sandra@codesourcery.com>
4371
4372         * optabs.c (expand_binop_directly): Fix signed/unsigned comparison.
4373
4374 2007-07-05  Uros Bizjak  <ubizjak@gmail.com>
4375
4376         * rtl.def (NOTE): Change print format string to print
4377         operand 5 as a note insn name.
4378
4379 2007-07-05  Sandra Loosemore  <sandra@codesourcery.com>
4380             David Ung  <davidu@mips.com>
4381
4382         * config/mips/mips.c (mips_cpu_info): Add 4ksc and 4ksd processors.
4383         * doc/invoke.texi: (MIPS Options): Document them.
4384
4385 2007-07-05  Sandra Loosemore  <sandra@codesourcery.com>
4386             David Ung  <davidu@mips.com>
4387
4388         Add support for SmartMIPS ASE.
4389
4390         * optabs.c (expand_binop_directly): New, broken out from...
4391         (expand_binop): Here.  Make it try rotating in the other
4392         direction even when the second operand isn't constant.
4393         * config/mips/mips.md (*lwxs): New.
4394         * config/mips/mips.opt (msmartmips): New.
4395         * config/mips/mips.c (mips_lwxs_address_p): New.
4396         (mips_rtx_costs): Make it recognize scaled indexed addressing.
4397         * config/mips/mips.h (TARGET_CPU_CPP_BUILTINS): Define
4398         __mips_smartmips when compiling for TARGET_SMARTMIPS.
4399         (ISA_HAS_ROR): Define for TARGET_SMARTMIPS.
4400         (ISA_HAS_LWXS): New.
4401         (ASM_SPEC): Add -msmartmips/-mno-smartmips.
4402         * doc/invoke.texi (MIPS Options): Document -msmartmips/-mno-smartmips.
4403         * testsuite/gcc.target/mips/smartmips-lwxs.c: New test case.
4404         * testsuite/gcc.target/mips/smartmips-ror-1.c: New test case.
4405         * testsuite/gcc.target/mips/smartmips-ror-2.c: New test case.
4406         * testsuite/gcc.target/mips/smartmips-ror-3.c: New test case.
4407         * testsuite/gcc.target/mips/smartmips-ror-4.c: New test case.
4408
4409 2007-07-05  Dorit Nuzman  <dorit@il.ibm.com>
4410
4411         * tree-vectorizer.c (new_loop_vec_info): Initialize
4412         LOOP_VINFO_COST_MODEL_MIN_ITERS.
4413         * tree-vectorizer.h (_loop_vec_info): Added new filed
4414         min_profitable_iters.
4415         (LOOP_VINFO_COST_MODEL_MIN_ITERS): New access macro to above new field.
4416         (TARG_SCALAR_TO_VEC_COST): Define cost of scalar to vector operation.
4417         * tree-vect-analyze.c (vect_analyze_operations): Set
4418         LOOP_VINFO_COST_MODEL_MIN_ITERS.
4419         * tree-vect-transform.c (vect_estimate_min_profitable_iters): Use
4420         VEC_length to determine if there are any LOOP_VINFO_MAY_MISALIGN_STMTS.
4421         Fix calculation of peel_iters_prologue. Move consideration of epilogue
4422         and prologue cost to after they are computed.
4423         (vect_model_induction_cost): Use TARG_SCALAR_TO_VEC_COST instead of
4424         TARG_VEC_STMT_COST.
4425         (vect_model_simple_cost): Takes additional argument dt. Consider cost
4426         of creating vectors from scalars according to dt.
4427         (vect_model_store_cost): Likewise.
4428         (vectorizable_call): Use dt array instead of scalar dt. Call
4429         vect_model_simple_cost with additional argument dt.
4430         (vectorizable_assignment): Likewise.
4431         (vectorizable_operation): Likewise.
4432         (vectorizable_type_demotion): Likewise.
4433         (vectorizable_type_promotion): Likewise.
4434         (vectorizable_store): Use dt array instead of scalar dt. Call
4435         vect_model_store_cost with additional argument dt.
4436         (vect_do_peeling_for_loop_bound): Don't call
4437         vect_estimate_min_profitable_iters. Instead, lookup
4438         LOOP_VINFO_COST_MODEL_MIN_ITERS. Don't always print
4439         "may not be profitable".
4440
4441 2007-07-05  Dorit Nuzman  <dorit@il.ibm.com>
4442
4443         PR testsuite/32014
4444         * config/rs6000/altivec.md (UNSPEC_VUPKHS_V4SF, UNSPEC_VUPKLS_V4SF):
4445         (UNSPEC_VUPKHU_V4SF, UNSPEC_VUPKLU_V4SF): New.
4446         (vec_unpacks_float_hi_v8hi, vec_unpacks_float_lo_v8hi): New patterns.
4447         (vec_unpacku_float_hi_v8hi, vec_unpacku_float_lo_v8hi): New patterns. 
4448
4449 2007-07-05  Zdenek Dvorak  <dvorakz@suse.cz>
4450
4451         * config/i386/i386.c (ix86_address_cost): Do not consider more complex
4452         addressing modes cheaper.
4453
4454 2007-07-05  Alexandre Oliva  <aoliva@redhat.com>
4455
4456         * dwarf2out.c (dw_ranges_by_label_ref): New typedef.
4457         (dw_ranges_struct): Rename block_num to num.  Adjust.
4458         (dw_ranges_by_label_struct): New.
4459         (ranges_by_label, ranges_by_label_allocated,
4460         ranges_by_label_in_use): New variables.
4461         (add_ranges_num): Factored most of the code out of...
4462         (add_ranges): ... this one.  Rewrite in terms of the former.
4463         (add_ranges_by_labels): New.
4464         (output_ranges): Output by-label ranges.
4465         (dwarf2out_finish): Output range for multiple-section
4466         compile_unit.  Output standard DW_AT_low_pc in addition to
4467         unexpected DW_AT_entry_pc.
4468
4469 2007-07-04  Daniel Berlin  <dberlin@dberlin.org>
4470
4471         PR tree-optimization/32604
4472         PR tree-optimization/32606
4473
4474         * tree-ssa-pre.c (bb_bitmap_sets): Removed antic_safe_loads.
4475         (compute_antic_safe): Removed.
4476         (ANTIC_SAFE_LOADS): Ditto.
4477         (compute_antic_aux): Don't print ANTIC_SAFE_LOADS.
4478         (execute_pre): Don't call compute_antic_safe.
4479         (vuse_equiv): New function.
4480         (make_values_for_stmt): Use it
4481         * tree-ssa-sccvn.c (set_ssa_val_to): Remove assert, since it is
4482         not always true.
4483
4484 2007-07-04 Anatoly Sokolov <aesok@post.ru>
4485
4486         PR target/31331
4487         * config/avr/avr.c (avr_naked_function_p): Handle receiving a type
4488         rather than a decl. 
4489         (avr_attribute_table): Make "naked" attribute apply to function types
4490         rather than to decls.
4491         (avr_handle_fntype_attribute): New function.
4492
4493 2007-07-04  Joseph Myers  <joseph@codesourcery.com>
4494
4495         * target-def.h (TARGET_INITIALIZER): Remove trailing whitespace
4496         after \.
4497
4498 2007-07-04  David Ung  <davidu@mips.com>
4499             Joseph Myers  <joseph@codesourcery.com>
4500
4501         * config/mips/mips.md (type): Add logical, signext and move.
4502         (one_cmpl<mode>2, *and<mode>3, *and<mode>3_mips16, *ior<mode>3,
4503         *ior<mode>3_mips16, two unnamed insns after *ior<mode>3_mips16,
4504         *nor<mode>3, "Combiner patterns to optimize truncate/zero_extend
4505         combinations", *zero_extend<SHORT:mode><GPR:mode>2,
4506         *zero_extendqihi2, *extend<SHORT:mode><GPR:mode>2_mips16e,
4507         *extend<SHORT:mode><GPR:mode>2_se<SHORT:size>, *movdi_64bit,
4508         *movdi_64bit_mips16, *movsi_internal, *movsi_mips16, movcc,
4509         *movhi_internal, *movhi_mips16, *movqi_internal, *movqi_mips16,
4510         *movsf_hardfloat, *movsf_softfloat, *movsf_mips16,
4511         *movdf_hardfloat_64bit, *movdf_hardfloat_32bit,
4512         movv2sf_hardfloat_64bit): Use the new types.
4513         (*movdi_32bit, *movdi_gp32_fp64, *movdi_32bit_mips16,
4514         *movdf_softfloat, *movdf_mips16): Use "multi".
4515         (extendqihi2): Replace with a define_expand.
4516         (*extendqihi2_mips16e, *extendqihi2, *extendqihi2_seb): New.
4517         Based on extend<SHORT:mode><GPR:mode>2 patterns.
4518         * config/mips/74k.md (r74k_int_logical): New reservation and
4519         bypasses.
4520         (r74k_int_arith): Remove "slt".
4521         * config/mips/24k.md, config/mips/4130.md, config/mips/4k.md,
4522         config/mips/5400.md, config/mips/5500.md, config/mips/5k.md,
4523         config/mips/7000.md, config/mips/9000.md, config/mips/generic.md,
4524         config/mips/sb1.md, config/mips/sr71k.md: Add new types to
4525         reservations for "arith".
4526
4527 2007-07-04  Richard Guenther  <rguenther@suse.de>
4528
4529         * tree-ssa.c (useless_type_conversion_p): Add handling for
4530         scalar float and vector types.  Only call the types_compatible_p
4531         langhook for aggregate types as last resort.  Follow the
4532         rules.
4533
4534 2007-07-04  Richard Guenther  <rguenther@suse.de>
4535
4536         * tree-inline.c (estimate_num_insns_1): Treat CONVERT_EXPR
4537         the same as NOP_EXPR.
4538
4539 2007-07-04  Nick Clifton  <nickc@redhat.com>
4540
4541         * target.h (struct gcc_target): Add target_help field.
4542         * target-def.h (TARGET_HELP): New.
4543         (TARGET_INITIALIZER): Use TARGET_HELP.
4544         * opts.c (command_handle_option): Invoke target_help function, if
4545         defined, when the user has specified --target-help on the command
4546         line.
4547         * doc/invoke.texi: Mention that --target-help might print
4548         additional information.
4549         * doc/tm.texi: Document TARGET_HELP hook.
4550
4551         * arm.c (TARGET_HELP): Override default definition.
4552         (arm_target_help): New - display a wrapped list of cores and
4553         architectures supported.
4554
4555 2007-07-04  Rask Ingemann Lambertsen  <rask@sygehus.dk>
4556
4557         * config/gcc/v850/v850.c (expand_prologue): Make sure
4558         GEN_INT() argument is sign extended rather than zero extended.
4559         (expand_epilogue): Likewise.
4560         (output_move_double): Delete.
4561         * config/gcc/v850/v850-protos.h (output_move_double): Delete.
4562         * config/gcc/v850/v850.md (movdi): Delete.
4563         (*movdi_internal): Delete.
4564         (movdf): Delete.
4565         (*movdf_internal): Delete.
4566
4567 2007-07-04  Richard Sandiford  <richard@codesourcery.com>
4568
4569         * config/sh/vxworks.h (SUBTARGET_OVERRIDE_OPTIONS): Reject -mrelax
4570         unless compiling RTP PIC.
4571
4572 2007-07-04  Richard Guenther  <rguenther@suse.de>
4573
4574         PR tree-optimization/32482
4575         * tree-ssa-ifcombine.c (recognize_single_bit_test): Use the
4576         original ssa name if we didn't find a shift expression.
4577         Fix shift constant for bit zero test.
4578
4579 2007-07-04  Richard Sandiford  <richard@codesourcery.com>
4580
4581         * config/sh/lib1funcs.asm (ic_invalidate): Align constant pool.
4582
4583 2007-07-04  Richard Sandiford  <richard@codesourcery.com>
4584
4585         * config.gcc (arm-wrs-vxworks): Don't include svr4.h.
4586         * config/vxworks.h (PTRDIFF_TYPE, SIZE_TYPE, TARGET_POSIX_IO): Define.
4587         * config/arm/vxworks.h (ASM_SPEC): Delete.
4588         (SUBTARGET_EXTRA_ASM_SPEC): Define.
4589
4590 2007-07-04  Sebastian Pop  <sebpop@gmail.com>
4591
4592         * tree-data-ref.h (data_dependence_relation): New flag reversed_p.
4593         (DDR_REVERSED_P): New.
4594         * tree-data-ref.c (initialize_data_dependence_relation,
4595         build_classic_dist_vector): Set DDR_REVERSED_P.
4596
4597 2007-07-04  Sebastian Pop  <sebpop@gmail.com>
4598
4599         PR middle-end/32457
4600         * tree-data-ref.c (analyze_siv_subscript_cst_affine,
4601         compute_overlap_steps_for_affine_1_2, analyze_subscript_affine_affine,
4602         init_omega_for_ddr_1): Use non conservative number of iterations
4603         estimations.
4604         (analyze_subscript_affine_affine): Use HOST_WIDE_INT instead of int.
4605         (analyze_siv_subscript): Remove FIXME and reinitialization of 
4606         last_conflicts to chrec_dont_know.
4607         * testsuite/gfortran.dg/vect/pr32457.f90: New.
4608
4609 2007-07-04  Douglas Gregor  <doug.gregor@gmail.com>
4610
4611         * tree.c (maybe_canonicalize_argtypes): Improve description.
4612
4613 2007-07-04  Douglas Gregor  <doug.gregor@gmail.com>
4614
4615         * tree.c (maybe_canonicalize_argtypes): New.
4616         (build_function_type): Set canonical type.
4617         (build_method_type_directly): Ditto.
4618         (reconstruct_complex_type): Rebuild the METHOD_TYPE node
4619         properly.
4620
4621 2007-07-03  Andrew Pinski  <andrew_pinski@playstation.sony.com>
4622
4623         * tree-ssa-loop-ivopts.c (strip_offset_1): Treat POINTER_PLUS_EXPR
4624         like PLUS_EXPR.
4625         (rewrite_use_nonlinear_expr): Likewise.
4626
4627 2007-07-03  Seongbae Park  <seongbae.park@gmail.com>
4628
4629         * rtl.def (UNSPEC, USE, CLOBBER): More comments.
4630
4631 2007-07-04  Ben Elliston  <bje@au.ibm.com>
4632
4633         * dwarf2out.c: Move DWARF2 abbreviation glossary closer to the top
4634         of this file.
4635
4636         * c-objc-common.c (c_types_compatible_p): Fix indentation.
4637
4638         * doc/tm.texi (Run-time Target): Capitalise "CPU".
4639         (Exception Handling): Likewise.
4640
4641 2007-07-03  Jan Hubicka  <jh@suse.cz>
4642
4643         * ifcvt.c (find_cond_trap): Avoid invalid RTL sharing.
4644
4645 2007-07-03  Eric Christopher  <echristo@apple.com>
4646
4647         * doc/cppopts.texi: Add conflicting option note to -dM.
4648         * doc/invoke.texi: Add note about possible conflicts with
4649         -E for -dCHARS and note that -dM will not produce
4650         any results if there is no machine dependent reorg.
4651         
4652 2007-07-03  Geoffrey Keating  <geoffk@apple.com>
4653
4654         * tree.h (DECL_ALIGN): Back out previous change.
4655
4656 2007-07-03  Joseph Myers  <joseph@codesourcery.com>
4657
4658         * configure.ac: Test for .dtprelword support on MIPS.
4659         * configure, config.in: Regenerate.
4660         * config/mips/mips.c (mips_output_dwarf_dtprel): New.
4661         (TARGET_ASM_OUTPUT_DWARF_DTPREL): Define.
4662
4663 2007-07-03  Julian Brown  <julian@codesourcery.com>
4664
4665         * config.gcc (with_fpu): Allow --with-fpu=vfp3.
4666         * config/arm/aout.h (REGISTER_NAMES): Add D16-D31.
4667         * config/arm/aof.h (REGISTER_NAMES): Add D16-D31.
4668         * config/arm/arm.c (FL_VFPV3): New flag for VFPv3 processor
4669         capability.
4670         (all_fpus): Add FPUTYPE_VFP3.
4671         (fp_model_for_fpu): Add VFPv3 field.
4672         (arm_rtx_costs_1): Give cost to VFPv3 constants.
4673         (vfp3_const_double_index): New function. Return integer index of
4674         VFPv3 constant suitable for fconst[sd] insns, or -1 if constant
4675         isn't suitable.
4676         (vfp3_const_double_rtx): New function. True if VFPv3 is enabled
4677         and argument represents a valid RTX for a VFPv3 constant.
4678         (vfp_output_fldmd): Split fldmd with > 16 registers in the list into
4679         two instructions.
4680         (vfp_emit_fstmd): Similar, for fstmd.
4681         (arm_print_operand): Implement new code 'G' for VFPv3 floating-point
4682         constants, represented as integer indices.
4683         (arm_hard_regno_mode_ok): Use VFP_REGNO_OK_FOR_SINGLE,
4684         VFP_REGNO_OK_FOR_DOUBLE macros.
4685         (arm_regno_class): Handle VFPv3 d0-d7, low, high register split.
4686         (arm_file_start): Set float-abi attribute for VFPv3, and output
4687         correct ".fpu" assembler directive.
4688         (arm_dbx_register_numbering): Add FIXME.
4689         * config/arm/arm.h (TARGET_VFP3): New macro. Target supports VFPv3.
4690         (fputype): Add FPUTYPE_VFP3.
4691         (FIXED_REGISTERS): Add 32 registers for D16-D31.
4692         (CALL_USED_REGISTERS): Likewise.
4693         (CONDITIONAL_REGISTER_USAGE): Add note about conditional definition
4694         of LAST_VFP_REGNUM. Make D16-D31 caller-saved, if present.
4695         (LAST_VFP_REGNUM): Extend available VFP registers for VFPv3.
4696         (D7_VFP_REGNUM): New.
4697         (LAST_LO_VFP_REGNUM, FIRST_HI_VFP_REGNUM, LAST_HI_VFP_REGNUM)
4698         (VFP_REGNO_OK_FOR_SINGLE, VFP_REGNO_OK_FOR_SINGLE)
4699         (VFP_REGNO_OK_FOR_DOUBLE): Define new macros.
4700         (FIRST_PSEUDO_REGISTER): Shift up to 128 to accommodate VFPv3.
4701         (REG_ALLOC_ORDER): Adjust for VFPv3.
4702         (reg_class): Add VFP_D0_D7_REGS, VFP_LO_REGS, VFP_HI_REGS.
4703         (REG_CLASS_NAMES): Add entries corresponding to VFP_D0_D7_REGS,
4704         VFP_LO_REGS, VFP_HI_REGS.
4705         (REG_CLASS_CONTENTS): Likewise. Extend contents for VFP_REGS.
4706         (IS_VFP_CLASS): Define macro.
4707         (SECONDARY_OUTPUT_RELOAD_CLASS, SECONDARY_INPUT_RELOAD_CLASS): Use
4708         IS_VFP_CLASS.
4709         (REGISTER_MOVE_COST): Likewise.
4710         * config/arm/arm-protos.h (vfp3_const_double_rtx): Add prototype.
4711         * config/arm/vfp.md (VFPCC_REGNUM): Redefine as 127.
4712         (*arm_movsi_vfp, *thumb2_movsi_vfp, *movsfcc_vfp)
4713         (*thumb2_movsfcc_vfp, *abssf2_vfp, *negsf2_vfp, *addsf3_vfp)
4714         (*subsf3_vfp, *divsf_vfp, *mulsf_vfp, *mulsf3negsf_vfp)
4715         (*mulsf3addsf_vfp, *mulsf3subsf_vfp, *mulsf3negsfaddsf_vfp)
4716         (*extendsfdf2_vfp, *truncdfsf2_vfp, *truncsisf2_vfp)
4717         (*truncsidf2_vfp, fixuns_truncsfsi2, fixuns_truncdfsi2)
4718         (*floatsisf2_vfp, *floatsidf2_vfp, floatunssisf2)
4719         (floatunssidf2, *sqrtsf2_vfp, *cmpsf_split_vfp)
4720         (*cmpsf_trap_split_vfp, *cmpsf_vfp, *cmpsf_trap_vfp): Use 't'
4721         where appropriate for single-word registers.
4722         (*movsf_vfp, *thumb2_movsf_vfp, *movdf_vfp, *thumb2_movdf_vfp):
4723         As above. Fix type attributes.
4724         * config/arm/constraints.md (register_contraint "t"): Define.
4725         (register_constraint "w"): Change to D0-D15, or D0-D31 for
4726         VFPv3/NEON.
4727         (register_constraint "x"): Define.
4728         (constraint "Dv"): Define.
4729
4730 2007-07-03  Geoffrey Keating  <geoffk@apple.com>
4731
4732         * tree.h (DECL_ALIGN): Prevent use on a FUNCTION_DECL.
4733
4734 2007-07-03  Tom Tromey  <tromey@redhat.com>
4735
4736         * c-parser.c (objc_pq_context): Removed.
4737         (objc_need_raw_identifier): Likewise.
4738         (c_parser) <objc_pq_context>: New field.
4739         <objc_need_raw_identifier>: Likewise.
4740         (OBJC_NEED_RAW_IDENTIFIER): Removed.
4741         (c_lex_one_token): Update.
4742         (c_parser_objc_protocol_definition): Update.
4743         (c_parser_objc_method_definition): Update.
4744         (c_parser_objc_methodproto): Update.
4745         (c_parser_declspecs): Update.
4746
4747 2007-07-03  David Ung  <davidu@mips.com>
4748
4749         * config/mips/mips.c (mips_issue_rate): Return 4 for 74K processors.
4750
4751 2007-07-03  David Ung  <davidu@mips.com>
4752             Richard Sandiford  <richard@codesourcery.com>
4753
4754         * doc/invoke.texi: Document -march=74kf3_2.
4755         * config/mips/mips.h (PROCESSOR_74KF3_2): New processor_type.
4756         (TUNE_74K): Check for it.
4757         * config/mips/mips.c (mips_cpu_info): Add 74kf3_2.
4758         (mips_rtx_cost_data): Add an entry for PROCESSOR_74KF3_2.
4759         * config/mips/mips.md (cpu): Add 74kf3_2.
4760         * config/mips/74k.md (r74k_int_logical, r74k_int_arith, r74k_int_nop)
4761         (r74k_int_cmove, r74k_int_mult, r74k_int_mul3, r74k_int_mfhilo)
4762         (r74k_int_mthilo, r74k_int_div, r74k_int_call, r74k_int_jump)
4763         (r74k_int_load, r74k_int_store, r74k_unknown, r74k_multi): Add
4764         74kf3_2 to the CPU list.
4765         (r74kf3_2_fadd, r74kf3_2_fmove, r74kf3_2_fload, r74kf3_2_fstore)
4766         (r74kf3_2_fmul_sf, r74kf3_2_fmul_df, r74kf3_2_fdiv_sf)
4767         (r74kf3_2_fdiv_df, r74kf3_2_frsqrt_sf, r74kf3_2_frsqrt_df)
4768         (r74kf3_2_fcmp, r74kf3_2_fcvt, r74kf3_2_fxfer_to_c1)
4769         (r74kf3_2_fxfer_from_c1): New insn reservations.
4770
4771 2007-07-03  Richard Sandiford  <richard@codesourcery.com>
4772             David Ung  <davidu@mips.com>
4773
4774         * doc/invoke.texi: Replace -march=24kf with -march=24kf2_1 and
4775         -march=24kx with -march=24kf1_1.  Likewise 24ke[fx], 34k[fx]
4776         and 74k[fx].  Document aliases for the new options.
4777         * config/mips/mips.h (PROCESSOR_24KF): Rename to...
4778         (PROCESSOR_24KF2_1): ...this.
4779         (PROCESSOR_24KX): Rename to...
4780         (PROCESSOR_24KF1_1): ...this.
4781         (PROCESSOR_74KF): Rename to...
4782         (PROCESSOR_74KF2_1): ...this.
4783         (PROCESSOR_74KX): Rename to...
4784         (PROCESSOR_74KF1_1): ...this.
4785         (TUNE_74K): Update PROCESSOR_* names.
4786         * config/mips/mips.c (mips_cpu_info): Add 24kf2_1 as a synonym
4787         for 24kf.  Add 24kf1_1 and 24kfx as synonyms for 24kx.  Likewise
4788         the 24ke*, 34k* and 74k* processors.  Update PROCESSOR_* names.
4789         (mips_rtx_cost_data): Update processor names in comments.
4790         (mips_issue_rate): Update PROCESSOR_* names.
4791         * config/mips/mips.md (cpu): Rename 24kf to 24kf2_1, 24kx to
4792         24kf1_1, 74kf to 74kf2_1 and 74kx to 74kf1_1.
4793         * config/mips/24k.md: Rename FPU-related r24k_* insn reservations
4794         to r24kf2_1_*.  Rename r24kx_* insn reservations to r24kf1_1_*.
4795         Update cpu attribute names.
4796         (r24k_fpu_iss): Rename this reservation to...
4797         (r24kf2_1_fpu_iss): ...this and update all uses.
4798         (r24kx_fpu_iss): Rename this reservation to...
4799         (r24kf1_1_fpu_iss): ...this and update all uses.
4800         * config/mips/74k.md: Rename FPU-related r74kf_* insn reservations
4801         to r74kf2_1_*.  Rename r74kx_* insn reservations to r74kf1_1_*.
4802         Update cpu attribute names.
4803
4804 2007-07-01  Kaz Kojima  <kkojima@gcc.gnu.org>
4805
4806         * config/m32r/constraints.md: New file.
4807         * config/m32r/m32r.c: Include tm-constrs.h.
4808         (small_data_operand): Use satisfies_constraint_* instead of macro.
4809         (addr24_operand, gen_compare): Likewise.
4810         * config/m32r/m32r.h (REG_CLASS_FROM_LETTER): Remove.
4811         (INT8_P, UPPER16_P, UINT32_P, UINT5_P, INVERTED_SIGNED_8BIT,
4812         CONST_OK_FOR_LETTER_P, CONST_DOUBLE_OK_FOR_LETTER_P,
4813         EXTRA_CONSTRAINT): Likewise.
4814         * config/m32r/m32r.md: Include constraints.md.
4815         (*movsi_insn): Use satisfies_constraint_* instead of macro.
4816         (andsi3, iorsi3, xorsi3, seq_insn+1, sne): Likewise.
4817         * config/m32r/predicates.md (conditional_move_operand): Likewise.
4818         (two_insn_const_operand, int8_operand, uint16_operand,
4819         reg_or_int16_operand, reg_or_uint16_operand,
4820         reg_or_cmp_int16_operand, cmp_int16_operand,
4821         seth_add3_operand): Likewise.
4822
4823 2007-07-03  Eric Christopher  <echristo@gmail.com>
4824
4825         * libgcc2.h: Conditionally declare __bswapsi2 and
4826         __bswapdi2.
4827         
4828 2007-07-03  H.J. Lu  <hongjiu.lu@intel.com>
4829
4830         * ddg.c (check_sccs): Define only if ENABLE_CHECKING is
4831         defined.
4832
4833 2007-07-03  Rainer Orth  <ro@TechFak.Uni-Bielefeld.DE>
4834
4835         PR target/28307
4836         * gthr-posix.h [SUPPORTS_WEAK && GTHREAD_USE_WEAK]
4837         (__gthrw_pragma): Provide default definition.
4838         (__gthrw2): Use it.
4839         * gthr-posix.c (__gthrw_pragma): Define.
4840
4841 2007-07-03  Daniel Berlin  <dberlin@dberlin.org>
4842
4843         * tree-ssa-sccvn.c (set_ssa_val_to): Check for operand_equal_p
4844         before declaring inequality.
4845
4846 2007-07-03  Rask Ingemann Lambertsen  <rask@sygehus.dk>
4847
4848         * combine.c (recog_for_combine): Log the success or failure of
4849           matching new insn patterns against the machine description in
4850           detailed dumps.
4851
4852 2007-07-03  Revital Eres  <eres@il.ibm.com>
4853
4854         * ddg.c (print_sccs): New function.
4855         (check_sccs): New function.
4856         (create_ddg_all_sccs): Use it.
4857         * ddg.h (print_sccs): Declare.
4858         * modulo-sched.c (sms_order_nodes): Call print_sccs.
4859
4860 2007-07-03  Uros Bizjak  <ubizjak@gmail.com>
4861
4862         * targhooks.h (default_mode_for_suffix): New function declaration.
4863         * targhooks.c (default_mode_for_suffix): New default target hook.
4864         * target.h (struct c): New structure in the targetm struct.
4865         (mode_for_suffix): New target hook as part of struct c.
4866         target-def.h (TARGET_C_MODE_FOR_SUFFIX): Define as
4867         default_mode_for_suffix.
4868         (TARGET_C): New define.
4869         * c-lex.c: Include "target.h".
4870         (interpret_float): Use targetm.c.mode_for_suffix to determine
4871         the mode for a given non-standard suffix.
4872         Makefile.in (c-lex.o): Depend on $(TARGET_H).
4873
4874         * config/i386/i386.c (ix86_c_mode_for_suffix): New static function.
4875         (TARGET_C_MODE_FOR_SUFFIX): Define to ix86_c_mode_for_suffix.
4876
4877         * doc/extend.texi (Floating Types): New node.  Document __float80 and
4878         __float128 types.  Document 'w', 'W', 'q' and 'Q' suffixes.
4879
4880 2007-07-03  Kaz Kojima  <kkojima@gcc.gnu.org>
4881
4882         PR target/32506
4883         * config/sh/sh.md (udivsi3_i1_media): Use target_reg_operand
4884         predicate instead of target_operand.
4885         (divsi3_i1_media, divsi3_media_2): Likewise.
4886
4887 2007-07-02  Eric Botcazou  <ebotcazou@adacore.com>
4888
4889         * tree.h (alias_sets_might_conflict_p): Rename into
4890         alias_sets_must_conflict_p.
4891         * alias.c (alias_sets_might_conflict_p): Likewise.
4892         (alias_sets_conflict_p): Use it.
4893         (objects_must_conflict_p): Likewise.
4894         * c-common.c (strict_aliasing_warning): Adjust.
4895
4896 2007-07-02  Andrew Pinski  <andrew_pinski@playstation.sony.com>
4897
4898         * rtlhooks.c (gen_lowpart_if_possible): Check for
4899         invalid subreg before calling gen_lowpart_SUBREG.
4900
4901 2007-07-02  Geoffrey Keating  <geoffk@apple.com>
4902
4903         * config/darwin9.h: Add copyright notice.
4904         (LINK_COMMAND_SPEC): Add comment.
4905         (DARWIN_LIBSYSTEM_HAS_UNWIND): Define.
4906         * config/rs6000/darwin.h (MD_UNWIND_SUPPORT): Conditionalise on
4907         DARWIN_LIBSYSTEM_HAS_UNWIND.
4908
4909 2007-07-02  Jakub Jelinek  <jakub@redhat.com>
4910
4911         PR libgomp/32468
4912         * omp-low.c (check_combined_parallel): New function.
4913         (lower_omp_parallel): Call it via walk_stmts, set
4914         OMP_PARALLEL_COMBINED if appropriate.
4915         (determine_parallel_type): If OMP_FOR resp. OMP_SECTIONS
4916         isn't the only statement in WS_ENTRY_BB or OMP_RETURN
4917         the only one in PAR_EXIT_BB and not OMP_PARALLEL_COMBINED,
4918         don't consider it as combined parallel.
4919
4920 2007-07-02  Richard Sandiford  <richard@codesourcery.com>
4921
4922         * configure.ac (gcc_gxx_include_dir): Use $(libsubdir_to_prefix).
4923         (gcc_tooldir): Likewise.
4924         * configure: Regenerate.
4925         * Makefile.in (libsubdir_to_prefix): New variable, based on the
4926         old configure.ac gcc_tooldir setting.
4927         (prefix_to_exec_prefix): New variable.
4928         (DRIVER_DEFINES): Use $(libsubdir_to_prefix)$(prefix_to_exec_prefix)
4929         rather than $(unlibsubdir)/../ to derive TOOLDIR_BASE_PREFIX.
4930
4931 2007-07-02  Daniel Berlin  <dberlin@dberlin.org>
4932
4933         Fix PR tree-optimization/32583
4934         Fix PR tree-optimization/32584
4935         * tree-ssa-pre.c (phi_translate): Always pass seen bitmap.
4936         (phi_translate_set): Use phi_translate directly now.
4937         (make_values_for_stmt): Don't value number RHS if we already know
4938         it is constant.
4939
4940 2007-07-02  Steve Ellcey  <sje@cup.hp.com>
4941             Jim Wilson <wilson@specifix.com>
4942
4943         PR target/31684
4944         * haifa-sched.c (add_to_speculative_block): Change copy_rtx to
4945         copy_insn.
4946
4947 2007-07-02  Sandra Loosemore  <sandra@codesourcery.com>
4948             Richard Sandiford  <richard@codesourcery.com>
4949             Nigel Stephens  <nigel@mips.com>
4950
4951         * config/mips/mips-protos.h (mips16e_save_restore_info): New struct.
4952         (mips16e_output_save_restore): Declare.
4953         (mips16e_save_restore_pattern_p): Likewise.
4954         * config/mips/mips.h (GENERATE_MIPS16E_SAVE_RESTORE): New macro.
4955         * config/mips/mips.c (MIPS_MAX_FIRST_STACK_STEP): Return 0x7f8
4956         for GENERATE_MIPS16E_SAVE_RESTORE.  Return 0x400 for TARGET_MIPS16
4957         && !GENERATE_MIPS16E_SAVE_RESTORE && !TARGET_64BIT.
4958         (BITSET_P): New global macro, extracted from...
4959         (mips_for_each_saved_reg): ...here.
4960         (mips16e_save_restore_info): New struct.
4961         (mips16e_s2_s8_regs, mips16e_a0_a3_regs): New variables.
4962         (mips16e_save_restore_regs): New variable.
4963         (mips_split_plus, mips16e_find_first_register): New functions.
4964         (mips16e_mask_registers): New function.
4965         (compute_frame_size): Expand the commentary before the function.
4966         Enforce the MIPS16e save and restore register range restrictions.
4967         Pad the general register save area at the low end.
4968         (mips16e_save_restore_reg, mips16e_build_save_restore)
4969         (mips16e_save_restore_pattern_p, mips16e_add_register_range)
4970         (mips16e_output_save_restore, mips16e_collect_propagate_value)
4971         (mips16e_collect_argument_save, mips16e_collect_argument_saves):
4972         New functions.
4973         (mips_expand_prologue, mips_expand_epilogue): Handle
4974         GENERATE_MIPS16E_SAVE_RESTORE.
4975         * config/mips/mips.md (*mips16e_save_restore): New pattern.
4976
4977 2007-07-02  Uros Bizjak  <ubizjak@gmail.com>
4978
4979         PR tree-optimization/31966
4980         PR tree-optimization/32533
4981         * tree-if-conv.c (add_to_dst_predicate_list): Use "edge", not
4982         "basic_block" description as its third argument.  Update function
4983         calls to get destination bb from "edge" argument.  Save "cond" into
4984         aux field of the edge.  Update prototype for changed arguments.
4985         (if_convertible_loop_p): Clear aux field of incoming edges if bb
4986         contains phi node.
4987         (find_phi_replacement_condition): Operate on incoming edges, not
4988         on predecessor blocks.  If there is a condition saved in the
4989         incoming edge aux field, AND it with incoming bb predicate.
4990         Return source bb of the first edge.
4991         (clean_predicate_lists): Clean aux field of outgoing node edges.
4992         (tree_if_conversion): Do not initialize cond variable. Move
4993         variable declaration into the loop.
4994         (replace_phi_with_cond_gimple_modify_stmt): Remove unneded
4995         initializations of new_stmt, arg0 and arg1 variables.
4996
4997 2007-07-02  Jakub Jelinek  <jakub@redhat.com>
4998
4999         * tree-nrv.c (dest_safe_for_nrv_p): Grok any handled_component_p,
5000         SSA_NAMEs, RESULT_DECLs and PARM_DECLs.
5001
5002 2007-07-02  Richard Guenther  <rguenther@suse.de>
5003
5004         * tree-ssa.c (useless_type_conversion_p): Document
5005         future intent as defining the middle-end type system.
5006         Re-structure to call langhook last, group by type class,
5007         mark questionable parts.
5008
5009 2007-07-02  Richard Guenther  <rguenther@suse.de>
5010
5011         * tree-flow.h (types_compatible_p): Declare.
5012         * tree-ssa.c (types_compatible_p): New function.
5013         * ipa-type-escape.c (discover_unique_type): Use
5014         types_compatible_p instead of lang_hooks.types_compatible_p.
5015         * tree-ssa-copyrename.c (copy_rename_partition_coalesce): Likewise.
5016         * tree-vn.c (expressions_equal_p): Likewise.
5017         * tree.c (fields_compatible_p): Likewise.
5018         * tree-ssa-dom.c (avail_expr_eq): Likewise.
5019         (cprop_operand): Use useless_type_conversion_p instead of
5020         lang_hooks.types_compatible_p.
5021         * tree-inline.c (setup_one_parameter): Likewise.
5022         (declare_return_variable): Likewise.
5023         * tree-nrv.c (tree_nrv): Likewise.
5024         * tree-ssa-ccp.c (maybe_fold_offset_to_array_ref): Likewise.
5025         (maybe_fold_offset_to_component_ref): Likewise.
5026         (maybe_fold_offset_to_reference): Likewise.
5027         * tree-ssa-copy.c (may_propagate_copy): Likewise.
5028         (merge_alias_info): Likewise.
5029         * tree-ssa-forwprop.c (forward_propagate_addr_expr_1): Likewise.
5030         * tree-ssa-phiopt.c (conditional_replacement): Likewise.
5031         * tree-ssa-reassoc.c (optimize_ops_list): Likewise.
5032         * tree-tailcall.c (find_tail_calls): Likewise.
5033         * tree-vect-generic.c (expand_vector_operations_1): Likewise.
5034         * gimplify.c (canonicalize_addr_expr): Likewise.
5035         (fold_indirect_ref_rhs): Likewise.
5036         (gimplify_addr_expr): Likewise.  Swap parameters to cpt_same_type.
5037         (cpt_same_type): Likewise.
5038         (check_pointer_types_r): Swap parameters to cpt_same_type
5039         where appropriate.
5040         * fold-const.c (fold_convert): Revert fix for PR15988.
5041         * tree-inline.c (setup_one_parameter): Instead fix it here by
5042         using fold_build1 instead of fold_convert and checking for
5043         error_mark_node.  Convert only if the conversion is necessary.
5044
5045 2007-07-02  Joseph Myers  <joseph@codesourcery.com>
5046
5047         * configure.ac: Check for .gnu_attribute on Power.
5048         * configure: Regenerate.
5049         * config/rs6000/rs6000.c (rs6000_file_start): If supported, output
5050         attribute for floating-point ABI.
5051
5052 2007-07-02  Ira Rosen  <irar@il.ibm.com>
5053
5054         PR tree-optimization/32230
5055         PR tree-optimization/32477
5056         * tree-vect-analyze.c (vect_analyze_data_refs): Fail if base 
5057         address is a constant.
5058
5059 2007-07-02  Richard Sandiford  <richard@codesourcery.com>
5060
5061         * config.gcc (mipsisa32-*-elf*, mipsisa32el-*-elf*)
5062         (mipsisa32r2-*-elf*, mipsisa32r2el-*-elf*)
5063         (mipsisa64-*-elf*, mipsisa64el-*-elf*): Combine top-level
5064         stanzas.  Use the first part of the triplet to set MIPS_ISA_DEFAULT.
5065         Remove redundant setting of MASK_FLOAT64 and MASK_64BIT for the
5066         64-bit targets.  Add support for *-elfoabi*.
5067         * config/mips/t-isa3264 (MULTILIB_OPTIONS, MULTILIB_DIRNAMES): Use
5068         different settings if $(tm_defines) does not select the EABI.
5069         (MULTILIB_EXCLUSIONS): Define in those circumstances.
5070         * config/mips/mips.h (MIPS_ISA_LEVEL_OPTION_SPEC): New macro.
5071         (MIPS_ARCH_OPTION_SPEC): Likewise.
5072         (MIPS_ISA_LEVEL_SPEC): Likewise.
5073         (OPTION_DEFAULT_SPECS): Use MIPS_ARCH_OPTION_SPEC.
5074         * config/mips/elfoabi.h: New file.
5075
5076 2007-07-02  Richard Guenther  <rguenther@suse.de>
5077
5078         * tree-flow.h (tree_ssa_useless_type_conversion_1): Rename to ...
5079         (useless_type_conversion_p): ... this.
5080         * tree-ssa.c (tree_ssa_useless_type_conversion_1): Rename to ...
5081         (useless_type_conversion_p): ... this.
5082         * builtins.c (fold_builtin_memory_op): Rename
5083         tree_ssa_useless_type_conversion_1 to useless_type_conversion_p.
5084         * tree-cfg.c (verify_expr): Likewise.
5085         * tree-ssa-address.c (tree_ssa_useless_type_conversion_1): Likewise.
5086         * tree-ssa-ccp.c (ccp_fold): Likewise.
5087         * tree-ssa-copy.c (may_propagate_copy): Likewise.
5088         * tree-ssa-dom.c (eliminate_redundant_computations): Likewise.
5089         * tree-ssa-forwprop.c (forward_propagate_addr_expr_1): Likewise.
5090         * tree-ssa-loop-niter.c (refine_bounds_using_guard): Likewise.
5091         * tree-ssa-pre.c (eliminate): Likewise.
5092         * tree-ssa.c (delete_tree_ssa): Likewise.
5093         (tree_ssa_useless_type_conversion): Likewise.
5094         * tree.c (build2_stat): Likewise.
5095
5096 2007-07-01  Daniel Berlin  <dberlin@dberlin.org>
5097
5098         Fix PR tree-optimization/32571
5099         * tree-ssa-sccvn.c (visit_use): Shortcut copies to avoid
5100         simplifying them.
5101
5102 2007-07-01  Daniel Berlin  <dberlin@dberlin.org>
5103
5104         * tree-ssa-sccvn.c (copy_reference_ops_from_ref): Handle constants
5105         and other expected operations explicitly, change default to
5106         gcc_unreachable. 
5107
5108 2007-07-01  Daniel Jacobowitz  <dan@codesourcery.com>
5109
5110         * config/arm/arm.c (arm_cannot_copy_insn_p): Do not expect a
5111         PARALLEL.
5112         * config/arm/arm.md (pic_add_dot_plus_four, pic_add_dot_plus_eight)
5113         (tls_load_dot_plus_eight): Move the label number into the unspec.
5114         * config/arm/thumb2.md (pic_load_dot_plus_four): Likewise.
5115
5116 2007-07-01  Andreas Schwab  <schwab@suse.de>
5117
5118         * dwarf2out.c (initial_return_save): Define only if used.
5119
5120 2007-07-01  Kenneth Zadeck <zadeck@naturalbridge.com>
5121
5122         Unreverting Richard's Revert of:
5123
5124         2007-06-27  Richard Sandiford  <richard@codesourcery.com>
5125
5126         * dce.c (deletable_insn_p_1): New function, split out from...
5127         (deletable_insn_p): ...here.  Only treat bare USEs and CLOBBERs
5128         specially, not those inside PARALLELs.  Remove BODY argument
5129         and adjust recursive call accordingly.
5130         (prescan_insns_for_dce): Update call to delete_insn_p.
5131
5132 2007-07-01  Vladimir Yanovsky  <yanov@il.ibm.com>
5133             Revital Eres  <eres@il.ibm.com>
5134
5135         * ddg.c (create_ddg_all_sccs): Fix missed
5136         initialization of scc_nodes.
5137
5138 2007-07-01  Uros Bizjak  <ubizjak@gmail.com>
5139
5140         PR middle-end/32559
5141         * fold-const.c (fold-binary) [PLUS_EXPR]: Convert ~X + X to 1 or
5142         X + ~X to 1 only for INTEGRAL_TYPE_P type.
5143
5144 2007-06-30  Joseph Myers  <joseph@codesourcery.com>
5145
5146         * configure.ac: Check for .gnu_attribute on MIPS.
5147         * configure, config.in: Regenerate.
5148         * config/mips/mips.c (mips_file_start): If supported, output
5149         attribute for floating-point ABI.
5150
5151 2007-06-30  Uros Bizjak  <ubizjak@gmail.com>
5152
5153         PR target/32433
5154         * config/i386/i386.md (ffssi2): Expand as ffs_cmove for TARGET_CMOVE.
5155         (ffs_cmove): New expander to expand using ctz pattern.
5156         (*ffs_cmove): Remove pattern.
5157         (*ffs_no_cmove): Enable only for !TARGET_CMOVE.
5158         (ffsdi2): Expand using ctz pattern.
5159         (*ffs_rex64): Remove pattern.
5160
5161 2007-06-30  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
5162
5163         PR rtl-optimization/32296
5164         * pa.md (return): Delete pattern.
5165         (return_internal): Remove "(const_int 1)" from pattern.
5166         (epilogue): Use return_internal pattern for trivial returns.
5167         * pa-protos.h (hppa_can_use_return_insn_p): Delete declaration.
5168         * pa.c (hppa_can_use_return_insn_p): Delete function.  Include "df.h".
5169
5170 2007-06-30  Daniel Berlin  <dberlin@dberlin.org>
5171
5172         * tree-ssa-pre.c (is_exception_related): New function
5173         (can_value_number_operation): Use it.
5174
5175 2007-06-30  Daniel Berlin  <dberlin@dberlin.org>
5176         
5177         Fix PR tree-optimization/32540
5178         Fix PR tree-optimization/31651
5179
5180         * tree-ssa-sccvn.c: New file.
5181
5182         * tree-ssa-sccvn.h: Ditto.
5183         
5184         * tree-vn.c: Include tree-ssa-sccvn.h
5185         (val_expr_paid_d): Removed.
5186         (value_table): Ditto.
5187         (vn_compute): Ditto.
5188         (val_expr_pair_hash): Ditto.
5189         (val_expr_pair_expr_eq): Ditto.
5190         (copy_vuses_from_stmt): Ditto.
5191         (vn_delete): Ditto.
5192         (vn_init): Ditto.
5193         (shared_vuses_from_stmt): Ditto.
5194         (print_creation_to_file): Moved up.
5195         (sort_vuses): Ditto.
5196         (sort_vuses_heap): Ditto.
5197         (set_value_handle): Make non-static.
5198         (make_value_handle): Ditto.
5199         (vn_add): Rewritten to use sccvn lookups.
5200         (vn_add_with_vuses): Ditto.
5201         (vn_lookup): Ditto (and second argument removed).
5202         (vn_lookup_with_vuses): Ditto.
5203         (vn_lookup_or_add): Ditto (and second argument removed);
5204         (vn_lookup_or_add_with_vuses): Ditto.
5205         (vn_lookup_with_stmt): New.
5206         (vn_lookup_or_add_with_stmt): Ditto.
5207         (create_value_handle_for_expr): Ditto.
5208
5209         * tree-ssa-pre.c: Include tree-ssa-sccvn.h.
5210         (seen_during_translate): New function.
5211         (phi_trans_lookup): Use iterative_hash_expr, not vn_compute.
5212         (phi_trans_add): Ditto.
5213         (constant_expr_p): FIELD_DECL is always constant.
5214         (phi_translate_1): Renamed from phi_translate, add seen bitmap.
5215         Use constant_expr_p.
5216         Avoid infinite recursion on mutually valued expressions.
5217         Change callers of vn_lookup_or_add.
5218         (phi_translate): New function.
5219         (compute_antic_safe): Allow phi nodes.
5220         (create_component_ref_by_pieces): Update for FIELD_DECL change.
5221         (find_or_generate_expression): Rewrite slightly.
5222         (create_expression_by_pieces): Updated for vn_lookup_or_add
5223         change.
5224         Update VN_INFO for new names.
5225         (insert_into_preds_of_block): Update for new names.
5226         (add_to_exp_gen): New function.
5227         (add_to_sets): Use vn_lookup_or_add_with_stmt.
5228         (find_existing_value_expr): Rewrite to changed vn_lookup.
5229         (create_value_expr_from): Ditto, and use add_to_exp_gen.
5230         (try_look_through_load): Removed.
5231         (try_combine_conversion): Ditto.
5232         (get_sccvn_value): New function.
5233         (make_values_for_phi): Ditto.
5234         (make_values_for_stmt): Ditto.
5235         (compute_avail): Rewritten for vn_lookup_or_add changes and to use
5236         SCCVN.
5237         (init_pre): Update for SCCVN changes.
5238         (fini_pre): Ditto.
5239         (execute_pre): Ditto.
5240
5241         * tree-flow.h (make_value_handle): Declare.
5242         (set_value_handle): Ditto.
5243         (sort_vuses_heap): Ditto.
5244         (vn_lookup_or_add_with_stmt): Ditto.
5245         (vn_lookup_with_stmt): Ditto.
5246         (vn_compute): Remove.
5247         (vn_init): Ditto.
5248         (vn_delete): Ditto.
5249         (vn_lookup): Update arguments.
5250
5251         * Makefile.in (tree-ssa-pre.o): Add tree-ssa-sccvn.h
5252         (tree-vn.o): Ditto.
5253         (tree-ssa-sccvn.o): New.
5254         (OBJS-common): Add tree-ssa-sccvn.o
5255         
5256 2007-06-30  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
5257
5258         PR c/4076
5259         * c-typeck.c (build_external_ref): Don't mark as used if called
5260         from itself.
5261         * calls.c (rtx_for_function_call): Likewise.
5262         
5263 2007-06-30  Richard Sandiford  <richard@codesourcery.com>
5264
5265         Revert:
5266
5267         2007-06-27  Richard Sandiford  <richard@codesourcery.com>
5268
5269         * dce.c (deletable_insn_p_1): New function, split out from...
5270         (deletable_insn_p): ...here.  Only treat bare USEs and CLOBBERs
5271         specially, not those inside PARALLELs.  Remove BODY argument
5272         and adjust recursive call accordingly.
5273         (prescan_insns_for_dce): Update call to delete_insn_p.
5274
5275 2007-06-30  Rask Ingemann Lambertsen <rask@sygehus.dk>
5276
5277         * combine.c (combine_validate_cost): New parameter NEWOTHERPAT.
5278         (try_combine): Move potential calls to undo_all() so they happen
5279         before we commit to using the combined insns.
5280
5281 2006-06-30  Jan Hubicka  <jh@suse.cz>
5282
5283         * loop-unroll.c (unroll_loop_runtime_iterations): Unshare newly emit
5284         code.
5285
5286 2006-06-30  Thomas Neumann  <tneumann@users.sourceforge.net>
5287
5288         * ipa.c (cgraph_postorder): Cast according to the coding conventions.
5289         (cgraph_remove_unreachable_nodes): Likewise.
5290         * ipa-cp.c (ipcp_propagate_stage): Use BOTTOM instead of integer 0.
5291         * ipa-inline.c (update_caller_keys): Cast according to the coding
5292         conventions.
5293         (cgraph_decide_recursive_inlining): Likewise.
5294         (cgraph_decide_inlining_of_small_function): Likewise.
5295         (try_inline): Likewise.
5296         (cgraph_decide_inlining_incrementally): Likewise.
5297         * ipa-pure-const.c (get_function_state): Likewise.
5298         (scan_function): Likewise.
5299         (analyze_function): Likewise.
5300         (static_execute): Likewise.
5301         * gcc/ipa-reference.c (scan_for_static_refs): Likewise.
5302         (merge_callee_local_info): Likewise.
5303         (analyze_function): Use type safe memory macros.
5304         (static_execute): Likewise. Cast according to the coding conventions.
5305         * ipa-type-escape.c (scan_for_regs): Cast according to the coding
5306         conventions.
5307         * ipa-utils.c (searchc): Likewise. Avoid using C++ keywords as variable
5308         names.
5309         (ipa_utils_reduced_inorder): Likewise. Use type safe memory macros.
5310         * ipa-utils.h (struct ipa_dfa_info): Avoid using C++ keywords as
5311         variable names.
5312
5313 2007-06-29  Andrew Pinski  <andrew_pinski@playstation.sony.com>
5314
5315         PR middle-end/30024
5316         * emit-rtl.c (init_emit_once): Intilize const_tiny_rtx[0]
5317         for complex modes (both int and real).
5318
5319 2007-06-29  Jan Hubicka  <jh@suse.cz>
5320
5321         * cse.c: Rever accidentally comitted TODO_verify_rtl_sharing change.
5322
5323 2007-06-29  Jan Hubicka  <jh@suse.cz>
5324
5325         PR middle-end/32372
5326         * cse.c (cse_insn): Avoid invalid sharing in between register note and
5327         the insn pattern.
5328
5329 2007-06-29  Anatoly Sokolov <aesok@post.ru>
5330
5331         PR target/32335
5332         * config/avr/avr.c: Include dataflow header file.
5333         (expand_prologue): Adjust for prologue insn change.
5334         * config/avr/avr.md (call_prologue_saves): Only modify REG_SP once
5335         inside a insn.
5336
5337 2007-06-29  Richard Guenther  <rguenther@suse.de>
5338
5339         PR middle-end/32493
5340         * gimplify.c (gimplify_call_expr): Ignore variable argument parts
5341         during type verification.
5342
5343 2007-06-29  Jan Hubicka  <jh@suse.cz>
5344
5345         * recog.c (validate_change_rtx_1): Unshare TO argument.
5346
5347 2007-06-29  Uros Bizjak  <ubizjak@gmail.com>
5348
5349         PR tree-optimization/24659
5350         * tree-vect-transform.c (vectorizable_call): Handle
5351         (nunits_in == nunits_out / 2) and (nunits_out == nunits_in / 2) cases.
5352
5353         * config/i386/sse.md (vec_pack_sfix_v2df): New expander.
5354         * config/i386/i386.c (enum ix86_builtins)
5355         [IX86_BUILTIN_VEC_PACK_SFIX]: New constant.
5356         (struct bdesc_2arg) [__builtin_ia32_vec_pack_sfix]: New builtin
5357         description.
5358         (ix86_init_mmx_sse_builtins): Define all builtins with 2 arguments as
5359         const using def_builtin_const.
5360         (ix86_expand_binop_builtin): Remove bogus assert() that insn wants
5361         input operands in the same modes as the result.
5362         (ix86_builtin_vectorized_function): Handle BUILT_IN_LRINT.
5363
5364 2007-06-29  Richard Sandiford  <rsandifo@nildram.co.uk>
5365
5366         * df-problems.c (df_set_unused_notes_for_mw): Fix formatting.
5367         (df_set_dead_notes_for_mw): Likewise.
5368
5369 2007-06-29  Eric Botcazou  <ebotcazou@adacore.com>
5370
5371         * c-common.c (pointer_int_sum): Do the negation in sizetype.
5372
5373 2007-06-28  DJ Delorie  <dj@redhat.com>
5374
5375         * config/m32c/m32c.h (OVERRIDE_OPTIONS): Omit unneeded semicolon.
5376
5377 2007-06-28  Geoffrey Keating  <geoffk@apple.com>
5378
5379         * doc/invoke.texi (C++ Dialect Options): Document
5380         fvisibility-ms-compat.
5381         * c.opt (fvisibility-ms-compat): New.
5382
5383 2007-06-28  Andrew Pinski  <andrew_pinski@playstation.sony.com>
5384
5385         PR tree-opt/32417
5386         * tree-affine.c (aff_combination_add_elt): Handle
5387         pointer addition specially.
5388
5389 2007-06-28  Jakub Jelinek  <jakub@redhat.com>
5390
5391         * config/rs6000/rs6000.c (rs6000_function_ok_for_sibcall): Ensure
5392         decl is non-external for AIX ABI.
5393
5394 2007-06-28  David Edelsohn  <edelsohn@gnu.org>
5395
5396         * config/rs6000/predicates.md (current_file_function_operand):
5397         Ensure the symbol is non-external for AIX ABI.
5398
5399 2007-06-28  Nick Clifton  <nickc@redhat.com>
5400
5401         * common.opt (fipa-matrix-reorg): Add Optimization attribute.
5402         (fdce, fdse, fpredictive-commoning): Likewise.
5403
5404 2007-06-28 Francois-Xavier Coudert <fxcoudert@gcc.gnu.org>
5405
5406         PR other/31400
5407         * gcc.c (process_command): Recognize the new -static-libgfortran
5408         option.
5409
5410 2007-06-27  Rask Ingemann Lambertsen  <rask@sygehus.dk>
5411
5412         PR target/32418
5413         * config/m32c/m32c.c (m32c_eh_return_stackadj_rtx): Dataflow fix:
5414         Use a call clobbered hard reg instead of a pseudo reg.
5415
5416 2007-06-27  Kaz Kojima  <kkojima@gcc.gnu.org>
5417
5418         * config/sh/sh.md (load_gbr): Use correct operand constraint.
5419
5420 2007-06-27  Kaz Kojima  <kkojima@gcc.gnu.org>
5421
5422         PR target/32479
5423         * config/sh/sh.md (udivsi3): Don't wrap the sequence with
5424         REG_LIBCALL and REG_RETVAL notes.
5425         (divsi3, mulsi3): Likewise.
5426         (mulhisi3): Likewise.  Use emit_libcall_block.
5427         (umulhisi3, smulsi3_highpart, umulsi3_highpart_i): Likewise.
5428
5429 2007-06-27  Seongbae Park  <seongbae.park@gmail.com>
5430
5431         PR rtl-optimization/32481
5432         * combine.c (adjust_for_new_dest): Rescan the changed insn.
5433
5434 2007-06-27  Richard Sandiford  <richard@codesourcery.com>
5435
5436         * dce.c (deletable_insn_p_1): New function, split out from...
5437         (deletable_insn_p): ...here.  Only treat bare USEs and CLOBBERs
5438         specially, not those inside PARALLELs.  Remove BODY argument
5439         and adjust recursive call accordingly.
5440         (prescan_insns_for_dce): Update call to delete_insn_p.
5441
5442 2007-06-27  Richard Guenther  <rguenther@suse.de>
5443
5444         PR middle-end/32492
5445         * tree.h (fold_convertible_p): Declare.
5446         * fold-const.c (fold_convertible_p): New function.
5447         * gimplify.c (gimplify_call_expr): Use fold_convertible_p
5448         instead of lang_hooks.types_compatible_p.
5449
5450 2007-06-26  Jan Hubicka  <jh@suse.cz>
5451
5452         * fwprop.c (try_fwprop_subst): Use validate_unshare_change.
5453         * postreload.c (reload_cse_simplify_set): Instead of copying the rtx
5454         early use validate_unshare_change.
5455         (reload_combine): Likewise.
5456         * recog.c (change_t): New field unshare.
5457         (validate_change_1): Rename from validate_change; add argument unshare.
5458         (validate_change): Turn into wrapper of validate_change_1; update
5459         prototype for bools.
5460         (validate_unshare_change): New.
5461         (confirm_change_group): Unshare changes if asked for; avoid unnecesary
5462         calls of df_insn_rescan.
5463         * recog.h (validate_change): Replace ints by bools.
5464         (validate_unshare_change): Declare.
5465
5466 2007-06-26  Kenneth Zadeck <zadeck@naturalbridge.com>
5467
5468         * tree.def (VEC_WIDEN_MULT_LO_EXPR): Corrected string name.
5469         
5470 2007-06-26  Steve Ellcey  <sje@cup.hp.com>
5471
5472         * builtins.c (expand_builtin_next_arg): Change Pmode to ptr_mode.
5473
5474 2007-06-25  Jan Hubicka  <jh@suse.cz>
5475
5476         * ipa-inline.c (cgraph_mark_inline): Assert that we never inline
5477         uninlinable call.
5478         (cgraph_decide_inlining_of_small_function, cgraph_decide_inlining,
5479         cgraph_decide_inlining_incrementally): Move uninlinability checks to
5480         places other call site specific checks are performed.
5481
5482 2007-06-25  Andrew Pinski  <andrew_pinski@playstation.sony.com>
5483
5484         PR tree-opt/32421
5485         * tree-vect-transform.c (vectorizable_operation): Convert
5486         POINTER_PLUS_EXPR over to PLUS_EXPR.
5487
5488 2007-06-25  Chao-ying Fu  <fu@mips.com>
5489
5490         * doc/rtl.texi (Machine Modes): Document QQ, HQ, SQ, DQ, TQ,
5491         UQQ, UHQ, USQ, UDQ, UTQ, HA, SA, DA, TA, UHA, USA, UDA, and UTAmodes.
5492         Document MODE_FRACT, MODE_UFRACT, MODE_ACCUM, MODE_UACCUM.
5493         Document GET_MODE_IBIT, and GET_MODE_FBIT.
5494
5495         * machmode.h (VECTOR_MODE_P): Test MODE_VECTOR_FRACT,
5496         MODE_VECTOR_UFRACT, MODE_VECTOR_ACCUM, MODE_VECTOR_UACCUM.
5497         (SCALAR_FRACT_MODE_P, SCALAR_UFRACT_MODE_P, ALL_SCALAR_FRACT_MODE_P,
5498         SCALAR_ACCUM_MODE_P, SCALAR_UACCUM_MODE_P, ALL_SCALAR_ACCUM_MODE_P,
5499         SIGNED_SCALAR_FIXED_POINT_MODE_P, UNSIGNED_SCALAR_FIXED_POINT_MODE_P,
5500         ALL_SCALAR_FIXED_POINT_MODE_P, FRACT_MODE_P, UFRACT_MODE_P,
5501         ALL_FRACT_MODE_P, ACCUM_MODE_P, UACCUM_MODE_P, ALL_ACCUM_MODE_P,
5502         SIGNED_FIXED_POINT_MODE_P, UNSIGNED_FIXED_POINT_MODE_P,
5503         ALL_FIXED_POINT_MODE_P): New define.
5504         (CLASS_HAS_WIDER_MODES_P): Test MODE_FRACT, MODE_UFRACT, MODE_ACCUM,
5505         MODE_UACCUM.
5506         (GET_MODE_IBIT, GET_MODE_FBIT): New define.
5507
5508         * mode-classes.def (MODE_FRACT, MODE_UFRACT, MODE_ACCUM, MODE_UACCUM,
5509         MODE_VECTOR_FRACT, MODE_VECTOR_UFRACT, MODE_VECTOR_ACCUM,
5510         MODE_VECTOR_UACCUM): New mode classes.
5511
5512         * machmode.def: Document FRACT_MODE, UFRACT_MODE, ACCUM_MODE,
5513         UACCUM_MODE, ADJUST_IBIT, and ADJUST_FBIT.
5514         Add QQ, HQ, SQ, DQ, TQ, UQQ, UHQ, USQ, UDQ, UTQ, HA, SA, DA, TA, UHA,
5515         USA, UDA, and UTA.
5516
5517         * genmodes.c (struct mode_data): Add ibit and fbit fields.
5518         (blank_mode): Initialize ibit and fbit.
5519         (adj_ibit, adj_fbit): New to adjust ibit and fbit.
5520         (vector_class): Handle MODE_FRACT, MODE_UFRACT, MODE_ACCUM,
5521         MODE_UACCUM.
5522         (new_adjust): Change required_class to required_class_from and
5523         required_class_to for testing within a range.
5524         (complete_mode): Handle MODE_FRACT, MODE_UFRACT, MODE_ACCUM,
5525         MODE_UACCUM, MODE_VECTOR_FRACT, MODE_VECTOR_UFRACT, MODE_VECTOR_ACCUM,
5526         MODE_VECTOR_UACCUM.
5527         (FRACT_MODE, UFRACT_MODE, ACCUM_MODE, UACCUM_MODE): New define.
5528         (make_fixed_point_mode): New.
5529         (_ADD_ADJUST): Change C to C1 and C2.
5530         (ADJUST_BYTESIZE, ADJUST_ALIGNMENT, ADJUST_FLOAT_FORMAT): Change to
5531         use a range for machine classes.
5532         (ADJUST_IBIT, ADJUST_FBIT): New.
5533         (emit_insn_modes_h): Output defines of CONST_MODE_IBIT and
5534         CONST_MODE_FBIT.
5535         (emit_mode_adjustments): Handle MODE_VECTOR_FRACT, MODE_VECTOR_UFRACT,
5536         MODE_VECTOR_ACCUM, MODE_VECTOR_UACCUM.
5537         Emit adjustment for ibit and fbit.
5538         (emit_mode_ibit, emit_mode_fbit): New.
5539         (emit_insn_modes_c): Add emit_mode_ibit and emit_mode_fbit.
5540
5541 2007-06-25  Nathan Froyd  <froydnj@codesourcery.com>
5542
5543         * config/rs6000/spe.md (*frob_ti_tf_2): Specify an input_operand
5544         as the source of the set.
5545
5546 2007-06-25  Roman Zippel <zippel@linux-m68k.org>
5547
5548         * config/m68k/m68k.h (DATA_REGNO_P, ADDRESS_REGNO_P, INT_REGNO_P,
5549         FP_REGNO_P): Use IN_RANGE.
5550         (REGNO_OK_FOR_DATA_P, REGNO_OK_FOR_FP_P): Remove.
5551         (REGNO_OK_FOR_INDEX_NONSTRICT_P, REGNO_OK_FOR_BASE_NONSTRICT_P): New.
5552         (DATA_REG_P): Use DATA_REGNO_P.
5553         (FP_REG_P): Use FP_REGNO_P.
5554         (ADDRESS_REG_P): Use ADDRESS_REGNO_P.
5555         * config/m68k/m68k.c (m68k_legitimate_base_reg_p): Use
5556         REGNO_OK_FOR_INDEX_NONSTRICT_P, REGNO_OK_FOR_BASE_NONSTRICT_P.
5557
5558 2007-06-24  Jan Hubicka  <jh@suse.cz>
5559
5560         PR middle-end/30563
5561         * cgraphunit.c (cgraph_analyze_function): Fix ordering problem.
5562
5563 2007-06-24  Sebastian Pop  <sebpop@gmail.com>
5564
5565         PR middle-end/32461
5566         * fold-const.c (fold_binary): Strip nops of operand 0
5567         of BIT_NOT_EXPR before calling operand_equal_p.
5568         * testsuite/gcc.dg/tree-ssa/pr32461-1.c: New.
5569         * testsuite/gcc.dg/tree-ssa/pr32461-2.c: New.
5570
5571 2007-06-23  Mark Mitchell  <mark@codesourcery.com>
5572
5573         * doc/extend.texi: Document that dllimport and dllexport imply
5574         default visibility.
5575         * tree.c (handle_dll_attribute): Set DECL_VISIBILITY on the
5576         imported or exported declaration, including type declarations.
5577         * c-common.c (handle_visibility_attribute): Check for conflicts
5578         with dllimport/dllexport.
5579         (c_determine_visibility): Handle dllimport/dllexport as an
5580         explicit visibility atttribute.
5581
5582 2007-06-23  Richard Guenther  <rguenther@suse.de>
5583
5584         PR tree-optimization/16876
5585         PR middle-end/29478
5586         * tree.h (CALL_CANNOT_INLINE_P): New macro to access static_flag
5587         for CALL_EXPRs.
5588         * tree-inline.c (initialize_inlined_parameters): Do not call
5589         lang_hooks.tree_inlining.convert_parm_for_inlining.
5590         * cgraphbuild.c (initialize_inline_failed): Set inline failed
5591         reason for mismatched types.
5592         * gimplify.c (gimplify_call_expr): Verify the call expression
5593         arguments match the called function type signature.  Otherwise
5594         mark the call expression to be not considered for inlining
5595         using CALL_CANNOT_INLINE_P flag.
5596         * ipa-inline.c (cgraph_mark_inline): Honor CALL_CANNOT_INLINE_P on the
5597         edges call expression.
5598         (cgraph_decide_inlining_of_small_function): Likewise.
5599         (cgraph_decide_inlining): Likewise.
5600         * c-objc-common.h (LANG_HOOKS_TREE_INLINING_CONVERT_PARM_FOR_INLINING):
5601         Remove define.
5602         * c-tree.h (c_convert_parm_for_inlining): Remove declaration.
5603         * c-typeck.c (c_convert_parm_for_inlining): Remove.
5604         * langhooks-def.h (lhd_tree_inlining_convert_parm_for_inlining):
5605         Remove declaration.
5606         (LANG_HOOKS_TREE_INLINING_CONVERT_PARM_FOR_INLINING): Remove define.
5607         * langhooks.c (lhd_tree_inlining_convert_parm_for_inlining):
5608         Remove.
5609         * langhooks.h (struct lang_hooks_for_tree_inlining): Remove
5610         convert_parm_for_inlining member.
5611
5612 2007-06-23  Richard Earnshaw  <rearnsha@arm.com>
5613
5614         PR target/31152
5615         * arm.md (negscc): Match the correct operand for optimized LT0 test.
5616         Remove optimization for GT.
5617
5618 2007-06-23  Kenneth Zadeck <zadeck@naturalbridge.com>
5619
5620         PR middle-end/32437
5621         * dce.c (deletable_insn_p): Add extra parameter and recurse if insn
5622         is a PARALLEL.
5623         (prescan_insns_for_dce): Add extra parameter.
5624         
5625 2007-06-23  Jan Hubicka  <jh@suse.cz>
5626
5627         PR middle-end/31541
5628         * gimplify.c (mark_addressable): New function.
5629         (gimplify_modify_expr_rhs, gimplify_addr_expr, gimplify_expr): Use it.
5630
5631 2007-06-22  Uros Bizjak  <ubizjak@gmail.com>
5632
5633         PR middle-end/32374
5634         * expr.c (store_constructor): Do not clobber non-zeroed memory. 
5635
5636 2007-06-22  Uros Bizjak  <ubizjak@gmail.com>
5637
5638         PR target/32413
5639         * config/i386/i386.c (ix86_register_move_cost): Rise the cost of
5640         moves between MMX/SSE registers to at least 8 units to prevent
5641         ICE caused by non-tieable SI/HI/QImodes in SSE registers. 
5642
5643 2007-06-22  Uros Bizjak  <ubizjak@gmail.com>
5644
5645         * config/i386/i386.c (override_options): Correct x86_sahf
5646         setting condition.
5647
5648 2007-06-21  David Daney  <ddaney@avtrex.com>
5649
5650         PR target/32406
5651         * config/mips/mips.md (define_constants): Rename UNSPEC_EH_RECEIVER
5652         to UNSPEC_NONLOCAL_GOTO_RECEIVER globally.
5653         (exception_receiver): Renamed to ...
5654         (nonlocal_goto_receiver): ... this.
5655
5656 2007-06-22  Roman Zippel <zippel@linux-m68k.org>
5657
5658         * df-scan.c (df_read_modify_subreg_p): Use REGMODE_NATURAL_SIZE.
5659         (df_def_record_1): Set (DF_REF_READ_WRITE | DF_REF_PARTIAL) for
5660         partial register accesses.
5661
5662 2007-06-21  Adam Nemet  <anemet@caviumnetworks.com>
5663
5664         * fold-const.c (debug_fold_checksum): Move it under
5665         ENABLE_FOLD_CHECKING.
5666
5667 2007-06-21  Sebastian Pop  <sebpop@gmail.com>
5668
5669         PR middle-end/20623
5670         * tree.h (debug_fold_checksum): Declared.
5671         * fold-const.c (build_fold_addr_expr_with_type_1): New.
5672         (build_fold_addr_expr_with_type, build_fold_addr_expr): Use 
5673         build_fold_addr_expr_with_type_1.
5674         (fold_addr_expr, debug_fold_checksum): New.
5675         (fold_checksum_tree): Don't fold TREE_CHAIN of an SSA_NAME.
5676         (fold_unary, fold_comparison, split_address_to_core_and_offset):
5677         Use fold_addr_expr.
5678         
5679 2007-06-21  Sebastian Pop  <sebpop@gmail.com>
5680
5681         PR tree-optimization/19590
5682         * tree-vrp.c (adjust_range_with_scev): Set the range when the result
5683         of scev is a constant.
5684         * gcc/testsuite/gcc.dg/tree-ssa/pr19590.c: New.
5685
5686 2007-06-21  Kenneth Zadeck <zadeck@naturalbridge.com>
5687
5688         * df-problems.c (df_note_bb_compute): Made computation of live
5689         info consistent with df_lr.
5690
5691 2007-06-21  Richard Guenther  <rguenther@suse.de>
5692
5693         PR tree-optimization/32453
5694         * tree-vrp.c (extract_range_from_assert): Build POINTER_PLUS_EXPR
5695         for pointer anti-range.
5696
5697 2007-06-21  H.J. Lu  <hongjiu.lu@intel.com>
5698
5699         * config/i386/i386.c (processor_target_table): Increase maximum
5700         skip from 7 byte to 10 byte for Pentium Pro, Core 2 Duo and
5701         default 64bit.
5702
5703         * config/i386/linux.h (ASM_OUTPUT_MAX_SKIP_ALIGN): Ensure 8
5704         byte alignment if > 8 byte alignment is preferred.
5705         * config/i386/x86-64.h (ASM_OUTPUT_MAX_SKIP_ALIGN): Likewise.
5706
5707 2007-06-21  Jakub Jelinek  <jakub@redhat.com>
5708
5709         PR tree-optimization/31866
5710         * tree-ssa-coalesce.c (create_outofssa_var_map): Do nothing
5711         if ASM_EXPR's input is not a SSA_NAME.
5712
5713         PR middle-end/32362
5714         * omp-low.c (lookup_decl_in_outer_ctx): Don't ICE if t is NULL,
5715         but decl is a global var, instead return decl.
5716         * gimplify.c (gimplify_adjust_omp_clauses_1): Add shared clauses
5717         even for is_global_var decls, if they are private in some outer
5718         context.
5719
5720 2007-06-21  Richard Guenther  <rguenther@suse.de>
5721
5722         PR tree-optimization/32451
5723         * tree-ssa-threadupdate.c (thread_single_edge): Fixup edge flags.
5724
5725 2007-06-21  Christian Bruel  <christian.bruel@st.com>
5726
5727         * config/sh/sh-protos.h (sh_loads_bankedreg_p): Declare.
5728         * config/sh/sh.c (sh_loads_bankedreg_p): New function.
5729         (push_regs): Changed saving order or banked registers.
5730         (sh_expand_epilogue): Likewise.
5731         * config/sh/sh.h (BANKED_REGISTER_P): New macro.
5732         (FIRST_BANKED_REG): Likewise.
5733         (LAST_BANKED_REG): Likewise.
5734         * config/sh/sh.md (banked) New attribute.
5735         (in_delay_slot): Check banked attribute.
5736         
5737 2007-06-20  Sebastian Pop  <sebpop@gmail.com>
5738
5739         PR tree-optimization/32075
5740         * tree-data-ref.c (subscript_dependence_tester_1, 
5741         analyze_miv_subscript, analyze_overlapping_iterations,
5742         add_distance_for_zero_overlaps, build_classic_dist_vector,
5743         subscript_dependence_tester_1, analyze_overlapping_iterations,
5744         subscript_dependence_tester, access_functions_are_affine_or_constant_p,
5745         compute_affine_dependence, compute_all_dependences): Pass loop_nest 
5746         to evolution_function_is_affine_multivariate_p.
5747
5748 2007-06-20  Eric Botcazou  <ebotcazou@libertysurf.fr>
5749
5750         * df-scan.c (df_get_call_refs): Be prepared for MEMs inside CLOBBERs.
5751
5752 2007-06-20  Rask Ingemann Lambertsen  <rask@sygehus.dk>
5753
5754         PR target/32335
5755         * config/m32c/m32c.c (m32c_emit_epilogue): Use new HImode epilogue
5756         for TARGET_A16.
5757         * config/m32c/prologue.md (epilogue_exitd_16): New.
5758         (epilogue_reit_16): New.
5759         (epilogue_exitd): Rename to epilogue_exitd_24.
5760         (epilogue_reit): Rename to epilogue_reit_24.
5761
5762 2007-06-20  Seongbae Park  <seongbae.park@gmail.com>
5763             Maxim Kuvyrkov  <mkuvyrkov@ispras.ru>
5764
5765         * dbgcnt.def (global_alloc_at_func, global_alloc_at_reg):
5766         New counters.
5767         * haifa-sched.c (queue_to_ready): Don't requeue next insn
5768         if dbg_cnt (sched_insn) reaches the limit.
5769         (choose_ready): New parameter INSN_PTR and new return value.
5770         (schedule_block): Handle dbg_cnt (sched_insn). Handle
5771         the new return value from choose_ready.
5772         * global.c (global_aloc): New dbgcnt global_alloc_at_reg.
5773         (rest_of_handle_global_alloc): New global_alloc_at_func.
5774
5775 2007-06-20  Adam Nemet  <anemet@caviumnetworks.com>
5776
5777         PR tree-optimization/25737
5778         * tree.h (struct tree_struct_field_tag): Add new field alias_set.
5779         (SFT_NONADDRESSABLE_P, SFT_ALIAS_SET): New macros.
5780         * tree-flow.h (struct fieldoff): Add new field alias_set.
5781         * tree-ssa-structalias.c (push_fields_onto_fieldstack): Add new
5782         argument addressable_type.  Set alias_set of fieldoff.
5783         * tree-ssa-alias.c (create_sft): Add new argument alias_set.
5784         (create_overlap_variables_for): Pass alias_set from fieldoff to
5785         create_sft.
5786         * alias.c (get_alias_set): Use alias_set from SFT if set.
5787
5788 2007-06-20  Hui-May Chang  <hm.chang@apple.com>
5789
5790         * config/i386/darwin.h (ASM_OUTPUT_COMMON): Print the size
5791         of a variable as an unsigned HOST_WIDE_INT integer.
5792
5793 2007-06-20  Zdenek Dvorak  <dvorakz@suse.cz>
5794
5795         PR rtl-optimization/32405
5796         * loop-iv.c (iv_get_reaching_def): Fail for partial defs.
5797
5798 2007-06-20  Jakub Jelinek  <jakub@redhat.com>
5799
5800         * Makefile.in (omega.o): Depend on $(DIAGNOSTIC_H).
5801
5802         PR middle-end/31959
5803         * builtins.c: Include diagnostic.h.
5804         (expand_builtin_expect): Make gcc_assert more permissive.
5805         * Makefile.in (builtins.o): Depend on $(DIAGNOSTIC_H).
5806
5807         PR inline-asm/32109
5808         * gimplify.c (gimplify_asm_expr): Issue error if type is addressable
5809         and !allows_mem.
5810
5811         PR middle-end/32285
5812         * calls.c (precompute_arguments): Also precompute CALL_EXPR arguments
5813         if ACCUMULATE_OUTGOING_ARGS.
5814
5815 2007-06-19  Rask Ingemann Lambertsen  <rask@sygehus.dk>
5816
5817         * config/m68hc11/m68hc11.c: Include dataflow header file.
5818         (m68hc11_reorg): Port to dataflow.
5819
5820 2007-06-19  Kenneth Zadeck <zadeck@naturalbridge.com>
5821
5822         * df.h (DF_FIRST_OPTIONAL_PROBLEM): Removed.
5823         (struct df_problem.free_blocks_on_set_blocks): New field.
5824         (struct dataflow.optional_p): New field.
5825         (df_bb_regno_last_use_find, df_insn_regno_def_p): Removed.
5826         (df_live_set_all_dirty): New function.
5827         * df-scan.c (df_scan_alloc): Initialize optional_p.
5828         (problem_SCAN): Initialize free_blocks_on_set_blocks.
5829         * df-core.c (df_set_blocks): Removed use of
5830         DF_FIRST_OPTIONAL_PROBLEM.  Now uses
5831         df_problem.free_blocks_on_set_blocks to determine which blocks are
5832         recycled.
5833         (df_remove_problem): Removed use of DF_FIRST_OPTIONAL_PROBLEM.
5834         (df_finish_pass): Removed use of DF_FIRST_OPTIONAL_PROBLEM.  Now
5835         uses dataflow.optional_p to determine if problem should be
5836         deleted.
5837         (rest_of_handle_df_initialize): Only start live problem if 
5838         -02 or above.
5839         (df_bb_regno_last_use_find, df_insn_regno_def_p): Removed.
5840         * df-problems.c (df_ru_alloc, df_rd_alloc, df_lr_alloc,
5841         df_live_alloc, df_urec_alloc, df_note_alloc): set optional_p.
5842         (problem_RU, problem_RD, problem_LR, problem_UREC, problem_CHAIN,
5843         problem_NOTE):  Initialize free_blocks_on_set_blocks.
5844         (df_lr_bb_local_compute): Recompute luids if df_live problem is
5845         not active.
5846         (df_live_set_all_dirty, df_note_alloc): New function.
5847         * regrename.c (merge_overlapping_regs): Change DF_LIVE_* to
5848         df_get_live_*.
5849         * sched_ebb.c (compute_jump_reg_dependencies): Ditto.
5850         * postreload.c (reload_combine): Ditto.
5851         * cse.c (cse_extended_basic_block): Ditto.
5852         * regmove.c (mark_flags_life_zones): Ditto.
5853         * rtlfactoring.c (split_blocks_after_seqs, split_pattern_seq,
5854         erase_matching_seqs): Ditto.
5855         * bt-load.c (compute_defs_uses_and_gen): Ditto.
5856         * integrate (allocate_initial_values): Ditto.
5857         * combine.c (reg_dead_at_p): Ditto.
5858         * resource.c (mark_target_live_regs): Ditto.
5859         * sched-rgn.c (check_live_1, update_live_1): Ditto.
5860         * config/sh/sh.c (find_r0_life_regions): Ditto.
5861         * global.c (rest_of_handle_global_alloc): Only add back df_live
5862         for -O > 1.
5863         * local-alloc.c (rest_of_handle_local_alloc): Only remove
5864         df_live for -O > 1.
5865         * ifcvt.c (dead_or_predicable): Change DF_LIVE_* to
5866         df_get_live_*.
5867         (if_convert): Make sure df_live is there at -O == 1.
5868         (pass_if_after_combine): Cleanup flags.
5869         * init-regs.c (initialize_uninitialized_regs): Make sure df_live
5870         is there at -O == 1.
5871         
5872 2007-06-19  Seongbae Park  <seongbae.park@gmail.com>
5873
5874         * config/arm/arm.c (arm_get_frame_offsets): Set
5875         offsets->locals_base to avoid negative stack size.
5876         (thumb1_expand_prologue): Assert on negative stack size.
5877
5878 2007-06-19  Sebastian Pop  <sebpop@gmail.com>
5879
5880         PR tree-optimization/32367
5881         * tree-chrec.h (build_polynomial_chrec): Verify that the left hand side 
5882         of the chrec has no evolution in that loop.
5883         * testsuite/gcc.dg/tree-ssa/pr32367.c: New.
5884
5885 2007-06-19  Bob Wilson  <bob.wilson@acm.org>
5886
5887         * config/xtensa/xtensa.c: Include "df.h".
5888         (xtensa_builtin_saveregs): Use adjust_address instead of
5889         change_address.
5890         (xtensa_va_start): Invoke make_tree with sizetype for
5891         expand_builtin_saveregs and then convert the result to a pointer.
5892         Use POINTER_PLUS_EXPR.  Use size_int instead of build_int_cst.
5893         (xtensa_gimplify_va_arg_expr): Use size_int instead of build_int_cst.
5894         Subtract argument size from index value as integers and then use
5895         POINTER_PLUS_EXPR to add the result to the array address.
5896         
5897 2007-06-19  Rask Ingemann Lambertsen  <rask@sygehus.dk>
5898
5899         PR target/32335
5900         * config/m32c/m32c.c: Include dataflow header file.
5901         (m32c_emit_prologue): Adjust for prologue insn change.
5902         * config/m32c/prologue.md (prologue_enter_16): Only modify SP_REGNO
5903         once inside a PARALLEL. Assume frame size passed in operand 0
5904         includes space to save the fb register.
5905         (prologue_enter_24): Likewise.
5906         (epilogue_exitd): Only modify SP_REGNO once inside a PARALLEL.
5907
5908 2007-06-19  David Daney  <ddaney@avtrex.com
5909
5910         PR target/32313
5911         * config/mips/mips.md (cprestore): Mark $gp as used.
5912
5913 2007-06-19  Rask Ingemann Lambertsen  <rask@sygehus.dk>
5914
5915         PR target/32369
5916         * config/frv/frv.c (frv_ifcvt_modify_tests): Dataflow merge fix.
5917         (frv_ifcvt_modify_insn): Likewise.
5918
5919 2007-06-19  Richard Guenther  <rguenther@suse.de>
5920
5921         * tree-ssa-structalias.c (handle_ptr_arith): Make sure to
5922         only handle positive offsets that fit in a HOST_WIDE_INT.
5923
5924 2007-06-19  Uros Bizjak  <ubizjak@gmail.com>
5925
5926         * config/i386/i386.c (ix86_emit_swsqrtsf): Filter out infinity
5927         result of rsqrt insn for zero input argument to avoid NaN.
5928
5929 2007-06-19  Richard Guenther  <rguenther@suse.de>
5930
5931         PR middle-end/31950
5932         * tree-ssa-alias-warnings.c (ffan_walker): Punt on MTAGs.
5933
5934 2007-06-19  Jakub Jelinek  <jakub@redhat.com>
5935
5936         PR tree-optimization/32353
5937         * tree-ssa-structalias.c (set_uids_in_ptset): Also handle RESULT_DECL.
5938
5939 2007-06-19  Nick Clifton  <nickc@redhat.com>
5940
5941         * config/m32r/linux.h (LIB_SPEC): Always imply -lpthread for -pthread.
5942
5943 2007-06-18  Uros Bizjak  <ubizjak@gmail.com>
5944
5945         PR target/32389
5946         * config/i386/i386.h (enum ix86_stack_slot): Add SLOT_VIRTUAL.
5947         * config/i386/i386.c (assign_386_stack_local): Assert that
5948         SLOT_VIRTUAL is valid only before virtual regs are instantiated.
5949         (ix86_expand_builtin) [IX86_BUILTIN_LDMXCSR, IX86_BUILTIN_STMXCSR]:
5950         Use SLOT_VIRTUAL stack slot instead of SLOT_TEMP.
5951         * config/i386/i386.md (truncdfsf2, truncxf<mode>2): Ditto.
5952
5953 2007-06-18  Steve Ellcey  <sje@cup.hp.com>
5954
5955         * config/ia64/ia64.h (LIBGCC2_TF_CEXT): New.
5956
5957 2007-06-18  Seongbae Park  <seongbae.park@gmail.com>
5958
5959         PR rtl-optimization/32321
5960         * gcse.c (replace_store_insn): Update the note before
5961         calling emit_insn_after.
5962
5963 2007-06-18  Kenneth Zadeck <zadeck@naturalbridge.com>
5964
5965         PR middle-end/32355
5966         * gcse (rest_of_handle_gcse): Add call to df_finish_pass after
5967         cse_main.
5968         * df-problems.c (df_note_bb_compute): Fix dumping info.
5969         
5970 2007-06-18  Kazu Hirata  <kazu@codesourcery.com>
5971
5972         * config/m68k/m68k.c (m68k_expand_epilogue): Emit a return
5973         insn with emit_jump_insn.
5974
5975 2007-06-18  Uros Bizjak  <ubizjak@gmail.com>
5976
5977         PR tree-optimization/32383
5978         * targhooks.c (default_builtin_reciprocal): Add new bool argument.
5979         * targhooks.h (default_builtin_reciprocal): Update prototype.
5980         * target.h (struct gcc_target): Update builtin_reciprocal.
5981         * doc/tm.texi (TARGET_BUILTIN_RECIPROCAL): Update description.
5982         * tree-ssa-math-opts (execute_cse_reciprocals): Skip statements
5983         where arg1 is not SSA_NAME.  Pass true to targetm.builtin_reciprocal
5984         when fndecl is in BUILT_IN_MD class.
5985         (execute_convert_to_rsqrt): Ditto.
5986
5987         * config/i386/i386.c (ix86_builtin_reciprocal): Update for new bool
5988         argument.  Convert IX86_BUILTIN_SQRTPS code only when md_fn is true.
5989         Convert BUILT_IN_SQRTF code only  when md_fn is false.
5990
5991 2007-06-18  Kaz Kojima  <kkojima@gcc.gnu.org>
5992
5993         * bt-load.c (move_btr_def): Fix the order of arguments
5994         to validate_replace_rtx.
5995
5996 2007-06-18  Nathan Sidwell  <nathan@codesourcery.com>
5997
5998         * config/m68k/m68k-devices.def: Add 54450..54455.
5999
6000 2007-06-17  Uros Bizjak  <ubizjak@gmail.com>
6001
6002         PR rtl-optimization/32366
6003         * simplify-rtx.c (simplify_unary_operation_1) [FLOAT_TRUNCATE,
6004         FLOAT_EXTEND]: Prevent non-scalar modes from entering
6005         significand_size.
6006
6007 2007-06-17  Kenneth Zadeck <zadeck@naturalbridge.com>
6008
6009         PR middle-end/32349
6010         * modulo-sched (generate_reg_moves): Added rescan parameter and if
6011         this is true, rescan insn being modified.
6012         (sms_schedule): Added rescan parameter.
6013         (rest_of_handle_sms): Moved freeing of dominance info to before
6014         getting out of cfg_layout.
6015         
6016 2007-06-17  Nathan Sidwell  <nathan@codesourcery.com>
6017
6018         * config/m68k/m68k.h (ISA_HAS_FF1, ISA_HAS_MVS_MVZ): New.
6019         * config/m68k/m68k.md: Use ISA_HAS_FF1 and ISA_HAS_MVS_MVZ as
6020         appropriate.
6021
6022         * config/m68k/m68k.c (all_isas): Remove FL_CF_FPU and
6023         FL_CF_EMAC from the entry for isac.
6024
6025         * config/m68k/predicates.md (const_call_operand): Adjust comment.
6026         (const_sibcall_operand): New.
6027         (sibcall_operand): Use it.
6028         * config/m68k/m68k.c (FL_FOR_isa_c): Not ISA_B compatible.
6029         (m68k_isas): ISAC does not imply FPU or EMAC.
6030         (override_options): Add ISA_C logic for symbolic jump & call.
6031
6032 2007-06-17  Eric Botcazou  <ebotcazou@libertysurf.fr>
6033
6034         * config/sparc/sparc.c (sparc_vis_init_builtins): Retrieve the
6035         return mode from the builtin itself.
6036         (sparc_fold_builtin): Fix cast of zero constant.
6037
6038 2007-06-16  Uros Bizjak  <ubizjak@gmail.com>
6039
6040         * targhooks.c (default_builtin_reciprocal): New default target hook.
6041         * targhooks.h (default_builtin_reciprocal): Add prototype.
6042         * hooks.c (hook_tree_tree_bool_null): Remove hook.
6043         * hooks.h (hook_tree_tree_bool_null): Remove prototype.
6044         * target-def.h (TARGET_BUILTIN_RECIPROCAL): Define as
6045         default_builtin_reciprocal.
6046
6047 2007-06-16  Uros Bizjak  <ubizjak@gmail.com>
6048
6049         PR middle-end/31723
6050         * hooks.c (hook_tree_tree_bool_null): New hook.
6051         * hooks.h (hook_tree_tree_bool_null): Add prototype.
6052         * tree-pass.h (pass_convert_to_rsqrt): Declare.
6053         * passes.c (init_optimization_passes): Add pass_convert_to_rsqrt.
6054         * tree-ssa-math-opts.c (execute_cse_reciprocals): Scan for a/func(b)
6055         and convert it to reciprocal a*rfunc(b).
6056         (execute_convert_to_rsqrt): New function.
6057         (gate_convert_to_rsqrt): New function.
6058         (pass_convert_to_rsqrt): New pass definition.
6059         * target.h (struct gcc_target): Add builtin_reciprocal.
6060         * target-def.h (TARGET_BUILTIN_RECIPROCAL): New define.
6061         (TARGET_INITIALIZER): Initialize builtin_reciprocal with
6062         TARGET_BUILTIN_RECIPROCAL.
6063         * doc/tm.texi (TARGET_BUILTIN_RECIPROCAL): Document.
6064
6065         * config/i386/i386.h (TARGET_RECIP): New define.
6066         * config/i386/i386.md (divsf3): Expand by calling ix86_emit_swdivsf
6067         for TARGET_SSE_MATH and TARGET_RECIP when flag_finite_math_only and
6068         flag_unsafe_math_optimizations are set, flag_trapping_math is unset
6069         and not optimizing for size.
6070         (*rcpsf2_sse): New insn pattern.
6071         (*rsqrtsf2_sse): Ditto.
6072         (rsqrtsf2): New expander.  Expand by calling ix86_emit_swsqrtsf
6073         for TARGET_SSE_MATH and TARGET_RECIP when flag_finite_math_only and
6074         flag_unsafe_math_optimizations are set, flag_trapping_math is unset
6075         and not optimizing for size.
6076         (sqrt<mode>2): Expand SFmode operands by calling ix86_emit_swsqrtsf
6077         for TARGET_SSE_MATH and TARGET_RECIP when flag_finite_math_only and
6078         flag_unsafe_math_optimizations are set, flag_trapping_math is unset
6079         and not optimizing for size.
6080         * config/i386/sse.md (divv4sf): Expand by calling ix86_emit_swdivsf
6081         for TARGET_SSE_MATH and TARGET_RECIP when flag_finite_math_only and
6082         flag_unsafe_math_optimizations are set, flag_trapping_math is unset
6083         and not optimizing for size.
6084         (*sse_rsqrtv4sf2): Do not export.
6085         (sqrtv4sf2): Ditto.
6086         (sse_rsqrtv4sf2): New expander.  Expand by calling ix86_emit_swsqrtsf
6087         for TARGET_SSE_MATH and TARGET_RECIP when flag_finite_math_only and
6088         flag_unsafe_math_optimizations are set, flag_trapping_math is unset
6089         and not optimizing for size.
6090         (sqrtv4sf2): Ditto.
6091         * config/i386/i386.opt (mrecip): New option.
6092         * config/i386/i386-protos.h (ix86_emit_swdivsf): Declare.
6093         (ix86_emit_swsqrtsf): Ditto.
6094         * config/i386/i386.c (IX86_BUILTIN_RSQRTF): New constant.
6095         (ix86_init_mmx_sse_builtins): __builtin_ia32_rsqrtf: New
6096         builtin definition.
6097         (ix86_expand_builtin): Expand IX86_BUILTIN_RSQRTF using
6098         ix86_expand_unop1_builtin.
6099         (ix86_emit_swdivsf): New function.
6100         (ix86_emit_swsqrtsf): Ditto.
6101         (ix86_builtin_reciprocal): New function.
6102         (TARGET_BUILTIN_RECIPROCAL): Use it.
6103         (ix86_vectorize_builtin_conversion): Rename from
6104         ix86_builtin_conversion.
6105         (TARGET_VECTORIZE_BUILTIN_CONVERSION): Use renamed function.
6106         * doc/invoke.texi (Machine Dependent Options): Add -mrecip to
6107         "i386 and x86_64 Options" section.
6108         (Intel 386 and AMD x86_64 Options): Document -mrecip.
6109
6110 2007-06-15  Andrew Pinski <andrew_pinski@playstation.sony.com>
6111             Zdenek Dvorak <dvorakz@suse.cz>
6112             Richard Guenther  <rguenther@suse.de>
6113             Kaz Kojima  <kkojima@gcc.gnu.org>
6114
6115         * tree-vrp.c (compare_values_warnv): Convert val2 to
6116         the type of val1.
6117         (extract_range_from_assert): Create
6118         POINTER_PLUS_EXPR for pointer types.
6119         (extract_range_from_binary_expr): Handle
6120         only POINTER_PLUS_EXPR, MIN_EXPR, and MAX_EXPR
6121         for pointer types.
6122         * doc/c-tree.texi (POINTER_PLUS_EXPR): Document.
6123         * tree-ssa-loop-niter.c (split_to_var_and_offset): Handle
6124         POINTER_PLUS_EXPR as PLUS_EXPR.
6125         (number_of_iterations_lt_to_ne):
6126         For pointer types, use sizetype when
6127         creating MINUS_EXPR/PLUS_EXPRs.
6128         (assert_loop_rolls_lt): For pointer types, use sizetype when
6129         creating MINUS_EXPR/PLUS_EXPRs.
6130         (number_of_iterations_le): Likewise.
6131         (expand_simple_operations): POINTER_PLUS_EXPR are simple also.
6132         (derive_constant_upper_bound): Handle POINTER_PLUS_EXPR just
6133         like PLUS_EXPR and MINUS_EXPR.
6134         * tree-pretty-print.c (dump_generic_node): Handle
6135         POINTER_PLUS_EXPR.
6136         (op_prio): Likewise.
6137         (op_symbol_1): Likewise.
6138         * optabs.c (optab_for_tree_code): Likewise.
6139         * tree-ssa-loop-manip.c (create_iv): Handle pointer base
6140         specially.
6141         * tree-tailcall.c (process_assignment): Mention
6142         POINTER_PLUS_EXPR in a TODO comment.
6143         * tree.c (build2_stat): Assert when trying to use PLUS_EXPR or 
6144         MINUS_EXPR with a pointer. Also assert for POINTER_PLUS_EXPR
6145         not used with a pointer and an integer type.
6146         * tree-scalar-evolution.c (add_to_evolution_1): Convert the
6147         increment using chrec_convert_rhs instead of chrec_convert.
6148         (follow_ssa_edge_in_rhs): Handle POINTER_PLUS_EXPR like
6149         PLUS_EXPR except for the right hand side's type will be
6150         sizetype.
6151         (interpret_rhs_modify_stmt): Handle POINTER_PLUS_EXPR.
6152         (fold_used_pointer_cast): Kill.
6153         (pointer_offset_p): Kill.
6154         (fold_used_pointer): Kill.
6155         (pointer_used_p): Kill.
6156         (analyze_scalar_evolution_1 <case GIMPLE_MODIFY_STMT>): Don't
6157         call fold_used_pointer.
6158         (instantiate_parameters_1): Convert the increment
6159         using chrec_convert_rhs instead of chrec_convert.
6160         Handle POINTER_PLUS_EXPR as PLUS_EXPR.
6161         * builtins.c (get_pointer_alignment): Handle POINTER_PLUS_EXPR
6162         instead of PLUS_EXPR.
6163         (expand_builtin_strcat): Create a POINTER_PLUS_EXPR instead of
6164         PLUS_EXPR for pointers.
6165         (std_gimplify_va_arg_expr): Likewise.
6166         (fold_builtin_memory_op): Likewise.
6167         (fold_builtin_strstr): Likewise.
6168         (fold_builtin_strchr): Likewise.
6169         (fold_builtin_strrchr): Likewise.
6170         (fold_builtin_strpbrk): Likewise.
6171         (expand_builtin_memory_chk): Likewise.
6172         (fold_builtin_memory_chk): Likewise.
6173         (std_expand_builtin_va_start): Use
6174         sizetype for the call to make_tree and then convert
6175         to the pointer type.
6176         (fold_builtin_memchr): Use POINTER_PLUS_EXPR
6177         instead of PLUS_EXPR for adding to a pointer.
6178         (std_gimplify_va_arg_expr): Use fold_build2 for
6179         the creating of POINTER_PLUS_EXPR.  For the BIT_AND_EXPR, cast
6180         the operands to sizetype first and then cast the BIT_AND_EXPR
6181         back to the pointer type.
6182         * fold-const.c (build_range_check): Handle pointer types
6183         specially.
6184         (extract_array_ref): Look for POINTER_PLUS_EXPR instead
6185         of PLUS_EXPR's. Make sure the offset is converted to
6186         sizetype.
6187         (try_move_mult_to_index): Strip the NOPs from the offset.
6188         Remove code argument and replace all uses with PLUS_EXPR.
6189         (fold_to_nonsharp_ineq_using_bound): Handle pointer types
6190         specially. Don't use a pointer type for MINUS_EXPR.
6191         (fold_unary): Handle for (T1)(X op Y),
6192         only p+ as that is the only as that can be handled for
6193         binary operators now.
6194         (fold_binary <case POINTER_PLUS_EXPR>): Add folding of
6195         POINTER_PLUS_EXPR.
6196         <case PLUS_EXPR>: Add folding of PTR+INT into
6197         PTR p+ INT.
6198         Don't call try_move_mult_to_index.
6199         <case MINUS_EXPR>: Fold (PTR0 p+ A) - (PTR1 p+ B)
6200         into (PTR0 - PTR1) + (A - B). Fold (PTR0 p+ A) - PTR1 into
6201         (PTR0 - PTR1) + A iff (PTR0 - PTR1) simplifies.
6202         Don't call try_move_mult_to_index.
6203         (tree_expr_nonnegative_warnv_p): Handle POINTER_PLUS_EXPR.
6204         (tree_expr_nonzero_p): Likewise.
6205         (fold_indirect_ref_1): Look at POINTER_PLUS_EXPR instead
6206         of PLUS_EXPR for the complex expression folding.
6207         * tree-chrec.c (chrec_fold_plus_poly_poly): If the
6208         first chrec is a pointer type, then the second should
6209         be sizetype and not the first's type.
6210         For POINTER_PLUS_EXPR, use a different right hand side type.
6211         Handle POINTER_PLUS_EXPR like PLUS_EXPR.
6212         (chrec_fold_plus_1): For POINTER_PLUS_EXPR, use a
6213         different right hand side type.
6214         Handle POINTER_PLUS_EXPR like PLUS_EXPR.
6215         (chrec_fold_plus): For pointer types, use POINTER_PLUS_EXPR
6216         instead of PLUS_EXPR.
6217         When either operand is zero, convert the other operand.
6218         (chrec_apply): Use chrec_convert_rhs
6219         on the argument x instead of chrec_convert.
6220         (reset_evolution_in_loop): For pointer types, the new_evol
6221         should be sizetype.
6222         (convert_affine_scev): For POINTER_PLUS_EXPR, use a
6223         different right hand side type.
6224         Handle POINTER_PLUS_EXPR like PLUS_EXPR.
6225         (chrec_convert_rhs): New function.
6226         (chrec_convert_aggressive): For POINTER_PLUS_EXPR, use a
6227         different right hand side type.
6228         Handle POINTER_PLUS_EXPR like PLUS_EXPR.
6229         * tree-chrec.h (chrec_convert_rhs): New prototype.
6230         (build_polynomial_chrec): For pointer types, the right hand
6231         * tree-ssa-ccp.c (maybe_fold_stmt_indirect): Look for
6232         POINTER_PLUS_EXPR instead of PLUS_EXPR's.
6233         Remove subtraction case as it is always addition now.
6234         Make sure the offset is converted to sizetype.
6235         (fold_stmt_r): Don't handle PLUS_EXPR/MINUS_EXPR specially.
6236         Handle POINTER_PLUS_EXPR like PLUS_EXPR was handled before.
6237         * tree-ssa-loop-ivopts.c (determine_base_object): Abort for 
6238         PLUS_EXPR in pointer type.
6239         Handle POINTER_PLUS_EXPR.
6240         (tree_to_aff_combination): Likewise.
6241         (force_expr_to_var_cost): Likewise.
6242         (force_expr_to_var_cost): Likewise. Create a POINTER_PLUS_EXPR
6243         instead of PLUS_EXPR for pointers.
6244         * c-format.c (check_format_arg): Handle POINTER_PLUS_EXPR
6245         instead of PLUS_EXPR of pointer types.
6246         * tree-stdarg.c (va_list_counter_bump): Handle POINTER_PLUS_EXPR
6247         as PLUS_EXPR.
6248         (check_va_list_escapes): Likewise.
6249         (check_all_va_list_escapes): Likewise.
6250         * dwarf2out.c (loc_descriptor_from_tree_1):
6251         Handle POINT_PLUS_EXPR as a PLUS_EXPR.
6252         * expr.c (expand_expr_real_1): Handle POINTER_PLUS_EXPR.
6253         (string_constant): Likewise.
6254         * tree-ssa-address.c (tree_mem_ref_addr): When adding
6255         the offset to the base, use POINTER_PLUS_EXPR.
6256         (add_to_parts): Convert the index to sizetype.
6257         (create_mem_ref): Create A POINTER_PLUS_EXPR for the one case.
6258         * matrix-reorg.c (collect_data_for_malloc_call): Stmt
6259         will now only be either INDIRECT_REF and POINTER_PLUS_EXPR.
6260         Offset only holds something for PLUS_EXPR.
6261         (ssa_accessed_in_tree): Handle POINTER_PLUS_EXPR just as
6262         a PLUS_EXPR.
6263         (analyze_transpose): POINTER_PLUS_EXPR will only show up now
6264         and not PLUS_EXPR.
6265         (analyze_accesses_for_modify_stmt): Likewise.
6266         Remove comment about the type being integral type as it is
6267         wrong now.
6268         (can_calculate_expr_before_stmt): Handle POINTER_PLUS_EXPR as
6269         PLUS_EXPR.
6270         (transform_access_sites): POINTER_PLUS_EXPR will only show up now
6271         and not PLUS_EXPR.
6272         Correct the type which the artimentic is done in (is now
6273         sizetype).
6274         Reindent one loop.
6275         * tree-data-ref.c (split_constant_offset): Handle
6276         POINTER_PLUS_EXPR
6277         * tree-affine.c (tree_to_aff_combination): Likewise.
6278         * c-typeck.c (build_unary_op): For pointers create the increment
6279         as a sizetype. Create a POINTER_PLUS_EXPR instead of PLUS_EXPR
6280         for pointers.
6281         * gimplify.c (gimplify_self_mod_expr): Create a
6282         POINTER_PLUS_EXPR instead of PLUS_EXPR for pointers.
6283         (gimplify_omp_atomic_fetch_op): Handle POINTER_PLUS_EXPR.
6284         * tree.def (POINTER_PLUS_EXPR): New tree code.
6285         * tree-predcom.c (ref_at_iteration): If we have a pointer
6286         type do the multiplication in sizetype.
6287         * tree-mudflap.c (mf_xform_derefs_1): Create a
6288         POINTER_PLUS_EXPR instead of PLUS_EXPR for pointers.
6289         * tree-ssa-forwprop.c 
6290         (forward_propagate_addr_into_variable_array_index):
6291         Don't expect there to be a cast for the index as that
6292         does not exist anymore.
6293         (forward_propagate_addr_expr_1): Check for POINTER_PLUS_EXPR
6294         instead of PLUS_EXPR.
6295         Don't check for the first operand of the POINTER_PLUS_EXPR
6296         was the index as it cannot be.
6297         Call forward_propagate_addr_into_variable_array_index with
6298         the SSA_NAME instead of the statement.
6299         * varasm.c (const_hash_1): Handle POINTER_PLUS_EXPR.
6300         (compare_constant): Likewise.
6301         (copy_constant): Likewise.
6302         (compute_reloc_for_constant): Likewise.
6303         (output_addressed_constants): Likewise.
6304         (initializer_constant_valid_p): Likewise.
6305         * tree-ssa.c (tree_ssa_useless_type_conversion_1):
6306         Convert the MIN/MAX of the inner type to the outer
6307         type before comparing them.
6308         * tree-ssa-loop-prefetch.c (idx_analyze_ref):  Handle
6309         POINTER_PLUS_EXPR instead of PLUS_EXPR.
6310         (issue_prefetch_ref): Create a POINTER_PLUS_EXPR instead
6311         of PLUS_EXPR for pointers.
6312         * tree-inline.c (estimate_num_insns_1): Handle
6313         POINTER_PLUS_EXPR.
6314         * tree-vect-transform.c (vect_create_addr_base_for_vector_ref): 
6315         Create a POINTER_PLUS_EXPR instead of PLUS_EXPR for pointers.
6316         (bump_vector_ptr): Create a POINTER_PLUS_EXPR
6317         instead of PLUS_EXPR for the pointer increment statement.
6318         (vect_update_ivs_after_vectorizer): For pointer types, create
6319         POINTER_PLUS_EXPR instead of PLUS_EXPR and also create
6320         MULT_EXPR in sizetype.
6321         (vect_gen_niters_for_prolog_loop): Add a cast when creating
6322         byte_misalign.
6323         * tree-object-size.c (plus_expr_object_size): Handle
6324         POINTER_PLUS_EXPR instead of PLUS_EXPR.  Removing all the extra
6325         code which is trying to figure out which side is a pointer and 
6326         is the index.
6327         (check_for_plus_in_loops_1): Likewise.
6328         (check_for_plus_in_loops): Likewise.
6329         * c-common.c (pointer_int_sum): Create a
6330         POINTER_PLUS_EXPR instead of PLUS_EXPR for pointers.
6331         * tree-ssa-structalias.c (handle_ptr_arith): Handle
6332         only POINTER_PLUS_EXPR.  Removing all the extra
6333         code which is trying to figure out which side is a pointer and 
6334         is the index.
6335         * tree-cfg.c (verify_expr): Add extra checking for pointers and
6336         PLUS_EXPR and MINUS_EXPR.
6337         Also add checking to make sure the operands of POINTER_PLUS_EXPR
6338         are correct.
6339         * config/frv/frv.c (frv_expand_builtin_va_start): Use sizetype
6340         with make_tree, instead of a pointer type.
6341         * config/s390/s390.c (s390_va_start): Use POINTER_PLUS_EXPR
6342         for pointers instead of PLUS_EXPR.
6343         (s390_gimplify_va_arg): Likewise.
6344         * config/spu/spu.c (spu_va_start): Create POINTER_PLUS_EXPR
6345         instead of PLUS_EXPR when doing addition on pointer
6346         types.  Use sizetype for the second operand.
6347         (spu_gimplify_va_arg_expr): Likewise.
6348         * config/sparc/sparc.c (sparc_gimplify_va_arg): Use 
6349         POINTER_PLUS_EXPR instead of PLUS_EXPR when the operand was
6350         a pointer.  Don't create a BIT_AND_EXPR for pointer types.
6351         * config/i386/i386.c (ix86_va_start): Use POINTER_PLUS_EXPR
6352         for the pointer addition and also use size_int/sizetype
6353         for the offset.
6354         (ix86_gimplify_va_arg): Likewise.
6355         Perform BIT_AND_EXPR on sizetype arguments.
6356         * config/sh/sh.c (sh_va_start): Call make_tree with sizetype
6357         and convert its result to a pointer type.  Use POINTER_PLUS_EXPR
6358         for the pointer additions and also use size_int for the offsets.
6359         (sh_gimplify_va_arg_expr): Use POINTER_PLUS_EXPR for the pointer
6360         additions and also use size_int for the offsets.  Perform
6361         BIT_AND_EXPR on sizetype arguments.
6362         * config/ia64/ia64.c (ia64_gimplify_va_arg): Use
6363         POINTER_PLUS_EXPR for pointers and create the
6364         BIT_AND_EXPR in sizetype.
6365         * config/rs6000/rs6000.c (rs6000_va_start): Use POINTER_PLUS_EXPR
6366         instead of PLUS_EXPR for pointer addition.
6367         (rs6000_va_start): Likewise.
6368         Also use sizetype for the offset.
6369         * config/pa/pa.c (reloc_needed): Handle POINTER_PLUS_EXPR
6370         as PLUS_EXPR/MINUS_EXPR.
6371         (hppa_gimplify_va_arg_expr): Don't create MINUS_EXPR or
6372         PLUS_EXPR for pointers, instead use POINTER_PLUS_EXPR.
6373         Don't use BIT_AND_EXPR on a pointer type, convert the
6374         expression to sizetype first.
6375         * config/mips/mips.c (mips_va_start): Use POINTER_PLUS_EXPR
6376         for pointers.
6377         (mips_gimplify_va_arg_expr): Likewise.
6378         Don't create BIT_AND_EXPR in a pointer type.
6379
6380 2007-06-15  Eric Christopher  <echristo@apple.com>
6381
6382         * config.gcc (i?86-*-darwin*): Add t-crtfm and t-crtpc.
6383         (x86_64-*-darwin*): Ditto.
6384         * config/i386/darwin.h (CRTEND_SPEC): New. Add support
6385         for above.
6386
6387 2007-06-15  Matthew Wilcox <matthew@wil.cx>
6388
6389         * doc/extend.texi: Document behavior of __attribute__((aligned))
6390         on typedefs.
6391
6392 2007-06-15  Mark Mitchell  <mark@codesourcery.com>
6393
6394         * rtlanal.c (note_stores): Improve documentation.
6395
6396 2007-06-15  Bernd Schmidt  <bernd.schmidt@analog.com>
6397
6398         * config/bfin/elf.h (ASM_GENERATE_INTERNAL_LABEL,
6399         LOCAL_LABEL_PREFIX): Delete.
6400         * config/bfin/bfin.c (TARGET_ASM_INTERNAL_LABEL): Delete.
6401         (bfin_internal_label): Delete.
6402
6403 2007-06-15  Uros Bizjak  <ubizjak@gmail.com>
6404
6405         * libgcc2.c (CEXT): When compiling L_multc3 and L_divtc3,
6406         define to "l" if LIBGCC_LONG_DOUBLE_SIZE == 128,
6407         otherwise define to LIBGCC2_TF_CEXT.
6408         * config/i386/linux64.h (LIBGCC2_HAS_TF_MODE): New define.
6409         (LIBGCC_TF_CEXT): Ditto.
6410         (TF_SIZE): Ditto.
6411
6412 2007-06-14  Seongbae Park  <seongbae.park@gmail.com>
6413
6414         PR rtl-optimization/32339
6415         * df-scan.c (df_uses_record): Don't modify flags but just add to
6416         it for df_ref_record.
6417
6418 2007-06-14  Andrew Pinski  <andrew_pinski@playstation.sony.com>
6419
6420         * tree-mudflap.c: Fix whitespace issues.
6421
6422 2007-06-15  Kazu Hirata  <kazu@codesourcery.com>
6423
6424         * config/m68k/m68k.c (ASM_DOT, ASM_DOTW, ASM_DOTL): Remove.
6425
6426 2007-06-14  Eric Christopher  <echristo@apple.com>
6427
6428         * config/i386/sse.md (movdi_to_sse): Rewrite body.
6429         (movv4sf): Use gcc_unreachable instead of abort.
6430
6431 2007-06-14  Uros Bizjak  <ubizjak@gmail.com>
6432
6433         PR target/32268
6434         * config/i386/sfp-machine.h (CMPtype): New define.
6435         (mach stubs): Use CMPtype instead of int as a return type.
6436
6437 2007-06-14  Uros Bizjak  <ubizjak@gmail.com>
6438
6439         * config/soft-fp/eqdf2.c, config/soft-fp/eqsf2.c,
6440         config/soft-fp/eqtf2.c, config/soft-fp/gedf2.c,
6441         config/soft-fp/gesf2.c, config/soft-fp/getf2.c,
6442         config/soft-fp/ledf2.c, config/soft-fp/lesf2.c,
6443         config/soft-fp/letf2.c, config/soft-fp/unorddf2.c,
6444         config/soft-fp/unordsf2.c, config/soft-fp/unordtf2.c,
6445         config/soft-fp/soft-fp.h: Update from glibc CVS.
6446
6447 2007-06-14  Bernd Schmidt  <bernd.schmidt@analog.com>
6448
6449         * config/bfin/uclinux.h (MFWRAP_SPEC): New.
6450
6451 2007-06-14  Rask Ingemann Lambertsen  <rask@sygehus.dk>
6452
6453         PR target/32341
6454         * config/v850/v850.c: Include dataflow header file.
6455         (substitute_ep_register): Fix typo.
6456
6457 2007-06-14  Paolo Bonzini  <bonzini@gnu.org>
6458
6459         * configure.ac: Fix earlier checkin.
6460         * configure: Regenerated.
6461
6462 2007-06-14  Paolo Bonzini  <bonzini@gnu.org>
6463
6464         * acinclude.m4 (gcc_AC_CHECK_PROG_VER): Remove.
6465         * aclocal.m4: Regenerate.
6466         * configure.ac: Use ACX_PROG_CC_WARNING_OPTS,
6467         ACX_PROG_CC_WARNINGS_ARE_ERRORS,
6468         ACX_PROG_CC_WARNING_ALMOST_PEDANTIC, ACX_CHECK_PROG_VER.
6469         * configure: Regenerate.
6470         * Makefile.in (LOOSE_WARN): Subst loose_warn.
6471
6472         * Makefile.in (quickstrap): Build libgcc too.
6473
6474 2007-06-14  Paolo Bonzini  <bonzini@gnu.org>
6475
6476         * configure.ac: Add --enable-checking=df.  Explicitly mention that
6477         the variables are initialized as for "release".
6478         * df-core.c: Use it.
6479         * configure: Regenerate.
6480         * config.in: Regenerate.
6481
6482 2007-06-14  Bob Wilson  <bob.wilson@acm.org>
6483
6484         * config/xtensa/xtensa.c (xtensa_expand_nonlocal_goto): Use
6485         validate_replace_rtx instead of replace_rtx.
6486         (xtensa_expand_prologue): Call df_insn_rescan after replace_rtx.
6487
6488 2007-06-14  Danny Smith  <dannysmith@users.sourceforge.net>
6489
6490         * config/i386/cygming.h (DWARF_FRAME_REGNUM): Define.
6491         (DWARF2_UNWIND_INFO): Override default if configured with
6492         SJLJ EH disabled.
6493         * config/i386/cygwin.h (STARTFILE_SPEC): Add crtbegin.o.
6494         (ENDFILE_SPEC): Add crtend.o.
6495         * config/i386/mingw32.h (STARTFILE_SEC): Add crtbegin.o.
6496         (ENDFILE_SPEC): Add crtend.o.
6497         (TARGET_USE_JCR_SECTION): Define.
6498         (MD_UNWIND_SUPPORT): Define for 32-bit target.
6499
6500         * config/i386/cygming-crtbegin.c: New file.
6501         * config/i386/cygming-crtend.c: New file.
6502
6503 2007-06-14  Pascal Obry Pascal Obry  <obry@adacore.com>
6504
6505         * config/i386/w32-unwind.h: New file.
6506
6507 2007-06-13  Eric Christopher  <echristo@apple.com>
6508
6509         * config/i386/darwin.h (PREFERRED_STACK_BOUNDARY): Don't let
6510         the user set a value below STACK_BOUNDARY.
6511
6512 2007-06-13  Thiemo Seufer  <ths@networkno.de>
6513
6514         * config/mips/linux.h, config/mips/linux64.h (LIB_SPEC): Always
6515         imply -lpthread for -pthread.
6516
6517 2007-06-13  Kazu Hirata  <kazu@codesourcery.com>
6518
6519         * basic-block.h: Remove the prototype for
6520         free_basic_block_vars.
6521         * cfglayout.h: Remove the prototype for
6522         insn_locators_initialize.
6523         * tree.h: Remove the prototype for emit_line_note.
6524
6525         * tree-ssa-pre.c (mergephitemp): Remove.
6526         (init_pre): Don't use mergephitemp.
6527
6528 2007-06-13  Eric Christopher  <echristo@apple.com>
6529
6530         * config/i386/i386.c (override_options): If we've specified
6531         an arch then don't use TARGET_SUBTARGET_ISA_DEFAULTs.
6532
6533 2007-06-13  Bob Wilson  <bob.wilson@acm.org>
6534
6535         * df-scan.c (df_get_entry_block_def_set): Check if STATIC_CHAIN_REGNUM
6536         is defined.
6537
6538 2007-06-13  Bernd Schmidt  <bernd.schmidt@analog.com>
6539
6540         * config/bfin/bfin.h (EH_RETURN_HANDLER_RTX): Use gen_frame_mem.
6541         * config/bfin/bfin.md (UNSPEC_VOLATILE_STORE_EH_HANDLER): New constant.
6542         (eh_store_handler): New pattern.
6543         (eh_return): Emit it instead of a plain move.
6544
6545 2007-06-13  Uros Bizjak  <ubizjak@gmail.com>
6546
6547         * config/i386/i386.c (ix86_init_mmx_sse_builtins)
6548         [__builtin_infq, __builtin_fabsq]: Define usign def_builtin.
6549         [__builtin_ia32_rsqrtps, __builtin_ia32_rsqrtss]: Define using
6550         def_builtin_const.
6551
6552 2007-06-13  Bernd Schmidt  <bernd.schmidt@analog.com>
6553
6554         * config/bfin/bfin.c (gen_one_bundle): Delete unused local variables.
6555         (find_next_insn_start, find_load): New functions.
6556         (bfin_reorg): Use them to deal with the fact that parallel insns are
6557         no longer represented as a SEQUENCE.
6558
6559 2007-06-13  Eric Botcazou  <ebotcazou@libertysurf.fr>
6560
6561         * config/sparc/sparc.c (sparc_override_options): Initialize
6562         fpu mask correctly.
6563
6564 2007-06-13  Dave Korn  <dave.korn@artimi.com>
6565
6566         * config/i386/i386.c (ix86_eax_live_at_start_p): Use
6567         df_get_live_out.
6568
6569 2007-06-13  Kazu Hirata  <kazu@codesourcery.com>
6570
6571         * auto-inc-dec.c, c-incpath.c, config/c4x/libgcc.S,
6572         config/sh/divcost-analysis, dbgcnt.def, df-core.c,
6573         df-problems.c, df-scan.c, df.h, dominance.c, dse.c, regstat.c,
6574         tree-data-ref.c, tree-ssa-loop-im.c, tree-ssa-loop-prefetch.c,
6575         tree-vect-transform.c: Fix comment typos.  Follow spelling
6576         conventions.
6577
6578 2007-06-12  Seongbae Park  <seongbae.park@gmail.com>
6579
6580        * df-scan.c (df_get_exit-block_use_set): Always add the stack pointer
6581        to the exit block use set.
6582        (df_insn_delete, df_insn_rescan): Fixed spelling of "deferring". 
6583        * gcse.c (cpro_jump): Don't emit barrier in cfglayout mode.
6584        * config/sparc/sparc.c (sparc_check_64): Check df != NULL.
6585
6586 2007-06-12  Seongbae Park  <seongbae.park@gmail.com>
6587
6588         * opts.c (common_handle_option): Handle new option -fdbg-cnt-list.
6589         * dbgcnt.c (dbg_cnt_set_limit_by_name): Return value
6590         to indicate an error.
6591         (dbg_cnt_process_single_pair, dbg_cnt_list_all_counters):
6592         New functions.
6593         (dbg_cnt_process_opt): Print an error on a bad argument.
6594         * dbgcnt.h (dbg_cnt_list_all_counters): New function declaration.
6595         * common.opt (-fdbg-cnt-list): New.
6596         * doc/invoke.texi (-fdbg-cnt-list,-fdbg-cnt=): New.
6597
6598 2007-06-12  Eric Botcazou  <ebotcazou@adacore.com>
6599
6600         * tree-ssa-alias.c (finalize_ref_all_pointers): Clear pt_anything
6601         flag on ref-all pointers.
6602
6603 2007-06-12  Andrew Pinski  <andrew_pinski@playstation.sony.com>
6604
6605         PR middle-end/31579
6606         * expr.c (expand_expr_addr_expr_1): Call expand_expr
6607         for the offset with the modifier as EXPAND_INITIALIZER
6608         if the modifier is EXPAND_INITIALIZER.
6609         (expand_expr_real_1 <case INTEGER_CST>): Don't force to
6610         a register if we had an overflow.
6611
6612 2007-06-12  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
6613
6614         * real.c (real_isfinite): New.
6615         (real_sqrt): Use it.
6616         * real.h (real_isfinite): New.
6617         * builtins.c: Use it.
6618
6619 2007-06-12  Ian Lance Taylor  <iant@google.com>
6620             Daniel Berlin  <dberlin@dberlin.org>
6621
6622         PR libstdc++/29286
6623         * tree.def: Add CHANGE_DYNAMIC_TYPE_EXPR.
6624         * tree.h (CHANGE_DYNAMIC_TYPE_NEW_TYPE): Define.
6625         (CHANGE_DYNAMIC_TYPE_LOCATION): Define.
6626         (DECL_NO_TBAA_P): Define.
6627         (struct tree_decl_common): Add no_tbaa_flag field.
6628         * tree-ssa-structalias.c (struct variable_info): Add
6629         no_tbaa_pruning field.
6630         (new_var_info): Initialize no_tbaa_pruning field.
6631         (unify_nodes): Copy no_tbaa_pruning field.
6632         (find_func_aliases): Handle CHANGE_DYNAMIC_TYPE_EXPR.
6633         (dump_solution_for_var): Print no_tbaa_pruning flag.
6634         (set_uids_in_ptset): Add no_tbaa_pruning parameter.  Change all
6635         callers.
6636         (compute_tbaa_pruning): New static function.
6637         (compute_points_to_sets): Remove CHANGE_DYNAMIC_TYPE_EXPR nodes.
6638         Call compute_tbaa_pruning.
6639         * tree-ssa-alias.c (may_alias_p): Test no_tbaa_flag for pointers.
6640         * gimplify.c (gimplify_expr): Handle CHANGE_DYNAMIC_TYPE_EXPR.
6641         * gimple-low.c (lower_stmt): Likewise.
6642         * tree-gimple.c (is_gimple_stmt): Likewise.
6643         * tree-ssa-operands.c (get_expr_operands): Likewise.
6644         * tree-ssa-dce.c (mark_stmt_if_obviously_necessary): Likewise.
6645         * tree-inline.c (estimate_num_insns_1): Likewise.
6646         (copy_result_decl_to_var): Likewise.
6647         * expr.c (expand_expr_real_1): Likewise.
6648         * tree-pretty-print.c (dump_generic_node): Likewise.
6649         * tree-inline.c (copy_decl_to_var): Copy DECL_NO_TBAA_P flag.
6650         * omp-low.c (omp_copy_decl_2): Likewise.
6651         * print-tree.c (print_node): Print DECL_NO_TBAA_P flag.
6652         * doc/c-tree.texi (Expression trees): Document
6653         CHANGE_DYNAMIC_TYPE_EXPR.
6654
6655 2007-06-12  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
6656
6657         * fold-const.c (fold_binary): Guard (X-X) -> 0 transformation
6658         with !HONOR_NANS and !HONOR_INFINITIES.
6659         * simplify-rtx.c (simplify_binary_operation_1): Likewise.
6660
6661 2007-06-12  Tristan Gingold  <gingold@adacore.com>
6662
6663         * gcov.c: Comments updated.
6664         (source_info): Add file_time field.
6665         (source_index): New variable.
6666         (mutiple_files): New variable.
6667         (generate_results): New function extracted from process_file.
6668         (process_file): Save and restore chain of functions, generate
6669         results and free structures only if not merging results.
6670         (release_structures): File names are now freed in create_file_names
6671         (create_file_names): Free previous file names.
6672         (find_source): File date is now read here and modifications in
6673         source files is checked here.
6674         (read_graph_file): Only reverse order of functions for the current
6675         object file.
6676         (make_gcov_file_name): Do not generate long names if input_name is
6677         NULL.
6678         (output_lines): If merging results do not display graph, data and
6679         runs informations.
6680         Checking source file modification is done in find_source.
6681
6682         * doc/gcov.texi: Append an s to sourcefile.
6683
6684 2007-06-12  Bernd Schmidt  <bernd.schmidt@analog.com>
6685
6686         * config/bfin/bfin.md (UNSPEC_NOP): New constant.
6687         (forced_nop): New pattern.
6688         * config/bfin/bfin.c: Include "df.h".
6689         (add_to_reg): Use df_regs_ever_live_p instead of regs_ever_live.
6690         (bfin_discover_loop): Use df_get_live_in instead of
6691         global_live_at_start.
6692         (bfin_reorder_loops): Pass 0 to cfg_layout_initialize.  Call
6693         df_analyze when done.
6694         (gen_one_bundle): Don't generate SEQUENCE insns, just put modes on
6695         the insns.  Use QImode for the final insn in a bundle.  Call
6696         df_insn_rescan on generated NOPs; use gen_forced_nop instead of
6697         gen_nop.
6698         (reorder_var_tracking_notes): New function.
6699         (bfin_reorg): Pass no argument to split_all_insns.  Don't call
6700         update_life_info.  Call df_analyze after scheduling and bundle
6701         generation.  Call reorder_var_tracking_notes if generating these
6702         notes.  Call df_finish_pass at the end.
6703
6704 2007-06-12  Dirk Mueller  <dmueller@suse.de>
6705
6706         * optabs.c (debug_optab_libfuncs): fix gcc_assert to
6707         a comparison, not an assignment.
6708
6709 2007-06-12  Olivier Hainque  <hainque@adacore.com>
6710
6711         * tree-nested.c (convert_local_reference): Handle VIEW_CONVERT_EXPR.
6712         Request walking the subtrees only, leaving the current is_lhs/val_only
6713         untouched.
6714         (convert_non_local_reference): Likewise.
6715
6716 2007-06-12  Nathan Sidwell  <nathan@codesourcery.com>
6717
6718         * config/m68k/m68k-devices.def (52221, 52223, 5253): New.
6719
6720 2007-06-12  Richard Guenther  <rguenther@suse.de>
6721
6722         PR tree-optimization/15353
6723         PR tree-optimization/31657
6724         * passes.c (init_optimization_passes): Add pass_tree_ifcombine.
6725         * timevar.def: Add TV_TREE_IFCOMBINE.
6726         * tree-pass.h (pass_tree_ifcombine): Declare.
6727         * tree-ssa-ifcombine.c: New file.
6728         * tree-ssa-phiopt.c (blocks_in_phiopt_order): Export.
6729         * tree-flow.h (blocks_in_phiopt_order): Declare.
6730         * Makefile.in (OBJS-common): Add tree-ssa-ifcombine.o.
6731         (tree-ssa-ifcombine.o): New dependencies.
6732
6733 2007-06-12  Uros Bizjak  <ubizjak@gmail.com>
6734
6735         PR rtl-optimization/32293
6736         * combine.c (simplify_if_then_else): Truncate return from
6737         nonzero_bits() to correct mode.
6738
6739 2007-06-12  Uros Bizjak  <ubizjak@gmail.com>
6740
6741         * fold-const (fold_binary) [RDIV_EXPR]: Also optimize a/cbrt(b/c)
6742         into a*cbrt(c/b) if flag_unsafe_math_optimizations is set.
6743
6744 2007-06-11  Diego Novillo  <dnovillo@google.com>
6745
6746         * Makefile.in (reload1.o-warn): Remove.
6747
6748 2007-06-11  Seongbae Park <seongbae.park@gmail.com>
6749
6750         * combine.c (subst): Use reg_overlap_mentioned_p
6751         instead of comparing register numbers directly.
6752
6753 2007-06-11  Kenneth Zadeck <zadeck@naturalbridge.com>
6754
6755         * reload1.c (mark_home_live_1): Use the mode parameter.
6756
6757 2007-06-11  Kenneth Zadeck <zadeck@naturalbridge.com>
6758
6759         * df-scan.c (df_insn_delete, df_insn_rescan, df_insn_rescan_all,
6760         df_process_deferred_rescans, df_notes_rescan): Fixed spelling of
6761         word "deferred".
6762         * df-core.c: Ditto.
6763
6764 2007-06-11  Daniel Berlin  <dberlin@dberlin.org>
6765
6766         * Merge dataflow-branch into mainline (see ChangeLog.dataflow)
6767
6768 2007-06-11  Uros Bizjak  <ubizjak@gmail.com>
6769
6770         * config/i386/i386.md ("*movtf_internal): Penalize moves to and
6771         from integer registers.
6772         (FP mode splitters): Handle TFmode.
6773
6774 2007-06-11  Eric Botcazou  <ebotcazou@adacore.com>
6775
6776         * tree-ssa-structalias.c (find_what_p_points_to): Return false
6777         for ref-all pointers that point-to anything.
6778
6779 2007-06-11  Joseph Myers  <joseph@codesourcery.com>
6780
6781         * config/arm/arm.c (arm_output_dwarf_dtprel,
6782         TARGET_ASM_OUTPUT_DWARF_DTPREL): New.
6783
6784 2007-06-11  Bernd Schmidt  <bernd.schmidt@analog.com>
6785
6786         * config/bfin/bfin.md (movdi_insn, movsi_insn, movv2hi_insn,
6787         movhi_insn, movqi_insn, movsf_insn, movdf_insn): Don't allow constant
6788         to memory moves.
6789
6790 2007-06-11  Rafael Avila de Espindola  <espindola@google.com>
6791
6792         * gcc/tree.c (signed_or_unsigned_type_for): New.
6793         (unsigned_type_for): Use signed_or_unsigned_type_for.
6794         (signed_type_for): Use signed_or_unsigned_type_for.
6795         * gcc/tree.h (signed_or_unsigned_type_for): New.
6796         (get_signed_or_unsigned_type): Remove.
6797         * gcc/fold-const.c (fold_negate_expr): Use signed_type_for instead of
6798         lang_hooks.types.signed_type
6799         (size_diffop): Likewise.
6800         (all_ones_mask_p): Likewise.
6801         (build_range_check): Likewise.
6802         (fold_cond_expr_with_comparison): Likewise.
6803         (fold_cond_expr_with_comparison): Likewise.
6804         (unextend): Likewise.
6805         (extract_muldiv_1): Likewise.
6806         (fold_single_bit_test_into_sign_test): Likewise.
6807         (fold_binary): Likewise.
6808         (fold_ternary): Likewise.
6809         (operand_equal_for_comparison_p): Use signed_or_unsigned_type_for
6810         instead of get_signed_or_unsigned_type.
6811         * gcc/c-objc-common.h (LANG_HOOKS_SIGNED_TYPE): Remove.
6812         (LANG_HOOKS_SIGNED_OR_UNSIGNED_TYPE): Remove.
6813         * gcc/expr.c (signed_or_unsigned_type_for): Use
6814         signed_or_unsigned_type_for instead of get_signed_or_unsigned_type.
6815         * gcc/langhooks.c (get_signed_or_unsigned_type): Remove.
6816         (lhd_signed_or_unsigned_type): Remove.
6817         * gcc/langhooks.h (lang_hooks_for_types): Remove signed_type and
6818         signed_or_unsigned_type.
6819         (lhd_signed_or_unsigned_type): Remove.
6820         * gcc/expmed.c (make_tree): Use signed_type_for instead of
6821         lang_hooks.types.signed_type.
6822         * gcc/c-common.c (same_scalar_type_ignoring_signedness): Use
6823         c_common_signed_type instead of lang_hooks.types.signed_type.
6824         (c_common_unsigned_type): New.
6825         (c_common_signed_type): Just call c_common_signed_or_unsigned_type.
6826         (shorten_compare): Use c_common_unsigned_type instead of
6827         c_common_signed_or_unsigned_type.
6828         (c_common_nodes_and_builtins): Use c_common_unsigned_type instead of
6829         unsigned_type_for.
6830         * gcc/convert.c (convert_to_integer): Use signed_type_for instead of
6831         lang_hooks.types.signed_type.
6832         * gcc/langhooks-def.h (LANG_HOOKS_SIGNED_OR_UNSIGNED_TYPE): Remove.
6833         (LANG_HOOK_FOR_TYPES_INITIALIZER): Remove LANG_HOOKS_SIGNED_TYPE and
6834         LANG_HOOKS_SIGNED_OR_UNSIGNED_TYPE.
6835         * gcc/c-format.c (check_format_types): Use c_common_unsigned_type
6836         instead of unsigned_type_for.
6837         * gcc/c-decl.c (groakdeclarator): Likewise.
6838         * gcc/c-typeck.c (convert_for_assignment): Likewise.
6839         * gcc/c-common.h (c_common_unsigned_type): New.
6840
6841 2007-06-11  Uros Bizjak  <ubizjak@gmail.com>
6842
6843         PR target/32280
6844         * config/i386/sse.md ("sse2_ashlti", "sse2_lshrti3"): Move ...
6845         * config/i386/i386.md ("sse2_ashlti", "sse2_lshrti3"): ... to here.
6846
6847 2007-06-11  Uros Bizjak  <ubizjak@gmail.com>
6848
6849         PR middle-end/32279
6850         * fold-const (fold_binary) [RDIV_EXPR]: Optimize a/sqrt(b/c)
6851         into a*sqrt(c/b) if flag_unsafe_math_optimizations is set.
6852
6853 2007-06-10  Jan Sjodin  <jan.sjodin@amd.com>
6854             Sebastian Pop  <sebpop@gmail.com>
6855
6856         * lambda-code.c (remove_iv): New.
6857         (lambda_loopnest_to_gcc_loopnest): Use remove_iv.
6858
6859 2007-06-10  Zdenek Dvorak  <dvorakz@suse.cz>
6860
6861         * tree-data-ref.c (dr_analyze_alias): Handle case smt is NULL.
6862         * tree-predcom.c (mark_virtual_ops_for_renaming): Exported.
6863         * tree-ssa-loop-prefetch.c: Include optabs.h.
6864         (FENCE_FOLLOWING_MOVNT): New macro.
6865         (struct mem_ref): Add independent_p and storent_p fields.
6866         (record_ref): Initalize the new fields.
6867         (gather_memory_references_ref): Return true if the reference
6868         could be analysed.
6869         (gather_memory_references): Check whether all memory accesses
6870         in loop were recorded.
6871         (should_issue_prefetch_p): Return false for nontemporal stores.
6872         (nontemporal_store_p, mark_nontemporal_store, emit_mfence_after_loop,
6873         may_use_storent_in_loop_p, mark_nontemporal_stores): New functions.
6874         (determine_loop_nest_reuse): Detect independent memory references.
6875         (loop_prefetch_arrays): Call mark_nontemporal_stores.
6876         * tree-flow.h (mark_virtual_ops_for_renaming): Declare.
6877         * Makefile.in (tree-ssa-loop-prefetch.o): Add OPTABS_H dependency.
6878         * config/i386/i386.h (x86_mfence): Declare.
6879         (FENCE_FOLLOWING_MOVNT): Return x86_mfence.
6880         * config/i386/i386.c (x86_mfence): New variable.
6881         (ix86_init_mmx_sse_builtins): Initialize x86_mfence.
6882
6883         * tree-pretty-print.c (dump_generic_node): Mark nontemporal stores.
6884         * optabs.c (init_optabs): Initialize storent_optab.
6885         * optabs.h (enum optab_index): Add OTI_storent.
6886         (storent_optab): Declare.
6887         * genopinit.c (optabs): Add initialization for storent_optab.
6888         * tree.h (MOVE_NONTEMPORAL): New macro.
6889         * expr.c (expand_assignment, store_expr, store_constructor_field,
6890         store_constructor, store_field, expand_expr_real_1): Propagate
6891         nontemporality of the expanded store.
6892         (emit_storent_insn): New function.
6893         * expr.h (expand_assignment, store_expr): Declaration changed.
6894         * function.c (assign_parm_setup_reg): Pass false as nontemporality
6895         to expand_assignment.
6896         * stmt.c (expand_asm_expr): Ditto.
6897         * calls.c (initialize_argument_information): Pass false as
6898         nontemporality to store_expr.
6899         * config/i386/sse.md (storentv4sf, storentv2df, storentv2di,
6900         storentsi): New.
6901
6902 2007-06-09  Daniel Berlin  <dberlin@dberlin.org>
6903
6904         * tree-ssa-structalias.c (set_uids_in_ptset): Add is_deref'd
6905         parameter, use it.
6906         (find_what_p_points_to): Pass new parameter to set_uids_in_ptset.
6907
6908 2007-06-09  Daniel Berlin  <dberlin@dberlin.org>
6909
6910         * tree-data-ref.c (dr_may_alias_p): Check that decl_a != decl_b,
6911         and allow DECL_P here.
6912
6913 2007-06-09  Zdenek Dvorak  <dvorakz@suse.cz>
6914
6915         * tree-scalar-evolution.c (follow_ssa_edge_in_rhs,
6916         follow_ssa_edge_in_condition_phi, follow_ssa_edge): Keep more precise
6917         track of the size of the expression.
6918         * cfghooks.c (merge_blocks): Remove block from loops structure only
6919         after call of the merge_blocks hook.
6920
6921 2007-06-09  Tom Tromey  <tromey@redhat.com>
6922
6923         * c-decl.c (grokdeclarator): Added 'deprecated_state' argument.
6924         (deprecated_state): Removed.
6925         (start_decl): Update.
6926         (enum deprecated_states): Moved earlier.
6927         (groktypename): Update.
6928         (push_parm_decl): Likewise.
6929         (grokfield): Likewise.
6930         (start_function): Likewise.
6931
6932 2007-06-09  Ian Lance Taylor  <iant@google.com>
6933
6934         PR tree-optimization/32169
6935         * tree-vrp.c (extract_range_from_unary_expr): For NOP_EXPR and
6936         CONVERT_EXPR, check whether min and max both converted to an
6937         overflow infinity representation.
6938
6939 2007-06-08  Eric Botcazou  <ebotcazou@adacore.com>
6940
6941         * reload1.c (fixup_abnormal_edges): Clear bb field for insns
6942         not inserted on the edge.
6943
6944 2007-06-08  Bob Wilson  <bob.wilson@acm.org>
6945
6946         * config/xtensa/lib1funcs.asm (__udivsi3): Use hardware divide
6947         instructions if they are supported.
6948         (__divsi3, __umodsi3, __modsi3): Likewise.
6949         (__ashldi3, __ashrdi3, __lshrdi3): New.
6950         * config/xtensa/t-xtensa (LIB1ASMFUNCS): Add DImode shift functions.
6951
6952 2007-06-08  Harsha Jagasia <harsha.jagasia@amd.com>
6953             Tony Linthicum <tony.linthicum@amd.com>
6954
6955         * doc/invoke.texi: Add fvect-cost-model flag.
6956         * common.opt (fvect-cost-model): New flag.
6957         * tree-vectorizer.c (new_stmt_vec_info): Initialize inside and outside
6958         cost fields in stmt_vec_info struct for STMT.
6959         * tree-vectorizer.h (stmt_vec_info): Define inside and outside cost
6960         fields in stmt_vec_info struct and access functions for the same.
6961         (TARG_COND_BRANCH_COST): Define cost of conditional branch.
6962         (TARG_VEC_STMT_COST): Define cost of any vector operation, excluding
6963         load, store and vector to scalar operation.
6964         (TARG_VEC_TO_SCALAR_COST): Define cost of vector to scalar operation.
6965         (TARG_VEC_LOAD_COST): Define cost of aligned vector load.
6966         (TARG_VEC_UNALIGNED_LOAD_COST): Define cost of misasligned vector load.
6967         (TARG_VEC_STORE_COST): Define cost of vector store.
6968         (vect_estimate_min_profitable_iters): Define new function.
6969         * tree-vect-analyze.c (vect_analyze_operations): Add a compile-time
6970         check to evaluate if loop iterations are less than minimum profitable
6971         iterations determined by cost model or minimum vect loop bound defined
6972         by user, whichever is more conservative.
6973         * tree-vect-transform.c (vect_do_peeling_for_loop_bound): Add a
6974         run-time check to evaluate if loop iterations are less than minimum
6975         profitable iterations determined by cost model or minimum vect loop
6976         bound defined by user, whichever is more conservative.
6977         (vect_estimate_min_profitable_iterations): New function to estimate
6978         mimimimum iterartions required for vector version of loop to be
6979         profitable over scalar version.
6980         (vect_model_reduction_cost): New function.
6981         (vect_model_induction_cost): New function.
6982         (vect_model_simple_cost): New function.
6983         (vect_cost_strided_group_size): New function.
6984         (vect_model_store_cost): New function.
6985         (vect_model_load_cost): New function.
6986         (vectorizable_reduction): Call vect_model_reduction_cost during
6987         analysis phase.
6988         (vectorizable_induction): Call vect_model_induction_cost during
6989         analysis phase.
6990         (vectorizable_load): Call vect_model_load_cost during analysis phase.
6991         (vectorizable_store): Call vect_model_store_cost during analysis phase.
6992         (vectorizable_call, vectorizable_assignment, vectorizable_operation,
6993         vectorizable_promotion, vectorizable_demotion): Call
6994         vect_model_simple_cost during analysis phase.
6995
6996 2007-06-08  Simon Baldwin  <simonb@google.com>
6997
6998         * reg-stack.c (get_true_reg): Readability change.  Moved default case
6999         label into direct switch statement scope.
7000
7001 2007-06-08  Simon Baldwin  <simonb@google.com>
7002
7003         * tree-flow-inline.h (var_ann): Replaced erroneous '=' assignment
7004         in gcc_assert() with '==' comparison.
7005
7006 2007-06-08  Uros Bizjak  <ubizjak@gmail.com>
7007
7008         * config/i386/i386.c (override_options): Merge TARGET_SSE4_2 and
7009         TARGET_ABM handling of x86_popcnt variable.
7010
7011 2007-06-08  Uros Bizjak  <ubizjak@gmail.com>
7012
7013         * doc/extend.texi (X86 Built-in Functions): Document __builtin_fabsq,
7014         __builtin_copysignq and __builtin_infq built-in functions.
7015
7016 2007-06-08  Uros Bizjak  <ubizjak@gmail.com>
7017
7018         * doc/extend.texi (X86 Built-in Functions): Add missing `@item's in
7019         SSE4.2 section.  Correct built-in function names in SSE4A section.
7020
7021 2007-06-08  Uros Bizjak  <ubizjak@gmail.com>
7022
7023         PR tree-optimization/32243
7024         * tree-vect-transform.c (vectorizable_type_promotion): Move check
7025         for ncopies after ratio check between nunits_out and nunits_in.
7026         (vectorizable_type_demotion): Remove single-use variable "scalar_type".
7027
7028 2007-06-08  Dorit Nuzman  <dorit@il.ibm.com>
7029
7030         PR tree-optimization/32224
7031         * tree-vect-analyze.c (vect_determine_vectorization_factor): Fail
7032         vectorization upon a non GIMPLE_MODIFY_STMT.
7033
7034 2007-06-08  Christian Bruel  <christian.bruel@st.com>
7035
7036         PR target/29953
7037         * config/sh/sh.md (doloop_end): New pattern and splitter.
7038         * loop-iv.c (simple_rhs_p): Check for hardware registers.
7039
7040 2007-06-08  Zdenek Dvorak  <dvorakz@suse.cz>
7041
7042         PR middle-end/32209
7043         * dominance.c (debug_dominance_tree, debug_dominance_tree_1): New
7044         functions.
7045         (verify_dominators): Do not change dominance tree.
7046
7047 2007-06-08  Kaz Kojima  <kkojima@gcc.gnu.org>
7048
7049         * config/sh/constraints.md: New file.
7050         * config/sh/sh.c: Include tm-constrs.h.
7051         (reg_class_from_letter): Remove.
7052         (prepare_cbranch_operands): Use satisfies_constraint_*
7053         function instead of macro.
7054         (andcosts, broken_move, sh_secondary_reload): Likewise.
7055         * config/sh/predicates.md (trapping_target_operand): Likewise.
7056         (and_operand, arith_operand, arith_reg_or_0_operand,
7057         cmp_operand, logical_operand, target_operand,
7058         ua_address_operand, ua_offset, xor_operand): Likewise.
7059         * config/sh/sh.md: Include constraints.md.
7060         (*movsicc_t_false): Use satisfies_constraint_* function
7061         instead of macro.
7062         (*movsicc_t_true, ashlsi3_std, ashlhi3_k, lshrsi3_m,
7063         lshrsi3_k, movsi_const_16bit+2, *movhi_media+1,
7064         movdi_const_16bit+1, beq, bne, *ptb): Likewise.
7065         * config/sh/sh.h (reg_class_from_letter): Remove prototype.
7066         (OVERRIDE_OPTIONS): Don't modify reg_class_from_letter.
7067         (REG_CLASS_FROM_CONSTRAINT): Remove.
7068         (CONSTRAINT_LEN, CONST_OK_FOR_I20, CONST_OK_FOR_I,
7069         CONST_OK_FOR_J, CONST_OK_FOR_K16, CONST_OK_FOR_K,
7070         CONST_OK_FOR_P27, CONST_OK_FOR_P, CONST_OK_FOR_M,
7071         CONST_OK_FOR_N, CONST_OK_FOR_CONSTRAINT_P,
7072         CONST_DOUBLE_OK_FOR_LETTER_P): Likewise.
7073         (SECONDARY_INOUT_RELOAD_CLASS): Use satisfies_constraint_*
7074         function instead of macro.
7075         (SECONDARY_INPUT_RELOAD_CLASS): Likewise.
7076         (EXTRA_CONSTRAINT_Q, EXTRA_CONSTRAINT_A,
7077         EXTRA_CONSTRAINT_Bsc, EXTRA_CONSTRAINT_B,
7078         EXTRA_CONSTRAINT_Css, EXTRA_CONSTRAINT_Csu): Remove.
7079         (IS_PC_RELATIVE_LOAD_ADDR_P): New macro.
7080         (IS_LITERAL_OR_SYMBOLIC_S16_P): Likewise.
7081         (IS_LITERAL_OR_SYMBOLIC_U16_P): Likewise.
7082         (IS_NON_EXPLICIT_CONSTANT_P): Likewise.
7083         (EXTRA_CONSTRAINT_Csy, EXTRA_CONSTRAINT_Z, EXTRA_CONSTRAINT_W,
7084         EXTRA_CONSTRAINT_Cpg, EXTRA_CONSTRAINT_C,
7085         EXTRA_MEMORY_CONSTRAINT, EXTRA_CONSTRAINT_Sr0,
7086         EXTRA_CONSTRAINT_Sua, EXTRA_CONSTRAINT_S,
7087         EXTRA_CONSTRAINT_STR): Likewise.
7088         (GO_IF_LEGITIMATE_INDEX): Fix indentation.
7089
7090 2007-06-07  Geoffrey Keating  <geoffk@apple.com>
7091
7092         * config/i386/darwin.h (STACK_BOUNDARY): Define.
7093
7094 2007-06-07  Simon Martin  <simartin@users.sourceforge.net>
7095
7096         PR c++/30759
7097         * c-common.h (flag_cpp0x): Replaced by...
7098         (cxx_dialect): ... this new variable specifying the C++ dialect that
7099         is used.
7100         * c-common.c (flag_cpp0x): Removed.
7101         (cxx_dialect): Defined.
7102         * c-cppbuiltin.c (c_cpp_builtins): flag_cpp0x rewritten in terms of
7103         cxx_dialect.
7104         * c-opts.c (c_common_post_options): Likewise.
7105         (set_std_cxx98): Set cxx_dialect to cxx98.
7106         (set_std_cxx0x): Set cxx_dialect to cxx0x.
7107
7108 2007-06-07  Geoffrey Keating  <geoffk@apple.com>
7109             Hui-May Chang <hm.chang@apple.com>
7110
7111         * doc/invoke.texi (Darwin Options): Update documentation for
7112         -mmacosx-version-min.
7113         * config.gcc (*-*-darwin*): Set extra_gcc_objs.
7114         * config/darwin-driver.c: New file.
7115         * config/darwin.h (GCC_DRIVER_HOST_INITIALIZATION): New.
7116         * config/t-darwin (darwin-driver.o): New rule.
7117
7118         * config/darwin-c.c (version_as_macro): Ignore low digit.
7119
7120 2007-06-07  Uros Bizjak  <ubizjak@gmail.com>
7121
7122         * config/i386/i386.md (standard sse constant splitter): Handle TFmode.
7123         (negtf2, abstf2, *absnegtf2_sse): New insn patterns.
7124         (CSGNMODE): New mode macro.
7125         (CSGNVMODE): New mode attribute.
7126         (copysign<mode>3): Rename from copysingsf3 and copysigndf3.  Macroize
7127         expander using CSGNMODE mode macro.  Handle TFmode.
7128         (copysign<mode>3_const): Rename from copysignsf3_const and
7129         copysigndf3_const.  Macroize pattern using CSGNMODE mode macro.
7130         Handle TFmode.
7131         (copysign<mode>3_var): Rename from copysignsf3_var and
7132         copysigndf3_var.  Macroize pattern using CSGNMODE mode macro.
7133         Handle TFmode.
7134         (copysign<mode>3_var splitter): Macroize pattern using CSGNMODE
7135         mode macro.  Handle TFmode.
7136         * config/i386/sse.md (andtf3, *andtf3, *nandtf3): New insn patterns.
7137         (iortf3, *iortf3): Ditto.
7138         (xortf3, *xortf3): Ditto.
7139         * config/i386/i386.c (ix86_build_signbit_mask): Create scalar
7140         TFmode and TImode masks.
7141         (ix86_expand_copysign): Expand TFmode copysign insn.
7142         (IX86_BUILTIN_INFQ): New.
7143         (IX86_BUILTIN_FABSQ): Ditto.
7144         (IX86_BUILTIN_COPYSIGNQ): Ditto.
7145         (ix86_init_mmx_sse_builtins) [__builtin_infq]: New builtin definition.
7146         [__builtin_fabsq]: Ditto.
7147         [__builtin_copysignq]: Ditto.
7148         (ix86_expand_builtin) [IX86_BUILTIN_INFQ]: Expand builtin.
7149         [IX86_BUILTIN_FABSQ]: Expand builtin using ix86_expand_unop_builtin().
7150         [IX86_BUILTIN_COPYSIGNQ]: Expand builtin using
7151         ix86_expand_binop_builtin().
7152
7153 2007-06-07  Bob Wilson  <bob.wilson@acm.org>
7154
7155         * config/xtensa/lib1funcs.asm: Clean up whitespace.
7156
7157 2007-06-07  Steve Ellcey  <sje@cup.hp.com>
7158
7159         PR target/31850
7160         * rtl.h (push_to_sequence2): New.
7161         * emit-rtl.c (push_to_sequence2): New.
7162         * function.c (assign_parm_data_all): Add new fields.
7163         (assign_parm_setup_block): Call push_to_sequence2 instead of
7164         push_to_sequence.
7165         (assign_parm_setup_reg): Ditto.
7166         (assign_parm_setup_stack): Ditto.
7167         (assign_parms_unsplit_complex): Ditto.
7168         (assign_parms): Change field name.
7169
7170 2007-06-07  Zdenek Dvorak  <dvorakz@suse.cz>
7171
7172         PR tree-optimization/32220
7173         * tree-predcom.c (eliminate_temp_copies): Handle the case that loop
7174         phi node is reached before defining statement.
7175
7176 2007-06-06  Andrew Pinski  <andrew_pinski@playstation.sony.com>
7177
7178         PR tree-opt/32231
7179         * tree-vect-transform.c (vectorizable_call): Call update_stmt
7180         after changing the right hand side of the assignment.
7181
7182 2007-06-06  Eric Christopher  <echristo@apple.com>
7183
7184         * config.gcc (i?86-*-darwin*): Remove arch parameter.
7185         (x86_64-*-darwin*): Ditto.
7186         * config/i386/darwin.h (TARGET_SUBTARGET32_ISA_DEFAULT): Define.
7187         (TARGET_SUBTARGET64_ISA_DEFAULT): Ditto.
7188
7189 2007-06-06  Thomas Neumann  <tneumann@users.sourceforge.net>
7190
7191         * tree-ssa-alias-warnings.c (maybe_add_match): Cast according to the
7192         coding conventions.
7193         (add_key): Likewise.
7194         * tree-ssa.c (init_tree_ssa): Use type safe memory macros.
7195         * tree-ssa-ccp.c (ccp_fold_builtin): Avoid using C++ keywords as
7196         variable names.
7197         * tree-ssa-coalesce.c (find_coalesce_pair): Use type safe memory
7198         macros.
7199         (add_cost_one_coalesce): Likewise.
7200         * tree-ssa-copy.c (merge_alias_info): Avoid using C++ keywords as
7201         variable names. Rename orig to orig_name for consistency.
7202         * tree-ssa-dom.c (dom_thread_across_edge): Cast according to the
7203         coding conventions.
7204         (cprop_into_successor_phis): Avoid using C++ keywords as variable
7205         names.
7206         (record_equivalences_from_stmt): Likewise.
7207         * tree-ssa-dse.c (dse_initialize_block_local_data): Cast according to
7208         the coding conventions.
7209         (memory_ssa_name_same): Likewise.
7210         (dse_optimize_stmt): Likewise.
7211         (dse_record_phis): Likewise.
7212         (dse_finalize_block): Likewise.
7213         * tree-ssa-loop-im.c (outermost_invariant_loop_expr): Avoid using C++
7214         keywords as variable names.
7215         (may_move_till): Cast according to the coding conventions.
7216         (force_move_till_expr): Avoid using C++ keywords as variable names.
7217         (force_move_till): Cast according to the coding conventions.
7218         (memref_hash): Likewise.
7219         (memref_eq): Likewise.
7220         (gather_mem_refs_stmt): Likewise.
7221         * tree-ssa-loop-ivopts.c (contains_abnormal_ssa_name_p): Avoid
7222         using C++ keywords as variable names.
7223         (idx_find_step): Cast according to the coding conventions.
7224         (idx_record_use): Likewise.
7225         (find_depends): Likewise.
7226         (prepare_decl_rtl): Likewise.
7227         (mbc_entry_hash): Likewise.
7228         (mbc_entry_eq): Likewise.
7229         * tree-ssa-loop-niter.c (SWAP): Use the correct the type for tmp.
7230         (simplify_replace_tree): Avoid using C++ keywords as variable names.
7231         (idx_infer_loop_bounds): Cast according to the coding conventions.
7232         * tree-ssa-loop-prefetch.c (idx_analyze_ref): Likewise.
7233         * tree-ssa-math-opts.c (occ_new ): Likwise.
7234         * tree-ssanames.c (duplicate_ssa_name_ptr_info): Use type safe memory
7235         macros.
7236         * tree-ssa-operands.c (add_def_op): Avoid using C++ keywords as
7237         variable names.
7238         (add_use_op): Likewise.
7239         (add_vop): Likewise.
7240         (add_vuse_op): Likewise.
7241         (add_vdef_op): Likewise.
7242         (get_expr_operands): Likewise.
7243         (push_stmt_changes): Use type safe memory macros.
7244         * tree-ssa-phiopt.c (replace_phi_edge_with_variable): Avoid using C++
7245         keywords as variable names.
7246         (conditional_replacement): Likewise.
7247         (minmax_replacement): Likewise.
7248         (abs_replacement): Likewise.
7249         * tree-ssa-pre.c (create_expression_by_pieces): Cast according to the
7250         coding conventions.
7251         (insert_fake_stores): Avoid using C++ keywords as variable names.
7252         * tree-ssa-reassoc.c (add_to_ops_vec): Cast according to the coding
7253         conventions.
7254         * tree-ssa-structalias.c (heapvar_lookup): Likewise.
7255         (heapvar_insert): Use type safe memory macros.
7256         (new_var_info): Cast according to the coding conventions.
7257         (new_constraint): Likewise.
7258         (remove_preds_and_fake_succs): Use type safe memory macros.
7259         * tree-ssa-threadupdate.c (thread_block): Cast according to the coding
7260         conventions.
7261         (thread_single_edge): Likewise.
7262         (thread_through_loop_header): Likewise.
7263
7264 2007-06-06  Eric Christopher  <echristo@apple.com>
7265
7266         * config/i386/i386.c (override_options): Move handling
7267         of TARGET_SUBTARGET* earlier.
7268
7269 2007-06-06  Paolo Bonzini  <bonzini@gnu.org>
7270
7271         * genmodes.c (tagged_printf, emit_insn_modes_h): Don't
7272         use %n on printf.
7273
7274 2007-06-06  Zdenek Dvorak  <dvorakz@suse.cz>
7275
7276         * haifa-sched.c (restore_bb_notes): Clear bb field of the notes
7277         emited outside of basic block.
7278         * cfgbuild.c (find_bb_boundaries): Clear bb field for insns between
7279         the created blocks.
7280         * rtl.h (delete_insn_chain): Declaration changed.
7281         * cfgrtl.c (delete_insn_chain): Add option to clear bb field for
7282         non-removed insns.
7283         (rtl_delete_block, rtl_merge_blocks): Pass true to delete_insn_chain.
7284         (delete_insn_chain_and_edges, try_redirect_by_replacing_jump,
7285         rtl_tidy_fallthru_edge, cfg_layout_merge_blocks): Pass false
7286         to delete_insn_chain.
7287         (rtl_verify_flow_info_1): Verify that the insns in header and footer
7288         do not have bb field set.
7289         (rtl_verify_flow_info): Verify that insns between basic blocks do not
7290         have bb field set.
7291         * recog.c (peephole2_optimize): Add argument to delete_insn_chain call.
7292         * cfgcleanup.c (try_optimize_cfg): Ditto.
7293
7294 2007-06-06  Thomas Neumann  <tneumann@users.sourceforge.net>
7295
7296         * lambda-code.c (struct lambda_lattice_s): Add a name to the struct.
7297         (lambda_body_vector_new): Use type safe memory macros.
7298         (lambda_linear_expression_new): Likewise.
7299         (lambda_loopnest_new): Likewise.
7300         (lambda_lattice_new): Likewise.
7301         (replace_uses_equiv_to_x_with_y): Cast according to the coding
7302         conventions. Use type safe memory macros.
7303         * lambda.h (struct lambda_trans_matrix_s): Add a name to the struct.
7304         (lambda_body_vector_s): Likewise.
7305         * lambda-mat.c (lambda_matrix_new): Use type safe memory macros.
7306         * lambda-trans.c (lambda_trans_matrix_new): Likewise.
7307
7308 2007-06-06  Richard Guenther  <rguenther@suse.de>
7309
7310         * tree-ssa-forwprop.c (forward_propagate_into_cond): Return 2
7311         if we need to schedule cfg_cleanup.
7312         (tree_ssa_forward_propagate_single_use_vars): Do so.
7313
7314 2007-06-06  Ian Lance Taylor  <iant@google.com>
7315
7316         * fold-const.c (merge_ranges): If range_successor or
7317         range_predecessor fail, just return 0.
7318
7319 2007-06-06  Uros Bizjak  <ubizjak@gmail.com>
7320
7321         PR tree-optimization/32216
7322         * tree-vectorizer.c (supportable_widening_operation): Determine
7323         signedness of FIX_TRUNC_EXPR from output operand.
7324         (supportable_narrowing_operation): Ditto.
7325         * tree-vect-generic.c (expand_vector_operations_1): Determine
7326         signedness of VEC_UNPACK_FLOAT_HI_EXPR and VEC_UNPACK_FLOAT_LO_EXPR
7327         from input operand.
7328
7329 2007-06-06  Thomas Neumann  <tneumann@users.sourceforge.net>
7330
7331         * config/i386/i386.c (enum pta_flags): Move out of struct scope...
7332         (struct pta): ...from here. Change flags to unsigned to avoid
7333         excessive casting (as it is used as a bit mask).
7334         (override_options): Add casts according to the coding convenventions.
7335         (x86_64_elf_unique_section): Likewise.
7336         (examine_argument): Avoid using C++ keywords as variable names.
7337         (construct_container): Likewise.
7338         (legitimize_pic_address): Likewise.
7339         (get_dllimport_decl): Cast according to the coding conventions. Use
7340         type safe memory macros.
7341         (legitimize_address): Cast according to the coding conventions.
7342         (emit_i387_cw_initialization): Corrected the type of slot to enum
7343         ix86_stack_slot.
7344         (ix86_init_machine_status): Use type safe memory macros.
7345         (bdesc_pcmpestr): Use UNKNOWN instead of integer 0.
7346         (bdesc_pcmpistr): Likewise.
7347         (bdesc_crc32): Likewise.
7348         (bdesc_sse_3arg): Likewise.
7349         (bdesc_2arg): Likewise.
7350         (bdesc_1arg): Likewise.
7351         (ix86_expand_sse_pcmpestr): Cast according to the coding conventions.
7352         (ix86_expand_sse_pcmpistr): Likewise.
7353         (ix86_expand_vec_set_builtin): Use EXPAND_NORMAL instead of integer 0.
7354         (ix86_builtin_vectorized_function): Change the type of fn to unsigned
7355         int to match the langhook definition.
7356         (ix86_builtin_conversion): Change the type of code to unsigned init to
7357         match the langhook definition.
7358         (ix86_preferred_reload_class): Avoid using C++ keywords as variable
7359         names.
7360         (ix86_preferred_output_reload_class): Likewise.
7361         (ix86_cannot_change_mode_class): Likewise.
7362         (ix86_memory_move_cost): Likewise.
7363         (ix86_rtx_costs): Cast the outer_code parameter to enum rtx_code to
7364         avoid excessive casting later on.
7365         (x86_output_mi_thunk): Avoid using C++ keywords as variable names.
7366
7367 2007-06-06  Uros Bizjak  <ubizjak@gmail.com>
7368
7369         * config/i386/sse.md (sse4_2_pcmpestr_cconly): Prefer pcmpestrm
7370         as flags setting insn.
7371         (sse4_2_pcmpistr_cconly): Prefer pcmpistrm as flags setting insn.
7372
7373 2007-06-06  Uros Bizjak  <ubizjak@gmail.com>
7374
7375         * config/i386/i386.md (UNSPEC_ROUNDP, UNSPEC_ROUNDS): Remove.
7376         (UNSPEC_ROUND): New.
7377         ("sse4_1_round<mode>2"): New insn pattern.
7378         ("rint<mode>2"): Expand using "sse4_1_round<mode>2" pattern for
7379         SSE4.1 targets.
7380         ("floor<mode>2"): Rename from floordf2 and floorsf2.  Macroize
7381         expander using SSEMODEF mode macro.  Expand using
7382         "sse4_1_round<mode>2" pattern for SSE4.1 targets.
7383         ("ceil<mode>2"): Rename from ceildf2 and ceilsf2.  Macroize
7384         expander using SSEMODEF mode macro.  Expand using
7385         "sse4_1_round<mode>2" pattern for SSE4.1 targets.
7386         ("btrunc<mode>2"): Rename from btruncdf2 and btruncsf2.  Macroize
7387         expander using SSEMODEF mode macro.  Expand using
7388         "sse4_1_round<mode>2" pattern for SSE4.1 targets.
7389         * config/i386/sse.md ("sse4_1_roundpd", "sse4_1_roundps"): Use
7390         UNSPEC_ROUND instead of UNSPEC_ROUNDP.
7391         ("sse4_1_roundsd", "sse4_1_roundss"): Use UNSPEC_ROUND instead of
7392         UNSPEC_ROUNDS.
7393
7394 2007-06-06  Jan Sjodin  <jan.sjodin@amd.com>
7395             Sebastian Pop  <sebpop@gmail.com>
7396
7397         * lambda.h (build_linear_expr): New.
7398         * lambda-code.c (lbv_to_gcc_expression, lle_to_gcc_expression):
7399         Use build_linear_expr, call fold and force_gimple_operand.
7400         (lambda_loopnest_to_gcc_loopnest): Check that there is
7401         something to insert.
7402         * testsuite/gcc.dg/tree-ssa/ltrans-6.c: New.
7403
7404 2007-06-05  Joerg Wunsch  <j.gnu@uriah.heep.sax.de>
7405
7406         PR preprocessor/23479
7407         * doc/extend.texi: Document the 0b-prefixed binary integer
7408         constant extension.
7409
7410 2007-06-05  Uros Bizjak  <ubizjak@gmail.com>
7411
7412         PR tree-optimization/32215
7413         * tree-vectorizer.c (supportable_widening_operation): Return false
7414         for unsupported FIX_TRUNC_EXPR tree code.
7415         (supportable_narrowing_operation): Ditto for FLOAT_EXPR tree code.
7416
7417 2007-06-06  Nathan Froyd  <froydnj@codesourcery.com>
7418
7419         * config/rs6000/rs6000.h (FIXED_SCRATCH): Use r0 as a scratch
7420         register on SPE targets.  Change documentation to reflect
7421         reality.
7422         * config/rs6000/rs6000.c (rs6000_conditional_register_usage):
7423         Change FIXED_SCRATCH to 14 and document why we're keeping r14
7424         out of the register allocation pool.
7425         (rs6000_reg_live_or_pic_offset_p): New function.
7426         (rs6000_emit_prologue): Move the actual saving of LR up to free
7427         r0 for holding r11.  Split saving of SPE 64-bit registers into
7428         its own case.  Ensure that offsets will always be in-range for
7429         'evstdd' by using r11 as a scratch register to point at the start
7430         of the SPE save area.  Save r11 if necessary, as it is the static
7431         chain register.
7432         (rs6000_emit_epilogue): Split restoring of SPE 64-bit registers
7433         into its own case.  Ensure that offsets will always be in-range
7434         for 'evldd' by using r11 as a scratch register to point at the
7435         start of the SPE save area.  Also adjust r11 when restoring
7436         the stack pointer to compensate for pre-loading r11.
7437
7438 2007-06-05  Thomas Neumann  <tneumann@users.sourceforge.net>
7439
7440         * cfg.c (init_flow): Use type safe memory macros.
7441         (alloc_block): Likewise.
7442         (unchecked_make_edge): Likewise.
7443         (dump_flow_info): Avoid using C++ keywords as variable names.
7444         (copy_original_table_clear): Cast according to the coding conventions.
7445         (copy_original_table_set): Likewise.
7446         * cfgexpand (label_rtx_for_bb): Likewise.
7447         (expand_gimple_basic_block): Likewise.
7448         * cfghooks.c (dump_bb): Likewise.
7449         (lv_adjust_loop_header_phi): Avoid using C++ keywords as
7450         variable names.
7451         (lv_add_condition_to_bb): Likewise.
7452         * cfglayout (relink_block_chain): Cast according to the coding
7453         conventions.
7454         (fixup_reorder_chain): Likewise.
7455         (fixup_fallthru_exit_predecessor): Likewise.
7456         * cfgloop.c (glb_enum_p): Likewise.
7457         (get_exit_description): Likewise.
7458         (dump_recorded_exit): Likewise.
7459         * cfgloop.h (enum loop_estimation): Move out of struct scope...
7460         (struct loop): ... from here.
7461         * cfgloopmanip.c (rpe_enum_p): Cast according to the coding
7462         conventions.
7463         * cfgrtl.c (rtl_create_basic_block): Likewise.
7464         (rtl_split_block): Likewise.
7465         (rtl_dump_bb): Likewise.
7466         (cfg_layout_split_block): Likewise.
7467         (init_rtl_bb_info): Use typesafe memory macros.
7468
7469         * graphds.h (struct graph_edge): Renamed edge to graph_edge.
7470         * graphds.h: Updated all usages of edge to graph_edge.
7471         * graphds.c: Likewise.
7472         * cfgloopanal.c: Likewise.
7473
7474 2007-06-05  Ian Lance Taylor  <iant@google.com>
7475
7476         * tree-vrp.c (compare_values_warnv): Check TREE_NO_WARNING on a
7477         PLUS_EXPR or MINUS_EXPR node before setting *strict_overflow_p.
7478         (extract_range_from_assert): Set TREE_NO_WARNING when creating an
7479         expression.
7480         (test_for_singularity): Likewise.
7481
7482 2007-06-05  H.J. Lu  <hongjiu.lu@intel.com>
7483
7484         * config/i386/constraints.md ("Y2"): Replaced by ...
7485         ("Yt"): This.
7486         * config/i386/i386.md: Likewise.
7487         * config/i386/mmx.md: Likewise.
7488         * config/i386/sse.md: Likewise.
7489
7490 2007-06-05  H.J. Lu  <hongjiu.lu@intel.com>
7491
7492         * config/i386/constraints.md ("z"): Replaced by ...
7493         ("Y0"): This.
7494         * config/i386/sse.md (sse4_1_blendvpd): Likewise.
7495         (sse4_1_blendvps): Likewise.
7496         (sse4_1_pblendvb): Likewise.
7497         (sse4_2_pcmpestr): Likewise.
7498         (sse4_2_pcmpestrm): Likewise.
7499         (sse4_2_pcmpestr_cconly): Likewise.
7500         (sse4_2_pcmpistr): Likewise.
7501         (sse4_2_pcmpistrm): Likewise.
7502         (sse4_2_pcmpistr_cconly): Likewise.
7503
7504 2007-06-05  Razya Ladelsky  <razya@il.ibm.com>
7505
7506         * matrix-reorg.c (transform_access_sites): Fix computation.
7507         (transform_allocation_sites): Same.
7508
7509 2007-06-05  Uros Bizjak  <ubizjak@gmail.com>
7510
7511         * config/i386/i386.c (override_options): Use
7512         TARGET_SUBTARGET32_ISA_DEFAULT to select default ix86_isa_flags.
7513
7514 2007-06-05  Uros Bizjak  <ubizjak@gmail.com>
7515
7516         * config/i386/predicates.md (reg_not_xmm0_operand): New predicate.
7517         (nonimm_not_xmm0_operand): Ditto.
7518         * config/i386/sse.md ("sse4_1_blendvpd"): Use "reg_not_xmm0_operand"
7519         as operand[0] and operand[1] predicate.  Use "nonimm_not_xmm0_operand"
7520         as operand[2] predicate.  Require "z" class XMM register for
7521         operand[3].  Adjust asm template.
7522         ("sse4_1_blendvpd"): Ditto.
7523         ("sse4_1_pblendvb"): Ditto.
7524         * config/i386/i386.c (ix86_expand_sse_4_operands_builtin): Do not
7525         force op2 into xmm0 register for variable blend instructions.
7526
7527 2007-06-04  Tom Tromey  <tromey@redhat.com>
7528
7529         * c-tree.h (start_enum): Update.
7530         (build_enumerator): Likewise.
7531         * c-decl.c (enum_next_value): Removed.
7532         (enum_overflow): Likewise.
7533         (start_enum): Add c_enum_contents argument.  Don't use globals.
7534         (build_enumerator): Likewise.
7535         * c-tree.h (struct c_enum_contents): New struct.
7536
7537 2007-06-04  Tom Tromey  <tromey@redhat.com>
7538
7539         * c-common.c (c_common_get_alias_set): Fix indentation.
7540
7541 2007-06-04  Ian Lance Taylor  <iant@google.com>
7542
7543         * tree-vrp.c (adjust_range_with_scev): When loop is not expected
7544         to overflow, reduce overflow infinity to regular infinity.
7545         (vrp_var_may_overflow): New static function.
7546         (vrp_visit_phi_node): Check vrp_var_may_overflow.
7547
7548 2007-06-04  Kazu Hirata  <kazu@codesourcery.com>
7549
7550         * stor-layout.c (layout_type): Remove duplicate code.
7551
7552 2007-06-04  Uros Bizjak  <ubizjak@gmail.com>
7553
7554         PR c/32191
7555         * gcc/c-common.c (c_define_builtins): Call targetm.init_builtins ()
7556         before build_common_builtin_nodes ().
7557
7558 2007-06-04  Steve Ellcey  <sje@cup.hp.com>
7559
7560         PR target/31733
7561         * cfgrtl.c (rtl_verify_flow_info): Skip notes when looking for barrier.
7562
7563 2007-06-04  Jan Hubicka  <jh@suse.cz>
7564
7565         * tree-predcom.c (replace_ref_with, initialize_root_vars_lm,
7566         reassociate_to_the_same_stmt): Call build_gimple_modify_stmt
7567         instead of _stat version.
7568
7569 2007-06-03  Zdenek Dvorak  <dvorakz@suse.cz>
7570
7571         PR tree-optimization/32194
7572         * tree-predcom.c (determine_offset): Check that both references have
7573         the same type.
7574
7575 2007-06-03  Zdenek Dvorak  <dvorakz@suse.cz>
7576
7577         * cfgloopmanip.c (remove_path, loopify, duplicate_loop_to_header_edge):
7578         Change dom_bbs to vector.  Add argument to iterate_fix_dominators call.
7579         * loop-unroll.c (unroll_loop_runtime_iterations): Ditto.
7580         * tree-cfg.c (tree_duplicate_sese_region): Change doms to vector.
7581         Add argument to iterate_fix_dominators call.
7582         (remove_edge_and_dominated_blocks): Pass vector to bbs_to_fix_dom.
7583         * gcse.c (hoist_code): Change domby to vector.
7584         * cfghooks.c (make_forwarder_block): Change doms_to_fix to vector.
7585         Add argument to iterate_fix_dominators call.
7586         * loop-doloop.c (doloop_modify): Changed recount_dominator to
7587         recompute_dominator.
7588         * lambda-code.c (perfect_nestify): Ditto.
7589         * cfgloopanal.c: Include graphds.h.
7590         (struct edge, struct vertex, struct graph, dump_graph, new_graph,
7591         add_edge, dfs, for_each_edge, free_graph): Moved to graphds.c.
7592         (mark_irreducible_loops): Use graphds_scc.  Remove argument from
7593         add_edge call.
7594         * graphds.c: New file.
7595         * graphds.h: New file.
7596         * dominance.c: Include vecprim.h, pointer-set.h and graphds.h.
7597         (get_dominated_by, get_dominated_by_region): Change return type to
7598         vector.
7599         (verify_dominators): Recompute all dominators and compare the results.
7600         (recount_dominator): Renamed to ...
7601         (recompute_dominator): ... this.  Do not check that the block is
7602         dominated by entry.
7603         (iterate_fix_dominators): Reimplemented.
7604         (prune_bbs_to_update_dominators, root_of_dom_tree,
7605         determine_dominators_for_sons): New functions.
7606         * et-forest.c (et_root): New function.
7607         * et-forest.h (et_root): Declare.
7608         * Makefile.in (graphds.o): Add.
7609         (cfgloopanal.o): Add graphds.h dependency.
7610         (dominance.o): Add graphds.h, vecprim.h and pointer-set.h dependency.
7611         * basic-block.h (get_dominated_by, get_dominated_by_region,
7612         iterate_fix_dominators): Declaration changed.
7613         (recount_dominator): Renamed to ...
7614         (recompute_dominator): ... this.
7615         * tree-ssa-threadupdate.c (thread_block): Free dominance info.
7616         (thread_through_all_blocks): Do not free dominance info.
7617
7618 2007-06-03  Andreas Schwab  <schwab@suse.de>
7619
7620         * config/m68k/m68k.c (override_options): Don't override
7621         REAL_MODE_FORMAT.
7622         * config/m68k/m68k-modes.def (SF, DF): Define to use
7623         motorola_single_format and motorola_double_format, resp.
7624         * real.c (motorola_single_format): Renamed from
7625         coldfire_single_format.
7626         (motorola_double_format): Renamed from coldfire_double_format.
7627         (encode_ieee_extended): Generate a proper canonical NaN image
7628         respecting canonical_nan_lsbs_set.
7629         (ieee_extended_motorola_format): Set canonical_nan_lsbs_set to
7630         true.
7631         * real.h: Adjust declarations.
7632
7633 2007-06-03  Kaz Kojima  <kkojima@gcc.gnu.org>
7634
7635         PR target/32163
7636         * config/sh/sh.md (symGOT_load): Don't schedule insns when
7637         the symbol is generated with the stack protector.
7638
7639 2007-06-03  Kazu Hirata  <kazu@codesourcery.com>
7640
7641         * config/m68k/m68k.c (m68k_attribute_table): Add "interrupt".
7642         (m68k_get_function_kind): Return m68k_fk_interrupt_handler on
7643         "interrupt".
7644         * doc/extend.texi (interrupt): Mention m68k.
7645
7646 2007-06-02  Uros Bizjak  <ubizjak@gmail.com>
7647
7648         * config/i386/i386.c (ix86_expand_sse_4_operands_builtin): Call
7649         safe_vector_operand() if input operand is VECTOR_MODE_P operand.
7650         (ix86_expand_sse_pcmpestr): Do not check operands for
7651         "register_operand", when insn operand predicate is "register_operand".
7652         (ix86_expand_sse_pcmpistr): Ditto.
7653
7654 2007-06-02  H.J. Lu  <hongjiu.lu@intel.com>
7655             Uros Bizjak  <ubizjak@gmail.com>
7656
7657         * config/i386/i386.h (enum reg_class) [SSE_FIRST_REG]: New.
7658         (SSE_CLASS_P): Use reg_class_subset_p between SSE_REGS.
7659         (REG_CLASS_NAMES): Add "FIRST_SSE_REG" string.
7660         (REG_CLASS_CONTENTS): Add members of FIRST_SSE_REG class.
7661         * config/i386/constraints.md ("z"): New register constraint
7662         for members of SSE_FIRST_REG class.
7663         * config/i386/i386-modes.def (CCA, CCC, CCO, CCS): New compare modes.
7664         * config/i386/i386.c (regclass_map): Change class of %xmm0 to
7665         SSE_FIRST_REG class.
7666         (put_condition_code) [EQ, NE]: Output suffixes for new compare modes.
7667         (ix86_cc_modes_compatible): Handle CCA, CCC, CCO and CCS modes.
7668         (IX86_BUILTIN_PCMPESTRI128): New for SSE4.2.
7669         (IX86_BUILTIN_PCMPESTRM128): Likewise.
7670         (IX86_BUILTIN_PCMPESTRA128): Likewise.
7671         (IX86_BUILTIN_PCMPESTRC128): Likewise.
7672         (IX86_BUILTIN_PCMPESTRO128): Likewise.
7673         (IX86_BUILTIN_PCMPESTRS128): Likewise.
7674         (IX86_BUILTIN_PCMPESTRZ128): Likewise.
7675         (IX86_BUILTIN_PCMPISTRI128): Likewise.
7676         (IX86_BUILTIN_PCMPISTRM128): Likewise.
7677         (IX86_BUILTIN_PCMPISTRA128): Likewise.
7678         (IX86_BUILTIN_PCMPISTRC128): Likewise.
7679         (IX86_BUILTIN_PCMPISTRO128): Likewise.
7680         (IX86_BUILTIN_PCMPISTRS128): Likewise.
7681         (IX86_BUILTIN_PCMPISTRZ128): Likewise.
7682         (struct builtin_description): Change "flag" field to unsigned.
7683         (bdesc_pcmpestr): New builtin description table.
7684         (bdesc_pcmpistr): Likewise.
7685         (ix86_init_mmx_sse_builtins): Define int_ftype_v16qi_int_v16qi_int_int,
7686         v16qi_ftype_v16qi_int_v16qi_int_int and int_ftype_v16qi_v16qi_int.
7687         Initialize pcmp[ei]str[im] insns for SSE4.2.
7688         (ix86_expand_sse_pcmpestr): New subroutine of ix86_expand_builtin.
7689         (ix86_expand_sse_pcmpistr): Likewise.
7690         (ix86_expand_builtin): Expand pcmp[ei]str[im] builtins for SSE4.2.
7691         * config/i386/i386.md (UNSPEC_PCMPESTR): New for SSE4.2.
7692         (UNSPEC_PCMPISTR): Likewise.
7693         * config/i386/sse.md (sse4_2_pcmpestr): New insn patern and splitter.
7694         (sse4_2_pcmpestri):New isns pattern.
7695         (sse4_2_pcmpestrm): Likewise.
7696         (sse4_2_pcmpestr_cconly): Likewise.
7697         (sse4_2_pcmpistr): New insn patern and splitter.
7698         (sse4_2_pcmpistri):New isns pattern.
7699         (sse4_2_pcmpistrm): Likewise.
7700         (sse4_2_pcmpistr_cconly): Likewise.
7701         * config/i386/smmintrin.h: Enable pcmp[ei]str[im] intrinsics
7702         in SSE4.2.
7703
7704 2007-06-01  David Daney  <ddaney@avtrex.com>
7705
7706         * config/mips/mips.c (mips_output_mi_thunk): Only load gp if not
7707         LOADGP_ABSOLUTE and not binds_local_p.
7708
7709 2007-06-01  Geoffrey Keating  <geoffk@apple.com>
7710
7711         * config/darwin.h (LINK_SPEC): Pass -fpie through to the linker.
7712
7713 2007-06-01  Ian Lance Taylor  <iant@google.com>
7714
7715         * tree-vrp.c (compare_name_with_value): Always set
7716         used_strict_overflow if we get a result from the variable itself.
7717
7718 2007-06-01  Ian Lance Taylor  <iant@google.com>
7719
7720         PR rtl-optimization/31455
7721         * lower-subreg.c (find_decomposable_subregs): Don't decompose
7722         subregs which have a cast between modes which are not tieable.
7723
7724 2007-06-01  Uros Bizjak  <ubizjak@gmail.com>
7725
7726         * expr.c (force_operand) [DIV, MOD, UDIV, UMOD, ASHIFTRT]: Remove
7727         breaks after return statements.
7728
7729 2007-06-01  Kaz Kojima  <kkojima@gcc.gnu.org>
7730
7731         * config/sh/sh.c (fpscr_set_from_mem): Call get_free_reg
7732         only after no_new_pseudos.
7733
7734 2007-05-31  Eric Christopher  <echristo@apple.com>
7735
7736         * expr.c (convert_move): Assert that we don't have a BLKmode
7737         operand.
7738         (store_expr): Handle BLKmode moves by calling emit_block_move.
7739
7740 2007-05-31  Daniel Berlin  <dberlin@dberlin.org>
7741
7742         * c-typeck.c (build_indirect_ref): Include type in error message.
7743         (build_binary_op): Pass types to binary_op_error.
7744         * c-common.c (binary_op_error): Take two type arguments, print out
7745         types with error.
7746         * c-common.h (binary_op_error): Update prototype.
7747
7748 2007-05-31  H.J. Lu  <hongjiu.lu@intel.com>
7749
7750         * config/i386/i386.c: Correct coments on -mno-sse4.
7751
7752 2007-05-31  H.J. Lu  <hongjiu.lu@intel.com>
7753
7754         * config.gcc (i[34567]86-*-*): Add nmmintrin.h to extra_headers.
7755         (x86_64-*-*): Likewise.
7756         * config/i386/i386.c (OPTION_MASK_ISA_MMX_UNSET): New.
7757         (OPTION_MASK_ISA_3DNOW_UNSET): Likewise.
7758         (OPTION_MASK_ISA_SSE_UNSET): Likewise.
7759         (OPTION_MASK_ISA_SSE2_UNSET): Likewise.
7760         (OPTION_MASK_ISA_SSE3_UNSET): Likewise.
7761         (OPTION_MASK_ISA_SSSE3_UNSET): Likewise.
7762         (OPTION_MASK_ISA_SSE4_1_UNSET): Likewise.
7763         (OPTION_MASK_ISA_SSE4_2_UNSET): Likewise.
7764         (OPTION_MASK_ISA_SSE4): Likewise.
7765         (OPTION_MASK_ISA_SSE4_UNSET): Likewise.
7766         (OPTION_MASK_ISA_SSE4A_UNSET): Likewise.
7767         (ix86_handle_option): Use OPTION_MASK_ISA_*_UNSET.  Handle SSE4.2.
7768         (override_options): Support SSE4.2.
7769         (ix86_build_const_vector): Support SImode and DImode.
7770         (ix86_build_signbit_mask): Likewise.
7771         (ix86_expand_int_vcond): Support V2DImode.
7772         (IX86_BUILTIN_CRC32QI): New for SSE4.2.
7773         (IX86_BUILTIN_CRC32HI): Likewise.
7774         (IX86_BUILTIN_CRC32SI): Likewise.
7775         (IX86_BUILTIN_CRC32DI): Likewise.
7776         (IX86_BUILTIN_PCMPGTQ): Likewise.
7777         (bdesc_crc32): Likewise.
7778         (bdesc_sse_3arg): Likewise.
7779         (ix86_expand_crc32): Likewise.
7780         (ix86_init_mmx_sse_builtins): Support SSE4.2.
7781         (ix86_expand_builtin): Likewise.
7782         * config/i386/i386.h (TARGET_CPU_CPP_BUILTINS): Define
7783         __SSE4_2__ for -msse4.2.
7784         * config/i386/i386.md (UNSPEC_CRC32): New for SSE4.2.
7785         (CRC32MODE): Likewise.
7786         (crc32modesuffix): Likewise.
7787         (crc32modeconstraint): Likewise.
7788         (sse4_2_crc32<mode>): Likewise.
7789         (sse4_2_crc32di): Likewise.
7790         * config/i386/i386.opt (msse4.2): New for SSE4.2.
7791         (msse4): Likewise.
7792         * config/i386/nmmintrin.h: New. The dummy SSE4.2 intrinsic header file.
7793         * config/i386/smmintrin.h: Add SSE4.2 intrinsics.
7794         * config/i386/sse.md (sse4_2_gtv2di3): New pattern for SSE4.2.
7795         (vcond<mode>): Use SSEMODEI instead of SSEMODE124.
7796         (vcondu<mode>): Likewise.
7797         * doc/extend.texi: Document SSE4.2 built-in functions.
7798         * doc/invoke.texi: Document -msse4.2/-msse4.
7799
7800 2007-05-31  Zdenek Dvorak  <dvorakz@suse.cz>
7801
7802         PR tree-optimization/32160
7803         * tree-predcom.c (predcom_tmp_var): New function.  Mark created
7804         variable as gimple reg.
7805         (initialize_root_vars, initialize_root_vars_lm): Use predcom_tmp_var.
7806
7807 2007-05-31  Kazu Hirata  <kazu@codesourcery.com>
7808
7809         * gcc.c (main): Don't consider linker options when issuing the
7810         warning about a linker input file not being used.
7811
7812 2007-05-30  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
7813
7814         * tree-vrp.c (compare_names): Initialize sop.
7815
7816 2007-05-30  Dirk Mueller  <dmueller@suse.de>
7817
7818         * cgraphunit.c (cgraph_analyze_function): Remove
7819         computation of inline parameters.
7820
7821 2007-05-30  Uros Bizjak  <ubizjak@gmail.com>
7822
7823         * config/i386/darwin.h (TARGET_SUBTARGET_DEFAULT): Undef before define.
7824
7825 2007-05-30  Richard Sandiford  <richard@codesourcery.com>
7826
7827         * config.gcc (arm-wrs-vxworks): Remove dbxelf.h from tm_file.
7828         Add vx-common.h.  Include vxworks.h between vx-common.h and
7829         arm/vxworks.h.
7830         * config/vx-common.h (DWARF2_UNWIND_INFO): Undefine before
7831         redefining.
7832         * config/vxworks.h (TARGET_ASM_CONSTRUCTOR): Likewise.
7833         (TARGET_ASM_DESTRUCTOR): Likewise.
7834         * config/arm/vxworks.h (TARGET_OS_CPP_BUILTINS): Check arm_arch_xscale
7835         instead of arm_is_xscale.  Use VXWORKS_OS_CPP_BUILTINS.
7836         (OVERRIDE_OPTIONS, SUBTARGET_CPP_SPEC): Define.
7837         (CC1_SPEC): Add -tstrongarm.  Line up backslashes.
7838         (VXWORKS_ENDIAN_SPEC): Define.
7839         (ASM_SPEC): Add VXWORKS_ENDIAN_SPEC.
7840         (LIB_SPEC, STARTFILE_SPEC, ENDFILE_SPEC): Redefine to their
7841         VXWORKS_* equivalents.
7842         (LINK_SPEC): Likewise, but add VXWORKS_ENDIAN_SPEC.
7843         (ASM_FILE_START): Delete.
7844         (TARGET_VERSION): Reformat.
7845         (FPUTYPE_DEFAULT, FUNCTION_PROFILER): Define.
7846         (DEFAULT_STRUCTURE_SIZE_BOUNDARY): Define.
7847         * config/arm/t-vxworks (LIB1ASMSRC, LIB1ASMFUNCS): Define.
7848         (FPBIT, DPBIT): Define.
7849         (fp-bit.c, dp-bit.c): New rules.
7850         (MULTILIB_OPTIONS): Add strongarm, -mrtp and -mrtp/-fPIC multilibs.
7851         (MULTILIB_MATCHES, MULTILIB_EXCEPTIONS): Define.
7852         * config/arm/arm-protos.h (arm_emit_call_insn): Declare.
7853         * config/arm/arm.h: Include vxworks-dummy.h.
7854         * config/arm/arm.c (arm_elf_asm_constructor, arm_elf_asm_destructor):
7855         Mark with ATTRIBUTE_UNUSED.
7856         (arm_override_options): Do not allow VxWorks RTP PIC to be used
7857         for Thumb.  Force r9 to be the PIC register for VxWorks RTPs and
7858         make it incompatible with -msingle-pic-base.
7859         (arm_function_ok_for_sibcall): Return false for calls that might
7860         go through a VxWorks PIC PLT entry.
7861         (require_pic_register): New function, split out from...
7862         (legitimize_pic_address): ...here.  Do not use GOTOFF accesses
7863         for VxWorks RTPs.
7864         (arm_load_pic_register): Handle the VxWorks RTP initialization
7865         sequence.  Use pic_reg as a shorthand for cfun->machine->pic_reg.
7866         (arm_emit_call_insn): New function.
7867         (arm_assemble_integer): Do not use GOTOFF accesses for VxWorks RTP.
7868         * config/arm/arm.md (UNSPEC_PIC_OFFSET): New unspec number.
7869         (pic_offset_arm): New pattern.
7870         (call, call_value): Use arm_emit_call_insn.
7871         (call_internal, call_value_internal): New expanders.
7872         * config/arm/lib1funcs.asm (__PLT__): Define to empty for
7873         VxWorks unless __PIC__.
7874
7875 2007-05-30  Eric Christopher  <echristo@gmail.com>
7876
7877         * genrecog.c: Include regs.h in generated file.
7878         * genemit.c: Ditto. Fix up formatting.
7879         * config/mn10300/constraints.md: New.
7880         * config/mn10300/mn10300.md: Include.
7881         * config/mn10300/mn10300.c(mn10300_secondary_reload_class):
7882         Fix up for removed macro.
7883         * config/mn10300/predicates.md (call_address_operand):  Ditto.
7884         * config/mn10300/mn10300.h (REG_CLASS_FROM_LETTER): Delete.
7885         (CONST_OK_FOR_I): Ditto.
7886         (CONST_OK_FOR_J): Ditto.
7887         (CONST_OK_FOR_K): Ditto.
7888         (CONST_OK_FOR_L): Ditto.
7889         (CONST_OK_FOR_M): Ditto.
7890         (CONST_OK_FOR_N): Ditto.
7891         (CONST_DOUBLE_OK_FOR_LETTER_P): Ditto.
7892         (OK_FOR_Q): Ditto.
7893         (OK_FOR_R): Ditto.
7894         (OK_FOR_T): Ditto.
7895         (EXTRA_CONSTRAINT): Ditto.
7896
7897 2007-05-30 Uros Bizjak <ubizjak@gmail.com>
7898
7899         * config/i386/i386.h (MASK_64BIT, MASK_MMX, MASK_3DNOW*, MASK_SSE*):
7900         Remove defines.
7901         * config/i386/biarch.h (TARGET_64BIT_DEFAULT): Define to
7902         OPTION_MASK_ISA_64BIT.
7903         * config/i386/i386.c: Rename MASK_* macros to OPTION_MASK_ISA_*.
7904
7905 2007-05-30  Richard Guenther  <rguenther@suse.de>
7906
7907         PR middle-end/32152
7908         * gimplify.c (gimplify_omp_atomic_pipeline): Use correct
7909         types for comparison.
7910         * fold-const.c (fold_comparison): Call maybe_canonicalize_comparison
7911         with original typed arguments.
7912         * config/i386/i386.c (ix86_gimplify_va_arg): Fix type mismatches.
7913
7914 2007-05-30  Jakub Jelinek  <jakub@redhat.com>
7915
7916         PR tree-optimization/31769
7917         * except.c (duplicate_eh_regions): Clear prev_try if
7918         ERT_MUST_NOT_THROW region is inside of ERT_TRY region.
7919
7920 2007-05-30  Zdenek Dvorak  <dvorakz@suse.cz>
7921
7922         * tree-scalar-evolution.c (scev_const_prop): Do not create labels.
7923         * tree-ssa-sink.c (statement_sink_location): Return basic block and
7924         bsi of the location where statements should be inserted.
7925         (sink_code_in_bb): Take bsi from statement_sink_location.
7926         * lambda-code.c (lambda_loopnest_to_gcc_loopnest): Use bsi_after_labels
7927         instead of bsi_start.
7928         * tree-profile.c (tree_gen_ic_func_profiler): Pass BSI_NEW_STMT to
7929         bsi_insert_after.
7930         * tree-cfg.c (bsi_move_after): Pass BSI_NEW_STMT to bsi_insert_after.
7931         (bsi_move_before): Document inconsistency with bsi_move_after.
7932         (tree_redirect_edge_and_branch): Do not create labels if not necessary.
7933
7934 2007-05-30 Uros Bizjak <ubizjak@gmail.com>
7935
7936         * config/i386/i386.h (TARGET_ABM): New define.
7937         (TARGET_POPCNT): Ditto.
7938         (TARGET_64BIT, TARGET_MMX, TARGET_3DNOW, TARGET_3DNOW_A, TARGET_SSE*):
7939         New temporary defines to redefine from OPTION_ISA_* defines.
7940         (MASK_64BIT, MASK_MMX, MASK_3DNOW, MASK_3DNOW_A, MASK_SSE*):
7941         New temporary defines to redefine from OPTION_MASK_ISA_* defines.
7942         (ix86_isa_flags): New extern int declaration.
7943         (TARGET_SUBTARGET_DEFAULT): New define.
7944         (TARGET_SUBTARGET_ISA_DEFAULT): Ditto.
7945         (TARGET_SUBTARGET32_DEFAULT): Ditto.
7946         (TARGET_SUBTARGET32_ISA_DEFAULT): Ditto.
7947         (TARGET_SUBTARGET64_ISA_DEFAULT): Ditto.
7948         * config/i386/unix.h: Undef TARGET_SUBTARGET_DEFAULT before define.
7949         * config/i386/darwin.h: Change TARGET_64BIT define to
7950         OPTION_ISA_64BIT.
7951
7952         * config/i386/i386.opt (m3dnowa): Define as undocumented option
7953         using existing "ix86_isa_flags" varible.
7954         (m32, m64): Use existing "ix86_isa_flags" variable.
7955         (mmmx, m3dnow): Ditto.
7956         (msse, msse2, msse3, mssse3, msse4.1, msse4a): Ditto.
7957         (mabm): Define as non-negative option using "x86_abm" variable.
7958         (mpopcnt): Define as non-negative option using "x86_popcnt" variable.
7959
7960         * config/i386/i386.c (ix86_arch_features) [X86_ARCH_CMOVE]:
7961         Rewrite feature test bitmap.
7962         (ix86_isa_flags): New initialized global int varible.
7963         (ix86_isa_flags_explicit): New static int variable.
7964         (ix86_handle_option): Set "ix86_isa_flags_explicit" when mmmx, m3dnow,
7965         msse, msse2, msse3, msse4.1 and msse4a option is processed.  Change
7966         i86_isa_flags and ix86_isa_flags_explicit, not target_flags and
7967         target_flags_explicit.
7968         (override_options): Remove "target_enable" and "target_disable" fields
7969         from "struct ptt". Update processor_target_table accordingly. Remove
7970         PTA_PREFETCH_SSE from processor_alias_table entry if PTE_SSE is
7971         defined and rearrange PTA_* bits.  Use "ix86_isa_flags" instead of
7972         "target_flags" and "ix86_isa_flags_explicit" instead of
7973         "target_flags_explicit" when masked with MASK_64BIT, MASK_MMX,
7974         MASK_3DNOW, MASK_3DNOW_A or MASK_SSE*.  Set "x86_abm" to true when
7975         PTA_ABM is set in processor_alias_table flags entry.  Set "x86_popcnt"
7976         to true when either of PTA_POPCNT or PTA_ABM is set in
7977         processor_alias_table flags entry.  Set "x86_prefetch_sse" to true
7978         when either of PTA_PREFETCH_SSE or PTA_SSE is set in
7979         processor_alias_table flags entry.  Remove handling of
7980         "target_enable" and "target_disable" fields of processor_target_table.
7981         Mask "target_flags" with TARGET_SUBTARGET32_DEFAULT for 32-bit
7982         targets or with TARGET_SUBTARGET64_DEFAULT for 64-bit targets.
7983         Mask "ix86_isa_flags" with TARGET_SUBTARGET32_ISA_DEFAULT for 32-bit
7984         targets or with TARGET_SUBTARGET64_ISA_DEFAULT for 64-bit targets.
7985         (def_builtin): Mask "mask" variable with "ix86_isa_flags", not
7986         "target_flags".
7987         (TARGET_DEFAULT_TARGET_FLAGS): Do not include TARGET_64BIT_DEFAULT.
7988
7989 2007-05-29  David Daney  <ddaney@avtrex.com>
7990
7991         PR gcc/31975
7992         * config/mips/mips.c (mips_output_mi_thunk): Emit
7993         NOTE_INSN_PROLOGUE_END at beginning of the thunk.
7994
7995 2007-05-29  Hui-May Chang  <hm.chang@apple.com>
7996         * config/i386/i386.c (ix86_function_regparm): Added checking of
7997         ix86_force_align_arg_pointer to determine the number of
7998         register parameters.
7999
8000 2007-05-29  Zdenek Dvorak  <dvorakz@suse.cz>
8001
8002         * tree-vectorizer.h (DR_MISALIGNMENT): Cast aux to integer.
8003         (SET_DR_MISALIGNMENT): New.
8004         * tree-vect-analyze.c (vect_compute_data_ref_alignment,
8005         vect_update_misalignment_for_peel, vect_enhance_data_refs_alignment):
8006         Use SET_DR_MISALIGNMENT.
8007         * tree-predcom.c (split_data_refs_to_components): Cast dr->aux from
8008         pointer.
8009         * tree-data-ref.c (create_data_ref, compute_all_dependences,
8010         find_loop_nest): Export.
8011         * tree-data-ref.h (struct data_reference): Change aux field to pointer.
8012         (create_data_ref, compute_all_dependences, find_loop_nest): Declare.
8013         * tree-ssa-loop-prefetch.c: Include tree-data-ref.h.
8014         (L1_CACHE_SIZE_BYTES, L2_CACHE_SIZE_BYTES, NONTEMPORAL_FRACTION):
8015         New macros.
8016         (struct mem_ref): Add field reuse_distance.
8017         (find_or_create_group, record_ref): Use XNEW instead of xcalloc.
8018         Initialize reuse_distance field.
8019         (issue_prefetch_ref): Select temporality of prefetch according to
8020         reuse_distance.
8021         (volume_of_references, volume_of_dist_vector, add_subscript_strides,
8022         self_reuse_distance, determine_loop_nest_reuse): New functions.
8023         (loop_prefetch_arrays): Call determine_loop_nest_reuse.
8024         (tree_ssa_prefetch_arrays): Dump L2 cache size.
8025         * Makefile.in (tree-ssa-loop-prefetch.o): Add TREE_DATA_REF_H
8026         dependency.
8027
8028 2007-05-29  Daniel Berlin  <dberlin@dberlin.org>
8029
8030         * tree-ssa-alias.c: Add aliasing overview.
8031
8032 2007-05-29  Zuxy Meng  <zuxy.meng@gmail.com>
8033             Danny Smith  <dannysmith@users.sourceforge.net>
8034
8035         PR target/29498
8036         * config/i386/t-crtfm: Compile crtfastmath.o with
8037         -minline-all-stringops.
8038         * config/i386/cygwin.h (ENDFILE_SPECS): Add crtfastmath.o.
8039         * config/i386/mingw32.h (ENDFILE_SPECS): Add crtfastmath.o.
8040
8041 2007-05-28  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
8042
8043         * doc/md.texi: Document constraints on HP PA-RISC.
8044
8045         * pa/constraints.md: New file.
8046         * pa.md: Include constraints.md.
8047         * pa.c (cint_ok_for_move): Avoid using CONST_OK_FOR_LETTER_P.
8048         (integer_store_memory_operand, ldil_cint_p): New functions.
8049         * pa-protos.h (integer_store_memory_operand, ldil_cint_p): Declare.
8050         * pa.h (CONST_OK_FOR_LETTER_P, CONST_DOUBLE_OK_FOR_LETTER_P,
8051         IS_RELOADING_PSEUDO_P, EXTRA_CONSTRAINT): Remove.
8052         * pa32-regs.h (REG_CLASS_FROM_LETTER): Remove.
8053         * pa64-regs.h (REG_CLASS_FROM_LETTER): Remove.
8054
8055 2007-05-28  Andrew Pinski  <Andrew_pinski@playstation.sony.com>
8056
8057         PR c/31339
8058         * c-typeck.c (build_unary_op <case PREINCREMENT_EXPR,
8059         case POSTINCREMENT_EXPR, case PREDECREMENT_EXPR,
8060         case POSTDECREMENT_EXPR>): Return the error_mark_node
8061         if either the real or imaginary parts would an
8062         error_mark_node.
8063
8064 2007-05-28  Daniel Berlin  <dberlin@dberlin.org>
8065
8066         * tree-ssa-dce.c (eliminate_unnecessary_stmts): Release LHS SSA
8067         name when we remove it from a call.
8068
8069 2007-05-28  Kazu Hirata  <kazu@codesourcery.com>
8070
8071         * targhooks.c (default_narrow_bitfield): Remove.
8072         * targhooks.h: Remove the prototype for
8073         default_narrow_bitfield.
8074
8075         * langhooks-def.h: Remove the prototype for
8076         hook_get_alias_set_0.
8077         * langhooks.c (hook_get_alias_set_0): Remove.
8078
8079         * global.c (EXECUTE_IF_CONFLICT): Remove.
8080
8081 2007-05-28  Andrew Pinski  <andrew_pinski@playstation.sony.com>
8082
8083         PR tree-opt/32100
8084         * fold-const.c (tree_expr_nonnegative_warnv_p): Don't
8085         return true when truth_value_p is true and the type
8086         is of signed:1.
8087
8088 2007-05-28  Gerald Pfeifer  <gerald@pfeifer.com>
8089
8090         * doc/install.texi (Prerequisites): We no longer require Autoconf
8091         2.13 for the top-level.
8092
8093 2007-05-28  Uros Bizjak  <ubizjak@gmail.com>
8094
8095         * target/i386/i386.c (ix86_expand_vector_move): Expand unaligned
8096         memory access via x86_expand_vector_move_misalign() only for
8097         TImode values on 32-bit targets.
8098
8099 2007-05-28  Razya Ladelsky  <razya@il.ibm.com>
8100
8101         * matrix-reorg.c: New file. Implement matrix flattening and
8102         transposing optimization.
8103         * tree-pass.h: Add matrix reorg pass.
8104         * common.opt: Add fipa-mreorg flag.
8105         * Makefile.in: Add matrix-reorg.c.
8106         * passes.c: Add matrix reorg pass.
8107         * varpool.c (add_new_static_var): New function.
8108         * cgraph.h (add_new_static_var): Declare.
8109
8110 2007-05-27  Eric Christopher  <echristo@apple.com>
8111
8112         * config/rs6000/rs6000.c (rs6000_emit_prologue): Update
8113         sp_offset depending on stack size. Save r12 depending
8114         on registers we're saving later.
8115         (rs6000_emit_epilogue): Update sp_offset depending only
8116         on stack size.
8117
8118 2007-05-27  Zdenek Dvorak  <dvorakz@suse.cz>
8119
8120         * tree-vrp.c (execute_vrp): Do not check whether current_loops == NULL.
8121         * tree-chrec.c (evolution_function_is_invariant_rec_p): Ditto.
8122         * ifcvt.c (if_convert): Ditto.
8123         * tree-ssa-threadupdate.c (thread_block): Ditto.
8124         (thread_through_all_blocks): Ditto.  Assert that loops were analysed.
8125         * tree-ssa-loop-manip.c (rewrite_into_loop_closed_ssa,
8126         verify_loop_closed_ssa): Check number_of_loops instead of
8127         current_loops.
8128         * predict.c (tree_estimate_probability): Ditto.
8129         * tree-if-conv.c (main_tree_if_conversion): Ditto.
8130         * tree-ssa-loop-ch.c (copy_loop_headers): Ditto.
8131         * modulo-sched.c (sms_schedule): Ditto.
8132         * tree-scalar-evolution.c (scev_const_prop): Ditto.
8133         (scev_finalize): Do not do anything if scev analysis was not
8134         initialized.
8135         * cfgloopanal.c (mark_irreducible_loops): Do not check whether
8136         current_loops == NULL.
8137         (mark_loop_exit_edges): Check number_of_loops instead of current_loops.
8138         * loop-init.c (loop_optimizer_init): Do not free current_loops when
8139         there are no loops.
8140         (loop_optimizer_finalize): Assert that loops were analyzed.
8141         (rtl_move_loop_invariants, rtl_unswitch, rtl_unroll_and_peel_loops,
8142         rtl_doloop): Check number_of_loops instead of current_loops.
8143         * tree-ssa-loop.c (tree_loop_optimizer_init): Do not check whether
8144         current_loops == NULL.
8145         (tree_ssa_loop_init, tree_ssa_loop_im, tree_ssa_loop_unswitch,
8146         gate_tree_vectorize tree_linear_transform, check_data_deps,
8147         tree_ssa_loop_ivcanon, tree_ssa_empty_loop, tree_ssa_loop_bounds,
8148         tree_complete_unroll, tree_ssa_loop_prefetch, tree_ssa_loop_ivopts):
8149         Check number_of_loops instead of current_loops.
8150         (tree_ssa_loop_done): Do not check whether current_loops == NULL.
8151         * tree-ssa-pre.c (fini_pre): Do not take do_fre argument.  Always
8152         free loops if available.
8153         (execute_pre): Do not pass do_fre to fini_pre.
8154
8155 2007-05-27  Tobias Burnus  <burnus@net-b.de>
8156
8157         PR middle-end/32083
8158         * real.c (mpfr_from_real): Fix sign of -Inf.
8159
8160 2007-05-27  H.J. Lu  <hongjiu.lu@intel.com>
8161
8162         * tree-vect-transform.c (vectorizable_conversion): Initialize
8163         tree_code variables to ERROR_MARK.
8164         (vectorizable_type_demotion): Likewise.
8165         (vectorizable_type_promotion): Likewise.
8166
8167 2007-05-26  Uros Bizjak  <ubizjak@gmail.com>
8168
8169         PR target/32065
8170         * config/i386/i386.md (movti): Handle push operands via
8171         ix86_expand_push().
8172
8173 2007-05-26  Kazu Hirata  <kazu@codesourcery.com>
8174
8175         * basic-block.h: Remove the prototype for merge_seq_blocks.
8176         * cfgcleanup.c (merge_seq_blocks): Remove.
8177
8178         * tree-flow.h: Remove the prototype for is_aliased_with.
8179         * tree-ssa-alias.c (is_aliased_with): Remove.
8180
8181 2007-05-26  H.J. Lu  <hongjiu.lu@intel.com>
8182
8183         * config/i386/i386-protos.h (ix86_expand_sse4_unpack): New.
8184
8185         * config/i386/i386.c (ix86_expand_sse4_unpack): New.
8186
8187         * config/i386/sse.md (vec_unpacku_hi_v16qi): Call
8188         ix86_expand_sse4_unpack if SSE4.1 is enabled.
8189         (vec_unpacks_hi_v16qi): Likewise.
8190         (vec_unpacku_lo_v16qi): Likewise.
8191         (vec_unpacks_lo_v16qi): Likewise.
8192         (vec_unpacku_hi_v8hi): Likewise.
8193         (vec_unpacks_hi_v8hi): Likewise.
8194         (vec_unpacku_lo_v8hi): Likewise.
8195         (vec_unpacks_lo_v8hi): Likewise.
8196         (vec_unpacku_hi_v4si): Likewise.
8197         (vec_unpacks_hi_v4si): Likewise.
8198         (vec_unpacku_lo_v4si): Likewise.
8199         (vec_unpacks_lo_v4si): Likewise.
8200
8201 2007-05-26  Kazu Hirata  <kazu@codesourcery.com>
8202
8203         * c-typeck.c, config/arm/arm.c, config/darwin.c,
8204         config/sh/symbian.c, gcc.c, ipa-cp.c, ipa-inline.c, loop-iv.c,
8205         omega.c, tree-ssa-loop-niter.c, treestruct.def: Fix typos and
8206         follow spelling conventions in various
8207         warning/error/diagnostic messages.
8208
8209         * config/i386/i386.c, config/pa/pa.c, config/spu/spu.c,
8210         df-problems.c, df-scan.c, domwalk.c, ebitmap.c, ebitmap.h,
8211         fold-const.c, gcc.c, ipa-type-escape.c, omega.c, omega.h,
8212         tree-ssa-coalesce.c, tree-ssa-live.c, tree-ssa-structalias.c,
8213         tree-vrp.c: Fix comment typos.  Follow spelling conventions.
8214         * doc/tm.texi: Follow spelling conventions.
8215
8216 2007-05-25  Andrew Pinski  <andrew_pinski@playstation.sony.com>
8217
8218         PR tree-opt/32090
8219         * tree-ssa-forwprop.c
8220         (forward_propagate_addr_into_variable_array_index): Remove
8221         the lhs argument.  Use the type of def_rhs instead of lhs.
8222         (forward_propagate_addr_expr_1): Update use of
8223         forward_propagate_addr_into_variable_array_index.
8224
8225 2007-05-25  Sandra Loosemore  <sandra@codesourcery.com>
8226             Nigel Stephens  <nigel@mips.com>
8227
8228         * config/mips/mips.c (mips_attribute_table): Add "near" and "far"
8229         function attributes, "far" being an alias for "long_call".
8230         (TARGET_COMP_TYPE_ATTRIBUTES): Define as mips_comp_type_attributes.
8231         (mips_near_type_p, mips_far_type_p): New.
8232         (mips_comp_type_attributes): New function to check that attributes
8233         attached to a function type are compatible.
8234         (mips_output_mi_thunk): Test SYMBOL_REF_LONG_CALL_P() rather than
8235         TARGET_LONG_CALLS when deciding whether we can do a direct sibcall
8236         to the target function of the thunk.
8237         (mips_encode_section_info): Check for "near" and "far" function
8238         attributes, and always set the SYMBOL_FLAG_LONG_CALL bit explicitly.
8239
8240         * config/mips/predicates.md (const_call_insn_operand): Test only
8241         SYMBOL_REF_LONG_CALL_P() and not TARGET_LONG_CALLS.
8242
8243         * doc/extend.texi (Function Attributes): Document MIPS "near" and
8244         "far" attributes.
8245
8246         * testsuite/gcc.target/mips/near-far-1.c:  New test case.
8247         * testsuite/gcc.target/mips/near-far-2.c:  New test case.
8248         * testsuite/gcc.target/mips/near-far-3.c:  New test case.
8249         * testsuite/gcc.target/mips/near-far-4.c:  New test case.
8250
8251 2007-05-25  Eric Christopher  <echristo@apple.com>
8252
8253         * config.gcc: Add i386/t-fprules-softfp64 and soft-fp/t-softfp
8254         to x86-darwin configurations.
8255         * config/i386/t-darwin: Add softfp support.
8256         * config/i386/t-darwin64: Ditto.
8257         * config/i386/sfp-machine.h: If mach then don't use
8258         aliasing, emit a stub to call.
8259
8260 2007-05-25  Kazu Hirata  <kazu@codesourcery.com>
8261
8262         * cfglayout.c, cgraphunit.c, config/avr/avr.c, fold-const.c,
8263         haifa-sched.c, optabs.h, tree-affine.c, tree-data-ref.c,
8264         tree-predcom.c, tree-ssa-alias-warnings.c,
8265         tree-ssa-forwprop.c, tree-vect-analyze.c, tree-vrp.c: Fix
8266         comment typos.  Follow spelling conventions.
8267         * doc/cpp.texi, doc/invoke.texi: Fix typos.
8268
8269 2007-05-26  Uros Bizjak  <ubizjak@gmail.com>
8270
8271         PR target/32065
8272         * target/i386/i386.c (ix86_expand_vector_move): Force SUBREGs of
8273         constants into memory.  Expand unaligned memory references for
8274         SSE modes via x86_expand_vector_move_misalign() function.
8275
8276 2007-05-25  Uros Bizjak  <ubizjak@gmail.com>
8277
8278         * config/i386/sse.md (*vec_extractv2di_1_sse2): Do not calculate
8279         "memory" attribute for "sseishft" type insn without operands[2].
8280
8281 2007-05-25  Dirk Mueller  <dmueller@suse.de>
8282             Marcus Meissner <meissner@suse.de>
8283
8284         * doc/extend.texi (alloc_size): New attribute.
8285         * c-common.c (handle_alloc_size_attribute): New.
8286         * tree-object-size.c (alloc_object_size): Use alloc_size
8287         attribute, if available.
8288
8289 2007-05-25  H.J. Lu  <hongjiu.lu@intel.com>
8290
8291         * config/i386/i386.c (__builtin_ia32_vec_ext_v2df): Mark it
8292         with MASK_SSE2.
8293         (__builtin_ia32_vec_ext_v2di): Likewise.
8294         (__builtin_ia32_vec_ext_v4si): Likewise.
8295         (__builtin_ia32_vec_ext_v8hi): Likewise.
8296         (__builtin_ia32_vec_ext_v16qi): Likewise.
8297         (__builtin_ia32_vec_set_v8hi): Likewise.
8298
8299 2007-05-25  H.J. Lu  <hongjiu.lu@intel.com>
8300
8301         * config/i386/sse.md (*vec_extractv2di_1_sse2): Correct shift.
8302
8303 2007-05-25  Richard Sandiford  <richard@codesourcery.com>
8304
8305         * config/arm/arm-protos.h (arm_encode_call_attribute): Delete.
8306         (arm_is_longcall_p): Rename to...
8307         (arm_is_long_call_p): ...this.  Take a single tree argument and
8308         return a bool.
8309         * config/arm/arm.h (CALL_SHORT, CALL_LONG, CALL_NORMAL): Delete.
8310         (CUMULATIVE_ARGS): Remove call_cookie.
8311         (SHORT_CALL_FLAG_CHAR, LONG_CALL_FLAG_CHAR, ENCODED_SHORT_CALL_ATTR_P)
8312         (ENCODED_LONG_CALL_ATTR_P): Delete.
8313         (ARM_NAME_ENCODING_LENGTHS): Remove SHORT_CALL_FLAG_CHAR and
8314         LONG_CALL_FLAG_CHAR cases.
8315         (ARM_DECLARE_FUNCTION_SIZE): Delete.
8316         * config/arm/elf.h (ASM_DECLARE_FUNCTION_SIZE): Don't use
8317         ARM_DECLARE_FUNCTION_SIZE.
8318         * config/arm/arm.c (arm_init_cumulative_args): Don't set call_cookie.
8319         (arm_function_arg): Return const0_rtx for VOIDmode arguments.
8320         (arm_encode_call_attribute, current_file_function_operand): Delete.
8321         (arm_function_in_section_p): New function.
8322         (arm_is_longcall_p): Rename to...
8323         (arm_is_long_call_p): ...this.  Take the target function as a single
8324         argument and return a bool.  Do not rely on call cookies.  Check
8325         whether the target symbol is in the same section as the current
8326         function, not just the same compilation unit.
8327         (arm_function_ok_for_sibcall): Use arm_is_long_call_p.
8328         (arm_encode_section_info): Don't encode a call type.
8329         * config/arm/arm.md (call, call_value): Update calls to
8330         arm_is_long(_)call_p.  Simplify logic.
8331         (*call_symbol, *call_value_symbol, *call_insn, *call_value_insn):
8332         Update calls to arm_is_long(_)call_p.
8333
8334 2007-05-25  Richard Guenther  <rguenther@suse.de>
8335
8336         PR tree-optimization/31982
8337         * tree-ssa-forwprop.c
8338         (forward_propagate_addr_into_variable_array_index): Handle arrays
8339         with element size one.
8340
8341 2007-05-24  Andrew Pinski  <andrew_pinski@playstation.sony.com>
8342
8343         * config/spu/spu.md (smulsi3_highpart): Unshare the rtl chain.
8344         (umulsi3_highpart): Likewise.
8345
8346 2007-05-24  Ian Lance Taylor  <iant@google.com>
8347
8348         PR rtl-optimization/32069
8349         * regclass.c (regclass): Don't crash if the entry in regno_reg_rtx
8350         is NULL.
8351
8352 2007-05-24  Ollie Wild  <aaw@google.com>
8353
8354         * doc/cpp.texi (Common Predefined Macros): Add __COUNTER__
8355         description.
8356
8357 2007-05-24  Richard Sandiford  <rsandifo@nildram.co.uk>
8358
8359         * postreload-gcse.c (reg_changed_after_insn_p): New function.
8360         (oprs_unchanged_p): Use it to check all registers in a REG.
8361         (record_opr_changes): Look for clobbers in CALL_INSN_FUNCTION_USAGE.
8362         (reg_set_between_after_reload_p): Delete.
8363         (reg_used_between_after_reload_p): Likewise.
8364         (reg_set_or_used_since_bb_start): Likewise.
8365         (eliminate_partially_redundant_load): Use reg_changed_after_insn_p
8366         and reg_used_between_p instead of reg_set_or_used_since_bb_start.
8367         Use reg_set_between_p instead of reg_set_between_after_reload_p.
8368         * rtlanal.c (reg_set_p): Check whether REG overlaps
8369         regs_invalidated_by_call, rather than just checking the
8370         membership of REGNO (REG).
8371
8372 2007-05-24  Zdenek Dvorak  <dvorakz@suse.cz>
8373
8374         * doc/passes.texi: Document predictive commoning.
8375         * doc/invoke.texi (-fpredictive-commoning): Document.
8376         * opts.c (decode_options): Enable flag_predictive_commoning on -O3.
8377         * tree-ssa-loop-im.c (get_lsm_tmp_name): Export.  Allow
8378         adding indices to the generated name.
8379         (schedule_sm): Pass 0 to get_lsm_tmp_name.
8380         * tree-ssa-loop-niter.c (stmt_dominates_stmt_p): Export.
8381         * tree-pretty-print.c (op_symbol_1): Renamed to ...
8382         (op_symbol_code): ... and exported.
8383         (dump_omp_clause, op_symbol): Use op_symbol_code
8384         instead of op_symbol_1.
8385         * tree-pass.h (pass_predcom): Declare.
8386         * timevar.def (TV_PREDCOM): New timevar.
8387         * tree-ssa-loop.c (run_tree_predictive_commoning,
8388         gate_tree_predictive_commoning, pass_predcom): New.
8389         * tree-data-ref.c (find_data_references_in_loop): Find the
8390         references in dominance order.
8391         (canonicalize_base_object_address): Ensure that the result has
8392         pointer type.
8393         (dr_analyze_innermost): Export.
8394         (create_data_ref): Code to fail for references with invariant
8395         address moved ...
8396         (find_data_references_in_stmt): ... here.
8397         * tree-data-ref.h (dr_analyze_innermost): Declare.
8398         * tree-affine.c: Include tree-gimple.h and hashtab.h.
8399         (aff_combination_find_elt, name_expansion_hash,
8400         name_expansion_eq, tree_to_aff_combination_expand,
8401         double_int_constant_multiple_p, aff_combination_constant_multiple_p):
8402         New functions.
8403         * tree-affine.h (aff_combination_constant_multiple_p,
8404         tree_to_aff_combination_expand): Declare.
8405         * tree-predcom.c: New file.
8406         * common.opt (fpredictive-commoning): New option.
8407         * tree-flow.h (op_symbol_code, tree_predictive_commoning,
8408         stmt_dominates_stmt_p, get_lsm_tmp_name): Declare.
8409         * Makefile.in (tree-predcom.o): Add.
8410         (tree-affine.o): Add TREE_GIMPLE_H dependency.
8411         * passes.c (init_optimization_passes):  Add dceloop after
8412         copy propagation in loop optimizer.  Add predictive commoning
8413         to loop optimizer passes.
8414
8415 2007-05-24  H.J. Lu  <hongjiu.lu@intel.com>
8416
8417         * target-def.h (TARGET_MANGLE_DECL_ASSEMBLER_NAME): Correct
8418         default hook.
8419
8420 2007-05-24  Jan Hubicka  <jh@suse.cz>
8421
8422         * gengenrtl.c (gendecl, gendef): Output the gens annotated for
8423         statistics.
8424         (genheader): Include statistics.h.
8425
8426         * doc/invoke.texi (-fdump-unnumbered): Update docs when line number
8427         notes are gone.
8428         * print-rtl.c (flag_dump_unnumbered): Update comments.
8429         (print_rtl): Fix my previous change.
8430         * emit-rtl.c (emit_note_before, emit_note_after): Clear out note
8431         specific data.
8432
8433 2007-05-24  Zdenek Dvorak  <dvorakz@suse.cz>
8434
8435         PR middle-end/32018
8436         * tree-ssa-threadupdate.c (thread_through_loop_header): Use
8437         set_loop_copy.
8438         (thread_through_all_blocks): Call initialize_original_copy_tables
8439         and free_original_copy_tables.
8440         * cfgloopmanip.c (duplicate_loop, duplicate_loop_to_header_edge):
8441         Use set_loop_copy.
8442         * tree-cfg.c (tree_duplicate_sese_region): Ditto.
8443         * cfghooks.c (duplicate_block): Use get_loop_copy.
8444         * cfg.c: Include cfgloop.h.
8445         (loop_copy): New hash table.
8446         (initialize_original_copy_tables): Initialize loop_copy table.
8447         (free_original_copy_tables): Free loop_copy table.
8448         (copy_original_table_clear, copy_original_table_set,
8449         set_loop_copy, get_loop_copy): New functions.
8450         (set_bb_original, set_bb_copy): Use copy_original_table_set.
8451         * cfgloop.h (struct loop): Remove copy field.
8452         * Makefile.in (cfg.o): Add CFGLOOP_H dependency.
8453         * basic-block.h (set_loop_copy, get_loop_copy): Declare.
8454
8455 2007-05-24  H.J. Lu  <hongjiu.lu@intel.com>
8456
8457         * config/i386/i386.c (ix86_handle_option): Handle SSE4.1 for
8458         -msse/-msse2/-msse3.
8459
8460 2007-05-24  H.J. Lu  <hongjiu.lu@intel.com>
8461
8462         * config/i386/i386.c (ix86_init_mmx_sse_builtins): Mark
8463         __builtin_ia32_vec_set_v2di with MASK_64BIT.
8464
8465 2007-05-24  Danny Smith  <dannysmith@users.sourceforge.net>
8466
8467         PR target/27067
8468         * doc/tm.texi (TARGET_MANGLE_DECL_ASSEMBLER_NAME): Document.
8469         * targhooks.h (default_mangle_decl_assembler_name): Declare
8470         default hook.
8471         * targhooks.c (default_mangle_decl_assembler_name): Define
8472         default hook.
8473         * target-def.h (TARGET_MANGLE_DECL_ASSEMBLER_NAME) New. Set to
8474         default hook.
8475         * target.h (struct gcc_target): Add mangle_decl_assembler_name field.
8476         * langhooks.c (lhd_set_decl_assembler_name): Call
8477         targetm.mangle_decl_assembler_name for names with global scope.
8478
8479         * config/i386/cygming.h (TARGET_MANGLE_DECL_ASSEMBLER_NAME) Override
8480         default.
8481         (ASM_OUTPUT_DEF_FROM_DECLS): Simplify to use DECL_ASSEMBLER_NAME.
8482         * config/i386/i386-protos.h (i386_pe_mangle_decl_assembler_name):
8483         Declare.
8484         * config/i386/winnt.c (i386_pe_maybe_mangle_decl_assembler_name):
8485         New. Factored out of i386_pe_encode_section_info.
8486         (gen_stdcall_or_fastcall_suffix): Get name identifier as argument.
8487         Move check for prior decoration of stdcall
8488         symbols to i386_pe_encode_section_info.
8489         (i386_pe_encode_section_info): Adjust call to
8490         gen_stdcall_or_fastcall_suffix.  Use
8491         i386_pe_maybe_mangle_decl_assembler_name, if needed.
8492         (i386_pe_mangle_decl_assembler_name): New. Wrap
8493         i386_pe_maybe_mangle_decl_assembler_name.
8494
8495 2007-05-16  Rafael Avila de Espindola  <espindola@google.com>
8496
8497         * c-common.c (c_common_signed_or_unsigned_type): Delay the check for
8498         INTEGRAL_TYPE_P and TYPE_UNSIGNED.
8499         * langhooks.c (get_signed_or_unsigned_type): Don't check for
8500         INTEGRAL_TYPE_P or TYPE_UNSIGNED.
8501         (lhd_signed_or_unsigned_type): Check for INTEGRAL_TYPE_P and
8502         TYPE_UNSIGNED.
8503
8504 2007-05-23  Sandra Loosemore  <sandra@codesourcery.com>
8505             Nigel Stephens  <nigel@mips.com>
8506             Richard Sandiford  <richard@codesourcery.com>
8507
8508         Fix up MIPS16 hard float and add support for complex.
8509
8510         * config/mips/mips.h (TARGET_HARD_FLOAT_ABI): New.
8511         (TARGET_SOFT_FLOAT_ABI): New.
8512         (TARGET_CPU_CPP_BUILTINS): Define __mips_hard_float and
8513         __mips_soft_float to reflect the ABI in use, not whether the
8514         FPU is directly accessible (e.g., in MIPS16 mode).
8515         (UNITS_PER_HWFPVALUE): Use TARGET_SOFT_FLOAT_ABI.
8516         (UNITS_PER_FPVALUE): Likewise.
8517
8518         * config/mips/mips.c (mips_expand_call): Remove redundant
8519         TARGET_MIPS16 check.
8520         (mips_arg_regno): New.
8521         (function_arg_advance): When setting bits in cum->fp_code for
8522         MIPS16, don't subtract 1 from cum->arg_number, since it is now
8523         zero-based.
8524         (function_arg): Use mips_arg_regno.
8525         (mips_return_mode_in_fpr_p): New.
8526         (mips16_call_stub_mode_suffix): New.
8527         (mips16_cfun_returns_in_fpr_p): New.
8528         (mips_save_reg_p): Use mips16_cfun_returns_in_fpr_p.
8529         (mips_output_function_prologue): Test mips16_hard_float, not
8530         !TARGET_SOFT_FLOAT, to decide when a function stub is required.
8531         (mips_expand_epilogue): Call MIPS16 helper routines to copy
8532         return value into a floating-point register.
8533         (mips_can_use_return_insn): Use mips16_cfun_returns_in_fpr_p.
8534         (mips_function_value): Rewrite to use mips_return_mode_in_fpr_p.
8535         (mips16_fp_args): Handle MIPS32r2 ISA which supports
8536         TARGET_FLOAT64, and use mfhc1/mthc1 to copy the most significant
8537         word of double arguments from or to the high bits of 64-bit
8538         floating point registers.
8539         (build_mips16_function_stub): Fill in DECL_RESULT for stubdecl.
8540         (mips16_fpret_double): New helper function.
8541         (build_mips16_call_stub): Use mips16_return_mode_in_fpr_p.  Add
8542         support for complex modes.  Fill in DECL_RESULT for stubdecl.
8543         (mips_init_libfuncs): Remove redundant TARGET_MIPS16 check.
8544
8545         * config/mips/mips16.S
8546         (RET, ARG1, ARG2): New.
8547         (MERGE_GPRf, MERGE_GPRt): New.
8548         (DELAYt, DELAYf): New.
8549         (MOVE_SF_BYTE0, MOVE_SI_BYTE0): New.
8550         (MOVE_SF_BYTE4, MOVE_SF_BYTE8): New.
8551         (MOVE_DF_BYTE0, MOVE_DF_BYTE8): New.
8552         (MOVE_SF_RET, MOVE_SC_RET, MOVE_DF_RET, MOVE_DC_RET, MOVE_SI_RET): New.
8553         (SFOP): Renamed to...
8554         (OPSF3): This, and macro-ified.  Updated all uses.
8555         (SFOP2): Renamed to...
8556         (OPSF2): This, and macro-ified.  Updated all uses.
8557         (SFCMP): Renamed to...
8558         (CMPSF): This, and macro-ified.  Updated all uses.
8559         (SFREVCMP): Renamed to...
8560         (REVCMPSF): This, and macro-ified.  Updated all uses.
8561         (__mips16_floatsisf, __mips16_fix_truncsfsi): Macro-ified.
8562         (LDDBL1, LDDBL2, RETDBL): Deleted.
8563         (DFOP): Renamed to...
8564         (OPDF3): This, and macro-ified.  Updated all uses.
8565         (DFOP2): Renamed to...
8566         (OPDF2): This, and macro-ified.  Updated all uses.
8567         (__mips16_extendsfdf2, __mips16_truncdfsf2): Macro-ified.
8568         (DFCMP): Renamed to...
8569         (CMPDF): This, and macro-ified.  Updated all uses.
8570         (DFREVCMP): Renamed to...
8571         (REVCMPDF): This, and macro-ified.  Updated all uses.
8572         (__mips16_floatsidf, __mips16_fix_truncdfsi): Macro-ified.
8573         (RET_FUNCTION): New.
8574         (__mips16_ret_sf, __mips16_ret_df): Macro-ified.
8575         (__mips16_ret_sc, __mips16_ret_dc): New.
8576         (STUB_ARGS_0, STUB_ARGS_1, STUB_ARGS_5, STUB_ARGS_9, STUB_ARGS_2,
8577         STUB_ARGS_6, STUB_ARGS_10): New.
8578         (CALL_STUB_NO_RET): New.
8579         (__mips16_call_stub_1): Macro-ified.
8580         (__mips16_call_stub_5): Macro-ified.
8581         (__mips16_call_stub_2): Macro-ified.
8582         (__mips16_call_stub_6): Macro-ified.
8583         (__mips16_call_stub_9): Macro-ified.
8584         (__mips16_call_stub_10): Macro-ified.
8585         (CALL_STUB_RET): New.
8586         (__mips16_call_stub_sf_0): Macro-ified.
8587         (__mips16_call_stub_sf_1): Macro-ified.
8588         (__mips16_call_stub_sf_5): Macro-ified.
8589         (__mips16_call_stub_sf_2): Macro-ified.
8590         (__mips16_call_stub_sf_6): Macro-ified.
8591         (__mips16_call_stub_sf_9): Macro-ified.
8592         (__mips16_call_stub_sf_10): Macro-ified.
8593         (__mips16_call_stub_df_0): Macro-ified.
8594         (__mips16_call_stub_df_1): Macro-ified.
8595         (__mips16_call_stub_df_5): Macro-ified.
8596         (__mips16_call_stub_df_2): Macro-ified.
8597         (__mips16_call_stub_df_6): Macro-ified.
8598         (__mips16_call_stub_df_9): Macro-ified.
8599         (__mips16_call_stub_df_10): Macro-ified.
8600         (__mips16_call_stub_sc_0): New.
8601         (__mips16_call_stub_sc_1): New.
8602         (__mips16_call_stub_sc_5): New.
8603         (__mips16_call_stub_sc_2): New.
8604         (__mips16_call_stub_sc_6): New.
8605         (__mips16_call_stub_sc_9): New.
8606         (__mips16_call_stub_sc_10): New.
8607         (__mips16_call_stub_dc_0): New.
8608         (__mips16_call_stub_dc_1): New.
8609         (__mips16_call_stub_dc_5): New.
8610         (__mips16_call_stub_dc_2): New.
8611         (__mips16_call_stub_dc_6): New.
8612         (__mips16_call_stub_dc_9): New.
8613         (__mips16_call_stub_dc_10): New.
8614
8615         * config/mips/t-elf (LIB1ASMFUNCS): Add MIPS16 floating-point stubs.
8616         * config/mips/t-isa3264 (LIB1ASMFUNCS): Likewise.
8617         * config/mips/t-r2900 (LIB1ASMFUNCS): Likewise.
8618
8619 2007-05-23  Ian Lance Taylor  <iant@google.com>
8620
8621         * doc/invoke.texi (Invoking GCC): Document that the order of the
8622         -l option matters.
8623
8624 2007-05-23  Chen Liqin  <liqin@sunnorth.com.cn>
8625
8626         PR target/30987
8627         * config/score/misc.md (bitclr_c, bitset_c, bittgl_c): Remove.
8628         * config/score/predicate.md (const_pow2, const_npow2): Remove.
8629         * config/score/score.h (ASM_OUTPUT_EXTERNAL): Add ASM_OUTPUT_EXTERNAL
8630         undef.
8631
8632         PR target/30474
8633         * config/score/score.c (score_print_operand): Make sure that only
8634         lower bits are used.
8635
8636 2007-05-22  Ian Lance Taylor  <iant@google.com>
8637
8638         * tree-vrp.c (avoid_overflow_infinity): New static function,
8639         broken out of set_value_range_to_value.
8640         (set_value_range_to_value): Call avoid_overflow_infinity.
8641         (extract_range_from_assert): Likewise.
8642
8643 2007-05-22  Andrew Pinski  <andrew_pinski@playstation.sony.com>
8644
8645         PR middle-end/31095
8646          * builtins.c (expand_builtin_memmove_args): Strip nops that don't
8647         change the type before looking for a COMPOUND_EXPR.
8648
8649 2007-05-22  Ian Lance Taylor  <iant@google.com>
8650
8651         * lower-subreg.c (decompose_multiword_subregs): If we change an
8652         insn, call remove_retval_note on it.
8653
8654 2007-05-22  Richard Sandiford  <rsandifo@nildram.co.uk>
8655
8656         * regs.h (end_hard_regno): New function.
8657         (END_HARD_REGNO, END_REGNO): New macros.
8658         (add_to_hard_reg_set): New function.
8659         (remove_from_hard_reg_set): Likewise.
8660         (in_hard_reg_set_p): Likewise.
8661         (overlaps_hard_reg_set_p): Likewise.
8662         * bt-load.c (find_btr_reference): Use overlaps_hard_reg_set_p.
8663         (note_btr_set): Use END_HARD_REGNO.
8664         * caller-save.c (setup_save_areas): Use end_hard_regno.
8665         (mark_set_regs): Use END_HARD_REGNO.
8666         (add_stored_regs): Use end_hard_regno.
8667         (mark_referenced_regs): Use add_to_hard_reg_set.
8668         * combine.c (update_table_tick): Use END_REGNO.
8669         (record_value_for_reg): Likewise.
8670         (record_dead_and_set_regs): Likewise.
8671         (get_last_value_validate): Likewise.
8672         (use_crosses_set_p): Likewise.
8673         (reg_dead_at_p_1): Likewise.
8674         (reg_dead_at_p): Likewise.
8675         (mark_used_regs_combine): Use add_to_hard_reg_set.
8676         (move_deaths): Use END_HARD_REGNO.
8677         (reg_bitfield_target_p): Use end_hard_regno.
8678         (distribute_notes): Use END_HARD_REGNO.
8679         * cse.c (mention_regs): Use END_REGNO.
8680         (insert): Use add_to_hard_reg_set.
8681         (invalidate): Use END_HARD_REGNO.
8682         (invalidate_for_call): Likewise.
8683         (exp_equiv_p): Use END_REGNO.
8684         (cse_insn): Likewise.
8685         * cselib.c (cselib_invalidate_regno): Use end_hard_regno.
8686         * df-problems.c (df_urec_mark_reg_change): Use END_HARD_REGNO.
8687         * df-scan.c (df_ref_record): Use END_HARD_REGNO.
8688         * function.c (keep_stack_depressed): Use end_hard_regno.
8689         * global.c (global_alloc): Use end_hard_regno.
8690         (global_conflicts): Use add_to_hard_reg_set instead of
8691         mark_reg_live_nc.
8692         (find_reg): Likewise.
8693         (mark_reg_store): Likewise.
8694         (mark_reg_conflicts): Likewise.
8695         (mark_reg_death): Use remove_from_hard_reg_set.
8696         (mark_reg_live_nc): Delete.
8697         (set_preference): Use end_hard_regno.
8698         * local-alloc.c (mark_life): Use add_to_hard_reg_set and
8699         remove_from_hard_reg_set.
8700         (post_mark_life): Use add_to_hard_reg_set.
8701         * mode-switching.c (reg_dies): Use remove_from_hard_reg_set.
8702         (reg_becomes_live): Use add_to_hard_reg_set.
8703         * recog.c (reg_fits_class_p): Use in_hard_reg_set_p.
8704         (peep2_find_free_register): Use add_to_hard_reg_set.
8705         * reg-stack.c (convert_regs_exit): Use END_HARD_REGNO.
8706         * regclass.c (record_reg_classes): Use in_hard_reg_set_p.
8707         * regrename.c (note_sets): Use add_to_hard_reg_set.
8708         (clear_dead_regs): Use remove_from_hard_reg_set.
8709         (regrename_optimize): Use add_to_hard_reg_set.
8710         (find_oldest_value_reg): Use in_hard_reg_set_p.
8711         * reload.c (push_reload): Use in_hard_reg_set_p and end_hard_regno.
8712         (hard_reg_set_here_p): Use end_hard_regno.
8713         (decompose): Likewise.
8714         (reg_overlap_mentioned_for_reload_p): Use END_HARD_REGNO.
8715         (find_equiv_reg): Use in_hard_reg_set_p and end_hard_regno.
8716         * reload1.c (compute_use_by_pseudos): Use add_to_hard_reg_set.
8717         (mark_home_live): Use end_hard_regno.
8718         (spill_hard_reg): Likewise.
8719         (clear_reload_reg_in_use): Likewise.
8720         * reorg.c (delete_prior_computation): Use END_REGNO.
8721         * resource.c (update_live_status): Use END_HARD_REGNO.
8722         (mark_referenced_resources): Use add_to_hard_reg_set.
8723         (mark_set_resources): Likewise.
8724         (mark_target_live_regs): Likewise.  Use remove_from_hard_reg_set.
8725         * rtlanal.c (refers_to_regno_p): Use END_REGNO.
8726         (reg_overlap_mentioned_p): Likewise.
8727         (dead_or_set_p): Likewise.  Use an exclusive upper loop bound.
8728         (covers_regno_no_parallel_p): Use END_REGNO.
8729         (find_regno_note): Likewise.
8730         (find_reg_fusage): Use END_HARD_REGNO.
8731         * stmt.c (decl_overlaps_hard_reg_set_p): Use overlaps_hard_reg_set_p.
8732         * var-tracking.c (emit_note_insn_var_location): Use end_hard_regno.
8733
8734 2007-05-22  Richard Sandiford  <rsandifo@nildram.co.uk>
8735
8736         * mode-switching.c (reg_dies): Change type of second argument to
8737         "HARD_REG_SET *".
8738         (optimize_mode_switching): Update accordingly.
8739
8740 2007-05-22  Richard Sandiford  <richard@codesourcery.com>
8741
8742         * hard-reg-set.h (GO_IF_HARD_REG_SUBSET, GO_IF_HARD_REG_EQUAL): Delete
8743         in favor of...
8744         (hard_reg_subset_p, hard_reg_sets_equal_p, hard_reg_sets_intersect_p)
8745         (hard_reg_set_empty_p): ...these new functions.
8746         * bt-load.c (choose_btr): Use hard_reg_subset_p instead of
8747         GO_IF_HARD_REG_SUBSET.
8748         * cfgcleanup.c (old_insns_match_p): Use hard_reg_sets_equal_p
8749         instead of GO_IF_HARD_REG_EQUAL.
8750         * df-problems.c (df_urec_local_compute): Use hard_reg_set_empty_p
8751         instead of GO_IF_HARD_REG_EQUAL.
8752         * global.c (find_reg): Use hard_reg_set_empty_p instead of
8753         GO_IF_HARD_REG_SUBSET.
8754         (modify_reg_pav): Use hard_reg_set_empty_p instead of
8755         GO_IF_HARD_REG_EQUAL.
8756         * local-alloc.c (find_free_reg): Use hard_reg_subset_p instead
8757         of GO_IF_HARD_REG_SUBSET.
8758         * reg-stack.c (change_stack, convert_regs_1): Use hard_reg_sets_equal_p
8759         instead of GO_IF_HARD_REG_EQUAL.
8760         * regclass.c (init_reg_sets_1, reg_scan_mark_refs): Use
8761         hard_reg_subset_p instead of GO_IF_HARD_REG_SUBSET.
8762         (reg_classes_intersect_p): Use hard_reg_sets_intersect_p instead
8763         of GO_IF_HARD_REG_SUBSET,
8764         * reload1.c (finish_spills): Use hard_reg_subset_p instead of
8765         GO_IF_HARD_REG_SUBSET.
8766         * struct-equiv.c (death_notes_match_p): Use hard_reg_sets_equal_p
8767         instead of GO_IF_HARD_REG_EQUAL.
8768         * config/sh/sh.c (push_regs, calc_live_regs): Use
8769         hard_reg_sets_intersect_p instead of hard_regs_intersect_p.
8770         (hard_regs_intersect_p): Delete.
8771
8772 2007-05-22  Janis Johnson  <janis187@us.ibm.com>
8773
8774         * doc/sourcebuild.texi (Test Directives) Add dg-message.
8775
8776 2007-05-22  H.J. Lu  <hongjiu.lu@intel.com>
8777             Richard Henderson  <rth@redhat.com>
8778
8779         * config.gcc (i[34567]86-*-*): Add smmintrin.h to
8780         extra_headers.
8781         (x86_64-*-*): Likewise.
8782
8783         * i386/i386-modes.def (V2QI): New.
8784
8785         * config/i386/i386.c (ix86_handle_option): Handle SSE4.1 and
8786         SSE4A.
8787         (override_options): Support SSE4.1.
8788         (IX86_BUILTIN_BLENDPD): New for SSE4.1.
8789         (IX86_BUILTIN_BLENDPS): Likewise.
8790         (IX86_BUILTIN_BLENDVPD): Likewise.
8791         (IX86_BUILTIN_BLENDVPS): Likewise.
8792         (IX86_BUILTIN_PBLENDVB128): Likewise.
8793         (IX86_BUILTIN_PBLENDW128): Likewise.
8794         (IX86_BUILTIN_DPPD): Likewise.
8795         (IX86_BUILTIN_DPPS): Likewise.
8796         (IX86_BUILTIN_INSERTPS128): Likewise.
8797         (IX86_BUILTIN_MOVNTDQA): Likewise.
8798         (IX86_BUILTIN_MPSADBW128): Likewise.
8799         (IX86_BUILTIN_PACKUSDW128): Likewise.
8800         (IX86_BUILTIN_PCMPEQQ): Likewise.
8801         (IX86_BUILTIN_PHMINPOSUW128): Likewise.
8802         (IX86_BUILTIN_PMAXSB128): Likewise.
8803         (IX86_BUILTIN_PMAXSD128): Likewise.
8804         (IX86_BUILTIN_PMAXUD128): Likewise.
8805         (IX86_BUILTIN_PMAXUW128): Likewise.
8806         (IX86_BUILTIN_PMINSB128): Likewise.
8807         (IX86_BUILTIN_PMINSD128): Likewise.
8808         (IX86_BUILTIN_PMINUD128): Likewise.
8809         (IX86_BUILTIN_PMINUW128): Likewise.
8810         (IX86_BUILTIN_PMOVSXBW128): Likewise.
8811         (IX86_BUILTIN_PMOVSXBD128): Likewise.
8812         (IX86_BUILTIN_PMOVSXBQ128): Likewise.
8813         (IX86_BUILTIN_PMOVSXWD128): Likewise.
8814         (IX86_BUILTIN_PMOVSXWQ128): Likewise.
8815         (IX86_BUILTIN_PMOVSXDQ128): Likewise.
8816         (IX86_BUILTIN_PMOVZXBW128): Likewise.
8817         (IX86_BUILTIN_PMOVZXBD128): Likewise.
8818         (IX86_BUILTIN_PMOVZXBQ128): Likewise.
8819         (IX86_BUILTIN_PMOVZXWD128): Likewise.
8820         (IX86_BUILTIN_PMOVZXWQ128): Likewise.
8821         (IX86_BUILTIN_PMOVZXDQ128): Likewise.
8822         (IX86_BUILTIN_PMULDQ128): Likewise.
8823         (IX86_BUILTIN_PMULLD128): Likewise.
8824         (IX86_BUILTIN_ROUNDPD): Likewise.
8825         (IX86_BUILTIN_ROUNDPS): Likewise.
8826         (IX86_BUILTIN_ROUNDSD): Likewise.
8827         (IX86_BUILTIN_ROUNDSS): Likewise.
8828         (IX86_BUILTIN_PTESTZ): Likewise.
8829         (IX86_BUILTIN_PTESTC): Likewise.
8830         (IX86_BUILTIN_PTESTNZC): Likewise.
8831         (IX86_BUILTIN_VEC_EXT_V16QI): Likewise.
8832         (IX86_BUILTIN_VEC_SET_V2DI): Likewise.
8833         (IX86_BUILTIN_VEC_SET_V4SF): Likewise.
8834         (IX86_BUILTIN_VEC_SET_V4SI): Likewise.
8835         (IX86_BUILTIN_VEC_SET_V16QI): Likewise.
8836         (bdesc_ptest): New.
8837         (bdesc_sse_3arg): Likewise.
8838         (bdesc_2arg): Likewise.
8839         (bdesc_1arg): Likewise.
8840         (ix86_init_mmx_sse_builtins): Support SSE4.1.  Handle SSE builtins
8841         with 3 args.
8842         (ix86_expand_sse_4_operands_builtin): New.
8843         (ix86_expand_unop_builtin): Support 2 arg builtins with a constant
8844         smaller than 8 bits as the 2nd arg.
8845         (ix86_expand_sse_ptest): New.
8846         (ix86_expand_builtin): Support SSE4.1. Support 3 arg SSE builtins.
8847         (ix86_expand_vector_set): Support SSE4.1.
8848         (ix86_expand_vector_extract): Likewise.
8849
8850         * config/i386/i386.h (TARGET_CPU_CPP_BUILTINS): Define
8851         __SSE4_1__ for -msse4.1.
8852
8853         * config/i386/i386.md (UNSPEC_BLENDV): New for SSE4.1.
8854         (UNSPEC_INSERTPS): Likewise.
8855         (UNSPEC_DP): Likewise.
8856         (UNSPEC_MOVNTDQA): Likewise.
8857         (UNSPEC_MPSADBW): Likewise.
8858         (UNSPEC_PHMINPOSUW): Likewise.
8859         (UNSPEC_PTEST): Likewise.
8860         (UNSPEC_ROUNDP): Likewise.
8861         (UNSPEC_ROUNDS): Likewise.
8862
8863         * config/i386/i386.opt (msse4.1): New for SSE4.1.
8864
8865         * config/i386/predicates.md (const_pow2_1_to_2_operand): New.
8866         (const_pow2_1_to_32768_operand): Likewise.
8867
8868         * config/i386/smmintrin.h: New. The SSE4.1 intrinsic header
8869         file.
8870
8871         * config/i386/sse.md (*vec_setv4sf_sse4_1): New pattern for
8872         SSE4.1.
8873         (sse4_1_insertps): Likewise.
8874         (*sse4_1_extractps): Likewise.
8875         (sse4_1_ptest): Likewise.
8876         (sse4_1_mulv2siv2di3): Likewise.
8877         (*sse4_1_mulv4si3): Likewise.
8878         (*sse4_1_smax<mode>3): Likewise.
8879         (*sse4_1_umax<mode>3): Likewise.
8880         (*sse4_1_smin<mode>3): Likewise.
8881         (*sse4_1_umin<mode>3): Likewise.
8882         (sse4_1_eqv2di3): Likewise.
8883         (*sse4_1_pinsrb): Likewise.
8884         (*sse4_1_pinsrd): Likewise.
8885         (*sse4_1_pinsrq): Likewise.
8886         (*sse4_1_pextrb): Likewise.
8887         (*sse4_1_pextrb_memory): Likewise.
8888         (*sse4_1_pextrw_memory): Likewise.
8889         (*sse4_1_pextrq): Likewise.
8890         (sse4_1_blendpd): Likewise.
8891         (sse4_1_blendps): Likewise.
8892         (sse4_1_blendvpd): Likewise.
8893         (sse4_1_blendvps): Likewise.
8894         (sse4_1_dppd): Likewise.
8895         (sse4_1_dpps): Likewise.
8896         (sse4_1_movntdqa): Likewise.
8897         (sse4_1_mpsadbw): Likewise.
8898         (sse4_1_packusdw): Likewise.
8899         (sse4_1_pblendvb): Likewise.
8900         (sse4_1_pblendw): Likewise.
8901         (sse4_1_phminposuw): Likewise.
8902         (sse4_1_extendv8qiv8hi2): Likewise.
8903         (*sse4_1_extendv8qiv8hi2): Likewise.
8904         (sse4_1_extendv4qiv4si2): Likewise.
8905         (*sse4_1_extendv4qiv4si2): Likewise.
8906         (sse4_1_extendv2qiv2di2): Likewise.
8907         (*sse4_1_extendv2qiv2di2): Likewise.
8908         (sse4_1_extendv4hiv4si2): Likewise.
8909         (*sse4_1_extendv4hiv4si2): Likewise.
8910         (sse4_1_extendv2hiv2di2): Likewise.
8911         (*sse4_1_extendv2hiv2di2): Likewise.
8912         (sse4_1_extendv2siv2di2): Likewise.
8913         (*sse4_1_extendv2siv2di2): Likewise.
8914         (sse4_1_zero_extendv8qiv8hi2): Likewise.
8915         (*sse4_1_zero_extendv8qiv8hi2): Likewise.
8916         (sse4_1_zero_extendv4qiv4si2): Likewise.
8917         (*sse4_1_zero_extendv4qiv4si2): Likewise.
8918         (sse4_1_zero_extendv2qiv2di2): Likewise.
8919         (*sse4_1_zero_extendv2qiv2di2): Likewise.
8920         (sse4_1_zero_extendv4hiv4si2): Likewise.
8921         (*sse4_1_zero_extendv4hiv4si2): Likewise.
8922         (sse4_1_zero_extendv2hiv2di2): Likewise.
8923         (*sse4_1_zero_extendv2hiv2di2): Likewise.
8924         (sse4_1_zero_extendv2siv2di2): Likewise.
8925         (*sse4_1_zero_extendv2siv2di2): Likewise.
8926         (sse4_1_roundpd): Likewise.
8927         (sse4_1_roundps): Likewise.
8928         (sse4_1_roundsd): Likewise.
8929         (sse4_1_roundss): Likewise.
8930         (mulv4si3): Don't expand for SSE4.1.
8931         (smax<mode>3): Likewise.
8932         (umaxv4si3): Likewise.
8933         (uminv16qi3): Likewise.
8934         (umin<mode>3): Likewise.
8935         (umaxv8hi3): Rewrite.  Only enabled for SSE4.1.
8936
8937         * doc/extend.texi: Document SSE4.1 built-in functions.
8938
8939         * doc/invoke.texi: Document -msse4.1.
8940
8941 2007-05-22  Nathan Sidwell  <nathan@codesourcery.com>
8942
8943         * config/m68k/linux.h (ASM_SPEC): Add asm_pcrel_spec.
8944         * config/m68k/m68k-none.h (ASM_SPEC): Don't override here.
8945         * config/m68k/m68k.h (ASM_PCREL_SPEC): New.
8946         (ASM_SPEC): Add asm_pcrel_spec.
8947         (EXTRA_SPECS): Add asm_pcrel_spec.
8948
8949 2007-05-21  David Daney  <ddaney@avtrex.com>
8950
8951         * doc/install.texi (Building a cross compiler): Add requirements
8952         for Java cross compiler.
8953
8954 2007-05-21  Andrew Pinski  <andrew_pinski@playstation.sony.com>
8955
8956         PR middle-end/31995
8957         * tree-chrec.c (evolution_function_is_affine_multivariate_p):
8958         Add loopno argument.  Use evolution_function_is_invariant_rec_p
8959         instead of evolution_function_is_constant_p.
8960         Update calls to evolution_function_is_affine_multivariate_p.
8961         * tree-chrec.h (evolution_function_is_affine_multivariate_p):
8962         Add loopno argument.
8963         * tree-scalar-evolution.c (gather_chrec_stats): Call
8964         evolution_function_is_affine_multivariate_p with a loop
8965         number of 0.
8966         * tree-data-ref.c (analyze_miv_subscript): Likewise.
8967         (analyze_overlapping_iterations): Likewise.
8968         (access_functions_are_affine_or_constant_p): Likewise.
8969         (build_classic_dist_vector_1): If the access functions
8970         are equal, don't do anything.
8971
8972 2007-05-21  Paolo Bonzini  <bonzini@gnu.org>
8973             Paolo Carlini  <pcarlini@suse.de>
8974             Uros Bizjak  <ubizjak@gmail.com>
8975
8976         * c-cppbuiltin.c (c_cpp_builtins): Define
8977         __GCC_HAVE_SYNC_COMPARE_AND_SWAP_1, __GCC_HAVE_SYNC_COMPARE_AND_SWAP_2,
8978         __GCC_HAVE_SYNC_COMPARE_AND_SWAP_4, __GCC_HAVE_SYNC_COMPARE_AND_SWAP_8,
8979         __GCC_HAVE_SYNC_COMPARE_AND_SWAP_16, if appropriate.
8980         * doc/cpp.texi ([Standard Predefined Macros]): Document.
8981
8982 2007-05-21  Mike Stump  <mrs@apple.com>
8983
8984         * config/darwin.h (LINK_COMMAND_SPEC): Add .cxx/.cp for dsymutil
8985         handling as well.
8986         * config/darwin9.h (LINK_COMMAND_SPEC): Likewise.
8987
8988 2007-05-21  Uros Bizjak  <ubizjak@gmail.com>
8989
8990         * config/i386/tmmintrin.h (_mm_alignr_epi8): Provide macro
8991         implementation if __OPTIMIZE__ is not defined.
8992         (_mm_alignr_pi8): Ditto.
8993         * config/i386/ammintrin.h (_mm_extracti_si64): Ditto.
8994         (_mm_inserti_si64): Ditto.
8995         * config/i386/emmintrin.h (_mm_shuffle_pd): Ditto.
8996         (_mm_slli_epi16): Ditto.
8997         (_mm_slli_epi32): Ditto.
8998         (_mm_slli_epi64): Ditto.
8999         (_mm_srai_epi16): Ditto.
9000         (_mm_srai_epi32): Ditto.
9001         (_mm_srli_si128): Ditto.
9002         (_mm_slli_si128): Ditto.
9003         (_mm_srli_epi16): Ditto.
9004         (_mm_srli_epi32): Ditto.
9005         (_mm_srli_epi64): Ditto.
9006         (_mm_extract_epi16): Ditto.
9007         (_mm_insert_epi16): Ditto.
9008         (_mm_shufflehi_epi16): Ditto.
9009         (_mm_shufflelo_epi16): Ditto.
9010         (_mm_shuffle_epi32): Ditto.
9011         * config/i386/xmmintrin.h (_mm_extract_pi16): Ditto.
9012         (_m_pextrw): Ditto.
9013         (_mm_insert_pi16): Ditto.
9014         (_m_pinsrw): Ditto.
9015         (_mm_shuffle_pi16): Ditto.
9016         (_m_pshufw): Ditto.
9017         (_mm_shufle_ps): Ditto.
9018         (_mm_prefetch): Ditto.
9019
9020 2007-05-21  Andreas Krebbel  <krebbel1@de.ibm.com>
9021
9022         * defaults.h (IBM_FLOAT_FORMAT): Macro definition removed.
9023         * doc/tm.texi (IBM_FLOAT_FORMAT): Documentation entry removed.
9024         * real.c (encode_i370_single, decode_i370_single,
9025         encode_i370_double, decode_i370_double): Functions removed.
9026         (i370_single_format, i370_double_format): Initializations removed.
9027         (real_maxval, round_for_format, exact_real_truncate, significand_size):
9028         Consider the log2_b field to always be one.
9029         (ieee_single_format, mips_single_format, coldfire_single_format,
9030         ieee_double_format, mips_double_format, coldfire_double_format,
9031         ieee_extended_motorola_format, ieee_extended_intel_96_format,
9032         ieee_extended_intel_128_format, ieee_extended_intel_96_round_53_format,
9033         ibm_extended_format, mips_extended_format, ieee_quad_format,
9034         mips_quad_format, vax_f_format, vax_d_format, vax_g_format,
9035         decimal_single_format, decimal_double_format, decimal_quad_format,
9036         c4x_single_format, c4x_extended_format, real_internal_format): Remove
9037         initialization of log2_b.
9038         * real.h (i370_single_format, i370_double_format): Declarations
9039         removed.
9040         * c-cppbuiltin.c (builtin_define_float_constants): Consider the log2_b
9041         field to always be one.
9042
9043 2007-05-21  Andreas Schwab  <schwab@suse.de>
9044
9045         * config/ia64/ia64.c (emit_predicate_relation_info): Fix use of
9046         NOTE_INSN_BASIC_BLOCK_P.
9047         (process_for_unwind_directive): Likewise.
9048
9049 2007-05-21  Nathan Sidwell  <nathan@codesourcery.com>
9050
9051         * builtins.c (expand_builtin_setjmp_setup): Update comment.
9052         * function.h (struct function): Move va_list_gpr_size,
9053         va_list_fpr_size, function_frequency to front of bitfields.  Add
9054         calls_unwind_init.
9055         (current_function_calls_unwind_init): New.
9056         * except.c (expand_builtin_unwind_init): Set
9057         current_function_calls_unwind_init not
9058         current_function_has_nonlocal_label.
9059         * reload1.c (has_nonexceptional_receiver): New.
9060         (reload): Use it and current_function_calls_unwind_init to
9061         determine whether call-saved regs must be saved.
9062
9063 2007-05-20  Jan Hubicka  <jh@suse.cz>
9064
9065         * gengtype.c (adjust_field_rtx_def): Use NOTE_KIND instead of
9066         NOTE_LINE_NUMBER; use NOTE_INSN_BASIC_BLOCK_P when possible.
9067         * ddg.c (create_ddg): LIkewise.
9068         * final.c (final): Remove hunk moving line number notes around since
9069         they are no longer present at this stage.
9070         (final_scan_insn): Use NOTE_KIND instead of
9071         NOTE_LINE_NUMBER; use NOTE_INSN_BASIC_BLOCK_P when possible.
9072         (output_asm_label): Likewise.
9073         * reorg.c (dbr_schedule): Likewise.
9074         * haifa-sched.c (unlink_other_notes): Likewise.
9075         * mode-switching.c (optimize_mode_switching): Likewise.
9076         * graph.c (start_bb): Likewise.
9077         * rtl.def (NOTE): Update description.
9078         * jump.c (squeeze_notes): Delete.
9079         (mark_jump_label): Use NOTE_KIND instead of NOTE_LINE_NUMBER; use
9080         NOTE_INSN_BASIC_BLOCK_P when possible.
9081         * ifcvt.c (dead_or_predicable): Remove call of squeeze_notes.
9082         * dwarf2out.c (gen_label_die): Use NOTE_KIND instead of
9083         NOTE_LINE_NUMBER; use NOTE_INSN_BASIC_BLOCK_P when possible.
9084         (dwarf2out_var_location): Likewise.
9085         * cfgbuild.c (make_edges): Likewise.
9086         (find_basic_blocks_1): Likewise.
9087         * function.c (reorder_blocks_1): Likewise.
9088         (epilogue_done): Likewise.
9089         (reposition_prologue_and_epilogue_notes): Likewise.
9090         * print-rtl.c (print_rtx): Likewise; drop code for printing
9091         line number notes.
9092         (print_rtl): Likewise.
9093         (print_rtl_single): Likewise.
9094         * gcse.c (insert_insn_start_bb): Likewise.
9095         * alias.c (init_alias_analysis): Likewise.
9096         * calls.c (fixup_tail_calls): Likewise.
9097         * except.c (sjlj_emit_function_enter): Likewise.
9098         * emit-rtl.c (add_insn_after): Likeiwse.
9099         (emit_label_before): Likewise.
9100         (emit_label_after): Likewise.
9101         (emit_note_before, emit_note_after, emit_note): Update
9102         parameter to be enum insn_note; do not deal with source
9103         files.
9104         * cfgcleanup.c (merge_blocks_move_predecessor_nojumps):
9105         Use NOTE_KIND instead of NOTE_LINE_NUMBER; use NOTE_INSN_BASIC_BLOCK_P
9106         when possible.
9107         (merge_blocks_move_successor_nojumps): Simplify now when
9108         we don't have BLOCK notes.
9109         (try_optimize_cfg): Likewise.
9110         * cfglayout.c (skip_insns_after_block): Likewise.
9111         (record_effective_endpoints): Likewise.
9112         (duplicate_insn_chain): Likewise.
9113         * varasm.c (output_constant_pool_1): Likewise.
9114         * sched-deps.c (sched_analyze): Likewise.
9115         * rtl.c (NOTE_INSN_MAX_isnt_negative_adjust_NOTE_INSN_BIAS):
9116         Exterminate.
9117         (note_insn_name): Simplify now when NOTE_INSN_BIAS is gone.
9118         * rtl.h (NOTE_SOURCE_LOCATION, NOTE_EXPANDED_LOCATION): Exterminate.
9119         (SET_INSN_DELETED): Simplify.
9120         (NOTE_LINE_NUMBER): Exterminate.
9121         (NOTE_LINE_KIND): New.
9122         (NOTE_INSN_BASIC_BLOCK_P): Update.
9123         (enum insn_note): Simplify.
9124         (GET_NOTE_INSN_NAME) Simplify.
9125         (emit_note_before, emit_note_after, emit_note): Update prototype.
9126         (squeeze_notes): Remove.
9127         * sched-int.h (NOTE_NOT_BB_P): Update.
9128         * resource.c (mark_target_live_regs): Update.
9129         * sched-rgn.c (debug_dependencies): Update.
9130         * sched-vis.c (print_insn): Update.
9131         * config/alpha/alpha.c (alpha_handle_trap_shadows): Update.
9132         * config/i386/i386.c (ix86_output_function_epilogue): Update.
9133         * config/sh/sh.c (sh_adjust_unroll_max): Function dead since gcc 4.0.0.
9134         (TARGET_ADJUST_UNROLL_MAX): Likewise.
9135         (split_branches): Update.
9136         (sh_optimize_target_register_callee_saved): Remove hunk dead since gcc
9137         4.0.0.
9138         (sh_adjust_unroll_max): Exterminate.
9139         * config/c4x/c4x.c (c4x_reorg): Use SET_INSN_DELETED.
9140         * config/m68hc11/m68hc11.c (m68hc11_check_z_replacement): Likewise.
9141         (m68hc11_reorg): Likewise.
9142         * config/ia64/ia64.c (emit_insn_group_barriers): Update.
9143         (emit_predicate_relation_info): Update.
9144         (process_for_unwind_directive): Update.
9145         * config/rs6000/rs6000.c (rs6000_output_function_epilogue): Update.
9146         (output_call): Update.
9147         * config/pa/pa.c (output_lbranch): Update.
9148         (output_millicode_call): Update.
9149         (output_call): Update.
9150         (pa_combine_instructions): Update.
9151         * config/mips/mips.c (mips16_gp_pseudo_reg): Update.
9152         * config/bfin/bfin.c (gen_one_bundle): Update.
9153         * cfgrtl.c (can_delete_note_p): Update.
9154         (delete_insn): Update.
9155         (rtl_merge_blocks): Update.
9156         (commit_one_edge_insertion): Update.
9157         (rtl_verify_flow_info): Update.
9158         * stmt.c (expand_case): Do not call squeeze_notes.
9159
9160 2007-05-20  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
9161
9162         PR middle-end/7651
9163         PR c++/11856
9164         PR c/12963
9165         PR c/23587
9166         PR other/29694
9167         * c.opt (Wtype-limits): New.
9168         * doc/invoke.texi (Wtype-limits): Document it.
9169         (Wextra): Enabled by -Wextra.
9170         * c-opts.c (c_common_post_options): Enabled by -Wextra.
9171         * c-common.c (shorten_compare): Warn with Wtype-limits.
9172
9173 2007-05-20  Uros Bizjak  <ubizjak@gmail.com>
9174
9175         * config/i386/tmmintrin.h (_mm_alignr_epi32): Implement as always
9176         inlined function, not as a macro.
9177         (_mm_alignr_pi8): Ditto.
9178         * config/i386/ammintrin.h (_mm_extracti_si64): Ditto.
9179         (_mm_inserti_si64): Ditto.
9180         * config/i386/emmintrin.h (_mm_shuffle_pd): Ditto.
9181         (_mm_extract_epi16): Ditto.
9182         (_mm_insert_epi16): Ditto.
9183         (_mm_shufflehi_epi16): Ditto.
9184         (_mm_shufflelo_epi16): Ditto.
9185         (_mm_shuffle_epi32): Ditto.
9186         * config/i386/xmmintrin.h (_mm_set_ss): Use 0.0f for float constant.
9187         * config/386/mm3dnow.h: Add __attribute__((__always_inline__)) to
9188         all functions.
9189         (_m_from_float): Add __extension__ to conversion.  Use 0.0f for
9190         float constant.
9191         (_m_to_float): Use C89 compatible assignment.
9192
9193 2007-05-20  Martin Michlmayr  <tbm@cyrius.com>
9194
9195         PR target/32007
9196         * config/arm/lib1funcs.asm: Define __ARM_ARCH__ on v2/v3 machines.
9197
9198 2007-05-20  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
9199
9200         PR middle-end/7651
9201         * doc/invoke.texi (Wreturn-type): Complete description.
9202         (Wextra): Delete item about return-type warning.
9203         * c-decl.c: Delete redundant Wextra warning.
9204
9205 2007-05-20  Uros Bizjak  <ubizjak@gmail.com>
9206
9207         PR target/31585
9208         * config/i386/pmmintrin.h: Do not include xmmintrin.h
9209         * config/i386/xmmintrin.h (_mm_extract_pi16): Implement as always
9210         inlined function, not as a macro.
9211         (_mm_prefetch): Ditto.
9212         (_m_pextrw): Ditto.
9213         (_mm_insert_pi16): Ditto.
9214         (_m_pinsrw): Ditto.
9215         (_mm_shuffle_pi16): Ditto.  Add const to __N argument.
9216         (_m_pshufw): Ditto. Add const to __N argument.
9217         (_mm_shufle_ps): Ditto.  Add const to __mask argument.
9218         * config/i386/emmintrin.h (_mm_slli_epi16): Add const to __B argument.
9219         (_mm_slli_epi32): Ditto.
9220         (_mm_srli_si128): Implement as always inlined function, not as a
9221         macro.  Add __inline to function declaration.
9222         (_mm_slli_si128): Ditto.
9223
9224 2007-05-19  Uros Bizjak  <ubizjak@gmail.com>
9225
9226         * config/i386/sfp-machine.h (FP_EX_INVALID, FP_EX_DENORM,
9227         FP_EXP_DIVZERO, FP_EX_OVERFLOW, FP_EX_UNDERFLOW, FP_EX_INEXACT):
9228         New constants.
9229         (struct fenv): New structure.
9230         (FP_HANDLE_EXCEPTIONS): New define.
9231         (FP_RND_NEAREST, FP_RND_ZERO, FP_RND_PINF, FP_RND_MINF): New constants.
9232         (_FP_DECL_EXP): New define.
9233         (FP_INIT_ROUNDMODE): New define.
9234         (FP_ROUNDMODE): New define.
9235
9236 2007-05-19  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
9237
9238         * doc/invoke.texi (Warning Options): Add -Wconversion-sign.
9239         (Wconversion): Update description.
9240         (Wconversion-sign): New.
9241         * c.opt (Wconversion-sign): New.
9242         * c-opts.c (c_common_post_options): Uninitialized Wconversion-sign
9243         means disabled for C++. Otherwise, take the status of Wconversion.
9244         * c-common.c (conversion_warning): Warn with either Wconversion or
9245         Wconversion-sign.
9246         (warnings_for_convert_and_check): Conditions are already checked by
9247         conversion_warning.
9248         (convert_and_check): Don't check warnings if the conversion failed.
9249
9250 2007-05-19 Andy Hutchinson <HutchinsonAndy@netscape.net>
9251            Anatoly Sokolov <aesok@dol.ru>
9252
9253         * config/avr/avr-protos.h (expand_prologue, expand_epilogue,
9254         avr_epilogue_uses) : Add declaration.
9255         * config/avr/predicates.md (avr_sp_immediate_operand): New predicate.
9256         * config/avr/constraints.md (R): New constraint.
9257         config/avr/avr.md (SREG_ADDR, UNSPEC_SEI, UNSPEC_CLI,
9258         UNSPECV_PROLOGUE_SAVES, UNSPECV_EPILOGUE_RESTORES): New constants.
9259         (*pop1, *pop2, *pop3, *pop4, *pop5): Combine into ...
9260         (*addhi3_sp_R_pc2, *addhi3_sp_R_pc3): ... these patterns.
9261         (*movhi_sp, popqi, pophi, enable_interrupt, disable_interrupt,
9262         call_prologue_saves, epilogue_restores, return_from_epilogue,
9263         return_from_main_epilogue, return_from_interrupt_epilogue,
9264         return_from_naked_epilogue, prologue, epilogue): New patterns.
9265         (jump): Handle symbol reference.
9266         * config/avr/avr.c (out_adj_frame_ptr, out_set_stack_ptr,
9267         avr_output_function_prologue, avr_output_function_epilogue): Remove
9268         functions.
9269         (avr_init_machine_status, expand_prologue, expand_epilogue,
9270         avr_asm_function_end_prologue, avr_epilogue_uses,
9271         avr_asm_function_begin_epilogue): New functions.
9272         (prologue_size, epilogue_size, jump_tables_size): Remove global
9273         variables.
9274         (TARGET_ASM_FUNCTION_PROLOGUE, TARGET_ASM_FUNCTION_EPILOGUE): Remove.
9275         (TARGET_ASM_FUNCTION_END_PROLOGUE): Define.
9276         (TARGET_ASM_FUNCTION_BEGIN_EPILOGUE): Define.
9277         (avr_override_options): Initialise init_machine_status.
9278         (output_movhi): Handle all stack pointer loads.
9279         (out_movqi_r_mr, out_movqi_mr_r): Handle SREG_ADDR address.
9280         (avr_output_addr_vec_elt): Do not use variable jump_tables_size.
9281         * config/avr/avr.h (AVR_2_BYTE_PC, AVR_3_BYTE_PC): New.
9282         (EPILOGUE_USES) Redefine.
9283         (machine_function) Declare.
9284
9285 2007-05-19  Richard Sandiford  <richard@codesourcery.com>
9286
9287         * config/mips/mips.c (mips_offset_within_alignment_p): Tweak comment.
9288         Use a single return statement.
9289
9290 2007-05-19  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
9291
9292         PR middle-end/30250
9293         * builtins.c (do_mpfr_lgamma_r): New.
9294         (fold_builtin_2): Handle builtin gamma_r/lgamma_r.
9295         * tree.h (CASE_FLT_FN_REENT): New.
9296
9297 2007-05-18  Geoffrey Keating  <geoffk@apple.com>
9298
9299         * dwarf2out.c (print_die): Use '%ld' not '%lu' to print a 'long'.
9300         (output_die): Use 'unsigned long' with %x.
9301         * sched-vis.c (print_value): Use 'unsigned HOST_WIDE_INT' and
9302         HOST_WIDE_INT_PRINT_HEX to print HOST_WIDE_INT.
9303         * tree-dump.c (dump_pointer): Use 'unsigned long' for %lx.
9304
9305         * unwind-dw2.c (uw_identify_context): Use the CFA, not the IP.
9306
9307 2007-05-18  H.J. Lu  <hongjiu.lu@intel.com>
9308
9309         PR target/31989
9310         PR target/31681
9311         PR target/31666
9312         * config/i386/i386.c (init_cumulative_args): Set maybe_vaarg to
9313         true if function has no argument.
9314
9315 2007-05-18  DJ Delorie  <dj@redhat.com>
9316
9317         * config/mips/mips.c (mips_offset_within_alignment_p): New.
9318         (mips_symbolic_constant_p): Call it for TPREL and DTPREL symbols.
9319
9320 2007-05-18  Uros Bizjak  <ubizjak@gmail.com>
9321
9322         * longlong.h (__x86_64__): Add definitions for add_ssaaaa,
9323         sub_ddmmss, umul_ppmm, udiv_qrnnd, count_leading_zeros and
9324         count_trailing_zeros.
9325         (__i386__): Implement count_leading_zeros using __builtin_clz().
9326         Implement count_trailing_zeros usign __builtin_ctz().
9327
9328 2007-05-18  Richard Sandiford  <richard@codesourcery.com>
9329
9330         * config/i386/vxworks.h (ASM_PREFERRED_EH_DATA_FORMAT): Undefine.
9331
9332 2007-05-18  Uros Bizjak  <ubizjak@gmail.com>
9333
9334         PR middle-end/31344
9335         * expr.c (emit_move_change_mode): Change mode of push operands here.
9336
9337 2007-05-17  Ian Lance Taylor  <iant@google.com>
9338
9339         PR tree-optimization/31953
9340         * tree-vrp.c (set_value_range_to_value): Add equiv parameter.
9341         Change all callers.
9342         (set_value_range_to_null): Call set_value_range_to_value.
9343         (extract_range_from_comparison): Likewise.
9344
9345 2007-05-17  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
9346
9347         * toplev.c (print_version): Output GMP/MPFR version info.
9348
9349         * builtins.c (CASE_MATHFN_REENT): New macro.
9350         (mathfn_built_in): Use it.
9351         * builtins.def (BUILT_IN_GAMMA_R, BUILT_IN_GAMMAF_R,
9352         BUILT_IN_GAMMAL_R, BUILT_IN_LGAMMA_R, BUILT_IN_LGAMMAF_R,
9353         BUILT_IN_LGAMMAL_R): New.
9354         * doc/extend.texi: Document new builtins.
9355
9356         PR middle-end/31796
9357         * builtins.c (do_mpfr_remquo): New.
9358         (fold_builtin_2): Handle BUILT_IN_DREM/BUILT_IN_REMAINDER.
9359         (fold_builtin_3): Handle BUILT_IN_REMQUO.
9360
9361         PR middle-end/30251
9362         * builtins.c (fold_builtin_1): Handle y0, y1.
9363         (fold_builtin_2): Handle yn.
9364
9365         PR middle-end/30251
9366         * builtins.c (do_mpfr_bessel_n): New.
9367         (fold_builtin_1): Handle BUILT_IN_J0 and BUILT_IN_J1.
9368         (fold_builtin_2): Handle BUILT_IN_JN.
9369
9370 2007-05-17  Danny Smith  <dannysmith@users.sourceforge.net>
9371
9372         PR target/31965
9373         * config/i386/mingw32.h (_INTEGRAL_MAX_BITS): Define builtin as
9374         TYPE_PRECISION (intmax_type_node).
9375
9376 2007-05-17  Steve Ellcey  <sje@cup.hp.com>
9377
9378         PR target/31850
9379         * reload.c (subst_reloads): Remove checking.
9380
9381 2007-05-17  Eric Botcazou  <ebotcazou@libertysurf.fr>
9382
9383         PR rtl-optimization/31691
9384         * combine.c (simplify_set): Build a new src pattern instead of
9385         substituting its operands in the COMPARE case.
9386
9387 2007-05-17  Zdenek Dvorak  <dvorakz@suse.cz>
9388
9389         * tree-vrp.c (finalize_jump_threads): Do not care about dominance info.
9390         (execute_vrp): Preserve loops through jump threading.
9391         * tree-ssa-threadupdate.c (thread_single_edge,
9392         dbds_continue_enumeration_p, determine_bb_domination_status,
9393         thread_through_loop_header): New functions.
9394         (create_edge_and_update_destination_phis,
9395         create_edge_and_update_destination_phis): Set loops for the new blocks.
9396         (prune_undesirable_thread_requests): Removed.
9397         (redirect_edges): Do not pretend that redirect_edge_and_branch can
9398         create new blocks.
9399         (thread_block): Do not call prune_undesirable_thread_requests.
9400         Update loops.
9401         (mark_threaded_blocks): Select edges to thread here.
9402         (thread_through_all_blocks): Take may_peel_loop_headers argument.
9403         Thread edges through loop headers independently.
9404         * cfgloopmanip.c (create_preheader, mfb_keep_just): Export.
9405         * tree-pass.h (TODO_mark_first_instance): New.
9406         (first_pass_instance): Declare.
9407         * cfghooks.c (duplicate_block): Put the block to the original loop
9408         if copy is not specified.
9409         * tree-ssa-dom.c (tree_ssa_dominator_optimize): Preserve loops through
9410         jump threading.  Pass may_peel_loop_headers to
9411         thread_through_all_blocks according to first_pass_instance.
9412         * cfgloop.h (create_preheader): Declare.
9413         * tree-flow.h (thread_through_all_blocks): Declaration changed.
9414         * basic-block.h (mfb_keep_just, mfb_kj_edge): Declare.
9415         * passes.c (first_pass_instance): New variable.
9416         (next_pass_1): Set TODO_mark_first_instance.
9417         (execute_todo): Set first_pass_instance.
9418
9419 2007-05-17  Uros Bizjak  <ubizjak@gmail.com>
9420
9421         PR tree-optimization/24659
9422         * optabs.h (enum optab_index): Add OTI_vec_unpacks_float_hi,
9423         OTI_vec_unpacks_float_lo, OTI_vec_unpacku_float_hi,
9424         OTI_vec_unpacku_float_lo, OTI_vec_pack_sfix_trunc and
9425         OTI_vec_pack_ufix_trunc.
9426         (vec_unpacks_float_hi_optab): Define new macro.
9427         (vec_unpacks_float_lo_optab): Ditto.
9428         (vec_unpacku_float_hi_optab): Ditto.
9429         (vec_unpacku_float_lo_optab): Ditto.
9430         (vec_pack_sfix_trunc_optab): Ditto.
9431         (vec_pack_ufix_trunc_optab): Ditto.
9432         * genopinit.c (optabs): Implement vec_unpack[s|u]_[hi|lo]_optab
9433         and vec_pack_[s|u]fix_trunc_optab using
9434         vec_unpack[s|u]_[hi\lo]_* and vec_pack_[u|s]fix_trunc_* patterns
9435         * tree-vectorizer.c (supportable_widening_operation): Handle
9436         FLOAT_EXPR and CONVERT_EXPR.  Update comment.
9437         (supportable_narrowing_operation): New function.
9438         * tree-vectorizer.h (supportable_narrowing_operation): Prototype.
9439         * tree-vect-transform.c (vectorizable_conversion): Handle
9440         (nunits_in == nunits_out / 2) and (nunits_out == nunits_in / 2) cases.
9441         (vect_gen_widened_results_half): Move before vectorizable_conversion.
9442         (vectorizable_type_demotion): Call supportable_narrowing_operation()
9443         to check for target support.
9444         * optabs.c (optab_for_tree_code) Return vec_unpack[s|u]_float_hi_optab
9445         for VEC_UNPACK_FLOAT_HI_EXPR, vec_unpack[s|u]_float_lo_optab
9446         for VEC_UNPACK_FLOAT_LO_EXPR and vec_pack_[u|s]fix_trunc_optab
9447         for VEC_PACK_FIX_TRUNC_EXPR.
9448         (expand_binop): Special case mode of the result for
9449         vec_pack_[u|s]fix_trunc_optab.
9450         (init_optabs): Initialize vec_unpack[s|u]_[hi|lo]_optab and
9451         vec_pack_[u|s]fix_trunc_optab.
9452
9453         * tree.def (VEC_UNPACK_FLOAT_HI_EXPR, VEC_UNPACK_FLOAT_LO_EXPR,
9454         VEC_PACK_FIX_TRUNC_EXPR): New tree codes.
9455         * tree-pretty-print.c (dump_generic_node): Handle
9456         VEC_UNPACK_FLOAT_HI_EXPR, VEC_UNPACK_FLOAT_LO_EXPR and
9457         VEC_PACK_FIX_TRUNC_EXPR.
9458         (op_prio): Ditto.
9459         * expr.c (expand_expr_real_1): Ditto.
9460         * tree-inline.c (estimate_num_insns_1): Ditto.
9461         * tree-vect-generic.c (expand_vector_operations_1): Ditto.
9462
9463         * config/i386/sse.md (vec_unpacks_float_hi_v8hi): New expander.
9464         (vec_unpacks_float_lo_v8hi): Ditto.
9465         (vec_unpacku_float_hi_v8hi): Ditto.
9466         (vec_unpacku_float_lo_v8hi): Ditto.
9467         (vec_unpacks_float_hi_v4si): Ditto.
9468         (vec_unpacks_float_lo_v4si): Ditto.
9469         (vec_pack_sfix_trunc_v2df): Ditto.
9470
9471         * doc/c-tree.texi (Expression trees) [VEC_UNPACK_FLOAT_HI_EXPR]:
9472         Document.
9473         [VEC_UNPACK_FLOAT_LO_EXPR]: Ditto.
9474         [VEC_PACK_FIX_TRUNC_EXPR]: Ditto.
9475         * doc/md.texi (Standard Names) [vec_pack_sfix_trunc]: Document.
9476         [vec_pack_ufix_trunc]: Ditto.
9477         [vec_unpacks_float_hi]: Ditto.
9478         [vec_unpacks_float_lo]: Ditto.
9479         [vec_unpacku_float_hi]: Ditto.
9480         [vec_unpacku_float_lo]: Ditto.
9481
9482 2007-05-16  Uros Bizjak  <ubizjak@gmail.com>
9483
9484         * soft-fp/README: Update for new files.
9485         * soft-fp/floattisf.c: New file.
9486         * soft-fp/floattidf.c: New file.
9487         * soft-fp/floattitf.c: New file.
9488         * soft-fp/floatuntisf.c: New file.
9489         * soft-fp/floatuntidf.c: New file.
9490         * soft-fp/floatuntitf.c: New file.
9491         * soft-fp/fixsfti.c: New file.
9492         * soft-fp/fixdfti.c: New file.
9493         * soft-fp/fixtfti.c: New file.
9494         * soft-fp/fixunssfti.c: New file.
9495         * soft-fp/fixunsdfti.c: New file.
9496         * soft-fp/fixunstfti.c: New file.
9497         * soft-fp/extendxftf.c: New file.
9498         * soft-fp/trunctfxf.c: New file.
9499
9500         * libgcc-std.ver (__extendxftf2): Added to GCC_4.3.0 section.
9501         (__trunctfxf2): Ditto.
9502
9503         * config/i386/libgcc-x86_64-glibc.ver (__addtf3, __divtf3, __eqtf2,
9504         __extenddftf2, __extendsftf2, __fixtfdi, __fixtfsi, __fixtfti,
9505         __fixunstfdi, __fixunstfsi, __fixunstfti, __floatditf, __floatsitf,
9506         __floattitf, __floatunditf, __floatunsitf, __floatuntitf, __getf2,
9507         __letf2, __multf3, __negtf2, __subtf3, __trunctfdf2, __trunctfsf2,
9508         __unordtf2): Exclude and add to GCC_4.3.0 section for x86_64 targets.
9509
9510         * config/i386/t-fprules-softfp64: New file.
9511         * config/i386/sfp-machine.h: New file.
9512         * config.gcc (x86_64-*-linux*, x86_64-*-kfreebsd*-gnu,
9513         x86_64-*-knetbsd*-gnu): Add i386/t-fprules-softfp64
9514         and soft-fp/t-softfp to tmake_file.
9515         (i[34567]86-*-linux*, i[34567]86-*-kfreebsd*-gnu,
9516         i[34567]86-*-knetbsd*-gnu): Ditto for --enable-targets=all.
9517
9518         * config/i386/t-linux64 (softfp_wrap_start): New.
9519         (softfp_wrap_end): New.
9520         * config/i386/i386.c (ix86_scalar_mode_supported): TFmode is
9521         supported for TARGET_64BIT.
9522
9523 2007-05-16  Rafael Avila de Espindola  <espindola@google.com>
9524
9525         * c-common.c (c_common_signed_or_unsigned_type): Emulate
9526         c_common_unsigned_type behavior.
9527
9528 2007-05-16  Paolo Bonzini  <bonzini@gnu.org>
9529
9530         * config/i386/i386.c (legitimize_tls_address): Mark __tls_get_addr
9531         calls as pure.
9532
9533 2007-05-16  Eric Christopher  <echristo@apple.com>
9534
9535         * config/rs6000/rs6000.c (rs6000_emit_prologue): Move altivec register
9536         saving after stack push. Set sp_offset whenever we push.
9537         (rs6000_emit_epilogue): Move altivec register restore before
9538         stack push.
9539
9540 2007-05-16  Richard Sandiford  <richard@codesourcery.com>
9541
9542         * configure.ac: Allow sysroots to be relocated under $prefix as
9543         well as $exec_prefix.
9544         * configure: Regenerate.
9545
9546 2007-05-16  Richard Sandiford  <richard@codesourcery.com>
9547
9548         Revert:
9549
9550         2007-05-12  Richard Sandiford  <richard@codesourcery.com>
9551
9552         * configure.ac (gcc_gxx_include_dir): Use $(libsubdir_to_prefix).
9553         (gcc_tooldir): Likewise.
9554         * configure: Regenerate.
9555         * Makefile.in (libsubdir_to_prefix): New variable, based on the
9556         old configure.ac gcc_tooldir setting.
9557         (prefix_to_exec_prefix): New variable.
9558         (DRIVER_DEFINES): Use $(libsubdir_to_prefix)$(prefix_to_exec_prefix)
9559         rather than $(unlibsubdir)/../ to derive TOOLDIR_BASE_PREFIX.
9560
9561 2007-05-14  Janis Johnson  <janis187@us.ibm.com>
9562
9563         * c-typeck.c (build_binary_op): Return early for error.
9564
9565 2007-05-15  Zdenek Dvorak  <dvorakz@suse.cz>
9566
9567         * tree-ssa-loop-niter.c (record_estimate): Use GGC_NEW to allocate
9568         struct nb_iter_bound.
9569         (free_numbers_of_iterations_estimates_loop): Use ggc_free.
9570         * gengtype.c (open_base_files): Add cfhloop.h to the list of includes.
9571         * cfgloopmanip.c (place_new_loop): Vector larray is gc-allocated.
9572         * tree-scalar-evolution.c: Include gt-tree-scalar-evolution.h.
9573         (struct scev_info_str, scalar_evolution_info): Add GTY markers.
9574         (new_scev_info_str): Use GGC_NEW to allocate struct scev_info_str.
9575         (del_scev_info): Use ggc_free.
9576         (scev_initialize): Allocate scalar_evolution_info in gc memory.
9577         * loop-init.c: Include ggc.h.
9578         (loop_optimizer_init): Use GGC_CNEW to allocate struct loops.
9579         (loop_optimizer_finalize): Use ggc_free.
9580         * tree-ssa-loop.c (pass_tree_unswitch, pass_vectorize,
9581         pass_linear_transfom, pass_empty_loop, pass_complete_unroll,
9582         pass_iv_optimize): Add TODO_ggc_collect.
9583         * function.h (struct function): Remove skip marker from
9584         x_current_loops.
9585         * cfgloop.c: Include ggc.h.
9586         (flow_loops_free, flow_loop_free): Free the loop descriptions in gc
9587         memory.
9588         (establish_preds): Vector superloops is gc allocated.
9589         (alloc_loop): Allocate loop using GGC_CNEW.  Allocate head of
9590         loop->exits list.
9591         (flow_loops_find): Vector larray is gc allocated.
9592         (loop_exit_free): Use ggc_free.
9593         (rescan_loop_exit): Use GGC_NEW to allocate struct loop_exit.  Reflect
9594         that head of exits list is now not a part of struct loop.
9595         (record_loop_exits): Allocate exits table in gc memory.
9596         (get_loop_exit_edges, verify_loop_structure, single_exit): Reflect
9597         that head of exits list is now not a part of struct loop.
9598         * cfgloop.h (struct lpt_decision, struct nb_iter_bound,
9599         struct loop_exit): Add GTY marker.
9600         (struct loop): Add GTY marker.  Make superloops vector gc allocated.
9601         Add skip marker to aux field.  Make head of exits list a separate
9602         object.
9603         (struct loops): Add GTY marker.  Make larray vector gc allocated.
9604         Add param marker to exits table.
9605         (get_loops): Type changed.
9606         * Makefile.in (tree-scalar-evolution.o): Add
9607         gt-tree-scalar-evolution.h dependency.
9608         (cfgloop.o, loop-init.o): Add ggc.h dependency.
9609         (GTFILES): Add cfgloop.h and tree-scalar-evolution.c.
9610         * basic-block.h (struct basic_block_def): Remove skip marker from
9611         loop_father field.
9612
9613 2007-05-14  Uros Bizjak  <ubizjak@gmail.com>
9614
9615         * builtins.c (expand_builtin_mathfn): Use EXPAND_NORMAL instead
9616         of 0 in the call to expand_expr().
9617         (expand_builtin_mathfn_3): Ditto.
9618         (expand_builtin_interclass_mathfn): Ditto.
9619         (expand_builtin_cexpi): Ditto.
9620         (expand_builtin_int_roundingfn): Ditto.
9621         (expand_builtin_int_roundingfn_2): Ditto.
9622         (expand_builtin_pow): Ditto.
9623         (expand_builtin_powi): Ditto.
9624         (expand_builtin_bswap): Ditto.
9625         (expand_builtin_unop): Ditto.
9626         (expand_builtin_fabs): Ditto.
9627         (get_builtin_sync_mem): Use NULL_RTX instead of NULL in
9628         the call to expand_expr().
9629         (expand_builtin_sync_operation): Ditto.
9630         (expand_builtin_compare_and_swap): Ditto.
9631         (expand_builtin_lock_test_and_set): Ditto.
9632         * except.c (expand_builtin_eh_return_data_regno): Use EXPAND_NORMAL
9633         instead of 0 in the call to expand_expr().
9634         (expand_builtin_extract_return_addr): Ditto.
9635         (expand_builtin_eh_return): Ditto.
9636         (expand_eh_return): Ditto.
9637         * explow.c (expr_size): Ditto.
9638         * expr.c (optimize_bitfield_assignment_op): Ditto.
9639         (expand_assignement): Ditto.
9640         (store_expr): Ditto.
9641         (store_field): Ditto.
9642         (expand_expr_addr_expr_1): Use NULL_RTX instead of NULL in
9643         the call to expand_expr().
9644         (expand_expr_real_1) [COMPLEX_CST]: Use EXPAND_NORMAL instead of 0
9645         in the call to expand_expr().
9646         [CONSTRUCTOR, PLUS_EXPR, MINUS_EXPR, NEGATE_EXPR, ABS_EXPR,
9647         BIT_NOT_EXPR, LSHIFT_EXPR, LT_EXPR, TRUTH_NOT_EXPR]: Ditto.
9648         [VEC_UNPACK_HI_EXPR, VEC_UNPACK_LO]: Use expand_normal() instead
9649         of expand_expr().
9650         * optabs.c (expand_vec_shift_expr): Ditto.
9651         (expand_vec_cond_expr): Ditto.
9652         (vector_compare_rtx): Use EXPAND_STACK_PARM instead of 1 in the
9653         call to expand_expr().
9654         * stmt.c (expand_return): Use EXPAND_NORMAL instead of 0
9655         in the call to expand_expr().
9656
9657 2007-05-14  Dave Korn  <dave.korn@artimi.com>
9658
9659         * genautomata.c (gen_regexp_el):  Allocate correct size for regexp.
9660
9661 2007-05-14  Rafael Avila de Espindola  <espindola@google.com>
9662
9663         * c-common.c (warnings_for_convert_and_check): Use unsigned_type_for
9664         instead of c_common_unsigned_type.
9665         (c_common_unsigned_type): Remove.
9666         (shorten_compare): Use c_common_signed_or_unsigned_type instead of
9667         c_common_unsigned_type.
9668         (c_common_nodes_and_builtins): Use unsigned_type_for instead of
9669         c_common_unsigned_type.
9670         * c-common.h (c_common_unsigned_type): Remove.
9671         * c-decl.c (grokdeclarator): Use unsigned_type_for instead of
9672         c_common_unsigned_type.
9673         * c-format.c (check_format_types): Use unsigned_type_for instead of
9674         c_common_unsigned_type.
9675         * c-objc-common.h (LANG_HOOKS_UNSIGNED_TYPE): Remove.
9676         * c-typeck.c (convert_for_assignment): Use unsigned_type_for instead
9677         of c_common_unsigned_type.
9678         * convert.c (convert_to_integer): Use unsigned_type_for instead of
9679         lang_hooks.types.unsigned_type.
9680         * expmed.c (make_tree): Use unsigned_type_for instead of
9681         lang_hooks.types.unsigned_type.
9682         * fold-const.c (fold_negate_expr): Use unsigned_type_for instead of
9683         lang_hooks.types.unsigned_type.
9684         (build_range_check): Likewise.
9685         (fold_unary): Likewise.
9686         (fold_binary): Likewise.
9687         (fold_ternary): Likewise.
9688         * langhooks-def.h (LANG_HOOKS_UNSIGNED_TYPE): Remove.
9689         * langhooks.h (lang_hooks_for_types): Remove unsigned_type.
9690         * tree.c (get_unsigned_type): New.
9691         (unsigned_type_for): Use get_unsigned_type instead of
9692         lang_hooks.types.unsigned_type.
9693
9694 2007-05-14  Kazu Hirata  <kazu@codesourcery.com>
9695
9696         * config/m68k/m68k-protos.h: Rename m68k_interrupt_function_p
9697         to m68k_get_function_kind.  Update its prototype.
9698         * config/m68k/m68k.c (m68k_attribute_table): Add an entry for
9699         interrupt_thread.
9700         (m68k_interrupt_function_p): Return enum m68k_function_type
9701         instead of bool.  Rename to m68k_get_function_kind.
9702         (m68k_handle_fndecl_attribute): Reject interrupt_thread if the
9703         target is not fido.
9704         (m68k_compute_frame_layout): Don't mark any register for save
9705         if an interrupt_thread attribute is specified.
9706         (m68k_hard_regno_rename_ok): Update a use of
9707         m68k_interrupt_function_p.
9708         * config/m68k/m68k.h (EPILOGUE_USES): Update a use of
9709         m68k_interrupt_function_p.
9710         (m68k_function_type): New.
9711         * config/m68k/m68k.md (*return): Output a 'sleep' instruction
9712         for a function with an interrupt_thread attribute.
9713         * doc/extend.texi: Document the interrupt_thread attribute.
9714
9715 2007-05-13  Daniel Berlin  <dberlin@dberlin.org>
9716
9717         Fix PR tree-optimization/31911
9718         * tree-ssa-pre.c (phi_translate): Make sure to cache results even
9719         if they didn't change the expression.
9720
9721 2007-05-13  Zdenek Dvorak  <dvorakz@suse.cz>
9722
9723         * tree-scalar-evolution.c (resolve_mixers): Exported.
9724         * tree-scalar-evolution.h (resolve_mixers): Declare.
9725         * tree-data-ref.c (object_analysis, ptr_decl_may_alias_p,
9726         ptr_ptr_may_alias_p, may_alias_p, record_ptr_differ_p,
9727         record_record_differ_p, record_array_differ_p, array_ptr_differ_p,
9728         base_object_differ_p, base_addr_differ_p, analyze_array_indexes,
9729         init_array_ref, init_pointer_ref, analyze_indirect_ref,
9730         strip_conversion, analyze_offset_expr, address_analysis,
9731         object_analysis, analyze_offset): Removed.
9732         (dr_analyze_innermost, dr_analyze_indices, dr_analyze_alias,
9733         split_constant_offset, canonicalize_base_object_address,
9734         object_address_invariant_in_loop_p, disjoint_objects_p,
9735         dr_may_alias_p, dr_address_invariant_p): New functions.
9736         (create_data_ref): Use dr_analyze_innermost, dr_analyze_indices
9737         and dr_analyze_alias.
9738         (initialize_data_dependence_relation): Use dr_may_alias_p
9739         and object_address_invariant_in_loop_p.
9740         (compute_self_dependence): Handle the case when
9741         DDR_ARE_DEPENDENT (ddr) is chrec_dont_know.
9742         (find_data_references_in_stmt): Restrict the analysis of data
9743         references to the given loop nest.
9744         (find_data_references_in_loop): Made static.  Pass loop nest to
9745         find_data_references_in_stmt.
9746         (compute_data_dependences_for_loop): Use DR_VOPS.
9747         (free_data_ref): Free DR_VOPS.
9748         * tree-data-ref.h (struct first_location_in_loop): Replaced by ...
9749         (struct innermost_loop_behavior): ... new.
9750         (struct base_object_info): Replaced by ...
9751         (struct indices): ... new.
9752         (struct dr_alias): New.
9753         (enum data_ref_type): Removed.
9754         (struct data_reference): Consist of struct innermost_loop_behavior,
9755         struct indices and struct dr_alias.
9756         (DR_SET_ACCESS_FNS, DR_FREE_ACCESS_FNS): Removed.
9757         (DR_MEMTAG): Renamed to ...
9758         (DR_SYMBOL_TAG): ... this.
9759         (find_data_references_in_loop): Declaration removed.
9760         * tree-vect-analyze.c (vect_compute_data_ref_alignment): Use DR_INIT
9761         instead of DR_OFFSET_MISALIGNMENT.  DR_ALIGNED_TO is never NULL.
9762         (vect_analyze_data_refs): Use DR_SYMBOL_TAG instead of DR_MEMTAG.
9763         * tree-vect-transform.c (vect_create_data_ref_ptr): Ditto.
9764
9765 2007-05-13  Revital Eres  <eres@il.ibm.com>
9766
9767         * tree-ssa-dse.c (get_use_of_stmt_lhs): New function
9768         which walks virtual def-use chains to find redundant stores.
9769         (dse_optimize_stmt): Call it.
9770
9771 2007-05-12  Steven Bosscher  <steven@gcc.gnu.org>
9772
9773         * gcse.c (gcse_main): Do jump bypassing in CPROP2.
9774         * passes.c (init_optimization_passes): Move pass_jump_bypass
9775         after loop2.
9776
9777         * basic-block.h (bb_has_eh_pred): Fix style issue.
9778
9779 2007-05-12  Steven Bosscher  <steven@gcc.gnu.org>
9780
9781         PR rtl-optimization/31848
9782         * loop-invariant.c (move_invariant_reg): If we move an insn
9783         with a REG_EQUAL note, and that insn is not always executed,
9784         remove the REG_EQUAL note.
9785
9786 2007-05-12  Richard Guenther  <rguenther@suse.de>
9787
9788         PR tree-optimization/31797
9789         * tree-ssa-forwprop.c (forward_propagate_addr_expr): Do not
9790         propagate into a stmt that has volatile ops.
9791
9792 2007-05-12  Richard Sandiford  <richard@codesourcery.com>
9793
9794         * configure.ac (gcc_gxx_include_dir): Use $(libsubdir_to_prefix).
9795         (gcc_tooldir): Likewise.
9796         * configure: Regenerate.
9797         * Makefile.in (libsubdir_to_prefix): New variable, based on the
9798         old configure.ac gcc_tooldir setting.
9799         (prefix_to_exec_prefix): New variable.
9800         (DRIVER_DEFINES): Use $(libsubdir_to_prefix)$(prefix_to_exec_prefix)
9801         rather than $(unlibsubdir)/../ to derive TOOLDIR_BASE_PREFIX.
9802
9803 2007-05-11  Silvius Rus  <rus@google.com>
9804
9805         * Makefile.in (OBJS-common): Add tree-ssa-alias-warnings.o.
9806         * c-common.c (strict_aliasing_warning): Modify -Wstrict-aliasing logic.
9807         * c-common.h (strict_aliasing_warning): Change return type.
9808         * c-opts.c (c_common_handle_option): Add call to set_Wstrict_aliasing.
9809         * c-typeck.c (build_indirect_ref): Add call to strict_aliasing_warning.
9810         (build_c_cast): Condition call to strict_aliasing_warning.
9811         * doc/invoke.texi: Update description of -Wstrict-aliasing[=n].
9812         * flags.h (set_Wstrict_aliasing): Declare.
9813         * opts.c (set_Wstrict_alising): Define, add call to.
9814         * tree-flow.h (strict_aliasing_warning_backend): Declare.
9815         * tree-ssa-alias-warnings.c: New file.
9816         * tree-ssa-alias.c (compute_may_aliases): Add call to
9817         strict_aliasing_warning_backend.
9818
9819 2007-05-11  Zdenek Dvorak  <dvorakz@suse.cz>
9820
9821         * tree-loop-linear.c (gather_interchange_stats, try_interchange_loops):
9822         Use loop_depth and loop_outer accessor functions.
9823         * tree-ssa-loop-im.c (outermost_invariant_loop, set_level,
9824         determine_invariantness_stmt, move_computations_stmt): Ditto.
9825         * cfgloopmanip.c (fix_bb_placement, fix_loop_placement, remove_path,
9826         add_loop, loopify, unloop, fix_loop_structure): Ditto.
9827         * tree-ssa-loop-manip.c (find_uses_to_rename_use): Ditto.
9828         * tree-scalar-evolution.c (interpret_loop_phi,
9829         compute_scalar_evolution_in_loop, analyze_scalar_evolution_in_loop,
9830         instantiate_parameters_1, scev_const_prop): Ditto.
9831         * cfghooks.c (make_forwarder_block): Ditto.
9832         * cfgloopanal.c (mark_irreducible_loops, mark_loop_exit_edges): Ditto.
9833         * modulo-sched.c (loop_canon_p): Ditto.
9834         * tree-vectorizer.c (slpeel_tree_duplicate_loop_to_edge_cfg,
9835         slpeel_can_duplicate_loop_p): Ditto.
9836         * lambda-code.c (invariant_in_loop_and_outer_loops): Ditto.
9837         * tree-cfg.c (tree_duplicate_sese_region): Ditto.
9838         * cfgloop.c (flow_loop_dump, flow_loop_nodes_find, rescan_loop_exit,
9839         cancel_loop, verify_loop_structure): Ditto.
9840         (flow_loop_nested_p, superloop_at_depth, flow_loop_free,
9841         add_bb_to_loop, remove_bb_from_loops, find_common_loop): Use the
9842         superloops vector instead of "pred" array.
9843         (establish_preds): Take father loop as an argument.  Initialize the
9844         superloops vector.
9845         (flow_loop_tree_node_add): Pass father loop to establish_preds.
9846         Do not initialize loop->outer.
9847         (flow_loop_tree_node_remove): Truncate the superloops vector.
9848         * cfgloop.h (struct loop): Removed field "outer", fields "depth" and
9849         "pred" merged to "superloops" vector.
9850         (loop_depth, loop_outer): New.
9851         (fel_init): Use loop_outer.
9852
9853 2007-05-11  Jan Hubicka  <jh@suse.cz>
9854
9855         * cgraphunit.c: Include gt-cgraphunit.h
9856         (static_ctors, static_dtors): New static vars.
9857         (record_cdtor_fn, build_cdtor, cgraph_build_cdtor_fns): New functions,
9858         based on implementation in c-common.c
9859         (cgraph_finalize_function): Call record_cdtor_fn.
9860         (cgraph_optimize): Call cgraph_build_cdtor_fns.
9861         * decl.c (finish_function): Do not call c_record_cdtor_fn.
9862         (c_write_global_declarations): Do not call c_build_cdtor_fns.
9863         * c-common.c (static_ctors, static_dtors, c_record_cdtor_fn,
9864         build_cdtor, c_build_cdtor_fns): Remove.
9865         * c-common.h (static_ctors, static_dtors, c_record_cdtor_fn,
9866         c_build_cdtor_fns): Remove prototype.
9867
9868 2007-05-11  Paolo Carlini  <pcarlini@suse.de>
9869
9870         PR other/31852
9871         * builtin-types.def: Add BT_FN_PTR_CONST_PTR_INT_SIZE.
9872         * builtins.def: Add BUILT_IN_MEMCHR, use the latter.
9873         * builtins.c (fold_builtin_memchr): New.
9874         (expand_builtin_memchr): Call the latter.
9875         (expand_builtin, fold_builtin_3): Deal with BUILT_IN_MEMCHR.
9876         * doc/extend.texi ([Other built-in functions provided by GCC]):
9877         Document memchr.
9878
9879 2007-05-11  Andreas Krebbel  <krebbel1@de.ibm.com>
9880
9881         * config/s390/s390.md (GPR0_REGNUM, FPR0_REGNUM, FPR2_REGNUM,
9882         PFPO_CONVERT, PFPO_OP_TYPE_SF, PFPO_OP_TYPE_DF, PFPO_OP_TYPE_TF,
9883         PFPO_OP_TYPE_SD, PFPO_OP_TYPE_DD, PFPO_OP_TYPE_TD, PFPO_OP0_TYPE_SHIFT,
9884         PFPO_OP1_TYPE_SHIFT): Constants added.
9885         (DFP_ALL): Mode macro defined.
9886         ("*trunc<BFP:mode><DFP_ALL:mode>2", "*trunc<DFP_ALL:mode><BFP:mode>2",
9887         "*extend<BFP:mode><DFP_ALL:mode>2", "*extend<DFP_ALL:mode><BFP:mode>2"):
9888         Insn definitions added.
9889         ("trunc<BFP:mode><DFP_ALL:mode>2", "trunc<DFP_ALL:mode><BFP:mode>2",
9890         "extend<BFP:mode><DFP_ALL:mode>2", "extend<DFP_ALL:mode><BFP:mode>2"):
9891         Expanders added.
9892
9893 2007-05-10  Zdenek Dvorak  <dvorakz@suse.cz>
9894
9895         PR tree-optimization/31885
9896         * tree-chrec.c (chrec_contains_undetermined): Do not consider
9897         NULL_TREE to be undetermined.
9898         (automatically_generated_chrec_p): Return false for NULL.
9899
9900 2007-05-08  Bernd Schmidt  <bernd.schmidt@analog.com>
9901
9902         * config/bfin/bfin.h (MOVE_RATIO): Define.
9903
9904 2007-05-10  Richard Sandiford  <richard@codesourcery.com>
9905
9906         * config.gcc (sparc-wrs-vxworks): New target.
9907         * config/sparc/vxworks.h, config/sparc/t-vxworks: New files.
9908         * config/sparc/sparc-protos.h (sparc_emit_call_insn): Declare.
9909         * config/sparc/sparc.h: Include vxworks-dummy.h.
9910         (PRINT_OPERAND_ADDRESS): Extend SYMBOL_REF handling to
9911         include LABEL_REFs too.
9912         * config/sparc/sparc.c (sparc_expand_move): Don't assume that
9913         _GLOBAL_OFFSET_TABLE_ - label_ref is a link-time constant on
9914         VxWorks.
9915         (legitimize_pic_address): Handle LABEL_REFs like SYMBOL_REFs
9916         on VxWorks.
9917         (load_pic_register): Use gen_vxworks_load_got for VxWorks.
9918         (sparc_emit_call_insn): New function.
9919         (sparc_function_ok_for_sibcall): Restrict sibcalls to locally-binding
9920         functions when generating VxWorks PIC.
9921         * config/sparc/sparc.md (vxworks_load_got): New pattern.
9922         (call, call_value): Use sparc_emit_call_insn instead of
9923         emit_call_insn.
9924
9925 2007-05-09  Bob Wilson  <bob.wilson@acm.org>
9926
9927         * config/xtensa/xtensa.c (xtensa_output_literal): Don't use #if.
9928
9929 2007-05-09  Bob Wilson  <bob.wilson@acm.org>
9930
9931         * config/xtensa/xtensa.c (xtensa_output_literal): Mask out high bits
9932         for floating-point values if HOST_BITS_PER_LONG > 32.  Use
9933         split_double instead of operand_subword.
9934
9935 2007-05-08  Bernd Schmidt  <bernd.schmidt@analog.com>
9936
9937         * config/bfin/bfin.h (LOCAL_ALIGNMENT): Define.
9938         * config/bfin/bfin.c (bfin_local_alignment): New function.
9939         * config/bfin/bfin-protos.h (bfin_local_alignment): Declare it.
9940
9941 2007-05-08  Chao-ying Fu  <fu@mips.com>
9942
9943         * doc/md.texi (msub@var{m}@var{n}4, usub@var{m}@var{n}4): Document.
9944         * optabs.h (OTI_smsub_widen, OTI_umsub_widen): New optab_indexes.
9945         (smsub_widen_optab, umsub_widen_optab): Define.
9946         * optabs.c (init_optabs): Initialize smsub_widen_optab and
9947         umsub_widen_optab.
9948         * genopinit.c (optabs): Fill in smsub_widen_optab and
9949         umsub_widen_optab.
9950         * expr.c (expand_expr_real_1): Try to use smsub_widen_optab
9951         and umsub_widen_optab to implement multiply-subtract sequences.
9952         * config/mips/mips.md (*msac<u>_di): Rename to...
9953         (<u>msubsidi4): ...this.  Extend condition to include
9954         GENERATE_MADD_MSUB and TARGET_DSPR2.  Change the constraint
9955         of operand 0 to "ka" and use the three-operand form of msub<u>
9956         for TARGET_DSPR2.
9957         * config/mips/mips-dspr2.md (mips_msub, mips_msubu): Convert
9958         to define_expands.
9959
9960 2007-05-08  Kaz Kojima  <kkojima@gcc.gnu.org>
9961
9962         PR rtl-optimization/28011
9963         * reload.c (push_reload): Set dont_share if IN appears in OUT
9964         also when IN is a PLUS rtx.
9965         (reg_overlap_mentioned_for_reload_p): Return true if X and IN
9966         are same PLUS rtx.
9967
9968 2007-05-08  Kazu Hirata  <kazu@codesourcery.com>
9969
9970         * emit-rtl.c (unshare_all_rtl_1): Don't copy DECL_RTL.  Don't
9971         call unshare_all_decls.
9972         (unshare_all_rtl): Adjust the call to unshare_all_rtl_1.
9973         (unshare_all_decls): Remove.
9974
9975 2007-05-08  Simon Martin  <simartin@users.sourceforge.net>
9976
9977         PR 31847
9978         * tree-dump.c (dump_options): Don't use TDF_DIAGNOSTIC in "*-all" tree
9979         dumps.
9980
9981 2007-05-08  Sandra Loosemore  <sandra@codesourcery.com>
9982             Nigel Stephens  <nigel@mips.com>
9983
9984         * config/mips/mips.h (MAX_FPRS_PER_FMT): Renamed from FP_INC.
9985         Update comments and all uses.
9986         (MIN_FPRS_PER_FMT): Define.
9987         * config/mips/mips.c (function_arg): Fix to correctly handle
9988         the -mips32r2 -mfp64 -mabi=32 case.
9989         (override_options): Enable use of odd-numbered registers for
9990         SFmode values on MIPS32.
9991         (mips_save_reg_p): Save whole floating-point register pair if
9992         either half is used.
9993         (compute_frame_size): Fix comment.
9994
9995 2007-05-08  Jie Zhang  <jie.zhang@analog.com>
9996
9997         * config/bfin/bfin-protos.h (bfin_expand_epilogue): Add a third
9998         argument of type bool.
9999         * config/bfin/bfin.c (add_to_reg): Add epilogue_p as a fourth
10000         argument. Safely select temporary P register according to it.
10001         (do_link): Change call site of add_to_reg accordingly.
10002         (do_unlink): Add epilogue_p as a fourth argument and pass it
10003         to add_to_reg.
10004         (expand_interrupt_handler_epilogue): Change call of do_unlink
10005         accordingly.
10006         (bfin_expand_prologue): Add a third argument sibcall_p.
10007         * config/bfin/bfin.md (epilogue): Change call of
10008         bfin_expand_epilogue accordingly.
10009         (sibcall_epilogue): Likewise.
10010         (eh_return_internal): Likewise.
10011
10012         * config/bfin/bfin-protos.h (enum bfin_cpu): Add
10013         BFIN_CPU_BF534, BFIN_CPU_BF536 and BFIN_CPU_BF561.
10014         * config/bfin/bfin.c (bfin_handle_option): Handle
10015         -mcpu=bf534, -mcpu=bf536 and -mcpu=bf561.
10016         * config/bfin/bfin.h (TARGET_CPU_CPP_BUILTINS):
10017         Support bf534, bf536 and bf561.
10018         * doc/invoke.texi (Blackfin Options): Document -mcpu and -msim.
10019
10020 2007-05-08  Uros Bizjak  <ubizjak@gmail.com>
10021
10022         PR target/31854
10023         * config/i386/i386.c (ix86_function_regparm): Process local
10024         functions only when TREE_CODE (decl) equals FUNCTION_DECL.
10025
10026 2007-05-07  Mike Stump  <mrs@apple.com>
10027
10028         * doc/invoke.texi (Warning Options): Document that -Wempty-body
10029         also checks for and while statements in C++.
10030
10031 2007-05-07  Nathan Froyd  <froydnj@codesourcery.com>
10032
10033         * gcc.c (at_file_supplied): New variable.
10034         (main): Set it if we expanded argv.
10035         (do_spec_1): Pass an @-file to the linker if we were called with
10036         an @-file argument and HAVE_GNU_LD.
10037         * collect2.c (at_file_supplied): New variable.
10038         (response_file): New variable.
10039         (collect_exit): Unlink response_file if necessary.
10040         (handler): Likewise.
10041         (do_wait): Likewise.
10042         (main): Set at_file_supplied if we expanded argv.
10043         (collect_execute): Pass an @-file to subprocesses if we were called
10044         with an @-file argument.
10045         * configure.ac: Add define for HAVE_GNU_LD.
10046         * configure: Regenerate.
10047         * config.in: Regenerate.
10048
10049 2007-05-07  Naveen.H.S  <naveen.hs@kpitcummins.com>
10050
10051         * config/m32c/muldiv.md (mulhisi3_c): Limit the mode of the 2nd
10052         operand to HI mode.
10053         (mulsi3): New.
10054         (divsi3): New.
10055         (udivsi3): New.
10056
10057 2007-05-07  Jayant Sonar  <jayants@kpitcummins.com>
10058
10059         * config/m32c/m32c.c (SYMBOL_FLAG_FUNCVEC_FUNCTION): Define.
10060         (TARGET_ENCODE_SECTION_INFO): Re-define.
10061         (m32c_encode_section_info): New
10062         (function_vector_handler): New
10063         (current_function_special_page_vector): New
10064         (m32c_special_page_vector_p): New.
10065         * config/m32c/m32c-protos.h (m32c_special_page_vector_p):
10066         Prototype.
10067         * config/m32c/jump.md: Added instruction JSRS for functions
10068         with attribute "function_vector".
10069         * doc/extend.texi (function_vector): Added description
10070         for M16C, M32C targets.
10071
10072 2007-05-07  DJ Delorie  <dj@redhat.com>
10073
10074         PR 31794
10075         * config/m32c/shift.md (ashlpsi3_i, ashrpsi3_i, ashlpsi3,
10076         ashrpsi3, lshrpsi3): Update shift count constraint.
10077
10078 2007-05-07  Danny Smith  <dannysmith@users.sourceforge.net>
10079             Nathan Froyd  <froydnj@codesourcery.com>
10080
10081         PR 22133
10082         * c-incpath.c (add_path): Strip trailing path separators.
10083
10084 2007-05-07  Eric Botcazou  <ebotcazou@adacore.com>
10085
10086         * tree-ssa-dom.c (tree_ssa_dominator_optimize): Reset cfg_altered.
10087         Free dominance info before purging EH edges.
10088         (eliminate_degenerate_phis): Likewise.
10089         (propagate_rhs_into_lhs): Set cfg_altered to true instead of 1.
10090
10091 2007-05-07  Jan Hubicka  <jh@suse.cz>
10092
10093         * gimplify.c (gimplify_expr): Do not crash when folding
10094         (void *)(int)&a + 4.
10095
10096 2007-05-07  Francois-Xavier Coudert  <fxcoudert@gcc.gnu.org>
10097
10098         PR driver/31694
10099         * c-opts.c (lang_fortran): Make it non static.
10100         * c-common.h (lang_fortran): New prototype.
10101         * c-cppbuiltin.c (c_cpp_builtins): Create a __GFORTRAN__ if the
10102         -lang-fortran option was passed by the driver.
10103
10104 2007-05-06  Eric Botcazou  <ebotcazou@adacore.com>
10105
10106         * timevar.c (timevar_print): Test ENABLE_ASSERT_CHECKING instead
10107         of ASSERT_CHECKING.  Tweak message.
10108
10109 2007-05-06  Revital Eres  <eres@il.ibm.com>
10110
10111         PR 30957
10112         * loop-unroll.c (insert_var_expansion_initialization):
10113         Initialize the expansions with -zero instead of +zero.
10114
10115 2007-05-05  Aurelien Jarno  <aurelien@aurel32.net>
10116
10117         * config/pa/pa.md: Split tgd_load, tld_load and tie_load
10118         into pic and non-pic versions. Mark r19 as used for
10119         tgd_load_pic, tld_load_pic and tie_load_pic. Mark r27 as used
10120         for tgd_load, tld_load and tie_load .
10121         * config/pa/pa.c (legitimize_tls_address): Emit pic or non-pic
10122         version of tgd_load, tld_load and tie_load depending on the
10123         value of flag_pic.
10124
10125 2007-05-04  Ulrich Drepper  <drepper@redhat.com>
10126             Jakub Jelinek  <jakub@redhat.com>
10127
10128         * crtstuff.c (HIDDEN_DTOR_LIST_END): New macro.
10129         (__do_global_dtors_aux): Use more paranoid loop to run
10130         destructors if HIDDEN_DTOR_LIST_END.
10131         (__DTOR_END__): Export as a hidden symbol when HIDDEN_DTOR_LIST_END.
10132
10133 2007-05-04  Jakub Jelinek  <jakub@redhat.com>
10134
10135         * varasm.c (align_variable): Don't increase alignment for
10136         DECL_THREAD_LOCAL_P variables above BITS_PER_WORD through
10137         DATA_ALIGNMENT or CONSTANT_ALIGNMENT.
10138
10139 2007-05-04  Josh Conner  <jconner@apple.com>
10140
10141         * basic-block.h (cdi_direction): Assign values to all enumeration
10142         constants.
10143         (dom_computed): Remove.
10144         (dom_info_state): New.
10145         (set_dom_info_availability): New.
10146         * tree-ssa-loop-im.c (determine_invariantness): Initialize
10147         walk_data.dom_direction.
10148         * cfghooks.c (delete_basic_block): Use dom_info_available_p()
10149         instead of dom_computed[].
10150         (split_edge): Likewise.
10151         (create_basic_block): Likewise.
10152         (merge_blocks): Likewise.
10153         * ifcvt.c (find_if_header): Likewise.
10154         * tree-cfgcleanup.c (cleanup_tree_cfg): Likewise.
10155         * tree-ssa-dce.c (remove_dead_stmt): Likewise.
10156         * tree-ssa.c (verify_ssa): Likewise.
10157         * tree-cfg.c (tree_verify_flow_info): Likewise.
10158         (remove_edge_and_dominated_blocks): Likewise.
10159         * dominance.c (dom_computed): Make static.
10160         (calc_dfs_tree_nonrec): Change third param to a bool.
10161         (calc_dfs_tree): Change second param to a bool.
10162         (calc_idioms): Change second param to a bool.  Use
10163         dom_convert_dir_to_idx.
10164         (init_dom_info): Validate dir before using.
10165         (dom_convert_dir_to_idx): New.
10166         (calculate_dominance_info): Use dom_convert_dir_to_idx.  New
10167         variable 'reverse' used for calling calc_dfs_tree and calc_idoms.
10168         (free_dominance_info): Use dom_convert_dir_to_idx.
10169         (get_immediate_dominator): Likewise.
10170         (set_immediate_dominator): Likewise.
10171         (get_dominated_by): Likewise.
10172         (redirect_immediate_dominators): Likewise.
10173         (nearest_common_denominator): Likewise.
10174         (dominated_by_p): Likewise.
10175         (bb_dom_dfs_in): Likewise.
10176         (bb_dom_dfs_out): Likewise.
10177         (recount_dominator): Likewise.
10178         (iterate_fix_dominators): Likewise.
10179         (add_to_dominance_info): Likewise.
10180         (delete_from_dominance_info): Likewise.
10181         (first_dom_son): Likewise.
10182         (next_dom_son): Likewise.
10183         (dom_info_available_p): Likewise.
10184         (dom_info_state): New.
10185         (set_dom_info_availability): New.
10186
10187 2007-05-04  Andreas Krebbel  <krebbel1@de.ibm.com>
10188
10189         * config/s390/s390.md ("fix_trunc<mode>di2", "fix_trunc<mode>si2"):
10190         Expander removed.
10191         ("fix_trunc<DSF:mode><GPR:mode>2"): Expander added.
10192
10193 2007-05-04  Bob Wilson  <bob.wilson@acm.org>
10194
10195         * config/xtensa/xtensa.md (adddi3, adddi_carry): Delete.
10196         (subdi3, subdi_carry): Delete.
10197
10198 2007-05-04  Jan Hubicka  <jh@suse.cz>
10199             Richard Guenther  <rguenther@suse.de>
10200
10201         * opts.c (decode_options): Do not fiddle with inlining
10202         parameters in case of optimizing for size.
10203         * ipa-inline.c (cgraph_decide_recursive_inlining): When optimizing
10204         for size do nothing.
10205         (cgraph_decide_inlining_of_small_function): When optimizing for
10206         size never inline functions increasing caller size.
10207         (cgraph_early_inlining): Inline for size when optimizing for size.
10208
10209 2007-05-04  Bernd Schmidt  <bernd.schmidt@analog.com>
10210
10211         * config/bfin/bfin.md (<optab>di3): Now a define_expand which expands
10212         logical operations piecewise.
10213         (<optab>di_zesidi_di, <optab>di_sesidi_di, negdi2, one_cmpldi2,
10214         zero_extendsidi2, subdi_di_zesidi, subdi_zesidi_di, subdi_di_sesidi,
10215         subdi_sesidi_di): Delete.
10216         (add_with_carry): Produce carry in CC instead of a DREG to shorten
10217         the generated sequence.  Allow three-reg add in constraints.  Rewrite
10218         the rtl expression for carry to avoid zero_extend of a constant.
10219         (sub_with_carry): New pattern.
10220         (adddi3, subdi3): Change into define_expand.  For subtract, generate a
10221         different sequence not involving jumps.
10222         (notbi): Now a named pattern.
10223
10224 2007-05-04  Bradley Lucier  <lucier@math.purdue.edu>
10225
10226         * doc/invoke.texi (i386 and x86-64 Options) [-mpc32, -mpc64, -mpc80]:
10227         Add the note about a significant loss of accuracy of some
10228         mathematical routines when these options are used.
10229
10230 2007-05-04  Maxim Kuvyrkov  <mkuvyrkov@ispras.ru>
10231
10232         * haifa-sched.c (rtx_vec_t): New typedef.
10233         (contributes_to_priority_p): Extract piece of priority () into new
10234         static function.
10235         (priority): Use the function.  Add assertion.
10236         (rank_for_schedule, set_priorities): Add assertion to check that
10237         insn's priority is initialized.
10238         (clear_priorities, calc_priorities): Change signature.  Make it update
10239         all relevant insns.  Update all callers ('add_to_speculative_block ()'
10240         and 'create_block_check_twin ()').
10241         * sched-int.h (struct haifa_insn_data): Remove field 'priority_known'.
10242         Add new field 'priority_status'.
10243         (INSN_PRIORITY_STATUS): New macro.
10244         (INSN_PRIORITY_KNOWN): Change to use INSN_PRIORITY_STATUS.
10245
10246 2007-05-04  Maxim Kuvyrkov  <mkuvyrkov@ispras.ru>
10247
10248         * sched-ebb.c (debug_ebb_dependencies): New static function.
10249         (init_ready_list): Use it.
10250
10251         * sched-rgn.c (debug_dependencies): Split into 'debug_dependencies ()'
10252         with changed signature and 'debug_rgn_dependencies ()'.
10253         (debug_rgn_dependencies): New static function.
10254         (init_ready_list): Use it.
10255
10256         * sched-int.h (debug_dependencies): Declare.
10257
10258 2007-05-04  Andreas Krebbel  <krebbel1@de.ibm.com>
10259
10260         * libgcc-std.ver (__ffssi2): Added to GCC_4.3.0 section.
10261
10262 2007-05-04  Dirk Mueller  <dmueller@suse.de>
10263
10264         * c.opt(Wmain,ffreestanding): Enable for C++,ObjC++.
10265
10266 2007-05-03  Jan Hubicka  <jh@suse.cz>
10267
10268         * fold-const.c (fold_unary): Convert (T1)(X op Y) into
10269         ((T1)X op (T1)Y), for pointer type in more cases than before.
10270
10271         * gimplify.c (gimplify_expr): Fold (void *)&a + 4.
10272
10273         * tree-object-size.c (plus_expr_object_size): When operand size is
10274         unknown, return unknown.
10275
10276 2007-05-03  Dirk Mueller  <dmueller@suse.de>
10277
10278         * doc/invoke.texi (-m386,-m486,-mpentium,-mpentiumpro): Remove.
10279
10280         * config/i386/i386.h (CC1_CPU_SPEC): Remove handling for deprecated
10281         options.
10282
10283         * config/i386/i386.opt (m386,m486,mpentium,mpentiumpro): Remove.
10284
10285 2007-05-03  Janis Johnson  <janis187@us.ibm.com>
10286
10287         * doc/sourcebuild.texi (Test Directives) Clarify dg-excess-errors.
10288
10289 2007-05-03  Joseph Myers  <joseph@codesourcery.com>
10290
10291         * config/soft-fp/double.h, config/soft-fp/extended.h,
10292         config/soft-fp/floatundidf.c, config/soft-fp/floatundisf.c,
10293         config/soft-fp/floatunsidf.c, config/soft-fp/floatunsisf.c,
10294         config/soft-fp/op-2.h, config/soft-fp/op-4.h,
10295         config/soft-fp/op-common.h, config/soft-fp/quad.h: Update from
10296         glibc CVS.
10297
10298 2007-05-03  Ian Lance Taylor  <iant@google.com>
10299
10300         * config/rs6000/rs6000.c (rs6000_override_options): Don't set
10301         MASK_PPC_GFXOPT for 8540 or 8548.
10302
10303 2007-05-03  Uros Bizjak  <ubizjak@gmail.com>
10304
10305         * tree-vect-transform.c (vect_update_inits_of_drs): Use
10306         vect_print_dump_info() to output debug information.
10307
10308 2007-05-03  Uros Bizjak  <ubizjak@gmail.com>
10309
10310         PR target/31768
10311         * config/i386/i386.c (print_operand) ['z']: Output 'w' for
10312         operands of size 2 when operand is not MEM_P.
10313
10314 2007-05-03  Zdenek Dvorak  <dvorakz@suse.cz>
10315
10316         PR tree-optimization/30565
10317         * lambda-code.c (perfect_nestify): Fix updating of dominators.
10318
10319 2007-05-03  Bernd Schmidt  <bernd.schmidt@analog.com>
10320
10321         * config/bfin/bfin.md (addpdi3, us_truncpdisi2): New patterns.
10322         (umulsi3_highpart): Use them.
10323         * config/bfin/lib1funcs.asm (__umulsi3_highpart): Use unsigned move
10324         for final accumulator to D regisster tranfser.
10325
10326 2007-05-03  Dorit Nuzman  <dorit@il.ibm.com>
10327
10328         PR tree-optimization/31699
10329         * tree-vect-analyze.c (vect_update_misalignment_for_peel): Remove
10330         wrong code.
10331         (vect_enhance_data_refs_alignment): Compute peel amount using
10332         TYPE_VECTOR_SUBPARTS instead of vf.
10333         * tree-vect-transform.c (vect_gen_niters_for_prolog_loop): Likewise.
10334
10335 2007-05-02  Brooks Moses  <brooks.moses@codesourcery.com>
10336
10337         PR bootstrap/31776
10338         * system.h: Remove inclusion of double-int.h
10339         * tree.h: Include double-int.h
10340         * gengtype.c: Likewise
10341         * cfgloop.h: Likewise
10342         * Makefile.in: Adjust dependencies on double-int.h
10343
10344 2007-05-02  Eric Christopher  <echristo@apple.com>
10345
10346         * config/darwin.h (TARGET_OPTION_TRANSLATE_TABLE): Translate
10347         -shared to -Zdynamiclib.
10348
10349 2007-05-02  Seongbae Park  <seongbae.park@gmail.com>
10350
10351         PR c++/31663
10352         * c-common.c (strip_pointer_or_array_types): New function.
10353         * c-common.h (strip_pointer_or_array_types): New function declaration.
10354
10355 2007-05-03  Zdenek Dvorak  <dvorakz@suse.cz>
10356
10357         PR tree-optimization/31771
10358         * tree-cfg.c (move_block_to_fn): Assign bb to the correct index.
10359
10360 2007-05-02  Paul Brook  <paul@codesourcery.com>
10361
10362         * config/arm/bpabi.S (aeabi_lcmp): Fix result on overflow.
10363
10364 2007-05-02  Andrew Pinski  <andrew_pinski@playstation.sony.com>
10365
10366         PR middle-end/29715
10367         * fold-const.c (fold_comparision): Remove the "foo++ == CONST"
10368         transformation.
10369
10370 2007-05-02  Nick Clifton  <nickc@redhat.com>
10371
10372         * config/frv/predicates.md (symbolic_operand): Accept CONSTs.
10373
10374 2007-05-02  Richard Guenther  <rguenther@suse.de>
10375
10376         PR tree-optimization/31146
10377         * tree-ssa-forwprop.c (forward_propagate_addr_expr_1): New
10378         argument, single_use_p.  If we have a single use that is
10379         a conversion to the definition rhs type, propagate that rhs.
10380         (forward_propagate_addr_expr): Pass single_use_p argument
10381         to forward_propagate_addr_expr_1.
10382
10383 2007-05-01  H.J. Lu  <hongjiu.lu@intel.com>
10384
10385         * config/i386/i386.c (ix86_expand_sse_comi): Remove unused
10386         variable.
10387
10388 2007-05-01  Dwarakanath Rajagopal <dwarak.rajagopal@amd.com>
10389
10390         * doc/invoke.texi: Fix typo, 'AMD Family 10h core' instead of
10391         'AMD Family 10 core'.
10392
10393 2007-05-01  Dwarakanath Rajagopal <dwarak.rajagopal@amd.com>
10394
10395         * config/i386/i386.c (override_options): Accept k8-sse3, opteron-sse3
10396         and athlon64-sse3 as improved versions of k8, opteron and athlon64
10397         with SSE3 instruction set support.
10398         * doc/invoke.texi: Likewise.
10399
10400 2007-05-01  Dwarakanath Rajagopal <dwarak.rajagopal@amd.com>
10401
10402         * config/i386/i386.c (override_options): Tuning 32-byte loop
10403         alignment for amdfam10 architecture. Increasing the max loop
10404         alignment to 24 bytes.
10405
10406 2007-05-01  Kazu Hirata  <kazu@codesourcery.com>
10407
10408         * config/m68k/constraints.md: New.
10409         * config/m68k/m68k.h (REG_CLASS_FROM_LETTER,
10410         CONST_OK_FOR_LETTER_P, CONST_DOUBLE_OK_FOR_LETTER_P,
10411         EXTRA_CONSTRAINT): Remove.
10412         * config/m68k/m68k.md: Include constraints.md.
10413         * expr.c (expand_expr_real_1): Copy DECL_RTL before using it.
10414
10415 2007-05-01  Ian Lance Taylor  <iant@google.com>
10416
10417         PR tree-optimization/31739
10418         * tree-vrp.c (vrp_val_is_max): New static function.
10419         (vrp_val_is_min): New static function.
10420         (set_value_range_to_value): Use TYPE_{MAX,MIN}_VALUE rather than
10421         copying the node.
10422         (set_value_range): Use vrp_val_is_{max,min}.
10423         (extract_range_from_assert): Likewise.
10424         (extract_range_from_binary_expr): Likewise.
10425         (extract_range_from_unary_expr): Likewise.
10426         (dump_value_range, vrp_meet): Likewise.
10427         (vrp_visit_phi_node): Likewise.
10428         * tree.c (build_distinct_type_copy): Revert change of 2007-04-27.
10429
10430 2007-05-01  Mark Mitchell  <mark@codesourcery.com>
10431
10432         * config/i386/gmon-sol2.c (size_t): New type.
10433         (intptr_t): Likewise.
10434         (s_textsize): Declare as size_t.
10435         (sbrk): Declare.
10436         (monstartup): Use size_t for sizes.
10437         (_mcount): Save and restore registers.
10438         (internal_mcount): Pass 0 as the first argument to monstartup
10439         in 64-bit mode.
10440         (moncontrol): Convert pointer to appropriately sized integer
10441         before passing to profil.
10442
10443 2007-05-01  Joseph Myers  <joseph@codesourcery.com>
10444
10445         * config/rs6000/darwin-ldouble.c (__gcc_qunord): Define if
10446         __NO_FPRS__, not just if _SOFT_DOUBLE.
10447         * config/rs6000/libgcc-ppc-glibc.ver (__gcc_qunord): Likewise.
10448         * config/rs6000/rs6000.c (rs6000_init_libfuncs): Use __gcc_qunord
10449         also for E500 double.
10450         * config/rs6000/rs6000.md (buneq, bunge, bungt, bunle, bunlt,
10451         suneq, sunge, sungt, sunle, sunlt): Disable for (TARGET_HARD_FLOAT
10452         && !TARGET_FPRS).
10453
10454 2007-05-01  Richard Guenther  <rguenther@suse.de>
10455
10456         * tree-ssa-loop-manip.c (ip_normal_pos): Check if last stmt
10457         is NULL.
10458
10459 2007-05-01  Joseph Myers  <joseph@codesourcery.com>
10460
10461         * config/rs6000/libgcc-ppc-glibc.ver (__gcc_qgt): Fix typo.
10462
10463 2007-05-01  Jan Hubicka  <jh@suse.cz>
10464
10465         * tree-vectorize.c (vect_is_simple_use): gimple_min_invariant is
10466         invariant.
10467
10468 2007-05-01  Jan Hubicka  <jh@suse.cz>
10469
10470         * tree.h (maybe_fold_offset_to_component_ref): Remove.
10471         (maybe_fold_offset_to_reference): Declare.
10472         * fold-const.c (fold_unary): Do not fold
10473         (type *)&A into &A->field_of_type_and_offset_0
10474         * tree-ssa-ccp.c (maybe_fold_offset_to_array_ref): When base type
10475         size is unknown, give up.
10476         (maybe_fold_offset_to_component_ref): Ignore firelds with unknown
10477         offsets.
10478         (maybe_fold_offset_to_reference): New.
10479         (maybe_fold_stmt_indirect): Use it.
10480         (fold_stmt_r): Fold (type *)&A+offset into A->field_if_type_and_offset.
10481         * gimplify.c (gimplify_conversion): Canonicalize conversions to
10482         field references.
10483         (gimplify_expr): Likewise for plus_expr.
10484
10485 2007-05-01  Zdenek Dvorak  <dvorakz@suse.cz>
10486
10487         * tree-ssa-loop-ivopts.c (rewrite_use_nonlinear_expr): Use
10488         bsi_after_labels.  Always insert statements before bsi.
10489         * tree-vect-transform.c (vect_create_epilog_for_reduction): Ditto.
10490         * predict.c (apply_return_prediction): Check for empty blocks.
10491         * cfgexpand.c (lab_rtx_for_bb): New variable.
10492         (label_rtx_for_bb): Do not create new tree labels.
10493         (expand_gimple_basic_block): Add labels recorded in lab_rtx_for_bb.
10494         (tree_expand_cfg): Initialize lab_rtx_for_bb.
10495         * tree-cfg.c (build_tree_cfg): Call cleanup_dead_labels after
10496         creating edges.
10497         (label_for_bb): Add field used.
10498         (update_eh_label, main_block_label): Mark the label used.
10499         (cleanup_dead_labels): Remove unused labels.
10500
10501 2007-05-01  Richard Guenther  <rguenther@suse.de>
10502
10503         * tree-vrp.c (set_value_range): Do not allocate equiv bitmap
10504         if it is not about to be set.
10505         (get_value_range): Do not pre-allocate equiv bitmap.
10506         (update_value_range): No need to clear equiv field.
10507         (add_equivalence): Change prototype to get bitmap pointer.
10508         Allocate bitmap here if it is not already.
10509         (extract_range_from_assert): Do not allocate bitmap here.
10510         Update callers to add_equivalence.
10511         (extract_range_from_ssa_name): Likewise.
10512         (get_vr_for_comparison): New static helper.
10513         (compare_name_with_value): Handle NULL equiv bitmap by
10514         peeling the first iteration of the comparison loop.
10515         Use get_vr_for_comparison.
10516         (compare_names): Handle NULL equiv bitmaps by using fake
10517         ones.  Use get_vr_for_comparison.
10518
10519 2007-04-30  Brooks Moses  <brooks.moses@codesourcery.com>
10520
10521         * double-int.c (mpz_set_double_int): Moved from
10522         tree-ssa-loop-niter.c.
10523         (mpz_get_double_int): Likewise; also, add option to wrap
10524         out-of-range integers.
10525         * double-int.h: New prototypes for above.
10526         * tree.c (get_static_type_bounds): Moved from
10527         tree-ssa-loop-niter.c; now returns TYPE_MIN_VALUE and
10528         TYPE_MAX_VALUE if they exist..
10529         * tree.h: New prototype for above.
10530         * tree-ssa-loop-niter.c: Adjust mpz_to_double_int and
10531         get_type_bounds calls.
10532         (mpz_set_double_int): Move to double-int.c.
10533         (get_type_bounds): Move to tree.c, rename to
10534         get_static_type_bounds.
10535         (mpz_to_double_int): Move to double-int.c, rename to
10536         mpz_get_double_int.
10537
10538 2007-04-30  Bob Wilson  <bob.wilson@acm.org>
10539
10540         * config/xtensa/lib1funcs.asm (__umodsi3, __modsi3): Rearrange so that
10541         DIV0 exception can fall through to a normal return.
10542
10543 2007-04-30  Alexandre Oliva  <aoliva@redhat.com>
10544
10545         PR middle-end/22156
10546         Temporarily revert:
10547         2007-04-06  Andreas Tobler  <a.tobler@schweiz.org>
10548         * tree-sra.c (sra_build_elt_assignment): Initialize min/maxshift.
10549         2007-04-05  Alexandre Oliva  <aoliva@redhat.com>
10550         * tree-sra.c (try_instantiate_multiple_fields): Needlessly
10551         initialize align to silence bogus warning.
10552         2007-04-05  Alexandre Oliva  <aoliva@redhat.com>
10553         * tree-sra.c (struct sra_elt): Add in_bitfld_block.  Remove
10554         all_no_warning.
10555         (struct sra_walk_fns): Remove use_all parameter from use.
10556         (sra_hash_tree): Handle BIT_FIELD_REFs.
10557         (sra_elt_hash): Don't hash bitfld blocks.
10558         (sra_elt_eq): Skip them in parent compares as well.  Handle
10559         BIT_FIELD_REFs.
10560         (sra_walk_expr): Don't maintain or pass down use_all_p.
10561         (scan_use): Remove use_all parameter.
10562         (scalarize_use): Likewise.  Re-expand assignment to
10563         BIT_FIELD_REF of gimple_reg.  De-scalarize before input or
10564         output, and re-scalarize after output.  Don't mark anything
10565         for no warning.
10566         (scalarize_ldst): Adjust.
10567         (scalarize_walk_gimple_modify_statement): Likewise.
10568         (build_element_name_1): Handle BIT_FIELD_REFs.
10569         (instantiate_element): Don't warn for any element whose parent
10570         is used as a whole.
10571         (instantiate_missing_elements_1): Return the sra_elt.
10572         (canon_type_for_field): New.
10573         (try_instantiate_multiple_fields): New.
10574         (instantiate_missing_elemnts): Use them.
10575         (mark_no_warning): Removed.
10576         (generate_one_element_ref): Handle BIT_FIELD_REFs.
10577         (REPLDUP, sra_build_elt_assignment): New.
10578         (generate_copy_inout): Use them.
10579         (generate_element_copy): Likewise.  Handle bitfld differences.
10580         (generate_element_zero): Don't recurse for blocks.  Use
10581         sra_build_elt_assignment.
10582         (generate_one_element_int): Take elt instead of var.  Use
10583         sra_build_elt_assignment.
10584         (generate_element_init_1): Adjust.
10585         (scalarize_use, scalarize_copy): Use REPLDUP.
10586         (scalarize_ldst): Move assert before dereference.
10587         (dump_sra_elt_name): Handle BIT_FIELD_REFs.
10588
10589 2007-04-30  Andrew Pinski  <andrew_pinski@playstation.sony.com>
10590
10591         PR C++/31721
10592         * tree.c (reconstruct_complex_type): Reconstruct a reference
10593         correctly.
10594         Also use the same mode for the pointer as the old pointer type.
10595
10596 2007-04-30  Francois-Xavier Coudert  <coudert@clipper.ens.fr>
10597
10598         * doc/trouble.texi (Interoperation): Remove note about Ultrix
10599         Fortran compiler.
10600
10601 2007-04-29  Zdenek Dvorak  <dvorakz@suse.cz>
10602
10603         PR rtl-optimization/31676
10604         * df-scan.c (record_nonlocal_goto_receiver_defs): New function.
10605         (df_refs_record): Call it.
10606
10607 2007-04-29  Bernd Schmidt  <bernd.schmidt@analog.com>
10608
10609         * rtl.def (SS_ABS): New code.
10610         * config/bfin/bfin.c (print_operand): New modifier 'v'.
10611         (enum bfin_builtins): Add BFIN_BUILTIN_SUM_2X16, BFIN_BUILTIN_ABS_1x32,
10612         BFIN_BUILTIN_ROUND_1x32, BFIN_BUILTIN_MULT_1x32x32,
10613         BFIN_BUILTIN_MULT_1x32x32NS, BFIN_BUILTIN_SSASHIFT_1x32.
10614         (bfin_init_builtins): Define them.
10615         (bdesc_1arg, bdesc_2arg): Add some of them here, ...
10616         (bfin_expand_builtin): ... and handle the others here.
10617         * config/bfin/bfin.md (ssabssi2, ssroundsi2, ssashiftsi3,
10618         flag_mul_macv2hi_parts_acconly_andcc0): New patterns.
10619         (ss_absv2hi2): Renamed from absv2hi; use ss_abs code.
10620         (ssashiftv2hi3, ssashifthi3, lshiftv2hi3, lshifthi3): Shift count
10621         operand is only HImode.
10622
10623 2007-04-29  Steven Bosscher  <steven@gcc.gnu.org>
10624
10625         * regclass.c (scan_one_insn): Remove splitting of
10626         two address insns.
10627
10628 2007-04-28  Sandra Loosemore  <sandra@codesourcery.com>
10629             Nigel Stephens  <nigel@mips.com>
10630
10631         * config/mips/mips.h (SLOW_BYTE_ACCESS): Turn off for MIPS16.
10632
10633 2007-04-28  Jan Hubicka  <jh@suse.cz>
10634
10635         * config/alpha/alpha.c (alpha_output_mi_thunk_osf): Use
10636         insn_locators_alloc instead of insn_locators_initialize;
10637         call reset_block_changes.
10638         * config/sparc/sparc.c (sparc_output_mi_thunk): Likewise.
10639         * config/sh/sh.c (sparc_output_mi_thunk): Likewise.
10640         * config/is64/ia64.c (ia64_output_mi_thunk): Likewise.
10641         * config/rs6000/rs6000.c (rs6000_output_mi_thunk): Likewise.
10642         * config/score/score.c (th_output_mi_thunk): Likewise.
10643         * config/mips/mips.c (mips_output_mi_thunk): Likewise.
10644         * cfglyaout.c (set_curr_insn_source_location, set_curr_insn_block):
10645         tolerate uninitialized locator info.
10646
10647         Re-apply:
10648         * function.c (init_function_start): Don't init line number info.
10649         (expand_function_end): Update.
10650         (reset_block_changes, record_block_change, finalize_block_changes,
10651         check_block_change, free_block_changes): Kill.
10652         * function.h (reset_block_changes, record_block_change,
10653         finalize_block_changes, check_block_change, free_block_changes):
10654         Remove prototypes.
10655         (struct function): Remove ib_boundaries_block.
10656         * emit-rtl.c (make_insn_raw, make_jump_insn_raw, make_call_insn_raw):
10657         Use curr_insn_locator to initialize locator.
10658         (emit_line_note): Remove.
10659         * cfgexpand.c (expand_gimple_cond_expr): Update.
10660         (construct_exit_block): Likewise.
10661         (tree_expand_cfg): Initialize/finalize locators.
10662         * expr.c (expand_expr_real): Update.
10663         * cfglayout.c (line_locators_locs, line_locators_lines,
10664         file_locators_locs, file_locators_files): Remove.
10665         (set_block_levels): Move to cfgexpand.c.
10666         (insn_locators_initialize): Remove.
10667         (pass_insn_locators_initialize): Remove.
10668         (locations_locators_locs, locations_locators_vals): New static vars.
10669         (curr_location, last_location, curr_block, last_block, curr_rtl_loc):
10670         Likewise.
10671         (insn_locators_alloc, insn_locators_finalize,
10672         set_curr_insn_source_location, set_curr_insn_block, curr_insn_locator):
10673         New functions.
10674         (locator_location): New.
10675         (locator_line, locator_file): Rewrite.
10676         * rtl.h (emit_line_note): Kill.
10677         (insn_locators_alloc, insn_locators_finalize,
10678         set_curr_insn_source_location, set_curr_insn_block, curr_insn_locator):
10679         Declare.
10680         * tree-inline.c (initialize_cfun): Do not initialize
10681         ib_boundaries_block.
10682         * passes.c (pass_insn_locators_initialize): Remove.
10683
10684 2007-04-28  Zdenek Dvorak  <dvorakz@suse.cz>
10685
10686         * tree-cfg.c (move_block_to_fn): Release bb from dominance
10687         info.  Update last_basic_block correctly.
10688
10689 2007-04-27  Kaz Kojima  <kkojima@gcc.gnu.org>
10690
10691         PR target/31701
10692         * config/sh/sh.c (output_stack_adjust): Avoid using the frame
10693         register itself to hold the offset constant.  Tell flow the use
10694         of r4 and r5 when they are used.
10695
10696 2007-04-27  Richard Guenther  <rguenther@suse.de>
10697
10698         * tree-ssa-forwprop.c (forward_propagate_into_cond): Keep track
10699         if we simplified anything.
10700         (tree_ssa_forward_propagate_single_use_vars): Defer overflow
10701         warnings until we did a simplification and the stmt was not
10702         marked as TREE_NO_WARNING.
10703
10704 2007-04-27  Mike Stump  <mrs@apple.com>
10705
10706         * config/rs6000/darwin.h (ALWAYS_PUSH_CONSTS_USING_REGS_P): Remove.
10707
10708 2007-04-27  Ian Lance Taylor  <iant@google.com>
10709
10710         PR middle-end/31710
10711         * tree.c (build_distinct_type_copy): If TYPE_MIN_VALUE or
10712         TYPE_MAX_VALUE exist, convert them to the new type.
10713
10714 2007-04-27  Zdenek Dvorak  <dvorakz@suse.cz>
10715
10716         * tree-cfgcleanup.c (cleanup_tree_cfg): Verify dominance info
10717         if it claims to be available.
10718         * tree-ssa-dce.c (remove_dead_stmt): Mark cfg as altered when
10719         edge is redirected.
10720         (perform_tree_ssa_dce): Always free postdominators.
10721
10722 2007-04-27  Richard Henderson  <rth@redhat.com>
10723
10724         * config/alpha/predicates.md (aligned_memory_operand): Mark
10725         as define_special_predicate.
10726         (unaligned_memory_operand, normal_memory_operand): Likewise.
10727         (reg_or_unaligned_mem_operand): Remove.
10728         (any_memory_operand): Match the documentation and check for
10729         non-renumbered pseudos during reload.
10730         * config/alpha/alpha.c (alpha_secondary_reload): Rename from
10731         alpha_secondary_reload_class, update to new interface, make static.
10732         Handle CQImode like HImode.  Remove FP subreg check.
10733         (alpha_expand_mov): Use replace_equiv_address.
10734         (alpha_expand_mov_nobwx): Use any_memory_operand.
10735         (TARGET_SECONDARY_RELOAD): New.
10736         * config/alpha/alpha.h (SECONDARY_INPUT_RELOAD_CLASS): Remove.
10737         (SECONDARY_OUTPUT_RELOAD_CLASS): Remove.
10738         * config/alpha/sync.md (I12MODE, I48MODE, modesuffix): Move ...
10739         * config/alpha/alpha.md: ... here.
10740         (RELOAD12, reloadmode): New.
10741         (movcqi): New.
10742         (reload_in<RELOAD12>): Macro-ize from reload_inqi, reload_inhi.
10743         Don't handle the aligned case here.
10744         (reload_out<RELOAD12>): Macro-ize from reload_outqi, reload_outhi.
10745         (reload_in<I12MODE>_aligned): Macro-ize from reload_inqi_help,
10746         reload_inhi_help.  Don't expect a scratch register.
10747         (reload_out<I12MODE>_aligned): Macro-ize from reload_outqi_help,
10748         reload_outhi_help.
10749         * config/alpha/alpha-protos.h (alpha_secondary_reload_class): Remove.
10750
10751 2007-04-27  Richard Guenther  <rguenther@suse.de>
10752
10753         * tree-ssa-forwprop.c (get_prop_dest_stmt): Fix comment typo.
10754
10755 2007-04-27  Richard Guenther  <rguenther@suse.de>
10756
10757         PR tree-optimization/30965
10758         PR tree-optimization/30978
10759         * Makefile.in (tree-ssa-forwprop.o): Depend on $(FLAGS_H).
10760         * tree-ssa-forwprop.c (forward_propagate_into_cond_1): Remove.
10761         (find_equivalent_equality_comparison): Likewise.
10762         (simplify_cond): Likewise.
10763         (get_prop_source_stmt): New helper.
10764         (get_prop_dest_stmt): Likewise.
10765         (can_propagate_from): Likewise.
10766         (remove_prop_source_from_use): Likewise.
10767         (combine_cond_expr_cond): Likewise.
10768         (forward_propagate_comparison): New function.
10769         (forward_propagate_into_cond): Rewrite to use fold for
10770         tree combining.
10771         (tree_ssa_forward_propagate_single_use_vars): Call
10772         forward_propagate_comparison to propagate comparisons.
10773
10774 2007-04-27  Richard Guenther  <rguenther@suse.de>
10775
10776         PR tree-optimization/31715
10777         * tree-ssa-ccp.c (maybe_fold_offset_to_array_ref): Make
10778         sure to do computation on the offset in an appropriate
10779         signed type.
10780
10781 2007-04-27  Richard Sandiford  <richard@codesourcery.com>
10782
10783         * reload.h (elimination_target_reg_p): Declare.
10784         * reload.c (find_reloads): Don't apply the reg_rtx move
10785         optimization if the SET_DEST satisfies elimination_target_reg_p.
10786         * reload1.c (elimination_target_reg_p): New function.
10787         (gen_reload): In the move/add2 fallback, make sure that op0
10788         does not overlap the destination register.
10789
10790 2007-04-27  Zdenek Dvorak  <dvorakz@suse.cz>
10791
10792         * tree-ssa-loop-im.c (determine_invariantness_stmt): Attempt to
10793         transform only GIMPLE_MODIFY_STMTs.
10794         * tree-complex.c (expand_complex_operations_1): Ditto.
10795         (expand_complex_div_wide): Do not create gotos in COND_EXPR branches.
10796         * tree-ssa-loop-manip.c (build_if_stmt): Removed.
10797         (tree_transform_and_unroll_loop): Do not create gotos in COND_EXPR
10798         branches.
10799         * value-prof.c (tree_divmod_fixed_value, tree_mod_pow2,
10800         tree_mod_subtract, tree_ic, tree_stringop_fixed_value): Ditto.
10801         * omp-low.c (expand_parallel_call, expand_omp_for_generic,
10802         expand_omp_for_static_chunk, expand_omp_for_static_nochunk): Ditto.
10803         * tree-vectorizer.c (slpeel_make_loop_iterate_ntimes,
10804         slpeel_add_loop_guard): Ditto.
10805         * tree-mudflap.c (mf_build_check_statement_for): Ditto.
10806         * lambda-code.c (perfect_nestify): Ditto.
10807         * tree-iterator.c (tsi_split_statement_list_before): Fix splitting
10808         before the first statement.
10809         * tree-optimize.c (execute_free_datastructures): Fix comments.
10810         (execute_free_cfg_annotations): Do not call disband_implicit_edges.
10811         * tree-flow.h (disband_implicit_edges): Declaration removed.
10812         * tree-cfg.c (make_cond_expr_edges): Remove gotos from COND_EXPR
10813         branches.
10814         (cleanup_dead_labels, tree_redirect_edge_and_branch): Handle
10815         COND_EXPRs without gotos.
10816         (disband_implicit_edges, has_label_p): Removed.
10817         (tree_verify_flow_info): Verify that COND_EXPR branches are empty.
10818         (tree_lv_add_condition_to_bb): Do not create gotos in COND_EXPR
10819         branches.
10820         * tree.c (build3_stat): Mark COND_EXPRs used as statements as having
10821         side effects.
10822         * tree-pretty-print.c (dump_implicit_edges): Dump implicit edges
10823         also for COND_EXPRs.
10824         * cfgexpand.c (label_rtx_for_bb): New function.
10825         (expand_gimple_cond_expr): Do not expect gotos in COND_EXPR branches.
10826         Use label_rtx_for_bb to find the labels.
10827         (expand_gimple_basic_block): Remove RETURN_EXPR at the end of the
10828         last block.  Detect fallthru edges.
10829
10830 2007-04-26  Ian Lance Taylor  <iant@google.com>
10831
10832         PR target/28675
10833         * reload.c (find_reloads_subreg_address): If the address was valid
10834         in the original mode but not in the new mode, reload the whole
10835         address.
10836
10837 2007-04-27  Zdenek Dvorak  <dvorakz@suse.cz>
10838
10839         * tree-cfgcleanup.c (cfgcleanup_altered_bbs): New global variable.
10840         (remove_fallthru_edge): Use remove_edge_and_dominated_blocks.
10841         (cleanup_control_expr_graph): Do not invalidate dominance info.
10842         Record altered blocks.
10843         (cleanup_control_flow, cleanup_forwarder_blocks): Removed.
10844         (cleanup_control_flow_bb, split_bbs_on_noreturn_calls,
10845         cleanup_tree_cfg_bb): New functions.
10846         (remove_forwarder_block): Do not maintain the worklist of blocks.
10847         Record altered blocks.
10848         (cleanup_tree_cfg_1): Iterate over cfgcleanup_altered_bbs,
10849         not over whole cfg.
10850         (cleanup_tree_cfg): Do not iterate cleanup_tree_cfg_1.  Only call
10851         delete_unreachable_blocks if dominators are not available.
10852         * tree-inline.c (optimize_inline_calls): Free dominance information
10853         earlier.
10854         * tree-flow.h (remove_edge_and_dominated_blocks,
10855         cfgcleanup_altered_bbs): Altered.
10856         * tree-cfg.c (replace_uses_by, tree_merge_blocks): Record altered
10857         blocks.
10858         (get_all_dominated_blocks, remove_edge_and_dominated_blocks): New
10859         functions.
10860         (tree_purge_dead_eh_edges): Use remove_edge_and_dominated_blocks,
10861         do not invalidate dominators.
10862
10863 2007-04-26  Anatoly Sokolov <aesok@post.ru>
10864
10865         * config/avr/avr.c (avr_mcu_types): Add support for ATmega8HVA and
10866         ATmega16HVA devices. Move AT90USB82 device to 'avr5' architecture.
10867         * config/avr/avr.h (LINK_SPEC, CRT_BINUTILS_SPECS): (Ditto.).
10868         * config/avr/t-avr (MULTILIB_MATCHES): (Ditto.).
10869
10870 2007-04-26  Steve Ellcey  <sje@cup.hp.com>
10871
10872         * config/ia64/ia64.md (ip_value):  Fix itanium_class attribute.
10873
10874 2007-04-26  Richard Guenther  <rguenther@suse.de>
10875
10876         PR tree-optimization/31703
10877         * tree-ssa-loop-im.c (rewrite_bittest): Make sure to use
10878         the right type for the target of the bittest.
10879
10880 2007-04-26  Richard Sandiford  <richard@codesourcery.com>
10881
10882         * config/i386/vx-common.h (RETURN_IN_MEMORY): Use
10883         ix86_sol10_return_in_memory.
10884
10885 2007-04-26  Richard Sandiford  <richard@codesourcery.com>
10886
10887         * config/i386/i386.c (ix86_sol10_return_in_memory): Remove unused
10888         variables.
10889
10890 2007-04-26  Jakub Jelinek  <jakub@redhat.com>
10891
10892         PR c++/31598
10893         * tree-inline.c (copy_body_r): Don't touch TREE_TYPE of OMP_CLAUSE.
10894
10895         PR tree-optimization/30558
10896         * tree-eh.c (lower_eh_filter): If EH_FILTER_MUST_NOT_THROW
10897         clear this_state.prev_try.
10898
10899 2007-04-26  Richard Sandiford  <richard@codesourcery.com>
10900             Mark Mitchell  <mark@codesourcery.com>
10901
10902         * config/i386/i386-protos.h (ix86_sol10_return_in_memory): Declare.
10903         * config/i386/i386.c (ix86_sol10_return_in_memory): New function.
10904         * config/i386/sol2-10.h (RETURN_IN_MEMORY): Use it.
10905
10906 2007-04-26  Richard Sandiford  <richard@codesourcery.com>
10907
10908         PR driver/31107
10909         * doc/invoke.texi (%:print-asm-header): Document.
10910         * gcc.c (asm_options): Use %:print-asm-header() for --target-help
10911         and -ftarget-help.
10912         (static_spec_functions): Add print-asm-header.
10913         (main): Print a banner before the --target-help linker options.
10914         (print_asm_header_spec_function): New function.
10915
10916 2007-04-25  Kaz Kojima  <kkojima@gcc.gnu.org>
10917
10918         PR target/31403
10919         * config/sh/sh.md (movsi_ie): Fix length for TARGET_SH2A.
10920         (movsf_ie): Likewise.
10921
10922 2007-04-25  Paolo Carlini  <pcarlini@suse.de>
10923
10924         * doc/extend.texi ([Type Traits]): Adjust per N2255.
10925
10926 2007-04-25  Bob Wilson  <bob.wilson@acm.org>
10927
10928         * config/xtensa/lib1funcs.asm (__udivsi3, __divsi3): Throw an
10929         exception for divide-by-zero.
10930         (__umodsi3, __modsi3): Likewise.
10931
10932 2007-04-25  Dirk Mueller  <dmueller@suse.de>
10933
10934         * c-typeck.c (build_compound_expr): Annotate warning()
10935         call with OPT_Wunused_value.
10936         * tree-ssa.c (warn_uninit): Annotate warning with
10937         OPT_Wunintialized.
10938         * c-common.c (handle_sentinel_attribute): Annotate warning
10939         call with OPT_Wattributes.
10940
10941 2007-04-25  Thiemo Seufer  <ths@mips.com>
10942
10943         * config/mips/mips.opt (mdmx, mmt, mno-mdmx): New options.
10944         (mips16): Fix typo.
10945         * config/mips/mips.h (ASM_SPEC): Pass -mmt/-mno-mt and -mdmx/-mno-mdmx
10946         on to the assembler.  Improve handling of -mno-mips16.  Add handling
10947         of -mno-mips3d, -mno-dsp, -mno-dspr2.
10948         * doc/invoke.texi (MIPS Options): Whitespace cleanup.  Fix wrong use
10949         of @itemx.  Document -mno-dsp, -mno-dspr2, -mno-paired-single, -mdmx,
10950         -mno-mdmx, -mno-mips3d, -mmt and -mno-mt.
10951
10952 2007-04-25  Danny Smith  <dannysmith.users.sourceforge.net>
10953
10954         PR target/31680
10955         * config/i386/winnt.c (i386_pe_file_end): Strip only
10956         USER_LABEL_PREFIX when writing export name.
10957
10958 2007-04-25  Richard Sandiford  <richard@codesourcery.com>
10959
10960         * config.gcc (sh-wrs-vxworks): Don't include dbxelf.h.  Include
10961         sh/elf.h, vx-common.h and vxworks.h.
10962         * config/sh/sh.h: Include config/vxworks-dummy.h.
10963         (SUBTARGET_OVERRIDE_OPTIONS): Define.
10964         (OVERRIDE_OPTIONS): Use it.
10965         * config/sh/sh.md (GOTaddr2picreg): Add suport for VxWorks RTPs.
10966         (vxworks_picreg): New pattern.
10967         * config/sh/vxworks.h (TARGET_OS_CPP_BUILTINS): Use
10968         VXWORKS_OS_CPP_BUILTINS.
10969         (LIB_SPEC, LINK_SPEC, STARTFILE_SPEC, ENDFILE_SPEC): Redefine
10970         to their VXWORKS_* equivalents.
10971         (SUBTARGET_OVERRIDE_OPTIONS, SUBTARGET_CPP_SPEC): Define.
10972         (SUBTARGET_LINK_EMUL_SUFFIX, FUNCTION_PROFILER): Define.
10973         * config/sh/lib1funcs.asm (NO_FPSCR_VALUES): Define for VxWorks PIC.
10974         (set_fpscr, ic_invalidate): Add VxWorks PIC sequences.
10975         * config/sh/t-vxworks (MULTILIB_OPTIONS): Add m4a, -mrtp and
10976         -mrtp/-fPIC multilibs.
10977         (MULTILIB_EXCEPTIONS): Generalize globs accordingly.
10978         (MULTILIB_MATCHES, EXTRA_MULTILIB_PARTS): Define.
10979         (MULTILIB_OSDIRNAMES): Delete.
10980
10981 2007-04-25  Anatoly Sokolov <aesok@post.ru>
10982
10983         PR target/18989
10984         * config/avr/avr.h (ASM_OUTPUT_ALIGN): Redefine.
10985
10986 2007-04-24  Brooks Moses  <brooks.moses@codesourcery.com>
10987
10988         * real.c (mpfr_from_real): Handle Inf and NaN, and allow the
10989         rounding mode to be specified by the caller.
10990         (real_to_mpfr) Likewise.
10991         * real.h: Update mpfr_from_real, mpfr_to_real prototypes to
10992         include new arguments.
10993         * builtins.c: Update mpfr_from_real, mpfr_to_real calls.
10994
10995 2007-04-24  Ian Lance Taylor  <iant@google.com>
10996
10997         PR tree-optimization/31605
10998         * tree-vrp.c (set_value_range): Check that min and max are not
10999         both overflow infinities.
11000         (set_value_range_to_value): New static function.
11001         (extract_range_from_binary_expr): Call set_value_range_to_value.
11002         (extract_range_from_cond_expr): Likewise.
11003         (extract_range_from_expr): Likewise.
11004         (extract_range_from_unary_expr): Likewise.  Don't create a range
11005         which overflows on both sides.
11006         (vrp_meet): Check for a useless range.
11007         (vrp_visit_phi_node): If we see a constant which looks like an
11008         overflow infinity, turn off the TREE_OVERFLOW flag.
11009
11010 2007-04-24  Ian Lance Taylor  <iant@google.com>
11011
11012         * flow.c (elim_reg_cond): Handle a comparison of a subreg.
11013
11014 2007-04-24  Simon Martin  <simartin@users.sourceforge.net>
11015
11016         PR diagnostic/25923
11017         * tree-pass.h (TDF_DIAGNOSTIC): New dump control to specify that a
11018         diagnostic message is being built.
11019         * tree-pretty-print.c (dump_generic_node): Only write the
11020         formatted text into BUFFER's stream if we are not building a
11021         diagnostic message.
11022         * toplev.c (default_tree_printer): Pass TDF_DIAGNOSTIC to
11023         dump_generic_node.
11024         * Makefile.in (toplev.o): Depend on tree-pass.h.
11025
11026 2007-04-24  Ian Lance Taylor  <iant@google.com>
11027
11028         PR tree-optimization/31602
11029         * tree-ssa-loop-ch.c (copy_loop_headers): Set TREE_NO_WARNING for
11030         conditionals in the copied loop header.
11031         * tree-cfg.c (fold_cond_expr_cond): Don't issue undefined overflow
11032         warnings if TREE_NO_WARNING is set.
11033         * doc/invoke.texi (Warning Options): Clarify that
11034         -Wstrict-overflow does not warn about loops.
11035
11036 2007-04-24  Janis Johnson  <janis187@us.ibm.com>
11037
11038         * config/rs6000/rs6000.c (function_arg_advance): For 32-bit ELF ABI,
11039         expand on the comment about _Decimal128 arguments and check the
11040         integer result of the modulus operation; for 64-bit ELF ABI, ensure
11041         that _Decimal128 argument uses even/odd register pair.
11042         (function_arg): Ditto.
11043
11044 2007-04-24  Hui-May Chang <hm.chang@apple.com>
11045
11046         * reload1.c (merge_assigned_reloads) : Do not merge a RELOAD_OTHER
11047         instruction with a RELOAD_FOR_OPERAND_ADDRESS instruction.
11048
11049 2007-04-24  Richard Guenther  <rguenther@suse.de>
11050             Olga Golovanevsky  <olga@il.ibm.com>
11051
11052         * fold-const.c (multiple_of_p): Check for bottom
11053         to be zero.
11054
11055 2007-04-24  Richard Henderson  <rth@redhat.com>
11056
11057         * libgcc2.h (AVOID_FP_TYPE_CONVERSION): Rename from
11058         IS_IBM_EXTENDED.  Also define in terms of WIDEST_HARDWARE_FP_SIZE.
11059         * libgcc2.c (__floatdisf): Avoid double-word arithmetic when
11060         looking for non-zero bits shifted out.  Avoid a recursive call
11061         when constructing the scalar.
11062         (__floatundisf): Likewise.
11063
11064 2007-04-24  Nathan Froyd  <froydnj@codesourcery.com>
11065
11066         * dwarf2out.c (field_byte_offset): Move the existing logic
11067         under the control of PCC_BITFIELD_TYPE_MATTERS and just use
11068         the bit offset of the field if !PCC_BITFIELD_TYPE_MATTERS.
11069
11070 2007-04-24  Andreas Krebbel  <krebbel1@de.ibm.com>
11071
11072         PR target/31641
11073         * config/s390/s390.c (s390_expand_setmem): Don't ICE for constant
11074         length argument of 0 for memset.
11075         (s390_expand_movmem, s390_expand_setmem, s390_expand_cmpmem): Use
11076         unsigned shift instead of the signed variant.
11077
11078 2007-04-24  Andreas Krebbel  <krebbel1@de.ibm.com>
11079
11080         * config/s390/s390.md ("*cmp<mode>_ccs_0_ibm", "*cmp<mode>_ccs_ibm",
11081         "fix_trunc<BFP:mode><GPR:mode>2_ieee", "fix_truncdfsi2_ibm",
11082         "floatsidf2_ibm", "floatsisf2", "truncdfsf2_ieee", "truncdfsf2_ibm",
11083         "*trunctfdf2_ieee", "*trunctfdf2_ibm", "*trunctfsf2_ieee",
11084         "*trunctfsf2_ibm", "extendsfdf2_ieee", "extendsfdf2_ibm",
11085         "*extenddftf2_ieee", "*extenddftf2_ibm", "*extendsftf2_ieee",
11086         "*extendsftf2_ibm", "*add<mode>3", "*add<mode>3_ibm", "*sub<mode>3_ibm",
11087         "*mul<mode>3", "*mul<mode>3_ibm", "*div<mode>3", "*div<mode>3_ibm",
11088         "*neg<mode>2_ibm", "*abs<mode>2_ibm"): Insn definitions removed.
11089         ("fix_trunc<BFP:mode><GPR:mode>2_bfp", "floatsi<mode>2",
11090         "truncdfsf2", "trunctf<mode>2", "add<mode>3", "sub<mode>3",
11091         "mul<mode>3", "div<mode>3"): Insn definitions added.
11092         ("fixuns_trunc<BFP:mode><GPR:mode>2", "fix_trunc<mode>di2",
11093         "fix_trunc<mode>si2"): gen_fix_trunc<BFP:mode><GPR:mode>2_ieee renamed
11094         to gen_fix_trunc<BFP:mode><GPR:mode>2_bfp.
11095         ("fix_truncdfsi2", "floatsitf2", "truncdfsf2", "trunctfdf2",
11096         "trunctfsf2", "extendsfdf2", "extenddftf2", "extendsftf2", "add<mode>3",
11097         "sub<mode>3", "mul<mode>3", "div<mode>3"): Expander removed.
11098         ("fix_trunc<mode>si2", "extend<DSF:mode><BFP:mode>2"): Expander added.
11099         * config/s390/s390.h (TARGET_IBM_FLOAT, TARGET_IEEE_FLOAT,
11100         TARGET_FLOAT_FORMAT): Macro definitions removed.
11101         (FP_REGNO_P): No special case for !TARGET_IEEE_FLOAT anymore.
11102         * config/s390/s390.c (struct processor_costs, z900_cost, z990_cost,
11103         z9_109_cost): Remove fields for hexfloat instructions: dxr, ddr and der.
11104         (s390_rtx_costs): Remove !TARGET_IEEE_FLOAT special branches.
11105         (s390_gen_rtx_const_DI): Function removed.
11106         * config/s390/s390-protos.h (s390_gen_rtx_const_DI): Prototype removed.
11107
11108 2007-04-24  Richard Sandiford  <richard@codesourcery.com>
11109
11110         * optabs.c (set_conv_libfunc): Prefer libgcc2's __ffsMM2 functions
11111         over an external ffs function.
11112
11113 2007-04-24  Chao-ying Fu  <fu@mips.com>
11114             Richard Sandiford  <richard@nildram.co.uk>
11115
11116         * doc/md.texi (madd@var{m}@var{n}4, umadd@var{m}@var{n}4): Document.
11117         * optabs.h (OTI_smadd_widen, OTI_umadd_widen): New optab_indexes.
11118         (smadd_widen_optab, umadd_widen_optab): Define.
11119         * optabs.c (init_optabs): Initialize smadd_widen_optab and
11120         umadd_widen_optab.
11121         * genopinit.c (optabs): Fill in smadd_widen_optab and
11122         umadd_widen_optab.
11123         * expr.c (expand_expr_real_1): Try to use smadd_widen_optab
11124         and umadd_widen_optab to implement multiply-add sequences.
11125         * config/mips/mips.md (*<su>mul_acc_di): Rename to...
11126         (<u>maddsidi4): ...this.  Extend condition to include
11127         GENERATE_MADD_MSUB and TARGET_DSPR2.  Change the constraint
11128         of operand 0 to "ka" and use the three-operand form of madd<u>
11129         for TARGET_DSPR2.
11130         * config/mips/mips-dspr2.md (mips_madd, mips_maddu): Convert
11131         to define_expands.
11132         * config/mips/constraints.md (ka): New register constraint.
11133
11134 2007-04-24  Jan Hubicka  <j@suse.cz>
11135
11136         Revert:
11137
11138         2007-04-23  Jan Hubicka  <jh@suse.cz>
11139         * function.c (init_function_start): Don't init line number info.
11140         (expand_function_end): Update.
11141         (reset_block_changes, record_block_change, finalize_block_changes,
11142         check_block_change, free_block_changes): Kill.
11143         * function.h (reset_block_changes, record_block_change,
11144         finalize_block_changes, check_block_change, free_block_changes):
11145         Remove prototypes.
11146         (struct function): Remove ib_boundaries_block.
11147         * emit-rtl.c (make_insn_raw, make_jump_insn_raw, make_call_insn_raw):
11148         Use curr_insn_locator to initialize locator.
11149         (emit_line_note): Remove.
11150         * cfgexpand.c (expand_gimple_cond_expr): Update.
11151         (construct_exit_block): Likewise.
11152         (tree_expand_cfg): Initialize/finalize locators.
11153         * expr.c (expand_expr_real): Update.
11154         * cfglayout.c (line_locators_locs, line_locators_lines,
11155         file_locators_locs, file_locators_files): Remove.
11156         (set_block_levels): Move to cfgexpand.c.
11157         (insn_locators_initialize): Remove.
11158         (pass_insn_locators_initialize): Remove.
11159         (locations_locators_locs, locations_locators_vals): New static vars.
11160         (curr_location, last_location, curr_block, last_block, curr_rtl_loc):
11161         Likewise.
11162         (insn_locators_alloc, insn_locators_finalize,
11163         set_curr_insn_source_location, set_curr_insn_block, curr_insn_locator):
11164         New functions.
11165         (locator_location): New.
11166         (locator_line, locator_file): Rewrite.
11167         * rtl.h (emit_line_note): Kill.
11168         (insn_locators_alloc, insn_locators_finalize,
11169         set_curr_insn_source_location, set_curr_insn_block, curr_insn_locator):
11170         Declare.
11171         * tree-inline.c (initialize_cfun): Do not initialize
11172         ib_boundaries_block.
11173         * passes.c (pass_insn_locators_initialize): Remove.
11174
11175 2007-04-24  Daniel Franke  <franke.daniel@gmail.com>
11176
11177         * doc/invoke.texi: Removed leading '-' from option index entries.
11178
11179 2007-04-23  Zdenek Dvorak  <dvorakz@suse.cz>
11180
11181         * tree-phinodes.c (reserve_phi_args_for_new_edge, remove_phi_node):
11182         Use phi_nodes_ptr.
11183         (create_phi_node): Use set_phi_nodes.
11184         * omp-low.c (expand_omp_parallel): Use bb_stmt_list.
11185         * tree-if-conv.c (process_phi_nodes): Use set_phi_nodes.
11186         (combine_blocks):  Use bb_stmt_list and set_bb_stmt_list.
11187         * tree-flow-inline.h (phi_nodes, set_phi_nodes,
11188         (bsi_start, bsi_last): Use bb_stmt_list.
11189         (phi_nodes_ptr, bb_stmt_list, set_bb_stmt_list): New functions.
11190         * cfgexpand.c (expand_gimple_basic_block): Use bb_stmt_list.
11191         Traverse the statements using tsi iterator.
11192         * basic-block.h (struct basic_block_def): Fields stmt_list
11193         and phi_nodes moved to ...
11194         (struct tree_bb_info): ... new structure.
11195         * tree-cfg.c (create_bb): Allocate il.tree.  Use set_bb_stmt_list.
11196         (tree_merge_blocks): Use bb_stmt_list and set_bb_stmt_list.
11197         (remove_bb): Handle blocks with NULL stmt list.  Clear il.tree field.
11198         (tree_verify_flow_info): Verify that il.tree is not set for
11199         entry and exit block.
11200         (tree_split_block): Use set_bb_stmt_list.
11201
11202 2007-04-23  Mike Stump  <mrs@apple.com>
11203
11204         * config/i386/i386.c (ix86_tune_features
11205         [X86_TUNE_DEEP_BRANCH_PREDICTION]: Prefer call over thunks on
11206         nocona and core2.
11207
11208 2007-04-23  H.J. Lu  <hongjiu.lu@intel.com>
11209
11210         * config/i386/i386.md (prefix_extra): New attribute.
11211         (length): Add prefix_extra.
11212
11213         * onfig/i386/sse.md (sse2_movdqu): Set prefix_data16.
11214         (sse2_movntv2di): Likewise.
11215         (sse2_cvtps2dq): Likewise.
11216         (sse2_cvtpd2pi): Likewise.
11217         (sse2_cvttpd2pi): Likewise.
11218         (*sse2_cvtpd2ps): Likewise.
11219         (*add<mode>3): Likewise.
11220         (sse2_ssadd<mode>3): Likewise.
11221         (sse2_usadd<mode>3): Likewise.
11222         (*sub<mode>3): Likewise.
11223         (sse2_sssub<mode>3): Likewise.
11224         (sse2_ussub<mode>3): Likewise.
11225         (*mulv8hi3): Likewise.
11226         (*smulv8hi3_highpart): Likewise.
11227         (*umulv8hi3_highpart): Likewise.
11228         (sse2_umulv2siv2di3): Likewise.
11229         (sse2_pmaddwd): Likewise.
11230         (ashr<mode>3): Likewise.
11231         (lshr<mode>3): Likewise.
11232         (ashl<mode>3): Likewise.
11233         (sse2_ashlti3): Likewise.
11234         (sse2_lshrti3): Likewise.
11235         (*umaxv16qi3): Likewise.
11236         (*smaxv8hi3): Likewise.
11237         (*uminv16qi3): Likewise.
11238         (*sminv8hi3): Likewise.
11239         (sse2_eq<mode>3): Likewise.
11240         (sse2_gt<mode>3): Likewise.
11241         (*and<mode>3): Likewise.
11242         (sse2_nand<mode>3): Likewise.
11243         (*ior<mode>3): Likewise.
11244         (*xor<mode>3): Likewise.
11245         (sse2_packsswb): Likewise.
11246         (sse2_packssdw): Likewise.
11247         (sse2_packuswb): Likewise.
11248         (sse2_punpckhbw): Likewise.
11249         (sse2_punpcklbw): Likewise.
11250         (sse2_punpckhwd): Likewise.
11251         (sse2_punpcklwd): Likewise.
11252         (sse2_punpckhdq): Likewise.
11253         (sse2_punpckldq): Likewise.
11254         (sse2_punpckhqdq): Likewise.
11255         (sse2_punpcklqdq): Likewise.
11256         (*sse2_pinsrw): Likewise.
11257         (*sse2_pextrw): Likewise.
11258         (sse2_pshufd_1): Likewise.
11259         (sse2_uavgv16qi3): Likewise.
11260         (sse2_uavgv8hi3): Likewise.
11261         (sse2_psadbw): Likewise.
11262         (sse2_pmovmskb): Likewise.
11263         (*sse2_maskmovdqu): Likewise.
11264         (*sse2_maskmovdqu_rex64): Likewise.
11265         (sse4a_extrqi): Likewise.
11266         (sse4a_extrq): Likewise.
11267         (sse3_lddqu): Set prefix_rep.
11268         (sse3_addsubv4sf3): Likewise.
11269         (sse3_haddv4sf3): Likewise.
11270         (sse3_hsubv4sf3): Likewise.
11271         (sse_cvtss2si): Likewise.
11272         (sse_cvtss2si_2): Likewise.
11273         (sse_cvtss2siq): Likewise.
11274         (sse_cvtss2siq_2): Likewise.
11275         (sse_cvttss2si): Likewise.
11276         (sse_cvttss2siq): Likewise.
11277         (sse2_cvttps2dq): Likewise.
11278         (sse3_movshdup): Likewise.
11279         (sse3_movsldup): Likewise.
11280         (sse2_cvtsd2si): Likewise.
11281         (sse2_cvtsd2si_2): Likewise.
11282         (sse2_cvtsd2siq): Likewise.
11283         (sse2_cvtsd2siq_2): Likewise.
11284         (sse2_cvttsd2si): Likewise.
11285         (sse2_cvttsd2siq): Likewise.
11286         (*sse2_cvtpd2dq): Likewise.
11287         (*sse2_cvttpd2dq): Likewise.
11288         (sse2_pshuflw_1): Likewise.
11289         (sse2_pshufhw_1): Likewise.
11290         (sse4a_insertqi): Likewise.
11291         (sse4a_insertq): Likewise.
11292         (ssse3_phaddwv8hi3): Set prefix_data16 and prefix_extra.
11293         (ssse3_phadddv4si3): Likewise.
11294         (ssse3_phaddswv8hi3): Likewise.
11295         (ssse3_phsubwv8hi3): Likewise.
11296         (ssse3_phsubdv4si3): Likewise.
11297         (ssse3_phsubswv8hi3): Likewise.
11298         (ssse3_pmaddubswv8hi3): Likewise.
11299         (ssse3_pmulhrswv8hi3): Likewise.
11300         (ssse3_pshufbv16qi3): Likewise.
11301         (ssse3_psign<mode>3): Likewise.
11302         (ssse3_palignrti): Likewise.
11303         (abs<mode>2): Likewise.
11304         (ssse3_phaddwv4hi3): Set prefix_extra.
11305         (ssse3_phadddv2si3): Likewise.
11306         (ssse3_phaddswv4hi3): Likewise.
11307         (ssse3_phsubwv4hi3): Likewise.
11308         (ssse3_phsubdv2si3): Likewise.
11309         (ssse3_phsubswv4hi3): Likewise.
11310         (ssse3_pmaddubswv4hi3): Likewise.
11311         (ssse3_pmulhrswv4hi3): Likewise.
11312         (ssse3_pshufbv8qi3): Likewise.
11313         (ssse3_psign<mode>3): Likewise.
11314         (ssse3_palignrdi): Likewise.
11315         (abs<mode>2): Likewise.
11316         (sse2_cvtdq2ps): Set mode to V4SF instead of V2DF.
11317         (*vec_dupv2df): Set mode to V2DF instead of V4SF.
11318         (sse2_pmovmskb): Set mode to SI instead of V2DF.
11319
11320 2007-04-23  Nick Clifton  <nickc@redhat.com>
11321
11322         * params.def: Fix formatting of emacs local variables.
11323
11324 2007-04-23  H.J. Lu  <hongjiu.lu@intel.com>
11325
11326         * config/i386/sse.md (sse2_stored): Don't split to inter-unit
11327         move if inter-unit move isn't allowed.
11328         Don't split moving the first element of V2DI to DI to inter-unit
11329         move if inter-unit move isn't allowed.
11330
11331 2007-04-23  Richard Guenther  <rguenther@suse.de>
11332
11333         * tree-ssa-sink.c (execute_sink_code): Calculate CDI_DOMINATORS
11334         and CDI_POST_DOMINATORS separately.
11335
11336 2007-04-23  Nick Clifton  <nickc@redhat.com>
11337
11338         * c.opt (Wformat-contains-nul): Add warning attribute.
11339
11340 2007-04-23  Jan Hubicka  <jh@suse.cz>
11341
11342         * function.c (init_function_start): Don't init line number info.
11343         (expand_function_end): Update.
11344         (reset_block_changes, record_block_change, finalize_block_changes,
11345         check_block_change, free_block_changes): Kill.
11346         * function.h (reset_block_changes, record_block_change,
11347         finalize_block_changes, check_block_change, free_block_changes):
11348         Remove prototypes.
11349         (struct function): Remove ib_boundaries_block.
11350         * emit-rtl.c (make_insn_raw, make_jump_insn_raw, make_call_insn_raw):
11351         Use curr_insn_locator to initialize locator.
11352         (emit_line_note): Remove.
11353         * cfgexpand.c (expand_gimple_cond_expr): Update.
11354         (construct_exit_block): Likewise.
11355         (tree_expand_cfg): Initialize/finalize locators.
11356         * expr.c (expand_expr_real): Update.
11357         * cfglayout.c (line_locators_locs, line_locators_lines,
11358         file_locators_locs, file_locators_files): Remove.
11359         (set_block_levels): Move to cfgexpand.c.
11360         (insn_locators_initialize): Remove.
11361         (pass_insn_locators_initialize): Remove.
11362         (locations_locators_locs, locations_locators_vals): New static vars.
11363         (curr_location, last_location, curr_block, last_block, curr_rtl_loc):
11364         Likewise.
11365         (insn_locators_alloc, insn_locators_finalize,
11366         set_curr_insn_source_location, set_curr_insn_block, curr_insn_locator):
11367         New functions.
11368         (locator_location): New.
11369         (locator_line, locator_file): Rewrite.
11370         * rtl.h (emit_line_note): Kill.
11371         (insn_locators_alloc, insn_locators_finalize,
11372         set_curr_insn_source_location, set_curr_insn_block, curr_insn_locator):
11373         Declare.
11374         * tree-inline.c (initialize_cfun): Do not initialize
11375         ib_boundaries_block.
11376         * passes.c (pass_insn_locators_initialize): Remove.
11377
11378 2007-04-22  Andrew Pinski  <andrew_pinski@playstation.sony.com>
11379
11380         PR middle-end/31448
11381         * expr.c (reduce_to_bit_field_precision): Handle
11382         CONST_INT rtx's.
11383
11384 2007-04-22  Uros Bizjak  <ubizjak@gmail.com>
11385
11386         PR tree-optimization/24659
11387         * optabs.h (enum optab_index) [OTI_vec_unpacks_hi,
11388         OTI_vec_unpacks_lo]: Update comment to mention floating point operands.
11389         (vec_pack_trunc_optab): Rename from vec_pack_mod_optab.
11390         * genopinit.c (optabs): Rename vec_pack_mod_optab
11391         to vec_pack_trunc_optab.
11392         * tree-vect-transform.c (vectorizable_type_demotion): Do not fail
11393         early for scalar floating point operands for NOP_EXPR.
11394         (vectorizable_type_promotion): Ditto.
11395         * optabs.c (optab_for_tree_code) [VEC_PACK_TRUNC_EXPR]: Return
11396         vec_pack_trunc_optab.
11397         (expand_binop): Rename vec_float_trunc_optab to vec_pack_mod_optab.
11398
11399         * tree.def (VEC_PACK_TRUNC_EXPR): Rename from VEC_PACK_MOD_EXPR.
11400         * tree-pretty-print.c (dump_generic_node) [VEC_PACK_TRUNC_EXPR]:
11401         Rename from VEC_PACK_MOD_EXPR.
11402         (op_prio) [VEC_PACK_TRUNC_EXPR]: Ditto.
11403         * expr.c (expand_expr_real_1): Ditto.
11404         * tree-inline.c (estimate_num_insns_1): Ditto.
11405         * tree-vect-generic.c (expand_vector_operations_1): Ditto.
11406
11407         * config/i386/sse.md (vec_unpacks_hi_v4sf): New expander.
11408         (vec_unpacks_lo_v4sf): Ditto.
11409         (vec_pack_trunc_v2df): Ditto.
11410         (vec_pack_trunc_v8hi): Rename from vec_pack_mod_v8hi.
11411         (vec_pack_trunc_v4si): Rename from vec_pack_mod_v4si.
11412         (vec_pack_trunc_v2di): Rename from vec_pack_mod_v2di.
11413
11414         * config/rs6000/altivec.md (vec_pack_trunc_v8hi): Rename from
11415         vec_pack_mod_v8hi.
11416         (vec_pack_trunc_v4si): Rename from vec_pack_mod_v4si.
11417
11418         * doc/c-tree.texi (Expression trees) [VEC_PACK_TRUNC_EXPR]:
11419         Rename from VEC_PACK_MOD_EXPR.  This expression also represent
11420         packing of floating point operands.
11421         [VEC_UNPACK_HI_EXPR, VEC_UNPACK_LO_EXPR]: These expression also
11422         represent unpacking of floating point operands.
11423         * doc/md.texi (Standard Names) [vec_pack_trunc]: Update documentation.
11424         [vec_unpacks_hi]: Ditto.
11425         [vec_unpacks_lo]: Ditto.
11426
11427 2007-04-22  Jan Hubicka  <jh@suse.cz>
11428
11429         * final.c (rest_of_handle_final): Call
11430         targetm.asm_out.constructor/targetm.asm_out.destructor
11431         * cgraphunit.c (cgraph_build_static_cdtor): Don't do it here; set
11432         proper priority via decl_*_priority_insert.
11433         * c-common.c (c_expand_body): Likewise.
11434
11435 2007-04-22  Richard Guenther  <rguenther@suse.de>
11436
11437         PR tree-optimization/29789
11438         * tree-ssa-loop-im.c (stmt_cost): Adjust cost of shifts.
11439         (rewrite_reciprocal): New helper split out from
11440         determine_invariantness_stmt.
11441         (rewrite_bittest): Likewise.
11442         (determine_invariantness_stmt): Rewrite (A >> B) & 1 to
11443         A & (1 << B) if (1 << B) is loop invariant but (A >> B)
11444         is not.
11445
11446 2007-04-22  Revital Eres  <eres@il.ibm.com>
11447
11448         * loop-unroll.c (var_to_expand): New field to support also
11449         insns of the form x = something + x.
11450         (analyze_insn_to_expand_var): Use it.
11451         (expand_var_during_unrolling): Likewise.
11452
11453 2007-04-21  Zdenek Dvorak  <dvorakz@suse.cz>
11454
11455         * predict.c: Include pointer-set.h.
11456         (bb_predictions): New variable.
11457         (tree_predicted_by_p, tree_predict_edge,
11458         remove_predictions_associated_with_edge): Use bb_predictions map
11459         instead of bb->predictions.
11460         (clear_bb_predictions, assert_is_empty): New functions.
11461         (combine_predictions_for_bb): Use bb_predictions map.  Call
11462         clear_bb_predictions.
11463         (tree_estimate_probability): Create and free bb_predictions map.
11464         * Makefile.in (predict.o): Add pointer-set.h dependency.
11465         * basic-block.h (struct basic_block_def): Remove predictions
11466         field.
11467         * cfgrtl.c (rtl_verify_flow_info_1): Do not check bb->predictions.
11468
11469 2007-04-21  Kaz Kojima  <kkojima@gcc.gnu.org>
11470
11471         PR target/31480
11472         * config/sh/sh.md (length): Check if prev_nonnote_insn (insn)
11473         is null.
11474
11475 2007-04-21  Andrew Pinski  <andrew_pinski@playstation.sony.com>
11476
11477         * timevar.c (timevar_print): Change reference of --disable-checking to
11478         --enable-checking=release.  Also warn if assert checking is disabled.
11479
11480 2007-04-21  Andrew Pinski  <andrew_pinski@playstation.sony.com>
11481
11482         PR C/30265
11483         * c-gimplifier.c (gimplify_compound_literal_expr): Mark the
11484         decl as addressable if the compound literal was marked as
11485         addressable.
11486         Mark the decl as a gimple register if it is a complex or
11487         vector decl and does not live in memory.
11488
11489 2007-04-21  Andrew Pinski  <andrew_pinski@playstation.sony.com>
11490
11491         * tree.h (GIMPLE_TUPLE_P): Also true for PHI_NODEs.
11492         (GENERIC_NEXT): New function macro.
11493         (PHI_CHAIN): Use phi_node's new chain variable.
11494         (tree_phi_node): Change tree_common to tree_base
11495         and add the chain field.
11496         * tree-phinodes.c (make_phi_node): Don't set
11497         TREE_TYPE on the new node.
11498         * c-decl.c (lang_tree_node): Use GENERIC_NEXT
11499         instead of checking GIMPLE_TUPLE_P in chain_next.
11500         * tree-vect-transform.c
11501         (get_initial_def_for_induction): Look at
11502         PHI_RESULT_TREE for the type of the phi node.
11503         (update_vuses_to_preheader): Use PHI_CHAIN
11504         instead of TREE_CHAIN on the phi node.
11505         * tree-ssa-structalias.c (compute_points_to_sets):
11506         Likewise.
11507         (ipa_pta_execute): Likewise.
11508
11509 2007-04-21  Richard Guenther  <rguenther@suse.de>
11510
11511         PR middle-end/31136
11512         * fold-const.c (fold_unary): Call fold_convert_const on the
11513         original tree.
11514
11515 2007-04-21  Alexandre Oliva  <aoliva@redhat.com>
11516
11517         * gcse.c (store_killed_in_insn): Handle PARALLELs.
11518         (store_killed_in_pat): New.
11519
11520 2007-04-20  Richard Henderson  <rth@redhat.com>
11521
11522         PR target/31628
11523         * config/i386/i386.c (type_has_variadic_args_p): Look for any
11524         TREE_LIST with a void_type_node value, not void_list_node exactly.
11525
11526 2007-04-21  Douglas Gregor  <doug.gregor@gmail.com>
11527
11528         * doc/standards.texi: Re-arrange into language-specific
11529         subsections. Add a C++ section, documenting which standards we
11530         support.
11531
11532 2007-04-21  Zdenek Dvorak  <dvorakz@suse.cz>
11533
11534         * tree-ssa-structalias.c (delete_points_to_sets): Free graph->complex.
11535         * tree-ssa-operands.c (finalize_ssa_vuse_ops): Free new_ops.
11536
11537 2007-04-20  Daniel Jacobowitz  <dan@codesourcery.com>
11538
11539         * config/rs6000/sysv4.h (STARTFILE_DEFAULT_SPEC): Include
11540         ecrti.o and crtbegin.o.
11541         (LIB_DEFAULT_SPEC): Include -lc.
11542         (ENDFILE_DEFAULT_SPEC): Include crtend.o and ecrtn.o.
11543
11544 2007-04-20  Richard Henderson  <rth@redhat.com>
11545
11546         PR target/28623
11547         * config/alpha/alpha.c (get_unaligned_address): Remove extra_offset
11548         argument; update all callers.
11549         (get_unaligned_offset): New.
11550         * config/alpha/alpha.md (extendqidi2, extendhidi2): Don't use
11551         get_unaligned_address, just pass on the address directly.
11552         (unaligned_extendqidi): Use gen_lowpart instead of open-coding
11553         the subreg in the helper patterns.
11554         (unaligned_extendqidi_le): Use get_unaligned_offset.
11555         (unaligned_extendqidi_be, unaligned_extendhidi_le): Likewise.
11556         (unaligned_extendhidi_be): Likewise.
11557         (unaligned_extendhidi): Tidy.
11558         * config/alpha/alpha-protos.h: Update.
11559
11560 2007-04-20  Richard Henderson  <rth@redhat.com>
11561
11562         * config/alpha/alpha.h (CPP_SPEC, CPP_SUBTARGET_SPEC): Remove.
11563         (EXTRA_SPECS, SUBTARGET_EXTRA_SPECS): Remove.
11564         * config/alpha/linux.h (CPP_SPEC): Undef before redefine.
11565         * config/alpha/linux-elf.h (EXTRA_SPECS): Rename SUBTARGET_EXTRA_SPECS.
11566         * config/alpha/freebsd.h (EXTRA_SPECS): Rename SUBTARGET_EXTRA_SPECS.
11567         (CPP_SPEC): Don't include %(cpp_subtarget).
11568         * config/alpha/netbsd.h (CPP_SPEC): Rename CPP_SUBTARGET_SPEC.
11569         (EXTRA_SPECS): Rename SUBTARGET_EXTRA_SPECS.
11570         * config/alpha/osf.h (CPP_SPEC, EXTRA_SPECS): Similarly.
11571
11572 2007-04-20  Jakub Jelinek  <jakub@redhat.com>
11573
11574         * config/i386/i386.c (bdesc_2arg): Use ORDERED rather than UNORDERED
11575         for __builtin_ia32_cmpordss.
11576
11577         PR tree-optimization/31632
11578         * fold-const.c (fold_binary): Use op0 and op1 instead of arg0
11579         and arg1 for optimizations of comparison against min/max values.
11580         Fold arg0 to arg1's type for optimizations of comparison against
11581         min+1 and max-1 values.
11582
11583 2007-04-19  Bernd Schmidt  <bernd.schmidt@analog.com>
11584
11585         * reload.c (combine_reloads): When trying to use a dying register,
11586         check whether it's uninitialized and don't use if so.
11587
11588 2007-04-19  Brooks Moses  <brooks.moses@codesourcery.com>
11589
11590         * fold-const.c: Remove prototypes for native_encode_expr and
11591         native_interpret_expr.
11592         (native_encode_expr): Make non-static.
11593         (native_interpret_expr): Likewise.
11594         * tree.h: Add prototypes for the above.
11595
11596 2007-04-19  Joseph Myers  <joseph@codesourcery.com>
11597
11598         * config/rs6000/spe.md (*frob_tf_ti, *frob_ti_tf, *frob_ti_tf_2,
11599         *mov_si<mode>_e500_subreg0, *mov_si<mode>_e500_subreg0_2,
11600         *mov_sitf_e500_subreg8, *mov_sitf_e500_subreg8_2, spe_extenddftf2,
11601         spe_fix_trunctfsi2_internal, spe_negtf2_internal, cmptfeq_gpr,
11602         tsttfeq_gpr, cmptfgt_gpr, tsttfgt_gpr, cmptflt_gpr, tsttflt_gpr):
11603         Add length attributes.
11604
11605 2007-04-19  Janis Johnson  <janis187@us.ibm.com>
11606
11607         * ginclude/float.h: Check that __STDC_WANT_DEC_FP__ is defined,
11608         not that it is 1.
11609
11610         * c-cppbuiltin.c (c_cpp_builtins): Remove definition of
11611         __STDC_WANT_DEC_FP__.
11612
11613 2007-04-19  Joseph Myers  <joseph@codesourcery.com>
11614
11615         * configure.ac: Allow both powerpc*-*-linux* and powerpc*-*-gnu*
11616         for long double compatibility.
11617         * configure: Regenerate.
11618
11619 2007-04-19  Eric Botcazou  <ebotcazou@libertysurf.fr>
11620
11621         PR rtl-optimization/29841
11622         * cfgbuild.c (control_flow_insn_p): Return TRUE for unconditional
11623         trap instructions.
11624         * sched-deps.c (sched_analyze_insn): Prevent all non-jump instructions
11625         that may cause control flow transfer from being moved.
11626
11627 2007-04-18  Jan Hubicka  <jh@suse.cz>
11628
11629         * fold-const.c (div_if_zero_remainder): Do signed divide for pointer
11630         types.
11631
11632 2007-04-18  Eric Christopher  <echristo@apple.com>
11633
11634         * config/rs6000/darwin.md (load_macho_picbase): Use link register
11635         only. Update operands.
11636         * config/rs6000/rs6000.c (rs6000_emit_prologue): Update caller.
11637         * config/rs6000/rs6000.md (builtin_setjmp_receiver): Ditto. Move from
11638         link register to pic register.
11639
11640 2007-04-18  Dirk Mueller  <dmueller@suse.de>
11641
11642         PR diagnostic/31227
11643         * tree-vrp.c (search_for_addr_array): New.
11644         (check_array_bounds): Suppress warning about
11645         address taken of array refs if its not de-referenced.
11646
11647 2007-04-18  Dorit Nuzman  <dorit@il.ibm.com>
11648
11649         * tree-vectorizer.c (destroy_loop_vec_info): Set loop->aux to NULL.
11650         * tree-vect-analyze.c (vect_analyze_loop_form): Set loop->aux.
11651
11652         * tree-vectorizer.h (NITERS_KNOWN_P): New.
11653         * tree-vect-analyze.c (vect_analyze_loop_form): Call NITERS_KNOWN_P
11654         instead of LOOP_VINFO_INT_NITERS to avoid having to geneate loop_info.
11655
11656         * tree-vect-analyze.c (vect_determine_vectorization_factor): Add
11657         dump print.
11658         (vect_analyze_operations): Fix indenetation.  Fix a comment.  Fix a
11659         print message.
11660         (vect_analyze_scalar_cycles): Fix indentation.
11661         (vect_enhance_data_refs_alignment): Fix check in case of peeling.
11662         (vect_mark_relevant): Include phis in relevance analysis.
11663
11664         * tree-vect-transform.c (vect_transform_loop): Add an assert.
11665
11666 2007-04-18  Anatoly Sokolov <aesok@post.ru>
11667
11668         * config/avr/avr.c (ptrreg_to_str): Replace error() with
11669         output_operand_lossage().
11670
11671 2007-04-18  Dorit Nuzman  <dorit@il.ibm.com>
11672
11673         * tree-vect-transform.c (get_initial_def_for_reduction): Clean away
11674         the unused code for reduction without adjust-in-epilog to simplify the
11675         function.
11676
11677 2007-04-18  Wolfgang Gellerich  <gellerich@de.ibm.com>
11678
11679         * config/s390/s390.h (S390_TDC_POSITIVE_ZERO): New constant.
11680         (S390_TDC_NEGATIVE_ZERO): New constant.
11681         (S390_TDC_POSITIVE_NORMALIZED_NUMBER): New constant.
11682         (S390_TDC_NEGATIVE_NORMALIZED_NUMBER): New constant.
11683         (S390_TDC_POSITIVE_DENORMALIZED_NUMBER): New constant.
11684         (S390_TDC_NEGATIVE_DENORMALIZED_NUMBER): New constant.
11685         (S390_TDC_POSITIVE_INFINITY): New constant.
11686         (S390_TDC_NEGATIVE_INFINITY): New constant.
11687         (S390_TDC_POSITIVE_QUIET_NAN): New constant.
11688         (S390_TDC_NEGATIVE_QUIET_NAN): New constant.
11689         (S390_TDC_POSITIVE_SIGNALING_NAN): New constant.
11690         (S390_TDC_NEGATIVE_SIGNALING_NAN): New constant.
11691         (S390_TDC_INFINITY): New constant.
11692         * config/s390/s390.c (s390_canonicalize_comparison): Renamed
11693         UNSPEC_CMPINT to UNSPEC_CCU_TO_INT, added a UNSPEC_CCU_TO_INT-like
11694         optimization for UNSPEC_CCZ_TO_INT.
11695         * config/s390/s390.md ("*TDC_insn_<mode>"): New insn.
11696         ("*ccz_to_int"): New insn.
11697         ("isinf<mode>2"): New insn.
11698         (UNSPEC_CMPINT): Renamed to UNSPEC_CCU_TO_INT.
11699         (UNSPEC_CCU_TO_INT): New constant, replaces UNSPEC_CMPINT.
11700         (UNSPEC_CCZ_TO_INT): New constant.
11701
11702 2007-04-18  Richard Guenther  <rguenther@suse.de>
11703
11704         PR tree-optimization/19431
11705         PR tree-optimization/21463
11706         * tree-pass.h (pass_phiprop): Declare.
11707         * passes.c (init_optimization_passes): New phiprop pass.
11708         * tree-ssa-forwprop.c (struct phiprop_d): New structure.
11709         (phivn_valid_p): New helper function.
11710         (phiprop_insert_phi): Likewise.
11711         (propagate_with_phi): Likewise.
11712         (tree_ssa_phiprop): New propagator propagating loads
11713         through phi nodes if profitable.
11714
11715 2007-04-18  Dorit Nuzman  <dorit@il.ibm.com>
11716
11717         * tree-vect-analyze.c (process_use): New function.
11718         (vect_mark_stmts_to_be_vectorized): Factor out code to process_use.
11719         Check phis in all bbs.
11720         * tree-vectorizer.c (vect_is_simple_use): Remove a no longer relavant
11721         assert.
11722
11723 2007-04-18  Bernd Schmidt  <bernd.schmidt@analog.com>
11724
11725         * reload1.c (eliminte_regs_in_insn): Use REG_EQUIV notes the same way
11726         we use REG_EQUAL.
11727
11728 2007-04-17  Anatoly Sokolov <aesok@post.ru>
11729
11730         PR target/30483
11731         * config/avr/avr.c (ptrreg_to_str): Replace gcc_unreachable() with
11732         error().
11733
11734 2007-04-17  H.J. Lu  <hongjiu.lu@intel.com>
11735
11736         * config/i386/sse.md (sse_vmaddv4sf3): Use register_operand
11737         on "0".
11738         (sse_vmmulv4sf3): Likewise.
11739         (sse2_vmaddv2df3): Likewise.
11740         (sse2_vmmulv2df3): Likewise.
11741
11742 2007-04-17  Zdenek Dvorak  <dvorakz@suse.cz>
11743
11744         PR rtl-optimization/31360
11745         * cfgloopanal.c (target_small_cost, target_pres_cost): Removed.
11746         (target_reg_cost): New.
11747         (init_set_costs): Initialize target_reg_cost.  Add comments
11748         regarding the rationale of the costs.
11749         (global_cost_for_size): Renamed to...
11750         (estimate_reg_pressure_cost): ... and simplify.  Decrease importance
11751         of register pressure.
11752         * tree-ssa-loop-ivopts.c (ivopts_global_cost_for_size): Use
11753         estimate_reg_pressure_cost.  Add number of ivs.
11754         (determine_set_costs): Dump target_reg_cost.
11755         * loop-invariant.c (gain_for_invariant):  Use
11756         estimate_reg_pressure_cost.  Removed n_inv_uses argument.
11757         (best_gain_for_invariant, find_invariants_to_move): Remove
11758         n_inv_uses.
11759         * cfgloop.h (target_small_cost, target_pres_cost): Removed.
11760         (target_reg_cost): Declare.
11761         (global_cost_for_size): Declaration removed.
11762         (estimate_reg_pressure_cost): Declare.
11763
11764 2007-04-17  Peter Bergner  <bergner@vnet.ibm.com>
11765
11766         * config/rs6000/rs6000.c (rs6000_hard_regno_mode_ok): Force TDmode
11767         regnos into even/odd register pairs.
11768         * config/rs6000/rs6000.h [SLOW_UNALIGNED_ACCESS]: Treat DDmode and
11769         TDmode similar to the other floating point modes.
11770         [SECONDARY_MEMORY_NEEDED]: Treat DDmode similar to DFmode.
11771         * config/rs6000/dfp.md (negdd2, absdd2, negtd2, abstd2): New
11772         define_expand's.
11773         (negdd2_fpr, absdd2_fpr, nabsdd2_fpr, negtd2_fpr, abstd2_fpr,
11774         nabstd2_fpr, movdd_hardfloat64_mfpgpr): New define_insn's.
11775         (movdd_hardfloat64): Use TARGET_MFPGPR.
11776
11777 2007-04-17  Bernd Schmidt  <bernd.schmidt@analog.com>
11778
11779         * reload1.c (delete_output_reload): Don't count output in n_inherited.
11780
11781         Revert
11782         2005-01-05  Richard Henderson  <rth@redhat.com>
11783         PR rtl-opt/10692
11784         * reload1.c (do_input_reload): Restrict the optimization deleteing
11785         a previous output reload to RELOAD_FOR_INPUT.
11786
11787 2007-04-17  Dorit Nuzman  <dorit@il.ibm.com>
11788
11789         * tree-vectorizer.h (stmt_vec_info_type): Add enum value
11790         induc_vec_info_type.
11791         (vectorizable_induction): New function declaration.
11792         * tree-vect-transform.c (get_initial_def_for_induction): No need to
11793         check if already vectorized.  Find first place in BB where new stmts
11794         can be inserted.  Takes only one argument.
11795         (vectorizable_induction): New function.
11796         (vect_transform_stmt): Add case for induc_vec_info_type to call
11797         vectorizable_induction.
11798         (vect_transform_loop): Consider phis for vectorization.
11799         * tree-vect-analyze.c (vect_determine_vectorization_factor): Simplify
11800         condition.
11801         (analyze_operations): Call vectorizable_induction when analyzing phis.
11802         Fix comment.
11803         (vect_mark_stmts_to_be_vectorized): Remove redundant checks.
11804         (vect_mark_relevant): Include phis in relevance analysis.
11805         (vect_mark_stmts_to_be_vectorize): Likewise.
11806         * tree-vect-patterns.c (widened_name_p): Remove obsolete asserts.
11807
11808 2007-04-16  Lawrence Crowl  <crowl@google.com>
11809
11810         * doc/invoke.texi (Debugging Options): Add documentation for the
11811         -femit-struct-debug options -femit-struct-debug-baseonly,
11812         -femit-struct-debug-reduced, and
11813         -femit-struct-debug-detailed[=...].
11814
11815         * c-opts.c (c_common_handle_option): Add
11816         OPT_femit_struct_debug_baseonly, OPT_femit_struct_debug_reduced,
11817         and OPT_femit_struct_debug_detailed_.
11818         * c.opt: Add specifications for
11819         -femit-struct-debug-baseonly, -femit-struct-debug-reduced,
11820         and -femit-struct-debug-detailed[=...].
11821         * opts.c (set_struct_debug_option): Parse the
11822         -femit-struct-debug-... options.
11823         * opts.c (matches_main_base, main_input_basename,
11824         main_input_baselength, base_of_path, matches_main_base): Add
11825         variables and functions to compare header base name to compilation
11826         unit base name.
11827         * opts.c (should_emit_struct_debug): Add to determine to emit a
11828         structure based on the option.
11829         (dump_struct_debug) Also disabled function to debug this
11830         function.
11831         * opts.c (handle_options): Save the base name of the
11832         compilation unit.
11833
11834         * langhooks-def.h (LANG_HOOKS_GENERIC_TYPE_P): Define.
11835         (LANG_HOOKS_FOR_TYPES_INITIALIZER): Add.
11836         This hook indicates if a type is generic.  Set it by default
11837         to "never generic".
11838         * langhooks.h (struct lang_hooks_for_types): Add a new hook
11839         to determine if a struct type is generic or not.
11840         * cp/cp-tree.h (class_tmpl_impl_spec_p): Declare a C++ hook.
11841         * cp/tree.c (class_tmpl_impl_spec_p): Implement the C++ hook.
11842         * cp/cp-lang.c (LANG_HOOKS_GENERIC_TYPE_P): Override null C hook
11843         with live C++ hook.
11844
11845         * flags.h (enum debug_info_usage): Add an enumeration to describe
11846         a program's use of a structure type.
11847         * dwarf2out.c (gen_struct_or_union_type_die): Add a new parameter
11848         to indicate the program's usage of the type.  Filter structs based
11849         on the -femit-struct-debug-... specification.
11850         (gen_type_die): Split into two routines, gen_type_die and
11851         gen_type_die_with_usage.  gen_type_die is now a wrapper
11852         that assumes direct usage.
11853         (gen_type_die_with_usage): Replace calls to gen_type_die
11854         with gen_type_die_with_usage adding the program usage of
11855         the referenced type.
11856         (dwarf2out_imported_module_or_decl): Suppress struct debug
11857         information using should_emit_struct_debug when appropriate.
11858
11859 2007-04-16  Ian Lance Taylor  <iant@google.com>
11860
11861         PR tree-optimization/31522
11862         * tree-vrp.c (vr_phi_edge_counts): New static variable.
11863         (vrp_initialize): Allocate vr_phi_edge_counts.
11864         (vrp_visit_phi_node): Don't push to infinity if we saw a new
11865         executable edge.  Drop test for all constants.
11866         (vrp_finalize): Free vrp_phi_edge_counts.
11867
11868         * doc/cpp.texi (Common Predefined Macros): Clarify description of
11869         __GNUC_GNU_INLINE__ and __GNUC_STDC_INLINE__.
11870
11871         * tree-ssa-propagate.c (cfg_blocks_add): Insert blocks with fewer
11872         predecessors at head rather than tail.
11873
11874 2007-04-16  Matthias Klose  <doko@debian.org>
11875
11876         * config/alpha/linux.h (CPP_SPEC): Define.
11877         * config/arm/linux-gas.h (SUBTARGET_CPP_SPEC): Extend.
11878
11879 2007-04-16  Aldy Hernandez  <aldyh@redhat.com>
11880
11881         * function.h: Remove sequence_stack extern declaration.
11882
11883 2007-04-16  Kazu Hirata  <kazu@codesourcery.com>
11884
11885         * config/m68k/m68k.h (LONG_DOUBLE_TYPE_SIZE): Change to 64 on
11886         TARGET_FIDOA.
11887         (LIBGCC2_LONG_DOUBLE_TYPE_SIZE): Change to 64 if __mfido__ is
11888         defined.
11889
11890 2007-04-16  Anatoly Sokolov <aesok@post.ru>
11891
11892         * config/avr/avr.c (avr_arch_types): Rearranging  array.
11893         (enum avr_arch): Add.
11894         (avr_mcu_types): Use avr_arch enumeration constants instead of
11895         numbers.
11896         * config/avr/avr.h (LINK_SPEC): Simplify.
11897
11898 2007-04-16  Kazu Hirata  <kazu@codesourcery.com>
11899
11900         * config/m68k/m68k.c (m68k_libcall_value,
11901         m68k_function_value): Use macros for register names more.
11902
11903         * config/m68k/m68k.h (FRAME_POINTER_REGNUM): Use A6_REG
11904         instead.
11905         (M68K_REGNAME): Use A6_REG.
11906         * config/m68k/m68k.md (FP_REG): Rename to A6_REG.
11907
11908 2007-04-16  Maxim Kuvyrkov  <mkuvyrkov@ispras.ru>
11909
11910         PR middle-end/28071
11911         * sched-int.h (struct deps): Split field 'pending_lists_length' into
11912         'pending_read_list_length' and 'pending_write_list_length'.  Update
11913         comment.
11914         * sched-deps.c (add_insn_mem_dependence): Change signature.  Update
11915         to handle two length counters instead of one.  Update all uses.
11916         (flush_pending_lists, sched_analyze_1, init_deps): Update to handle
11917         two length counters instead of one.
11918         * sched-rgn.c (propagate_deps): Update to handle two length counters
11919         instead of one.
11920
11921 2007-04-16  H.J. Lu  <hongjiu.lu@intel.com>
11922
11923         PR target/31582
11924         * config/i386/i386.c (ix86_expand_vec_set_builtin): Make a
11925         copy of source, pass it to ix86_expand_vector_set and return
11926         it as target.
11927
11928 2007-04-16  David Ung  <davidu@mips.com>
11929             Joseph Myers  <joseph@codesourcery.com>
11930
11931         * config/mips/mips.h (PROCESSOR_74KC, PROCESSOR_74KF,
11932         PROCESSOR_74KX, TUNE_74K, GENERATE_MADD_MSUB): Define.
11933         * config/mips/mips.c (mips_cpu_info_table, mips_rtx_cost_data):
11934         Add 74K processor information.
11935         * config/mips/mips.md: Include 74k.md.
11936         (cpu): Add 74kc,74kf,74kx.
11937         (ISA_HAS_MADD_MSUB): Change to GENERATE_MADD_MSUB throughout.
11938         * config/mips/74k.md: New.
11939         * doc/invoke.texi (MIPS Options): Document 74K support.
11940
11941 2007-04-16  Dorit Nuzman  <dorit@il.ibm.com>
11942
11943         * tree-vect-analyze.c (vect_analyze_operations): Reorganize calls to
11944         vectorizable_* functions.
11945         * tree-vect-transform.c (vectorizable_call): Add check for
11946         STMT_VINFO_RELEVANT_P, STMT_VINFO_DEF_TYPE and STMT_VINFO_LIVE_P.
11947         (vectorizable_store): likewise.
11948         (vectorizable_conversion): Add check for STMT_VINFO_DEF_TYPE.
11949         Add comments.
11950         (vectorizable_operation, vectorizable_type_demotion): Likewise.
11951         (vectorizable_type_promotion, vectorizable_load): Likewise.
11952         (vectorizable_live_operation, vectorizable_condition): Likewise.
11953         (vectorizable_assignment): Add check for STMT_VINFO_DEF_TYPE and
11954         STMT_VINFO_LIVE_P.
11955         (vect_transform_stmt): Reorganize calls to vectorizable_* functions.
11956
11957 2007-04-15  Kazu Hirata  <kazu@codesourcery.com>
11958
11959         * config/m68k/linux.h (FUNCTION_VALUE_REGNO_P): Use macros for
11960         register numbers more.
11961         * config/m68k/m68k.h (STACK_POINTER_REGNUM,
11962         FRAME_POINTER_REGNUM, STATIC_CHAIN_REGNUM,
11963         M68K_STRUCT_VALUE_REGNUM, FUNCTION_VALUE, LIBCALL_VALUE,
11964         FUNCTION_VALUE_REGNO_P): Likewise.
11965         * config/m68k/m68kelf.h (M68K_STRUCT_VALUE_REGNUM,
11966         STATIC_CHAIN_REGNUM): Likewise.
11967         * config/m68k/m68kemb.h (FUNCTION_VALUE_REGNO_P): Likewise.
11968         * config/m68k/netbsd-elf.h (M68K_STRUCT_VALUE_REGNUM,
11969         STATIC_CHAIN_REGNUM, FUNCTION_VALUE_REGNO_P): Likewise.
11970         * config/m68k/m68k.md (FP_REG): New.
11971
11972 2007-04-15  Kazu Hirata  <kazu@codesourcery.com>
11973
11974         * config/m68k/m68k.h (PREFERRED_STACK_BOUNDARY): Prefer 32-bit
11975         alignment on fido.
11976
11977 2007-04-15  Kazu Hirata  <kazu@codesourcery.com>
11978
11979         * config/i386/i386.c, config/s390/s390.c, config/s390/s390.md,
11980         tree-ssa-loop-niter.c, tree-ssa-structalias.c, tree-vrp.c: Fix
11981         comment typos.
11982
11983 2007-04-11  Zdenek Dvorak  <dvorakz@suse.cz>
11984
11985         * tree-ssa-loop-prefetch.c (loop_prefetch_arrays): Ignore
11986         cold loops.
11987
11988 2007-04-14  Andrew Pinski  <andrew_pinski@playstation.sony.com>
11989
11990         PR c/31520
11991         * c-decl.c (finish_decl): Grab the type of the decl after the call
11992         to store_init_value.
11993
11994 2007-04-14  Steven Bosscher  <steven@gcc.gnu.org>
11995
11996         * common.opt (fforward-propagate): Fix "Optimization" annotation.
11997
11998 2007-04-14  Jakub Jelinek  <jakub@redhat.com>
11999
12000         PR c++/25874
12001         * omp-low.c (expand_omp_parallel): If child_cfun->cfg, free
12002         dominators, post dominators and cleanup cfg before returning.
12003
12004 2007-04-14  Bernd Schmidt  <bernd.schmidt@analog.com>
12005
12006         * config/bfin/bfin.h (MODES_TIEABLE_P): Allow more modes to be tied.
12007         * config/bfin/bfin.md (movsi_insn): Delete two unused alternatives.
12008
12009 2007-04-14  Kazu Hirata  <kazu@codesourcery.com>
12010
12011         * config.gcc: Recognize fido.
12012         * config/m68k/m68k-devices.def (fidoa): New.
12013         * config/m68k/m68k.h (TARGET_CPU_CPP_BUILTINS): Define
12014         __mfido__.
12015         (FL_FIDOA, TARGET_FIDOA): New.
12016         * config/m68k/m68k.opt (mfidoa): New.
12017
12018 2007-04-13  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
12019
12020         PR middle-end/31322
12021         * dwarf2out.c (output_call_frame_info): Call assemble_external_libcall
12022         when a personality function is used.
12023
12024 2007-04-13  Bob Wilson  <bob.wilson@acm.org>
12025
12026         * config/xtensa/xtensa.c (xtensa_expand_builtin): Use CALL_EXPR_FN.
12027
12028 2007-04-13  Mike Stump  <mrs@apple.com>
12029
12030         * config/darwin-c.c (handle_c_option): Handle -fapple-kext here so
12031         we can...
12032         * config/darwin.opt (fapple-kext): Make C++ only.
12033         * config/darwin.c (darwin_override_options): Remove code to ensure
12034         -fapple-kext is given for C++ only.
12035
12036 2007-04-13  Richard Sandiford  <richard@codesourcery.com>
12037
12038         * config/mips/vxworks.h (SUBTARGET_OVERRIDE_OPTIONS): Define.
12039         * config/mips/mips.c (override_options): Call
12040         SUBTARGET_OVERRIDE_OPTIONS, if defined.
12041
12042 2007-04-13  H.J. Lu  <hongjiu.lu@intel.com>
12043
12044         * config/i386/i386.opt (msvr3-shlib): Removed.
12045
12046         * doc/invoke.texi: Remove -msvr3-shlib.
12047
12048 2007-04-13  H.J. Lu  <hongjiu.lu@intel.com>
12049
12050         * config/i386/i386.opt (mpopcnt): Replace "popcount" instruction
12051         with "popcnt" instruction.
12052
12053 2007-04-13  Richard Guenther  <rguenther@suse.de>
12054
12055         PR tree-optimization/21258
12056         * tree-vrp.c (compare_case_labels): New helper.
12057         (find_switch_asserts): New function.
12058         (find_assert_locations): Call it for SWITCH_EXPRs.
12059
12060 2007-04-13  Uros Bizjak  <ubizjak@gmail.com>
12061
12062         * config/i386/i386.h (X87_FLOAT_MODE_P): Check for TARGET_80387.
12063         * config/i386/i386.md (*cmpfp0): Remove check for TARGET_80387, this
12064         check is now implied in X87_FLOAT_MODE_P.
12065         (*cmpfp_u, *cmpfp_<mode>, *cmpfp_i_i387): Ditto.
12066         (*cmpfp_iu_387, fix_trunc<mode>_fisttp_i386_1): Ditto.
12067         (fix_trunc<mode>_i386_fisttp): Ditto.
12068         (fix_trunc<mode>_i387_fisttp_with_temp): Ditto.
12069         (*fix_trunc<mode>_i387_1, fix_truncdi_i387): Ditto.
12070         (fix_truncdi_i387_with_temp, fix_trunc<mode>_i387): Ditto.
12071         (fix_trunc<mode>_i387_with_temp, *fp_jcc_1_387): Ditto.
12072         (*fp_jcc_2_387, *fp_jcc_5_387, *fp_jcc_6_387): Ditto.
12073         (*fp_jcc_7_387, *fp_jcc_8<mode>_387): Ditto.
12074         (unnamed_splitters): Ditto.
12075         * config/i386/i386.c (function_value_32): Generate FIRST_FLOAT_REG
12076         for X87_FLOAT_MODE_P mode.  Override FIRST_FLOAT_REG with
12077         FIRST_SSE_REG for local functions when SSE math is enabled or
12078         for functions with sseregparm attribute.
12079         (standard_80387_constant_p): Return -1 if mode is not
12080         X87_FLOAT_MODE_P.
12081         (ix86_cc_mode): Assert that scalar mode is not DECIMAL_FLOAT_MODE_P.
12082         (ix86_expand_compare): Ditto.
12083         (ix86_expand_carry_flag_compare): Ditto.
12084         (ix86_expand_int_movcc): Check for SCALAR_FLOAT_MODE_P instead
12085         of FLOAT_MODE_P for cmp_mode and assert that cmp_mode is not
12086         DECIMAL_FLOAT_MODE_P.
12087         (ix86_preferred_output_reload_class): Use X87_FLOAT_MODE_P instead
12088         of SCALAR_FLOAT_MODE_P.
12089         (ix86_rtx_costs) [PLUS] Remove FLOAT_MODE_P and fall through to ...
12090         [MINUS]: ... here.  Add SSE_FLOAT_MODE_P and X87_FLOAT_MODE_P
12091         checks before FLOAT_MODE_P.
12092         [MULT]: Add SSE_FLOAT_MODE_P and X87_FLOAT_MODE_P checks
12093         before FLOAT_MODE_P.
12094         [DIV]: Ditto.
12095         [NEG]: Ditto.
12096         [ABS]: Ditto.
12097         [SQRT]: Ditto.
12098         [FLOAT_EXTEND]: Use SSE_FLOAT_MODE_P.
12099
12100 2007-04-12  Paolo Bonzini  <bonzini@gnu.org>
12101             Charles Wilson  <libtool@cwilson.fastmail.fm>
12102
12103         * Makefile.in (stamp-as, stamp-collect-ld, stamp-nm): Remove.
12104         (libgcc.mvars): Don't depend on them.
12105         * configure.ac (as, collect-ld, nm): Create from exec-tool.in.
12106         * exec-tool.in: New.
12107
12108 2007-04-12  Brooks Moses  <brooks.moses@codesourcery.com>
12109
12110         * doc/invoke.text (--help): Document --help=common.
12111
12112 2007-04-12  Thomas Neumann  <tneumann@users.sourceforge.net>
12113
12114         * stub-objc.c (objc_build_keyword_decl): Avoid C++ keywords.
12115
12116 2007-04-12  Richard Sandiford  <richard@codesourcery.com>
12117
12118         * Makefile.in (insn-emit.o): Depend on $(INTEGRATE_H).
12119         * genemit.c (main): Emit #include "integrate.h".
12120         * config/mips/mips-protos.h (SYMBOL_HALF): New mips_symbol_type.
12121         (LOADGP_RTP): New mips_loadgp_style.
12122         * config/mips/mips.h: Include config/vxworks-dummy.h.
12123         (TARGET_RTP_PIC): New macro.
12124         (TARGET_USE_GOT): Return true for TARGET_RTP_PIC.
12125         (TARGET_USE_PIC_FN_ADDR_REG): Return true for TARGET_VXWORKS_RTP.
12126         (ASM_OUTPUT_ADDR_DIFF_ELT): Emit function-relative case tables
12127         for TARGET_RTP_PIC.
12128         * config/mips/vxworks.h (SUBTARGET_ASM_SPEC): Define.  Pass down
12129         -mvxworks-pic when using -mrtp and a PIC option.
12130         * config/mips/mips.c (mips_classify_symbol): Return SYMBOL_GOT_DISP
12131         for RTP PIC.
12132         (mips_symbolic_constant_p, mips_symbolic_address_p)
12133         (mips_symbol_insns): Handle SYMBOL_HALF.
12134         (override_options): Warn about -G and -mrtp being used together.
12135         Initialize mips_lo_relocs[SYMBOL_HALF].
12136         (mips_current_loadgp_style): Return LOADGP_RTP for RTP PIC.
12137         (mips_emit_loadgp): Handle LOADGP_RTP.
12138         (mips_in_small_data_p): Return false for TARGET_VXWORKS_RTP.
12139         * config/mips/mips.md (loadgp_rtp): New insn and splitter.
12140         (tablejump): Handle function-relative case table entries if
12141         TARGET_RTP_PIC.
12142         * config/mips/predicates.md (symbol_ref_operand): New predicate.
12143
12144 2007-04-12  Richard Sandiford  <richard@codesourcery.com>
12145
12146         * config/mips/mips.md (load_call<mode>): Allow any general register.
12147         destination.
12148         (sibcall_value_internal, sibcall_value_multiple_internal)
12149         (call_value_internal, call_value_split, call_value_multiple_internal)
12150         (call_value_multiple_split): Remove constraints from operand 0.
12151
12152 2007-04-12  Richard Sandiford  <richard@codesourcery.com>
12153
12154         * config/mips/mips-protos.h: In comments, refer to loadgp_absolute
12155         rather than loadgp_noshared.
12156         * config/mips/mips.c (mips_emit_loadgp): Use gen_loadgp_absolute
12157         instead of gen_loadgp_noshared.  Use gen_loadgp_newabi instead of
12158         gen_loadgp.
12159         * config/mips/mips.md (loadgp): Rename to...
12160         (loadgp_newabi): ...this.
12161         (loadgp_noshared): Rename to...
12162         (loadgp_absolute): ...this.
12163
12164 2007-04-12  Richard Sandiford  <richard@codesourcery.com>
12165
12166         * config/mips/mips.c (mips_ok_for_lazy_binding_p): Always return
12167         false for locally-binding symbols.
12168         (mips_dangerous_for_la25_p): Check mips_global_symbol_p.
12169
12170 2007-04-12  Richard Sandiford  <richard@codesourcery.com>
12171
12172         * config/mips/mips-protos.h (SYMBOL_GOT_LOCAL): Rename to...
12173         (SYMBOL_GOT_PAGE_OFST): ...this.
12174         (SYMBOL_GOT_GLOBAL): Rename to...
12175         (SYMBOL_GOT_DISP): ...this.
12176         (SYMBOL_GOTOFF_GLOBAL): Rename to...
12177         (SYMBOL_GOTOFF_DISP): ...this.  Update comments accordingly.
12178         * config/mips/mips.c (mips_global_symbol_p): New function.
12179         (mips_symbol_binds_local_p): Likewise.
12180         (mips_classify_symbol): Rename SYMBOL_GOT_GLOBAL to SYMBOL_GOT_DISP
12181         and SYMBOL_GOT_LOCAL to SYMBOL_GOT_PAGE_OFST.  Use
12182         mips_global_symbol_p and mips_symbol_binds_local_p.
12183         (mips_symbolic_constant_p, mips_symbolic_address_p, mips_symbol_insns)
12184         (override_options): Rename SYMBOL_GOT_GLOBAL to SYMBOL_GOT_DISP,
12185         SYMBOL_GOT_LOCAL to SYMBOL_GOT_PAGE_OFST and SYMBOL_GOTOFF_GLOBAL to
12186         SYMBOL_GOTOFF_DISP.
12187         (mips_ok_for_lazy_binding_p): New function.
12188         (mips_load_call_address, mips_expand_call): Use it.
12189         (mips_dangerous_for_la25_p): Likewise.
12190         * config/mips/mips.md (*xgot_hi<mode>, *xgot_lo<mode>)
12191         (*got_disp<mode>): Use got_disp_operand instead of
12192         global_got_operand.  Use SYMBOL_GOTOFF_DISP instead of
12193         SYMBOL_GOTOFF_GLOBAL.
12194         (*got_page<mode>): Use got_page_ofst_operand instead of
12195         local_got_operand.
12196         * config/mips/predicates.md (const_call_insn_operand): Use
12197         SYMBOL_GOT_DISP instead of SYMBOL_GOT_GLOBAL.
12198         (global_got_operand): Rename to...
12199         (got_disp_operand): ...this and use SYMBOL_GOT_DISP instead of
12200         SYMBOL_GOT_GLOBAL.
12201         (local_got_operand): Rename to...
12202         (got_page_ofst_operand): ...this and use SYMBOL_GOT_PAGE_OFST instead
12203         of SYMBOL_GOT_LOCAL.
12204
12205 2007-04-12  Richard Sandiford  <richard@codesourcery.com>
12206
12207         * config/mips/mips.h (TARGET_SPLIT_CALLS): Check
12208         TARGET_CALL_CLOBBERED_GP.
12209         (TARGET_SIBCALLS): Check TARGET_USE_GOT instead of TARGET_ABICALLS.
12210         (TARGET_USE_GOT, TARGET_CALL_CLOBBERED_GP): New macros.
12211         (TARGET_CALL_SAVED_GP, TARGET_USE_PIC_FN_ADDR_REG): Likewise.
12212         (STARTING_FRAME_OFFSET): Check TARGET_CALL_CLOBBERED_GP instead
12213         of TARGET_ABICALLS && !TARGET_NEWABI.
12214         (MIPS_CALL): Check TARGET_USE_GOT instead of TARGET_ABICALLS.
12215         * config/mips/mips.c (mips_load_call_address): Check
12216         TARGET_CALL_SAVED_GP instead of TARGET_NEWABI.
12217         (mips_global_pointer): Check TARGET_USE_GOT instead of TARGET_ABICALLS.
12218         Check TARGET_CALL_SAVED_GP instead of TARGET_NEWABI.
12219         (mips_save_reg_p): Check TARGET_CALL_SAVED_GP instead of
12220         TARGET_ABICALLS && TARGET_NEWABI.
12221         (mips_current_loadgp_style): Check TARGET_USE_GOT instead of
12222         TARGET_ABICALLS.
12223         (mips_expand_prologue): Check TARGET_OLDABI instead of !TARGET_NEWABI.
12224         (mips_expand_epilogue): Check TARGET_CALL_SAVED_GP instead of
12225         TARGET_ABICALLS && TARGET_NEWABI.
12226         (mips_output_mi_thunk): Check TARGET_USE_GOT instead of
12227         TARGET_ABICALLS.  Check TARGET_CALL_SAVED_GP instead of
12228         TARGET_NEWABI.  Use TARGET_USE_PIC_FN_ADDR_REG to decide
12229         whether indirect calls must use $25.
12230         (mips_extra_live_on_entry): Check TARGET_GOT instead of
12231         TARGET_ABICALLS.
12232         * config/mips/mips.md (jal_macro): Check flag_pic and
12233         TARGET_CALL_CLOBBERED_GP instead of TARGET_ABICALLS and TARGET_NEWABI.
12234         (builtin_setjmp_setup, builtin_longjmp): Check TARGET_USE_GOT
12235         instead of TARGET_ABICALLS.
12236         (exception_receiver): Check TARGET_CALL_CLOBBERED_GP instead of
12237         TARGET_ABICALLS && TARGET_OLDABI.
12238         (load_call<mode>): Check TARGET_USE_GOT instead of TARGET_ABICALLS.
12239         (sibcall): In the comment above the define_insn, mention
12240         TARGET_USE_PIC_FN_ADDR_REG instead of TARGET_ABICALLS.
12241         * config/mips/constraints.md (c): Check TARGET_USE_PIC_FN_ADDR_REG
12242         instead of TARGET_ABICALLS.
12243
12244 2007-04-12  Bernd Schmidt  <bernd.schmidt@analog.com>
12245
12246         * doc/md.texi (Blackfin family constraints): Document PA and PB.
12247         * config/bfin/bfin.h (CONST_OK_FOR_P): Handle PA and PB.
12248         (MACFLAGS_MATCH_P): New macro.
12249         * config/bfin/bfin.c (print_operand): Handle MACFLAG_IS_M.
12250         (bfin_secondary_reload): Treat EVEN_AREGS and ODD_AREGS like AREGS.
12251         * config/bfin/bfin.md (MACFLAG_IS_M): New constant.  Renumber some of
12252         the other MACFLAG constants.
12253         (sum_of_accumulators, lshrpdi3, ashrpdi3): New patterns.
12254         (flag_machi): Tighten constraints.  Renumber some of the operands.
12255         (flag_machi_acconly): Tighten constraints.  Correct operand numbers in
12256         output template.
12257         (flag_machi_parts_acconly): New pattern.
12258         (flag_macinithi): Tighten constraints.  Allow any accumulator to be
12259         used.
12260         (flag_macinit1hi): Tighten constraints.
12261         (flag_mul_macv2hi_parts_acconly): New pattern.
12262
12263         * config/bfin/lib1funcs.asm (___umulsi3_highpart, __smulsi3_highpart):
12264         Use a more efficient implementation.
12265         * config/bfin/bfin.md (umulsi3_highpart, smulsi3_highpart): Emit
12266         inline sequences when not optimizing for size.
12267
12268         * config/bfin/bfin.md (movhi_low2high, movhi_high2high, movhi_low2low,
12269         movhi_high2low): Delete, merge functionality into...
12270         (packv2hi): ... this pattern.
12271
12272         2007-02-11  Jie Zhang  <jie.zhang@analog.com>
12273         * config/bfin/bfin.opt (msim): New option.
12274         (mcpu=): New option.
12275         * config/bfin/bfin-protos.h (enum bfin_cpu): New.
12276         (bfin_cpu_t): Typedef of enum bfin_cpu.
12277         (bfin_cpu_type): New declaration.
12278         * config/bfin/elf.h (STARTFILE_SPEC): Add support for
12279         -msim and -mcpu= options.
12280         (LIB_SPEC): Likewise.
12281         * config/bfin/bfin.c (bfin_cpu_type): Define.
12282         (bfin_handle_option): Handle -mcpu= option.
12283         * config/bfin/bfin.h (DEFAULT_CPU_TYPE): Define as BFIN_CPU_BF532.
12284         (TARGET_CPU_CPP_BUILTINS): Define __ADSPBF531__, __ADSPBF532__,
12285         __ADSPBF533__ or __ADSPBF537__ according to the cpu type.
12286
12287 2007-04-12  Richard Sandiford  <richard@codesourcery.com>
12288
12289         * config.gcc (*-*-vxworks*): Don't add to tm_files in this stanza.
12290         (arm-wrs-vxworks, mips-wrs-vxworks, powerpc-wrs-vxworks)
12291         (powerpc-wrs-vxworksae): Use ${tm_file}.
12292         (i[4567]86-wrs-vxworks, i[4567]86-wrs-vxworksae): Add svr4.h
12293         after elfos.h.  Remove i386/sysv4.h and add i386/vx-common.h.
12294         * config/i386/vx-common.h: New file.
12295
12296 2007-04-12  Richard Sandiford  <richard@codesourcery.com>
12297
12298         * config/vxworks.h (VXWORKS_STARTFILE_SPEC): Use -l:crt0.o instead
12299         of crt0.o%s.
12300
12301 2007-04-12  Andreas Krebbel  <krebbel1@de.ibm.com>
12302
12303         * config/s390/s390.md ("trunctddd2"): Use TDmode for the target of
12304         ldxtr.
12305
12306 2007-04-12  Douglas Gregor  <doug.gregor@gmail.com>
12307
12308         PR c++/31078
12309         PR c++/31103
12310         * c-common.c (c_build_qualified_type): Set canonical type
12311         appropriately.
12312
12313 2007-04-12  Richard Guenther  <rguenther@suse.de>
12314
12315         * tree-pretty-print.c (dump_generic_node): Print ARRAY_REF
12316         lower bound and element size if lower bound is not zero
12317         or either of the ARRAY_REF operands is set.
12318
12319 2007-04-12  Richard Guenther  <rguenther@suse.de>
12320
12321         PR tree-optimization/24689
12322         PR tree-optimization/31307
12323         * fold-const.c (operand_equal_p): Compare INTEGER_CST array
12324         indices by value.
12325         * gimplify.c (canonicalize_addr_expr): To be consistent with
12326         gimplify_compound_lval only set operands two and three of
12327         ARRAY_REFs if they are not gimple_min_invariant.  This makes
12328         it never at this place.
12329         * tree-ssa-ccp.c (maybe_fold_offset_to_array_ref): Likewise.
12330
12331 2007-04-11  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
12332
12333         * pa.c (pa_som_asm_init_sections): Ensure that cfun->machine is not
12334         null before emitting a .nsubspa directive.
12335
12336 2007-04-11  Diego Novillo  <dnovillo@redhat.com>
12337
12338         * tree-ssa-alias.c (dump_mem_ref_stats): Do not call
12339         need_to_partition_p if there are no memory statements in the
12340         function.
12341
12342 2007-04-11  Zdenek Dvorak  <dvorakz@suse.cz>
12343
12344         * tree-data-ref.c (chrec_steps_divide_constant_p): Removed.
12345         (gcd_of_steps_may_divide_p): New function.
12346         (analyze_miv_subscript): Use gcd_of_steps_may_divide_p.
12347
12348 2007-04-11  Bernd Schmidt  <bernd.schmidt@analog.com>
12349
12350         * reload.c (find_reloads_toplev, find_reloads_address,
12351         find_reloads_address_1, find_reloads_subreg_address): Use rtx_equal_p,
12352         not a pointer equality test, to decide if we need to call
12353         push_reg_equiv_alt_mem.
12354
12355 2007-04-11  Sebastian Pop  <sebastian.pop@inria.fr>
12356
12357         * tree-data-ref.c (affine_function_zero_p, constant_access_functions,
12358         insert_innermost_unit_dist_vector, add_distance_for_zero_overlaps):
12359         New.
12360         (build_classic_dist_vector): Call add_distance_for_zero_overlaps.
12361
12362 2007-04-11  Zdenek Dvorak  <dvorakz@suse.cz>
12363
12364         * tree-data-ref.c (add_multivariate_self_dist): Force the distance
12365         vector to be positive.
12366
12367 2007-04-11  Diego Novillo  <dnovillo@redhat.com>
12368
12369         PR 30735
12370         PR 31090
12371         * doc/invoke.texi: Document --params max-aliased-vops and
12372         avg-aliased-vops.
12373         * tree-ssa-operands.h (get_mpt_for, dump_memory_partitions,
12374         debug_memory_partitions): Move to tree-flow.h
12375         * params.h (AVG_ALIASED_VOPS): Define.
12376         * tree-ssa-alias.c (struct mp_info_def): Remove.  Update all
12377         users.
12378         (mp_info_t): Likewise.
12379         (get_mem_sym_stats_for): New.
12380         (set_memory_partition): Move from tree-flow-inline.h.
12381         (mark_non_addressable): Only clear the set of symbols for the
12382         partition if it exists.
12383         (dump_memory_partitions): Move from tree-ssa-operands.c
12384         (debug_memory_partitions): Likewise.
12385         (need_to_partition_p): New.
12386         (dump_mem_ref_stats): New.
12387         (debug_mem_ref_stats): New.
12388         (dump_mem_sym_stats): New.
12389         (debug_mem_sym_stats): New.
12390         (update_mem_sym_stats_from_stmt): New.
12391         (compare_mp_info_entries): New.
12392         (mp_info_cmp): Call it.
12393         (sort_mp_info): Change argument to a list of mem_sym_stats_t
12394         objects.
12395         (get_mpt_for): Move from tree-ssa-operands.c.
12396         (find_partition_for): New.
12397         (create_partition_for): Remove.
12398         (estimate_vop_reduction): New.
12399         (update_reference_counts): New.
12400         (build_mp_info): New.
12401         (compute_memory_partitions): Refactor.
12402         Document new heuristic.
12403         Call build_mp_info, update_reference_counts,
12404         find_partition_for and estimate_vop_reduction.
12405         (compute_may_aliases): Populate virtual operands before
12406         calling debugging dumps.
12407         (delete_mem_sym_stats): New.
12408         (delete_mem_ref_stats): New.
12409         (init_mem_ref_stats): New.
12410         (init_alias_info): Call it.
12411         (maybe_create_global_var): Remove alias_info argument.
12412         Get number of call sites and number of pure/const call sites
12413         from gimple_mem_ref_stats().
12414         (dump_alias_info): Call dump_memory_partitions first.
12415         (dump_points_to_info_for): Show how many times a pointer has
12416         been dereferenced.
12417         * opts.c (decode_options): For -O2 set --param
12418         max-aliased-vops to 500.
12419         For -O3 set --param max-aliased-vops to 1000 and --param
12420         avg-aliased-vops to 3.
12421         * fortran/options.c (gfc_init_options): Remove assignment to
12422         MAX_ALIASED_VOPS.
12423         * tree-flow-inline.h (gimple_mem_ref_stats): New.
12424         * tree-dfa.c (dump_variable): Dump memory reference
12425         statistics.
12426         Dump NO_ALIAS* settings.
12427         (referenced_var_lookup): Tidy.
12428         (mem_sym_stats): New.
12429         * tree-ssa-copy.c (may_propagate_copy): Return true if DEST
12430         and ORIG are different SSA names for a memory partition.
12431         * tree-ssa.c (delete_tree_ssa): Call delete_mem_ref_stats.
12432         * tree-flow.h (struct mem_sym_stats_d): Define.
12433         (mem_sym_stats_t): Define.
12434         (struct mem_ref_stats_d): Define.
12435         (struct gimple_df): Add field mem_ref_stats.
12436         (enum noalias_state): Define.
12437         (struct var_ann_d): Add bitfield noalias_state.
12438         (mem_sym_stats, delete_mem_ref_stats, dump_mem_ref_stats,
12439         debug_mem_ref_stats, debug_memory_partitions,
12440         debug_mem_sym_stats): Declare.
12441         * tree-ssa-structalias.c (update_alias_info): Update call
12442         sites, pure/const call sites and asm sites in structure
12443         returned by gimple_mem_ref_stats.
12444         Remove local variable IS_POTENTIAL_DEREF.
12445         Increase NUM_DEREFS if the memory expression is a potential
12446         dereference.
12447         Call update_mem_sym_stats_from_stmt.
12448         If the memory references memory, call
12449         update_mem_sym_stats_from_stmt for all the direct memory
12450         symbol references found.
12451         (intra_create_variable_infos): Set noalias_state field for
12452         pointer arguments according to the value of
12453         flag_argument_noalias.
12454         * tree-ssa-structalias.h (struct alias_info): Remove fields
12455         num_calls_found and num_pure_const_calls_found.
12456         (update_mem_sym_stats_from_stmt): Declare.
12457         * params.def (PARAM_MAX_ALIASED_VOPS): Change description.
12458         Set default value to 100.
12459         (PARAM_AVG_ALIASED_VOPS): Define.
12460
12461 2007-04-11  Richard Guenther  <rguenther@suse.de>
12462
12463         PR middle-end/31530
12464         * simplify-rtx.c (simplify_binary_operation_1): Do not simplify
12465         a * -b + c as c - a * b if we honor sign dependent rounding.
12466
12467 2007-04-11  Bernd Schmidt  <bernd.schmidt@analog.com>
12468
12469         * config/bfin/bfin-protos.h (bfin_expand_movmem): Renamed from
12470         bfin_expand_strmov.
12471         * config/bfin/bfin.c (bfin_expand_prologue, bfin_delegitimize_address,
12472         bfin_function_ok_for_sibcall, split_load_immediate): Remove unused
12473         variables.
12474         (initialize_trampoline): Don't use old-style function definition.
12475         (bfin_secondary_reload): Mark IN_P argument as unused.
12476
12477 2007-04-10  Sebastian Pop  <sebastian.pop@inria.fr>
12478
12479         PR tree-optimization/31343
12480         * tree-chrec.h (chrec_zerop): Moved before build_polynomial_chrec.
12481         (build_polynomial_chrec): Return a scalar when the evolution is zero.
12482         * testsuite/gcc.dg/vect/pr31343.c: New.
12483
12484 2007-04-10  Eric Christopher  <echristo@apple.com>
12485
12486         * config/i386/i386.h (X87_FLOAT_MODE_P): New.
12487         * config/i386/i386.md (*cmpfp0): Use.
12488         (*cmpfp_u, *cmpfp_<mode>, *cmpfp_i_i387): Ditto.
12489         (*cmpfp_iu_387, fix_trunc<mode>_fisttp_i386_1): Ditto.
12490         (fix_trunc<mode>_i386_fisttp): Ditto.
12491         (fix_trunc<mode>_i387_fisttp_with_temp): Ditto.
12492         (*fix_trunc<mode>_i387_1, fix_truncdi_i387): Ditto.
12493         (fix_truncdi_i387_with_temp, fix_trunc<mode>_i387): Ditto.
12494         (fix_trunc<mode>_i387_with_temp, *fp_jcc_1_387): Ditto.
12495         (*fp_jcc_2_387, *fp_jcc_5_387, *fp_jcc_6_387): Ditto.
12496         (*fp_jcc_7_387, *fp_jcc_8<mode>_387): Ditto.
12497         (unnamed_splitters): Ditto.
12498         * config/i386/i386.c (output_fix_trunc): Assert that
12499         we're not being passed a TFmode operand.
12500
12501 2007-04-10  Zdenek Dvorak  <dvorakz@suse.cz>
12502
12503         PR tree-optimization/31526
12504         * tree-inline.c (copy_cfg_body): Use last_basic_block instead of
12505         n_basic_blocks to find newly added blocks.
12506
12507 2007-04-10  Uros Bizjak  <ubizjak@gmail.com>
12508
12509         * config/i386/i386.md (fix_trunc<mode>di_sse): Remove "x" from "xm"
12510         alternative.
12511         (fix_trunc<mode>si_sse): Ditto.
12512         (*floatsisf2_mixed, *floatsisf2_sse): Ditto.
12513         (*floatsidf2_mixed, *floatsidf2_sse): Ditto.
12514         (*floatdisf2_mixed, *floatdisf2_sse): Ditto.
12515         (*floatdidf2_mixed, *floatdidf2_sse): Ditto.
12516         (floathi<mode>2): Rename from floathisf2 and floathidf2. Macroize
12517         expander using SSEMODEF mode macro.
12518         (floatsi<mode>2): Rename from floatsisf2 and floashidf2. Macroize
12519         expander using SSEMODEF mode macro.
12520         (*floathi<mode>2_i387): Rename from *floathisf2_i387 and
12521         *floathidf2_i387. Macroize insn using X87MODEF12 mode macro.
12522         (*floatsi<mode>2_i387): Rename from *floatsisf2_i387 and
12523         *floatsidf2_i387. Macroize insn using X87MODEF12 mode macro.
12524         (*floatdi<mode>2_i387): Rename from *floatdisf2_i387 and
12525         *floatdidf2_i387. Macroize insn using X87MODEF12 mode macro.
12526         (float<mode>xf2): Rename from floathixf2, floatsixf2 and floatdixf2.
12527         Macroize insn using X87MODEF mode macro.
12528
12529 2007-04-09  H.J. Lu  <hongjiu.lu@intel.com>
12530
12531         * config/i386/sse.md (sse2_pinsrw): Removed.
12532         (sse2_pextrw): Renamed to ...
12533         (*sse2_pextrw): This.
12534
12535 2007-04-09  Jan Hubicka  <jh@suse.cz>
12536
12537         PR target/27869
12538         * config/i386/sse.md
12539         (sse_vmaddv4sf3, sse_vmmulv4sf3): Remove '%' modifier.
12540         (sse_vmsmaxv4sf3_finite, sse_vmsminv4sf3_finite): Remove.
12541         (sse2_vmaddv2df3, sse2_vmmulv2df3): Remove '%' modifier.
12542         (sse2_vmsmaxv2df3_finite, sse2_vmsminv2df3_finite): Remove.
12543
12544 2007-04-09  Jan Hubicka  <jh@suse.cz>
12545
12546         * tree-ssa-ccp (maybe_fold_offset_to_component_ref): Recurse into
12547         multiple fields of union.
12548
12549 2007-04-09  Zdenek Dvorak  <dvorakz@suse.cz>
12550
12551         * cfgloopmanip.c (create_preheader): Do not use loop_preheader_edge.
12552         (create_preheaders): Check that loops are available.
12553         (fix_loop_structure): Clean up, improve comments.
12554         * tree-ssa-loop-manip.c (rewrite_into_loop_closed_ssa):
12555         Check that loops are available.  Set LOOP_CLOSED_SSA to the loops
12556         state flags.
12557         * tree-scalar-evolution.c (scev_finalize): Clear scalar_evolution_info.
12558         * predict.c (tree_estimate_probability): Do not call
12559         calculate_dominance_info.  Call create_preheaders.
12560         * tree-cfgcleanup.c (cleanup_tree_cfg_loop): Only call
12561         rewrite_into_loop_closed_ssa if LOOP_CLOSED_SSA is set in loops state
12562         flags.
12563         * cfgloop.c (loop_preheader_edge): Assert that loops have preheaders.
12564         * cfgloop.h (LOOP_CLOSED_SSA): New constant.
12565         * tree-cfg.c (tree_split_edge): Make an assert more precise.
12566         * tree-ssa-threadedge.c (thread_across_edge): Comment the function
12567         arguments.
12568
12569 2007-04-08  Jan Hubicka  <jh@suse.cz>
12570
12571         * tree.h (maybe_fold_offset_to_component_ref): Declare.
12572         * tree-ssa-ccp.c (maybe_fold_offset_to_component_ref): Export.
12573         * fold-const.c (fold_unary): Use it.
12574
12575 2007-04-08  Andrew Pinski  <andrew_pinski@playstation.sony.com>
12576
12577         * varasm.c (assemble_variable): Remove call to
12578         lang_hooks.decls.prepare_assemble_variable.
12579         * langhooks-def.h (LANG_HOOKS_PREPARE_ASSEMBLE_VARIABLE): Kill.
12580         (LANG_HOOKS_DECLS): Remove LANG_HOOKS_PREPARE_ASSEMBLE_VARIABLE.
12581         * langhooks.h (lang_hooks_for_decls): Remove
12582         prepare_assemble_variable.
12583
12584 2007-04-08  Mike Stump  <mrs@apple.com>
12585
12586         * config/i386/i386.c: Use inc/dec on Core2.
12587
12588 2007-04-08  Steven Bosscher  <steven@gcc.gnu.org>
12589
12590         * langhooks.c (lhd_tree_inlining_add_pending_fn_decls,
12591         lhd_tree_inlining_anon_aggr_type_p, lhd_tree_inlining_start_inlining,
12592         lhd_tree_inlining_end_inlining): Remove.
12593         * langhooks.h (struct lang_hooks_for_tree_inlining): Remove then
12594         add_pending_fn_decls, anon_aggr_type_p, start_inlining, and
12595         end_inlining hooks.
12596         * langhooks-def.h (lhd_tree_inlining_add_pending_fn_decls,
12597         lhd_tree_inlining_anon_aggr_type_p, lhd_tree_inlining_start_inlining,
12598         lhd_tree_inlining_end_inlining): Remove prototypes.
12599         (LANG_HOOKS_TREE_INLINING_ADD_PENDING_FN_DECLS,
12600         LANG_HOOKS_TREE_INLINING_ANON_AGGR_TYPE_P,
12601         LANG_HOOKS_TREE_INLINING_START_INLINING,
12602         LANG_HOOKS_TREE_INLINING_END_INLINING): Remove.
12603
12604         * c-objc-common.h (LANG_HOOKS_TREE_INLINING_ANON_AGGR_TYPE_P): Do
12605         not set it.
12606
12607 2007-04-08  Anatoly Sokolov <aesok@post.ru>
12608
12609         PR target/29932
12610         * config/avr/predicates.md (io_address_operand): Delete predicate.
12611         (low_io_address_operand): Don't use 'mode' argument.
12612         (higth_io_address_operand): Rename ...
12613         (high_io_address_operand): ... to this. Don't use 'mode' argument.
12614         * config/avr/avr.md (*sbix_branch_tmp, *sbix_branch_tmp_bit7): Adjust
12615         for above change.
12616
12617 2007-04-07  Daniel Berlin  <dberlin@dberlin.org>
12618
12619         Revert change removing staticp.
12620
12621 2007-04-07  Anatoly Sokolov <aesok@post.ru>
12622
12623         PR target/30289
12624         * config/avr/avr.md (*clrmemqi, *clrmemhi): Mark operand 4 as
12625         earlyclobber.
12626
12627 2007-04-07  Bruce Korb  <bkorb@gnu.org>
12628
12629         * c.opt: Add -Wformat-contains-nul.
12630         * c-format.c (set_Wformat):  Set warn_format_contains_nul to the
12631           -Wformat setting.
12632         (check_format_info_main): Check OPT_Wformat_contains_nul before emitting
12633         the NUL byte warning.
12634
12635 2007-04-07  H.J. Lu  <hongjiu.lu@intel.com>
12636
12637         * config/i386/i386.c (ix86_handle_option): Handle SSSE3.
12638
12639 2007-04-06  Daniel Berlin  <dberlin@dberlin.org>
12640
12641         * tree.c (staticp): No longer use staticp langhook.
12642         * langhooks.c (lhd_staticp): Removed.
12643         * langhooks.h (struct lang_hooks): Remove staticp.
12644         * c-common.c (c_staticp): Remove.
12645         * c-common.h (c_staticp): Ditto.
12646         * langhooks-defs.h (lhd_staticp): Ditto.
12647         (LHD_HOOKS_STATICP): Ditto
12648         * tree.h (gcc_assert_lowered): New macro.
12649
12650 2007-04-06  Zdenek Dvorak  <dvorakz@suse.cz>
12651
12652         * tree-ssa-loop-niter.c (idx_infer_loop_bounds): Add and use
12653         argument "reliable".
12654         (infer_loop_bounds_from_ref, infer_loop_bounds_from_array):
12655         Add argument "reliable".  Propagate it through calls.
12656         (infer_loop_bounds_from_undefined):  Derive number of iterations
12657         estimates from references in blocks that do not dominate loop latch.
12658         (gcov_type_to_double_int): New function.
12659         (estimate_numbers_of_iterations_loop): Use gcov_type_to_double_int
12660         and expected_loop_iterations_unbounded.
12661         * cfgloopanal.c (expected_loop_iterations_unbounded): New function.
12662         (expected_loop_iterations): Use expected_loop_iterations_unbounded.
12663         * tree-data-ref.c (estimated_loop_iterations): Export.
12664         (get_references_in_stmt): Fix -- do not return addresses of local
12665         objects.
12666         * cfgloop.h (expected_loop_iterations_unbounded,
12667         estimated_loop_iterations): Declare.
12668
12669 2007-04-06  Andreas Tobler  <a.tobler@schweiz.org>
12670
12671         * tree-sra.c (sra_build_elt_assignment): Initialize min/maxshift.
12672
12673 2007-04-06  Uros Bizjak  <ubizjak@gmail.com>
12674
12675         * config/i386/i386.md (extend<mode>xf2): Rename from extendsfxf2
12676         and extenddfxf2. Macroize expander using X87MODEF12 mode macro.
12677         (*truncdfsf_mixed, *truncdfsf_i387, *truncdfsf2_i387_1):
12678         Use output_387_reg_move().
12679         (*truncxf<mode>2): Rename from *truncxfsf2 and truncxfdf2. Macroize
12680         expander using X87MODEF12 mode macro.
12681         (*truncxfsf2_mixed): Combine alternatives, ignore "r" alternative when
12682         choosing register preferences.  Use output_387_reg_move().
12683         (*truncxfdf2_mixed): Combine alternatives, use "r" alternative
12684         instead of "x".  Use output_387_reg_move().
12685         (*truncxf<mode>2_i387_noop): Rename from *truncxfsf2_i387_noop and
12686         *truncxfdf2_i387_noop.  Macroize insn using X87MODEF12 mode macro.
12687         (*truncxf<mode>2_i387): Rename from *truncxfsf2_i387 and
12688         *truncxfdf2_i387.  Macroize insn using X87MODEF12 mode macro.
12689         Use output_387_reg_move().
12690         (*truncxf?f_mixed splitter): Macroize splitter using X87MODEF12
12691         mode macro.
12692         (*truncxf?f_i387 splitter): Ditto.
12693
12694 2007-04-06  Daniel Berlin  <dberlin@dberlin.org>
12695
12696         * langhooks-def.h (LANG_HOOKS_INITIALIZER): Remove
12697         LANG_HOOKS_SAFE_FROM_P.
12698         * expr.c (safe_from_p): Remove langhook call.
12699         * langhooks.h (lang_hooks): Remove safe_from_p.
12700         (lhd_safe_from_p): Remove prototype.
12701         * langhooks.c (lhd_safe_from_p): Remove.
12702
12703 2007-04-06  Jan Hubicka  <jh@suse.cz>
12704
12705         * cgraphunit.c (decide_is_function_needed): Do not keep always_inline
12706         functions.
12707
12708 2007-04-06  Uros Bizjak  <ubizjak@gmail.com>
12709
12710         * config/i386/i386.c (output_387_reg_move): Handle memory operand[0].
12711         * config/i386/i386.md (*movsf_1, *movdf_nointeger,
12712         *movdf_integer_rex64, *movdf_integer, *movxf_nointeger,
12713         *movxf_integer): Use output_387_reg_move() for x87 reg->mem
12714         alternative.
12715         (*extendsfdf2_mixed, *extendsfdf2_i387, *extendsfxf2_i387,
12716         *extenddfxf2_i387, *truncdfsf_fast_mixed): Ditto.
12717
12718 2007-04-05  Richard Henderson  <rth@redhat.com>
12719
12720         * config/alpha/alpha.c (print_operand) [+]: Remove.
12721         (alpha_end_function): Print nop if call at end of function.
12722         * config/alpha/alpha.h (PRINT_OPERAND_PUNCT_VALID_P): Remove +.
12723         * config/alpha/alpha.md (UNSPEC_LDGP1): New.
12724         (call_osf_1_er_noreturn, call_value_osf_1_er_noreturn): New.
12725         (call_osf_2_er_nogp, call_value_osf_2_er_nogp): New.
12726         (call_osf_2_er, call_value_osf_2_er): Merge the ldgp highpart into
12727         the call pattern. Update peepholes to match.
12728
12729 2007-04-05  Janis Johnson  <janis187@us.ibm.com>
12730
12731         * doc/extend.texi (Other Builtins): Add decimal float variants
12732         of signbit.
12733         * builtins.def: Ditto.
12734         * builtins.c (expand_builtin): Ditto.
12735
12736 2007-04-05  Uros Bizjak  <ubizjak@gmail.com>
12737             H.J. Lu  <hongjiu.lu@intel.com>
12738
12739         PR target/31478
12740         * config/i386/sse.md (sse2_umulv2siv2di3): Use V4SImode instead
12741         of V8HImode when calling ix86_binary_operator_ok.
12742         (sse2_pmaddwd): Call ix86_binary_operator_ok.
12743         (sdot_prodv8hi): Operands 1 and 2 must be register.
12744
12745 2007-04-05  Alexandre Oliva  <aoliva@redhat.com>
12746
12747         * tree-sra.c (try_instantiate_multiple_fields): Needlessly
12748         initialize align to silence bogus warning.
12749
12750 2007-04-05  Alexandre Oliva  <aoliva@redhat.com>
12751
12752         PR middle-end/22156
12753         * tree-sra.c (struct sra_elt): Add in_bitfld_block.  Remove
12754         all_no_warning.
12755         (struct sra_walk_fns): Remove use_all parameter from use.
12756         (sra_hash_tree): Handle BIT_FIELD_REFs.
12757         (sra_elt_hash): Don't hash bitfld blocks.
12758         (sra_elt_eq): Skip them in parent compares as well.  Handle
12759         BIT_FIELD_REFs.
12760         (sra_walk_expr): Don't maintain or pass down use_all_p.
12761         (scan_use): Remove use_all parameter.
12762         (scalarize_use): Likewise.  Re-expand assignment to
12763         BIT_FIELD_REF of gimple_reg.  De-scalarize before input or
12764         output, and re-scalarize after output.  Don't mark anything
12765         for no warning.
12766         (scalarize_ldst): Adjust.
12767         (scalarize_walk_gimple_modify_statement): Likewise.
12768         (build_element_name_1): Handle BIT_FIELD_REFs.
12769         (instantiate_element): Don't warn for any element whose parent
12770         is used as a whole.
12771         (instantiate_missing_elements_1): Return the sra_elt.
12772         (canon_type_for_field): New.
12773         (try_instantiate_multiple_fields): New.
12774         (instantiate_missing_elemnts): Use them.
12775         (mark_no_warning): Removed.
12776         (generate_one_element_ref): Handle BIT_FIELD_REFs.
12777         (REPLDUP, sra_build_elt_assignment): New.
12778         (generate_copy_inout): Use them.
12779         (generate_element_copy): Likewise.  Handle bitfld differences.
12780         (generate_element_zero): Don't recurse for blocks.  Use
12781         sra_build_elt_assignment.
12782         (generate_one_element_int): Take elt instead of var.  Use
12783         sra_build_elt_assignment.
12784         (generate_element_init_1): Adjust.
12785         (scalarize_use, scalarize_copy): Use REPLDUP.
12786         (scalarize_ldst): Move assert before dereference.
12787         (dump_sra_elt_name): Handle BIT_FIELD_REFs.
12788
12789 2007-04-05  Steven Bosscher  <steven@gcc.gnu.org>
12790
12791         * regmove.c: Fix unused variable warnings due to previous commit.
12792
12793 2007-04-05  Steven Bosscher  <steven@gcc.gnu.org>
12794
12795         * regmove.c (STACK_GROWS_DOWNWARD): Don't boolean-ize.
12796         (regmove_bb_head): Remove.
12797         (copy_src_to_dest): Don't update regmove_bb_head and BB_HEAD.
12798         (regmove_optimize): Don't do unnecessary CFG fixes for non-existing
12799         problems with fixup_match_1.
12800         Don't initialize/free regmove_bb_head.
12801
12802         (reg_is_remote_constant_p): If an insn is in the same basic block
12803         but not before INSN, consider it remote, too.
12804
12805 2007-04-05  Anatoly Sokolov <aesok@post.ru>
12806
12807         PR target/25448
12808         * config/avr/avr.c (avr_handle_fndecl_attribute): Use the
12809         DECL_ASSEMBLER_NAME, not the DECL_NAME.
12810
12811 2007-04-05  H.J. Lu  <hongjiu.lu@intel.com>
12812
12813         * config/i386/i386.h (TARGET_CPU_CPP_BUILTINS): Reformat.
12814         (CONDITIONAL_REGISTER_USAGE): Likewise.
12815
12816 2007-04-04  Richard Henderson  <rth@redhat.com>
12817
12818         * config/alpha/lib1funcs.asm: Remove unused file.
12819
12820 2007-04-04  Brooks Moses  <brooks.moses@codesourcery.com>
12821
12822         PR other/31356
12823         * opts.c (print_specific_help): Fix --help=<language>
12824         header line.
12825         (common_handle_option): Support --help=common.
12826
12827 2007-04-04  Brooks Moses  <brooks.moses@codesourcery.com>
12828
12829         PR other/31353
12830         * gcc.c (main): Do not run the linker if
12831         print_subprocess_help indicates that it shouldn't be
12832         run.
12833
12834 2007-04-04  Brooks Moses  <brooks.moses@codesourcery.com>
12835
12836         PR doc/31355
12837         * doc/invoke.texi (--help=): Document <languages> value, fix
12838         formatting in tables of values.
12839
12840 2007-04-04  Danny Smith  <dannysmith.users.sourceforge.net>
12841
12842         * config/i386/winnt-cxx.c (i386_pe_type_dllimport_p): Don't ignore
12843         dllimport attribute of virtual methods.
12844
12845 2007-04-04  Chen Liqin  <liqin@sunnorth.com.cn>
12846
12847         * config/score/crti.asm: Change _bss_start to __bss_start.
12848         * config/score/score.h (CONDITIONAL_REGISTER_USAGE): Added.
12849         (OUTGOING_REG_PARM_STACK_SPACE) update.
12850         * config/score/score.opt: add options to make backend support
12851         score5, score5u, score7 and score7d.
12852         * config/score/score.md: Likewise.
12853         * config/score/misc.md: Likewise.
12854         * config/score/mac.md: Likewise.
12855         * doc/invoke.texi: Likewise.
12856         * doc/md.texi: update constraints define.
12857
12858 2007-04-03  Richard Henderson  <rth@redhat.com>
12859
12860         * expr.c (store_expr): If get_signed_or_unsigned_type doesn't yield
12861         an appropriate type, use the mode instead.
12862
12863 2007-04-03  Richard Sandiford  <richard@codesourcery.com>
12864
12865         * config.gcc (mips-wrs-vxworks): Add vx-common.h to tm_file.
12866         Set the default --with-arch setting to mips2.
12867         * config/mips/t-vxworks (MULTILIB_OPTIONS, MULTILIB_MATCHES)
12868         (MULTILIB_EXCEPTIONS): Redefine with new multilibs.
12869         (MULTILIB_OSDIRNAMES): Delete.
12870         (MULTILIB_DIRNAMES): Define.
12871         * config/mips/vxworks.h (LINK_SPEC): Add VXWORKS_LINK_SPEC.
12872         (LIB_SPEC, STARTFILE_SPEC, ENDFILE_SPEC): Define.
12873         (TARGET_OS_CPP_BUILTINS): Incorporate old SUBTARGET_CPP_SPEC
12874         definitions, except for _WRS_R3K_EXC_SUPPORT.  Call
12875         VXWORKS_OS_CPP_BUILTINS.
12876         (SUBTARGET_CPP_SPEC): Redefine to VXWORKS_ADDITIONAL_CPP_SPEC.
12877         (MIPS_DEBUGGING_INFO): Undefine.
12878         (FUNCTION_PROFILER): Define to VXWORKS_FUNCTION_PROFILER.
12879
12880 2007-04-03  Jakub Jelinek  <jakub@redhat.com>
12881
12882         PR middle-end/30704
12883         * fold-const.c (native_encode_real): Encode real.c provided longs
12884         as a series of 32-bit native integers.
12885         (native_interpret_real): Interpret buffer as a series of 32-bit
12886         native integers.
12887
12888 2007-04-03  Richard Guenther  <rguenther@suse.de>
12889
12890         * genpreds.c (write_insn_constraint_len): Write function
12891         optimized for CONSTRAINT_LEN implementation.
12892         (write_tm_preds_h): Output insn_constraint_len inline and
12893         use it for CONSTRAINT_LEN.
12894         (write_insn_preds_c): Don't output insn_constraint_len.
12895         * doc/md.texi (define_register_constraint): Document multi-letter
12896         constraints shall have the same length if they start with the same
12897         letter.
12898
12899 2007-04-03  Uros Bizjak  <ubizjak@gmail.com>
12900
12901         PR target/31175
12902         * config/i386/i386.md (isinf<mode>2): Expand only when
12903         TARGET_C99_FUNCTIONS is set.
12904
12905 2007-04-03  Uros Bizjak  <ubizjak@gmail.com>
12906
12907         * config.gcc (i[34567]86-*-linux*): Add i386/t-crtpc to tm-file.
12908         (x86_64-*-linux*): Ditto.
12909         * config/i386/i386.opt (mpc): New option.
12910         * config/i386/i386.c (overrride_options): Handle
12911         ix87_precision_string.
12912         * config/i386/crtprec.c: New file.
12913         * config/i386/t-crtpc: Ditto.
12914         * config/i386/linux.h (ENDFILE_SPEC): Add handling of -mpc32, -mpc64
12915         and -mpc80 options.
12916         * config/i386/linux64.h (ENDFILE_SPEC): Ditto.
12917         * config/i386/t-linux64 (EXTRA_MULTILIB_PARTS): Add
12918         crtprec32.o, crtprec64.o and crtprec80.o.
12919
12920         * doc/invoke.texi (Machine Dependent Options): Add -mpc32, -mpc64
12921         and -mpc80 options.
12922         (i386 and x86-64 Options): Document -mpc32, -mpc64 and -mpc80 options.
12923
12924 2007-04-02  Eric Christopher  <echristo@apple.com>
12925
12926         * doc/invoke.texi (i386 and x86-64 Options): Document -m64
12927         limitations on darwin.
12928
12929 2007-04-02  Anatoly Sokolov <aesok@post.ru>
12930
12931         PR target/31137
12932         * config/avr/avr.c (avr_rtx_costs): Add missing 'break' statements.
12933
12934 2007-04-02  Dave Korn  <dave.korn@artimi.com>
12935
12936         * doc/tm.texi (FUNCTION_MODE): Update and extend documentation.
12937
12938 2007-04-02  Dave Korn  <dave.korn@artimi.com>
12939
12940         * libgcc2.h (exception_descriptor): Don't forward-declare.
12941         (__get_eh_table_language, __get_eh_table_version): Delete
12942         prototypes of long-dead functions.
12943
12944 2007-04-01  Daniel Berlin  <dberlin@dberlin.org>
12945
12946         * ebitmap.h: New file
12947         * ebitmap.c: New file
12948         * Makefile.in (ebitmap.o): New target.
12949
12950 2007-04-01  Jan Hubicka  <jh@suse.cz>
12951
12952         * emit-rtl.c (emit_insn_before_setloc): Do not ICE when asked to emit
12953         before very first instruction.
12954
12955 2007-04-01  Jan Hubicka  <jh@suse.cz>
12956
12957         * ggc-page.c (ggc_print_statistics): Fix formatting string to avoid
12958         waring on 64bit hosts.
12959         * bitmap.h: Fix typo in bitmap_head_def.
12960
12961 2007-04-01  Steven Bosscher  <steven@gcc.gnu.org>
12962
12963         PR rtl-optimization/31391
12964         * cfgcleanup.c (try_optimize_cfg): If a removed label is turned
12965         into a DELETED_LABEL note, and the label is in an empty basic
12966         block, update BB_END as well as BB_HEAD.
12967
12968 2007-04-01  Richard Henderson  <rth@redhat.com>
12969
12970         PR tree-optimization/31169
12971         * tree-vrp.c (extract_range_from_binary_expr) <RSHIFT_EXPR>: Drop
12972         to varying if the range is outside [0,  prec-1].
12973
12974 2007-04-01  Richard Sandiford  <richard@codesourcery.com>
12975
12976         PR target/31388
12977         * config/mips/mips.md (load_const_gp): New insn.
12978         * config/mips/mips.c (mips_split_symbol): Avoid using or creating
12979         the MIPS16 GP pseudo register if no_new_pseudos.
12980         (mips16_gp_pseudo_reg): Use gen_load_const_gp.
12981
12982 2007-03-31  Andrew Pinski  <andrew_pinski@playstation.sony.com>
12983
12984         PR target/31364
12985         * config/rs6000/rs6000.md (call): Convert to LR hard reg for
12986         secureplt.
12987         (call_value): Likewise.
12988
12989 2007-03-31  Wolfgang Bangerth  <bangerth@dealii.org>
12990             Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
12991
12992         PR 14737
12993         * doc/invoke.texi: (optimization options): Reword description
12994         of -ffast-math. Document its primary purpose.
12995
12996 2007-03-31  Richard Guenther  <rguenther@suse.de>
12997
12998         * omp-low.c (splay-tree.h): Include.
12999         (lookup_decl): Replace splay-tree usage by pointer-map.
13000         (maybe_lookup_decl): Likewise.
13001         (new_omp_context): Likewise.
13002         (delete_omp_context): Likewise.
13003         * gimplify.c (splay-tree.h): Include.
13004         * tree-inline.c (insert_decl_map): Replace splay-tree usage by
13005         pointer-map.
13006         (remap_ssa_name): Likewise.
13007         (remap_decl): Likewise.
13008         (remap_type_1): Likewise.
13009         (remap_type): Likewise.
13010         (copy_body_r): Likewise.
13011         (expand_call_inline): Likewise.
13012         (clone_body): Likewise.
13013         (copy_tree_r): Likewise.
13014         (remap_save_expr): Likewise.
13015         (unsave_r): Likewise.
13016         (unsave_expr_now): Likewise.
13017         (tree_function_versioning): Likewise.
13018         (build_duplicate_type): Likewise.
13019         * tree-inline.h (pointer-set.h): Include instead of splay-tree.h.
13020         (struct copy_body_data): Replace splay-tree by pointer-map.
13021         * Makefile.in (TREE_INLINE_H): Depend on pointer-map.h,
13022         not $(SPLAY_TREE_H).
13023         (gimplify.o): Depend on $(SPLAY_TREE_H).
13024         (omp-low.p): Likewise.
13025
13026 2007-03-31  Anatoly Sokolov <aesok@post.ru>
13027
13028         * config/avr/predicates.md (even_register_operand,
13029         odd_register_operand): New predicates.
13030         * config/avr/avr.md (movw peephole2): New.
13031         (movw_r peephole2): New.
13032
13033 2007-03-30  Rafael Avila de Espindola  <espindola@google.com>
13034
13035         * tree.h (get_signed_or_unsigned_type): New.
13036         * fold-const.c (operand_equal_for_comparison_p): Use
13037         get_signed_or_unsigned_type instead of
13038         lang_hooks.types.signed_or_unsigned_type.
13039         * expr.c (store_expr): Ditto.
13040         * langhooks.c (get_signed_or_unsigned_type): New.
13041         (lhd_signed_or_unsigned_type): New.
13042         * langhooks.h (lhd_signed_or_unsigned_type): New.
13043         * langhooks-def.h (LANG_HOOKS_SIGNED_OR_UNSIGNED_TYPE): Define.
13044
13045 2007-03-30  Richard Henderson  <rth@redhat.com>
13046
13047         * tree-ssa-loop-ivopts.c: Include target.h.
13048         (produce_memory_decl_rtl): Pass the rtx through encode_section_info.
13049         (get_address_cost): Force SYMBOL_FLAG_LOCAL set.
13050         (force_expr_to_var_cost): Use produce_memory_decl_rtl.
13051         * Makefile.in (tree-ssa-loop-ivopts.o): Depend on TARGET_H.
13052
13053 2007-03-30  Richard Henderson  <rth@redhat.com>
13054             Kai Tietz  <kai.tietz@onevision.com>
13055
13056         * config/i386/cygming.h (DWARF2_DEBUGGING_INFO): Enable by
13057         default for 64-bit.
13058         (PREFERRED_DEBUGGING_TYPE): Prefer dwarf2 for 64-bit.
13059         (TARGET_64BIT_MS_ABI): New.
13060         (DBX_REGISTER_NUMBER): Handle 64-bit.
13061         (SIZE_TYPE, PTRDIFF_TYPE): Use long long for 64-bit.
13062         (LONG_TYPE_SIZE): Force to 32.
13063         (REG_PARM_STACK_SPACE): New.
13064         (OUTGOING_REG_PARM_STACK_SPACE): New.
13065         (REGPARM_MAX, SSE_REGPARM_MAX): New.
13066         (HANDLE_PRAGMA_PUSH_POP_MACRO): New.
13067         (STACK_BOUNDARY): Use 128 for 64-bit.
13068         * config/i386/cygwin.asm: Use push/ret to preserve call stack.
13069         Add 64-bit implementation.
13070         * config/i386/gthr-win32.c (__gthr_win32_key_create): Mark dtor
13071         argument unused.
13072         * config/i386/i386.c (x86_64_ms_abi_int_parameter_registers): New.
13073         (override_options): Set ix86_cmodel for TARGET_64BIT_MS_ABI.
13074         Warn for -mregparm, -mrtd in 64-bit mode; force ix86_regparm
13075         for 64-bit; use TARGET_SUBTARGET64_DEFAULT.
13076         (ix86_handle_cconv_attribute): Don't warn when ignoring if
13077         TARGET_64BIT_MS_ABI.
13078         (ix86_function_arg_regno_p): Handle TARGET_64BIT_MS_ABI.
13079         (ix86_pass_by_reference): Likewise.
13080         (ix86_function_value_regno_p): Likewise.
13081         (ix86_build_builtin_va_list): Likewise.
13082         (ix86_va_start, ix86_gimplify_va_arg): Likewise.
13083         (function_arg_advance_ms_64): New.
13084         (function_arg_advance): Call it.
13085         (function_arg_ms_64): New.
13086         (function_arg): Call it.
13087         (function_value_ms_64): New.
13088         (ix86_function_value_1): Call it.
13089         (return_in_memory_ms_64): New.
13090         (ix86_return_in_memory): Call it.
13091         (setup_incoming_varargs_ms_64): New.
13092         (ix86_setup_incoming_varargs): Call it.
13093         (ix86_expand_prologue): Handle 64-bit stack probing.
13094         (legitimize_pic_address): Handle TARGET_64BIT_MS_ABI.
13095         (output_pic_addr_const): Likewise.
13096         (x86_this_parameter): Likewise.
13097         (x86_output_mi_thunk): Likewise.
13098         (x86_function_profiler): Likewise.
13099         (TARGET_STRICT_ARGUMENT_NAMING): New.
13100         * config/i386/i386.h (TARGET_SUBTARGET64_DEFAULT): New.
13101         (TARGET_64BIT_MS_ABI): New.
13102         (CONDITIONAL_REGISTER_USAGE): Handle TARGET_64BIT_MS_ABI.
13103         * config/i386/i386.md (allocate_stack_worker): Remove.
13104         (allocate_stack_worker_32): Rename from allocate_stack_worker_1;
13105         describe the clobber of eax without a match_scratch.
13106         (allocate_stack_worker_postreload): Remove.
13107         (allocate_stack_worker_64): Rename from allocate_stack_worker_rex64;
13108         describe the clobbers of rax, r10, r11 properly; use __chkstk symbol.
13109         (allocate_stack_worker_rex64_postreload): Remove.
13110         (allocate_stack): Handle 64-bit.
13111         * config/i386/i386elf (TARGET_SUBTARGET_DEFAULT): Remove.
13112         * config/i386/mingw32.h (TARGET_VERSION): Set correctly for 64-bit.
13113         (EXTRA_OS_CPP_BUILTINS): Handle 64-bit.
13114         (STANDARD_INCLUDE_DIR): Handle TARGET_64BIT_DEFAULT.
13115         (STANDARD_STARTFILE_PREFIX_1): Likewise.
13116         * config/i386/unix.h (TARGET_SUBTARGET64_DEFAULT): New.
13117         * config.build (x86_64-*-mingw*): New host.
13118         * config.host (x86_64-*-mingw*): New host.
13119         * config.gcc (x86_64-*-mingw*): New target.
13120         * gthr-win32.h (__gthread_key_create): Mark dtor unused.
13121
13122 2007-03-30  Richard Henderson  <rth@redhat.com>
13123             Kai Tietz  <kai.tietz@onevision.com>
13124
13125         * c-pragma.c (struct def_pragma_macro_value): New.
13126         (struct def_pragma_macro): New.
13127         (pushed_macro_table): New.
13128         (dpm_hash, dpm_eq): New.
13129         (handle_pragma_push_macro, handle_pragma_pop_macro): New.
13130         (init_pragma): Install them.
13131         * doc/tm.texi (HANDLE_PRAGMA_PUSH_POP_MACRO): New.
13132
13133 2007-03-30  Anatoly Sokolov <aesok@post.ru>
13134
13135         * config/avr/avr.c (avr_override_options): Clear
13136         'flag_delete_null_pointer_checks'.
13137
13138 2007-03-30  Paolo Carlini  <pcarlini@suse.de>
13139
13140         PR c++/26099
13141         * c-common.h (enum rid): Add RID_HAS_NOTHROW_ASSIGN,
13142         RID_HAS_NOTHROW_CONSTRUCTOR, RID_HAS_NOTHROW_COPY,
13143         RID_HAS_TRIVIAL_ASSIGN, RID_HAS_TRIVIAL_CONSTRUCTOR,
13144         RID_HAS_TRIVIAL_COPY, RID_HAS_TRIVIAL_DESTRUCTOR,
13145         RID_HAS_VIRTUAL_DESTRUCTOR, RID_IS_ABSTRACT, RID_IS_BASE_OF,
13146         RID_IS_CONVERTIBLE_TO, RID_IS_CLASS, RID_IS_EMPTY, RID_IS_ENUM,
13147         RID_IS_POD, RID_IS_POLYMORPHIC, RID_IS_UNION, as
13148         C++ extensions.
13149         * doc/extend.texi (Extensions to the C++ Language): Add Type Traits.
13150
13151 2007-03-30  Steven Bosscher  <steven@gcc.gnu.org>
13152
13153         * regmove.c: Move all of pass_stack_adjustments from here...
13154         * combine-stack-adj.c: ...to this new file.
13155         * Makefile.in: Add rules for combine-stack-adj.o.
13156
13157 2007-03-30  Zdenek Dvorak  <dvorakz@suse.cz>
13158
13159         PR tree-optimization/31383
13160         * tree-data-ref.c (affine_function_equal_p): Do not require the
13161         vectors to have the same length.
13162
13163 2007-03-30  Jan Hubicka  <jh@suse.cz>
13164
13165         PR middle-end/30700
13166         * dwarf2out.c (reference_to_unused): Ask cgraph for functions
13167         availablility; add more sanity checking; ask varpool only about
13168         VAR_DECL.
13169
13170 2007-03-29  Richard Henderson  <rth@redhat.com>
13171
13172         * unwind-generic.h (_sleb128_t, _uleb128_t): Don't use HAVE_LONG_LONG
13173         to decide, but __SIZEOF_LONG_LONG__.
13174
13175 2007-03-29  Richard Henderson  <rth@redhat.com>
13176
13177         * emutls.c (struct __emutls_array): New.
13178         (emutls_destroy): Use it instead of casting element 0 from void*.
13179         (__emutls_get_address): Likewise.
13180
13181 2007-03-29  Richard Henderson  <rth@redhat.com>
13182
13183         * varasm.c (initializer_constant_valid_p): Don't deny
13184         DECL_DLLIMPORT_P on functions.
13185
13186         * config/i386/cygming.h: Remove function declarations.
13187         (SUBTARGET_ENCODE_SECTION_INFO): Don't undef first.
13188         (ASM_OUTPUT_LABELREF): Remove.
13189         (COMMON_ASM_OP): Remove.
13190         (ASM_OUTPUT_COMMON): Remove.
13191         (ASM_OUTPUT_ALIGNED_DECL_COMMON): New.
13192         (ASM_DECLARE_OBJECT_NAME): Use i386_pe_maybe_record_exported_symbol.
13193         (ASM_DECLARE_FUNCTION_NAME): Likewise.
13194         * config/i386/i386-interix.h (SUBTARGET_ENCODE_SECTION_INFO):
13195         Rename from TARGET_ENCODE_SECTION_INFO.
13196         * config/i386/netware.h: Likewise.
13197         * config/i386/i386-protos.h: Update.
13198         * config/i386/i386.c (ix86_function_ok_for_sibcall): Turn ifdef
13199         of TARGET_DLLIMPORT_DECL_ATTRIBUTES into straight if.
13200         (legitimate_constant_p): Reject dllimports.
13201         (dllimport_map, get_dllimport_decl): New.
13202         (legitimize_dllimport_symbol): New.
13203         (legitimize_address, ix86_expand_move): Use it.
13204         (TARGET_BINDS_LOCAL_P): Redefine for TARGET_DLLIMPORT_DECL_ATTRIBUTES.
13205         * config/i386/i386.h (DLL_IMPORT_EXPORT_PREFIX): Remove.
13206         (SYMBOL_FLAG_DLLIMPORT, SYMBOL_REF_DLLIMPORT_P): New.
13207         (SYMBOL_FLAG_DLLEXPORT, SYMBOL_REF_DLLEXPORT_P): New.
13208         * config/i386/predicates.md (constant_call_address_operand): Only
13209         accept symbols; reject dllimport_p symbols.
13210         * config/i386/uwin.h (ASM_DECLARE_FUNCTION_NAME): Use
13211         i386_pe_maybe_record_exported_symbol.
13212         * config/i386/winnt.c (DLL_IMPORT_PREFIX, DLL_EXPORT_PREFIX): Remove.
13213         (i386_pe_determine_dllexport_p): Rename from i386_pe_dllexport_p.
13214         (i386_pe_determine_dllimport_p): Rename from i386_pe_dllimport_p;
13215         trust the setting of DECL_DLLIMPORT_P.
13216         (i386_pe_dllexport_name_p, i386_pe_dllimport_name_p): Remove.
13217         (i386_pe_mark_dllexport, i386_pe_mark_dllimport): Remove.
13218         (gen_stdcall_or_fastcall_suffix): Return NULL if no change required;
13219         tidy the argument scanning loop.
13220         (i386_pe_encode_section_info): Set SYMBOL_FLAG_DLLIMPORT and
13221         SYMBOL_FLAG_DLLEXPORT in SYMBOL_REF_FLAGS.
13222         (i386_pe_strip_name_encoding): Remove.
13223         (i386_pe_binds_local_p): New.
13224         (i386_pe_strip_name_encoding_full): Use default_strip_name_encoding.
13225         (i386_pe_output_labelref): Remove.
13226         (i386_pe_asm_output_aligned_decl_common): New.
13227         (i386_pe_maybe_record_exported_symbol): Rename from
13228         i386_pe_record_exported_symbol; check for dllexported symbols.
13229
13230 2007-03-29  Zack Weinberg  <zack@mrtock.ucsd.edu>
13231
13232         * gengtype.c (oprintf): Mostly revert changes from 2007-03-26;
13233         add comment explaining why vsnprintf cannot be used.
13234
13235 2007-03-29  Douglas Gregor  <doug.gregor@gmail.com>
13236
13237         PR tree-optimization/30666
13238         * tree.c (build_complex_type): When creating type names for DWARF2
13239         debug info, create TYPE_DECLs for TYPE_NAME instead of
13240         IDENTIFIER_NODEs.
13241         (build_common_tree_nodes_2): Use build_complex_type when building
13242         predefined complex types, to preserve canonical types.
13243
13244 2007-03-29  Steven Bosscher  <steven@gcc.gnu.org>
13245
13246         * ifcvt.c (struct noce_if_info): Add then_else_reversed field.
13247         (noce_get_alt_condition): Look at it to determine whether to
13248         reverse the condition or not.
13249         (noce_get_condition): Substitute the truth for lies.
13250         (noce_find_if_block): Set the then_else_reversed field.
13251
13252 2007-03-29  Lars Poeschel <larsi@wh2.tu-dresden.de>
13253
13254         * config/fr30/fr30.md (movdi): Do not accept immediates as the
13255         destination of this insn.
13256         * config/fr30/fr30.c (fr30_move_double): Use emit_move_insn rather
13257         than calling gen_rtx_SET directly.  Use r0 to hold the value of
13258         'address + 4' rather than a stack based temporary which can be
13259         mis-optimized away.
13260
13261 2007-03-29  Andreas Krebbel  <krebbel1@de.ibm.com>
13262
13263         * config/s390/s390.c (s390_secondary_input_reload_class,
13264         s390_secondary_output_reload_class): Functions removed.
13265         (s390_secondary_reload): New function.
13266         (TARGET_SECONDARY_RELOAD): Target macro defined.
13267         * config/s390/s390.h (SECONDARY_INPUT_RELOAD_CLASS,
13268         SECONDARY_OUTPUT_RELOAD_CLASS): Macro definitions removed.
13269         * config/s390/s390.md ("reload_outti", "reload_outdi",
13270         "reload_indi", "reload_insi", "reload_out<mode>", "reload_in<mode>",
13271         "reload_out<mode>"): Expanders removed.
13272         ("reload<mode>_plus", "reload<mode>_nonoffmem_in",
13273         "reload<mode>_nonoffmem_out"): Expanders added.
13274
13275 2007-03-29  Andreas Krebbel  <krebbel1@de.ibm.com>
13276
13277         * regmove.c (optimize_reg_copy_1): Don't perform DEST->SRC repair
13278         action if SRC->DEST replacement failed anyway.
13279
13280 2007-03-28  Mike Stump  <mrs@apple.com>
13281
13282         * config/darwin9.h (ASM_OUTPUT_ALIGNED_COMMON): Add.
13283         * config/darwin.h (MAX_OFILE_ALIGNMENT): Fix.
13284         * config/rs6000/darwin.h (ASM_OUTPUT_ALIGNED_COMMON): Removed #undef.
13285
13286 2007-03-28  Dwarakanath Rajagopal  <dwarak.rajagopal@amd.com>
13287
13288         * config.gcc: Accept barcelona as a variant of amdfam10.
13289         * config/i386/i386.c (override_options): Likewise.
13290         * doc/invoke.texi: Likewise.
13291
13292 2007-03-28  Eric Botcazou  <ebotcazou@adacore.com>
13293
13294         * tree-dfa.c (get_ref_base_and_extent): Do not expect positive
13295         offsets for BIT_FIELD_REF and COMPONENT_REF.
13296
13297 2007-03-28  Richard Guenther  <rguenther@suse.de>
13298
13299         * tree.c (is_global_var): Move ...
13300         * tree-flow-inline.h (is_global_var): ... here.
13301         * tree.h (is_global_var): Remove declaration.
13302
13303 2007-03-28  Uros Bizjak  <ubizjak@gmail.com>
13304
13305         * config/i386/i386.h (X86_TUNE_PROMOTE_HIMODE_IMUL): New tuning
13306         option.
13307         (TARGET_TUNE_PROMOTE_HIMODE_IMUL): New define. Use new tuning option.
13308         * config/i386/i386.c (ix86_tune_features): Initialize new
13309         tuning option.
13310         * config/i386/predicates.md (promotable_binary_operator): Use
13311         TARGET_TUNE_PROMOTE_HIMODE_IMUL.
13312
13313 2007-03-28  Grigory Zagorodnev <grigory_zagorodnev@linux.intel.com>
13314
13315         PR target/31380
13316         * config/i386/sse.md (uminv16qi3): Use UMIN instead of UMAX.
13317
13318 2007-03-28  Lars Poeschel <larsi@wh2.tu-dresden.de>
13319
13320         * config/fr30/fr30.md (movsi_internal): Change destination
13321         constraint from m to V and add m to the end.
13322
13323 2007-03-28  Christian Bruel  <christian.bruel@st.com>
13324
13325         * config/sh/sh.md (movsi_i): Fix type attribute.
13326
13327 2007-03-28  Christian Bruel  <christian.bruel@st.com>
13328
13329         * config/sh/sh.md (movsi_ie): Fix memory constraints attribute length.
13330         (movsf_ie): Likewise.
13331
13332 2007-03-28  Christian Bruel  <christian.bruel@st.com>
13333
13334         * config.gcc: Add sh4-300 to multilib.
13335         * config/sh/t-mlib-sh4-300: New file.
13336
13337 2007-03-28  Andreas Krebbel  <krebbel1@de.ibm.com>
13338
13339         * config/s390/s390.md ("fix_trunc<mode>di2"): New expander.
13340         ("fix_trunc<DFP:mode>di2_dfp"): New insn definition renamed from
13341         fix_trunc<mode>di2.
13342         ("fixuns_truncdddi2", "fixuns_trunctddi2"): Use
13343         fix_trunc<DFP:mode>di2_dfp instead of fix_trunc<mode>di2.
13344         ("fix_truncdfsi2", "fix_truncsfsi2", "fixuns_truncdddi2",
13345         "fixuns_trunctddi2"): Whitespace fix.
13346
13347 2007-03-28  Kaz Kojima  <kkojima@gcc.gnu.org>
13348
13349         * config/sh/sh.h (CALL_COOKIE_RET_TRAMP_SHIFT): Move after
13350         the definition of struct sh_args.
13351         (CALL_COOKIE_RET_TRAMP, CALL_COOKIE_STACKSEQ_SHIFT,
13352         CALL_COOKIE_INT_REG_GET): Likewise.
13353
13354 2007-03-28  Steven Bosscher  <steven@gcc.gnu.org>
13355
13356         * ifcvt.c (cond_exec_find_if_block): Return FALSE if no
13357         transformations are applied successfully.
13358
13359 2007-03-27  Douglas Gregor  <doug.gregor@gmail.com>
13360
13361         * tree.c (tree_contains_struct): Permit 512 tree codes.
13362         * tree.h (tree_contains_struct): Ditto.
13363         (MAX_TREE_CODES): Ditto.
13364         (struct tree_base): Make CODE 16 bits, instead of 8 bits. Add
13365         SPARE member to store remaining padding bits.
13366
13367 2007-03-27  Anatoly Sokolov <aesok@post.ru>
13368
13369         * config/avr/avr.c (avr_mcu_types): Move at90usb82 device to 'avr4'
13370         architecture.
13371
13372 2007-03-27  Janis Johnson  <janis187@us.ibm.com>
13373
13374         * configure.ac: Fix assembler test for powerpc*-linux decimal float.
13375         * configure: Regenerate.
13376
13377         * configure: Regenerate using the correct version of autoconf.
13378
13379 2007-03-27  Anatoly Sokolov  <aesok@post.ru>
13380
13381         * config/avr/avr.c (avr_hard_regno_mode_ok): Disallow QImode in stack
13382         pointer regs.
13383         * config/avr/avr.h (REGISTER_NAMES): Rename "__SPL__" and "__SPH__"
13384         regs to "__SP_L__" and "__SP_H__".
13385
13386 2007-03-27  Richard Guenther  <rguenther@suse.de>
13387
13388         * tree-dfa.c (get_ref_base_and_extent): Replace bit_offset and
13389         computations with it with a HOST_WIDE_INT variable.
13390
13391 2007-03-26  Mike Stump  <mrs@apple.com>
13392
13393         * config/rs6000/darwin.h (DARWIN_MINVERSION_SPEC): Add
13394         objective-c-header, objective-c++-header and objc++-cpp-output
13395         support.
13396         * config/i386/darwin.h (DARWIN_MINVERSION_SPEC): Likewise.
13397
13398 2007-03-26  Richard Henderson  <rth@redhat.com>
13399
13400         PR target/31361
13401         * config/i386/i386.c (IX86_BUILTIN_PSLLDQ128, IX86_BUILTIN_PSLLW128,
13402         IX86_BUILTIN_PSLLD128, IX86_BUILTIN_PSLLQ128, IX86_BUILTIN_PSRAW128,
13403         IX86_BUILTIN_PSRAD128, IX86_BUILTIN_PSRLW128, IX86_BUILTIN_PSRLD128,
13404         IX86_BUILTIN_PSRLQ128): New.
13405         (ix86_init_mmx_sse_builtins): Add them.
13406         (ix86_expand_builtin): Expand them.
13407         * config/i386/sse.md (ashr<mode>3, lshr<mode>3, ashl<mode>3): Make
13408         operand 2 be TImode.
13409         * config/i386/emmintrin.h (_mm_slli_epi64, _mm_srai_epi16,
13410         _mm_srai_epi32, _mm_srli_epi16, _mm_srli_epi32,
13411         _mm_srli_epi64): Mark __B const.
13412         (_mm_srli_si128, _mm_srli_si128): Fix disabled inline versions.
13413         (_mm_sll_epi16, _mm_sll_epi32, _mm_sll_epi64, _mm_sra_epi16,
13414         _mm_sra_epi32, _mm_srl_epi16, _mm_srl_epi32, _mm_srl_epi64): Use
13415         new two-vector shift builtins.
13416
13417 2007-03-26  Ian Lance Taylor  <iant@google.com>
13418
13419         PR tree-optimization/31345
13420         * tree-vrp.c (extract_range_from_binary_expr): Turn ranges like
13421         [+INF, +INF(OVF)] into VARYING.
13422
13423 2007-03-26  Zack Weinberg  <zackw@panix.com>
13424
13425         * gengtype-parse.c: New file.
13426         * gengtype-yacc.y: Delete.
13427         * gengtype-lex.l: Don't include gengtype-yacc.h.
13428         Define YY_DECL and yyterminate appropriately for recursive
13429         descent parser.  yylval is now a string out-parameter to yylex.
13430         (HWS, EOID): New shorthand.
13431         (IWORD): Add a couple more types.
13432         (yylex): Add a setup stanza.  Remove the complex rules for
13433         detecting GTY'ed types and typedefs; replace with simple
13434         keyword detectors.  Adjust everything for the changed
13435         definition of yylval.  Ignore all pp-directives, not just #define.
13436         (yyerror): Delete.
13437         (parse_file): Rename yybegin; do not call yyparse.
13438         (yyend): New.
13439         * gengtype.c (xasprintf): Export again.
13440         (this_file): New.  Use everywhere __FILE__ was being used.
13441         (get_lang_bitmap): Special case types defined in gengtype.c.
13442         (do_typedef, new_structure): Suppress definition of certain types.
13443         (new_structure): Improve diagnostics of duplicate definitions.
13444         Make sure location_s is associated with input.h.
13445         (nreverse_pairs, define_location_structures): New functions.
13446         (main): Improve tagging of kludge types.  Remove old kludges
13447         for input.h types; use define_location_structures.
13448         * gengtype.h: Update prototypes.  Define token codes here.
13449         * Makefile.in: Remove all references to gengtype-yacc.
13450         Add rules for gengtype-parse.o.  Adjust rules for gengtype-lex.o
13451         and gengtype.
13452         * bitmap.h (struct bitmap_head_def): Coalesce definitions,
13453         add GTY((skip)) to the field that's only conditionally there.
13454         * doc/install.texi: Document that Bison is no longer required
13455         unless building treelang.
13456
13457         * gengtype.c: Don't include gtyp-gen.h.
13458         (srcdir): Declare here.
13459         (base_files, lang_dir_names): Allocate dynamically.
13460         (gt_files, num_gt_files, num_lang_dirs): New globals.
13461         (measure_input_list, read_input_line, read_input_list)
13462         (set_lang_bitmap): New functions.
13463         (get_base_file_bitmap): Rename get_lang_bitmap and drastically
13464         simplify, relying on read_input_list to set up the bitmaps.
13465         (main): Arguments are no longer unused.  Check for correct number
13466         of command line arguments, set srcdir and srcdir_len, then call
13467         read_input_list, before doing anything else.  No need to worry
13468         about duplicates in main loop.
13469         * configure.ac: Simplify the calculation of all_gtfiles.
13470         Put language tags in there.  Don't set or substitute
13471         all_gtfiles_files_langs or all_gtfiles_files_frags.
13472         * Makefile.in: Revamp the way gengtype is invoked, now that it
13473         takes a file on its command line with a much simpler format.
13474         Remove or replace with gtyp-input.list all references to gtyp-gen.h.
13475         (GTFILES): Remove duplicates and C source files.
13476         * c-config-lang.in, cp/config-lang.in, objc/config-lang.in
13477         * objcp/config-lang.in: Add c-pragma.h to gtfiles.
13478         * configure: Regenerate.
13479
13480         * gengtype.h: Remove all type definitions to gengtype.c; leave
13481         only definitions of options_p, type_p, and pair_p as opaque
13482         pointers.  Update prototypes.
13483         * gengtype.c: Many type definitions moved here from gengtype.h.
13484         Consolidate type definitions at the top of the file.
13485         (xvasprintf): Delete.
13486         (xasprintf): Make static.
13487         (create_nested_pointer_option): Add 'next' parameter.
13488         (create_field_all, create_field_at): New functions.
13489         (create_field): Now a thin wrapper around create_field_all.
13490         (create_optional_field): Rename create_optional_field_ and add
13491         line argument.  Original name is now a macro which supplies
13492         __LINE__.
13493         (oprintf): Use vsnprintf directly.
13494         (close_output_files): Use fatal rather than perror/exit.
13495         (note_def_vec, note_def_vec_alloc): Use create_field_at.
13496         (main): Set progname.  Don't use exit.
13497         * gengtype-yacc.y (struct_fields): Use create_field_at.
13498         (option, optionseqopt): Delete.
13499         (optionseq): Consolidate productions from option here so we
13500         can use the first argument to create_option.
13501
13502         * gengtype-lex.l: Distinguish unions from structures in the
13503         token type.  Don't call find_structure; return the tag as a string.
13504         * gengtype-yacc.y: Add new token types ENT_TYPEDEF_UNION and
13505         ENT_UNION.  Type of these, ENT_TYPEDEF_STRUCT, and ENT_STRUCT is
13506         string.  Reorganize typedef_struct production accordingly.
13507         Use create_nested_ptr_option.
13508         * gengtype.c (create_nested_ptr_option): New function.
13509         * gengtype.h: Declare it.
13510
13511         * gengtype.h (struct type): Replace 'sc' with boolean, scalar_is_char.
13512         (string_type): Don't declare.
13513         (do_scalar_typedef): Declare.
13514         (create_scalar_type): Update prototype.
13515         * gengtype.c (string_type): Make static.
13516         (scalar_nonchar, scalar_char): New.
13517         (do_scalar_typedef): Export.  Always use scalar_nonchar for the type.
13518         (resolve_typedef): Use scalar_nonchar for error recovery.
13519         (create_scalar_type): Remove name_len field.  Return scalar_char
13520         or scalar_nonchar as appropriate.
13521         (adjust_field_type): Look at scalar_is_char boolean to decide whether
13522         to use string_type.
13523         (throughout): Use scalar_nonchar instead of calling
13524         create_scalar_type, whenever possible.
13525         (main): Initialize scalar_char and scalar_nonchar before calling
13526         gen_rtx_next.
13527         * gengtype-lex.l: Adjust for removal of second argument to
13528         create_scalar_type.  Use yylval.s instead of yylval.t when
13529         returning SCALAR.
13530         * gengtype-yacc.y: Type of SCALAR is string.  Call
13531         create_scalar_type from type:SCALAR rule.  Adjust for removal of
13532         second argument to create_scalar_type.
13533
13534         * vec.h: Remove all #if IN_GENGTYPE blocks.
13535         Add comment saying that changes may require adjustments to gengtype.
13536         * gengtype.c: Don't include coretypes.h or tm.h.
13537         Add comment to inclusion of errors.h.
13538         (note_def_vec, note_def_vec_alloc): New functions.
13539         * gengtype.h: Declare new functions.
13540         * gengtype-lex.l: Don't include coretypes.h.
13541         (YY_INPUT, macro_input, push_macro_expansion, mangle_macro_name):
13542         Delete.
13543         (update_lineno): Remove unnecessary prototype.
13544         (DEF_VEC_* rules): Simplify using note_def_vec / note_def_vec_alloc.
13545         (VEC rule): Just return VEC_TOKEN.
13546         * gengtype-yacc.y (VEC_TOKEN): New token type.
13547         (type): Add a production for VEC(a,b).
13548         * Makefile.in: Update dependencies.
13549
13550         * gengtype-lex.l: Remove rules for parsing pointer-to-function
13551         typedefs that use the old PARAMS macro.
13552
13553         * gengtype-lex.l: Remove all rules and states relating to yacc
13554         input files.
13555         * gengtype-yacc.y: Similarly.
13556         * gengtype.c (note_yacc_type): Delete function.
13557         * gengtype.h: Update prototypes.
13558
13559 2007-03-26  Joseph Myers  <joseph@codesourcery.com>
13560
13561         * tree-pretty-print.c (dump_generic_node): Report precision of
13562         unnamed integer types.
13563
13564 2007-03-26  Steven Bosscher  <steven@gcc.gnu.org>
13565
13566         * ifcvt.c (noce_try_store_flag_constants): Don't check
13567         no_new_pseudos here.
13568         (noce_try_store_flag_constants): Don't check no_new_pseudos.
13569         (noce_try_addcc, noce_try_store_flag_mask, noce_try_cmove_arith,
13570         noce_try_cmove_arith, noce_try_minmax, noce_try_abs,
13571         noce_try_sign_mask): Likewise.
13572         (if_convert): Check no_new_pseudos here.
13573
13574         (cond_exec_process_if_block, noce_process_if_block, find_if_block):
13575         Remove prototypes.
13576         (struct noce_if_info): Add then_bb, else_bb, join_bb members.
13577         (noce_get_condition): Handle new then_else_reversed argument.
13578         (noce_init_if_info): Remove, fold into noce_find_if_block.
13579         (noce_process_if_block): Take a struct noce_if_info as the
13580         argument.  Don't set up one based on ce_if_info.  Update pointer
13581         references accordingly.
13582         (cond_move_process_if_block): Likewise.
13583         (process_if_block): Removed.
13584         (find_if_block): Removed.  Move functionality two new functions,
13585         noce_find_if_block and cond_exec_find_if_block.
13586         (noce_find_if_block): New function.  Be aware of IF-THEN-JOIN
13587         blocks and the symmetric IF-ELSE-JOIN case.
13588         (cond_exec_find_if_block): Also new function mostly based on old
13589         find_if_block and process_if_block.
13590         (find_if_header): Replace find_if_block call with separately
13591         guarded calls to noce_find_if_block and cond_exec_find_if_block.
13592         (find_cond_trap): Update noce_get_condition call.
13593         (dead_or_predicable): Likewise.
13594
13595 2007-03-26  Jakub Jelinek  <jakub@redhat.com>
13596
13597         * config/i386/i386.c (IX86_BUILTIN_CMPNEPD, IX86_BUILTIN_CMPNESD):
13598         Remove.
13599         (IX86_BUILTIN_PSLLW128, IX86_BUILTIN_PSLLD128, IX86_BUILTIN_PSLLQ128,
13600         IX86_BUILTIN_PSRAW128, IX86_BUILTIN_PSRAD128, IX86_BUILTIN_PSRLW128,
13601         IX86_BUILTIN_PSRLD128, IX86_BUILTIN_PSRLQ128): Remove.
13602         (ix86_init_mmx_sse_builtins): Remove v8hi_ftype_v8hi_v2di and
13603         v4si_ftype_v4si_v2di.  Remove __builtin_ia32_psllw128,
13604         __builtin_ia32_pslld128, __builtin_ia32_psllq128,
13605         __builtin_ia32_psrlw128, __builtin_ia32_psrld128,
13606         __builtin_ia32_psrlq128, __builtin_ia32_psraw128 and
13607         __builtin_ia32_psrad128 builtins.
13608
13609 2007-03-26  Uros Bizjak  <ubizjak@gmail.com>
13610
13611         * reg-stack.c (replace_reg): Use IN_RANGE macro in gcc_assert().
13612         * config/i386/constraints.md
13613         (define_constraint "I"): Use IN_RANGE macro.
13614         (define_constraint "J"): Ditto.
13615         (define_constraint "K"): Ditto.
13616         (define_constraint "M"): Ditto.
13617         (define_constraint "N"): Ditto.
13618         (define_constraint "O"): Ditto.
13619         * config/i386/predicates.md
13620         (define_predicate "register_no_elim_operand"): Use IN_RANGE macro.
13621         (define_predicate "const_0_to_3_operand"): Ditto.
13622         (define_predicate "const_0_to_7_operand"): Ditto.
13623         (define_predicate "const_0_to_15_operand"): Ditto.
13624         (define_predicate "const_0_to_63_operand"): Ditto.
13625         (define_predicate "const_0_to_255_operand"): Ditto.
13626         (define_predicate "const_1_to_31_operand"): Ditto.
13627         (define_predicate "const_2_to_3_operand"): Ditto.
13628         (define_predicate "const_4_to_7_operand"): Ditto.
13629
13630 2007-03-25  David Edelsohn  <edelsohn@gnu.org>
13631
13632         * config/rs6000/rs6000.c (rs6000_emit_prologue): Always clobber LR
13633         in SImode for save_world.
13634         * config/rs6000/altivec.md (save_world, restore_world): Convert to
13635         LR hard reg.
13636
13637 2007-03-25  Dorit Nuzman  <dorit@il.ibm.com>
13638
13639         PR tree-optimization/30784
13640         * fold-const.c (fold_ternary): Handle CONSTRUCTOR in case
13641         BIT_FIELD_REF.
13642
13643 2007-03-25  Revital Eres  <eres@il.ibm.com>
13644
13645         * tree-if-conv.c (if_convertible_gimple_modify_stmt_p):
13646           Fold movement_possibility function into it.
13647
13648 2007-03-25  David Edelsohn  <edelsohn@gnu.org>
13649
13650         * config/rs6000/darwin.md (load_macho_picbase): Ignore operand 0.
13651         (load_macho_picbase_{si,di}): Convert to LR hard reg.
13652         (call_indirect_nonlocal_darwin64): Same.
13653         (call_nonlocal_darwin64): Same.
13654         (call_value_indirect_nonlocal_darwin64): Same.
13655         (call_value_nonlocal_darwin64): Same.
13656         (sibcall_nonlocal_darwin64): Same.
13657         (sibcall_value_nonlocal_darwin64): Same.
13658         (sibcall_symbolic_64): Same.
13659         (sibcall_value_symbolic_64): Same.
13660         * config/rs6000/rs6000.c (rs6000_legitimize_tls_address): Remove
13661         LR pseudo.
13662         (rs6000_emit_load_toc_table): Same.
13663         * config/rs6000/altivec.md (restore_world): Convert to LR hard reg.
13664         * config/rs6000/rs6000.md (mulh_call): Convert to LR hard reg.
13665         (mull_call): Same.
13666         (divss_call): Same.
13667         (divus_call): Same.
13668         (quoss_call): Same.
13669         (quous_call): Same.
13670         (load_toc_v4_pic_si): Same
13671         (load_toc_v4_PIC_1): Same.
13672         (load_toc_v4_PIC_1b): Same.
13673         (call_indirect_aix{32,64}): Same.
13674         (call_value_indirect_aix{32,64}): Same.
13675         (call): Same.
13676         (call_value): Same.
13677         (call_local{32,64}): Same.
13678         (call_value_local{32,64}): Same.
13679         (call_indirect_nonlocal_aix{32,64}): Same.
13680         (call_nonlocal_aix{32,64}): Same.
13681         (call_value_indirect_nonlocal_aix{32,64}): Same.
13682         (call_value_nonlocal_aix{32,64}): Same.
13683         (call_indirect_nonlocal_sysv<mode>): Same.
13684         (call_nonlocal_sysv<mode>): Same.
13685         (call_value_indirect_nonlocal_sysv<mode>): Same.
13686         (call_value_nonlocal_sysv<mode>): Same.
13687         (sibcall): Same.
13688         (sibcall_local{32,64}): Same.
13689         (sibcall_value_local{32,64}): Same.
13690         (sibcall_nonlocal_aix{32,64}): Same.
13691         (sibcall_value_nonlocal_aix{32,64}): Same.
13692         (sibcall_nonlocal_sysv<mode>): Same.
13693         (sibcall_value): Same.
13694         (sibcall_value_nonlocal_sysv<mode>): Same.
13695
13696 2007-03-24  Paul Brook  <paul@codesourcery.com>
13697
13698         * config/arm/lib1funcs.asm (div0): Use ARM_FUNC_START and do_push.
13699         * config/arm/linux-eabi.h: Remove legacy syscall hack.
13700
13701 2007-03-24  Richard Henderson  <rth@redhat.com>
13702
13703         * config/ia64/constraints.md: New file.
13704         * config/ia64/predicates.md: Replace CONST_OK_FOR_? with
13705         satisfies_constraint_?.
13706         * config/ia64/ia64.c (ia64_move_ok, ia64_legitimate_constant_p,
13707         ia64_reload_gp, spill_restore_mem, ia64_expand_prologue,
13708         ia64_expand_epilogue, ia64_split_return_addr_rtx, ia64_rtx_costs,
13709         ia64_output_mi_thunk): Likewise.
13710         (ia64_const_ok_for_letter_p): Remove.
13711         (ia64_const_double_ok_for_letter_p): Remove.
13712         (ia64_extra_constraint): Remove.
13713         * config/ia64/ia64.h (REG_CLASS_FROM_LETTER): Remove.
13714         (CONST_OK_FOR_I, CONST_OK_FOR_J, CONST_OK_FOR_K, CONST_OK_FOR_L,
13715         CONST_OK_FOR_M, CONST_OK_FOR_N, CONST_OK_FOR_O, CONST_OK_FOR_P,
13716         CONST_OK_FOR_LETTER_P, CONST_DOUBLE_OK_FOR_G,
13717         CONST_DOUBLE_OK_FOR_LETTER_P, EXTRA_CONSTRAINT,
13718         EXTRA_MEMORY_CONSTRAINT): Remove.
13719         * config/ia64/ia64.md: Include constriants.md.  Replace
13720         CONST_OK_FOR_? with satisfies_constraint_?.
13721
13722 2007-03-23  Michael Meissner  <michael.meissner@amd.com>
13723             H.J. Lu  <hongjiu.lu@intel.com>
13724
13725         * config/dfp-bit.h (DPD_BID_NAME): New macro to give either the
13726         DPD or BID name.
13727         (name macros): Use DPD_BID_NAME to convert names properly.
13728
13729         * optabs.c (DECIMAL_PREFIX): Prefix string to use for the current
13730         decimal floating point format.
13731         (init_floating_libfuncs): Change decimal functions so that they
13732         have a "bid_" prefix if the decimal system uses the BID format,
13733         and "dpd_" prefix if the decimal system uses the DPD format.
13734         (init_interclass_conv_libfuncs): Ditto.
13735         (init_intraclass_conv_libfuncs): Ditto.
13736
13737         * config.in (ENABLE_DECIMAL_BID_FORMAT): New macro to say we are
13738         using the BID format.
13739
13740         * configure.ac (ENABLE_DECIMAL_BID_FORMAT): Set to 1/0 to say
13741         whether we are using the BID decimal format.
13742         * configure: Regenerate.
13743
13744         * c-cppbuiltin.c (c_cpp_builtins): Define __STDC_WANT_DEC_FP__ if
13745         the compiler has decimal floating point enabled.  Define
13746         __DECIMAL_BID_FORMAT__ if BID decimal floating point is used
13747         instead of DPD.
13748
13749         * config.in (ENABLE_DECIMAL_BID_FORMAT): New macro to say we are
13750         using the BID format.
13751
13752         * configure.ac (ENABLE_DECIMAL_BID_FORMAT): Set to 1/0 to say
13753         whether we are using the BID decimal format.
13754         * configure: Regenerate.
13755
13756         * c-cppbuiltin.c (c_cpp_builtins): Define __STDC_WANT_DEC_FP__ if
13757         the compiler has decimal floating point enabled.  Define
13758         __DECIMAL_BID_FORMAT__ if BID decimal floating point is used
13759         instead of DPD.
13760
13761         * doc/install.texi (--enable-decimal-float): Document BID and DPD
13762         options, and that it is enabled for i386/x86_64 systems.
13763
13764         * Makefile.in (enable_decimal_float): New.
13765         (DECNUMFMT): New.
13766         (DECNUMINC): Add  -I$(DECNUMFMT).
13767         (DECNUM_H): Mov decimal32.h, decimal64.h and decimal128.h
13768         to $(DECNUMFMT) from $(DECNUM).
13769
13770         * configure.ac: Support * --enable-decimal-float={no,yes,bid,dpd}.
13771         Substitute enable_decimal_float.
13772         * configure: Regenerated.
13773
13774         PR other/30529
13775         * config/dfp-bit.c (__dec_byte_swap): Use uint32_t instead of
13776         unsigned long.
13777
13778         * configure.ac: Enable decimal float for x86_64-*-linux*.
13779         * configure: Regenerated.
13780
13781         PR other/30530
13782         * dfp.c (decimal_real_arithmetic): Use decimal128FlipSign and
13783         decimal128ClearSign to flip and clear the sign bit in decimal128.
13784         (decimal_real_maxval): Set decimal128SetSign to set the sign
13785         bit in decimal128.
13786
13787 2007-03-23  Ian Lance Taylor  <iant@google.com>
13788
13789         * fold-const.c (fold_binary): Correct warning for X - c >= X.
13790
13791 2007-03-23  Ian Lance Taylor  <iant@google.com>
13792
13793         * tree-dump.c (dump_files): Correct comment.
13794
13795 2007-03-23  Ian Lance Taylor  <iant@google.com>
13796
13797         * tree-vrp.c (operand_less_p): Ignore fold overflow warnings.
13798
13799 2007-03-23  Steven Bosscher  <steven@gcc.gnu.org>
13800
13801         * tracer.c (tracer): Don't take FLAGS argument.  Assert we are
13802         in cfglayout mode.  Don't go into and out of cfglayout mode.
13803         Link the blocks in the order of the constructed traces.
13804         (rest_of_handle_tracer): Adjust call to tracer.
13805         * loop-init.c (rtl_loop_init): Assert we are in cfglayout mode.
13806         Don't go into cfglayout mode.
13807         (rtl_loop_done): Don't go out of cfglayout mode.
13808         * cfglayout.c (relink_block_chain): New function, split out from...
13809         (fixup_reorder_chain): ...here.  Remove redundant checking.
13810         (cfg_layout_finalize): Don't clear the header, footer, and aux
13811         fields here, move the code to do so to relink_block_chain.  Likewise
13812         for free_original_copy_tables.
13813         * rtl.h (tracer): Update prototype.
13814         * bb-reorder.c (reorder_basic_blocks): Don't take FLAGS argument.
13815         Assert we are in cfglayout mode.  Don't go into and out of cfglayout
13816         mode.  Use relink_block_chain to serialize the CFG according to the
13817         new basic block order.  Move targetm.cannot_modify_jumps_p check from
13818         here...
13819         (gate_handle_reorder_blocks): ...to here.
13820         (duplicate_computed_gotos): Move targetm.cannot_modify_jumps_p check
13821         from here...
13822         (gate_duplicate_computed_gotos): ...to here.
13823         (rest_of_handle_reorder_blocks): Don't see if anything has changed,
13824         something always changes when going into and out of cfglayout mode.
13825         Perform an expensive cfg cleanup while going into cfglayout mode.
13826         Always update liveness information on HAVE_conditional_execution
13827         targets.  Reserialize the basic blocks and go out of cfglayout mode.
13828         * reg-stack.c: Include cfglayout.h.
13829         (rest_of_handle_stack_regs): Go into and out of cfglayout mode around
13830         the call to reorder_basic_blocks.
13831         * basic-block.h (reorder_basic_blocks): Update prototype.
13832         (relink_block_chain): New prototype.
13833         * passes.c (pass_outof_cfg_layout_mode): Move after cse2.
13834
13835 2007-03-23  Joseph Myers  <joseph@codesourcery.com>
13836
13837         * config/mips/mips.md (type, hazard, *movdi_32bit,
13838         *movdi_gp32_fp64, *movdi_64bit, *movsi_internal, movcc,
13839         *movhi_internal, *movqi_internal, *movsf_hardfloat,
13840         *movdf_hardfloat_64bit, *movdf_hardfloat_32bit, *movdf_softfloat,
13841         movv2sf_hardfloat_64bit, load_df_low, load_df_high, store_df_high,
13842         mthc1, mfhc1): Change xfer instruction type to mfc and mtc, as
13843         applicable.
13844         (movcc): Change first xfer to multi.
13845         * config/mips/24k.md, config/mips/4100.md, config/mips/4300.md,
13846         config/mips/5000.md, config/mips/5400.md, config/mips/5500.md,
13847         config/mips/5k.md, config/mips/7000.md, config/mips/9000.md,
13848         config/mips/generic.md: Change reservations using "xfer" to use
13849         "mfc,mtc".
13850         * config/mips/sb1.md (ir_sb1_mtxfer): Use "mtc" instead of
13851         using match_operand.
13852         (ir_sb1_mfxfer): Use "mfc" instead of using match_operand.
13853         * config/mips/sr71k.md (ir_sr70_xfer_from): Use "mfc" instead of
13854         examining mode.
13855         (ir_sr70_xfer_to): Use "mtc" instead of examining mode.
13856
13857 2007-03-22  Richard Henderson  <rth@redhat.com>
13858
13859         * config/i386/i386.c: Remove unnecessary function declarations.
13860         Move targetm definition, and all related macros, to the end of
13861         the file.  Resort some functions to put definitions before uses.
13862         (ix86_attribute_table): Make static.  Move to end of file.
13863         (ix86_gimplify_va_arg): Make static.
13864
13865 2007-03-22  Richard Henderson  <rth@redhat.com>
13866
13867         * config/i386/i386.c (ix86_function_regparm): Early exit for 64-bit;
13868         don't increase local_regparm with force_align_arg_pointer check.
13869         (ix86_function_sseregparm): Assert 32-bit.
13870         (type_has_variadic_args_p): New.
13871         (ix86_return_pops_args): Early exit for 64-bit.  Reindent; use
13872         type_has_variadic_args_p.
13873         (ix86_function_arg_regno_p): Use == 0 instead of ! test for eax.
13874         (init_cumulative_args): Remove TARGET_DEBUG_ARG.  Remove zero_cum;
13875         use memset instead.  Do maybe_vaarg check first; skip attribute
13876         tests if true; skip attribute tests for 64-bit.
13877         (construct_container): Remove TARGET_DEBUG_ARG.
13878         (function_arg_advance_32, function_arg_advance_64): Split out ...
13879         (function_arg_advance): ... from here.
13880         (function_arg_32, function_arg_64): Split out ...
13881         (function_arg): ... from here.
13882         (ix86_pass_by_reference): Tidy.
13883         (ix86_function_value_regno_p): Rearrange w/ switch on regno.
13884         (function_value_32): New, from parts of ix86_function_value
13885         and ix86_value_regno.
13886         (function_value_64): New, from parts of ix86_function_value
13887         and ix86_libcall_value.
13888         (ix86_function_value_1): New.
13889         (ix86_function_value, ix86_libcall_value): Use it.
13890         (return_in_memory_32, return_in_memory_64): Split out ...
13891         (ix86_return_in_memory): ... from here.
13892         (ix86_struct_value_rtx): Skip for 64-bit.
13893         (ix86_libcall_value, ix86_value_regno): Remove.
13894         (setup_incoming_varargs_64): Split out ...
13895         (ix86_setup_incoming_varargs): ... from here.
13896         (ix86_va_start): Remove TARGET_DEBUG_ARG.
13897         (legitimate_address_p, legitimize_address): Remove TARGET_DEBUG_ADDR.
13898         * config/i386/i386-protos.h (ix86_function_value): Remove.
13899         * config/i386/i386.opt (TARGET_DEBUG_ADDR, TARGET_DEBUG_ARG): Remove.
13900
13901 2007-03-22  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
13902
13903         PR other/23572
13904         * c-lex.c (interpret_float): On overflow, emit pedantic warning if
13905         infinities not supported, otherwise emit warning if -Woverflow. On
13906         underflow, emit warning if -Woverflow.
13907         * real.c (real_from_string): Return -1 if underflow, +1 if overflow
13908         and 0 otherwise.
13909         * real.h (real_from_string): Update declaration
13910
13911 2007-03-22  Kai Tietz  <kai.tietz@onevision.com>
13912             Richard Henderson  <rth@redhat.com>
13913
13914         * defaults.h (OUTGOING_REG_PARM_STACK_SPACE): Provide default.
13915         * calls.c (compute_argument_block_size, expand_call,
13916         emit_library_call_value_1): Don't ifdef OUTGOING_REG_PARM_STACK_SPACE.
13917         * expr.c (block_move_libcall_safe_for_call_parm): Likewise.
13918         * function.c (STACK_DYNAMIC_OFFSET): Likewise.
13919         * doc/tm.texi (OUTGOING_REG_PARM_STACK_SPACE): Update.
13920         * config/alpha/unicosmk.h, config/bfin/bfin.h, config/iq2000/iq2000.h,
13921         config/mips/mips.h, config/mn10300/mn10300.h, config/mt/mt.h,
13922         config/pa/pa.h, config/rs6000/rs6000.h, config/score/score.h,
13923         config/spu/spu.h, config/v850/v850.h (OUTGOING_REG_PARM_STACK_SPACE):
13924         Set to 1.
13925
13926 2007-03-22  Joseph Myers  <joseph@codesourcery.com>
13927
13928         * c-incpath.c (add_sysroot_to_chain): New.
13929         (merge_include_chains): Add sysroot argument.  Call
13930         add_sysroot_to_chain if sysrooted.
13931         (register_include_chains): Update call to merge_include_chains.
13932         * doc/cppopts.texi: Document use of '=' in include directory
13933         arguments.
13934
13935 2007-03-22  Uros Bizjak  <ubizjak@gmail.com>
13936
13937         * config/i386/i386.md (cmp<mode>): Rename from cmpsf and cmpdf.
13938         Macroize expander using SSEMODEF mode macro.  Use SSE_FLOAT_MODE_P.
13939         (*cmpfp_<mode>): Rename from *cmpfp_sf and *cmpfp_df. Macroize
13940         insn pattern using X87MODEF12 mode macro.
13941
13942 2007-03-21  Seongbae Park <seongbae.park@gmail.com>
13943
13944         * regmove.c (regmove_optimize): Use reg_mentioned_p
13945         instead of reg_overlap_mentioned_p for DST.
13946
13947 2007-03-21  Mike Stump  <mrs@apple.com>
13948
13949         * c.opt: Fixup for Objective-C/C++.
13950
13951 2007-03-21  Steve Ellcey  <sje@cup.hp.com>
13952
13953         * explow.c (convert_memory_address): Fold memory reference when
13954         POINTERS_EXTEND_UNSIGNED < 0
13955
13956 2007-03-21  Richard Henderson  <rth@redhat.com>
13957
13958         PR target/31245
13959         * config/i386/emmintrin.h (__m128i, __m128d): Mark may_alias.
13960         * config/i386/mmintrin.h (__m64): Likewise.
13961         * config/i386/xmmintrin.h (__m128): Likewise.
13962
13963 2007-03-21  Richard Sandiford  <richard@codesourcery.com>
13964
13965         * config/vxworks.h (VXWORKS_ADDITIONAL_CPP_SPEC): Remove -D options.
13966         (VXWORKS_OS_CPP_BUILTINS): Define.
13967         * config/i386/vxworks.h (VXWORKS_CPU_DEFINE): Fold into...
13968         (TARGET_OS_CPP_BUILTINS): ...here.  Use VXWORKS_OS_CPP_BUILTINS.
13969
13970 2007-03-21  Richard Sandiford  <richard@codesourcery.com>
13971
13972         * rtl.h (constant_pool_reference_p): Delete.
13973         (find_constant_src): Declare.
13974         * rtlanal.c (find_constant_src): New function.
13975         * simplify-rtx.c (constant_pool_reference_p): Delete.
13976         * config/i386/i386.md: Use find_constant_src instead of
13977         constant_pool_reference_p/avoid_constant_pool_reference pairs.
13978
13979 2007-03-21  Richard Sandiford  <richard@codesourcery.com>
13980
13981         * doc/invoke.texi (-fpie, -fPIE): Document __pie__ and __PIE__.
13982         * c-cppbuiltin.c (c_cpp_builtins): Define them.
13983
13984 2007-03-20  Mark Mitchell  <mark@codesourcery.com>
13985
13986         * config/arm/elf.h (TARGET_ASM_DESTRUCTOR): Define.
13987         * config/arm/arm.c (arm_elf_asm_cdtor): New function.
13988         (arm_elf_asm_constructor): Use it.
13989         (arm_elf_asm_destructor): New function.
13990
13991 2007-03-20  Bernd Schmidt  <bernd.schmidt@analog.com>
13992
13993         * jump.c (mark_jump_label): Treat SEQUENCE specially.
13994
13995 2007-03-20  Nathan Sidwell  <nathan@codesourcery.com>
13996
13997         * config/vxlib.c (tls_delete_hook): Use TCB for kernel tasks.
13998
13999 2007-03-19  Andrew Haley  <aph@redhat.com>
14000
14001         PR tree-optimization/31264
14002         * tree-vrp.c (register_edge_assert_for_1): Don't look though
14003         VIEW_CONVERT_EXPRs.
14004
14005 2007-03-19  Paolo Bonzini  <bonzini@gnu.org>
14006
14007         PR rtl-optimization/30907
14008         * fwprop.c (forward_propagate_into): Never propagate inside a loop.
14009         (fwprop_init): Always call loop_optimizer_initialize.
14010         (fwprop_done): Always call loop_optimizer_finalize.
14011         (fwprop): We always have loop info now.
14012         (gate_fwprop_addr): Remove.
14013         (pass_fwprop_addr): Use gate_fwprop as gate.
14014
14015         PR rtl-optimization/30841
14016         * df-problems.c (df_ru_local_compute, df_rd_local_compute,
14017         df_chain_alloc): Call df_reorganize_refs unconditionally.
14018         * df-scan.c (df_rescan_blocks, df_reorganize_refs): Change
14019         refs_organized to refs_organized_size.
14020         (df_ref_create_structure): Use refs_organized_size instead of
14021         bitmap_size if refs had been organized, and keep refs_organized_size
14022         up-to-date.
14023         * df.h (struct df_ref_info): Change refs_organized to
14024         refs_organized_size.
14025         (DF_DEFS_SIZE, DF_USES_SIZE): Use refs_organized_size instead of
14026         bitmap_size.
14027
14028 2007-03-19  Mark Mitchell  <mark@codesourcery.com>
14029
14030         * except.c (output_function_exception_table): Do not reference the
14031         EH personality routine for functions that do not require an
14032         exception table.
14033
14034 2007-03-20  Jakub Jelinek  <jakub@redhat.com>
14035
14036         PR c/30762
14037         * c-typeck.c (convert_for_assignment): Call comptypes for
14038         RECORD_TYPE or UNION_TYPE.
14039
14040         PR inline-asm/30505
14041         * reload1.c (reload): Do invalid ASM checking after
14042         cleanup_subreg_operands.
14043
14044 2007-03-19  Jeff Law  <law@redhat.com>
14045
14046         * tree-cfg.c (find_taken_edge): Tighten conditions for
14047         optimizing computed gotos.
14048
14049 2007-03-19  Michael Matz  <matz@suse.de>
14050
14051         * builtins.c (expand_builtin_sync_operation,
14052         expand_builtin_compare_and_swap,
14053         expand_builtin_lock_test_and_set): Care for extending CONST_INTs
14054         correctly.
14055
14056         * config/i386/sync.md (sync_double_compare_and_swapdi_pic,
14057         sync_double_compare_and_swap_ccdi_pic): Use "SD" as constraint
14058         for operand 3.
14059
14060 2007-03-19  Andreas Krebbel  <krebbel1@de.ibm.com>
14061
14062         * doc/tm.texi: Add brackets around the return type of
14063         TARGET_SECONDARY_RELOAD.
14064
14065 2007-03-19  Andrew Pinski  <andrew_pinski@playstation.sony.com>
14066         Richard Guenther  <rguenther@suse.de>
14067
14068         PR tree-optimization/31254
14069         * tree-ssa-forwprop.c (forward_propagate_addr_expr_1):
14070         Use handled_component_p () where appropriate.  Continue
14071         propagating into the rhs if we propagated into an INDIRECT_REF
14072         on the lhs.
14073
14074 2007-03-19  Andreas Krebbel  <krebbel1@de.ibm.com>
14075
14076         * config/s390/s390.md (op_type attribute): RRR instruction type added.
14077         (FP, DFP, SD_SF, DD_DF, TD_TF): New mode macros.
14078         (xde, xdee): Mode attributes adjusted to support DFP modes.
14079         (RRer, f0, op1, Rf, bt, bfp, HALF_TMODE): New mode attributes added.
14080         ("cmp<mode>", "*cmp<mode>_css_0", "*cmp<mode>_ccs", TF move splitters,
14081         DF move splitters, "floatdi<mode>2", "add<mode>3", "*add<mode>3",
14082         "*add<mode>3_cc", "*add<mode>3_cconly", "sub<mode>3", "*sub<mode>3",
14083         "*sub<mode>3_cc", "*sub<mode>3_cconly", "mul<mode>3", "*mul<mode>3",
14084         "div<mode>3", "*div<mode>3", "*neg<mode>2_nocc", "*abs<mode>2_nocc",
14085         "*negabs<mode>2_nocc", "copysign<mode>3"): Adjusted to support DFP
14086         numbers.
14087         ("*movtf_64", "*movtf_31", "*movdf_64dfp", "*movdf_64", "*movdf_31",
14088         "movsf"): Insn definitions removed.
14089         ("*mov<mode>_64", "*mov<mode>_31", "mov<mode>", "*mov<mode>_64dfp",
14090         "*mov<mode>_64", "*mov<mode>_31", "fix_trunc<DFP:mode>di2",
14091         "trunctddd2", "truncddsd2", "extendddtd2", "extendsddd2"): Insn
14092         definitions added.
14093         ("fixuns_truncdddi2", "fixuns_trunctddi2", "mov<mode>",
14094         "reload_in<mode>", "reload_out<mode>"): Expander added.
14095         ("movtf", "movdf", "reload_outtf", "reload_outdf", "reload_intf"):
14096         Expander removed.
14097
14098 2007-03-19  Andreas Krebbel  <krebbel1@de.ibm.com>
14099
14100         * config/s390/s390.md: Only non-functional changes.  Renamed
14101         FPR mode macro to BFP all over the file.
14102
14103 2007-03-19  Andreas Krebbel  <krebbel1@de.ibm.com>
14104
14105         * config/s390/s390.md (UNSPEC_COPYSIGN): New constant.
14106         (op_type attribute): RRF instruction type added.
14107         (fT0): New mode attribute.
14108         ("*movdi_64dfp", "*movdf_64dfp", "*neg<mode>2_nocc", "*abs<mode>2_nocc",
14109         "*negabs<mode>2_nocc", "copysign<mode>3"): Insn definitions added.
14110         * config/s390/s390.h (SECONDARY_MEMORY_NEEDED): Due to a new
14111         instruction no secondary memory is needed when moving DFmode values
14112         between GPRs and FPRs.
14113
14114 2007-03-19  Andreas Krebbel  <krebbel1@de.ibm.com>
14115
14116         * config/s390/s390.opt ("mhard-float", "msoft-float"): Bit value
14117         inverted and documentation adjusted.
14118         ("mhard-dfp", "msoft-dfp"): New options.
14119         * config/s390/s390.c (s390_handle_arch_option): New architecture
14120         switch: z9-ec.
14121         (override_options): Sanity checks for the new options added.
14122         * config.gcc: New architecture switch: z9-ec.
14123         * config/s390/s390.h (processor_flags): PF_DFP added.
14124         (TARGET_CPU_DFP, TARGET_DFP): Macro definitions added.
14125         (TARGET_DEFAULT): Due to the s390.opt changes hard float is enabled
14126         when the bit is NOT set so remove it from the defaults.
14127
14128 2007-03-19  Andreas Krebbel  <krebbel1@de.ibm.com>
14129
14130         * genemit.c (main): Print include statement for dfp.h.
14131         * dfp.h (decimal_real_arithmetic): Hide prototype if tree_code enum
14132         is not available.
14133
14134 2007-03-19  Hans-Peter Nilsson  <hp@axis.com>
14135
14136         * config/cris/t-elfmulti (EXTRA_MULTILIB_PARTS): Do not define here.
14137
14138 2007-03-19  Kaz Kojima  <kkojima@gcc.gnu.org>
14139
14140         PR target/31022
14141         * config/sh/sh.c (sh_adjust_cost): Use the result of single_set
14142         instead of PATTERN.
14143
14144 2007-03-18  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
14145
14146         * pa.c (output_deferred_plabels, output_bb, output_millicode_call,
14147         attr_length_call, output_call, output_indirect_call): Cleanup
14148         formatting of targetm calls.
14149
14150 2007-03-19  Hans-Peter Nilsson  <hp@axis.com>
14151
14152         * config/cris/cris.h (HANDLE_PRAGMA_PACK_PUSH_POP): Define to 1.
14153
14154 2007-03-18  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
14155
14156         * pa.md: Add fpstore_load and store_fpload instruction types.  Provide
14157         reservation, bypass and anti-bypass descriptions for these
14158         instructions.  Update move patterns.
14159         * pa.c (hppa_fpstore_bypass_p): Check for both TYPE_FPSTORE_LOAD and
14160         TYPE_FPSTORE.
14161
14162 2007-03-18  Dorit Nuzman  <dorit@il.ibm.com>
14163
14164         * tree-vect-transform.c (get_initial_def_for_induction): Replace
14165         GET_MODE_NUNITS with TYPE_VECTOR_SUBPARTS.
14166         (get_initial_def_for_reduction): Likewise.
14167
14168 2007-03-16  Daniel Berlin  <dberlin@dberlin.org>
14169
14170         Fix PR tree-optimization/29922
14171         * tree-ssa-pre.c (bb_bitmap_sets): Remove RVUSE_* members.
14172         (get_representative): Removed.
14173         (value_dies_in_block_x): Update for rvuse removal.
14174         (valid_in_sets): Update for renaming of vuses_dies_in_block_x.
14175         (compute_antic_aux): Handle when PHI nodes appear in
14176         non-single-successors.
14177         (dump_bitmap_of_names): Removed.
14178         (compute_antic_safe): Renamed and removed rvuse calculation.
14179         Calculate only antic safe.
14180         (insert_into_preds_of_block): Remove assert.
14181         (execute_pre): Update for renamed functions.
14182         (defer_or_phi_translate_block): New function.
14183
14184 2007-03-17  Kazu Hirata  <kazu@codesourcery.com>
14185
14186         * config/arm/arm.c, config/arm/thumb2.md, config/m68k/m68k.c,
14187         config/spu/spu.c, omega.h, passes.c, predict.c: Fix comment
14188         typos.
14189         * doc/cpp.texi, doc/extend.texi, doc/invoke.texi: Fix typos.
14190         Follow spelling conventions.
14191
14192         * tree-data-ref.h: Remove the prototype for analyze_array.
14193
14194 2007-03-17  Dorit Nuzman  <dorit@il.ibm.com>
14195
14196         PR tree-optimization/31041
14197         * tree-vect-transform.c (get_initial_def_for_induction): Call
14198         force_gimple_operand.
14199
14200 2007-03-17  Olga Golovanevsky  <olga@il.ibm.com>
14201
14202         * ipa-type-escape.c (look_for_casts) : Revert code to use
14203         handled_component_p due to ada test a-numaux.adb.
14204
14205 2007-03-17  Kazu Hirata  <kazu@codesourcery.com>
14206
14207         * final.c (final_scan_insn): Alter the condition of a
14208         conditional trap if we have nonstandard CC.
14209
14210 2007-03-16  Alexandre Oliva  <aoliva@redhat.com>
14211
14212         * configure.ac: Remove excess quoting from asm line 0 test.
14213         * configure: Rebuilt.
14214
14215 2007-03-16  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
14216
14217         * doc/invoke.texi (-Wconversion): Document warnings specific to C++.
14218         * c-common.c (convert_and_check): Move warning logic to...
14219         (warnings_for_convert_and_check): ...here. Define.
14220         * c-common.h (warnings_for_convert_and_check): Declare.
14221
14222 2007-03-16  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
14223
14224         * pa.c (attr_length_call): Partially revert change of 2007-03-09.
14225         (output_call): Likewise.
14226
14227 2007-03-16  Richard Sandiford  <richard@codesourcery.com>
14228
14229         * config/vxworks.h (SUPPORTS_INIT_PRIORITY): Define.
14230
14231 2007-03-16  Richard Sandiford  <richard@codesourcery.com>
14232
14233         * config/vx-common.h (WINT_TYPE, WINT_TYPE_SIZE): Define.
14234
14235 2007-03-16  Uros Bizjak  <ubizjak@gmail.com>
14236
14237         * config/i386/i386.c (override_options): Add PTA_NO_SAHF to k8,
14238         opteron, athlon-64 and athlon-fx processor_alias_table entries.
14239
14240 2007-03-16  Sebastian Pop  <sebastian.pop@inria.fr>
14241
14242         PR tree-optimization/31183
14243         * tree-loop-linear.c (gather_interchange_stats, try_interchange_loops):
14244         Use double_int instead of unsigned int for representing access_strides.
14245         * testsuite/gcc.dg/tree-ssa/pr31183.c: New.
14246
14247 2007-03-16  Richard Guenther  <rguenther@suse.de>
14248
14249         PR tree-optimization/31146
14250         * tree-ssa-forwprop.c (forward_propagate_addr_expr_1): Restructure
14251         to allow recursion of forward_propagate_addr_expr.
14252         (forward_propagate_addr_into_variable_array_index): Likewise.
14253         (forward_propagate_addr_expr): Likewise.
14254         (tree_ssa_forward_propagate_single_use_vars): Likewise.
14255         (forward_propagate_addr_expr_1): Recurse on simple copies
14256         instead of propagating into them.  Do so for useless conversions
14257         as well.
14258         (forward_propagate_addr_expr): Clean up unused statements after
14259         recursion.
14260
14261 2007-03-16  Richard Guenther  <rguenther@suse.de>
14262
14263         * builtins.c (expand_builtin_cexpi): Use the right argument
14264         for the expansion via cexp.
14265
14266 2007-03-16  Alexandre Oliva  <aoliva@redhat.com>
14267
14268         * configure.ac: Don't require ELF binutils to tolerate # 0 "".
14269         * configure: Rebuilt.
14270
14271 2007-03-16  Alexandre Oliva  <aoliva@redhat.com>
14272
14273         PR debug/29906
14274         * dwarf2out.c (force_type_die): Adjust comment.
14275         (dwarf2out_imported_module_or_decl): Handle base AT_import types.
14276
14277 2007-03-15  DJ Delorie  <dj@redhat.com>
14278
14279         * config/frv/predicates.md (minmax_operator): Don't check operands
14280         here.
14281
14282 2007-03-15  Zdenek Dvorak  <dvorakz@suse.cz>
14283
14284         * tree-ssa-loop-niter.c (record_estimate): Add "upper" argument.
14285         Update constant estimates of number of iterations.
14286         (record_nonwrapping_iv): Add "upper" argument.  "data_size_bounds_p"
14287         argument renamed to "realistic".
14288         (compute_estimated_nb_iterations): Removed.
14289         (record_niter_bound): New function.
14290         (idx_infer_loop_bounds): For possible but unlikely tail arrays,
14291         call record_nonwrapping_iv with upper = false.
14292         (infer_loop_bounds_from_signedness): Pass upper argument to
14293         record_nonwrapping_iv.
14294         (estimate_numbers_of_iterations_loop): Do not call
14295         compute_estimated_nb_iterations.  Record estimate based on profile
14296         information.  Initialize the constant estimates of number of
14297         iterations.
14298         * tree-data-ref.c (estimated_loop_iterations): Return the recorded
14299         estimates.
14300         * tree-ssa-loop-prefetch.c (loop_prefetch_arrays): Add dump when
14301         number of iterations is too small.
14302         * cfgloop.h (struct nb_iter_bound): Remove "realistic" field.
14303         (EST_NOT_AVAILABLE): Removed.
14304         (struct loop): Replace estimated_nb_iterations by any_upper_bound,
14305         nb_iterations_upper_bound, any_estimate and nb_iterations_estimate
14306         fields.
14307
14308 2007-03-15  Zdenek Dvorak  <dvorakz@suse.cz>
14309
14310         * tree-ssa-loop-niter.c (refine_bounds_using_guard, bound_difference):
14311         Handle NE_EXPR guards.
14312
14313 2007-03-15  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
14314
14315         PR c++/24924
14316         * c-opts.c (c_common_post_options): Handle C++ post-processing here.
14317         Set also -pedantic-errors by default for the  preprocessor unless
14318         -fpermissive is given.
14319
14320 2007-03-15  Richard Guenther  <rguenther@suse.de>
14321
14322         PR middle-end/29719
14323         PR middle-end/31161
14324         * builtins.c (expand_builtin_cexpi): As a fallback if we
14325         don't have builtins for sincos or cexp create a function
14326         declaration for cexp and expand to a call to that.
14327         (expand_builtin_int_roundingfn): Always fall
14328         back to floor/ceil and its variants even if they may be
14329         not available.
14330
14331 2007-03-15  Steven Bosscher  <steven@gcc.gnu.org>
14332
14333         PR middle-end/31159
14334         * cfglayout.c (fixup_reorder_chain): Postpone deleting dead
14335         jump tables, move the call to delete_dead_jumptables from here...
14336         (cfg_layout_finalize): ...to here.  But rebuild jump labels first.
14337         * cfgrtl.c (cfg_layout_can_merge_blocks_p): When not optimizing,
14338         don't allow merging of blocks that try_redirect_by_replacing_jump
14339         also does not handle when not optimizing.
14340
14341 2007-03-15  Uros Bizjak  <ubizjak@gmail.com>
14342             Francois-Xavier Coudert  <coudert@clipper.ens.fr>
14343
14344         * config/i386/i386.md (x86_sahf_1): Correctly handle
14345         HAVE_AS_IX86_SAHF.
14346
14347 2007-03-15  Uros Bizjak  <ubizjak@gmail.com>
14348
14349         PR target/31167
14350         * config/i386/i386.md (*addti3_1, *addti3_1 splitter): Use
14351         x86_64_general_operand as operand[2] predicate.  Remove "iF"
14352         from operand constraints and use "e" constraint instead.
14353         (*subti3_1, *subti3_1 splitter): Ditto.
14354         (*negti2_1, *negti2_1 splitter): Use nonimmediate_operand as
14355         operand[1] predicate.
14356
14357 2007-03-14  Sebastian Pop  <sebastian.pop@inria.fr>
14358
14359         * tree-loop-linear.c (gather_interchange_stats): For multidimensional
14360         arrays, multiply the access strides by the size of the sub-array.
14361         * testsuite/gcc.dg/tree-ssa/ltrans-5.c: New.
14362
14363 2007-03-14  Uros Bizjak  <ubizjak@gmail.com>
14364
14365         * configure.ac (HAVE_AS_IX86_SAHF): On x86 targets check whether
14366         the configured assembler supports the sahf mnemonic.
14367         * configure: Regenerate.
14368         * config.in: Regenerate.
14369
14370         * config/i386/i386.md (x86_sahf_1): Depending on HAVE_AS_IX86_SAHF,
14371         emit "sahf" or ".byte\t0x9e" as asm template.
14372
14373 2007-03-14  Michael Meissner  <michael.meissner@amd.com>
14374
14375         PR 31018
14376         * config/i386/i386.h (X86_TUNE_SHORTEN_X87_SSE): New tuning
14377         option to replace hard coded TARGET_xxx in md file.
14378         (X86_TUNE_AVOID_VECTOR_DECODE): Ditto.
14379         (X86_TUNE_SLOW_IMUL_IMM32_MEM): Ditto.
14380         (X86_TUNE_SLOW_IMUL_IMM8): Ditto.
14381         (X86_TUNE_MOVE_M1_VIA_OR): Ditto.
14382         (X86_TUNE_NOT_UNPAIRABLE): Ditto.
14383         (X86_TUNE_NOT_VECTORMODE): Ditto.
14384         (TUNE_SHORTEN_X87_SSE): Use new tuning option.
14385         (TUNE_AVOID_VECTOR_DECODE): Ditto.
14386         (TUNE_SLOW_IMUL_IMM32_MEM): Ditto.
14387         (TUNE_SLOW_IMUL_IMM8): Ditto.
14388         (TUNE_MOVE_M1_VIA_OR): Ditto.
14389         (TUNE_NOT_UNPAIRABLE): Ditto.
14390         (TUNE_NOT_VECTORMODE): Ditto.
14391
14392         * config/i386/i386.c (ix86_tune_features): Fill in new tuning
14393         options.
14394
14395         * config/i386/i386.md (fix_trunc?f?1_sse peephole2): Use new
14396         tuning options instead of hard coded TARGET_xxx.
14397         (fix ssemode peephole2's): Ditto.
14398         (imul peephole2's): Ditto.
14399         (movsi_or): Ditto.
14400         (movdi_or_rex64): Ditto.
14401         (move peephole2): Ditto.
14402         (not peephole2's): Ditto.
14403
14404 2007-03-14  Dirk Mueller  <dmueller@suse.de>
14405
14406         * c-common.h (empty_body_warning): Rename to empty_if_body_warning.
14407         * c-common.c (empty_if_body_warning): Rephrase diagnostic message.
14408         * c-parser.c (c_parser_if_body): Always add an empty statement in case
14409         of empty body.
14410         * c-parser.c (c_parser_do_statement): Warn about empty body in
14411         do/while statement.
14412         * c-typeck (c_finish_if_stmt): Call empty_if_body_warning.
14413         * doc/invoke.texi (-Wempty-body): Update documentation.
14414
14415 2007-03-14  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
14416
14417         PR c/21438
14418         * c-common.h (warn_for_div_by_zero): Declare.
14419         * c-common.c (warn_for_div_by_zero): Define.
14420         * c-typeck.c (build_binary_op): Call warn_for_div_zero instead of
14421         warning.
14422
14423 2007-03-14  Richard Sandiford  <richard@codesourcery.com>
14424
14425         * Makefile.in (PREPROCESSOR_DEFINES): Add directory terminators
14426         to PREFIX and STANDARD_PREFIX.
14427
14428 2007-03-14  Richard Sandiford  <richard@codesourcery.com>
14429             Phil Edwards  <phil@codesourcery.com>
14430
14431         * gthr-vxworks.h: Add an extern "C" wrapper for C++.
14432         (__gthread_once_t): Remove busy field for RTPs.
14433         (__GTHREAD_ONCE_INIT): Update accordingly.
14434
14435 2007-03-14  Richard Sandiford  <richard@codesourcery.com>
14436
14437         * doc/invoke.texi: Document VxWorks options.
14438
14439 2007-03-14  Uros Bizjak  <ubizjak@gmail.com>
14440
14441         * doc/invoke.texi (i386 and x86-64 Options): Clarify -msahf option.
14442
14443 2007-03-13  Seongbae Park <seongbae.park@gmail.com>
14444
14445         PR tree-optimization/30590
14446         * tree-nrv.c (tree_nrv): Check for the partial update of the
14447         return value.
14448
14449 2007-03-13  Alexandre Oliva  <aoliva@redhat.com>
14450
14451         * flags.h (flag_random_seed): Remove declaration, in favor of...
14452         * toplev.h (get_random_seed, set_random_seed): ... these.
14453         * tree.c (get_file_function_name): Use the former.
14454         * opts.c (common_handle_option): Use the latter.
14455         * toplev.c
14456
14457 2007-03-13  Steven Bosscher  <steven@gcc.gnu.org>
14458
14459         PR middle-end/31127
14460         * cse.c (cse_find_path): Do not bail out if a basic block that
14461         we already visited now becomes part of a path that starts at a
14462         different basic block.  Just disallow this, to make sure we
14463         visit each basic block at most once.
14464
14465 2007-03-13  Jan Hubicka  <jh@suse.cz>
14466
14467         * ipa-inline.c (cgraph_maybe_hot_edge_p): Look for hot/cold
14468         attributes, when profile esitmate is present, calls with very low
14469         frequency are cold.
14470
14471 2007-03-13  Zdenek Dvorak  <dvorakz@suse.cz>
14472
14473         PR tree-optimization/30730
14474         PR tree-optimization/26900
14475         * tree-ssa-loop-niter.c: Include gmp.h.
14476         (bounds): New type.
14477         (mpz_set_double_int, get_type_bounds, mpz_to_double_int,
14478         split_to_var_and_offset, determine_value_range,
14479         bound_difference_of_offsetted_base, refine_bounds_using_guard,
14480         bound_difference, bounds_add, bounds_negate,
14481         number_of_iterations_ne_max, dump_affine_iv): New functions.
14482         (number_of_iterations_ne, number_of_iterations_lt_to_ne,
14483         assert_loop_rolls_lt, assert_loop_rolls_le): Use bounds on the
14484         difference of initial and final value of control iv to validate
14485         results.
14486         (number_of_iterations_cond): Add loop parameter.  Determine bounds
14487         on the difference of the extremes of the control iv.  Add dumps.
14488         (expand_simple_operations): Handle phi nodes.
14489         (simplify_using_initial_conditions): Do not record used conditions.
14490         (number_of_iterations_exit): Pass loop to number_of_iterations_cond.
14491         Do not set additional_info.
14492         (implies_nonnegative_p, implies_ge_p): Removed.
14493         (derive_constant_upper_bound): Do not use parameter `additional'.
14494         (record_estimate): Parameter `additional' removed.  Parameter
14495         `i_bound' added.  Do not call derive_constant_upper_bound.
14496         (record_nonwrapping_iv): Use derive_constant_upper_bound to
14497         bound the number of iterations estimate.
14498         (estimate_numbers_of_iterations_loop): Pass the estimate from
14499         the number of iterations analysis to record_estimate.
14500         * tree.h (multiple_of_p): Declare.
14501         * tree-scalar-evolution.c (expression_expensive_p): Removed.
14502         (scev_const_prop): Do not check expression_expensive_p.
14503         * fold-const.c (multiple_of_p): Exported.
14504         * double-int.c (double_int_mask): Exported.
14505         * double-int.h (double_int_mask): Declare.
14506         * tree-flow.h (struct tree_niter_desc): Removed additional_info
14507         field.  Added max field.
14508
14509 2007-03-13  David Taylor  <taylor@candd.org>
14510
14511         PR driver/12448:
14512         * gcc.c (cpp_unique_options): If -MT or -MQ is seen, don't pass
14513         default -MQ.
14514
14515 2007-03-13  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
14516
14517         PR target/31123
14518         * pa.md (vdepi_ior): Don't allow zero length deposit.  Likewise for
14519         two unamed patterns.
14520
14521 2007-03-13  Uros Bizjak  <ubizjak@gmail.com>
14522
14523         * config/i386/i386.opt (mcx16, msahf): New options.
14524         * config/i386/i386.c (x86_cmpxchg16b, x86_sahf): Remove.
14525         (ix86_tune_features) [X86_TUNE_USE_SAHF]: Enable for m_GENERIC.
14526
14527         * config/i386/driver-i386.c (bit_LAHF_LM): New define.
14528         (host_detect_local_cpu): Detect cx16 and lahf_lm cpuid bits.
14529         Output -mcx16 and -msahf options when corresponding bit is set.
14530
14531         * doc/invoke.texi (i386 and x86-64 Options): Document -mcx16
14532         and -msahf options.
14533
14534 2007-03-13  Alexandre Oliva  <aoliva@redhat.com>
14535
14536         * configure.ac: Test for assembler tolerance to # 0 "".
14537         * configure, config.in: Rebuilt.
14538         * final.c (final_scan_insn): Emit it if HAVE_AS_LINE_ZERO.
14539
14540 2007-03-13  Geoffrey Keating  <geoffk@apple.com>
14541
14542         * doc/invoke.texi (Spec Files): Update for '%{,' spec.
14543
14544         * config/rs6000/darwin-fallback.c: Compile file only on powerpc.
14545         (handle_syscall): Handle direct system calls.
14546         * config/rs6000/darwin.h (HAS_MD_FALLBACK_FRAME_STATE_FOR): Delete.
14547
14548 2007-03-12  Brooks Moses  <brooks.moses@codesourcery.com>
14549
14550         * doc/invoke.texi: Fix cpp.info cross-reference.
14551         * doc/passes.texi: Fix gcc.info cross-reference.
14552
14553 2007-03-12  Zdenek Dvorak  <dvorakz@suse.cz>
14554
14555         PR tree-optimization/30835
14556         * lambda-code.c (can_convert_to_perfect_nest): Check whether
14557         bb_for_stmt is not NULL before accessing it.
14558
14559 2007-03-12  Joseph Myers  <joseph@codesourcery.com>
14560
14561         * gcc.c (main): Handle target_sysroot_hdrs_suffix being NULL for
14562         some multilibs.
14563
14564 2007-03-12  Brooks Moses  <brooks.moses@codesourcery.com>
14565
14566         PR 30635
14567         * doc/install.texi: Document --enable-stage1-languages
14568
14569 2007-03-12  Steven Bosscher  <steven@gcc.gnu.org>
14570
14571         * tree-pass.h (pass_into_cfg_layout_mode,
14572         pass_outof_cfg_layout_mode): Declare.
14573         * cfglayout.c (into_cfg_layout_mode, outof_cfg_layout_mode,
14574         pass_into_cfg_layout_mode, pass_outof_cfg_layout_mode): New.
14575         * passes.c (pass_into_cfg_layout_mode): Schedule before jump2.
14576         (pass_outof_cfg_layout_mode): Schedule after pass_rtl_ifcvt.
14577
14578 2007-03-12  Seongbae Park <seongbae.park@gmail.com>
14579
14580         * c-decl.c (warn_variable_length_array): New function.
14581         Refactored from grokdeclarator to handle warn_vla
14582         and handle unnamed array case.
14583         (grokdeclarator): Refactored VLA warning case.
14584         * c.opt (Wvla): New flag.
14585         * doc/invoke.texi (Wvla): New warning.
14586
14587 2007-03-12  Richard Henderson  <rth@redhat.com>
14588
14589         * config/alpha/alpha.c (alpha_elf_section_type_flags): New.
14590         (TARGET_SECTION_TYPE_FLAGS): New.
14591
14592 2007-03-12  Richard Henderson  <rth@redhat.com>
14593
14594         * config/darwin.c (machopic_reloc_rw_mask): New.
14595         * config/darwin-protos.h (machopic_reloc_rw_mask): Declare.
14596         * config/darwin.h (TARGET_ASM_RELOC_RW_MASK): New.
14597
14598 2007-03-12  Mark Mitchell  <mark@codesourcery.com>
14599
14600         * cppdefault.c (cpp_EXEC_PREFIX): New variable.
14601         * cppdefault.h (cpp_PREFIX): Document.
14602         (cpp_PREFIX_len): Likewise.
14603         (cpp_EXEC_PREFIX): New variable.
14604         * Makefile.in (PREPROCESSOR_DEFINES): Add STANDARD_EXEC_PREFIX.
14605         * c-incpath.c (add_standard_paths): Correct logic for relocating
14606         paths within prefix.
14607
14608 2007-03-12  Uros Bizjak  <ubizjak@gmail.com>
14609
14610         * config/i386/i386.md (fixuns_trunc<mode>hi2): Implement from
14611         fixuns_truncsfhi2 and fixuns_truncdfhi2 using SSEMODEF
14612         mode macro.
14613         (fix_trunc<mode>di_sse): Implement from fix_truncsfdi_sse and
14614         fix_truncdfdi_sse using SSEMODEF mode macro.
14615         (fix_trunc<mode>si_sse): Implement from fix_truncsfsi_sse and
14616         fix_truncdfsi_sse using SSEMODEF mode macro.
14617         (fix_trunc?f?i_sse peephole2): Implement using SSEMODEF mode macro.
14618         (fix_trunc?f?i_sse K8 peephole2): Fix register constraint.
14619
14620 2007-03-12  Richard Sandiford  <richard@codesourcery.com>
14621
14622         * config.gcc (i[4567]86-wrs-vxworks, i[4567]86-wrs-vxworksae): Add
14623         elfos.h to tm_file.
14624
14625 2007-03-12  Olga Golovanevsky  <olga@il.ibm.com>
14626
14627         * tree.h : Add multiple_of_p declaration.
14628         * fold-const.c (multiple_of_p): Make multiple_of_p public.
14629         * ipa-type-escape.c (results_of_malloc): Redundant.
14630         (visited_stmts): New. Visited stmt for walk_use_def_chains.
14631         (cast_type): Extended with new members.
14632         (check_cast): Returns cast_type.
14633         (cast): New structure for data of walk_use_def_chains.
14634         (is_malloc_result, is_cast_from_non_pointer_1,
14635         is_cast_from_non_pointer,
14636         is_array_access_through_pointer_and_index): New functions.
14637         (look_for_casts): Returns cast types.
14638         (check_call): Returns void.
14639         (okay_pointer_operation): Use support of pointer plus index,
14640         pointer plus constant and allow all multiplications.
14641
14642 2007-03-11  Richard Guenther  <rguenther@suse.de>
14643
14644         PR tree-optimization/31115
14645         * tree-vrp.c (extract_range_from_binary_expr): Make sure
14646         the shift count is positive and non-anti-range for RSHIFT_EXPR.
14647         A shift count of zero is not special as with *_DIV_EXPR.
14648         (vrp_int_const_binop): Handle RSHIFT_EXPR for determining overflow
14649         direction.
14650
14651 2007-03-11  Ian Lance Taylor  <iant@google.com>
14652
14653         * tree-vrp.c (vrp_int_const_binop): Handle PLUS_EXPR and
14654         the *_DIV_EXPR codes correctly with overflow infinities.
14655
14656 2007-03-11  Ira Rosen  <irar@il.ibm.com>
14657
14658         * tree-data-ref.c (analyze_offset): Add a return value (bool) to
14659         indicate success/failure of the analysis. Add negation to subtrahend
14660         in case of subtraction. Fail if both operands contain constants.
14661         (create_data_ref): Fail if analyze_offset fails.
14662
14663 2007-03-11  Uros Bizjak  <ubizjak@gmail.com>
14664
14665         * config/i386/i386.md (frndintxf2): Rename to ...
14666         (rintxf2): ... this. Remove expander having same name.
14667         (rintsf2, rintdf2): Implement using SSEMODEF macro.
14668         (roundsf2, rounddf2): Ditto.
14669         (lrint<mode>di2, lrint<mode>si2): Implement using SSEMODEI24 macro.
14670         (lround<mode>di2, lround<mode>si2): Ditto.
14671
14672 2007-03-11  Steven Bosscher  <steven@gcc.gnu.org>
14673
14674         * lower-subreg.c: Include except.h.
14675         (decompose_multiword_subregs): Verify that the only control flow
14676         insns we can split are loads to multi-words pseudos.
14677         Handle breaking such blocks after splitting, instead of calling
14678         find_many_sub_basic_blocks.
14679
14680         * loop-unroll.c (split_edge_and_insert): Don't set BB_SUPERBLOCK
14681         on the new basic block.  Add a lengthy comment explaining why we
14682         thought this was necessary.
14683         * cfglayout.c (cfg_layout_finalize): Don't break superblocks.
14684
14685 2007-03-10  Mark Mitchell  <mark@codesourcery.com>
14686
14687         PR c++/30924
14688         * tree.c (walk_type_fields): Recurse into the element type of
14689         ARRAY_TYPEs if there is a pointer set.
14690
14691 2007-03-10  Dirk Mueller  <dmueller@suse.de>
14692
14693         * c-common.c (warn_logical_operator): Fix condition.
14694
14695 2007-03-10  Tobias Schl�ter  <tobi@gcc.gnu.org>
14696
14697         * config/i386/darwin.h (DARWIN_MINVERSION_SPEC): Add missing
14698         quotation mark.
14699         * config/darwin.c (machopic_select_section): Remove superfluous
14700         argument in call to categorize_decl_for_section.  Remove unused
14701         variable shlib.
14702
14703 2007-03-10  Joseph Myers  <joseph@codesourcery.com>
14704
14705         * configure.ac (glibc_header_dir): Set using with_build_sysroot if
14706         defined.
14707         * configure: Regenerate.
14708
14709 2007-03-10  Uros Bizjak  <ubizjak@gmail.com>
14710
14711         PR target/31101
14712         * config/i386/i386.md (UNSPEC_C2_FLAG): New constant.
14713         (fpremxf4_i387, fprem1xf4_i387): Use UNSPEC_C2_FLAG.
14714         (fmodxf3, fmod<mode>3, remainderxf3, remainder<mode>3):
14715         Add LABEL_NUSES to emitted label.
14716         * config/i386/i386.c (ix86_emit_fp_unordered_jump): Add
14717         branch probability value to emitted jump insn.
14718         * reg-stack.c (subst_stack_regs_pat)[UNSPEC]: Handle UNSPEC_C2_FLAG.
14719         Do not check life information and do not re-arrange input operands
14720         for UNSPEC_FSCALE_EXP, UNSPEC_FPREM_U and UNSPEC_FPREM1_U.
14721
14722 2007-03-10  Kaz Kojima  <kkojima@gcc.gnu.org>
14723
14724         * config/sh/sh.c (sh_insn_length_adjustment): Adjust for
14725         the change of decode_asm_operands.
14726
14727 2007-03-10  Kaz Kojima  <kkojima@gcc.gnu.org>
14728
14729         * mode-switching.c (create_pre_exit): Skip blockage insn.
14730
14731 2007-03-09  Diego Novillo  <dnovillo@redhat.com>
14732
14733         * tree-pass.h (TODO_update_smt_usage): Remove.
14734         Update all users.
14735         * tree-ssa-forwprop.c (forward_propagate_addr_expr_1): Remove
14736         argument SOME.
14737         Update all users.
14738
14739 2007-03-09  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
14740
14741         * pa.c (attr_length_call): Revise condition for long
14742         pc-relative branch.
14743         (output_call): Use "LONG_PIC_SDIFF" instruction sequence for long
14744         local calls on the SOM target.  Don't use "LONG_PIC_PCREL" call
14745         sequence on SOM target.
14746
14747 2007-03-09  Geoffrey Keating  <geoffk@apple.com>
14748
14749         * gcc.c: Document %{, in big comment at top.
14750         (input_suffix_matches): Remove special handling for .s and
14751         .S.
14752         (input_spec_matches): New.
14753         (handle_braces): Handle %{,.
14754         (validate_switches): ',' indicates a value which is not a switch.
14755         * config/alpha/osf.h (ASM_FINAL_SPEC): Use %{, rather than %{.
14756         to detect assembler input.
14757         * config/i386/sol2.h (CPP_SPEC): Likewise.
14758         * config/rs6000/sysv4.h (ASM_SPEC): Likewise.
14759         * config/rs6000/vxworks.h (ASM_SPEC): Likewise.
14760         * config/rs6000/lynx.h (ASM_SPEC): Likewise.
14761         * config/rs6000/linux64.h (ASM_SPEC_COMMON): Likewise.
14762         * config/i386/darwin.h (DARWIN_MINVERSION_SPEC): Objective-C plus
14763         -m64 causes deployment target to default to 10.5.
14764         * config/rs6000/darwin.h (DARWIN_MINVERSION_SPEC): Likewise.
14765
14766 2007-03-09  Richard Henderson  <rth@redhat.com>
14767
14768         PR target/26090
14769         * target.h (targetm.asm.out.reloc_rw_mask): New.
14770         * target-def.h (TARGET_ASM_RELOC_RW_MASK): New.
14771         (TARGET_ASM_OUT): Use it.
14772         * targhooks.c, targhooks.h (default_reloc_rw_mask): New.
14773         * varasm.c (categorize_decl_for_section): Remove shlib argument;
14774         use the new reloc_rw_mask target hook instead.
14775         (default_section_type_flags_1): Merge into...
14776         (default_section_type_flags): ... here.
14777         (decl_readonly_section_1): Merge into...
14778         (decl_readonly_section): ... here.
14779         (default_elf_select_section_1): Merge into...
14780         (default_elf_select_section): ... here.
14781         (default_unique_section_1): Merge into...
14782         (default_unique_section): ... here.
14783         (compute_reloc_for_rtx_1, compute_reloc_for_rtx): New.
14784         (default_select_rtx_section): Use it.
14785         (default_elf_select_rtx_section): Likewise.
14786         * output.h: Update to match.
14787         * doc/tm.texi (TARGET_ASM_RELOC_RW_MASK): New.
14788         * config/alpha/alpha.c (alpha_elf_reloc_rw_mask): New.
14789         (TARGET_ASM_RELOC_RW_MASK): New.
14790         * config/i386/i386.c (x86_64_elf_select_section): Adjust call
14791         to categorize_decl_for_section.
14792         (x86_64_elf_unique_section): Likewise.
14793         * config/ia64/hpux.h (TARGET_ASM_SELECT_SECTION,
14794         TARGET_ASM_UNIQUE_SECTION, TARGET_ASM_SELECT_RTX_SECTION): Remove.
14795         (TARGET_ASM_RELOC_RW_MASK): New.
14796         * config/ia64/ia64.c (ia64_rwreloc_select_section,
14797         ia64_rwreloc_unique_section, ia64_rwreloc_select_rtx_section): Remove.
14798         (ia64_hpux_reloc_rw_mask, ia64_reloc_rw_mask): New.
14799         (TARGET_RWRELOC): Remove.
14800         (ia64_section_type_flags): Adjust call to default_section_type_flags.
14801         * config/ia64/sysv4.h (TARGET_ASM_RELOC_RW_MASK): New.
14802         * config/rs6000/rs6000.c (rs6000_elf_section_type_flags): Remove.
14803         (rs6000_elf_select_section, rs6000_elf_unique_section): Remove.
14804         (rs6000_elf_reloc_rw_mask, rs6000_xcoff_reloc_rw_mask): New.
14805         (rs6000_xcoff_select_section): Use decl_readonly_section.
14806         (rs6000_xcoff_section_type_flags): Use default_section_type_flags.
14807         * config/rs6000/sysv4.h (TARGET_ASM_RELOC_RW_MASK): New.
14808         (TARGET_ASM_SELECT_SECTION, TARGET_ASM_UNIQUE_SECTION): Remove.
14809         (TARGET_SECTION_TYPE_FLAGS): Remove.
14810         * config/rs6000/xcoff.h (TARGET_ASM_RELOC_RW_MASK): New.
14811
14812 2007-03-09  Roger Sayle  <roger@eyesopen.com>
14813
14814         * fold-const.c (fold_comparison): Remove compile-time evaluation of
14815         complex constant equality/inequality comparisons for here.
14816         (fold_binary) <EQ_EXPR>: Simplify complex comparisons that are
14817         known at compile-time or can be simplified to a scalar comparison.
14818         (fold_relational_const): Move compile-time evaluation of complex
14819         constant equality/inequality comparisons to here.
14820
14821 2007-03-09  Alexandre Oliva  <aoliva@redhat.com>
14822
14823         PR rtl-optimization/30643
14824         * cse.c (cse_insn): Recompute dest_hash after insert_regs for
14825         dest_addr_elt.
14826         (fold_rtx): Recurse, like before 2006-11-03.
14827
14828 2007-03-09  DJ Delorie  <dj@redhat.com>
14829
14830         * config/m32c/t-m32c (m32c-pragma.o): Add TM_H dependency to
14831         m32c-pragma.o.
14832
14833 2007-03-09  Aldy Hernandez  <aldyh@redhat.com>
14834
14835         PR tree-optimization/30375
14836         * tree-ssa-dse.c (dse_possible_dead_store_p): Do not eliminate if
14837         LHS of statements is not the same.
14838         * testsuite/gcc.dg/tree-ssa/ssa-dse-10.c: New.
14839
14840 2007-03-09  Chao-ying Fu  <fu@mips.com>
14841
14842         * doc/extend.texi (MIPS DSP Built-in Functions): Document the DSP
14843         REV 2.
14844         * doc/invoke.texi (-mdspr2): Document new option.
14845         * config/mips/mips.md (UNSPEC_ABSQ_S_QB .. UNSPEC_DPSQX_SA_W_PH):
14846         New unspec for DSP REV 2.
14847         (<u>mulsidi3_32bit_internal): Check if !TARGET_DSPR2, because
14848         these instructions are extended in DSP REV 2.
14849         (mips-dspr2.md): Include.
14850         * config/mips/mips.opt (mdspr2): New option.
14851         * config/mips/mips.c (mips_function_type): Add MIPS_V4QI_FTYPE_V4QI,
14852         MIPS_SI_FTYPE_SI_SI_SI, MIPS_DI_FTYPE_DI_USI_USI, MIPS_DI_FTYPE_SI_SI,
14853         MIPS_DI_FTYPE_USI_USI, MIPS_V2HI_FTYPE_SI_SI_SI.
14854         (override_options): Check TARGET_DSPR2 to enable MASK_DSP.
14855         (CODE_FOR_mips_mul_ph): Define it to CODE_FOR_mulv2hi3.
14856         (dsp_bdesc): Add DSP REV 2 builtins.  Remove 32-bit only DSP builtins.
14857         (dsp_32only_bdesc): New description table for 32-bit only DSP REV 1
14858         and 2 builtins.
14859         (bdesc_map): Add one field of unsupported_target_flags.
14860         (bdesc_arrays):  Update entries to have extra fields.  Add
14861         dsp_32only_bdesc.
14862         (mips_init_builtins): Initialize new function types.
14863         Check unsupported_target_fileds to filter out builtins.
14864         * config/mips/mips.h (TARGET_CPU_CPP_BUILTINS): Define __mips_dspr2 if
14865         TARGET_DSPR2.
14866         (ASM_SPEC): Pass mdspr2 to the assembler.
14867         * config/mips/mips-dspr2.md: New file.
14868
14869 2007-03-09  Sa Liu  <saliu@de.ibm.com>
14870
14871         * config/rs6000/altivec.md: Fix vcond patterns using if_then_else.
14872
14873 2007-03-09  Ian Lance Taylor  <iant@google.com>
14874
14875         * opts.c (common_handle_option): Treat -Wstrict-overflow (with no
14876         argument) like -Wstrict-overflow=2.
14877         * doc/invoke.texi (Warning Options): Update documentation.
14878
14879 2007-03-09  Dirk Mueller  <dmueller@suse.de>
14880
14881         PR c++/17946
14882         * doc/invoke.texi (-Wlogical-op): Document.
14883         * common.opt (-Wlogical-op): New.
14884         * c-common.h (warn_logical_operator): Declare.
14885         * c-common.c (warn_logical_operator): Define.
14886         * c-typeck.c (parser_build_binary_op): Call
14887         warn_logical_operator.
14888
14889 2007-03-09  Alexandre Oliva  <aoliva@redhat.com>
14890
14891         * rtl.h (gen_rtx_ASM_INPUT): Use "" instead of NULL file name.
14892         * final.c (final_scan_insn): Test for non-"" file name.
14893
14894 2007-03-09  Sebastian Pop  <sebastian.pop@inria.fr>
14895
14896         * doc/loop.texi: Document the Omega linear constraints solver.
14897         * doc/invoke.texi: Document -fcheck-data-deps, omega-max-vars,
14898         omega-max-geqs, omega-max-eqs, omega-max-wild-cards,
14899         omega-hash-table-size, omega-max-keys, and
14900         omega-eliminate-redundant-constraints.
14901         * tree-pass.h (pass_check_data_deps): Declared.
14902         * omega.c: New.
14903         * omega.h: New.
14904         * timevar.def (TV_CHECK_DATA_DEPS): Declared.
14905         * tree-ssa-loop.c (check_data_deps, gate_check_data_deps,
14906         pass_check_data_deps): New.
14907         * tree-data-ref.c (init_data_ref): Remove declaration.
14908         (dump_data_dependence_relation): Dump DDR_INNER_LOOP.
14909         (analyze_array): Renamed init_array_ref, move up initializations.
14910         (init_data_ref): Renamed init_pointer_ref.  Moved before its call.
14911         Removed arguments that are set to NULL.
14912         (analyze_indirect_ref): Correct indentation, correct call to
14913         init_pointer_ref.
14914         (object_analysis): Call init_array_ref instead of analyze_array.
14915         (initialize_data_dependence_relation): Initialize DDR_INNER_LOOP.
14916         (access_functions_are_affine_or_constant_p): Use DR_ACCESS_FNS instead
14917         of DR_ACCESS_FNS_ADDR.
14918         (init_omega_eq_with_af, omega_extract_distance_vectors,
14919         omega_setup_subscript, init_omega_for_ddr_1, init_omega_for_ddr,
14920         ddr_consistent_p): New.
14921         (compute_affine_dependence): Check consistency of ddrs when
14922         flag_check_data_deps is passed.
14923         (analyze_all_data_dependences): Uncomment.
14924         (tree_check_data_deps): New.
14925         * tree-data-ref.h: Include omega.h.
14926         (DR_ACCESS_FNS_ADDR): Removed.
14927         (data_dependence_relation): Add inner_loop.
14928         (DDR_INNER_LOOP): New.
14929         * common.opt (fcheck-data-deps): New.
14930         * tree-flow.h (tree_check_data_deps): Declare.
14931         * Makefile.in (TREE_DATA_REF_H): Depend on omega.h.
14932         (OBJS-common): Depend on omega.o.
14933         (omega.o): Define.
14934         * passes.c (pass_check_data_deps): Scheduled.
14935         * params.def (PARAM_OMEGA_MAX_VARS, PARAM_OMEGA_MAX_GEQS,
14936         PARAM_OMEGA_MAX_EQS, PARAM_OMEGA_MAX_WILD_CARDS,
14937         PARAM_OMEGA_HASH_TABLE_SIZE, PARAM_OMEGA_MAX_KEYS,
14938         PARAM_VECT_MAX_VERSION_CHECKS,
14939         PARAM_OMEGA_ELIMINATE_REDUNDANT_CONSTRAINTS): New.
14940
14941 2007-03-09  Richard Guenther  <rguenther@suse.de>
14942
14943         PR tree-optimization/30904
14944         PR middle-end/31058
14945         * tree-vrp.c (extract_range_from_binary_expr): Handle RSHIFT_EXPR
14946         the same way as *_DIV_EXPR.
14947
14948 2007-03-09  Alexandre Oliva  <aoliva@redhat.com>
14949
14950         * recog.c (decode_asm_operands): No mixed declarations and code.
14951
14952 2007-03-09  Alexandre Oliva  <aoliva@redhat.com>
14953
14954         * rtl.def (ASM_INPUT): Add location.
14955         * rtl.h (ASM_INPUT_SOURCE_LOCATION): New.
14956         (ASM_INPUT_SOURCE_FILE, ASM_INPUT_SOURCE_LINE): New.
14957         (decode_asm_operands): Add loc operand.
14958         (gen_rtx_ASM_INPUT, gen_rtx_ASM_INPUT_loc): Define.
14959         * stmt.c (expand_asm): Rename to...
14960         (expand_asm_loc): ... this.  Add locus argument.  Pass it on to
14961         gen_rtx_ASM_INPUT_loc.
14962         (expand_asm_expr): Adjust.
14963         * recog.c (decode_asm_operands): Add loc operand.
14964         (check_asm_operands, extract_insn): Adjust.
14965         * reload1.c (maybe_fix_stack_asms): Likewise.
14966         * final.c (asm_insn_count): Likewise.
14967         (final_scan_insn): Output # line before and after asm.
14968
14969 2007-03-09  Daniel Berlin  <dberlin@dberlin.org>
14970
14971         * tree-ssa-structalias.c (variable_info): Remove
14972         finished_solution.
14973         (new_var_info): Ditto.
14974         (shared_bitmap_info_t): New structure.
14975         (shared_bitmap_table): New variable.
14976         (shared_bitmap_hash): New function.
14977         (shared_bitmap_eq): Ditto
14978         (shared_bitmap_lookup): Ditto.
14979         (shared_bitmap_add): Ditto.
14980         (merge_smts_into): Change to take bitmap directly.
14981         (find_what_p_points_to): Rewrite to use shared bitmap hashtable.
14982         (init_alias_vars): Init shared bitmap hashtable.
14983         (delete_points_to_sets): Delete shared bitmap hashtable.
14984         * tree-ssa-operands.c (add_virtual_operand): Partially revert the
14985         is_aliased removal as a change that was still necessary was
14986         deleted.
14987
14988 2007-03-09  Uros Bizjak  <ubizjak@gmail.com>
14989
14990         * config/i386/i386.h (override_options): Conditionally disable
14991         x86_sahf for 64bit targets only.
14992
14993 2007-03-08  Andrew Pinski  <andrew_pinski@playstation.sony.com>
14994
14995         PR C/31072
14996         * c-decl.c (merge_decls): Don't call make_var_volatile.
14997         * varasm.c (make_var_volatile): Remove.
14998         * output.h (make_var_volatile): Remove.
14999
15000 2007-03-08  Zdenek Dvorak  <dvorakz@suse.cz>
15001
15002         PR tree-optimization/31085
15003         * tree-ssa-address.c (create_mem_ref): Fix test of type of base.
15004
15005 2007-03-08  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
15006
15007         * builtins.def (lceil, lceilf, lceill, lfloor, lfloorf, lfloorl,
15008         llceil, llceilf, llceill, llfloor, llfloorf, llfloorl): Mark with
15009         ATTR_CONST_NOTHROW_LIST.
15010
15011         * fold-const.c (tree_expr_nonnegative_warnv_p): Handle
15012         FIX_TRUNC_EXPR.
15013
15014 2007-03-08  Diego Novillo  <dnovillo@redhat.com>
15015
15016         * doc/tree-ssa.texi: Remove documentation for V_MUST_DEF.
15017
15018 2007-03-08  Geoffrey Keating  <geoffk@apple.com>
15019
15020         PR 31013
15021         * gccspec.c (lang_specific_driver): Do nothing when NEXT_OBJC_RUNTIME
15022         is declared.
15023         * config/darwin.h (REAL_LIBGCC_SPEC): When -fgnu-runtime is
15024         passed, use shared libgcc.
15025
15026 2007-03-08  Roger Sayle  <roger@eyesopen.com>
15027
15028         * tree-eh.c (do_return_redirection): Call build_gimple_modify_stmt
15029         instead of calling build2 with a GIMPLE_MODIFY_STMT.
15030         (honor_protect_cleanup_actions, lower_try_finally_switch):
15031         Likewise.
15032         * tree-if-conv.c (replace_phi_with_cond_gimple_modify_stmt,
15033         ifc_temp_var): Likewise.
15034         * tree-inline.c (setup_one_parameter): Likewise.
15035         * tree-mudflap.c (mf_decl_cache_locals,
15036         mf_build_check_statement_for): Likewise.
15037         * tree-nested.c (init_tmp_var, save_tmp_var,
15038         finalize_nesting_tree_1): Likewise.
15039         * tree-outof-ssa.c (insert_copy_on_edge,
15040         insert_backedge_copies): Likewise.
15041         * tree-profile.c (tree_gen_edge_profiler,
15042         tree_gen_ic_profiler): Likewise.
15043         * tree-scalar-evolution.c (scev_const_prop): Likewise.
15044         * tree-sra.c (sra_build_assignment): Likewise.
15045         * tree-ssa-loop-im.c (determine_invariantness_stmt): Likewise.
15046         * tree-ssa-math-opts.c (insert_reciprocals,
15047         execute_cse_sincos_1): Likewise.
15048         * tree-tailcall.c (adjust_accumulator_values,
15049         adjust_return_value): Likewise.
15050         * tree-vect-patterns.c (vect_pattern_recog_1): Likewise.
15051         * tree-vect-transform.c (vect_create_data_ref_ptr,
15052         bump_vector_ptr, vect_init_vector, get_initial_def_for_induction,
15053         vect_create_epilog_for_reduction, vectorizable_reduction,
15054         vectorizable_call, vectorizable_conversion,
15055         vectorizable_assignment, vectorizable_operation,
15056         vectorizable_type_demotion, vect_gen_widened_results_half,
15057         vect_permute_store_chain, vectorizable_store,
15058         vect_setup_realignment, vect_permute_load_chain,
15059         vectorizable_load, vectorizable_condition,
15060         vect_create_cond_for_align_checks): Likewise.
15061         * tree-vrp.c (build_assert_expr_for): Likewise.
15062
15063 2007-03-08  Ian Lance Taylor  <iant@google.com>
15064
15065         * tree-vrp.c: Include "intl.h".
15066         (usable_range_p): New static function.
15067         (compare_values_warnv): Don't test TYPE_OVERFLOW_UNDEFINED for
15068         overflowed values, juts set *strict_overflow_p.
15069         (compare_values): Only return -2 if one of the operands is not a
15070         constant.
15071         (compare_ranges): Call usable_range_p.
15072         (compare_range_with_value): Likewise.
15073         (vrp_evaluate_conditional_warnv): Rename from
15074         vrp_evaluate_conditional.  Make static.  Change all callers.
15075         (vrp_evaluate_conditional): New function.
15076         (simplify_div_or_mod_using_ranges): Issue warning about reliance
15077         on signed overflow.
15078         (simplify_abs_using_ranges): Likewise.
15079         (simplify_stmt_for_jump_threading): Add within_stmt parameter.
15080         * tree-ssa-dom.c (simplify_stmt_for_jump_threading): Add
15081         within_stmt parameter.
15082         * tree-ssa-propagate.c (fold_predicate_in): Update call to
15083         vrp_evaluate_conditional.
15084         * tree-ssa-threadedge.c
15085         (record_temporary_equivalences_from_stmts_at_dest): Change
15086         simplify parameter to take a second tree parameter.
15087         (simplify_control_stmt_condition): Likewise.
15088         (thread_across_edge): Likewise.
15089         * tree-flow.h (vrp_evaluate_conditional): Update declaration.
15090         (thread_across_edge): Likewise.
15091         * Makefile.in (tree-vrp.o): Depend upon intl.h.
15092
15093 2007-03-08  Uros Bizjak  <ubizjak@gmail.com>
15094
15095         * config/i386/i386.h (TARGET_SAHF): New define.
15096         * config/i386/i386.c (ix86_tune_features) [X86_TUNE_USE_SAHF]:
15097         Also enable for m_K8, m_AMDFAM10 and m_CORE2.
15098         (x86_sahf): New global variable.
15099         (override_options): Add PTA_NO_SAHF to pta_flags enum.  Recode
15100         pta_flags masks using shifts.  Add PTA_NO_SAHF to x86_64 and
15101         nocona processor flags.  Set x86_sahf when PTA_NO_SAHF is not set
15102         in processor flags.  Do not unconditionally disable TARGET_USE_SAHF
15103         for 64-bit.
15104         (ix86_fp_comparison_sahf_cost): Return high value for !TARGET_SAHF.
15105         (ix86_expand_fp_compare): Check for TARGET_CMOVE or TARGET_SAHF
15106         when expanding fcomi/sahf based tests.
15107         (ix86_emit_fp_unordered_jump): Check for TARGET_SAHF when
15108         expanding sahf based alternative. Emit sahf based sequence when
15109         optimizing for code size.
15110         * config/i386/i386.md (x86_sahf_1): Do not disable for
15111         TARGET_64BIT, enable for TARGET_SAHF.
15112
15113 2007-03-08  Martin Michlmayr  <tbm@cyrius.com>
15114
15115         * tree-ssa-coalesce.c (fail_abnormal_edge_coalesce): Remove
15116         spurious whitespace from error message.
15117
15118 2007-03-08  Volker Reichelt  <reichelt@netcologne.de>
15119
15120         PR c++/30852
15121         * c-common.c (fold_offsetof_1): Handle COMPOUND_EXPR.
15122
15123 2007-03-08  Alexandre Oliva  <aoliva@redhat.com>
15124
15125         * c-decl.c (grokdeclarator): Disable warnings for anonymous
15126         bitfields.
15127         * tree-sra.c (instantiate_element): Propagate disabled warnings
15128         from the element itself to the created variable.
15129
15130 2007-03-07  Richard Henderson  <rth@redhat.com>
15131
15132         PR target/30848
15133         * reg-stack.c (emit_swap_insn): If a malformed asm was seen,
15134         silently fix up the stack in the case of a missing register.
15135
15136 2007-03-07  Paul Brook  <paul@codesourcery.com>
15137
15138         * config/arm/libunwind.S: Add .arch/.object_arch for armv4 builds.
15139
15140 2007-03-07  Joseph Myers  <joseph@codesourcery.com>
15141
15142         * config/arm/unwind-arm.c (struct wmmxd_regs, struct wmmxc_regs):
15143         New.
15144         (phase1_vrs): Use them.
15145         (DEMAND_SAVE_WMMXD, DEMAND_SAVE_WMMXC): New.
15146         (__gnu_Unwind_Save_WMMXD, __gnu_Unwind_Restore_WMMXD,
15147         __gnu_Unwind_Save_WMMXC, __gnu_Unwind_Restore_WMMXC): Declare.
15148         (restore_non_core_regs): Call __gnu_Unwind_Restore_WMMXD and
15149         __gnu_Unwind_Restore_WMMXC if required.
15150         (_Unwind_VRS_Pop): Implement iWMMXt support.
15151         * config/arm/libunwind.S (gnu_Unwind_Restore_WMMXD,
15152         gnu_Unwind_Save_WMMXD, gnu_Unwind_Restore_WMMXC,
15153         gnu_Unwind_Save_WMMXC): Define.
15154
15155 2007-03-07  Richard Sandiford  <richard@codesourcery.com>
15156
15157         * config/vxworks.h (vxworks_override_options): Declare.
15158         (VXWORKS_OVERRIDE_OPTIONS): Use it.
15159         * config/vxworks.c: Include target.h and toplev.h.
15160         (vxworks_override_options): New function.
15161         * config/t-vxworks (vxworks.o): Depend on $(TARGET_H) and toplev.h.
15162
15163 2007-03-07  Andreas Krebbel  <krebbel1@de.ibm.com>
15164
15165         * config/s390/s390.c (override_options): Don't emit an error when
15166         -mstack-size is used without providing -mstack-guard.
15167         (s390_emit_prologue): Choose stack_guard value automatically if not
15168         provided via command line.
15169         * doc/invoke.texi: Adjust description of -mstack-guard and
15170         -mstack-size.
15171
15172 2007-03-07  Richard Sandiford  <richard@codesourcery.com>
15173
15174         * config/i386/i386.c (output_set_got): Add a GOT initialization
15175         sequence for VxWorks PIC.
15176         (legitimate_pic_address_disp_p): Allow UNSPEC_GOT wrappers
15177         around labels as well as symbols.  Use gotoff_operand instead
15178         of local_symbolic_operand.
15179         (legitimize_pic_address): Use gotoff_operand instead of
15180         local_symbolic_operand.  Use @GOT accesses for labels as
15181         well as symbols.
15182         (ix86_output_addr_diff_elt): Use PC-relative rather than
15183         GP-relative offsets for VxWorks PIC.
15184         (ix86_expand_move): Pass NULL_RTX to legitimize_pic_address unless
15185         no_new_pseudos.  Check whether the returned register is op0.
15186         * config/i386/i386.md (tablejump): Use PC-relative rather than
15187         GP-relative offsets for VxWorks PIC.
15188         * config/i386/predicates.md (gotoff_operand): New predicate.
15189
15190 2007-03-06  Richard Sandiford  <richard@codesourcery.com>
15191
15192         * config/vxworks.h (VXWORKS_GOTT_BASE, VXWORKS_GOTT_INDEX): Undefine
15193         before defining.
15194         * config/vxworks-dummy.h: New file.
15195         * config/i386/i386.h: Include it.
15196
15197 2007-03-07  Alexandre Oliva  <aoliva@redhat.com>
15198
15199         * dwarf2out.c (is_inlined_entry_point): New
15200         (add_high_low_attributes): Emit DW_AT_entry_pc along with
15201         DW_AT_ranges if the first subblock is the entry point.
15202
15203 2007-03-06  David Daney  <ddaney@avtrex.com>
15204
15205         * doc/install.texi (mips-*-*): Change recommended binutils
15206         version.
15207
15208 2007-03-06  Anatoly Sokolov <aesok@post.ru>
15209
15210         * config/avr/avr.c (avr_mcu_types): Add support for ATmega325P,
15211         ATmega3250P, ATmega329P, ATmega3290P, AT90USB82 and AT90USB162
15212         devices.
15213         * config/avr/avr.h (LINK_SPEC, CRT_BINUTILS_SPECS): (Ditto.).
15214         * config/avr/t-avr (MULTILIB_MATCHES): (Ditto.).
15215
15216 2007-03-06  Jan Hubicka  <jh@suse.cz>
15217
15218         * errors.h (warning, error, fatal, internal_error): Mark as cold.
15219         * predict.c (maybe_hot_bb): Cold functions are never hot; hot
15220         functions are hot.
15221         (probably_cold_bb_p): Cold functions are cold.
15222         (probably_never_executed_bb_p): Cold functions are cold.
15223         (tree_bb_level_predictions): Predict calls to cold functions as not
15224         taken.
15225         (compute_function_frequency): Check hot/cold attributes.
15226         * function.h (function_frequency): Update comments.
15227         * predict.def (PRED_COLD_FUNCTION): Predict cold function.
15228         * c-common.c (handle_hot_attribute, handle_cold_attribute): New.
15229         (c_common_att): Add cold and hot.
15230
15231         * doc/extend.texi (hot,cold attributes): Document.
15232
15233 2007-03-06  Andrew Haley  <aph@redhat.com>
15234
15235         * function.c (expand_function_end): Move blockage to just after we
15236         emit the label for the naked return from the function.
15237
15238 2007-03-06  Richard Sandiford  <richard@codesourcery.com>
15239
15240         * config/i386/att.h (ASM_OUTPUT_ASCII, ASM_OUTPUT_SKIP): Undefine
15241         before redefining.
15242
15243 2007-03-06  Jan Hubicka  <jh@suse.cz>
15244
15245         * reg-stack.c (reg_to_stack): Large models don't allow NAN to be
15246         loaded for constant large models.  Non-large 64bit PIC can do.
15247         * i386.h (CASE_VECTOR_MODE): Large PIC cases are 64bit.
15248         * cmodel.h: Add LARGE PIC.
15249         * i386.md (UNSPEC_PLTOFF): New.
15250         (UNSPEC_SET_RIP, UNSPEC_SET_GOT_OFFSET): New; renumber other
15251         unspecs as needed.
15252         (*call_1_rex64): Disable for large models.
15253         (*call_1_rex64_large): New.
15254         (*call_value_1_rex64): Disable for large models.
15255         (*call_value_1_rex64_large): New.
15256         (set_rip_rex4): New.
15257         (set_got_offset_rex64): New.
15258         * predicates.md (constant_call_address_operand): For large model
15259         constant calls are not possible.
15260         * i386-protos.h (construct_plt_address): Declare.
15261         * i386.c (override_options): Accept large models.
15262         (ix86_expand_prologue): Expand large PIC GOT pointer load.
15263         (legitimate_constant_p): Add new UNSPECs.
15264         (legitimate_pic_operand_p): Likewise.
15265         (legitimate_pic_address_disp_p): Disallow local symbols for large PICs.
15266         (legitimize_pic_address): Do easy RIP relative way for TLS only for
15267         non-large model.
15268         (output_pic_addr_const): Add PLTOFF.
15269         (ix86_output_addr_diff_elt): Output 64bit tables when needed.
15270         (ix86_expand_move): Legitimize pic address when in PIC mode.
15271         (construct_plt_address): New function.
15272         (ix86_expand_call): Offload the address to register and use GOT
15273         pointer for large model.
15274         * invoke.texi (mcmodel=large): Update documentation.
15275
15276 2007-03-06  Richard Henderson  <rth@redhat.com>
15277
15278         * config/i386/i386.c (x86_use_leave, x86_push_memory,
15279         x86_zero_extend_with_and, x86_movx, x86_double_with_add,
15280         x86_use_bit_test, x86_unroll_strlen, x86_deep_branch,
15281         x86_branch_hints, x86_use_sahf, x86_partial_reg_stall,
15282         x86_partial_flag_reg_stall, x86_use_himode_fiop, x86_use_simode_fiop,
15283         x86_use_mov0, x86_use_cltd, x86_read_modify_write, x86_read_modify,
15284         x86_split_long_moves, x86_promote_QImode, x86_fast_prefix,
15285         x86_single_stringop, x86_qimode_math, x86_promote_qi_regs,
15286         x86_himode_math, x86_promote_hi_regs, x86_sub_esp_4, x86_sub_esp_8,
15287         x86_add_esp_4, x86_add_esp_8, x86_integer_DFmode_moves,
15288         x86_partial_reg_dependency, x86_memory_mismatch_stall,
15289         x86_prologue_using_move, x86_epilogue_using_move, x86_shift1,
15290         x86_sse_partial_reg_dependency, x86_sse_split_regs,
15291         x86_sse_unaligned_move_optimal, x86_sse_typeless_stores,
15292         x86_sse_load0_by_pxor, x86_use_ffreep, x86_use_incdec,
15293         x86_inter_unit_moves, x86_ext_80387_constants, x86_four_jump_limit,
15294         x86_schedule, x86_use_bt, x86_pad_returns,
15295         x86_use_xchgb): Merge into ...
15296         (ix86_tune_features): ... here.  New array.
15297         (x86_cmove, x86_cmpxchg, x86_cmpxchg8b, x86_xadd,
15298         x86_bswap): Merge into ...
15299         (ix86_arch_features): ... here.  New array.
15300         (x86_3dnow_a): Remove.
15301         (x86_accumulate_outgoing_args): Make static.
15302         (x86_arch_always_fancy_math_387): Make static.
15303         (ix86_tune_mask, ix86_arch_mask): Move ...
15304         (override_options): ... to local variables here.  Apply the
15305         appropriate mask to each element of ix86_arch_features and
15306         ix86_tune_features.  Adjust TARGET_CMOVE and TARGET_USE_SAHF
15307         as were done in the old macros.
15308         (standard_80387_constant_p): Use TARGET_EXT_80387_CONSTANTS.
15309         * config/i386/i386.h (x86_use_leave, x86_push_memory,
15310         x86_zero_extend_with_and, x86_use_bit_test, x86_cmove, x86_deep_branch,
15311         x86_branch_hints, x86_unroll_strlen, x86_double_with_add,
15312         x86_partial_reg_stall, x86_movx, x86_use_himode_fiop,
15313         x86_use_simode_fiop, x86_use_mov0, x86_use_cltd, x86_use_xchgb,
15314         x86_read_modify_write, x86_read_modify, x86_split_long_moves,
15315         x86_promote_QImode, x86_single_stringop, x86_fast_prefix,
15316         x86_himode_math, x86_qimode_math, x86_promote_qi_regs,
15317         x86_promote_hi_regs, x86_integer_DFmode_moves, x86_add_esp_4,
15318         x86_add_esp_8, x86_sub_esp_4, x86_sub_esp_8,
15319         x86_partial_reg_dependency, x86_memory_mismatch_stall,
15320         x86_accumulate_outgoing_args, x86_prologue_using_move,
15321         x86_epilogue_using_move, x86_decompose_lea,
15322         x86_arch_always_fancy_math_387, x86_shift1,
15323         x86_sse_partial_reg_dependency, x86_sse_split_regs,
15324         x86_sse_unaligned_move_optimal, x86_sse_typeless_stores,
15325         x86_sse_load0_by_pxor, x86_use_ffreep, x86_inter_unit_moves,
15326         x86_schedule, x86_use_bt, x86_cmpxchg, x86_cmpxchg8b, x86_xadd,
15327         x86_use_incdec, x86_pad_returns, x86_bswap,
15328         x86_partial_flag_reg_stall): Remove.
15329         (enum ix86_tune_indices): New.
15330         (ix86_tune_features): New.
15331         (TARGET_USE_LEAVE, TARGET_PUSH_MEMORY, TARGET_ZERO_EXTEND_WITH_AND,
15332         TARGET_USE_BIT_TEST, TARGET_UNROLL_STRLEN,
15333         TARGET_DEEP_BRANCH_PREDICTION, TARGET_BRANCH_PREDICTION_HINTS,
15334         TARGET_DOUBLE_WITH_ADD, TARGET_USE_SAHF, TARGET_MOVX,
15335         TARGET_PARTIAL_REG_STALL, TARGET_PARTIAL_FLAG_REG_STALL,
15336         TARGET_USE_HIMODE_FIOP, TARGET_USE_SIMODE_FIOP, TARGET_USE_MOV0,
15337         TARGET_USE_CLTD, TARGET_USE_XCHGB, TARGET_SPLIT_LONG_MOVES,
15338         TARGET_READ_MODIFY_WRITE, TARGET_READ_MODIFY, TARGET_PROMOTE_QImode,
15339         TARGET_FAST_PREFIX, TARGET_SINGLE_STRINGOP, TARGET_QIMODE_MATH,
15340         TARGET_HIMODE_MATH, TARGET_PROMOTE_QI_REGS, TARGET_PROMOTE_HI_REGS,
15341         TARGET_ADD_ESP_4, TARGET_ADD_ESP_8, TARGET_SUB_ESP_4,
15342         TARGET_SUB_ESP_8, TARGET_INTEGER_DFMODE_MOVES,
15343         TARGET_PARTIAL_REG_DEPENDENCY, TARGET_SSE_PARTIAL_REG_DEPENDENCY,
15344         TARGET_SSE_UNALIGNED_MOVE_OPTIMAL, TARGET_SSE_SPLIT_REGS,
15345         TARGET_SSE_TYPELESS_STORES, TARGET_SSE_LOAD0_BY_PXOR,
15346         TARGET_MEMORY_MISMATCH_STALL, TARGET_PROLOGUE_USING_MOVE,
15347         TARGET_EPILOGUE_USING_MOVE, TARGET_SHIFT1, TARGET_USE_FFREEP,
15348         TARGET_INTER_UNIT_MOVES, TARGET_FOUR_JUMP_LIMIT, TARGET_SCHEDULE,
15349         TARGET_USE_BT, TARGET_USE_INCDEC, TARGET_PAD_RETURNS,
15350         TARGET_EXT_80387_CONSTANTS): Use it.
15351         (enum ix86_arch_indices): New.
15352         (ix86_arch_features): New.
15353         (TARGET_CMOVE, TARGET_CMPXCHG, TARGET_CMPXCHG8B, TARGET_XADD,
15354         TARGET_BSWAP): Use it.
15355         (ix86_tune_mask, ix86_arch_mask): Remove.
15356
15357 2007-03-06  Joseph Myers  <joseph@codesourcery.com>
15358
15359         PR bootstrap/31020
15360         * configure.ac (CROSS_SYSTEM_HEADER_DIR, build_system_header_dir):
15361         Define using $${sysroot_headers_suffix}.
15362         * configure: Regenerate.
15363         * cppdefault.c (cpp_include_defaults): Make FIXED_INCLUDE_DIR a
15364         multilib-suffixed directory if SYSROOT_HEADERS_SUFFIX_SPEC
15365         defined.
15366         * doc/invoke.texi (-print-sysroot-headers-suffix): Document.
15367         * gcc.c (print_sysroot_headers_suffix): New.
15368         (option_map): Include --print-sysroot-headers-suffix.
15369         (display_help): Mention -print-sysroot-headers-suffix.
15370         (process_command): Handle -print-sysroot-headers-suffix.
15371         (do_spec_1): Append multilib directory to include-fixed path if
15372         sysroot suffixes in use.
15373         (main): Handle -print-sysroot-headers-suffix.
15374         * Makefile.in (start.encap): Don't depend on xlimits.h
15375         (xlimits.h): Remove.
15376         (stmp-int-hdrs): Don't depend on xlimits.h.  Inline generation of
15377         limits.h for each multilib in fixinc_list.
15378         (fixinc_list, s-fixinc_list): New.
15379         (stmp-fixinc): Depend on fixinc_list.  If not copying headers,
15380         generate them for each multilib in fixinc_list.
15381         (stmp-fixproto): Use include-fixed.  Run fixproto for each
15382         multilib in fixinc_list.
15383         (mostlyclean): Don't remove xlimits.h.
15384         (clean): Remove include-fixed.
15385         (real-install-headers-tar, real-install-headers-cpio,
15386         real-install-headers-cp): Don't copy include, only include-fixed.
15387         (install-mkheaders): Depend on fixinc_list.  Don't depend on
15388         xlimits.h.  Save limits.h files for each multilib in fixinc_list.
15389         Always save mkinstalldirs.  Preserve ${sysroot_headers_suffix} in
15390         SYSTEM_HEADER_DIR setting in mkheaders.conf.
15391
15392 2007-03-06  Jan Hubicka  <jh@suse.cz>
15393
15394         * regstack.c (reg_to_stack): When in 64bit PIC mode, we still can load
15395         NANs easilly.
15396
15397 2007-03-06  Richard Sandiford  <richard@codesourcery.com>
15398
15399         * configure.ac: Allow tm_file to contain build-directory files.
15400         * configure: Regenerate.
15401         * config.gcc (m68k-*-uclinux*): Add ./sysroot-suffix.h to tm_file.
15402         * config/m68k/t-uclinux (sysroot-suffix.h): New target.
15403         * config/m68k/print-sysroot-suffix.sh: New file.
15404
15405 2007-03-06  Richard Sandiford  <richard@codesourcery.com>
15406
15407         * config/m68k/m68k.h (PIC_OFFSET_TABLE_REGNUM): Use the REGNO
15408         of pic_offset_table_rtx if reload_completed.
15409         (CONDITIONAL_REGISTER_USAGE): Use PIC_REG instead of
15410         PIC_OFFSET_TABLE_REGNUM.
15411         * config/m68k/m68k.c (TARGET_ASM_CAN_OUTPUT_MI_THUNK): Always
15412         return true.
15413         (m68k_save_reg): Use PIC_REG instead of PIC_OFFSET_TABLE_REGNO.
15414         (m68k_output_mi_thunk): Rewrite to use RTL.  Honor vcall_offset.
15415
15416 2007-03-06  Richard Sandiford  <richard@codesourcery.com>
15417
15418         * config/m68k/m68k.c (m68k_save_reg): Save the PIC register in
15419         functions that call eh_return.
15420
15421 2007-03-06  Richard Sandiford  <richard@codesourcery.com>
15422
15423         * config/m68k/m68k.c (m68k_save_reg): Save the PIC register in
15424         functions that need a constant pool.
15425
15426 2007-03-06  Richard Sandiford  <richard@codesourcery.com>
15427
15428         PR target/28181
15429         * config/m68k/m68k-protos.h (m68k_secondary_reload_class): Declare.
15430         (m68k_preferred_reload_class): Likewise.
15431         * config/m68k/m68k.h (HARD_REGNO_MODE_OK): Remove duplicated comment.
15432         (SECONDARY_RELOAD_CLASS): Define.
15433         (PREFERRED_RELOAD_CLASS): Use m68k_preferred_reload_class.
15434         (LIMIT_RELOAD_CLASS): Delete.
15435         * config/m68k/m68k.c (m68k_regno_mode_ok): Don't prevent address
15436         registers from storing bytes.
15437         (m68k_secondary_reload_class): New function.
15438         (m68k_preferred_reload_class): Likewise.
15439
15440 2007-03-06  Richard Sandiford  <richard@codesourcery.com>
15441
15442         * config/m68k/m68k.c (m68k_save_reg): Remove special case for
15443         leaf functions.
15444         (m68k_expand_prologue): Likewise.
15445
15446 2007-03-06  Richard Sandiford  <richard@codesourcery.com>
15447
15448         * config/m68k/m68k-protos.h (output_sibcall): Declare.
15449         (mips_expand_epilogue): Add a bool parameter.
15450         (m68k_legitimize_sibcall_address): Declare.
15451         * config/m68k/m68k.c (TARGET_FUNCTION_OK_FOR_SIBCALL): Define.
15452         (m68k_expand_epilogue): Add a parameter to select between sibling
15453         and normal epilogues.  Only generate a return for the latter.
15454         (m68k_ok_for_sibcall_p): New function.
15455         (m68k_legitimize_sibcall_address, output_sibcall): New functions.
15456         * config/m68k/m68k.md (sibcall, *sibcall): New patterns.
15457         (sibcall_value, *sibcall_value): Likewise.
15458         (*call, *call_value): Require !SIBLING_CALL_P.
15459         (epilogue): Update call to m68k_expand_epilogue.
15460         (sibcall_epilogue): New pattern.
15461         * config/m68k/predicates.md (const_call_operand): Say that this
15462         predicate applies to sibling calls too.
15463         (sibcall_operand): New predicate.
15464
15465 2007-03-06  Richard Sandiford  <richard@codesourcery.com>
15466
15467         * config/m68k/m68k.md (movsf_cf_soft): Provide the same non-mov3q
15468         alternatives as movsi_cf.
15469         (movsf_cf_hard): Add commentary.
15470
15471 2007-03-06  Kazu Hirata  <kazu@codesourcery.com>
15472             Richard Sandiford  <richard@codesourcery.com>
15473
15474         * config/m68k/m68k-protos.h (m68k_interrupt_function_p): Declare.
15475         (m68k_movem_pattern_p, m68k_output_movem): Likewise.
15476         (m68k_expand_prologue, m68k_expand_epilogue): Likewise.
15477         * config/m68k/m68k.h (EPILOGUE_USES): Define.  Treat all registers
15478         as being live on exit from an interrupt function.
15479         (PRINT_OPERAND_PUNCT_VALID_P): Return true for '?'.
15480         * config/m68k/m68k.c (MIN_MOVEM_REGS, MIN_FMOVEM_REGS): New macros.
15481         (m68k_frame): Remove reg_rev_mask and fpu_rev_mask.
15482         (TARGET_ASM_FUNCTION_PROLOGUE, TARGET_ASM_FUNCTION_EPILOGUE): Delete.
15483         (m68k_interrupt_function_p): Globalize.
15484         (m68k_compute_frame_layout): Remove reverse mask code.
15485         (m68k_emit_movem, m68k_set_frame_related): New functions.
15486         (m68k_output_function_prologue): Delete in favor of...
15487         (m68k_expand_prologue): ...this new function.
15488         (m68k_output_function_epilogue): Delete in favor of...
15489         (m68k_expand_epilogue): ...this new function.
15490         (m68k_split_offset, m68k_movem_pattern_p, m68k_output_movem): New
15491         functions.
15492         (print_operand): Handle %?.
15493         * config/m68k/m68k.md (UNSPEC_SIN, UNSPEC_COS): Remove excess space.
15494         (UNSPEC_GOT, A1_REG, PIC_REG, FP0_REG): New constants.
15495         (prologue, epilogue): New patterns.
15496         (return): Turn into a define_expand.
15497         (*return): New pattern, derived from old "return" pattern.  Use rte
15498         rather than rts for interrupt functions.  Only use rtd if the pop
15499         count is nonzero.
15500         (*m68k_store_multiple, *m68k_store_multiple_automod): New patterns.
15501         (*m68k_load_multiple, *m68k_load_multiple_automod): Likewise.
15502         (link, *link, unlink, *unlink, load_got): Likewise.
15503
15504 2007-03-06  Richard Sandiford  <richard@codesourcery.com>
15505
15506         PR target/23482
15507         PR target/17114
15508         * config/m68k/m68k-protos.h (m68k_legitimate_base_reg_p): Declare.
15509         (m68k_legitimate_index_reg_p, m68k_legitimate_address_p): Likewise.
15510         (m68k_matches_q_p, m68k_matches_u_p): Likewise.
15511         * config/m68k/m68k.h (EXTRA_CONSTRAINT): Use m68k_matches_q_p
15512         and m68k_matches_u_p.
15513         (PCREL_GENERAL_OPERAND_OK, LEGITIMATE_BASE_REG_P): Delete.
15514         (INDIRECTABLE_1_ADDRESS_P, GO_IF_NONINDEXED_ADDRESS): Delete.
15515         (GO_IF_INDEXABLE_BASE, GO_IF_INDEXING, GO_IF_INDEXED_ADDRESS): Delete.
15516         (LEGITIMATE_INDEX_REG_P, LEGITIMATE_INDEX_P): Delete.
15517         (GO_IF_COLDFIRE_FPU_LEGITIMATE_ADDRESS): Delete.
15518         (REG_STRICT_P): New macro.
15519         (LEGITIMATE_PIC_OPERAND_P): Use REG_STRICT_P rather than
15520         PCREL_GENERAL_OPERAND_OK.
15521         (REG_OK_FOR_BASE_P): Merge definitions.  Use REG_STRICT_P and
15522         m68k_legitimate_base_reg_p.
15523         (REG_MODE_OK_FOR_INDEX_P): Likewise m68k_legitimate_index_reg_p.
15524         (GO_IF_LEGITIMATE_ADDRESS): Likewise m68k_legitimate_address_p.
15525         (PIC_CASE_VECTOR_ADDRESS): Update comment.
15526         * config/m68k/m68k.c (m68k_address): New structure.
15527         (m68k_legitimate_base_reg_p, m68k_legitimate_index_reg_p)
15528         (m68k_decompose_index, m68k_legitimate_constant_address_p)
15529         (m68k_jump_table_ref_p, m68k_decompose_address)
15530         (m68k_legitimate_address_p, m68k_legitimate_mem_p, m68k_matches_q_p)
15531         (m68k_matches_u_p): New functions.
15532         (print_operand_address): Rewrite to use m68k_decompose_index.
15533
15534 2007-03-05  David Taylor  <dtaylor@emc.com>
15535
15536         * gcc.c: Correct copyright date in --version output.
15537
15538 2007-03-05  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
15539
15540         * pa.md: In unamed move patterns, disparge copies between general
15541         and floating point registers using '?' modifier.  Don't include 'f'
15542         constraint for register preferences in DImode, SImode, HImode and
15543         QImode patterns.  Likewise for 'r' in DFmode and SFmode patterns.
15544         Remove constraints for copies between general and floating registers
15545         in soft-float DFmode pattern.
15546         (movdf): Fail if operand1 is a CONST_DOUBLE and operand0 is a hard
15547         floating register.
15548         (movsf): Likewise.
15549
15550 2007-03-05  Mike Stump  <mrs@apple.com>
15551
15552         * c-common.c (targetcm): Add.
15553         * c-opts.c (c_common_handle_option): Handle language specific
15554         target options.
15555         * opts.c (handle_option): Verify language for target options, if
15556         any are given.
15557         * opth-gen.awk: Add CL_LANG_ALL.
15558         * target-def.h (TARGET_HANDLE_C_OPTION): Add.
15559         (TARGETCM_INITIALIZER): Add.
15560         * target.h (struct gcc_targetcm): Add.
15561         (targetcm): Add.
15562         * targhooks.c (default_handle_c_option): Add.
15563         * targhooks.h (default_handle_c_option): Add.
15564         * doc/tm.texi (TARGET_HANDLE_C_OPTION): Add.
15565
15566         * config/darwin.opt (iframework): Add.
15567         * config/darwin.h (TARGET_HAS_TARGETCM): Add.
15568         * config/darwin-c.c (handle_c_option): Add.
15569         (TARGET_HANDLE_C_OPTION): Add.
15570         (targetcm): Add.
15571         * doc/invoke.texi (Darwin Options): Add -iframework.
15572
15573 2007-03-05  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
15574
15575         * convert.c (convert_to_integer): Fix nearbyint/rint -> *lrint
15576         conversion.
15577
15578 2007-03-05  Ian Lance Taylor  <iant@google.com>
15579
15580         * c.opt (fgnu89-inline): New option.
15581         * c-opts.c (c_common_post_options): Set default value for
15582         flag_gnu89_inline.
15583         * c-decl.c (WANT_C99_INLINE_SEMANTICS): Remove.
15584         (pop_scope): Check flag_gnu89_inline rather than flag_isoc99 for
15585         inline functions.
15586         (diagnose_mismatched_decls, merge_decls, start_decl): Likewise.
15587         (grokdeclarator, start_function): Likewise.
15588         * c-cppbuiltin.c (c_cpp_builtins): Define either
15589         __GNUC_GNU_INLINE__ or __GNUC_STDC_INLINE__.
15590         * doc/invoke.texi (Option Summary): Mention -fgnu89-inline.
15591         (C Dialect Options): Document -fgnu89-inline.
15592         * doc/extend.texi (Function Attributes): Explain what the
15593         gnu_inline attribute does.
15594         * doc/cpp.texi (Common Predefined Macros): Document
15595         __GNUC_GNU_INLINE__ and __GNUC_STDC_INLINE__.
15596
15597 2007-03-05  Ian Lance Taylor  <iant@google.com>
15598
15599         PR tree-optimization/31034
15600         * tree-vrp.c (extract_range_from_assert): Don't try to handle a
15601         half-range if the other side is an overflow infinity.
15602
15603 2007-03-05  Bernd Schmidt  <bernd.schmidt@analog.com>
15604
15605         * config.gcc (bfin*-uclinux*): Use t-bfin-uclinux.
15606         (bfin*-linux-uclibc*): New configuration.
15607         * config/linux.h (LINK_GCC_C_SEQUENCE_SPEC): Undefined before
15608         defining.
15609         * config/bfin/linux.h: New file.
15610         * config/bfin/libgcc-bfin.ver: New file.
15611         * config/bfin/t-bfin-uclinux: New file.
15612         * config/bfin/t-bfin-linux: New file.
15613         * config/bfin/uclinux.h (LINUX_TARGET_OS_CPP_BUILTINS): New macro.
15614         (TARGET_OS_CPP_BUILTINS): New macro.
15615
15616 2007-03-05  Richard Guenther  <rguenther@suse.de>
15617
15618         * fold-const.c (fold_binary): Remove duplicate folding
15619         of comparison of non-null ADDR_EXPR against null.
15620
15621 2007-03-05  Richard Guenther  <rguenther@suse.de>
15622             Dorit Nuzman  <dorit@il.ibm.com>
15623
15624         PR tree-optimization/26420
15625         * tree-vectorizer.c (vectorize_loops): Bail out early if there
15626         are no loops in the function.  Only print the number of
15627         vectorized loops if it is greater than zero or we are supposed
15628         to print information about unvectorized loops.
15629
15630 2007-03-05  Revital Eres  <eres@il.ibm.com>
15631
15632         * gcc.dg/var-expand1.c: New test.
15633         * loop-unroll.c (analyze_insn_to_expand_var): Add dump info
15634         when an accumulator is expanded.
15635
15636 2007-03-04  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
15637
15638         PR other/30465
15639         * c-common.c (convert_and_check): Don't give warnings for
15640         conversion if 'expr' already overflowed.
15641
15642 2007-03-04  Roger Sayle  <roger@eyesopen.com>
15643
15644         PR middle-end/30744
15645         * fold-const.c (fold_comparison): Enforce type consistency when
15646         transforming ~X op ~Y to Y op X, and ~X op C to X op' ~C.
15647
15648 2007-03-04  Zdenek Dvorak  <dvorakz@suse.cz>
15649
15650         * tree-ssa-address.c (create_mem_ref): Do not put an expression
15651         containing a cast to the base of TARGET_MEM_REF.
15652
15653 2007-03-04  Martin Michlmayr  <tbm@cyrius.com>
15654
15655         * tree.c (tree_contains_struct_check_failed): Remove spurious
15656         whitespace from error message.
15657
15658 2007-03-04 Andrew Pinski <andrew_pinski@playstation.sony.com>
15659
15660         PR target/30406
15661         * config/rs6000/rs6000.c (rs6000_function_value): Look at bit size
15662         instead of precision.
15663
15664 2007-03-04  Roman Zippel <zippel@linux-m68k.org>
15665             Nathan Sidwell  <nathan@codesourcery.com>
15666
15667         * emit-rtl.c (find_auto_inc): New.
15668         (try_split): recreate REG_INC notes,
15669         Use regular for loops rather than whiles.
15670
15671 2007-03-03  Andreas Schwab  <schwab@suse.de>
15672
15673         * configure.ac (HAVE_AS_REL16): Move test back to correct place.
15674         * configure: Regenerate.
15675
15676 2007-03-03  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
15677
15678         * builtins.def (ATTR_MATHFN_FPROUNDING): Rely on
15679         flag_rounding_math, not flag_unsafe_math_optimizations.
15680
15681         * c-pretty-print.c (pp_c_direct_abstract_declarator): Use
15682         fold_build2.
15683         * config/alpha/alpha.c (alpha_fold_builtin_zapnot,
15684         alpha_fold_vector_minmax): Likewise.
15685         * config/i386/i386.c (ix86_gimplify_va_arg): Likewise.
15686         * config/sparc/sparc.c (sparc_gimplify_va_arg): Likewise.
15687
15688 2007-03-02  Eric Botcazou  <ebotcazou@adacore.com>
15689
15690         * tree-sra.c (sra_walk_fns) <ldst>: Document new restriction.
15691         (sra_walk_modify_expr) <rhs_elt>: Treat the reference as a use
15692         if the lhs has side-effects.
15693         <lhs_elt>: Treat the reference as a use if the rhs has side-effects.
15694
15695 2007-03-02  Uros Bizjak  <ubizjak@gmail.com>
15696
15697         * config/i386/i386.h (TUNEMASK): Remove define.
15698         (ARCHMASK): Remove define.
15699         (TARGET_*): Use ix86_tune_mask variable instead of TUNEMASK.
15700          Use ix86_arch_mask variable instead of ARCHMASK.
15701         * config/i386/i386.c (override_options): Ditto.
15702         (standard_80387_constant_p): Ditto.
15703
15704 2007-03-02  Ian Lance Taylor  <iant@google.com>
15705
15706         Used signed infinities in VRP.
15707         * tree-vrp.c (uses_overflow_infinity): New static function.
15708         (supports_overflow_infinity): New static function.
15709         (make_overflow_infinity): New static function.
15710         (negative_overflow_infinity): New static function.
15711         (positive_overflow_infinity): New static function.
15712         (is_negative_overflow_infinity): New static function.
15713         (is_positive_overflow_infinity): New static function.
15714         (is_overflow_infinity): New static function.
15715         (overflow_infinity_range_p): New static function.
15716         (compare_values_warnv): New function split out of compare_values.
15717         (compare_value): Call it.
15718         (set_value_range_to_nonnegative): Add overflow_infinity
15719         parameter.  Change caller.
15720         (vrp_expr_computes_nonnegative): Add strict_overflow_p parameter.
15721         Change callers.
15722         (vrp_expr_computes_nonzero): Likewise.
15723         (compare_ranges, compare_range_with_value): Likewise.
15724         (compare_name_with_value, compare_names): Likewise.
15725         (vrp_evaluate_conditional): Likewise.
15726         (set_value_range): Handle infinity
15727         (vrp_operand_equal_p, operand_less_p): Likewise.
15728         (extract_range_from_assert): Likewise.
15729         (vrp_int_const_binop): Likewise.
15730         (extract_range_from_binary_expr): Likewise.
15731         (extract_range_from_unary_expr): Likewise.
15732         (extract_range_from_comparison): Likewise.
15733         (extract_range_from_expr): Likewise.
15734         (dump_value_range): Likewise.
15735         (vrp_visit_cond_stmt, vrp_visit_phi_node): Likewise.
15736         (test_for_singularity): Likewise.
15737         (vrp_int_const_binop): Remove inline qualifier.
15738         (adjust_range_with_scev): Add comment.
15739         * tree-flow.h (vrp_evaluate_conditional): Update declaration.
15740
15741 2007-03-02  Diego Novillo  <dnovillo@redhat.com>
15742
15743         * tree-ssa-structalias.c (could_have_pointers): Tidy.
15744         (get_constraint_for): Likewise.
15745         (do_structure_copy): Likewise.
15746         (find_func_aliases): Fix references to MODIFY_EXPR.
15747         (intra_create_variable_infos): Tidy.
15748         * tree-ssa-operands.c (add_virtual_operand): Add argument
15749         IS_CALL_SITE.
15750         When adding members of alias sets, if IS_CALL_SITE is true and
15751         the symbol is not call-clobbered, skip it.
15752         Adjust all callers.
15753
15754 2007-03-02  Eric Botcazou  <ebotcazou@adacore.com>
15755
15756         * config/alpha/alpha.c (alpha_gp_save_rtx): Insert the insns at the
15757         entry by means of emit_insn_at_entry.
15758
15759 2007-03-02  Richard Henderson  <rth@redhat.com>
15760
15761         * expr.h (promoted_input_arg): Remove decl.
15762         * function.c (promoted_input_arg): Merge into ...
15763         * combine.c (setup_incoming_promotions): ... only caller.
15764         Rearrange to avoid double loop.
15765
15766 2007-03-02  Ben Elliston  <bje@au.ibm.com>
15767             Peter Bergner  <bergner@vnet.ibm.com>
15768             Janis Johnson  <janis187@us.ibm.com>
15769
15770         * config/rs6000/dfp.md: New file.
15771         * config/rs6000/rs6000.md: Include dfp.md.
15772         (add<mode>3_internal1): Disable for DECIMAL_FLOAT_MODE_P operands.
15773         * config/rs6000/rs6000.c (rs6000_hard_regno_mode_ok): Handle DDmode
15774         and TDmode decimal float modes in FP registers.
15775         (num_insns_constant): Likewise.
15776         (rs6000_legitimate_offset_address_p): Likewise.
15777         (rs6000_legitimize_address): Likewise.
15778         (rs6000_legitimize_reload_address): Likewise.
15779         (rs6000_legitimate_address): Likewise.
15780         (rs6000_emit_move): Likewise.
15781         (function_arg_boundary): Likewise.
15782         (function_arg_advance): Likewise.
15783         (rs6000_darwin64_record_arg_recurse): Likewise.
15784         (function_arg): Likewise.
15785         (rs6000_gimplify_va_arg): Likewise.
15786         (rs6000_split_multireg_move): Likewise.
15787         (rs6000_output_function_epilogue): Likewise.
15788         (rs6000_output_function_epilogue): Likewise.
15789         (rs6000_register_move_cost): Likewise.
15790         (rs6000_function_value): Likewise.
15791         (rs6000_libcall_value): Likewise.
15792
15793 2007-03-02  Richard Sandiford  <richard@codesourcery.com>
15794
15795         * config/t-vxworks (LIMITS_H_TEST): Define to true for VxWorks.
15796
15797 2007-03-02  Richard Sandiford  <richard@codesourcery.com>
15798
15799         * config/t-vxworks (LIBGCC2_INCLUDES): Pass -nostdinc.
15800         Use $MULTIDIR to choose between the kernel and RTP headers,
15801         and use $WIND_BASE and $WIND_USR to locate them.
15802
15803 2007-03-02  Uros Bizjak  <ubizjak@gmail.com>
15804
15805         * config/i386/i386.c (override_options): Put initialization of
15806         ix86_tune_mask and ix86_arch_mask to the correct place.
15807
15808 2007-03-02  Uros Bizjak  <ubizjak@gmail.com>
15809             Michael Meissner  <michael.meissner@amd.com>
15810
15811         PR target/31019
15812         * config/i386/i386.h (TUNEMASK): Redefine to use ix86_tune_mask.
15813         (ARCHMASK): Define.
15814         (TARGET_CMOVE): Use ARCHMASK.
15815         (TARGET_CMPXCHG): Ditto.
15816         (TARGET_CMPXCHG8B): Ditto.
15817         (TARGET_XADD): Ditto.
15818         (TARGET_BSWAP): Ditto.
15819         * config/i386/i386.c (ix86_tune_mask): New global variable.
15820         (ix86_arch_mask): Ditto.
15821         (override_options): Initialize ix86_tune_mask and
15822         ix86_arch_mask. Use ARCHMASK to clear MASK_NO_FANCY_MATH_387 in
15823         target_flags.
15824
15825 2007-03-02  Ben Elliston  <bje@au.ibm.com>
15826
15827         PR 30992
15828         * config/dfp-bit.c (DFP_TO_INT): Initialise qval with "1.".
15829
15830 2007-03-02  Joseph Myers  <joseph@codesourcery.com>
15831
15832         * target.h (init_dwarf_reg_sizes_extra): New target hook.
15833         * target-def.h (TARGET_INIT_DWARF_REG_SIZES_EXTRA): New default.
15834         * doc/tm.texi (TARGET_INIT_DWARF_REG_SIZES_EXTRA): Document.
15835         * dwarf2out.c (expand_builtin_init_dwarf_reg_sizes): Call this
15836         hook.
15837         * config/rs6000/rs6000.c (TARGET_INIT_DWARF_REG_SIZES_EXTRA,
15838         rs6000_init_dwarf_reg_sizes_extra): New.
15839         * config/rs6000/linux-unwind.h (ppc_fallback_frame_state): Support
15840         SPE register high parts.
15841
15842 2007-03-01  Brooks Moses  <brooks.moses@codesourcery.com>
15843
15844         * Makefile.in: Add install-pdf target as
15845         copied from automake v1.10 rules.
15846         * configure.ac: Add install-pdf to target list.
15847         * configure: Regenerate.
15848
15849 2007-03-01  Paul Brook  <paul@codesourcery.com>
15850
15851         * config/arm/arm.c (arm_legitimate_index_p): Limit iWMMXt addressing
15852         modes to LDRD for DImode.
15853         (output_move_double): Fixup out of range ldrd/strd.
15854         (vfp_secondary_reload_class): Rename...
15855         (coproc_secondary_reload_class): ... to this.  Add wb argument.
15856         * config/arm/arm.h (SECONDARY_OUTPUT_RELOAD_CLASS): Use
15857         coproc_secondary_reload_class for CLASS_IWMMXT.
15858         (SECONDARY_INPUT_RELOAD_CLASS): Ditto.
15859         * arm-protos.h (coproc_secondary_reload_class): Update prototype.
15860
15861 2007-03-01  Zdenek Dvorak  <dvorakz@suse.cz>
15862
15863         * tree-ssa-loop-prefetch.c (determine_unroll_factor):  Bound the
15864         unroll factor by the estimated number of iterations.
15865         (loop_prefetch_arrays): Do not prefetch in loops that iterate less
15866         than prefetch latency.
15867
15868         * config/i386/driver-i386.c (describe_cache, detect_caches_amd,
15869         decode_caches_intel, detect_caches_intel): New functions.
15870         (host_detect_local_cpu): Use detect_caches_amd and
15871         detect_caches_intel.
15872
15873 2007-03-01  Richard Henderson  <rth@redhat.com>
15874
15875         * expr.c (emit_move_complex_push): Export.
15876         (emit_move_complex_parts): Split out from ...
15877         (emit_move_complex): ... here.
15878         * expr.h (emit_move_complex_push, emit_move_complex_parts): Declare.
15879         * config/i386/i386.md (movcdi): New.
15880
15881 2007-03-01  Uros Bizjak  <ubizjak@gmail.com>
15882
15883         * config/i386/i386.c (ix86_modes_tieable_p): Fix typo, use also
15884         size of mode1 to check for tieable modes in MMX case.
15885
15886 2007-03-01  Richard Sandiford  <richard@codesourcery.com>
15887
15888         * Makefile.in (rtlanal.o): Depend on tree.h.
15889         * rtl.h (offset_within_section_p, split_const): Declare.
15890         * rtlanal.c: Include tree.h.
15891         (offset_within_block_p): New function, taken from
15892         mips_offset_within_object_p.
15893         (split_const): New function, taken from mips_split_const.
15894         * config/m68k/m68k-protos.h (m68k_illegitimate_symbolic_constant_p):
15895         Declare.
15896         * config/m68k/m68k.h (M68K_OFFSETS_MUST_BE_WITHIN_SECTIONS_P): Define.
15897         (CONSTANT_ADDRESS_P): Only accept legitimate constants.
15898         (LEGITIMATE_CONSTANT_P): Check m68k_illegitimate_symbolic_constant_p.
15899         * config/m68k/m68k.c (TARGET_CANNOT_FORCE_CONST_MEM): Define.
15900         (m68k_illegitimate_symbolic_constant_p): New function.
15901         * config/m68k/m68k.md (movsi): Remove misleading predicates.
15902         If M68K_OFFSETS_MUST_BE_WITHIN_SECTIONS_P and the source is a
15903         symbolic constant that might be outside the symbol's section,
15904         move the symbol first and then add the offset.
15905         * config/m68k/uclinux.h (M68K_OFFSETS_MUST_BE_WITHIN_SECTIONS_P):
15906         Override.
15907         * config/mips/mips.c (mips_split_const): Delete.
15908         (mips_offset_within_object_p): Delete.
15909         (mips_symbolic_constant_p): Use offset_within_section_p and
15910         split_const instead of mips_offset_within_object_p and
15911         mips_split_const.
15912         (mips_cannot_force_const_mem, mips_const_insns, mips_unspec_address)
15913         (mips_legitimize_const_move, print_operand_reloc)
15914         (mips_dangerous_for_la25_p): Use split_const instead of
15915         mips_split_const.
15916
15917 2007-02-28  Eric Christopher  <echristo@apple.com>
15918
15919         * Makefile.in (install-include-dir): Don't rm -rf include.
15920
15921 2007-02-28  Richard Guenther  <rguenther@suse.de>
15922
15923         PR middle-end/30364
15924         * fold-const.c (fold_binary): Do not associate expressions
15925         with more than one variable for integer types that do not wrap.
15926
15927 2007-02-28  Sandra Loosemore  <sandra@codesourcery.com>
15928
15929         * builtins.c (fold_builtin_call_list, fold_builtin_call_valist):
15930         Delete, and replace with...
15931         (fold_builtin_call_array): This.  Update callers to use it.
15932         * fold-const.c (fold_build_call_list): Delete, and replace with...
15933         (fold_build_call_array): This.
15934         (fold_build_call_list_initializer): Delete, and replace with...
15935         (fold_build_call_array_initializer): This.
15936         * tree.h: Update declarations to reflect above changes.
15937
15938         * c-typeck.c (build_function_call): Store converted arguments
15939         in a stack-allocated array instead of building a list.
15940         (convert_arguments): Store arguments in the array passed in as an
15941         argument, and return the actual number of arguments.
15942         * c-format.c: (check_function_format): Pass arguments in an
15943         array instead of a list.
15944         * c-common.c (check_function_nonnull): Likewise.
15945         (check_function_sentinel): Likewise.
15946         (check_function_arguments): Likewise.
15947         * c-common.h: Update declarations to reflect above changes.
15948
15949 2007-02-28  Jan Hubicka  <jh@suse.cz>
15950
15951         * predict.def (PRED_TREE_EARLY_RETURN, PRED_CONST_RETURN,
15952         PRED_NEGATIVE_RETURN): Update outcomes.
15953
15954 2007-02-28  Bernd Schmidt  <bernd.schmidt@analog.com>
15955
15956         * calls.c (emit_library_call_value_1): Handle partial registers
15957         correctly when building up CALL_INSN_FUNCTION_USAGE.
15958
15959 2007-02-27  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
15960
15961         * pa/predicates.md (move_src_operand): Allow zero for mode.
15962         * pa/pa.md: Fix constraints for zero CONST_DOUBLE in 64-bit DFmode
15963         move pattern.
15964
15965 2007-02-27  Uros Bizjak  <ubizjak@gmail.com>
15966
15967         PR target/30970
15968         * config/i386/sse.md (*mov<mode>_internal, *movv4sf_internal,
15969         *movv2df_internal): Enable pattern only for valid operand
15970         combinations.
15971         * config/i386/i386.c (ix86_modes_tieable_p): For SSE registers,
15972         tie only 128bit modes. For MMX registers, tie only 64bit modes.
15973
15974 2007-02-27  Mike Stump  <mrs@apple.com>
15975
15976         * config/darwin-crt3.c: Avoid compilation when compiling for a
15977         kext multilib.
15978
15979 2007-02-27  Joseph Myers  <joseph@codesourcery.com>
15980
15981         * Makefile.in (PREPROCESSOR_DEFINES, test-protoize-simple): Define
15982         FIXED_INCLUDE_DIR.
15983         (stmp-int-hdrs, stmp-fixinc, install-headers): Use include-fixed
15984         for fixed headers and limits.h.
15985         (install-include-dir, install-headers-tar, install-headers-cpio,
15986         install-headers-cp, real-install-headers-tar,
15987         real-install-headers-cpio, real-install-headers-cp): Handle
15988         include-fixed as well as include.
15989         (install-mkheaders): Don't install files that go only in include
15990         not include-fixed.
15991         * cppdefault.c (cpp_include_defaults): Separate FIXED_INCLUDE_DIR
15992         from GCC_INCLUDE_DIR.
15993         * gcc.c (process_command): Remove special -BstageN/ handling.
15994         (do_spec_1): Add include-fixed directories.
15995
15996 2007-02-27  Bernd Schmidt  <bernd.schmidt@analog.com>
15997
15998         * config/bfin/t-bfin-elf (LIB1ASMFUNCS): Add _umulsi3_highpart and
15999         _smulsi3_highpart.
16000         * config/bfin/lib1funcs.asm (___umulsi3_highpart, ___smulsi3_highpart):
16001         New functions.
16002         * config/bfin/bfin.md (smulsi3_highpart, umulsi3_highpart): New
16003         patterns.
16004
16005 2007-02-27  Mark Mitchell  <mark@codesourcery.com>
16006
16007         * c-common.c (get_priority): Add check for
16008         SUPPORTS_INIT_PRIORITY.
16009
16010 2007-02-27  Bernd Schmidt  <bernd.schmidt@analog.com>
16011
16012         * config/bfin/bfin.md (doloop_end): FAIL if counter reg isn't SImode.
16013
16014         * config/bfin/bfin.c: Include "cfglayout.h".
16015         (MAX_LSETUP_DISTANCE): New macro.
16016         (struct loop_info): New members incoming, incoming_src and
16017         incoming_dest.  Delete member predecessor.
16018         (length_for_loop): New function.
16019         (bfin_optimize_loop): Handle more different loop structures.
16020         (bfin_discover_loop): Rework detection of predecessor blocks by
16021         examining incoming edges.
16022         (bfin_discover_loops, bfin_free_loops): New functions, broken out of
16023         bfin_reorg_loops.
16024         (bfin_reorder_loops): New function.
16025         (bfin_reorg_loops): Use these three new functions.
16026
16027         * config/bfin/bfin.h (enum reg_class, REG_CLASS_NAMES,
16028         REG_CLASS_CONTENTS): Add D0REGS through D7REGS.
16029         (CONSTRAINT_LEN): Add entry for 'q'.
16030         (REG_CLASS_FROM_CONSTRAINT): Renamed from REG_CLASS_FROM_LETTER.
16031         Add 'q' constraints.
16032         (REGNO_REG_CLASS): For R0 through R7, return corresponding regclass.
16033         (CLASS_LIKELY_SPILLED_P): True for R0, R1 and R2.
16034
16035         * config/bfin/bfin.md (add_with_carry): New pattern.
16036         (s_or_u, su_optab, su_modifier): New code macros/attrs.
16037         (<su_optab>hisi_ll, <su_optab>hisi_lh, <su_optab>hisi_hl,
16038         <su_optab>hisi_hh): Renamed from mulhisi_xx patterns; macroized to
16039         support unsigned multiplies too.  Removed incorrect commutativity from
16040         operand 1 constraint where appropriate.
16041         (usmulhisi_ull, usmulhisi_ulh, usmulhisi_uhl, usmulhisi_uhh): New
16042         patterns.
16043         (<su_optab>hisi_ll_lh, <su_optab>hisi_ll_hl, <su_optab>hisi_ll_hh,
16044         <su_optab>hisi_lh_hl, <su_optab>hisi_lh_hh, <su_optab>hisi_hl_hh):
16045         New patterns.
16046         (usmulhisi_ll_lul, usmulhisi_ll_luh, usmulhisi_ll_hul,
16047         usmulhisi_ll_huh, usmulhisi_lh_lul, usmulhisi_lh_luh, usmulhisi_lh_hul,
16048         usmulhisi_lh_huh, usmulhisi_hl_lul, usmulhisi_hl_luh, usmulhisi_hl_hul,
16049         usmulhisi_hl_huh, usmulhisi_hh_lul, usmulhisi_hh_luh, usmulhisi_hh_hul,
16050         usmulhisi_hh_huh): New patterns.
16051
16052         * config/bfin/bfin.md (ssashiftv2hi3, ssashifthi3, lshiftv2hi3,
16053         lshifthi3): Fix output template to use half reg for operand 2.
16054
16055         * config/bfin/bfin.c (bfin_output_mi_thunk): Use R3 as scratch reg
16056         instead of R2.
16057
16058         * config/bfin/bfin.md (rotl16, rotlsi3, rotrsi3): New patterns.
16059
16060 2007-02-27  Andreas Schwab  <schwab@suse.de>
16061
16062         * Makefile.in (TEXI_GCCINSTALL_FILES): Add gcc-common.texi.
16063
16064 2007-02-27  Jan Hubicka  <jh@suse.cz>
16065
16066         * predict.c (last_basic_block_p): Remove.
16067         (tree_estimate_probability): Update return heuristic for commonized
16068         return blocks.
16069
16070 2007-02-26  Brooks Moses  <brooks.moses@codesourcery.com>
16071
16072         * Makefile.in (TEXI_GCCINSTALL_FILES): Add gcc-vers.texi dependency.
16073
16074 2007-02-26  Brooks Moses  <brooks.moses@codesourcery.com>
16075
16076         * doc/include/gcc-common.texi (versionsubtitle): New macro.
16077         * doc/cpp.texi: Standardize title page.
16078         * doc/cppinternals.texi: Likewise.
16079         * doc/gcc.texi: Standardize title page, remove version number
16080         from copyright page.
16081         * doc/gccint.texi: Likewise.
16082         * doc/install.texi: Standardize title page, add table of
16083         contents.
16084
16085 2007-02-26  Jan Hubicka  <jh@suse.cz>
16086
16087         * predict.def: Set outcomes according to more recent results.
16088         (PRED_LOOP_CONDITION, PRED_LOOP_PRECONDITIONING, PRED_LOOP_HEADER):
16089         Remove dead predictors.
16090         * predict.c (return_prediction): Fix pasto.
16091
16092 2007-02-27  Bernd Schmidt  <bernd.schmidt@analog.com>
16093
16094         * loop-iv.c (simplify_using_initial_values): Fix oversight in previous
16095         change; avoid a memory leak when returning early.
16096
16097 2007-02-26  Mark Mitchell  <mark@codesourcery.com>
16098
16099         * c-decl.c (static_ctors): Move to c-common.c.
16100         (static_dtors): Likewise.
16101         (finish_function): Use c_record_cdtor_fn.
16102         (build_cdtor): Move to c-common.c.
16103         (c_write_global_declarations): Use c_build_cdtor_fns.
16104         * c-common.h (static_ctors): Declare.
16105         (static_dtors): Likewise.
16106         (c_record_cdtor_fn): Likewise.
16107         (c_build_cdtor_fns): Likewise.
16108         * c-common.c (static_ctors): New variable.
16109         (static_dtors): Likewise.
16110         (c_record_cdtor_fn): New function.
16111         (build_cdtor): Move from c-decl.c
16112         (c_build_cdtor_fns): New function.
16113
16114         * output.h (assemble_addr_to_section): Declare.
16115         (get_cdtor_priority_section): Likewise.
16116         * varasm.c (assemble_addr_to_section): New function.
16117         (get_cdtor_priority_section): Likewise.
16118         (default_named_section_asm_out_destructor): Use them.
16119         (destor_dtor_section_asm_out_destructor): Likewise.
16120         (default_named_section_asm_out_constructor): Likewise.
16121         (default_ctor_section_asm_out_constructor): Likewise.
16122         * config.gcc (*-*-vxworks*): Include vxworks.o.
16123         * config/t-vxworks (vxworks.o): New target.
16124         * config/vxworks.h (ALWAYS_NUMBER_CTORS_SECTIONS): Remove.
16125         (TARGET_ASM_CONSTRUCTOR): Define.
16126         (TARGET_ASM_DESTRUCTOR): Likewise.
16127         (vxworks_asm_out_constructor): Declare.
16128         (vxworks_asm_out_destructor): Likewise.
16129
16130         * c-common.c (get_priority): Check that we have not just an
16131         INTEGER_CST, but an integer constant with integeral type.
16132
16133 2007-02-25  Uros Bizjak  <ubizjak@gmail.com>
16134
16135         PR tree-optimization/30938
16136         * tree-vect-transform.c (vectorizable_call): Fix off-by-one error:
16137         use &dt[nargs-1] instead of &dt[nargs] in the call to
16138         vect_is_simple_use().
16139
16140 2007-02-25  Ulrich Weigand  <uweigand@de.ibm.com>
16141
16142         * reload.c (find_reloads_address_1): Handle PLUS expressions resulting
16143         from register elimination as PRE_MODIFY / POST_MODIFY increments.
16144         Do not attempt to handle MEM inside auto-inc expressions.
16145         * reload1.c (eliminate_regs_1): Do not attempt to handle elimination
16146         of a register modified by an auto-inc expression.  However, do handle
16147         elimination of a register used as PRE_MODIFY / POST_MODIFY increment.
16148         (elimination_effects): Prohibit elimination of a register modified
16149         by an auto-inc expression.  Disable register elimination rules whose
16150         target register is modified by an auto-inc expression with variable
16151         increment.
16152
16153 2007-02-25  Zdenek Dvorak  <dvorakz@suse.cz>
16154
16155         * tree-ssa-loop-niter.c (compute_estimated_nb_iterations): Fix
16156         off-by-one error.
16157         (array_at_struct_end_p): New function.
16158         (idx_infer_loop_bounds): Use it.
16159         (estimate_numbers_of_iterations_loop): Export.
16160         * predict.c (predict_loops): Use estimated_loop_iterations_int.
16161         Do not use PRED_LOOP_EXIT on exits predicted by # of iterations.
16162         (tree_estimate_probability): Call record_loop_exits.
16163         * tree-data-ref.c (get_number_of_iters_for_loop): Replaced by ...
16164         (estimated_loop_iterations, estimated_loop_iterations_int,
16165         estimated_loop_iterations_tree): New functions.
16166         (analyze_siv_subscript_cst_affine,
16167         compute_overlap_steps_for_affine_1_2,
16168         analyze_subscript_affine_affine): Use estimated_loop_iterations_int.
16169         (analyze_miv_subscript): Use estimated_loop_iterations_tree.
16170         * predict.def (PRED_LOOP_ITERATIONS): Update comment.
16171         (PRED_LOOP_ITERATIONS_GUESSED): New.
16172         * cfgloop.c (record_loop_exits): Do nothing if there are no loops.
16173         * cfgloop.h (estimate_numbers_of_iterations_loop,
16174         estimated_loop_iterations_int): Declare.
16175
16176 2007-02-25  Mark Mitchell  <mark@codesourcery.com>
16177
16178         * doc/extend.texi: Document optional priority argument to
16179         constructors and destructors.
16180         * tree.c (init_priority_for_decl): Adjust GTY markers.
16181         (init_ttree): Use priority-info hash functions for
16182         init_priority_for_decl.
16183         (tree_map_eq): Rename to ...
16184         (tree_map_base_eq): ... this.
16185         (tree_map_marked_p): Rename to ...
16186         (tree_map_base_marked_p): ... this.
16187         (tree_map_base_hash): New function.
16188         (decl_init_priority_lookup): Rework.
16189         (decl_fini_priority_lookup): New function.
16190         (decl_priority_info): New function.
16191         (decl_init_priority_insert): Use it.
16192         (decl_fini_priority_insert): Likewise.
16193         (decl_restrict_base_lookup): Adjust for refactoring of tree_map
16194         hierarchy.
16195         (decl_restrict_base_insert): Likewise.
16196         (decl_debug_expr_insert): Likewise.
16197         (decl_value_expr_lookup): Likewise.
16198         (decl_value_expr_insert): Likewise.
16199         * tree.h (priority_type): New type.
16200         (decl_init_priority_lookup): Use priority_type.
16201         (decl_fini_priority_lookup): New function.
16202         (decl_init_priority_insert): Use priority_type.
16203         (decl_fini_priority_insert): New function.
16204         (DECL_HAS_INIT_PRIORITY): Tweak comments.
16205         (DECL_INIT_PRIORITY): Likewise.
16206         (SET_DECL_INIT_PRIORITY): Add comment.
16207         (DECL_FINI_PRIORITY): New macro.
16208         (SET_DECL_FINI_PRIORITY): Likewise.
16209         (DEFAULT_INIT_PRIORITY): Document.
16210         (MAX_INIT_PRIORITY): Likewise.
16211         (MAX_RESERVED_INIT_PRIORITY): Likewise.
16212         (tree_map_base): New type.
16213         (tree_map_base_eq): New function.
16214         (tree_map_base_hash): Likewise.
16215         (tree_map_base_marked_p): Likewise.
16216         (tree_map): Inherit from tree_map_base.
16217         (tree_map_eq): Make it a macro.
16218         (tree_map_marked_p): Likewise.
16219         (tree_int_map): Inherit from tree_map_base.
16220         (tree_int_map_eq): Make it a macro.
16221         (tree_int_map_hash): Likewise.
16222         (tree_int_map_marked_p): Likewise.
16223         (tree_priority_map): New type.
16224         (tree_priority_map_eq): New macro.
16225         (tree_priority_map_hash): Likewise.
16226         (tree_priority_map_marked_p): Likewise.
16227         * varasm.c (emults_decl): Adjust for refactoring of tree_map
16228         hierarchy.
16229         (emutls_common_1): Likewise.
16230         * lambda-code.c (replace_uses_equiv_to_x_with_y): Likewise.
16231         * tree-ssa-structalias.c (heapvar_lookup): Adjust for refactoring
16232         of tree_map hierarchy.
16233         * tree-cfg.c (move_stmt_r): Likewise.
16234         (new_label_mapper): Likewise.
16235         * c-tree.h (c_expand_body): Move to ...
16236         * c-common.h (c_expand_body): ... here.
16237         * c-decl.c (c_expand_body): Move to ...
16238         * c-common.c (c_expand_body): ... here.
16239         (c_common_attribute_table): Allow 1 argument for the constructor
16240         and destructor attributes.
16241         (get_priority): New function.
16242         (handle_constructor_attribute): Set DECL_INIT_PRIORITY.
16243         (handle_destructor_attribute): Set DECL_FINI_PRIORITY.
16244
16245 2007-02-24  Jan Hubicka  <jh@suse.cz>
16246
16247         PR middle-end/30509
16248         * tree-inline.c (copy_bb): Produce exact copy of EH info when
16249         copying for inlining.
16250
16251 2007-02-24  Uros Bizjak  <ubizjak@gmail.com>
16252             Jan Hubicka  <jh@suse.cz>
16253
16254         PR target/30778
16255         * i386.c (counter_mode): New function.
16256         (expand_set_or_movmem_via_loop): Use it.
16257         (expand_movmem_epilogue): Likewise; fix pasto.
16258         (ix86_expand_movmem): Do emit guard even for constant counts.
16259         (ix86_expand_setmem): Likewise.
16260
16261 2007-02-25  Nick Clifton  <nickc@redhat.com>
16262
16263         * config/frv/frv.h (ASM_OUTPUT_CASE_LABEL): Delete.
16264         (JUMP_TABLES_IN_TEXT_SECTION): Define.
16265
16266 2007-02-24  Uros Bizjak  <ubizjak@gmail.com>
16267
16268         PR target/30770
16269         * config/i386/i386.md (expand_movmem_epilogue): Fix typo, mask
16270         count argument with 0x10, not with 0x16.
16271         (expand_setmem_epilogue): Ditto.
16272
16273 2007-02-24  Mike Stump  <mrs@apple.com>
16274
16275         * config/i386/i386.c (output_pic_addr_const): Stubify optimized
16276         symbols.
16277
16278 2007-02-24  Richard Guenther  <rguenther@suse.de>
16279
16280         PR middle-end/30951
16281         * fold-const.c (fold_binary): Fold x +- CST op x for
16282         EQ_EXPR and NE_EXPR.
16283
16284 2007-02-24  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
16285
16286         * pa.md (muldi3): Force subregs to registers in 64-bit expander.
16287
16288 2007-02-24  Jan Hubicka  <jh@suse.cz>
16289
16290         * cgraphunit.c (decide_is_function_needed): Honor
16291         -fkeep-inline-functions.
16292
16293 2007-02-24  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
16294
16295         * builtins.c (fold_builtin_modf): New.
16296         (fold_builtin_2): Use it.
16297
16298 2007-02-24  Bernd Schmidt  <bernd.schmidt@analog.com>
16299
16300         * loop-iv.c (implies_p): Detect additional cases where A implies B.
16301         (determine_max_iter): Take additional LOOP arg; all callers changed.
16302         Lose broken logic dealing with PLUS.  Try to limit the upper bound by
16303         one using simplifications.
16304         (simplify_using_initial_values): Return if the expression becomes
16305         invalid due to altered regs.
16306
16307 2007-02-23  DJ Delorie  <dj@redhat.com>
16308
16309         * doc/tm.h (BIGGEST_ALIGNMENT): Clarify the purpose of this macro.
16310
16311 2007-02-23  Mike Stump  <mrs@apple.com>
16312
16313         * tlink.c (scan_linker_output): Parse linker messages from
16314         darwin9's linker better.
16315
16316 2007-02-23  Steve Ellcey  <sje@cup.hp.com>
16317
16318         PR debug/29614
16319         * varpool.c (varpool_assemble_pending_decls):  Set
16320         varpool_last_needed_node to null.
16321
16322 2007-02-23  DJ Delorie  <dj@redhat.com>
16323
16324         * config/i386/i386.c (ix86_data_alignment): Don't specify an
16325         alignment bigger than the object file can handle.
16326
16327 2007-02-23  Uros Bizjak  <ubizjak@gmail.com>
16328
16329         PR target/30825
16330         * config/i386/i386.md (*movdi_1_rex64, zero_extendsidi2_32,
16331         zero_extendsidi2_rex64): Penalize MMX register<->memory moves.
16332         (*movsf_1): Penalize MMX moves.
16333
16334 2007-02-23  Bernd Schmidt  <bernd.schmidt@analog.com>
16335
16336         * config/bfin/bfin.md (doloop_end): Fail for loops that can iterate
16337         2^32-1 or more times unless flag_unsafe_loop_optimizations.
16338
16339         * loop-iv.c (determine_max_iter): Moved in front of its sole user.
16340
16341 2007-02-23  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
16342
16343         * builtins.c (fold_builtin_logb, fold_builtin_significand): New.
16344         (fold_builtin_1): Use them.
16345         * fold-const.c (tree_expr_nonnegative_warnv_p): Handle
16346         BUILT_IN_SIGNIFICAND.
16347
16348 2007-02-23  H.J. Lu  <hongjiu.lu@intel.com>
16349
16350         * config/i386/i386.c (bdesc_1arg): Initialize
16351         IX86_BUILTIN_MOVSHDUP and IX86_BUILTIN_MOVSLDUP with
16352         "__builtin_ia32_movshdup" and "__builtin_ia32_movsldup".
16353         (ix86_init_mmx_sse_builtins): Remove IX86_BUILTIN_MOVSHDUP
16354         and IX86_BUILTIN_MOVSLDUP.
16355
16356 2007-02-22  Paolo Bonzini  <bonzini@gnu.org>
16357
16358         PR rtl-optimization/30841
16359         * fwprop.c (propagate_rtx_1): Accept a VOIDmode replacement address.
16360
16361 2007-02-22  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
16362
16363         * builtins.c (fold_builtin_frexp): New.
16364         (fold_builtin_2): Use it.
16365
16366 2007-02-22  Mark Mitchell  <mark@codesourcery.com>
16367
16368         * doc/invoke.texi (Spec Files): Document getenv spec function.
16369
16370         * gcc.c (getenv_spec_function): New function.
16371         (static_spec_functions): Add it.
16372         * config/vxworks.h (VXWORKS_TARGET_DIR): Remove.
16373         (VXWORKS_ADDITIONAL_CPP_SPEC): Use getenv to find the VxWorks
16374         header files.
16375
16376 2007-02-22  Michael Matz  <matz@suse.de
16377
16378         PR c++/29433
16379         * dwarf2out.c (add_AT_string): Call ggc_strdup once per string.
16380         (type_tag): Use lang_hooks.dwarf_name instead of DECL_NAME.
16381
16382 2007-02-22  Ian Lance Taylor  <iant@google.com>
16383
16384         PR debug/30898
16385         * dwarf2out.c (concatn_mem_loc_descriptor): New static function.
16386         (mem_loc_descriptor): Call it.
16387
16388 2007-02-22  Zdenek Dvorak  <dvorakz@suse.cz>
16389             Ira Rosen  <irar@il.ibm.com>
16390
16391         * tree-data-ref.c (ptr_ptr_may_alias_p): Take alias sets into account.
16392
16393 2007-02-22  Ira Rosen  <irar@il.ibm.com>
16394
16395         PR tree-optimization/30843
16396         * tree-vect-transform.c (vect_transform_loop): Remove strided scalar
16397         stores only after all the group is vectorized.
16398
16399 2007-02-22  Dorit Nuzman  <dorit@il.ibm.com>
16400
16401         PR tree-optimization/30858
16402         * tree-vectorizer.c (vect_is_simple_reduction): Check that the stmts
16403         in the reduction cycle have a single use in the loop.
16404         * tree-vectorizer.h (relevant): Add documentation.
16405
16406 2007-02-20  Mike Stump  <mrs@apple.com>
16407
16408         * configure.ac (powerpc*-*-darwin*): #include <sys/cdefs.h>.
16409         * configure: Regenerate.
16410
16411 2007-02-21  Trevor Smigiel  <trevor_smigiel@playstation.sony.com>
16412
16413         Change the defaults of some parameters and options.
16414         * config/spu/spu-protos.h (spu_optimization_options): Declare.
16415         * config/spu/spu.c (spu_optimization_options): Add.
16416         (spu_override_options): Change params in spu_optimization_options.
16417         * config/spu/spu.h (OPTIMIZATION_OPTIONS): Define.
16418
16419         Register 127 is only 16 byte aligned when used as a frame pointer.
16420         * config/spu/spu-protos.h (spu_init_expanders): Declare.
16421         * config/spu/spu.c (spu_expand_prologue): Set REGNO_POINTER_ALIGN for
16422         HARD_FRAME_POINTER_REGNUM.
16423         (spu_legitimate_address):  Use regno_aligned_for_reload.
16424         (regno_aligned_for_load):  HARD_FRAME_POINTER_REGNUM is only 16 byte
16425         aligned when frame_pointer_needed is true.
16426         (spu_init_expanders): New.  Set alignment of HARD_FRAME_POINTER_REGNUM
16427         to 8 bits.
16428         * config/spu/spu.h (INIT_EXPANDERS): Define.
16429
16430         Make sure shift and rotate instructions have valid immediate operands.
16431         * config/spu/predicates.md (spu_shift_operand): Remove.
16432         * config/spu/spu.c (print_operand): Add [efghEFGH] modifiers.
16433         * config/spu/constraints.md (W, O): Extend range.
16434         * config/spu/spu.md (umask, nmask): Define.
16435         (ashl<mode>3, ashldi3, ashlti3_imm, shlqbybi_ti, shlqbi_ti, shlqby_ti,
16436         lshr<mode>3, rotm_<mode>, lshr<mode>3_imm, rotqmbybi_<mode>,
16437         rotqmbi_<mode>, rotqmby_<mode>, ashr<mode>3, rotma_<mode>,
16438         rotl<mode>3, rotlti3, rotqbybi_ti, rotqby_ti, rotqbi_ti): Use
16439         spu_nonmem_operand instead of spu_shift_operands.  Use new modifiers.
16440         (lshr<mode>3_reg):  Fix rtl description.
16441
16442         Make sure mulhisi immediate operands are valid.
16443         * config/spu/predicates.md (imm_K_operand): Add.
16444         * config/spu/spu.md (mulhisi3_imm, umulhisi3_imm): Use imm_K_operand.
16445
16446         Generate constants using fsmbi and andi.
16447         * config/spu/spu.c (enum immediate_class): Add IC_FSMBI2.
16448         (print_operand, spu_split_immediate, classify_immediate,
16449         fsmbi_const_p): Handle IC_FSMBI2.
16450
16451         Correctly handle a CONST_VECTOR containing symbols.
16452         * config/spu/spu.c (print_operand): Handle HIGH correctly.
16453         (spu_split_immediate): Split CONST_VECTORs with -mlarge-mem.
16454         (immediate_load_p): Allow symbols that use 2 instructions to create.
16455         (classify_immediate, spu_builtin_splats):  Don't accept a CONST_VECTOR
16456         with symbols when flag_pic is set.
16457         (const_vector_immediate_p): New.
16458         (logical_immediate_p, iohl_immediate_p, arith_immediate_p): Don't
16459         accept a CONST_VECTOR with symbols.
16460         (spu_legitimate_constant_p): Use const_vector_immediate_p.  Don't
16461         accept a CONST_VECTOR with symbols when flag_pic is set.  Handle HIGH
16462         correctly.
16463         * config/spu/spu.md (high, low): Delete.
16464         (low_<mode>): Define.
16465
16466         Remove INTRmode and INTR_REGNUM, which didn't work.
16467         * config/spu/spu.c (spu_conditional_register_usage): Remove reference
16468         of INTR_REGNUM.
16469         * config/spu/spu-builtins.md (spu_idisable, spu_ienable, set_intr,
16470         set_intr_pic, set_intr_cc, set_intr_cc_pic, set_intr_return, unnamed
16471         peephole2 pattern): Don't use INTR or 131.
16472         (movintrcc): Delete.
16473         * config/spu/spu.h (FIRST_PSEUDO_REGISTER, FIXED_REGISTERS,
16474         CALL_USED_REGISTERS, REGISTER_NAMES, INTR_REGNUM): Remove INTR_REGNUM.
16475         * config/spu/spu.md (UNSPEC_IDISABLE, UNSPEC_IENABLE): Remove.
16476         (UNSPEC_SET_INTR): Add.
16477         * config/spu/spu-modes.def (INTR): Remove.
16478
16479         More accurate warnings about run-time relocations.
16480         * config/spu/spu.c (reloc_diagnostic): Test in_section.
16481
16482         Correctly warn about immediate arguments to specific intrinsics.
16483         * config/spu/spu.c (spu_check_builtin_parm): Handle CONST_VECTORs.
16484         (spu_expand_builtin_1): Call spu_check_builtin_parm before checking
16485         the instruction predicate.
16486
16487         Fix tree check errors with latest update.
16488         * config/spu/spu.c (expand_builtin_args, spu_expand_builtin_1): Use
16489         CALL_EXPR_ARG.
16490         (spu_expand_builtin): Use CALL_EXPR_FN.
16491
16492         Add missing specific intrinsics.
16493         * config/spu/spu-builtins.def: Add si_bisled, si_bisledd and
16494         si_bislede.
16495         * config/spu/spu_internals.h: Ditto.
16496
16497         Fix incorrect operand modifiers.
16498         * config/spu/spu-builtins.md (spu_mpy, spu_mpyu):  Remove use of %H.
16499         * config/spu/spu.md (xor<mode>3):  Change %S to %J.
16500
16501         Optimize one case of zero_extend of a vec_select.
16502         * config/spu/spu.md (_vec_extractv8hi_ze):  Add.
16503
16504         Accept any immediate for hbr.
16505         * config/spu/spu.md (hbr):  Change s constraints to i.
16506
16507 2007-02-21  Paul Brook  <paul@codesourcery.com>
16508
16509         * config/arm/arm.c (thumb2_final_prescan_insn): Don't incrememnt
16510         condexec_count when skipping USE and CLOBBER.
16511
16512 2007-02-21  Nick Clifton  <nickc@redhat.com>
16513
16514         * common.opt (Warray-bounds): Add Warning attribute.
16515         (Wstrict-overflow, Wstrict-overflow=, Wcoverage-mismatch):
16516         Likewise.
16517         (fsized-zeroes): Add Optimization attribute.
16518         (fsplit-wide-types, ftree-scev-cprop): Likewise.
16519         * c.opt (Wc++0x-compat): Add Warning attribute.
16520
16521 2007-02-21  Ulrich Weigand  <uweigand@de.ibm.com>
16522
16523         PR middle-end/30761
16524         * reload1.c (eliminate_regs_in_insn): In the single_set special
16525         case, attempt to re-recognize the insn before falling back to
16526         having reload fix it up.
16527
16528 2007-02-20  Eric Christopher  <echristo@gmail.com>
16529
16530         * config/frv/frv.c (frv_read_argument): Take a tree and int argument.
16531         Rewrite accordingly.
16532         (frv_read_iacc_argument): Ditto.
16533         (frv_expand_set_builtin): Take a call instead of arglist, update for
16534         above changes.
16535         (frv_expand_unop_builtin): Ditto.
16536         (frv_expand_binop_builtin): Ditto.
16537         (frv_expand_cut_builtin): Ditto.
16538         (frv_expand_binopimm_builtin): Ditto.
16539         (frv_expand_voidbinop_builtin): Ditto.
16540         (frv_expand_int_void2arg): Ditto.
16541         (frv_expand_prefetches): Ditto.
16542         (frv_expand_voidtriop_builtin): Ditto.
16543         (frv_expand_voidaccop_builtin): Ditto.
16544         (frv_expand_load_builtin): Ditto.
16545         (frv_expand_store_builtin): Ditto.
16546         (frv_expand_mdpackh_builtin): Ditto.
16547         (frv_expand_mclracc_builtin): Ditto.
16548         (frv_expand_mrdacc_builtin): Ditto.
16549         (frv_expand_mwtacc_builtin): Ditto.
16550         (frv_expand_builtin): Remove usage of CALL_EXPR_ARGS, update
16551         calls for above.
16552
16553 2007-02-20  Janis Johnson  <janis187@us.ibm.com>
16554
16555         * doc/invoke.texi (RS/6000 and PowerPC Options): Add -mcmpb and -mdfp.
16556         * configure.ac (HAVE_GAS_CMPB): Check for assembler support of the
16557         cmpb instruction.
16558         (HAVE_GAS_DFP): Check for assembler support of decimal floating
16559         point instructions.
16560         * configure: Regenerate.
16561         * config.in: Regenerate.
16562         * config/rs6000/rs6000.opt (mcmpb, mdfp): New.
16563         * config/rs6000/rs6000.c (rs6000_override_options): Add CMPB and DFP
16564         masks to power6 and power6x and to POWERPC_MASKS.
16565         * config/rs6000/rs6000-c.c (rs6000_cpu_cpp_builtins): Define
16566         _ARCH_PWR6.
16567         * config/rs6000/rs6000.h: Check assembler support for CMPB and DFP.
16568         * config/rs6000/sysv4.opt (mprototype): Use variable, not mask.
16569         * config/rs6000/linux64.h (SUBSUBTARGET_OVERRIDE_OPTIONS):
16570         Access PROTOTYPE as variable, not mask.
16571
16572 2007-02-20  Steven Bosscher  <steven@gcc.gnu.org>
16573
16574         * rtl.h (remove_reg_equal_equiv_notes): New prototype.
16575         * rtlanal.c (remove_reg_equal_equiv_notes): New function.
16576         * combine.c (adjust_for_new_dest): Use it.
16577         * postreload.c (reload_combine): Likewise.
16578
16579 2007-02-20  Steven Bosscher  <steven@gcc.gnu.org>
16580
16581         * rtlanal.c (find_reg_equal_equiv_note): Do not find REG_EQ*
16582         notes on an insn with multiple sets, even if single_set returns
16583         non-NULL for that insn.
16584
16585 2007-02-20  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
16586
16587         * fold-const.c (tree_expr_nonnegative_warnv_p): Handle scalb,
16588         scalbn and scalbln.
16589
16590 2007-02-20  Geoffrey Keating  <geoffk@apple.com>
16591
16592         * config/darwin.h (LINK_SPEC): Default -mmacosx-version-min only
16593         if user didn't pass it.
16594         * config/i386/darwin.h (CC1_SPEC): Likewise.
16595         * config/rs6000/darwin.h (CC1_SPEC): Likewise.
16596         (DARWIN_MINVERSION_SPEC): Don't depend on user's setting of
16597         -mmacosx-version-min.
16598
16599 2007-02-20  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
16600             Uros Bizjak  <ubizjak@gmail.com>
16601
16602         * optabs.h (enum optab_index): Add new OTI_scalb.
16603         (scalb_optab): Define corresponding macro.
16604         * optabs.c (init_optabs): Initialize scalb_optab.
16605         * genopinit.c (optabs): Implement scalb_optab using scalb?f3
16606         patterns.
16607         * builtins.c (expand_builtin_mathfn_2, expand_builtin): Handle
16608         BUILT_IN_SCALB{,F,L}, BUILT_IN_SCALBN{,F,L} and BUILT_IN_SCALBLN{,F,L}.
16609         (expand_builtin): Expand BUILT_IN_SCALB{,F,L}, BUILT_IN_SCALBN{,F,L}
16610         and BUILT_IN_SCALBLN{,F,L} using expand_builtin_mathfn_2 if
16611         flag_unsafe_math_optimizations is set.
16612
16613         * config/i386/i386.md (scalbxf3, scalb<mode>3): New expanders
16614         to implement scalbf, scalb and scalbl built-ins as inline x87
16615         intrinsics.
16616
16617 2007-02-20  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
16618             DJ Delorie <dj@redhat.com>
16619
16620         PR other/30824
16621         * diagnostic.c (diagnostic_count_diagnostic): Move -Werror logic to...
16622         (diagnostic_report_diagnostic): ... here, and turn them into real
16623         errors. If warnings are inhibited, no need to do anything.
16624
16625 2007-02-20  Uros Bizjak  <ubizjak@gmail.com>
16626
16627         * config/i386/i386.md (expm1xf2): Reorder insn sequence for
16628         better code generation.
16629
16630 2007-02-20  Ben Elliston  <bje@au.ibm.com>
16631
16632         * config/m68hc11/m68hc11.h (OVERRIDE_OPTIONS): Remove extra ;.
16633
16634 2007-02-20  Kazu Hirata  <kazu@codesourcery.com>
16635
16636         * config/alpha/alpha.c, config/alpha/alpha.md,
16637         config/alpha/lib1funcs.asm, config/alpha/vms-crt0-64.c,
16638         config/alpha/vms-psxcrt0-64.c, config/arc/arc.c,
16639         config/arc/arc.h, config/arm/arm.c, config/arm/arm.md,
16640         config/arm/lib1funcs.asm: Follow spelling conventions.
16641
16642         * config/c4x/c4x.md, config/cris/cris.c, config/crx/crx.c,
16643         config/fr30/fr30.md, config/i386/i386.h,
16644         config/iq2000/iq2000.h, config/iq2000/predicates.md,
16645         config/pa/milli64.S, config/pa/pa.c, config/pa/pa.h,
16646         config/pa/pa.md, config/pa/pa32-regs.h, config/pa/pa64-regs.h,
16647         config/pdp11/pdp11.c, config/pdp11/pdp11.h,
16648         config/rs6000/altivec.md, config/rs6000/rs6000.c,
16649         config/s390/s390-modes.def, config/sparc/netbsd-elf.h,
16650         config/sparc/sparc.c, config/sparc/sparc.h,
16651         config/sparc/sparc.md, config/spu/constraints.md,
16652         config/spu/spu.c, config/stormy16/stormy16.md: Follow spelling
16653         conventions.
16654
16655 2007-02-20  Alan Modra  <amodra@bigpond.net.au>
16656
16657         PR target/29943
16658         * varasm.c (use_blocks_for_decl_p): Return false for decls with
16659         alias attribute.
16660
16661 2007-02-19  Kazu Hirata  <kazu@codesourcery.com>
16662
16663         * doc/invoke.texi (-ftree-lrs): Remove.
16664
16665 2007-02-19  Diego Novillo  <dnovillo@redhat.com>
16666
16667         * tree-ssa-pre.c (create_value_expr_from): Initialize POOL to
16668         NULL.
16669
16670 2007-02-19  Lee Millward  <lee.millward@codesourcery.com>
16671
16672         * config/ia64/ia64.c (ia64_expand_builtin): Use the
16673         new CALL_EXPR_FN macro for retrieving the function
16674         declaration of the input expression.
16675
16676 2007-02-19  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
16677
16678         * c.opt (Waddress): New.
16679         * common.opt (Walways-true): Delete.
16680         (Wstring-literal-comparison): Delete.
16681         * doc/invoke.texi (Warning Options): Delete -Walways-true and
16682         -Wstring-literal-comparison. Add -Waddress.
16683         (Waddress): New.
16684         (Walways-true): Delete.
16685         (Wstring-literal-comparison): Delete.
16686         * doc/extend.texi (#pragma GCC diagnostic): Use -Wformat
16687         consistently instead of -Walways-true in example.
16688         * c-opts.c (c_common_handle_option): -Waddress is enabled by -Wall.
16689         * c-typeck.c (parser_build_binary_op): Replace
16690         -Wstring-literal-comparison and -Walways-true with -Waddress.
16691         * c-common.c (c_common_truthvalue_conversion): Replace -Walways-true
16692         with -Waddress.
16693
16694 2007-02-19  Eric Botcazou  <ebotcazou@adacore.com>
16695
16696         * tree-cfg.c (dump_function_to_file): Be prepared for functions
16697         without DECL_STRUCT_FUNCTION initialized.
16698
16699 2007-02-19  Eric Botcazou  <ebotcazou@adacore.com>
16700
16701         * gimplify.c (gimplify_init_ctor_preeval_1): Detect potential overlap
16702         due to calls to functions taking pointers as parameters.
16703
16704 2007-02-19  Richard Henderson  <rth@redhat.com>
16705
16706         PR debug/29558
16707         * var-tracking.c (track_expr_p): Disallow AGGREGATE_TYPE_P
16708         in memory.
16709
16710 2007-02-19  Andreas Krebbel  <krebbel1@de.ibm.com>
16711
16712         * config/s390/s390.c (s390_call_saved_register_used,
16713         s390_function_ok_for_sibcall): Adjust the way CALL_EXPR arguments are
16714         accessed to the new scheme.
16715
16716 2007-02-19  Jan-Benedict Glaw  <jbglaw@lug-owl.de>
16717
16718         * config/cris/cris.c (cris_movem_load_rest_p, cris_store_multiple_op_p)
16719         (cris_print_index, cris_print_operand, cris_print_operand_address)
16720         (cris_reload_address_legitimized, cris_rtx_costs, cris_address_cost)
16721         (cris_side_effect_mode_ok, cris_valid_pic_const, cris_split_movdx)
16722         (cris_expand_pic_call_address): Use xxx_P predicate macros instead of
16723         GET_CODE () == xxx.
16724         * config/cris/cris.h (SECONDARY_RELOAD_CLASS, EXTRA_CONSTRAINT_Q,
16725         EXTRA_CONSTRAINT_T, BDAP_INDEX_P, BIAP_INDEX_P, SIMPLE_ADDRESS_P,
16726         GO_IF_LEGITIMATE_ADDRESS): Ditto.
16727         * config/cris/cris.md (define_insns: *btst, movdi, *mov_side<mode>)
16728         (*mov_sidesisf, *mov_side<mode>_mem, *mov_sidesisf_mem)
16729         (*clear_side<mode>, movsi, *movsi_internal, *ext_sideqihi)
16730         (*ext_side<mode>si, *op_side<mode>, *op_swap_side<mode>, addsi3)
16731         (*extopqihi_side, *extop<mode>si_side, *extopqihi_swap_side)
16732         (*extop<mode>si_swap_side, addi_mul, *addi,andsi3, andhi3, ashl<mode>3)
16733         (uminsi3, call, call_value): Ditto.
16734         (define_split: indir_to_reg_split, unnamed): Ditto.
16735
16736 2007-02-19  Dorit Nuzman  <dorit@il.ibm.com>
16737
16738         PR tree-optimization/30975
16739         * tree-vect-trasnform.c (vect_get_vec_def_for_stmt_copy): Remove
16740         wrong assert.
16741
16742 2007-02-18  Eric Christopher  <echristo@gmail.com>
16743
16744         * mips.c (mips_prepare_builtin_arg): Add argnum parameter.
16745         Remove use of arglist.
16746         (mips_expand_builtin): Remove use of arglist, pass in expr.
16747         (mips_expand_builtin_direct): Rewrite handling for arglist removal.
16748         (mips_expand_builtin_movtf): Ditto.
16749         (mips_expand_builtin_compare): Ditto.
16750
16751 2007-02-19  Alexandre Oliva  <aoliva@redhat.com>
16752
16753         * tree-sra.c (sra_build_assignment): Replace assertion
16754         checking with a comment explaining why it can't be done.
16755
16756 2007-02-18  Sandra Loosemore  <sandra@codesourcery.com>
16757
16758         PR middle-end/30833
16759         * tree-dump.c (dequeue_and_dump): Add tcc_vl_exp case missed
16760         during CALL_EXPR representation conversion.
16761         * tree-ssa-propagate.c (set_rhs): Likewise.
16762
16763 2007-02-19  Alexandre Oliva  <aoliva@redhat.com>
16764
16765         * tree-sra.c (sra_build_assignment): Disable assertion checking
16766         for now.
16767
16768 2007-02-18  Roger Sayle  <roger@eyesopen.com>
16769
16770         * function.c (gimplify_parameters): Call build_gimple_modify_stmt
16771         instead of calling build2 with a GIMPLE_MODIFY_STMT.
16772         * gimple-low.c (lower_function_body, lower_builtin_setjmp):
16773         Likewise.
16774         * gimplify.c (build_stack_save_restore, gimplify_return_expr,
16775         gimplify_decl_expr,  gimplify_self_mod_expr, gimplify_cond_expr,
16776         gimplify_init_ctor_eval_range, gimple_push_cleanup,
16777         gimplify_omp_for, gimplify_omp_atomic_pipeline,
16778         gimplify_omp_atomic_mutex, gimplify_expr, gimplify_one_sizepos,
16779         force_gimple_operand): Likewise.
16780         * ipa-cp.c (constant_val_insert): Likewise.
16781         * lambda-code.c (lbv_to_gcc_expression, lle_to_gcc_expression,
16782         lambda_loopnest_to_gcc_loopnest, replace_uses_equiv_to_x_with_y,
16783         perfect_nestify): Likewise.
16784         * langhooks.c (lhd_omp_assignment): Likewise.
16785         * omp-low.c (lower_rec_input_clauses, lower_reduction_clauses,
16786         lower_copyprivate_clauses, lower_send_clauses,
16787         lower_send_shared_vars, expand_parallel_call,
16788         expand_omp_for_generic, expand_omp_for_static_nochunk,
16789         expand_omp_for_static_chunk, expand_omp_sections,
16790         lower_omp_single_copy, lower_omp_for_lastprivate,
16791         lower_omp_parallel, init_tmp_var, save_tmp_var): Likewise.
16792         * value-prof.c (tree_divmod_fixed_value, tree_mod_pow2,
16793         tree_mod_subtract, tree_ic, tree_stringop_fixed_value):
16794         Likewise.
16795
16796 2007-02-19  Kazu Hirata  <kazu@codesourcery.com>
16797
16798         * config/sh/divtab.c, config/sh/sh.c, config/sh/sh.h,
16799         config/sh/sh.md: Follow spelling conventions.
16800
16801         * config/frv/frv.c, config/frv/frv.h, config/frv/frv.md,
16802         config/frv/predicates.md: Follow spelling conventions.
16803
16804         * config/m68k/linux-unwind.h: Fix a comment typo.
16805         * target.h: Follow spelling conventions.
16806
16807 2007-02-18  Roger Sayle  <roger@eyesopen.com>
16808
16809         PR rtl-optimization/28173
16810         * simplify-rtx.c (simplify_binary_operation_1) <IOR>:  Optimize
16811         (X & C1) | C2 as C2 when (C1 & C2) == C1 and X has no side-effects.
16812         Optimize (X & C1) | C2 as X | C2 when (C1 | C2) == ~0.
16813         Canonicalize (X & C1) | C2 as (X & (C1 & ~C2)) | C2.
16814         <AND>: Canonicalize (X | C1) & C2 as (X & C2) | (C1 & C2).
16815
16816 2007-02-18  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
16817
16818         * builtins.c (fold_builtin_load_exponent): New.
16819         (fold_builtin_2): Use it.
16820
16821 2007-02-18  Steven Bosscher  <steven@gcc.gnu.org>
16822
16823         PR rtl-optimization/30773
16824         * local-alloc.c (update_equiv_regs): Do not set reg_equiv_init
16825         if we fail to attach a REG_EQUIV note.
16826
16827 2007-02-18  David Edelsohn  <edelsohn@gnu.org>
16828             Roger Sayle  <roger@eyesopen.com>
16829
16830         * config/rs6000/rs6000.md (bswapsi2): New define_insn and splitter.
16831
16832 2007-02-18  Sandra Loosemore  <sandra@codesourcery.com>
16833
16834         * calls.c (initialize_argument_information): Pass original EXP
16835         and STRUCT_VALUE_ADDR_VALUE instead of a list of arguments.  Move
16836         code to split complex arguments here, as part of initializing the
16837         ARGS array.
16838         (expand_call): Remove code that builds a list of arguments and
16839         inserts implicit arguments into it.  Instead, just count how many
16840         implicit arguments there will be so we can determine the size of
16841         the ARGS array, and let initialize_argument_information do the work.
16842         (split_complex_values): Delete unused function.
16843
16844 2007-02-18  Eric Botcazou  <ebotcazou@adacore.com>
16845
16846         * tree-eh.c (tree_could_trap_p): Handle VIEW_CONVERT_EXPR.
16847
16848 2007-02-18  Eric Botcazou  <ebotcazou@adacore.com>
16849
16850         * calls.c (mem_overlaps_already_clobbered_arg_p): Return true
16851         for arg pointer based indexed addressing.
16852
16853 2007-02-18  Kazu Hirata  <kazu@codesourcery.com>
16854
16855         * config/ia64/ia64.h, config/ia64/ia64.md,
16856         config/ia64/predicates.md, config/ia64/sysv4.h: Follow
16857         spelling conventions.
16858
16859 2007-02-18  Roman Zippel <zippel@linux-m68k.org>
16860
16861         * config/m68k/m68k.c (split_di): New.
16862         * config/m68k/m68k-protos.h: Declare split_di.
16863         * config/m68k/m68k.md (extendsidi2*,ashldi3*,ashrdi3*,lshrdi3*):
16864           Improve predicate handling and split constant shifts.
16865
16866 2007-02-18  Roman Zippel <zippel@linux-m68k.org>
16867
16868         * config/m68k/m68k.md (extv,extzv,insv): disable dynamic
16869         parameter for register bitfield operations, general predicates
16870         cleanup
16871
16872 2007-02-18  Roman Zippel <zippel@linux-m68k.org>
16873
16874         * config/m68k/linux.h (MD_UNWIND_SUPPORT): Define.
16875         * config/m68k/linux-unwind.h: New file.
16876
16877 2007-02-18  Kazu Hirata  <kazu@codesourcery.com>
16878
16879         * cfgloop.c, config/alpha/alpha.c, config/bfin/bfin.c,
16880         config/i386/athlon.md, config/ia64/ia64.md,
16881         config/rs6000/rs6000.c, config/s390/s390.c, config/spu/spu.md,
16882         df-problems.c, df.h, fold-const.c, ipa-cp.c, ipa-inline.c,
16883         ipa-prop.h, see.c, struct-equiv.c, tree-inline.c,
16884         tree-ssa-loop-niter.c, tree-vect-analyze.c,
16885         tree-vect-transform.c: Fix comment typos.
16886
16887 2007-02-17  Kazu Hirata  <kazu@codesourcery.com>
16888
16889         * sched-deps.c (find_insn_list): Remove.
16890         * sched-int.h: Remove the prototype for find_insn_list.
16891
16892 2007-02-16  Geoffrey Keating  <geoffk@apple.com>
16893
16894         * config/darwin.h (LINK_SPEC): Always pass -macosx_version_min
16895         to linker.
16896         (DARWIN_EXTRA_SPECS): Add %(darwin_minversion).
16897         * config/rs6000/darwin.h (SUBTARGET_OVERRIDE_OPTIONS): Just call
16898         darwin_rs6000_override_options.
16899         (C_COMMON_OVERRIDE_OPTIONS): Expect
16900         darwin_macosx_version_min to be non-NULL always.
16901         (TARGET_C99_FUNCTIONS): Likewise.
16902         (CC1_SPEC): Always pass -mmacosx-version-min to cc1*.
16903         (DARWIN_MINVERSION_SPEC): New.
16904         * config/rs6000/rs6000.c (darwin_rs6000_override_options): New.
16905         * config/i386/darwin.h (CC1_SPEC): Always pass -mmacosx-version-min
16906         to cc1*.
16907         (DARWIN_MINVERSION_SPEC): New.
16908         * config/darwin.opt (mmacosx-version-min): Initialize to non-NULL
16909         value.
16910         * config/darwin-c.c (darwin_cpp_builtins): Expect
16911         darwin_macosx_version_min to be non-NULL always.
16912
16913         * config/rs6000/rs6000.c: Clean up trailing whitespace.
16914
16915 2007-02-16  Uros Bizjak  <ubizjak@gmail.com>
16916
16917         * config/i386/i386.h (x86_use_xchgb): New.
16918         (TARGET_USE_XCHGB): New macro.
16919         * config/i386/i386.c (x86_use_xchgb): Set for PENT4.
16920         * config/i386/i386.md (*rotlhi3_1 splitter, *rotrhi3_1 splitter):
16921         Split after reload into bswaphi for shifts of 8.
16922         (bswaphi_lowpart): Generate rolw insn for HImode byte swaps.
16923         (*bswaphi_lowpart_1): Generate xchgb for Q registers for TARGET_XCHGB
16924         or when optimizing for size.
16925
16926 2007-02-16  Richard Guenther  <rguenther@suse.de>
16927             Christian Bruel  <christian.bruel@st.com>
16928
16929         * fold-const.c (tree_swap_operands_p): Treat SSA_NAMEs like
16930         DECLs but prefer SSA_NAMEs over DECLs.
16931
16932 2007-02-16  Richard Guenther  <rguenther@suse.de>
16933
16934         * tree-flow-inline.h (single_imm_use_p): Remove.
16935         (zero_imm_uses_p): Likewise.
16936         * tree-ssa-coalesce.c (create_outofssa_var_map): Use has_single_use
16937         instead of single_imm_use_p.
16938         * tree-cfg.c (replace_uses_by): Use has_zero_use instead of
16939         zero_imm_uses_p.
16940
16941 2007-02-16  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
16942
16943         PR other/27843
16944         * Makefile.in (SYSTEM_HEADER_DIR): Use single quotes to avoid
16945         nested double- and backquotes.
16946
16947 2007-02-15  Roger Sayle  <roger@eyesopen.com>
16948
16949         PR middle-end/30391
16950         * tree.c (expr_align): Handle MODIFY_EXPR.  GIMPLE_MODIFY_STMT
16951         should be unreachable.
16952         (build2_stat): Allow construction of MODIFY_EXPR at any time.
16953         For the time being redirect GIMPLE_MODIFY_STMT to the new
16954         (renamed) build_gimple_modify_stmt_stat.
16955         (build2_gimple_stat): Rename to...
16956         (build_gimple_modify_stmt_stat): Now longer take a CODE argument.
16957         Always build a GIMPLE_MODIFY_STMT node.
16958         * tree.h (build2_gimple, build2_gimple_stat): Delete.
16959         (build_gimple_modify_stmt, build_gimple_modify_stmt_stat): New
16960         declarations.
16961
16962         * tree-cfg.c (factor_computed_gotos, tree_merge_blocks,
16963         gimplify_val): Use build_gimple_modify_stmt instead of build2_gimple.
16964         * tree-complex.c (set_component_ssa_name, expand_complex_move,
16965         expand_complex_div_wide): Likewise.
16966         * tree-ssa-dom.c (record_equivalences_from_stmt): Likewise.
16967         * tree-ssa-loop-im.c (schedule_sm): Likewise.
16968         * tree-ssa-loop-ivopts.c (rewrite_use_nonlinear_expr): Likewise.
16969         * tree-ssa-loop-manip.c (create_iv): Likewise.
16970         * tree-ssa-phiopt.c (conditional_replacement, minmax_replacement,
16971         abs_replacement): Likewise.
16972         * tree-ssa-pre.c (create_expression_by_pieces, poolify_modify_stmt,
16973         realify_fake_stores): Likewise.
16974
16975         * builtins.c (std_expand_builtin_va_start): Build a MODIFY_EXPR
16976         node rather than a GIMPLE_MODIFY_STMT node.
16977         (std_gimpify_va_arg_expr, expand_builtin_va_copy,
16978         fold_builtin_memset, fold_builtin_memory_op, do_mpfr_sincos):
16979         Likewise.
16980         (integer_valued_real_p): Handle MODIFY_EXPR, not GIMPLE_MODIFY_STMT.
16981         * expr.c (expand_expr_real_1): Handle both MODIFY_EXPR and
16982         GIMPLE_MODIFY_STMT.
16983
16984 2007-02-15  Andrew Pinski  <andrew_pinski@playstation.sony.com>
16985
16986         PR middle-end/30433
16987         * fold-const.c (fold_comparison): Add back the
16988         folding of constant complex comparisions.
16989
16990 2007-02-15  Andrew Pinski  <andrew_pinski@playstation.sony.com>
16991
16992         PR middle-end/30729
16993         * stmt.c (warn_if_unused_value): VA_ARG_EXPR has side
16994         effects unknown to this function, return early.
16995
16996 2007-02-15  Ian Lance Taylor  <iant@google.com>
16997
16998         * lower-subreg.c (move_eh_region_note): New static function.
16999         (resolve_simple_move): Call it.
17000         (decompose_multiword_subregs): Track blocks for which we resolve a
17001         simple move which is also a control flow insn.  Pass them to
17002         find_many_sub_basic_blocks.
17003         (pass_lower_subreg): Add TODO_verify_flow.
17004         (pass_lower_subreg2): Likewise.
17005
17006 2007-02-15  Sandra Loosemore  <sandra@codesourcery.com>
17007             Brooks Moses  <brooks.moses@codesourcery.com>
17008             Lee Millward  <lee.millward@codesourcery.com>
17009
17010         * tree.h (enum tree_code_class): Add tcc_vl_exp.
17011         (VL_EXP_CLASS_P): New.
17012         (TREE_OPERAND_CHECK): Use TREE_OPERAND_LENGTH instead of
17013         TREE_CODE_LENGTH.
17014         (TREE_OPERAND_CHECK_CODE): Likewise.
17015         (GIMPLE_STMT_OPERAND_CHECK): Likewise.
17016         (TREE_RTL_OPERAND_CHECK): Likewise.
17017         (tree_operand_check_failed): Make second parameter the whole tree
17018         instead of its code.  Fixed callers.
17019         (VL_EXP_CHECK): New.
17020         (TREE_OPERAND_LENGTH): New.
17021         (VL_EXP_OPERAND_LENGTH): New.
17022         (CALL_EXPR_FN): New.
17023         (CALL_EXPR_STATIC_CHAIN): New.
17024         (CALL_EXPR_ARGS): New.
17025         (CALL_EXPR_ARG): New.
17026         (call_expr_nargs): New.
17027         (CALL_EXPR_ARGP): New.
17028         (build_nt_call_list): Declare.
17029         (build_vl_exp_stat): Declare.
17030         (build_vl_exp): New.
17031         (build_call_list): Declare.
17032         (build_call_nary): Declare.
17033         (build_call_valist): Declare.
17034         (build_call_array): Declare.
17035         (call_expr_arg): Declare.
17036         (call_expr_argp): Declare.
17037         (call_expr_arglist): Declare.
17038         (fold_build_call_list): Declare.
17039         (fold_build_call_list_initializer): Declare.
17040         (fold_call_expr): Declare to replace fold_builtin.
17041         (fold_builtin_fputs): Update to agree with modified definition.
17042         (fold_builtin_strcpy): Likewise.
17043         (fold_builtin_strncpy): Likewise.
17044         (fold_builtin_memory_chk): Likewise.
17045         (fold_builtin_stxcpy_chk): Likewise.
17046         (fold_builtin_strncpy_chk): Likewise.
17047         (fold_builtin_next_arg): Likewise.
17048         (fold_build_call_expr): Declare.
17049         (fold_builtin_call_list): Declare.
17050         (fold_builtin_call_valist): Declare.
17051         (build_call_expr): Declare.
17052         (validate_arglist): Update to agree with modified definition.
17053         (tree_operand_length): New.
17054         (call_expr_arg_iterator): New.
17055         (init_call_expr_arg_iterator): New.
17056         (next_call_expr_arg): New.
17057         (first_call_expr_arg): New.
17058         (more_call_expr_args_p): New.
17059         (FOR_EACH_CALL_EXPR_ARG): New.
17060
17061         * tree.c (tree_code_class_string): Add entries for tcc_vl_exp
17062         and tcc_gimple_stmt.
17063         (tree_code_size): Update documentation.  Use sizeof (tree) rather
17064         than sizeof (char *).
17065         (tree_size): Likewise.  Add case for tcc_vl_exp.
17066         (tree_node_structure): Add case for tcc_vl_exp.
17067         (contains_placeholder_p): Likewise.
17068         (substitute_in_expr): Likewise.
17069         (substitute_placeholder_in_expr): Likewise.
17070         (stabilize_reference_1): Likewise.
17071         (build3_stat): Remove logic for CALL_EXPRs.  Replace with assertion
17072         to diagnose breakage of this interface for constructing CALL_EXPRs.
17073         (build_nt): Add similar assertion here.
17074         (build_nt_call_list): New.
17075         (simple_cst_equal) <CALL_EXPR>: Rewrite to use new accessors.
17076         (iterative_hash_expr): Use TREE_OPERAND_LENGTH instead of
17077         TREE_CODE_LENGTH.
17078         (get_callee_fndecl): Use new CALL_EXPR accessors.
17079         (tree_operand_check_failed): Change parameters to pass entire node
17080         instead of its code, so that we can call TREE_OPERAND_LENGTH on it.
17081         (process_call_operands): New.
17082         (build_vl_exp_stat): New.
17083         (build_call_list): New.
17084         (build_call_nary): New.
17085         (build_call_valist): New.
17086         (build_call_array): New.
17087         (walk_tree): Use TREE_OPERAND_LENGTH instead of TREE_CODE_LENGTH.
17088         (call_expr_arglist): New.
17089
17090         * tree.def (CALL_EXPR): Change representation of CALL_EXPRs to use
17091         tcc_vl_exp instead of a fixed-size tcc_expression.
17092
17093         * doc/c-tree.texi (CALL_EXPR): Document new representation and
17094         accessors for CALL_EXPRs.
17095         (AGGR_INIT_EXPR): Likewise.
17096
17097 2007-02-15  Sandra Loosemore  <sandra@codesourcery.com>
17098             Brooks Moses  <brooks.moses@codesourcery.com>
17099             Lee Millward  <lee.millward@codesourcery.com>
17100
17101         * builtins.c (c_strlen): Return NULL_TREE instead of 0.
17102         (expand_builtin_nonlocal_goto): Change parameter to be entire
17103         CALL_EXPR instead of an arglist.  Use new CALL_EXPR accessors.
17104         (expand_builtin_prefetch): Likewise.
17105         (expand_builtin_classify_type): Likewise.
17106         (mathfn_built_in): Return NULL_TREE instead of 0.
17107         (expand_errno_check): Use new CALL_EXPR accessors.
17108         (expand_builtin_mathfn): Use new CALL_EXPR accessors and constructors.
17109         Return NULL_RTX instead of 0.
17110         (expand_builtin_mathfn_2): Likewise.
17111         (expand_builtin_mathfn_3): Likewise.
17112         (expand_builtin_interclass_mathfn): Likewise.
17113         (expand_builtin_sincos): Likewise.
17114         (expand_builtin_cexpi): Likewise.
17115         (expand_builtin_int_roundingfn): Likewise.
17116         (expand_builtin_int_roundingfn_2): Likewise.
17117         (expand_builtin_pow): Likewise.
17118         (expand_builtin_powi): Likewise.
17119         (expand_builtin_strlen): Pass entire CALL_EXPR as parameter instead
17120         of arglist, fixing callers appropriately.  Use new CALL_EXPR
17121         accessors and constructors.  Return NULL_RTX instead of 0.
17122         (expand_builtin_strstr): Likewise.
17123         (expand_builtin_strchr): Likewise.
17124         (expand_builtin_strrchr): Likewise.
17125         (expand_builtin_strpbrk): Likewise.
17126         (expand_builtin_memcpy): Likewise.
17127         (expand_builtin_mempcpy): Likewise.
17128         (expand_builtin_mempcpy_args): New.
17129         (expand_builtin_memmove): Similarly to expand_builtin_mempcpy.
17130         (expand_builtin_memmove_args): New.
17131         (expand_builtin_bcopy): Similarly to expand_builtin_mempcpy.
17132         (expand_movstr): Likewise.
17133         (expand_builtin_strcpy): Likewise.
17134         (expand_builtin_strcpy_args): New.
17135         (expand_builtin_stpcpy): Similarly to expand_builtin_strcpy.
17136         (expand_builtin_strncpy): Likewise.
17137         (expand_builtin_memset): Likewise.
17138         (expand_builtin_memset_args): New.
17139         (expand_builtin_bzero): Similarly to expand_builtin_memset.
17140         (expand_builtin_memcmp): Likewise.
17141         (expand_builtin_strcmp): Likewise.
17142         (expand_builtin_strncmp): Likewise.
17143         (expand_builtin_strcat): Likewise.
17144         (expand_builtin_strncat): Likewise.
17145         (expand_builtin_strspn): Likewise.
17146         (expand_builtin_strcspn): Likewise.
17147         (expand_builtin_args_info): Likewise.
17148         (expand_builtin_va_start): Likewise.
17149         (gimplify_va_arg_expr): Likewise.
17150         (expand_builtin_va_end): Likewise.
17151         (expand_builtin_va_copy): Likewise.
17152         (expand_builtin_frame_address): Likewise.
17153         (expand_builtin_alloca): Likewise.
17154         (expand_builtin_bswap): Likewise.
17155         (expand_builtin_unop): Likewise.
17156         (expand_builtin_fputs): Likewise.
17157         (expand_builtin_expect): Likewise.
17158         (expand_builtin_fabs): Likewise.
17159         (expand_builtin_copysign): Likewise.
17160         (expand_builtin_printf): Likewise.
17161         (expand_builtin_fprintf): Likewise.
17162         (expand_builtin_sprintf): Likewise.
17163         (expand_builtin_init_trampoline): Likewise.
17164         (expand_builtin_signbit): Likewise.
17165         (expand_builtin_fork_or_exec): Likewise.
17166         (expand_builtin_sync_operation): Likewise.
17167         (expand_builtin_compare_and_swap): Likewise.
17168         (expand_builtin_lock_test_and_set): Likewise.
17169         (expand_builtin_lock_release): Likewise.
17170         (expand_builtin): Likewise.
17171         (builtin_mathfn_code): Likewise.
17172
17173         (fold_builtin_constant_p): Pass call arguments individually instead
17174         of as an arglist, fixing callers appropriately.  Use new CALL_EXPR
17175         accessors and constructors.  Return NULL_TREE instead of 0.
17176         (fold_builtin_expect): Likewise.
17177         (fold_builtin_classify_type): Likewise.
17178         (fold_builtin_strlen): Likewise.
17179         (fold_builtin_nan): Likewise.
17180         (integer_valued_real_p): Likewise.
17181         (fold_trunc_transparent_mathfn): Likewise.
17182         (fold_fixed_mathfn): Likewise.
17183         (fold_builtin_cabs): Likewise.
17184         (fold_builtin_sqrt): Likewise.
17185         (fold_builtin_cbrt): Likewise.
17186         (fold_builtin_cos): Likewise.
17187         (fold_builtin_cosh): Likewise.
17188         (fold_builtin_tan): Likewise.
17189         (fold_builtin_sincos): Likewise.
17190         (fold_builtin_cexp): Likewise.
17191         (fold_builtin_trunc): Likewise.
17192         (fold_builtin_floor): Likewise.
17193         (fold_builtin_ceil): Likewise.
17194         (fold_builtin_round): Likewise.
17195         (fold_builtin_int_roundingfn): Likewise.
17196         (fold_builtin_bitop): Likewise.
17197         (fold_builtin_bswap): Likewise.
17198         (fold_builtin_logarithm): Likewise.
17199         (fold_builtin_hypot): Likewise.
17200         (fold_builtin_pow): Likewise.
17201         (fold_builtin_powi): Likewise.
17202         (fold_builtin_exponent): Likewise.
17203         (fold_builtin_memset): Likewise.
17204         (fold_builtin_bzero): Likewise.
17205         (fold_builtin_memory_op): Likewise.
17206         (fold_builtin_bcopy): Deleted; call site changed to invoke
17207         fold_builtin_memory_op directly.
17208         (fold_builtin_strcpy): Similarly as for fold_builtin_memory_op.
17209         (fold_builtin_strncpy): Likewise.
17210         (fold_builtin_memcmp): Likewise.
17211         (fold_builtin_strcmp): Likewise.
17212         (fold_builtin_strncmp): Likewise.
17213         (fold_builtin_signbit): Likewise.
17214         (fold_builtin_copysign): Likewise.
17215         (fold_builtin_isascii): Likewise.
17216         (fold_builtin_toascii): Likewise.
17217         (fold_builtin_isdigit): Likewise.
17218         (fold_builtin_fabs): Likewise.
17219         (fold_builtin_abs): Likewise.
17220         (fold_builtin_fmin_fmax): Likewise.
17221         (fold_builtin_carg): Likewise.
17222         (fold_builtin_classify): Likewise.
17223         (fold_builtin_unordered_cmp): Likewise.
17224
17225         (fold_builtin_0, fold_builtin_2, fold_builtin_3, fold_builtin_4):
17226         New functions split out from fold_builtin_1.
17227         (fold_builtin_n): New.
17228         (fold_builtin_varargs): New.
17229         (fold_builtin): Deleted.  Most callers changed to use fold_call_expr
17230         instead.
17231         (fold_call_expr): New.
17232         (build_function_call_expr): Rewrite to use new helper function.
17233         (fold_builtin_call_list): New.
17234         (build_call_expr): New.
17235         (fold_builtin_call_valist): New.
17236         (rewrite_call_expr): New.
17237         (validate_arg): New.
17238         (validate_arglist): Change parameter to be entire CALL_EXPR instead
17239         of an arglist.  Change return type to bool.  Use new CALL_EXPR
17240         accessors.
17241
17242         (fold_builtin_strstr):  Pass call arguments individually instead
17243         of as an arglist, fixing callers appropriately.  Use new CALL_EXPR
17244         accessors and constructors.  Return NULL_TREE instead of 0.
17245         (fold_builtin_strchr): Likewise.
17246         (fold_builtin_strrchr): Likewise.
17247         (fold_builtin_strpbrk): Likewise.
17248         (fold_builtin_strcat): Likewise.
17249         (fold_builtin_strncat): Likewise.
17250         (fold_builtin_strspn): Likewise.
17251         (fold_builtin_strcspn): Likewise.
17252         (fold_builtin_fputs): Likewise.
17253         (fold_builtin_next_arg): Likewise.
17254         (fold_builtin_sprintf): Likewise.
17255
17256         (expand_builtin_object_size): Use new CALL_EXPR accessors.  Use
17257         NULL_RTX instead of 0.
17258         (expand_builtin_memory_chk): Likewise.
17259         (maybe_emit_chk_warning): Likewise.
17260         (maybe_emit_sprintf_chk_warning): Likewise.
17261
17262         (fold_builtin_object_size): Pass call arguments individually instead
17263         of as an arglist, fixing callers appropriately.  Use new CALL_EXPR
17264         accessors and constructors.  Return NULL_TREE instead of 0.
17265         (fold_builtin_memory_chk): Likewise.
17266         (fold_builtin_stxcpy_chk): Likewise.
17267         (fold_builtin_strncpy_chk): Likewise.
17268         (fold_builtin_strcat_chk): Likewise.
17269         (fold_builtin_strcat_chk): Likewise.
17270         (fold_builtin_strncat_chk): Likewise.
17271         (fold_builtin_sprintf_chk): Likewise.
17272         (fold_builtin_snprintf_chk): Likewise.
17273         (fold_builtin_printf): Likewise.
17274         (fold_builtin_vprintf): Likewise.
17275
17276         * fold-const.c (negate_expr_p): Use new CALL_EXPR accessors and
17277         constructors.
17278         (operand_equal_p): Add separate tcc_vl_exp/CALL_EXPR case.
17279         (make_range): Use TREE_OPERAND_LENGTH instead of TREE_CODE_LENGTH.
17280         (extract_muldiv_1): Add VL_EXP_CLASS_P case.
17281         (fold_mathfn_compare): Use new CALL_EXPR accessors and constructors.
17282         (fold_unary): Likewise.
17283         (fold_binary): Likewise.
17284         (fold_ternary): Remove CALL_EXPR case, since they are no longer
17285         ternary expressions.
17286         (fold): Add logic for tcc_vl_exp.
17287         (fold_checksum_tree):  Make it know about tcc_vl_exp.  Use
17288         TREE_OPERAND_LENGTH instead of TREE_CODE_LENGTH.
17289         (fold_build3_stat): Add assertion to flag broken interface for
17290         constructing CALL_EXPRs.
17291         (fold_build_call_list): New.
17292         (fold_build_call_list_initializer): New.
17293         (tree_expr_nonnegative_p): Use new CALL_EXPR accessors and
17294         constructors.
17295         (fold_strip_sign_ops): Likewise.
17296
17297 2007-02-15  Sandra Loosemore  <sandra@codesourcery.com>
17298             Brooks Moses  <brooks.moses@codesourcery.com>
17299             Lee Millward  <lee.millward@codesourcery.com>
17300
17301         * tree-dump.c (dequeue_and_dump) <CALL_EXPR>: Use new CALL_EXPR
17302         accessors and dump arguments explicitly.
17303
17304         * tree-pretty-print.c (do_niy): Use TREE_OPERAND_LENGTH instead of
17305         TREE_CODE_LENGTH.
17306         (dump_generic_node): Use new CALL_EXPR accessors and walk arguments
17307         explicitly.
17308         (print_call_name): Use new CALL_EXPR accessors.
17309
17310         * print-tree.c (print_node): Add case tcc_vl_exp.  Print
17311         CALL_EXPR arguments explicitly instead of as a list.  Use
17312         TREE_OPERAND_LENGTH instead of TREE_CODE_LENGTH.
17313
17314         * tree-vrp.c (stmt_interesting_for_vrp): Use new CALL_EXPR accessors.
17315         (vrp_visit_stmt): Likewise.
17316
17317         * tree-ssa-loop-im.c (outermost_invariant_loop_expr):  Make it
17318         know about tcc_vl_exp.  Use TREE_OPERAND_LENGTH instead of
17319         TREE_CODE_LENGTH.
17320         (force_move_till_expr): Likewise.
17321
17322         * targhooks.c (default_external_stack_protect_fail): Use
17323         build_call_expr instead of build_function_call_expr.
17324         (default_hidden_stack_protect_fail): Likewise.
17325
17326         * tree-complex.c (expand_complex_libcall): Use build_call_expr to
17327         build the call.
17328
17329         * cgraphbuild.c (build_cgraph_edges): Use new CALL_EXPR accessors
17330         and walk arguments explicitly.
17331
17332         * tree-ssa-loop-niter.c (simplify_replace_tree): Use
17333         TREE_OPERAND_LENGTH instead of TREE_CODE_LENGTH.
17334         (expand_simple_operations): Likewise.
17335         (infer_loop_bounds_from_array): Use new CALL_EXPR accessors.
17336
17337         * gengtype.c (adjust_field_tree_exp): Use TREE_OPERAND_LENGTH instead
17338         of TREE_CODE_LENGTH.
17339         (walk_type): Tweak walking of arrays not to blow up on CALL_EXPRs.
17340
17341         * optabs.c (expand_widen_pattern-expr): Use TREE_OPERAND_LENGTH
17342         instead of TREE_CODE_LENGTH.
17343
17344         * value_prof.c (tree_ic): Use new CALL_EXPR accessors.
17345         (tree_ic_transform): Likewise.
17346         (interesting_stringop_to_profile_p): Pass entire CALL_EXPR as
17347         parameter instead of arglist.  Fix callers.
17348         (tree_stringop_fixed_value): Use new CALL_EXPR accessors.
17349         (tree_stringops_transform): Likewise.
17350         (tree_indirect_call_to_profile): Likewise.
17351         (tree_stringops_values_to_profile): Likewise.
17352
17353         * tree-tailcall.c (find_tail_calls): Use new CALL_EXPR iterator.
17354         (eliminate_tail_call): Likewise.
17355
17356         * ipa-cp.c (ipcp_update_callgraph): Use new CALL_EXPR accessors.
17357
17358         * tree-scalar-evolution.c (chrec_contains_symbols_defined_in_loop):
17359         Use TREE_OPERAND_LENGTH and generalize to handle any number of
17360         operands.
17361         (instantiate_parameters_1): Can't handle tcc_vl_exp here.
17362
17363         * omp-low.c (build_omp_barrier): Use build_call_expr.
17364         (lower_rec_input_clauses): Likewise.
17365         (lower_reduction_clauses): Likewise.
17366         (expand_parallel_call): Likewise.
17367         (maybe_catch_exception): Likewise.
17368         (expand_omp_for_generic): Likewise.
17369         (expand_omp_for_static_nochunk): Likewise.
17370         (expand_omp_sections): Likewise.
17371         (lower_omp_single_simple): Likewise.
17372         (lower_omp_single_copy): Likewise.
17373         (lower_omp_master): Likewise.
17374         (lower_omp_ordered): Likewise.
17375         (lower_omp_critical): Likewise.
17376
17377         * ipa-reference.c (check-call): Use new CALL_EXPR iterator.
17378         (scan_for_static_refs): Create tcc_vl_exp case for CALL_EXPR.
17379
17380         * tree-gimple.c (is_gimple_call_addr): Fix doc.
17381         (recalculate_side_effects): Use TREE_OPERAND_LENGTH instead of
17382         TREE_CODE_LENGTH.  Add tcc_vl_exp case.
17383
17384         * tree-chrec.c (chrec_contains_symbols): Use TREE_OPERAND_LENGTH
17385         and generalize to handle any number of operands.
17386         (chrec_contains_undetermined): Likewise.
17387         (tree_contains_chrecs): Likewise.
17388         (evolution_function_is_invariant_rec_p): Use TREE_OPERAND_LENGTH.
17389
17390         * cgraphunit.c (update_call_expr): Use new CALL_EXPR accessors.
17391
17392         * tree-ssa-ccp.c (ccp_fold): Use new CALL_EXPR accessors.  Use
17393         fold_call_expr instead of fold_builtin.
17394         (ccp_fold_builtin): Likewise.  Update calls into builtins.c to
17395         match declarations there.
17396         (fold_stmt): Use new CALL_EXPR constructor and accessors.  Doc
17397         updates.
17398
17399         * tree-ssa-loop-ivopts.c (expr_invariant_in_loop_p): Use
17400         TREE_OPERAND_LENGTH instead of TREE_CODE_LENGTH.
17401
17402         * ipa-pure-const.c (check_call): Use new CALL_EXPR accessors.
17403         (scan_function): Add case tcc_vl_exp for CALL_EXPR.
17404
17405         * tree-stdarg.c (execute_optimize_stdarg): Use new CALL_EXPR
17406         accessors.
17407
17408         * tree-ssa-math-opts.c (execute_cse_sincos_1): Use build_call_expr.
17409         (execute_cse_sincos): Use new CALL_EXPR accessors.
17410
17411         * tree-ssa-alias.c (find_used_portions): Use new CALL_EXPR iterator.
17412
17413         * gimple-low.c (lower_function_body): Use build_call_expr.
17414         (lower_builtin_setjmp): Likewise.
17415
17416         * expr.c (emit_block_move_via_libcall): Use build_call_expr.
17417         (set_storage_via_libcall): Likewise.
17418         (safe_from_p): Add tcc_vl_exp case.  Use TREE_OPERAND_LENGTH
17419         instead of TREE_CODE_LENGTH.
17420         (expand_expr_real_1): Use new CALL_EXPR accessors.
17421
17422         * tree-browser.c (store_child_info): Use TREE_OPERAND_LENGTH and
17423         generalize to handle any number of operands.
17424         (TB_parent_eq): Likewise.
17425
17426         * predict.c (expr_expected_value): Use new CALL_EXPR accessors.
17427         (strip_builtin_expect): Likewise.
17428
17429         * function.c (gimplify_parameters): Use build_call_expr.
17430
17431         * tree-vectorizer.c (vect_is_simple_reduction): Use
17432         TREE_OPERAND_LENGTH instead of TREE_CODE_LENGTH.
17433
17434         * ipa-type-escape.c (check_call): Use new CALL_EXPR iterators.
17435         (scan_for_refs): Add case tcc_vl_exp for CALL_EXPR.
17436
17437         * tree-data-ref.c (get_references_in_stmt): Use new CALL_EXPR
17438         iterators.
17439
17440         * gimplify.c (build_stack_save_restore): Use build_call_expr.
17441         (gimplify_decl_expr): Likewise.
17442         (gimplify_call_expr): Use fold_call_expr instead of fold_builtin.
17443         Use new CALL_EXPR iterators.
17444         (gimplify_modify_expr_to_memcpy): Use build_call_expr.
17445         (gimplify_modify_expr_to_memset): Likewise.
17446         (gimplify_variable_sized_compare): Likewise.
17447         (gimplify_omp_atomic_fetch_op): Likewise.
17448         (gimplify_omp_atomic_pipeline): Likewise.
17449         (gimplify_omp_atomic_mutex): Likewise.
17450         (gimplify_function_tree): Likewise.
17451
17452         * calls.c (alloca_call_p): Use new CALL_EXPR accessors.
17453         (call_expr_flags): Likewise.
17454         (expand_call): Likewise.
17455
17456         * except.c (expand_builtin_eh_return_data_regno): Pass entire
17457         CALL_EXPR as parameter instead of arglist.  Use new CALL_EXPR
17458         accessors.
17459
17460         * coverage.c (create_coverage): Use build_call_expr.
17461
17462         * tree-ssa-pre.c (expression_node_pool, list_node_pool): Delete.
17463         (temp_call_expr_obstack): New.
17464         (pool_copy_list): Delete.
17465         (temp_copy_call_expr): New.
17466         (phi_translate): Add case tcc_vl_exp for CALL_EXPR.  Use new
17467         CALL_EXPR accessors.  Get rid of special goo for copying argument
17468         lists and use temp_copy_call_expr instead.
17469         (valid_in_sets): Add case tcc_vl_exp for CALL_EXPR.  Use new
17470         CALL_EXPR accessors.
17471         (create_expression_by_pieces): Likewise.  Use build_call_array
17472         to construct the result instead of fold_build3.
17473         (create_value_expr_from): Add tcc_vl_exp.  Delete special goo for
17474         dealing with argument lists.
17475         (init_pre): Remove references to expression_node_pool and
17476         list_node_pool.  Init temp_call_expr_obstack instead.
17477         (fini_pre): Remove references to expression_node_pool and
17478         list_node_pool.
17479
17480         * tree-sra.c (sra_walk_call_expr): Use new CALL_EXPR accessors
17481         and walk arguments explicitly instead of as a list.
17482
17483         * tree-mudflap.c (mf_build_check_statement_for): Use build_call_expr.
17484         (mx_register_decls): Likewise.
17485         (mudflap_register_call): Likewise.
17486         (mudflap_finish_file): Likewise.
17487
17488         * ipa-prop.c (ipa_callsite_compute_count): Use new CALL_EXPR accessors.
17489         (ipa_callsite_compute_param): Likewise.
17490
17491         * tree-vect-patterns.c (vect_recog_pow_pattern): Use new CALL_EXPR
17492         accessors and constructor.
17493
17494         * tree-nested.c (convert_nl_goto_reference): Use new CALL_EXPR
17495         accessors and constructor.
17496         (convert_tramp_reference): Likewise.
17497         (convert_call_expr): Likewise.
17498         (finalize_nesting_tree_1): Likewise.
17499
17500         * tree-ssa.c (tree_ssa_useless_type_conversion): Use new CALL_EXPR
17501         accessors.
17502
17503         * tree-ssa-loop-prefetch.c (issue_prefetch_ref): Use build_call_expr.
17504
17505         * tree-inline.c (initialize_inlined_parameters): Pass entire
17506         CALL_EXPR as parameter instead of arglist.  Use new CALL_EXPR
17507         accessors.
17508         (estimate_num_insns_1): Use new CALL_EXPR accessors.
17509         (expand_call_inline): Tidy up call to initialize_inlined_parameters.
17510
17511         * tree-vect-transform.c (vect_create_epilog_for_reduction):  Use
17512         TREE_OPERAND_LENGTH instead of TREE_CODE_LENGTH.
17513         (vectorizable_reduction): Likewise.
17514         (vectorizable_call): Use new CALL_EXPR iterators.
17515         (vectorizable_conversion): Use build_call_expr.
17516         (vectorizable_operation): Use TREE_OPERAND_LENGTH.
17517         (vect_gen_widened_results_half): Use build_call_expr.
17518         (vect_setup_realignment): Likewise.
17519         (vectorizable_live_operation): Use TREE_OPERAND_LENGTH.
17520
17521         * tree-object-size.c (alloc_object_size): Use new CALL_EXPR accessors.
17522         (pass_through_call): Likewise.
17523         (compute_object_sizes): Likewise.  Use fold_call_expr instead of
17524         fold_builtin.
17525
17526         * tree-profile.c (tree_gen_interval_profiler): Use build_call_expr.
17527         (tree_gen_pow2_profiler): Likewise.
17528         (tree_gen_one_value_profiler): Likewise.
17529         (tree_gen_ic_func_profiler): Likewise.
17530         (tree_gen_average_profiler): Likewise.
17531         (tree_gen_ior_profiler): Likewise.
17532
17533         * tree-ssa-structalias.c (get_constraint_for): Add case tcc_vl_exp.
17534         (find_func_aliases): Use new CALL_EXPR accessors.  Add case
17535         tcc_vl_exp.  Use TREE_OPERAND_LENGTH instead of TREE_CODE_LENGTH.
17536
17537         * tree-ssa-reassoc.c (get_rank): Use TREE_OPERAND_LENGTH instead
17538         of TREE_CODE_LENGTH.
17539
17540         * stmt.c (warn_if_unused_value): Use TREE_OPERAND_LENGTH instead
17541         of TREE_CODE_LENGTH.
17542
17543         * convert.c (convert_to_real): Use new CALL_EXPR accessors and
17544         constructor.
17545         (convert_to_integer): Likewise.
17546
17547         * tree-ssa-operands.c (get_call_expr_operands): Use new CALL_EXPR
17548         accessors.
17549
17550 2007-02-15  Sandra Loosemore  <sandra@codesourcery.com>
17551             Brooks Moses  <brooks.moses@codesourcery.com>
17552             Lee Millward  <lee.millward@codesourcery.com>
17553
17554         * config/alpha/alpha.c (alpha_expand_builtin): Use new CALL_EXPR
17555         accessors.
17556         * config/frv/frv.c (frv_expand_builtin): Likewise.
17557         * config/s390/s390.c (s390_expand_builtin): Likewise.
17558
17559         * config/sparc/sparc.c (sparc_gimplify_va_arg): Use build_call_expr.
17560         (sparc_expand_builtin): Use new CALL_EXPR accessors.
17561
17562         * config/i386/i386.c (ix86_function_ok_for_sibcall): Likewise.
17563         (ix86_expand_binop_builtin): Pass entire CALL_EXPR as parameter
17564         instead of arglist.  Use new CALL_EXPR accessors on it.  Fix callers.
17565         (ix86_expand_store_builtin): Likewise.
17566         (ix86_expand_unop_builtin): Likewise.
17567         (ix86_expand_unop1_builtin): Likewise.
17568         (ix86_expand_sse_compare): Likewise.
17569         (ix86_expand_sse_comi): Likewise.
17570         (ix86_expand_vec_init_builtin): Likewise.
17571         (ix86_expand_vec_ext_builtin): Likewise.
17572         (ix86_expand_vec_set_builtin): Likewise.
17573         (ix86_expand_builtin): Use new CALL_EXPR accessors.
17574
17575         * config/sh/sh.c (sh_expand_builtin): Use new CALL_EXPR accessors.
17576         * config/c4x/c4x.c (c4x_expand_builtin): Likewise.
17577
17578         * config/iq2000/iq2000.c (expand_one_builtin): Pass entire CALL_EXPR
17579         instead of arglist.  Use new CALL_EXPR accessors.  Fix callers.
17580         (iq2000_expand_builtin): Use new CALL_EXPR accessors.
17581
17582         * config/rs6000/rs6000-c.c (altivec_build_resolved_builtin): Use
17583         build_call_expr.
17584         * config/rs6000/rs6000.c (rs6000_gimplify_va_arg): Likewise.
17585         (rs6000_expand_unop_builtin): Pass entire CALL_EXPR instead of
17586         arglist.  Use new CALL_EXPR accessors.  Fix callers.
17587         (altivec_expand_abs_builtin): Likewise.
17588         (rs6000_expand_binop_builtin): Likewise.
17589         (altivec_expand_predicate_builtin): Likewise.
17590         (altivec_expand_lv_builtin): Likewise.
17591         (spe_expand_stv_builtin): Likewise.
17592         (altivec_expand_stv_builtin): Likewise.
17593         (rs6000_expand_ternop_builtin): Likewise.
17594         (altivec_expand_ld_builtin): Use new CALL_EXPR accessors.
17595         (altivec_expand_st_builtin): Likewise.
17596         (altivec_expand_dst_builtin): Likewise.
17597         (altivec_expand_vec_init_builtin): Pass entire CALL_EXPR instead of
17598         arglist.  Use new CALL_EXPR accessors.  Fix callers.
17599         (altivec_expand_vec_set_builtin): Likewise.
17600         (altivec_expand_vec_ext_builtin): Likewise.
17601         (altivec_expand_builtin): Use new CALL_EXPR accessors.
17602         (spe_expand_builtin): Likewise.
17603         (spe_expand_predicate_builtin): Pass entire CALL_EXPR instead of
17604         arglist.  Use new CALL_EXPR accessors.  Fix callers.
17605         (spe_expand_evsel_builtin): Likewise.
17606         (rs6000_expand_builtin): Use new CALL_EXPR accessors.  VCFUX and
17607         FCFSX cases must construct whole new CALL_EXPR, not just arglist.
17608
17609         * config/arm/arm.c (arm_expand_binop_builtin): Pass entire CALL_EXPR
17610         instead of arglist.  Use new CALL_EXPR accessors.  Fix callers.
17611         (arm_expand_unop_builtin): Likewise.
17612         (arm_expand_builtin): Use new CALL_EXPR accessors.
17613
17614         * config/mips/mips.c (mips_expand_builtin):  Use new CALL_EXPR
17615         accessors.
17616
17617         * config/bfin/bfin.c (bfin_expand_binop_builtin): Pass entire
17618         CALL_EXPR instead of arglist.  Use new CALL_EXPR accessors.
17619         Fix callers.
17620         (bfin_expand_unop_builtin): Likewise.
17621         (bfin_expand_builtin): Use new CALL_EXPR accessors.
17622
17623 2007-02-15  Sandra Loosemore  <sandra@codesourcery.com>
17624             Brooks Moses  <brooks.moses@codesourcery.com>
17625             Lee Millward  <lee.millward@codesourcery.com>
17626
17627         * c-semantics.c (build_stmt): Add internal diagnostic check.
17628
17629         * c-pretty-print.c (pp_c_postfix_expression): Use new CALL_EXPR
17630         accessors.  Print arguments explicitly instead of as a list.
17631
17632         * c-typeck.c (build_function_call): Use new CALL_EXPR constructors.
17633
17634         * c-omp.c (c_finish_omp_barrier): Use build_call_expr.
17635         (c_finish_omp_flish): Likewise.
17636
17637         * c-common.c (verify_tree): Use new CALL_EXPR accessors.  Traverse
17638         arguments explicitly instead of as a list.  Use TREE_OPERAND_LENGTH
17639         instead of TREE_CODE_LENGTH.
17640         (check_function_arguments_recurse): Use new CALL_EXPR accessors.
17641         (c_warn_unused_result): Likewise.
17642
17643 2007-02-15  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
17644
17645         PR c/26494
17646         * doc/invoke.texi (Warning Options): Remove
17647         -Werror-implicit-function-declaration.
17648         (Wimplicit-function-declaration): Update description.
17649         * opts.c (common_handle_option): Move handling of -Werror=* to...
17650         (enable_warning_as_error): ...here.
17651         * opts.h (enable_warning_as_error): Declare.
17652         * c-decl.c (implicit_decl_warning): Unless
17653         -Wno-implicit-function-declaration is given, emit a pedwarn if
17654         -std=c99 or emit a warning if -Wimplicit-function-declaration.
17655         * c.opt (Wimplicit-function-declaration): Replace
17656         mesg_implicit_function_declaration with
17657         warn_implicit_function_declaration.
17658         * c-opts.c (c_common_handle_option):
17659         -Werror-implicit-function-declaration is exactly equal as
17660         -Werror=implicit-function-declaration.
17661         (set_Wimplicit): Replace mesg_implicit_function_declaration with
17662         warn_implicit_function_declaration.
17663         (c_common_post_options): -Wimplict-function-declaration is enabled
17664         by default by -std=c99, otherwise is disabled by default.
17665         * c-objc-common.c (c_objc_common_init): Remove flawed logic.
17666
17667 2007-02-15  Eric Botcazou  <ebotcazou@adacore.com>
17668
17669         * gimplify.c (gimplify_modify_expr): During gimplification, attach a
17670         DECL on the rhs to a DECL on the lhs for debug info purposes if the
17671         former is ignored but not the latter.
17672
17673 2007-02-15  Eric Botcazou  <ebotcazou@adacore.com>
17674
17675         * expr.c (expand_expr_real_1) <normal_inner_ref>: If a temporary
17676         is made and the reference doesn't use the alias set of its type,
17677         do not create the temporary using that type.
17678
17679 2007-02-15  Aldy Hernandez  <aldyh@redhat.com>
17680
17681         * jump.c: Remove prototypes for delete_computation and
17682         delete_prior_computation.
17683
17684 2007-02-15  Paolo Bonzini  <bonzini@gnu.org>
17685
17686         * jump.c (get_label_after): Delete.
17687         (get_label_before, delete_computation, delete_jump,
17688         delete_prior_computation, follow_jumps): Move...
17689         * reorg.c (delete_computation, delete_prior_computation): ... here...
17690         (get_label_before, delete_jump): ... making these static ...
17691         (follow_jumps): ... and simplifying this since it only runs after
17692         reload.
17693         * rtl.h (get_label_after, get_label_before, delete_jump,
17694         follow_jumps): Delete prototypes.
17695
17696 2007-02-15  Paolo Bonzini  <bonzini@gnu.org>
17697
17698         * caller-save.c (save_call_clobbered_regs): Do not process sibcalls.
17699
17700 2007-02-15  Nick Clifton  <nickc@redhat.com>
17701
17702         * varasm.c (default_asm_output_anchor): Prepend * to . symbol in
17703         order to prevent it from being munged by the target.
17704
17705 2007-02-15  Uros Bizjak  <ubizjak@gmail.com>
17706
17707         * config/i386/i386.md: Remove misleading comment.
17708
17709 2007-02-15  Alexandre Oliva  <aoliva@redhat.com>
17710
17711         * config/frv/frv.md (reload_incc, reload_outcc, reload_incc_uns,
17712         reload_outcc_uns, reload_incc_nz, reload_outcc_nz): Remove
17713         invalid patterns.
17714
17715 2007-02-15  Alexandre Oliva  <aoliva@redhat.com>
17716
17717         * tree-sra.c (instantiate_missing_elements): Canonicalize
17718         bit-field types.
17719         (sra_build_assignment): New.
17720         (generate_copy_inout, generate_element_copy,
17721         generate_element_zero, generate_one_element_init): Use it.
17722
17723 2007-02-15  Alexandre Oliva  <aoliva@redhat.com>
17724
17725         * tree-sra.c (instantiate_missing_elements): Canonicalize
17726         bit-field types.
17727         (sra_build_assignment): New.
17728         (generate_copy_inout, generate_element_copy,
17729         generate_element_zero, generate_one_element_init): Use it.
17730
17731 2007-02-15  Alexandre Oliva  <aoliva@redhat.com>
17732
17733         * dwarf2out.c (dwarf2out_finish): Accept namespaces as context of
17734         limbo die nodes.
17735
17736 2007-02-14  Joseph Myers  <joseph@codesourcery.com>
17737
17738         * emit-rtl.c (set_mem_attributes_minus_bitpos): Treat complex
17739         types as aggregates not scalars.
17740         * function.c (assign_stack_temp_for_type): Likewise.
17741
17742 2007-02-14  Roger Sayle  <roger@eyesopen.com>
17743             Zdenek Dvorak  <dvorakz@suse.cz>
17744
17745         * tree-dump.c (dump_switch_p_1): Require exact match of the option
17746         name.
17747
17748 2007-02-14  Zdenek Dvorak  <dvorakz@suse.cz>
17749
17750         * passes.c (next_pass_1): Clear the next field of the copied
17751         pass structure.
17752
17753 2007-02-14  Richard Henderson  <rth@redhat.com>
17754
17755         * tree-sra.c (early_sra): New.
17756         (decl_can_be_decomposed_p): Deny va_list if early_sra.
17757         (tree_sra_early, pass_sra_early): New.
17758         * tree-pass.h (pass_sra_early): Declare.
17759         * passes.c (init_optimization_passes): Use it.
17760
17761 2007-02-14  Richard Guenther  <rguenther@suse.de>
17762
17763         * flags.h (issue_strict_overflow_warning): Convert to a macro.
17764
17765 2007-02-14  Dorit Nuzman  <dorit@il.ibm.com>
17766
17767          PR tree-optimization/30771
17768         * tree-vect-analyze.c (vect_determine_vectorization_factor): Traverse
17769         also phi nodes.
17770         (vect_analyze_operations): Induction phis can now be marked as
17771         used_in_loop.
17772         (vect_mark_stmts_to_be_vectorized): No special treatment for phis.
17773         Update documentation accordingly.
17774
17775 2007-02-14  Nick Clifton  <nickc@redhat.com>
17776
17777         * builtin-types.def (DEF_FUNCTION_TYPE_x): Do not imply that at
17778         most 3 arguments are supported.
17779         (DEF_FUNCTION_TYPE_VAR_5): Fix typo in its description.
17780
17781 2007-02-13  Seongbae Park <seongbae.park@gmail.com>
17782
17783         * bitmap.c (bitmap_and, bitmap_and_compl, bitmap_xor):
17784         Ensure dst->current is valid.
17785
17786 2007-02-13  Paul Brook  <paul@codesourcery.com>
17787
17788         * config.gcc: Add arm*-*-uclinux-*eabi.
17789         * config/arm/uclinux-elf.h (TARGET_OS_CPP_BUILTINS): Define.
17790         (SUBTARGET_EXTRA_LINK_SPEC): Define.
17791         (STARTFILE_SPEC, ENDFILE_SPEC): Remove broken -shared handling.
17792         (LINK_GCC_C_SEQUENCE_SPEC): Undef.
17793         (LINK_SPEC): Define.
17794         (LIB_SPEC): Define.
17795         * config/arm/arm.c (arm_override_options): Use r9 as EABI PIC
17796         register.
17797         * config/arm/uclinux-eabi.h: New file.
17798         * config/arm/linux-eabi.h (WCHAR_TYPE): Remove.
17799         * config/arm/linux-gas.h (WCHAR_TYPE): Use unsigned long on AAPCS
17800         based targets.
17801
17802 2007-02-13  Ian Lance Taylor  <iant@google.com>
17803
17804         * common.opt: Add Wstrict-overflow and Wstrict-overflow=.
17805         * flags.h (warn_strict_overflow): Declare.
17806         (enum warn_strict_overflow_code): Define.
17807         (issue_strict_overflow_warning): New static inline function.
17808         * opts.c (warn_strict_overflow): New variable.
17809         (common_handle_option): Handle OPT_Wstrict_overflow and
17810         OPT_Wstrict_overflow_.
17811         * c-opts.c (c_common_handle_option): Set warn_strict_overflow for
17812         OPT_Wall.
17813         * fold-const.c: Include intl.h.
17814         (fold_deferring_overflow_warnings): New static variable.
17815         (fold_deferred_overflow_warning): New static variable.
17816         (fold_deferred_overflow_code): New static variable.
17817         (fold_defer_overflow_warnings): New function.
17818         (fold_undefer_overflow_warnings): New function.
17819         (fold_undefer_and_ignore_overflow_warnings): New function.
17820         (fold_deferring_overflow_warnings_p): New function.
17821         (fold_overflow_warning): New static function.
17822         (make_range): Add strict_overflow_p parameter.  Change all
17823         callers.
17824         (extract_muldiv, extract_muldiv_1): Likewise.
17825         (fold_unary) [ABS_EXPR]: Check ABS_EXPR before calling
17826         tree_expr_nonnegative_p.
17827         (fold_negate_expr): Call fold_overflow_warning.
17828         (fold_range_test): Likewise.
17829         (fold_comparison): Likewise.
17830         (fold_binary): Likewise.  Call tree_expr_nonnegative_warnv_p
17831         instead of tree_expr_nonnegative_p.
17832         (tree_expr_nonnegative_warnv_p): Rename from
17833         tree_expr_nonnegative_p, add strict_overflow_p parameter.
17834         (tree_expr_nonnegative_p): New function.
17835         (tree_expr_nonzero_warnv_p): Rename from tree_expr_nonzero_p, add
17836         strict_overflow_p parameter.
17837         (tree_expr_nonzero_p): New function.
17838         * passes.c (verify_interpass_invariants): New static function.
17839         (execute_one_pass): Call it.
17840         * tree-ssa-loop-niter.c (expand_simple_operations): Ignore fold
17841         warnings.
17842         (number_of_iterations_exit, loop_niter_by_eval): Likewise.
17843         (estimate_numbers_of_iterations): Likewise.
17844         (scev_probably_wraps_p): Likewise.
17845         * tree-ssa-ccp.c: Include "toplev.h".
17846         (evaluate_stmt): Defer fold overflow warnings until we know we are
17847         going to optimize.
17848         (struct fold_stmt_r_data): Add stmt field.
17849         (fold_stmt_r): Defer fold overflow warnings until we know we
17850         optimized.
17851         (fold_stmt): Initialize stmt field of fold_stmt_r_data.
17852         (fold_stmt_inplace): Likewise.
17853         * tree-cfgcleanup.c: Include "toplev.h" rather than "errors.h".
17854         (cleanup_control_expr_graph): Defer fold overflow warnings until
17855         we know we are going to optimize.
17856         * tree-cfg.c (fold_cond_expr_cond): Likewise.
17857         * tree-ssa-threadedge.c (simplify_control_stmt_condition):
17858         Likewise.
17859         * tree-vrp.c (vrp_expr_computes_nonnegative): Call
17860         tree_expr_nonnegative_warnv_p instead of tree_expr_nonnegative_p.
17861         * tree-ssa-loop-manip.c (create_iv): Likewise.
17862         * c-typeck.c (build_conditional_expr): Likewise.
17863         (build_binary_op): Likewise.
17864         * tree-vrp.c (vrp_expr_computes_nonzero): Call
17865         tree_expr_nonzero_warnv_p instead of tree_expr_nonzero_p.
17866         (extract_range_from_unary_expr): Likewise.
17867         * simplify-rtx.c (simplify_const_relational_operation): Warn when
17868         assuming that signed overflow does not occur.
17869         * c-common.c (pointer_int_sum): Ignore fold overflow warnings.
17870         * tree.h (tree_expr_nonnegative_warnv_p): Declare.
17871         (fold_defer_overflow_warnings): Declare.
17872         (fold_undefer_overflow_warnings): Declare.
17873         (fold_undefer_and_ignore_overflow_warnings): Declare.
17874         (fold_deferring_overflow_warnings_p): Declare.
17875         (tree_expr_nonzero_warnv_p): Declare.
17876         * doc/invoke.texi (Option Summary): Add -Wstrict-overflow to list
17877         of warning options.
17878         (Warning Options): Document -Wstrict-overflow.
17879         * Makefile.in (tree-ssa-threadedge.o): Depend on toplev.h.
17880         (tree-ssa-ccp.o): Likewise.
17881         (tree-cfgcleanup.o): Change errors.h dependency to toplev.h.
17882         (fold-const.o): Depend on intl.h.
17883
17884 2007-02-13  Ian Lance Taylor  <iant@google.com>
17885
17886         PR middle-end/30751
17887         * lower-subreg.c (resolve_simple_move): Decompose subregs in
17888         addresses.
17889
17890 2007-02-13  Stuart Hastings  <stuart@apple.com>
17891
17892         * config/i386/i386.md (fixuns_truncdfhi2): Require SSE2.
17893
17894 2007-02-13  Richard Henderson  <rth@redhat.com>
17895
17896         * config/alpha/alpha.c (alpha_stdarg_optimize_hook): Strip
17897         handled_component_p before looking for the indirect_ref.
17898
17899 2007-02-13  Richard Henderson  <rth@redhat.com>
17900
17901         * config/i386/i386.md (bswapsi_1): Rename from bswapsi2,
17902         remove flags clobber.
17903         (bswapsi2): New expander, emit code for !TARGET_BSWAP.
17904         (bswaphi_lowpart): New.
17905         (bswapdi2): Rename from bswapdi2_rex, remove flags clobber,
17906         remove TARGET_BSWAP test.  Delete expander of the same name.
17907
17908         * optabs.c (widen_bswap, expand_doubleword_bswap): New.
17909         (expand_unop): Use them.
17910
17911 2007-02-13  Uros Bizjak  <ubizjak@gmail.com>
17912
17913         * config/i386/i386.md (cmpdi_ccno_1_rex64, *cmpsi_ccno_1,
17914         *cmphi_ccno_1, *cmpqi_ccno_1, *movsi_xor, *movstricthi_xor,
17915         *movstrictqi_xor, *movdi_xor_rex64, *ashldi3_1_rex64,
17916         *ashldi3_cmp_rex64, *ashldi3_cconly_rex64, ashlsi3, *ashlsi3_1_zext,
17917         *ashlsi3_cmp, *ashlsi3_cconly, *ashlsi3_cmp_zext, *ashlhi3_1_lea,
17918         *ashlhi3_1, *ashlhi3_cmp, *ashlhi3_cconly, *ashlqi3_1_lea,
17919         *ashlqi3_1, *ashlqi3_cmp, *ashlqi3_cconly): Remove equivalent
17920         assembler dialect choice from asm templates.
17921
17922 2007-02-12  Richard Henderson  <rth@redhat.com>
17923
17924         * config/i386/i386.md (fixuns_trunc<SSEMODEF>si_1): New insn.
17925         (fixuns_trunc<SSEMODEF>si2): Use it.
17926         * config/i386/sse.md (vec_setv4sf_0): Export.
17927         * config/i386/i386.c (ix86_build_const_vector): Export.
17928         (ix86_split_convert_uns_si_sse): Rename from
17929         ix86_expand_convert_uns_si_sse and rewrite as a splitter.
17930         * config/i386/i386-protos.h: Update.
17931
17932 2007-02-13  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
17933
17934         PR c/29521
17935         * c-typeck.c (c_finish_return): Improve warning message.
17936
17937 2007-02-12  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
17938
17939         * alias.c (find_symbolic_term): Delete unused function.
17940
17941 2007-02-12  Uros Bizjak  <ubizjak@gmail.com>
17942
17943         * config/i386/i386.md (paritydi2, paritysi2): New expanders.
17944         (paritydi2_cmp, paritydi2_cmp): New insn and split patterns.
17945         (*parityhi2_cmp, *parityqi2_cmp): New insn patterns.
17946
17947 2007-02-12  Eric Botcazou  <ebotcazou@adacore.com>
17948
17949         * tree.h (DECL_IGNORED_P): Document further effect for FUNCTION_DECL.
17950         * cgraphunit.c (cgraph_expand_function): If DECL_IGNORED_P is set on
17951         the function, temporarily point the debug interface to the null one.
17952
17953 2007-02-12  Eric Botcazou  <ebotcazou@adacore.com>
17954
17955         * dwarf2out.c (round_up_to_align): New static function.
17956         (field_byte_offset): Use it to round the offset.
17957
17958 2007-02-12  Richard Henderson  <rth@redhat.com>
17959
17960         * config/alpha/alpha.md (bswapsi2, bswapdi2): New.
17961         (inswl_const): Export.
17962
17963 2007-02-12  Richard Henderson  <rth@redhat.com>
17964
17965         * calls.c (emit_library_call_value_1): If PROMOTE_MODE modifed the
17966         result mode of the libcall, convert back to outmode.
17967
17968 2007-02-12  Roger Sayle  <roger@eyesopen.com>
17969
17970         * config/i386/i386.md (*bswapdi2_rex): Renamed from bswapdi2.
17971         (bswapdi2): New define_expand to implement 32-bit implementation.
17972
17973 2007-02-12  Nick Clifton  <nickc@redhat.com>
17974
17975         * doc/invoke.texi (Overall Options): Document --help=.
17976         * gcc.c (target_help_flag): Rename to print_subprocess_flag.
17977         (cc1_options): Pass --help= on to cc1.
17978         (display_help): Add description of --help=.
17979         (process_command): Add code to handle --help=.  Allow translated
17980         --help and --target-help switches to be passed on to compiler
17981         sub-process.
17982         (main): Remove unused if statement.
17983         * opts.c (columns): Remove.
17984         (LEFT_COLUMN): Define.
17985         (wrap_help): Add columns argument.
17986         (print_filtered_help): Change parameters to be an include bitmask,
17987         an exclude bitmask, an any bitmask and the column width.  Move the
17988         code to display the params list here.  Add code to display the
17989         status of options rather than their descriptions if the quiet flag
17990         is not active.
17991         (print_specific_help): Change parameters to be an include bitmask,
17992         an exclude bitmask and an any bitmask.  Move code to look up the
17993         column width here.  Decide upon the title for an options listing.
17994         (common_handle_options): Add code to handle --help=.  Adapt code
17995         for --help and --target-help to use the revised form of the
17996         print_specific_help function.
17997         (print_help): Delete.
17998         (print_param_help): Delete.
17999         (print_switch): Delete.
18000         * opts.h (cl_lang_count): Add prototype.
18001         (CL_PARAMS, CL_WARNING, CL_OPTIMIZATION, CL_MIN_OPTION_CLASS,
18002         CL_MAX_OPTION_CLASS): New defines.
18003         * optc-gen.awk: Add construction of cl_lang_count.
18004         * c.opt: Add Warning attribute to warning options and Optimization
18005         attribute to optimization options.
18006         * common.opt: Likewise.
18007         Add --help=.
18008         Add -fhelp and -ftarget-help as aliases for the transformed --help
18009         and --target-help options.
18010         * opt-functions.awk: Add code to handle Warning and Optimization
18011         attributes.
18012
18013 2007-02-12  Richard Henderson  <rth@redhat.com>
18014
18015         * config/alpha/constraints.md: New file.
18016         * config/alpha/alpha.c: Include tm-constrs.h.
18017         (alpha_const_ok_for_letter_p, alpha_const_double_ok_for_letter_p,
18018         alpha_extra_constraint): Remove.
18019         (alpha_emit_conditional_branch): Use satisfies_constraint_*.
18020         * config/alpha/alpha-protos.h: Update.
18021         * config/alpha/alpha.h (REG_CLASS_FROM_LETTER): Remove.
18022         (CONST_OK_FOR_LETTER_P, CONST_DOUBLE_OK_FOR_LETTER_P): Remove.
18023         (EXTRA_CONSTRAINT): Remove.
18024         * config/alpha/alpha.md: Include constraints.md.
18025         (adddi splitter): Use satisfies_constraint_*.
18026         * config/alpha/predicates.md (add_operand): Likewise.
18027         (sext_add_operand, addition_operation): Likewise.
18028
18029 2007-02-12  Dorit Nuzman  <dorit@il.ibm.com>
18030
18031         PR tree-optimization/29145
18032         * tree-data-ref.c (base_addr_differ_p): Make us more conservative
18033         in our handling of restrict qualified pointers.
18034
18035 2007-02-12  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
18036
18037         PR middle-end/7651
18038         * doc/invoke.texi (Wunused-value): Update description.
18039         (Wextra): Delete item.
18040         * opts.c (set_Wextra): Don't use the value of Wextra to set the
18041         value of Wunused-value.
18042         * c-typeck.c (c_process_expr_stmt): Don't check extra_warnings.
18043         (c_finish_stmt_expr): Don't check extra_warnings.
18044         (emit_side_effect_warnings): The caller is responsible to check
18045         warn_unused_value.
18046
18047 2007-02-11  Roger Sayle  <roger@eyesopen.com>
18048             Matt Thomas  <matt@3am-software.com>
18049
18050         * simplify-rtx.c (simplify_relational_operation_1): Correct typo.
18051
18052 2007-02-11  Roger Sayle  <roger@eyesopen.com>
18053
18054         * simplify-rtx.c (simplify_relational_operation_1): Optimize
18055         comparisons of POPCOUNT against zero.
18056         (simplify_const_relational_operation): Likewise.
18057
18058 2007-02-11  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
18059
18060         * doc/invoke.texi (Wextra): Delete outdated paragraph.
18061
18062 2007-02-11  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
18063
18064         * dwarf2out.c (root_type): Delete unused function.
18065
18066 2007-02-11  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
18067
18068         * genattrtab.c (contained_in_p): Delete unused function.
18069         (write_expr_attr_cache): Likewise.
18070
18071 2007-02-11  Jan Hubicka  <jh@suse.cz>
18072
18073         * ipa-inline.c (cgraph_edge_badness): Add "else" missing in the
18074         previous patch.
18075
18076 2007-02-11  Steven Bosscher  <steven@gcc.gnu.org>
18077
18078         * fwprop.c (try_fwprop_subst): Use set_unique_reg_note
18079         to add the REG_EQ* note.
18080         * see.c (see_merge_one_use_extension): Likewise.
18081         * local-alloc.c (update_equiv_regs): Likewise.  Also don't
18082         turn REG_EQUAL notes into REG_EQUIV notes if the target
18083         register may have more than one set.
18084         * function.c (assign_parm_setup_reg): Use set_unique_reg_note.
18085         * gcse.c (try_replace_reg): Likewise.
18086         * alias.c (init_alias_analysis): Use find_reg_equal_equiv_note.
18087         * calls.c (fixup_tail_calls): Likewise.  Abort if there is
18088         more than one REG_EQUIV note.
18089         * reload1.c (gen_reload): Use set_unique_reg_note.
18090
18091 2007-02-11  Uros Bizjak  <ubizjak@gmail.com>
18092
18093         * config/i386/i386.c (TARGET_VECTORIZE_BUILTIN_CONVERSION): Define.
18094         (ix86_builtin_conversion): New function.
18095
18096 2007-02-06  Mark Mitchell  <mark@codesourcery.com>
18097
18098         PR target/29487
18099         * tree.h (DECL_REPLACEABLE_P): New macro.
18100         * except.c (set_nothrow_function_flags): Likewise.
18101
18102 2007-02-11  Tehila Meyzels  <tehila@il.ibm.com>
18103             Ira Rosen  <irar@il.ibm.com>
18104             Dorit Nuzman  <dorit@il.ibm.com>
18105
18106         * doc/tm.texi (TARGET_VECTORIZE_BUILTIN_CONVERSION): New target hook.
18107         * targhooks.c (default_builtin_vectorized_conversion): New.
18108         * targhooks.h (default_builtin_vectorized_function): New declaration.
18109         * target.h (struct vectorize): Add builtin_conversion field.
18110         * tree-vectorizer.h (type_conversion_vec_info_type): New enum
18111         stmt_vec_info_type value.
18112         (vectorizable_conversion): New declaration.
18113         * tree-vect-analyze.c (vect_analyze_operations): Add
18114         vectorizable_conversion call.
18115         * target-def.h (TARGET_VECTORIZE_BUILTIN_CONVERSION): New.
18116         * tree-vect-transform.c (vectorizable_conversion): New function.
18117         (vect_transform_stmt): Add case for type_conversion_vec_info_type.
18118         * tree-vect-generic.c (expand_vector_operations_1): Consider correct
18119         mode.
18120         * config/rs6000/rs6000.c (rs6000_builtin_conversion): New.
18121         (TARGET_VECTORIZE_BUILTIN_CONVERSION): Defined.
18122         (rs6000_expand_builtin): Add handling a case of ALTIVEC_BUILTIN_VCFUX
18123         or ALTIVEC_BUILTIN_VCFSX.
18124
18125 2007-02-10  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
18126
18127         PR target/30634
18128         * pa.md (movdf): For 64-bit target, fail if operand 1 is a non-zero
18129         CONST_DOUBLE and operand 0 is a hard register.
18130         (movdi): For 64-bit target, remove code to force CONST_DOUBLE to
18131         memory.  Fail if operand 1 is a non-zero CONST_INT and operand 0
18132         is a hard floating-point register.
18133
18134 2007-02-10  Richard Henderson  <rth@redhat.com>
18135             Jakub Jelinek  <jakub@redhat.com>
18136             Alexandre Oliva  <aoliva@redhat.com>
18137
18138         * Makefile.in (libgcc-support, libgcc.mvars): Add emutls.c.
18139         * builtin-types.def (BT_WORD): Make unsigned.
18140         (BT_FN_VOID_PTR_WORD_WORD_PTR): New.
18141         * builtins.def (BUILT_IN_EMUTLS_GET_ADDRESS): New.
18142         (BUILT_IN_EMUTLS_REGISTER_COMMON): New.
18143         * c-decl.c (grokdeclarator): Don't error if !have_tls.
18144         * c-parser.c (c_parser_omp_threadprivate): Likewise.
18145         * dwarf2out.c (loc_descriptor_from_tree_1): Don't do anything for
18146         emulated tls.
18147         * expr.c (emutls_var_address): New.
18148         (expand_expr_real_1): Expand emulated tls.
18149         (expand_expr_addr_expr_1): Likewise.
18150         * libgcc-std.ver: Add __emutls_get_address, __emutls_register_common.
18151         * output.h (emutls_finish): Declare.
18152         * toplev.c (compile_file): Call it.
18153         * tree-ssa-address.c (gen_addr_rtx): Check for const-ness of the
18154         address before wrapping in CONST.
18155         * varasm.c (emutls_htab, emutls_object_type): New.
18156         (EMUTLS_VAR_PREFIX, EMUTLS_TMPL_PREFIX): New.
18157         (get_emutls_object_name, get_emutls_object_type): New.
18158         (get_emutls_init_templ_addr, emutls_decl): New.
18159         (emutls_common_1, emutls_finish): New.
18160         (assemble_variable): When emulating tls, swap decls; generate
18161         constructor for the emutls objects.
18162         (do_assemble_alias): When emulating tls, swap decl and target name.
18163         (default_encode_section_info): Don't add SYMBOL_FLAG_TLS_SHIFT
18164         for emulated tls.
18165         * varpool.c (decide_is_variable_needed): Look at force_output.
18166         Recurse for emulated tls.
18167         (cgraph_varpool_remove_unreferenced_decls): Remove checks redundant
18168         with decide_is_variable_needed.
18169         * emutls.c: New file.
18170         * config/sparc/sol2.h (ASM_DECLARE_OBJECT_NAME): Only emit
18171         tls_object for real tls.
18172
18173 2007-02-10  Kaz Kojima  <kkojima@gcc.gnu.org>
18174
18175         PR rtl-optimization/29599
18176         * reload1.c (eliminate_regs_in_insn): Take the destination
18177         mode into account when computing the offset.
18178
18179 2007-02-09  Stuart Hastings  <stuart@apple.com>
18180             Richard Henderson  <rth@redhat.com>
18181
18182         * config/i386/i386.h (TARGET_KEEPS_VECTOR_ALIGNED_STACK): New.
18183         * config/i386/darwin.h: (TARGET_KEEPS_VECTOR_ALIGNED_STACK): New.
18184         * config/i386/i386.md (fixuns_trunc<mode>si2, fixuns_truncsfhi2,
18185         fixuns_truncdfhi2): New.
18186         (fix_truncsfdi_sse): Call ix86_expand_convert_sign_didf_sse.
18187         (floatunsdidf2): Call ix86_expand_convert_uns_didf_sse.
18188         (floatunssisf2): Add call to ix86_expand_convert_uns_sisf_sse.
18189         (floatunssidf2): Allow nonimmediate source.
18190         * config/i386/sse.md (movdi_to_sse): New.
18191         (vec_concatv2di): Drop '*'.
18192         * config/i386/i386-protos.h (ix86_expand_convert_uns_si_sse,
18193         ix86_expand_convert_uns_didf_sse, ix86_expand_convert_uns_sidf_sse,
18194         ix86_expand_convert_uns_sisf_sse, ix86_expand_convert_sign_didf_sse):
18195         New.
18196         * config/i386/i386.c (ix86_expand_convert_uns_si_sse,
18197         ix86_expand_convert_uns_didf_sse, ix86_expand_convert_uns_sidf_sse,
18198         ix86_expand_convert_uns_sisf_sse, ix86_expand_convert_sign_didf_sse,
18199         ix86_build_const_vector, ix86_expand_vector_init_one_nonzero): New.
18200         (ix86_build_signbit_mask): Fix decl of v, refactor to call
18201         ix86_build_const_vector.
18202         (x86_emit_floatuns): Rewrite.
18203
18204 2007-02-10  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
18205
18206         * genautomata.c (longest_path_length): Delete unused function.
18207         (struct state): Delete unused longest_path_length.
18208         (UNDEFINED_LONGEST_PATH_LENGTH): Delete unused macro.
18209         (get_free_state): Delete unused.
18210
18211 2007-02-09  Jan Hubicka  <jh@suse.cz>
18212
18213         * params.def (PARAM_INLINE_UNIT_GROWTH): Set to 30.
18214         * doc/invoke.texi (inline-unit-growth): Update default value.
18215
18216         * Makefile.in (passes.o, ipa-inline.o): Add dependencies.
18217         * cgraphbuild.c (build_cgraph_edges): Compute frequencies.
18218         (rebuild_cgraph_edges): Likewise.
18219         * cgraph.c (cgraph_set_call_stmt): Add new argument frequency.
18220         (dump_cgraph_node): Dump frequencies.
18221         (cgraph_clone_edge): Add frequency scales.
18222         (cgraph_clone_node): Add freuqnecy.
18223         * cgraph.h (cgraph_edge): Add freuqnecy argument.
18224         (CGRAPH_FREQ_BASE, CGRAPH_FREQ_MAX): New constants.
18225         (cgraph_create_edge, cgraph_clone_edge, cgraph_clone_node): Update.
18226         * tree-pass.h (TODO_rebuild_frequencies): New constant.
18227         * cgraphunit.c (verify_cgraph_node): Verify frequencies.
18228         (cgraph_copy_node_for_versioning): Update call of cgraph_clone_edge.
18229         (save_inline_function_body): Likewise.
18230         * ipa-inline.c: inluce rtl.h
18231         (cgraph_clone_inlined_nods): Update call of cgraph_clone_node.
18232         (cgraph_edge_badness): Use frequencies.
18233         (cgraph_decide_recursive_inlining): Update clonning.
18234         (cgraph_decide_inlining_of_small_function): Dump frequency.
18235         * predict.c (estimate_bb_frequencies): Export.
18236         * predict.h (estimate_bb_frequencies): Declare.
18237         * tree-inline.c (copy_bb): Watch overflows.
18238         (expand_call_inline): Update call of cgraph_create_edge.
18239         (optimize_inline_calls): Use TODO flags to update frequnecies.
18240         * passes.h: Include predict.h
18241         (init_optimization_passes): Move profile ahead.
18242         (execute_function_todo): Handle TODO_rebuild_frequencies.
18243
18244 2007-02-09  Roger Sayle  <roger@eyesopen.com>
18245
18246         * config/alpha/alpha.c (emit_insxl): Force the first operand of
18247         the insbl or inswl pattern into a register.
18248
18249 2007-02-09  Roger Sayle  <roger@eyesopen.com>
18250
18251         * config/ia64/ia64.md (bswapdi2): New define_insn.
18252
18253 2007-02-09  Richard Henderson  <rth@redhat.com>
18254
18255         * config/i386/constraints.md (Ym): New constraint.
18256         * config/i386/i386.md (movsi_1): Change Y2 to Yi constraints.
18257         (movdi_1_rex64): Split sse and xmm general register moves from
18258         memory move alternatives.  Use conditional register constraints.
18259         (movsf_1, movdf_integer): Likewise.
18260         (zero_extendsidi2_32, zero_extendsidi2_rex64): Likewise.
18261         (movdf_integer_rex64): New.
18262         (pushsf_rex64): Fix output constraints.
18263         * config/i386/sse.md (sse2_loadld): Split rm alternative, use Yi.
18264         (sse2_stored): Likewise.
18265         (sse2_storeq_rex64): New.
18266         * config/i386/i386.c (x86_inter_unit_moves): Enable for not
18267         amd and not generic.
18268         (ix86_secondary_memory_needed): Don't bypass TARGET_INTER_UNIT_MOVES
18269         for optimize_size.  Remove SF/DFmode hack.
18270
18271 2007-02-09  Dwarakanath Rajagopal  <dwarak.rajagopal@amd.com>
18272
18273         * config/i386/driver-i386.c: Turn on -mtune=native for AMDFAM10.
18274         (bit_SSE4a): New.
18275
18276 2007-02-09  Nathan Sidwell  <nathan@codesourcery.com>
18277             Richard Sandiford  <richard@codesourcery.com>
18278
18279         * config.gcc (m68010-*-netbsdelf*, m68k*-*-netbsdelf*)
18280         (m68k*-*-openbsd*, m68k-*-linux*): Set default_cf_cpu.
18281         (m68k-*-aout*, m68k-*-coff*, m68k-*-uclinux*, m68k-*-rtems*): Add
18282         m68k/t-mlib to tmake_file.
18283         (m68020-*-elf*, m68k-*-elf*): Likewise.  Add t-m68kbare as well.
18284         (m68k*-*-*): Use --with-arch to pick a default for --with-cpu.
18285         (m680[012]0-*-*, m68k*-*-*): Add support for --with-arch.
18286         Allow it to be cf or m68k.  Set m68k_arch_family.  If that
18287         variable is not empty, add t-$m68k_arch_family to tmake_file.
18288         Add t-mlibs to tmake_file.
18289         * doc/install.texi: Document --with-arch=m68k and --with-arch=cf.
18290         * config/m68k/t-cf: New file.
18291         * config/m68k/t-m68k: Likewise.
18292         * config/m68k/t-mlibs: Likewise.
18293         * config/m68k/t-m68kbare (MULTILIB_OPTIONS, MULTILIB_DIRNAMES)
18294         (MULTILIB_MATCHES, MULTILIB_EXCEPTIONS): Delete.
18295         (M68K_MLIB_DIRNAMES, M68K_MLIB_OPTIONS): Define.
18296         * config/m68k/t-m68kelf (MULTILIB_OPTIONS, MULTILIB_DIRNAMES)
18297         (MULTILIB_MATCHES, MULTILIB_EXCEPTIONS, LIBGCC, INSTALL_LIBGCC):
18298         Delete.
18299         * config/m68k/t-openbsd (MULTILIB_OPTIONS, LIBGCC): Delete.
18300         (INSTALL_LIBGCC): Delete.
18301         (M68K_MLIB_DIRNAMES, M68K_MLIB_OPTIONS): Define.
18302         * config/m68k/t-rtems (MULTILIB_OPTIONS, MULTILIB_DIRNAMES)
18303         (MULTILIB_MATCHES, MULTILIB_EXCEPTIONS): Delete.
18304         (M68K_MLIB_CPU): Define.
18305         * config/m68k/t-uclinux (MULTILIB_OPTIONS, MULTILIB_DIRNAMES)
18306         (MULTILIB_MATCHES, MULTILIB_EXCEPTIONS): Delete.
18307         (M68K_MLIB_CPU, M68K_MLIB_OPTIONS, M68K_MLIB_DIRNAMES): Define.
18308
18309 2007-02-09  Zdenek Dvorak  <dvorakz@suse.cz>
18310             Richard Guenther  <rguenther@suse.de>
18311
18312         PR middle-end/23361
18313         * fold-const.c (fold_comparison): Handle obfuscated comparisons
18314         against INT_MIN/INT_MAX.
18315         * tree-ssa-loop-ivcanon.c (remove_empty_loop): Print to dump
18316         file if a loop is removed.
18317
18318 2007-02-09  Joseph Myers  <joseph@codesourcery.com>
18319
18320         * calls.c (store_one_arg): Pass correct alignment to
18321         emit_push_insn for non-BLKmode values.
18322         * expr.c (emit_push_insn): If STRICT_ALIGNMENT, copy to an
18323         unaligned stack slot via a suitably aligned slot.
18324
18325 2007-02-08  DJ Delorie  <dj@redhat.com>
18326
18327         * config/m32c/m32c.c (m32c_unpend_compare): Add default to silence
18328         warnings.
18329         (legal_subregs): Use unsigned char, make const.
18330         (m32c_illegal_subreg_p): Use ARRAY_SIZE.  Delete unused variables.
18331
18332 2007-02-08  Paul Brook  <paul@codesourcery.com>
18333
18334         * config/arm/lib1funcs.asm (RETLDM): Pop directly into PC when no
18335         special interworking needed.
18336
18337 2007-02-08  Harsha Jagasia  <harsha.jagasia@amd.com>
18338
18339         * config/i386/xmmintrin.h: Make inclusion of emmintrin.h
18340         conditional to __SSE2__.
18341         (Entries below should have been added to first ChangeLog
18342         entry for amdfam10 dated 2007-02-05)
18343         * config/i386/emmintrin.h: Generate #error if __SSE2__ is not
18344         defined.
18345         * config/i386/pmmintrin.h: Generate #error if __SSE3__ is not
18346         defined.
18347         * config/i386/tmmintrin.h: Generate #error if __SSSE3__ is not
18348         defined.
18349
18350 2007-02-08  DJ Delorie  <dj@redhat.com>
18351
18352         * config/m32c/m32c-protos.h (m32c_illegal_subreg_p): New.
18353         * config/m32c/m32c.c (legal_subregs): New.
18354         (m32c_illegal_subreg_p): New.
18355         * config/m32c/predicates.md (m32c_any_operand): Use it to reject
18356         unsupported subregs of hard regs.
18357
18358 2007-02-08  Jan Hubicka  <jh@suse.cz>
18359
18360         * tree-cfg.c (bsi_replace): Shortcut when replacing the statement with
18361         the same one; always update histograms.
18362
18363 2007-02-08  Diego Novillo  <dnovillo@redhat.com>
18364
18365         * passes.c (init_optimization_passes): Tidy comment.
18366
18367 2007-02-08  Roger Sayle  <roger@eyesopen.com>
18368
18369         * simplify-rtx.c (simplify_unary_operation_1) <POPCOUNT>: We can
18370         strip zero_extend, bswap and rotates from POCOUNT's argument.
18371         <PARITY>: Likewise, we can strip not, bswap, sign_extend,
18372         zero_extend and rotates from PARITY's argument.
18373         <BSWAP>: A byte-swap followed by a byte-swap is an identity.
18374         (simplify_const_unary_operation) <BSWAP>: Evaluate the byte-swap
18375         of an integer constant at compile-time.
18376
18377 2007-02-08  Diego Novillo  <dnovillo@redhat.com>
18378
18379         PR 30562
18380         * tree-flow.h (struct var_ann_d): Remove field 'is_used'.
18381         Update all users.
18382         * tree-ssa-alias.c (compute_is_aliased): Remove.  Update all
18383         users.
18384         (init_alias_info):
18385         * tree-ssa-live.c (remove_unused_locals): Do not remove
18386         TREE_ADDRESSABLE variables.
18387         * tree-ssa-structalias.c (compute_points_to_sets): Tidy.
18388         * tree-ssa-operands.c (add_virtual_operand): Remove argument
18389         FOR_CLOBBER.  Update all users.
18390         If VAR has an associated alias set, add a virtual operand for
18391         it if no alias is found to conflict with the memory reference.
18392
18393 2007-02-07  Jan Hubicka  <jh@suse.cz>
18394             Robert Kidd <rkidd@crhc.uiuc.edu>
18395
18396         * value-prof.c (visit_hist, free_hist): Return 1 instead of 0.
18397
18398 2007-02-07  Ian Lance Taylor  <iant@google.com>
18399
18400         * lower-subreg.c (simple_move): Reject PARTIAL_INT modes.
18401
18402 2007-02-07  Roger Sayle  <roger@eyesopen.com>
18403
18404         * config/rs6000/rs6000.md (ctz<mode>2, ffs<mode>2, popcount<mode>2,
18405         parity<mode>2, smulsi3_highpart, abstf2_internal, allocate_stack,
18406         tablejumpdi, movsi_to_cr_one): Remove constraints from
18407         define_expand's match_operands.
18408
18409 2007-02-07  Roger Sayle  <roger@eyesopen.com>
18410
18411         * global.c (compute_regsets): Move declatation of "i" inside of
18412         #ifdef ELIMINABLE_REGS to avoid unused variable bootstrap failure.
18413
18414 2007-02-07  Jakub Jelinek  <jakub@redhat.com>
18415
18416         PR c++/30703
18417         * gimplify.c (gimplify_scan_omp_clauses): Remove special casing
18418         of INDIRECT_REF <RESULT_DECL>.
18419
18420         * config/i386/i386.c (override_options): Set PTA_SSSE3 for core2.
18421
18422 2007-02-06  J"orn Rennecke  <joern.rennecke@arc.com>
18423             Kaz Kojima  <kkojima@gcc.gnu.org>
18424
18425         PR target/29746
18426         * config/sh/sh.c (expand_cbranchdi4): Use scratch register
18427         properly.
18428         (sh_initialize_trampoline): Add parentheses to avoid a warning.
18429
18430 2007-02-06  Zdenek Dvorak <dvorakz@suse.cz>
18431
18432         * doc/loop.texi: Document possibility not to perform disambiguation
18433         of loops with multiple latches.
18434         * cfgloopmanip.c (alp_enum_p): Removed.
18435         (add_loop): Handle subloops.  Use get_loop_body_with_size.
18436         (create_preheader): Do not allow ENTRY_BLOCK_PTR to be preheader.
18437         * cfghooks.c (redirect_edge_and_branch_force): Set dominator for
18438         the new forwarder block.
18439         (make_forwarder_block): Only call new_bb_cbk if it is not NULL.
18440         Handle the case latch is NULL.
18441         * tree-ssa-dom.c (tree_ssa_dominator_optimize): Avoid cfg
18442         modifications when marking loop exits.
18443         * ifcvt.c (if_convert): Ditto.  Mark loop exits even if cfg cannot
18444         be modified.
18445         * loop-init.c (loop_optimizer_init): Do not modify cfg.  Call
18446         disambiguate_loops_with_multiple_latches.
18447         * tree-cfgcleanup.c (cleanup_tree_cfg_loop): Calculate dominators
18448         before fix_loop_structure.
18449         * cfgloop.c: Include pointer-set.h and output.h.
18450         (canonicalize_loop_headers, HEADER_BLOCK, LATCH_EDGE,
18451         update_latch_info, mfb_keep_just, mfb_keep_nonlatch): Removed.
18452         (get_loop_latch_edges, find_subloop_latch_edge_by_profile,
18453         find_subloop_latch_edge_by_ivs, find_subloop_latch_edge,
18454         mfb_redirect_edges_in_set, form_subloop, merge_latch_edges,
18455         disambiguate_multiple_latches, get_loop_body_with_size,
18456         disambiguate_loops_with_multiple_latches): New functions.
18457         (flow_loop_dump): Dump multiple latch edges.
18458         (flow_loop_nodes_find): Handle loops with multiple latches.
18459         (flow_loops_find): Ditto. Do not call canonicalize_loop_headers.
18460         (glb_enum_p): Modified.
18461         (get_loop_body): Use get_loop_body_with_size.
18462         * cfgloop.h (LOOPS_HAVE_RECORDED_EXITS): New flag.
18463         (AVOID_CFG_MODIFICATIONS): New constant.
18464         (disambiguate_loops_with_multiple_latches, add_loop,
18465         get_loop_body_with_size): Declare.
18466         * Makefile.in (cfgloop.o): Add pointer-set.h and output.h.
18467
18468 2007-02-06  Seongbae Park <seongbae.park@gmail.com>
18469
18470         PR inline-asm/28686
18471         * global.c (compute_regsets): New function.
18472         (global_alloc): Refactored ELIMINABLE_REGSET
18473         and NO_GLOBAL_ALLOC_REGS computation out.
18474         (rest_of_handle_global_alloc): Call compute_regsets()
18475         for non-optimizing case.
18476
18477 2007-02-06  Richard Henderson  <rth@redhat.com>
18478
18479         * config/i386/constraints.md (Y2): Rename from Y.
18480         (Yi): New constraint.
18481         * config/i386/i386.md (movsi_1, movdi_2, pushdf_nointeger,
18482         pushdf_integer, movdf_nointeger, movdf_integer, zero_extendsidi2_32,
18483         zero_extendsidi2_rex64, truncxfdf2_mixed): Change Y constraints to Y2.
18484         (extendsfdf2_mixed, extendsfdf2_sse, truncdfsf_fast_mixed,
18485         truncdfsf_fast_sse, truncdfsf_mixed, fix_truncdfdi_sse,
18486         fix_truncdfsi_sse, floatsidf2_mixed, floatsidf2_sse,
18487         floatdidf2_mixed, floatdidf2_sse, absnegdf2_mixed,
18488         absnegdf2_sse, sse_setccdf, fop_df_comm_mixed, fop_df_comm_sse,
18489         fop_df_1_mixed, fop_df_1_sse): Change Y constraints to x.
18490         * config/i386/mmx.md (mov<MMXMODEI>_internal_rex64,
18491         mov<MMXMODEI>_internal, movv2sf_internal_rex64, movv2sf_internal,
18492         vec_extractv2si_1): Change Y constraints to Y2.
18493         * config/i386/sse.md (vec_setv4sf_0, vec_concatv2df, vec_dupv4si,
18494         vec_dupv2di, sse2_concatv2si, vec_concatv4si_1, vec_concatv2di):
18495         Change Y constraints to Y2.
18496         (sse2_loadld): Change Y constraints to x.
18497
18498 2007-02-06  Roger Sayle  <roger@eyesopen.com>
18499
18500         * config/rs6000/rs6000.md (popcount<mode>2): Rewrite.
18501         (parity<mode>2): New define_expand using rs6000_emit_parity.
18502         * config/rs6000/rs6000.c (rs6000_emit_popcount,
18503         rs6000_emit_parity): New functions.
18504         * config/rs6000/rs6000-protos.h (rs6000_emit_popcount,
18505         rs6000_emit_parity): Prototype here.
18506
18507 2007-02-06  Ian Lance Taylor  <iant@google.com>
18508
18509         * lower-subreg.c (simple_move_operand): Reject CONST.
18510         (resolve_clobber): Call validate_change rather than directly
18511         assigning to XEXP (pat, 0).
18512
18513 2006-02-06  Paolo Bonzini  <bonzini@gnu.org>
18514
18515         * Makefile.in (tree-ssa-loop-ivopts.o): Add pointer-set.h dependency.
18516         (tree-ssa-reassoc.o): Add pointer-set.h dependency.
18517         (tree-cfg.o): Remove hashtab.h dependency.
18518
18519         * tree-ssa-loop-ivopts.c: Include pointer-set.h.
18520         (struct ivopts_data): Change niters to pointer_map_t.
18521         (struct nfe_cache_elt, nfe_hash, nfe_eq): Delete.
18522         (niter_for_exit): Create pointer_map on demand.  Change for
18523         pointer_map API.
18524         (tree_ssa_iv_optimize_init): Initialize data->niters to NULL.
18525         (free_loop_data): Destroy data->niters if created and reset field.
18526         (tree_ssa_iv_optimize_finalize): Don't delete data->niters here.
18527         (tree_ssa_iv_optimize_loop): Check for presence of stale data.
18528
18529         * tree-ssa-reassoc.c: Include pointer-set.h.
18530         (bb_rank): Change to long *.
18531         (operand_rank): Change to pointer_map_t.
18532         (find_operand_rank): Return long, -1 if not found.  Declare as inline.
18533         (insert_operand_rank): Accept long.
18534         (operand_entry_hash, operand_entry_eq): Remove.
18535         (get_rank): Return long.  Adjust for changes above.
18536         (init_reassoc): Change rank type to long.  Adjust creation of bb_rank
18537         and operand_rank.
18538         (fini_reassoc): Delete operand_rank with pointer_map_destroy.
18539
18540         * tree-ssa-structalias.c (vi_for_tree): Change to pointer_map.
18541         (struct tree_vi, tree_vi_t, tree_vi_hash, tree_vi_eq): Delete.
18542         (insert_vi_for_tree): Rewrite for pointer_map API.  Assert argument
18543         is not NULL.
18544         (lookup_vi_for_tree): Rewrite for pointer_map API.  Return varinfo_t
18545         directly since it cannot be NULL.
18546         (get_vi_for_tree): Rewrite for pointer_map API.
18547         (find_what_p_points_to): Adjust for change to lookup_vi_for_tree.
18548         (init_alias_vars): Create vi_for_tree as pointer_map.
18549         (delete_points_to_sets): Delete vi_for_tree using pointer_map_destroy.
18550
18551         * tree-cfg.c: Don't include hashtab.h.
18552         (edge_to_cases): Declare as pointer_map.
18553         (struct edge_to_cases_elt, edge_to_cases_hash, edge_to_cases_eq):
18554         Delete.
18555         (edge_to_cases_cleanup): Rewrite as pointer_map_traverse callback.
18556         (start_recording_case_labels): Create edge_to_cases as pointer_map.
18557         (end_recoding_case_labels): Cleanup edge_to_cases manually before
18558         destroying it.
18559         (record_switch_edge): Delete.
18560         (get_cases_for_edge): Adjust for pointer_map API, inline
18561         record_switch_edge (rewritten for new API), remove goto.
18562
18563 2006-02-06  Paolo Bonzini  <bonzini@gnu.org>
18564
18565         * Makefile.in (tree-nested.o): Add pointer-set.h dependency.
18566         * tree-nested.c: Include pointer-set.h.
18567         (var_map_elt, var_map_eq, var_map_hash): Delete.
18568         (struct nesting_info): Remove GTY marker.  Change the two htab_t's
18569         to pointer_map_t's.
18570         (nesting_info_bitmap_obstack): New.
18571         (lookup_field_for_decl): Adjust for pointer_map API.
18572         (lookup_tramp_for_decl): Adjust for pointer_map API.
18573         (get_nonlocal_debug_decl): Adjust for pointer_map API.
18574         (get_local_debug_decl): Adjust for pointer_map API.
18575         (convert_nl_goto_reference): Adjust for pointer_map API.
18576         (convert_nl_goto_receiver): Adjust for pointer_map API.
18577         (create_nesting_tree): Create outside GGC space.  Create bitmap on
18578         the new obstack.  Create field_map and var_map as pointer_maps.
18579         (free_nesting_tree): Adjust for changes to create_nesting_tree.
18580         (root): Delete.
18581         (lower_nested_functions): Move root here, no need to NULL it.
18582         Initialize and release the obstack.
18583
18584 2007-02-06  Paolo Bonzini  <bonzini@gnu.org>
18585
18586         * tree.c (tree_int_map_hash, tree_int_map_eq, tree_int_map_marked_p):
18587         Remove prototypes and make them non-static.
18588         (struct tree_int_map): Remove.
18589         * tree.h (struct tree_int_map): Move here, turning TO into an
18590         unsigned int.
18591         (tree_int_map_hash, tree_int_map_eq, tree_int_map_marked_p): Declare.
18592
18593         * tree.h (TREE_COMPLEXITY): Remove.
18594         (struct tree_exp): Remove complexity field.
18595         * tree.c (build1_stat): Don't set it.
18596
18597 2007-02-06  Dorit Nuzman  <dorit@il.ibm.com>
18598             Victor Kaplansky  <victork@il.ibm.com>
18599
18600         * tree-vectorizer.c (vect_is_simple_use): Support induction.
18601         (vect_is_simple_reduction): Support reduction with induction as
18602         one of the operands.
18603         (vect_is_simple_iv_evolution): Fix formatting.
18604         * tree-vect-analyze.c (vect_mark_stmts_to_be_vectorized): Fix
18605         formatting.  Don't mark induction phis for vectorization.
18606         (vect_analyze_scalar_cycles): Analyze all inductions, then reductions.
18607         * tree-vect-transform.c (get_initial_def_for_induction): New function.
18608         (vect_get_vec_def_for_operand): Support induction.
18609         (vect_get_vec_def_for_stmt_copy): Fix formatting and add check for
18610         induction case.
18611         (vectorizable_reduction): Support reduction with induction as one of
18612         the operands.
18613         (vectorizable_type_demotion): Use def-type of stmt argument rather
18614         than dummy def-type.
18615
18616         * tree-ssa-loop.c (gate_scev_const_prop): Return the value of
18617         flag_tree_scev_cprop.
18618         * common.opt (tree-scev-cprop): New flag.
18619
18620         * tree-vect-transform.c (vect_create_destination_var): Use 'kind' in
18621         call to vect_get_new_vect_var.
18622
18623 2007-02-06  Ira Rosen  <irar@il.ibm.com>
18624
18625         * tree-vect-patterns.c (vect_recog_widen_mult_pattern): Check that
18626         vectype is not NULL.
18627         (vect_pattern_recog_1): Likewise.
18628
18629 2007-02-05  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
18630
18631         * fold-const.c (negate_expr_p): Handle CONJ_EXPR.
18632         (fold_negate_expr): Likewise.
18633
18634 2007-02-05  Alexandre Oliva  <aoliva@redhat.com>
18635
18636         PR debug/30189
18637         * dwarf2out.c (modified_type_die): Follow DECL_ORIGINAL_TYPE
18638         even if cv-qualification is the same.
18639
18640 2007-02-05  Geoffrey Keating  <geoffk@apple.com>
18641
18642         * config/rs6000/darwin-tramp.asm (__trampoline_setup): Call
18643         __enable_execute_stack on completion.
18644
18645 2007-02-05  Harsha Jagasia  <harsha.jagasia@amd.com>
18646
18647         * config/i386/athlon.md (athlon_fldxf_k8, athlon_fld_k8,
18648         athlon_fstxf_k8, athlon_fst_k8, athlon_fist, athlon_fmov,
18649         athlon_fadd_load, athlon_fadd_load_k8, athlon_fadd, athlon_fmul,
18650         athlon_fmul_load, athlon_fmul_load_k8, athlon_fsgn,
18651         athlon_fdiv_load, athlon_fdiv_load_k8, athlon_fdiv_k8,
18652         athlon_fpspc_load, athlon_fpspc, athlon_fcmov_load,
18653         athlon_fcmov_load_k8, athlon_fcmov_k8, athlon_fcomi_load_k8,
18654         athlon_fcomi, athlon_fcom_load_k8, athlon_fcom): Added amdfam10.
18655
18656 2007-02-05  Harsha Jagasia  <harsha.jagasia@amd.com>
18657
18658         * config/i386/i386.md (x86_sahf_1, cmpfp_i_mixed, cmpfp_i_sse,
18659         cmpfp_i_i387, cmpfp_iu_mixed, cmpfp_iu_sse, cmpfp_iu_387,
18660         swapsi, swaphi_1, swapqi_1, swapdi_rex64, fix_truncsfdi_sse,
18661         fix_truncdfdi_sse, fix_truncsfsi_sse, fix_truncdfsi_sse,
18662         x86_fldcw_1, floatsisf2_mixed, floatsisf2_sse, floatdisf2_mixed,
18663         floatdisf2_sse, floatsidf2_mixed, floatsidf2_sse,
18664         floatdidf2_mixed, floatdidf2_sse, muldi3_1_rex64, mulsi3_1,
18665         mulsi3_1_zext, mulhi3_1, mulqi3_1, umulqihi3_1, mulqihi3_insn,
18666         umulditi3_insn, umulsidi3_insn, mulditi3_insn, mulsidi3_insn,
18667         umuldi3_highpart_rex64, umulsi3_highpart_insn,
18668         umulsi3_highpart_zext, smuldi3_highpart_rex64,
18669         smulsi3_highpart_insn, smulsi3_highpart_zext, x86_64_shld,
18670         x86_shld_1, x86_64_shrd, sqrtsf2_mixed, sqrtsf2_sse,
18671         sqrtsf2_i387, sqrtdf2_mixed, sqrtdf2_sse, sqrtdf2_i387,
18672         sqrtextendsfdf2_i387, sqrtxf2, sqrtextendsfxf2_i387,
18673         sqrtextenddfxf2_i387): Added amdfam10_decode.
18674
18675         * config/i386/athlon.md (athlon_idirect_amdfam10,
18676         athlon_ivector_amdfam10, athlon_idirect_load_amdfam10,
18677         athlon_ivector_load_amdfam10, athlon_idirect_both_amdfam10,
18678         athlon_ivector_both_amdfam10, athlon_idirect_store_amdfam10,
18679         athlon_ivector_store_amdfam10): New define_insn_reservation.
18680         (athlon_idirect_loadmov, athlon_idirect_movstore): Added
18681         amdfam10.
18682
18683 2007-02-05  Harsha Jagasia  <harsha.jagasia@amd.com>
18684
18685         * config/i386/athlon.md (athlon_call_amdfam10,
18686         athlon_pop_amdfam10, athlon_lea_amdfam10): New
18687         define_insn_reservation.
18688         (athlon_branch, athlon_push, athlon_leave_k8, athlon_imul_k8,
18689         athlon_imul_k8_DI, athlon_imul_mem_k8, athlon_imul_mem_k8_DI,
18690         athlon_idiv, athlon_idiv_mem, athlon_str): Added amdfam10.
18691
18692 2007-02-05  Harsha Jagasia  <harsha.jagasia@amd.com>
18693
18694         * config/i386/athlon.md (athlon_sseld_amdfam10,
18695         athlon_mmxld_amdfam10, athlon_ssest_amdfam10,
18696         athlon_mmxssest_short_amdfam10): New define_insn_reservation.
18697
18698 2007-02-05  Harsha Jagasia  <harsha.jagasia@amd.com>
18699
18700         * config/i386/athlon.md (athlon_sseins_amdfam10): New
18701         define_insn_reservation.
18702         * config/i386/i386.md (sseins): Added sseins to define_attr type
18703         and define_attr unit.
18704         * config/i386/sse.md: Set type attribute to sseins for insertq
18705         and insertqi.
18706
18707 2007-02-05  Harsha Jagasia  <harsha.jagasia@amd.com>
18708
18709         * config/i386/athlon.md (sselog_load_amdfam10, sselog_amdfam10,
18710         ssecmpvector_load_amdfam10, ssecmpvector_amdfam10,
18711         ssecomi_load_amdfam10, ssecomi_amdfam10,
18712         sseaddvector_load_amdfam10, sseaddvector_amdfam10): New
18713         define_insn_reservation.
18714         (ssecmp_load_k8, ssecmp, sseadd_load_k8, seadd): Added amdfam10.
18715
18716 2007-02-05  Harsha Jagasia  <harsha.jagasia@amd.com>
18717
18718         * config/i386/athlon.md (cvtss2sd_load_amdfam10,
18719         cvtss2sd_amdfam10, cvtps2pd_load_amdfam10, cvtps2pd_amdfam10,
18720         cvtsi2sd_load_amdfam10, cvtsi2ss_load_amdfam10,
18721         cvtsi2sd_amdfam10, cvtsi2ss_amdfam10, cvtsd2ss_load_amdfam10,
18722         cvtsd2ss_amdfam10, cvtpd2ps_load_amdfam10, cvtpd2ps_amdfam10,
18723         cvtsX2si_load_amdfam10, cvtsX2si_amdfam10): New
18724         define_insn_reservation.
18725
18726         * config/i386/sse.md (cvtsi2ss, cvtsi2ssq, cvtss2si,
18727         cvtss2siq, cvttss2si, cvttss2siq, cvtsi2sd, cvtsi2sdq,
18728         cvtsd2si, cvtsd2siq, cvttsd2si, cvttsd2siq,
18729         cvtpd2dq, cvttpd2dq, cvtsd2ss, cvtss2sd,
18730         cvtpd2ps, cvtps2pd): Added amdfam10_decode attribute.
18731
18732 2007-02-05  Harsha Jagasia  <harsha.jagasia@amd.com>
18733
18734         * config/i386/athlon.md (athlon_ssedivvector_amdfam10,
18735         athlon_ssedivvector_load_amdfam10, athlon_ssemulvector_amdfam10,
18736         athlon_ssemulvector_load_amdfam10): New define_insn_reservation.
18737         (athlon_ssediv, athlon_ssediv_load_k8, athlon_ssemul,
18738         athlon_ssemul_load_k8): Added amdfam10.
18739
18740 2007-02-05  Harsha Jagasia  <harsha.jagasia@amd.com>
18741
18742         * config/i386/i386.h (TARGET_SSE_UNALIGNED_MOVE_OPTIMAL): New macro.
18743         (x86_sse_unaligned_move_optimal): New variable.
18744
18745         * config/i386/i386.c (x86_sse_unaligned_move_optimal): Enable for
18746         m_AMDFAM10.
18747         (ix86_expand_vector_move_misalign): Add code to generate movupd/movups
18748         for unaligned vector SSE double/single precision loads for AMDFAM10.
18749
18750 2007-02-05  Harsha Jagasia  <harsha.jagasia@amd.com>
18751
18752         * config/i386/i386.h (TARGET_AMDFAM10): New macro.
18753         (TARGET_CPU_CPP_BUILTINS): Add code for amdfam10.
18754         Define TARGET_CPU_DEFAULT_amdfam10.
18755         (TARGET_CPU_DEFAULT_NAMES): Add amdfam10.
18756         (processor_type): Add PROCESSOR_AMDFAM10.
18757
18758         * config/i386/i386.md: Add amdfam10 as a new cpu attribute to match
18759         processor_type in config/i386/i386.h.
18760         Enable imul peepholes for TARGET_AMDFAM10.
18761
18762         * config.gcc: Add support for --with-cpu option for amdfam10.
18763
18764         * config/i386/i386.c (amdfam10_cost): New variable.
18765         (m_AMDFAM10): New macro.
18766         (m_ATHLON_K8_AMDFAM10): New macro.
18767         (x86_use_leave, x86_push_memory, x86_movx, x86_unroll_strlen,
18768         x86_cmove, x86_3dnow_a, x86_deep_branch, x86_use_simode_fiop,
18769         x86_promote_QImode, x86_integer_DFmode_moves,
18770         x86_partial_reg_dependency, x86_memory_mismatch_stall,
18771         x86_accumulate_outgoing_args, x86_arch_always_fancy_math_387,
18772         x86_sse_partial_reg_dependency, x86_sse_typeless_stores,
18773         x86_use_ffreep, x86_use_incdec, x86_four_jump_limit,
18774         x86_schedule, x86_use_bt, x86_cmpxchg16b, x86_pad_returns):
18775         Enable/disable for amdfam10.
18776         (override_options): Add amdfam10_cost to processor_target_table.
18777         Set up PROCESSOR_AMDFAM10 for amdfam10 entry in
18778         processor_alias_table.
18779         (ix86_issue_rate): Add PROCESSOR_AMDFAM10.
18780         (ix86_adjust_cost): Add code for amdfam10.
18781
18782 2007-02-05  Harsha Jagasia  <harsha.jagasia@amd.com>
18783
18784         * config/i386/i386.opt: Add new Advanced Bit Manipulation (-mabm)
18785         instruction set feature flag. Add new (-mpopcnt) flag for popcnt
18786         instruction. Add new SSE4A (-msse4a) instruction set feature flag.
18787         * config/i386/i386.h: Add builtin definition for SSE4A.
18788         * config/i386/i386.md: Add support for ABM instructions
18789         (popcnt and lzcnt).
18790         * config/i386/sse.md: Add support for SSE4A instructions
18791         (movntss, movntsd, extrq, insertq).
18792         * config/i386/i386.c: Add support for ABM and SSE4A builtins.
18793         Add -march=amdfam10 flag.
18794         * config/i386/ammintrin.h: Add support for SSE4A intrinsics.
18795         * doc/invoke.texi: Add documentation on flags for sse4a, abm, popcnt
18796         and amdfam10.
18797         * doc/extend.texi: Add documentation for SSE4A builtins.
18798
18799 2007-02-05  Bob Wilson  <bob.wilson@acm.org>
18800
18801         * config/xtensa/xtensa.c (constantpool_mem_p): Skip over SUBREGs.
18802
18803 2007-02-05  Richard Guenther  <rguenther@suse.de>
18804
18805         * tree-vectorizer.h (vectorizable_function): Add argument type
18806         argument, change return type.
18807         * tree-vect-patterns.c (vect_recog_pow_pattern): Adjust caller.
18808         * tree-vect-transform.c (vectorizable_function): Handle extra
18809         argument, return vectorized function decl.
18810         (build_vectorized_function_call): Remove.
18811         (vectorizable_call): Handle calls with result and argument types
18812         differing.  Handle loop vectorization factor correctly.
18813         * targhooks.c (default_builtin_vectorized_function): Adjust for
18814         extra argument.
18815         * targhooks.h (default_builtin_vectorized_function): Likewise.
18816         * target.h (builtin_vectorized_function): Add argument type
18817         argument.
18818         * config/i386/i386.c (ix86_builtin_vectorized_function): Handle
18819         extra argument, allow vectorizing of lrintf.
18820         * doc/tm.texi (TARGET_VECTORIZE_BUILTIN_VECTORIZED_FUNCTION): Adjust
18821         documentation of target hook.
18822
18823 2007-02-05  Hans-Peter Nilsson  <hp@axis.com>
18824
18825         PR target/30665
18826         * config/cris/cris.md ("*andsi_movu", "*andsi_clear", "*andhi_movu")
18827         ("*andhi_clear", andu (casesi+45)): For size-changed operand where
18828         memory is allowed, require !side_effects_p, not just !MEM_VOLATILE_P.
18829
18830 2007-02-05  Roger Sayle  <roger@eyesopen.com>
18831
18832         * fold-const.c (fold_unary) <REAL_PART>: Test for availability of
18833         BUILT_IN_COS before simplifying REAL_PART(CEXPI)) to COS.
18834         <IMAG_PART>: Likewise, check for availability of BUILT_IN_SIN.
18835         * builtins.c (fold_builtin_sincos): Check for TARGET_C99_FUNCTIONS
18836         before canonicalizing sincos to cexpi.
18837         (fold_builtin_cexp): Likewise, for canonicalizing cexp to cexpi.
18838
18839 2007-02-05  Roger Sayle  <roger@eyesopen.com>
18840
18841         * config/alpha/alpha.c (alpha_add_builtins): New Helper function.
18842         Set TREE_READONLY and TREE_NOTHROW directly, not via attributes.
18843         (alpha_init_builtins): Use alpha_add_builtins to process tables.
18844
18845 2007-02-05  Roger Sayle  <roger@eyesopen.com>
18846
18847         * mips-tfile.c (initialize_init_file): Correct endianness test.
18848
18849 2007-02-05  Kazu Hirata  <kazu@codesourcery.com>
18850
18851         * config/m68k/m68k.md (pushdi-1, pushdi, movsi+1): Don't use
18852         the 'y' constraint.
18853
18854 2007-02-05  Richard Sandiford  <richard@codesourcery.com>
18855
18856         * dwarf2out.c (dwarf2out_frame_debug_expr): Record the register
18857         saves in a PARALLEL before the register assignments.
18858
18859 2007-02-05  Richard Sandiford  <richard@codesourcery.com>
18860
18861         * doc/tm.texi (DWARF_ALT_FRAME_RETURN_COLUMN): Do not require
18862         DWARF_FRAME_RETURN_COLUMN to be a general register.
18863         * dwarf2out.c (init_return_column_size): New function, split from...
18864         (expand_builtin_init_dwarf_reg_sizes): ...here.  Allow both
18865         DWARF_FRAME_RETURN_COLUMN and DWARF_ALT_FRAME_RETURN_COLUMN
18866         to be nongeneral registers.
18867         * config/m68k/m68k.h (DWARF_FRAME_REGNUM): Only map FP and
18868         integer registers.
18869         (DWARF_FRAME_REGISTERS, DWARF_FRAME_RETURN_COLUMN): Define.
18870         (DWARF_ALT_FRAME_RETURN_COLUMN): Define.
18871
18872 2007-02-04  Zdenek Dvorak <dvorakz@suse.cz>
18873
18874         * cfgcleanup.c (try_optimize_cfg): Avoid removing ENTRY_BLOCK_PTR.
18875
18876 2007-02-04  Zdenek Dvorak <dvorakz@suse.cz>
18877
18878         * cfgloopmanip.c (loop_delete_branch_edge): Removed.
18879         (remove_path): Use can_remove_branch_p and remove_branch instead
18880         of loop_delete_branch_edge.
18881         * tree-ssa-loop-manip.c (scale_dominated_blocks_in_loop): New function.
18882         (tree_transform_and_unroll_loop): Remove dead branches immediately.
18883         Update profile using scale_dominated_blocks_in_loop.
18884         * cfghooks.c (can_remove_branch_p, remove_branch): New functions.
18885         * cfghooks.h (struct cfg_hooks): Add can_remove_branch_p.
18886         (can_remove_branch_p, remove_branch): Declare.
18887         * tree-cfg.c (tree_can_remove_branch_p): New function.
18888         (tree_cfg_hooks): Add tree_can_remove_branch_p.
18889         * cfgrtl.c (rtl_can_remove_branch_p): New function.
18890         (rtl_cfg_hooks, cfg_layout_rtl_cfg_hook): Add rtl_can_remove_branch_p.
18891
18892 2007-02-05  Jan Hubicka  <jh@suse.cz>
18893
18894         PR middle-end/30696
18895         * ipa-inline.c (cgraph_clone_inlined_nodes): When there are unanalyzed
18896         nodes in cgraph, don't remove offline copy of the function.
18897
18898 2007-02-04  Jan Hubicka  <jh@suse.cz>
18899
18900         * tree-sra.c (sra_walk_expr): Add linebreaks. BITFIELD_REFs into
18901         vectors might cause maybe_lookup_element_for_expr to be called
18902         on non-sra-candidate.
18903
18904 2007-02-04  Kazu Hirata  <kazu@codesourcery.com>
18905
18906         * config/bfin/bfin-modes.def, config/bfin/bfin.c,
18907         config/bfin/bfin.md, config/bfin/predicates.md: Follow
18908         spelling conventions.
18909
18910 2007-02-04  Richard Guenther  <rguenther@suse.de>
18911
18912         PR middle-end/30636
18913         * fold-const.c (try_move_mult_to_index): Make sure to not
18914         overflow one dimension of a multi-dimensional array access.
18915
18916 2007-02-04  Jan Hubicka  <jh@suse.cz>
18917
18918         * passes.c (init_optimization_passes): Reindent.
18919
18920 2007-02-04  Jan Hubicka  <jh@suse.cz>
18921             Eric Botcazou  <ebotcazou@adacore.com>
18922
18923         * tree-optimize.c (has_abnormal_outgoing_edge_p): Move to...
18924         (execute_fixup_cfg): Break out the abnormal goto code.
18925         * tree-inline.c (has_abnormal_outgoing_edge_p): ...here.
18926         (make_nonlocal_label_edges): Move here from execute_fixup_cfg.
18927         (optimize_inline_calls): Call make_nonlocal_label_edges.
18928
18929 2007-02-04  Jan Hubicka  <jh@suse.cz>
18930
18931         * tree-ssa-copyrename.c (copy_rename_partition_coalesce): Return
18932         true when something was changed.
18933         (rename_ssa_copies): When something was changed, do
18934         TODO_remove_unused_locals.
18935         * tree-ssa-forwprop.c (tree_ssa_forward_propagate_single_use_value):
18936         add TODO_remove_unused_locals when instruction was removed.
18937
18938 2007-02-04  Jan Hubicka  <jh@suse.cz>
18939
18940         * ipa-inline.c (try_inline): Improve debug output; work on already
18941         inline edges too.
18942         (cgraph_decide_inlining_incrementally): Indent; improve debug output;
18943         call try_inline for already inlined edges too when flattening;
18944         inline also functions that make callee growth but overall unit size
18945         reduce.
18946
18947 2007-02-04  Kazu Hirata  <kazu@codesourcery.com>
18948
18949         * config/m32c/bitops.md, config/m32c/jump.md,
18950         config/m32c/m32c.c, config/m32c/m32c.h, config/m32r/m32r.c,
18951         config/m32r/m32r.h, config/m32r/m32r.md,
18952         config/m32r/predicates.md, config/m68hc11/larith.asm,
18953         config/m68hc11/m68hc11.c, config/m68hc11/m68hc11.h,
18954         config/m68k/m68k.h, config/mcore/mcore.md, config/mips/4k.md,
18955         config/mips/mips-protos.h, config/mips/mips.c,
18956         config/mips/mips.h, config/mips/mips.md, config/mips/mips16.S,
18957         config/mn10300/mn10300.h, config/mn10300/predicates.md,
18958         config/mt/mt.c, config/mt/mt.h, config/mt/mt.md: Follow
18959         spelling conventions.
18960
18961         * config/v850/v850.c, config/v850/v850.h, config/v850/v850.md:
18962         Follow spelling conventions.
18963
18964 2007-02-03  Douglas Gregor  <doug.gregor@gmail.com>
18965
18966         * c-opts.c (c_common_post_options): If C++0x mode is enabled, don't
18967         warn about C++0x compatibility.
18968
18969 2007-02-04  Kazu Hirata  <kazu@codesourcery.com>
18970
18971         * config/h8300/h8300.c, config/h8300/h8300.h,
18972         config/h8300/h8300.md: Follow spelling conventions.
18973
18974 2007-02-03  Uros Bizjak  <ubizjak@gmail.com>
18975
18976         PR middle-end/30667
18977         * combine.c (try_combine): Do not substitute source operand
18978         with constants wider than 2 * HOST_BITS_PER_WIDE_INT.
18979
18980 2007-02-03  Jan Hubicka  <jh@suse.cz>
18981
18982         PR gcov-profile/30650
18983         * value-prof.c (stringop_block_profile): Fix handling of size counter;
18984         do not divide by zero for never executed counters.
18985         (tree_find_values_to_profile): Fix counters.
18986         * gcov-ui.h (GCOV_COUNTER_AVERAGE, GCOV_COUNTER_IOR): Fix comments.
18987
18988 2007-02-03  Ian Lance Taylor  <iant@google.com>
18989
18990         * lower-subreg.c (simple_move_operand): New static function,
18991         broken out of simple_move.  Reject LABEL_REF, SYMBOL_REF, and HIGH
18992         operands.
18993         (simple_move): Call simple_move_operand.
18994         (find_decomposable_subregs): Add special handling of MEMs.
18995         (can_decompose_p): Rename from cannot_decompose_p.  Reverse
18996         meaning of return value.  If we see a hard register, test whether
18997         it can store a word_mode value.  Change all callers.
18998
18999 2007-02-03  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
19000
19001         * pa.md (addvdi3, addvsi3, subvdi3, subvsi3, negvdi2, negvsi2): New
19002         ftrapv insns and expanders.
19003         (subdi3): Change define_expand operand 1 to arith11_operand, and
19004         operand 2 to reg_or_0_operand.  Change constraints of 64-bit insn
19005         pattern to handle reg_or_0 operands.  Revise 32-bit insn pattern to
19006         handle 11-bit constants and reg_or_0 operands in operands 1 and 2,
19007         respectively.
19008
19009         PR middle-end/30174
19010         * varasm.c (notice_global_symbol): Treat global objects as weak when
19011         flag_shlib is true.
19012
19013 2007-02-03  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
19014
19015         * emit-rtl.c (dconstpi): Delete.
19016         (dconstsqrt2): New.
19017         (init_emit_once): Delete dconstpi and init dconstsqrt2.
19018         * real.h (dconstpi): Delete.
19019         (dconstsqrt2): New.
19020         * builtins.c (fold_builtin_cabs): Use dconstsqrt2.
19021         (fold_builtin_hypot): Likewise.
19022
19023 2007-02-03  Tom Tromey  <tromey@redhat.com>
19024
19025         PR driver/30246
19026         * gcc.c (cpp_unique_options): Any of -ggdb3, -gstabs3,
19027         -gcoff3, -gxcoff3, -gvms3 implies -dD.
19028
19029 2007-02-03  Kazu Hirata  <kazu@codesourcery.com>
19030
19031         * c-decl.c, config/avr/avr.c, config/avr/avr.h,
19032         config/m68k/m68k.c, config/m68k/netbsd-elf.h,
19033         config/mn10300/mn10300.c, config/pdp11/pdp11.h,
19034         config/rs6000/cell.md, config/rs6000/darwin.h,
19035         config/sh/sh.md, config/sh/sh4-300.md, config/spu/spu.c,
19036         config/spu/spu.md, cselib.c, expr.c, haifa-sched.c, hwint.h,
19037         jump.c, reload.c, sched-deps.c, sched-int.h, tree-inline.c,
19038         tree-profile.c, tree-ssa-live.h, tree-vrp.c: Fix comment
19039         typos.  Follow spelling conventions.
19040         * doc/invoke.texi: Follow spelling conventions.
19041
19042 2007-02-03  Roger Sayle  <roger@eyesopen.com>
19043
19044         * simplify-rtx.c (simplify_relational_operation_1): Implement some
19045         canonicalization transformations that attempt to simplify integer
19046         constant comparisons to become comparisons against zero.
19047
19048 2007-02-03  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
19049
19050         * builtins.c (fold_builtin_cabs): Fold cabs(x+xi) into
19051         fabs(x)*sqrt(2).
19052         * fold-const.c (fold_binary): Fix comment typos.  Fold complex
19053         (x,0)-(0,y) into (x,-y).  Likewise (0,y)-(x,0) into (-x,y).
19054
19055 2007-02-02  Mike Stump  <mrs@apple.com>
19056
19057         * config/darwin9.h (DARWIN_LINKER_GENERATES_ISLANDS): Add.
19058         * config/rs6000/rs6000.c (DARWIN_GENERATE_ISLANDS): Add.
19059         (output_call): Use DARWIN_GENERATE_ISLANDS to decide when to
19060         generate a branch island.
19061
19062 2007-02-02  Bob Wilson  <bob.wilson@acm.org>
19063
19064         * config/xtensa/xtensa.c (smalloffset_mem_p): Use BASE_REG_P.
19065         (xtensa_legitimate_address_p): New.
19066         (xtensa_legitimize_address): New.
19067         (xtensa_output_addr_const_extra): New.
19068         * config/xtensa/xtensa.h (REG_OK_STRICT_FLAG): Define.
19069         (BASE_REG_P): New.
19070         (REG_OK_FOR_BASE_P): Use BASE_REG_P.
19071         (GO_IF_LEGITIMATE_ADDRESS): Move code to xtensa_legitimate_address_p.
19072         (LEGITIMIZE_ADDRESS): Move code to xtensa_legitimize_address.
19073         (OUTPUT_ADDR_CONST_EXTRA): Move code to xtensa_output_addr_const_extra.
19074         * config/xtensa/xtensa-protos.h (xtensa_legitimate_address_p): New.
19075         (xtensa_legitimize_address): New.
19076         (xtensa_output_addr_const_extra): New.
19077
19078 2007-02-02  Steve Ellcey  <sje@cup.hp.com>
19079
19080         * config/ia64/ia64.c (ia64_print_operand): Fix compare strings.
19081
19082 2007-02-02  Ian Lance Taylor  <iant@google.com>
19083
19084         * expmed.c (expand_divmod): Add comment.
19085
19086 2007-02-02  Kazu Hirata  <kazu@codesourcery.com>
19087
19088         * emit-rtl.c (renumber_insns): Remove.
19089         * flags.h: Remove the extern for flag_renumber_insns.
19090         * rtl.h: Remove the prototype for renumber_insns.
19091         * toplev.c (flag_renumber_insns): Remove.
19092
19093 2007-02-02  Hui-May Chang  <hm.chang@apple.com>
19094
19095         Revert for x86 darwin:
19096         2005-06-19  Uros Bizjak  <uros@kss-loka.si>
19097
19098         * config/i386/i386.c (ix86_function_arg_regno_p): Put back the
19099         code before the following patch under TARGET_MACHO.
19100         (ix86_function_value_regno_p): Likewise.
19101
19102 2007-02-02  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
19103
19104         * fold-const.c (negate_expr_p, fold_negate_expr): Handle
19105         COMPLEX_EXPR.
19106
19107 2007-02-02  Maxim Kuvyrkov  <mkuvyrkov@ispras.ru>
19108
19109         PR target/29682
19110         * config/ia64/ia64.c (ia64_speculate_insn): Restrict to memory
19111         loads to general or fp registers.  Add comments.
19112         * config/ia64/ia64.md (reg_pred_prefix): Add comment.
19113
19114 2007-02-02  Paolo Bonzini  <bonzini@gnu.org>
19115
19116         * pointer-set.c (insert_aux): Only return insertion slot.
19117         (pointer_set_insert): Adjust.
19118         (pointer_set_traverse, struct pointer_map_t, pointer_map_create,
19119         pointer_map_destroy, pointer_map_insert, pointer_map_contains,
19120         pointer_map_traverse): New.
19121         * pointer-set.h (pointer_set_traverse, struct pointer_map_t,
19122         pointer_map_create,  pointer_map_destroy, pointer_map_insert,
19123         pointer_map_contains, pointer_map_traverse): Declare.
19124
19125 2007-02-02  Jakub Jelinek  <jakub@redhat.com>
19126
19127         PR middle-end/30473
19128         * builtins.c (fold_builtin_sprintf): Do not attempt to optimize
19129         sprintf (str, "%s").  Do not optimize sprintf (str, "nopercent", p++).
19130
19131 2007-02-02  Maxim Kuvyrkov  <mkuvyrkov@ispras.ru>
19132
19133         * sched-int.h (ds_to_dk, dk_to_ds): Declare functions.
19134
19135         (struct _dep): New type.
19136         (dep_t): New typedef.
19137         (DEP_PRO, DEP_CON, DEP_KIND): New access macros.
19138         (DEP_STATUS): New access macro.  The macro with the same name was
19139         renamed to DEP_LINK_STATUS.
19140         (dep_init): Declare function
19141
19142         (struct _dep_link): New type.
19143         (dep_link_t): New typedef.
19144         (DEP_LINK_NODE, DEP_LINK_NEXT, DEP_LINK_PREV_NEXTP): New access macros.
19145         (DEP_LINK_DEP, DEP_LINK_PRO, DEP_LINK_CON, DEP_LINK_KIND): New macros.
19146         (DEP_LINK_STATUS): New macro.
19147         (debug_dep_links): New debug function.
19148
19149         (struct _deps_list): New type.
19150         (deps_list_t): New typedef.
19151         (DEPS_LIST_FIRST): New access macro.
19152         (FOR_EACH_DEP_LINK): New cycle macro.
19153         (create_deps_list, free_deps_list, delete_deps_list): Declare
19154         functions.
19155         (deps_list_empty_p, debug_deps_list, add_back_dep_to_deps_list): Ditto.
19156         (find_link_by_pro_in_deps_list, find_link_by_con_in_deps_list): Ditto.
19157         (copy_deps_list_change_con): Ditto.
19158
19159         (move_dep_link): Declare function.
19160
19161         (struct _dep_node): New type.
19162         (dep_node_t): New typedef.
19163         (DEP_NODE_BACK, DEP_NODE_DEP, DEP_NODE_FORW): New access macros.
19164
19165         (struct haifa_insn_data.back_deps): New field to hold backward
19166         dependencies of the insn.
19167         (struct haifa_insn_data.depend): Rename to forw_deps.  Change its type
19168         to deps_list_t.
19169         (struct haifa_insn_data.resolved_deps): Rename to resolved_back_deps.
19170         Change its type to deps_list_t.
19171         (INSN_BACK_DEPS): New access macro to use instead of LOG_LINKS.
19172         (INSN_DEPEND): Rename to INSN_FORW_DEPS.
19173         (RESOLVED_DEPS): Rename to INSN_RESOLVED_BACK_DEPS.
19174
19175         (INSN_COST): Move to haifa-sched.c.  Use insn_cost () instead.
19176
19177         (DEP_STATUS): Rename to DEP_LINK_STATUS.  Fix typo in the comment.
19178
19179         (add_forw_dep, delete_back_forw_dep, insn_cost): Update declaration
19180         and all callers.
19181         (dep_cost): Declare.
19182
19183         * sched-deps.c (CHECK): New macro to (en/dis)able sanity checks.
19184         (ds_to_dk, dk_to_ds): New functions.
19185
19186         (init_dep_1): New static function.
19187         (init_dep): New function.
19188         (copy_dep): New static function.
19189
19190         (dep_link_consistent_p, attach_dep_link, add_to_deps_list): New static
19191         functions.
19192         (detach_dep_link): New static function.
19193         (move_dep_link): New function.
19194
19195         (dep_links_consistent_p, dump_dep_links): New static functions.
19196         (debug_dep_links): New debugging function.
19197
19198         (deps_obstack, dl_obstack, dn_obstack): New static variables.
19199
19200         (alloc_deps_list, init_deps_list): New static functions.
19201         (create_deps_list): New function.
19202         (clear_deps_list): New static function.
19203         (free_deps_list, delete_deps_list, deps_list_empty_p): New functions.
19204         (deps_list_consistent_p, dump_deps_list): New static functions.
19205         (debug_deps_list): New function.
19206         (add_back_dep_to_deps_list, find_link_by_pro_in_deps_list): New
19207         functions.
19208         (find_link_by_con_in_deps_list, copy_deps_list_change_con): Ditto.
19209
19210         (maybe_add_or_update_back_dep_1, add_or_update_back_dep_1): Update to
19211         use new scheduler dependencies lists.
19212         (add_back_dep, delete_all_dependences, fixup_sched_groups): Ditto.
19213         (sched_analyze): Ditto.  Initialize dependencies lists.
19214         (add_forw_dep, compute_forward_dependences): Update to use new
19215         scheduler dependencies lists.
19216
19217         (init_dependency_caches): Init deps_obstack.
19218         (free_dependency_caches): Free deps_obstack.
19219
19220         (adjust_add_sorted_back_dep, adjust_back_add_forw_dep): Update to use
19221         new scheduler dependencies lists.
19222         (delete_forw_dep, add_or_update_back_forw_dep): Ditto.
19223         (add_back_forw_dep, delete_back_forw_dep): Ditto.
19224
19225         * sched-rgn.c (set_spec_fed, find_conditional_protection, is_pfree):
19226         Update to use new scheduler dependencies lists.
19227         (is_conditionally_protected, is_prisky, add_branch_dependences): Ditto.
19228         (debug_dependencies): Ditto.
19229         (schedule_region): Update comments.
19230
19231         * sched-ebb.c (earliest_block_with_similiar_load): Update to use new
19232         scheduler dependencies lists.
19233         (schedule_ebb): Update comments.
19234
19235         * rtl.def (DEPS_LIST): Remove.
19236
19237         * lists.c (unused_deps_list): Remove.
19238         (free_list): Update assertions.
19239
19240         (alloc_DEPS_LIST, free_DEPS_LIST_list, free_DEPS_LIST_node): Remove.
19241         (remove_free_DEPS_LIST_elem, copy_DEPS_LIST_list): Ditto.
19242
19243         * rtl.h (free_DEPS_LIST_list, alloc_DEPS_LIST): Remove declarations.
19244         (remove_free_DEPS_LIST_elem, copy_DEPS_LIST_list): Ditto.
19245
19246         * haifa-sched.c (comments): Update.
19247         (insn_cost1): Remove.  Inline the code into insn_cost ().
19248         (insn_cost): Update to use new scheduler dependencies lists.  Move
19249         processing of the dependency cost to dep_cost ().
19250         (dep_cost): New function.  Use it instead of insn_cost () when
19251         evaluating cost of the dependency.  Use compatible interface to
19252         interact with the target.
19253         (priority): Update to use new scheduler dependencies lists.
19254         (rank_for_schedule): Ditto.  Optimize heuristic that prefers the insn
19255         with greater number of insns that depend on the insn.
19256         (schedule_insn): Update to use new scheduler dependencies lists.  Add
19257         code to free backward dependencies lists.  Inline and optimize code
19258         from resolve_dep () - see PR28071.
19259         (ok_for_early_queue_removal): Update to use new scheduler dependencies
19260         lists.  Update call to targetm.sched.is_costly_dependence hook.
19261
19262         (fix_inter_tick, try_ready, fix_tick_ready): Update to use new
19263         scheduler dependencies lists.
19264
19265         (resolve_dep): Remove.  Move the logic to schedule_insn ().
19266         (init_h_i_d): Initialize dependencies lists.
19267
19268         (process_insn_depend_be_in_spec): Rename to
19269         process_insn_forw_deps_be_in_spec.  Update to use new scheduler
19270         dependencies lists.
19271         (add_to_speculative_block, create_check_block_twin, fix_recovery_deps):
19272         Update to use new scheduler dependencies lists.
19273         (clear_priorities, calc_priorities, add_jump_dependencies): Ditto.
19274
19275         * ddg.c (create_ddg_dependence, create_ddg_dep_no_link): Update to use
19276         new scheduler dependencies lists.
19277         (build_intra_loop_deps): Ditto.
19278
19279         * target.h (struct _dep): Declare to use in
19280         gcc_target.sched.is_costly_dependence.
19281         (struct gcc_target.sched.adjust_cost): Fix typo.
19282         (struct gcc_target.sched.is_costly_dependence): Change signature to
19283         use single dep_t parameter instead of an equivalent triad.
19284         (struct gcc_target.sched.adjust_cost_2): Remove.
19285
19286         * target-def.h (TARGET_SCHED_ADJUST_COST_2): Remove.
19287
19288         * reg-notes.def (DEP_TRUE, DEP_OUTPUT, DEP_ANTI): Update comments.
19289
19290         * doc/tm.texi (TARGET_SCHED_IS_COSTLY_DEPENDENCE): Update
19291         documentation.
19292         (TARGET_SCHED_ADJUST_COST_2): Remove documentation.
19293
19294         * doc/rtl.texi (LOG_LINKS): Remove part about instruction scheduler.
19295         (REG_DEP_TRUE): Document.
19296
19297         * config/ia64/ia64.c (ia64_adjust_cost_2): Rename to ia64_adjust_cost.
19298         Change signature to correspond to the targetm.sched.adjust_cost hook.
19299         Update use in TARGET_SCHED_ADJUST_COST_2.
19300         (TARGET_SCHED_ADJUST_COST_2): Rename to TARGET_SCHED_ADJUST_COST.
19301         (ia64_dependencies_evaluation_hook, ia64_dfa_new_cycle): Update to use
19302         new scheduler dependencies lists.
19303         (ia64_gen_check): Ditto.
19304
19305         * config/mips/mips.c (vr4130_swap_insns_p): Update to use new
19306         scheduler dependencies lists.
19307
19308         * config/rs6000/rs6000.c (rs6000_is_costly_dependence): Change
19309         signature to correspond to the targetm.sched.is_costly_dependence hook.
19310         (is_costly_group): Update to use new scheduler dependencies lists.
19311
19312         * config/spu/spu.c (spu_sched_adjust_cost): Use insn_cost () function
19313         instead of INSN_COST () macro.
19314
19315 2007-02-01  Ian Lance Taylor  <iant@google.com>
19316
19317         * lower-subreg.c (resolve_clobber): Handle a subreg of a concatn.
19318
19319 2007-02-01  Guy Martin  <gmsoft@gentoo.org>
19320
19321         * pa.md (tp_load): Correct mfctl instruction syntax.
19322
19323 2007-02-01  Geoffrey Keating  <geoffk@apple.com>
19324
19325         * config/rs6000/rs6000.c (rs6000_stack_info): Correct
19326         altivec_padding_size calculation on AIX.  Improve comment, add
19327         assert to verify that it's right.
19328
19329         * config/rs6000/darwin.h (MD_UNWIND_SUPPORT): Don't define for
19330         64-bit.
19331
19332 2007-2-01  Seongbae Park  <seongbae.park@gmail.com>
19333
19334         PR inline-asm/28686
19335         * global.c (global_alloc): Add mising initialization of
19336         ELIMINABLE_REGSET.
19337
19338 2007-02-01  Roger Sayle  <roger@eyesopen.com>
19339
19340         * alias.c (init_alias_analysis): Correct whitespace.
19341         * bb-reorder.c (fix_edges_for_rarely_executed_code,
19342         partition_hot_cold_basic_blocks): Likewise.
19343         * builtins.c (expand_builtin_printf, expand_builtin_fprintf,
19344         expand_builtin_sprintf, fold_builtin_carg, fold_builtin_sprintf,
19345         maybe_emit_sprintf_chk_warning, fold_builtin_sprintf_chk,
19346         fold_builtin_snprintf_chk, fold_builtin_printf,
19347         fold_builtin_fprintf, do_mpfr_ckconv, do_mpfr_arg1, do_mpfr_arg2,
19348         do_mpfr_arg3, do_mpfr_sincos): Likewise.
19349         * cfgcleanup.c (cleanup_cfg): Likewise.
19350         * cfgexpand.c (tree_expand_cfg): Likewise.
19351         * fold-const.c (fold_binary) <RDIV_EXPR>: Likewise.
19352         * function.c (get_next_funcdef_no): Likewise.
19353         * gengtype.c (main): Likewise.
19354         * genmodes.c (main): Likewise.
19355         * gcse.c (bypass_conditional_jumps, print_ldst_list): Likewise.
19356         * haifa-sched.c (schedule_block, extend_h_i_d): Likewise.
19357         * ifcvt.c (noce_emit_move_insn): Likewise.
19358         * modulo-sched.c (generate_prolog_epilog, sms_schedule_by_order):
19359         Likewise.
19360         * stor-layout.c (get_best_mode): Likewise.
19361         * tree-ssa-loop-niter.c (get_val_for): Likewise.
19362         * tree-ssa-structalias.c (get_varinfo, get_varinfo_fc,
19363         scc_visit, do_ds_constraint, do_complex_constraint, label_visit,
19364         perform_var_substitution, solve_graph): Likewise.
19365         * tree-vrp.c (vrp_finalize): Likewise.
19366
19367 2007-02-01  Ian Lance Taylor  <iant@google.com>
19368
19369         * lower-subreg.c (simplify_gen_subreg_concatn): If we ask for the
19370         high part of a paradoxical subreg, return a constant zero.
19371
19372 2007-02-01  Zdenek Dvorak <dvorakz@suse.cz>
19373
19374         * toplev.c (lang_dependent_init): Call init_set_costs.
19375         * loop-init.c (loop_optimizer_init): Do not call init_set_costs.
19376
19377 2007-02-01  Richard Guenther  <rguenther@suse.de>
19378
19379         PR middle-end/30656
19380         * fold-const.c (fold_negate_expr): Allow negating a
19381         constant if overflow does not change.
19382
19383 2007-02-01  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
19384
19385         * doc/c-tree.texi (Expression trees): Improve markup.
19386         * doc/tm.texi (Register Classes, Addressing Modes)
19387         (Floating Point): Fix spacing after abbreviations.  Fix some
19388         typos.
19389
19390 2007-02-01  Ben Elliston  <bje@au.ibm.com>
19391
19392         * doc/invoke.texi: Replace "bugfix" with "bug fix" throughout.
19393         * doc/contrib.texi: Likewise.
19394         * doc/install.texi: Likewise.
19395
19396 2007-01-31  Richard Henderson  <rth@redhat.com>
19397             Ian Lance Taylor  <iant@google.com>
19398
19399         * lower-subreg.c: New file.
19400         * rtl.def (CONCATN): Define.
19401         * passes.c (init_optimization_passes): Add pass_lower_subreg and
19402         pass_lower_subreg2.
19403         * emit-rtl.c (update_reg_offset): New static function, broken out
19404         of gen_rtx_REG_offset.
19405         (gen_rtx_REG_offset): Call update_reg_offset.
19406         (gen_reg_rtx_offset): New function.
19407         * regclass.c: Revert patch of 2006-03-05, restoring
19408         reg_scan_update.
19409         (clear_reg_info_regno): New function.
19410         * dwarf2out.c (concatn_loc_descriptor): New static function.
19411         (loc_descriptor): Handle CONCATN.
19412         * common.opt (fsplit_wide_types): New option.
19413         * opts.c (decode_options): Set flag_split_wide_types when
19414         optimizing.
19415         * timevar.def (TV_LOWER_SUBREG): Define.
19416         * rtl.h (gen_reg_rtx_offset): Declare.
19417         (reg_scan_update): Declare.
19418         * regs.h (clear_reg_info_regno): Declare.
19419         * tree-pass.h (pass_lower_subreg): Declare.
19420         (pass_lower_subreg2): Declare.
19421         * doc/invoke.texi (Option Summary): List -fno-split-wide-types.
19422         (Optimize Options): Add -fsplit-wide-types to -O1 list.  Document
19423         -fsplit-wide-types.
19424         * doc/rtl.texi (Regs and Memory): Document concat and concatn.
19425         * Makefile.in (OBJS-common): Add lower-subreg.o.
19426         (lower-subreg.o): New target.
19427
19428 2007-01-31  Kazu Hirata  <kazu@codesourcery.com>
19429
19430         * config/sh/sh.h (HAVE_SECONDARY_RELOADS): Remove.
19431
19432 2007-01-31  Anatoly Sokolov <aesok@post.ru>
19433
19434         PR target/19087
19435         * config/avr/avr.c (DWARF2_ADDR_SIZE): Define.
19436
19437 2007-01-31  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
19438
19439         PR middle-end/29335
19440         * builtins.c (fold_builtin_sqrt): Use MPFR for constant args.
19441
19442 2007-01-31  Zdenek Dvorak <dvorakz@suse.cz>
19443
19444         * cfgloop.h: Include vec-prim.h.
19445         (enum li_flags): Remove LI_ONLY_OLD.
19446         (loop_iterator): Changed.
19447         (fel_next, fel_init): Iterate over loop tree.
19448         (FOR_EACH_LOOP_BREAK): New macro.
19449         * loop-unswitch.c (unswitch_loops): Do not pass LI_ONLY_OLD to
19450         FOR_EACH_LOOP.
19451         * tree-ssa-loop-unswitch.c (tree_ssa_unswitch_loops): Ditto.
19452         * modulo-sched.c (sms_schedule): Ditto.
19453         * tree-vectorizer.c (vectorize_loops): Ditto.
19454         * doc/loop.texi: Update information on loop numbering and behavior of
19455         FOR_EACH_LOOP wrto new loops.
19456         * tree-scalar-evolution.c (compute_overall_effect_of_inner_loop,
19457         add_to_evolution_1): Test nestedness of loops instead of comparing
19458         their numbers.
19459         * tree-chrec.c (chrec_fold_plus_poly_poly,
19460         chrec_fold_multiply_poly_poly, chrec_evaluate,
19461         hide_evolution_in_other_loops_than_loop, chrec_component_in_loop_num,
19462         reset_evolution_in_loop): Ditto.
19463         * Makefile.in (CFGLOOP_H): Add vecprim.h dependency.
19464
19465 2007-01-31  Dirk Mueller  <dmueller@suse.de>
19466
19467         * c-common.c (warn_about_parentheses): Separate warning about
19468         un-parenthized sequence of comparison operators from the one
19469         which is supposed to warn about x <= y <= z.
19470
19471 2007-01-31  Uros Bizjak  <ubizjak@gmail.com>
19472
19473         * optabs.h (enum optab_index): Add new OTI_isinf.
19474         (isinf_optab): Define corresponding macro.
19475         * optabs.c (init_optabs): Initialize isinf_optab.
19476         * genopinit.c (optabs): Implement isinf_optab using isinf?f2
19477         patterns.
19478         * builtins.c (mathfn_built_in): Handle BUILT_IN_ISINF{,F,L}.
19479         (expand_builtin_interclass_mathfn): Expand BUILT_IN_ISINF{,F,L}
19480         using isinf_optab.
19481         (expand_builtin): Expand BUILT_IN_ISINF{,F,L} using
19482         expand_builtin_interclass_mathfn.
19483         * reg_stack.c (subst_stack_regs_pat): Handle UNSPEC_FXAM.
19484         * config/i386/i386.md (UNSPEC_FXAM): New constant.
19485         (fxam<mode>2_i387): New insn pattern.
19486         (isinf<mode>2) New expander to implement isinf, isinff and isinfl
19487         built-in functions as x87 inline asm.
19488
19489 2007-01-31  Kazu Hirata  <kazu@codesourcery.com>
19490
19491         * config/arm/unwind-arm.h (_sleb128_t, _uleb128_t): New.
19492
19493 2007-01-30  Eric Christopher  <echristo@apple.com>
19494
19495         * config.gcc: Add geode.
19496
19497 2007-01-31  Kazu Hirata  <kazu@codesourcery.com>
19498
19499         * cgraphunit.c, config/arm/arm.c, config/m68k/m68k.c,
19500         ipa-inline.c, tree-profile.c, tree-ssa-live.c,
19501         tree-ssa-math-opts.c, tree-ssanames.c, tree-vect-analyze.c,
19502         value-prof.c: Fix comment typos.
19503
19504 2007-01-30  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
19505
19506         PR c++/24745
19507         * doc/invoke.texi (Wpointer-arith): Document warning.
19508
19509 2007-01-30  Janis Johnson  <janis187@us.ibm.com>
19510
19511         * doc/extend.texi (Decimal Floating Types): Remove decfloat.h from
19512         the list of discrepancies from the draft TR.
19513
19514 2007-01-30  Dirk Mueller  <dmueller@suse.de>
19515
19516         PR c++/30601
19517         * doc/invoke.texi (-Wreturn-type): Update description to
19518         match new behavior.
19519
19520 2007-01-30  Richard Sandiford  <richard@codesourcery.com>
19521
19522         * cfgrtl.c (try_redirect_by_replacing_jump): Check only_sets_cc0_p.
19523
19524 2007-01-30  Uros Bizjak  <ubizjak@gmail.com>
19525
19526         * builtins.c (expand_builtin_int_interclass_roundingfn): New function
19527         to handle optabs that operate on floating point input argument and
19528         output to integer output.
19529         (expand_builtin_mathfn) [BUILT_IN_ILOGB]: Move from here ...
19530         (expand_builtin_interclass_mathfn) [BUILT_IN_ILOGB]: ... to here.
19531         (expand_builtin): Expand BUILT_IN_ILOGB{,F,L} using
19532         expand_builtin_interclass_mathfn ().
19533         * config/i386/i386.md (fxtractxf3_i387): Rename from *fxtractxf3_i387.
19534         (ilogbsi2): Remove.
19535         (ilogbxf2, ilogb<mode>2): New expanders to implement ilogb, ilogbf and
19536         ilogbl built-in functions as x87 intrinsics.
19537
19538 2007-01-30  Richard Guenther  <rguenther@suse.de>
19539
19540         PR middle-end/27657
19541         * dwarf2out.c (reference_to_unused): Query varpool if the
19542         variable was output.
19543
19544 2007-01-30  Richard Guenther  <rguenther@suse.de>
19545
19546         PR middle-end/30313
19547         * passes.c (execute_one_pass): Reset in_gimple_form to not
19548         confuse non-unit-at-a-time mode.
19549
19550 2007-01-29  Roger Sayle  <roger@eyesopen.com>
19551             Richard Guenther  <rguenther@suse.de>
19552
19553         * fold-const.c (round_up): Make HIGH an unsigned HOST_WIDE_INT to
19554         avoid undefined behaviour on overflow.  Use force_fit_type_double
19555         to construct the constant with the specified TREE_OVERFLOW.
19556
19557 2007-01-29  Janis Johnson  <janis187@us.ibm.com>
19558
19559         * config/dfp-bit.c: Add parameterized support for fp exceptions.
19560         * config/dfp-bit.h: Ditto.
19561
19562 2007-01-29  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
19563
19564         * c-decl.c (pop_scope): Replace warnings with call to
19565         warn_for_unused_label.
19566         * c-common.h (warn_for_unused_label): Declare.
19567         * c-common.c (warn_for_unused_label): Define.
19568
19569 2007-01-29  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
19570
19571         * tree-optimize.c (update_inlined_to_pointers): Delete unused
19572         function.
19573
19574 2007-01-29  Janis Johnson  <janis187@us.ibm.com>
19575
19576         * Makefile.in (USER_H): Remove decfloat.h.
19577         * ginclude/decfloat.h: Delete, moving contents to ...
19578         * ginclude/float.h: Add support for decimal floating point,
19579         guarded by __STDC_WANT_DEC_FP__.
19580
19581 2007-01-29  Mike Stump  <mrs@apple.com>
19582
19583         * doc/gccint.texi (Top): Rename Loop Representation to Loop
19584         Analysis and Representation to resolve case insensitive conflict.
19585         * doc/loop.texi (Loop Analysis and Representation): Likewise.
19586
19587 2007-01-28  Daniel Berlin  <dberlin@dberlin.org>
19588
19589         * tree.h (struct tree_memory_tag): Add aliases member.
19590         (MTAG_ALIASES): New macro.
19591         * tree-ssa-alias.c (alias_bitmap_obstack): New variable.
19592         (add_may_alias): Remove pointer-set. Update for may_aliases being
19593         a bitmap.
19594         (mark_aliases_call_clobbered): Update for may_aliases being a
19595         bitmap.
19596         (compute_tag_properties): Ditto.
19597         (create_partition_for): Ditto.
19598         (compute_memory_partitions): Ditto.
19599         (dump_may_aliases_for): Ditto.
19600         (is_aliased_with): Ditto.
19601         (add_may_alias_for_new_tag): Ditto.
19602         (rewrite_alias_set_for): Rewrite for may_aliases being a bitmap.
19603         (compute_is_aliased): New function.
19604         (compute_may_aliases): Call compute_is_aliased).
19605         (init_alias_info): Initialize alias_bitmap_obstack.
19606         (union_alias_set_into): New function.
19607         (compute_flow_sensitive_aliasing): Use union_aliases_into.
19608         (have_common_aliases_p): Rewrite to take two bitmaps and use
19609         intersection.
19610         (compute_flow_insensitive_aliasing): Stop using pointer-sets.
19611         Update for bitmaps.
19612         (finalize_ref_all_pointers): Update for add_may_alias changes.
19613         (new_type_alias): Ditto.
19614         * tree-flow-inline.h (may_aliases): Return a bitmap.
19615         * tree-dfa.c (dump_variable): Check for MTAG_P'ness.
19616         * tree-ssa.c (verify_flow_insensitive_alias_info): Update for
19617         may_aliases being a bitmap.
19618         * tree-flow.h (struct var_ann_d): Remove may_aliases member.
19619         may_aliases now returns a bitmap.
19620         * tree-ssa-structalias.c (merge_smts_into): Update for may_aliases
19621         being a bitmap.
19622         * tree-ssa-operands.c (add_virtual_operand): Update for
19623         may_aliases being a bitmap.
19624
19625 2007-01-29  Daniel Berlin  <dberlin@dberlin.org>
19626
19627         PR tree-optimization/30630
19628         * tree-ssa-structalias.c (do_complex_constraint): Mark correct
19629         variable as changed.
19630
19631 2007-01-29  Simon Martin  <simartin@users.sourceforge.net>
19632
19633         PR c++/28266
19634         * gimplify.c (gimplify_target_expr): Make sure that the TARGET_EXPR is
19635         expanded only once even if an error occurs.
19636
19637 2007-01-29  Ben Elliston  <bje@au.ibm.com>
19638
19639         * gcov-io.h (__gcov_indirect_call_profiler): Declare.
19640         (__gcov_average_profiler): Likewise.
19641         (__gcov_ior_profiler): Likewise.
19642         (__gcov_merge_ior): Likewise.
19643
19644 2007-01-28  Jan Hubicka  <jh@suse.cz>
19645
19646         * builtins.c (expand_builtin_memset): Fix typo in my last patch.
19647         * value-prof.c (stringop_block_profile): Likewise.
19648
19649 2007-01-28  Jan Hubicka  <jh@suse.cz>
19650
19651         * expr.c (emit_block_move_via_movmem, emit_block_move_via_libcall):
19652         Add variant handling histograms; add wrapper.
19653         (clear_storage_via_libcall): Export.
19654         (emit_block_move_hints): Break out from ...; add histograms.
19655         (emit_block_move): ... this one.
19656         (clear_storage_hints): Break out from ...; add histograms.
19657         (clear_storage): ... this one.
19658         (set_storage_via_memset): Handle histogram.
19659         * expr.h (emit_block_move_via_libcall, emit_block_move_hints): Declare.
19660         (clear_storage_hints, clear_storage_via_libcall): Declare.
19661         (set_storage_via_setmem): Update prototype.
19662         * doc/md.texi (movmem, setmem): Document new arguments.
19663
19664         * value-prof.c (dump_histogram_value, tree_find_values_to_profile):
19665         Add new histograms.
19666         (stringop_block_profile): New global function.
19667         (tree_stringops_values_to_profile): Profile block size and alignment.
19668         * value-prof.h (enum hist_type): add HIST_TYPE_AVERAGE and
19669         HIST_TYPE_IOR.
19670         (struct profile_hooks): Add gen_average_profiler and gen_ior_profiler.
19671         (stringop_block_profile): Declare.
19672         * builtins.c: Include value-prof.h.
19673         (expand_builtin_memcpy, expand_builtin_memset): Pass block profile.
19674         * gcov-ui.h (GCOV_COUNTER_NAMES): Add new counter.
19675         (GCOV_COUNTER_AVERAGE, GCOV_COUNTER_IOR): New constants.
19676         (GCOV_COUNTERS, GCOV_LAST_VALUE_COUNTER): Update.
19677         * profile.c (instrument_values): Add new counters.
19678         * cfgexpand.c (expand_gimple_basic_block): Propagate histograms to
19679         calls.
19680         * tree-profile.c (tree_average_profiler_fn, tree_ior_profiler_fn): New.
19681         (tree_init_edge_profiler): Build new profilers.
19682         (tree_gen_average_profiler, tree_gen_ior_profiler): New.
19683         (pass_tree_profile): Add dump.
19684         (tree_profile_hooks): Update.
19685         * Makefile.in (LIBGCOV): Add new constants.
19686         * libgcov.c (__gcov_merge_ior, __gcov_average_profiler,
19687         __gcov_ior_profiler): New.
19688         * i386.md (movmem/setmem expanders): Add new optional arguments.
19689
19690 2007-01-28  David Edelsohn  <edelsohn@gnu.org>
19691
19692         * doc/md.texi (Standard Pattern Names): Document blockage pattern.
19693
19694 2007-01-28  Zdenek Dvorak <dvorakz@suse.cz>
19695
19696         * tree-ssa-loop-unswitch.c: Include tree-inline.h.
19697         (tree_unswitch_single_loop): Pass eni_size_weights to
19698         tree_num_loop_insns.
19699         * tree-ssa-loop-manip.c: Include tree-inline.h.
19700         (can_unroll_loop_p): Pass eni_size_weights to
19701         tree_num_loop_insns.
19702         * tree-ssa-loop-ch.c (should_duplicate_loop_header_p):
19703         Pass eni_size_weights to estimate_num_insns.
19704         * tree.h (init_inline_once): Export.
19705         * toplev.c (backend_init): Call init_inline_once.
19706         * cgraphunit.c (cgraph_process_new_functions,
19707         cgraph_analyze_function): Pass eni_inlining_weights to
19708         estimate_num_insns.
19709         * ipa-inline.c (compute_inline_parameters): Ditto.
19710         * tree-ssa-loop-ivcanon.c (tree_num_loop_insns): Pass weights
19711         to estimate_num_insns.
19712         (try_unroll_loop_completely): Pass eni_size_weights to
19713         tree_num_loop_insns.
19714         * tree-eh.c (decide_copy_try_finally): Pass eni_size_weights
19715         ot estimate_num_insns.
19716         * tree-ssa-loop-prefetch.c: Include tree-inline.h.
19717         (loop_prefetch_arrays): Pass eni_time_weights to tree_num_loop_insns.
19718         * tree-inline.c (eni_inlining_weights, eni_size_weights,
19719         eni_time_weights): New variables.
19720         (init_inline_once): Initialize them.
19721         (struct eni_data): Mew.
19722         (estimate_num_insns_1, estimate_num_insns): Use weights.
19723         * tree-inline.h (struct eni_weights_d): New.
19724         (eni_inlining_weights, eni_size_weights, eni_time_weights): Declare.
19725         (estimate_num_insns): Declaration changed.
19726         * cfgloop.h (tree_num_loop_insns): Declaration changed.
19727         * Makefile.in (tree-ssa-loop-unswitch.o, tree-ssa-loop-prefetch.o,
19728         tree-ssa-loop-manip.o): Add TREE_INLINE_H dependency.
19729
19730 2007-01-28  Zdenek Dvorak <dvorakz@suse.cz>
19731
19732         * tree-data-ref.c (conflict_fn): Assert that the number of affine
19733         relations in the conflict function is valid.
19734
19735 2007-01-27  Ian Lance Taylor  <iant@google.com>
19736
19737         * common.opt: Add fstrict-overflow.
19738         * opts.c (decode_options): Set flag_strict_overflow if -O2.
19739         * flags.h (TYPE_OVERFLOW_WRAPS): Define.
19740         (TYPE_OVERFLOW_UNDEFINED): Define.
19741         (TYPE_OVERFLOW_TRAPS): Define.  This replaces TYPE_TRAP_SIGNED.
19742         Replace all uses.
19743         * tree.h (TYPE_TRAP_SIGNED): Don't define.
19744         * fold-const.c (negate_expr_p): Use TYPE_OVERFLOW_UNDEFINED.
19745         (fold_negate_expr): Likewise.
19746         (make_range): Likewise.
19747         (extract_muldiv_1): Likewise.
19748         (maybe_canonicalize_comparison): Likewise.
19749         (fold_comparison): Likewise.
19750         (fold_binary): Likewise.
19751         (tree_expr_nonnegative_p): Likewise.
19752         (tree_expr_nonzero_p): Likewise.
19753         * tree-vrp.c (compare_values): Likewise.
19754         (extract_range_from_binary_expr): Likewise.
19755         (extract_range_from_unary_expr): Likewise.
19756         * tree-ssa-loop-niter.c (infer_loop_bounds_from_signedness):
19757         Likewise.
19758         (nowrap_type_p): Likewise.
19759         * tree-scalar-evolution.c (simple_iv): Likewise.
19760         * fold-const.c (negate_expr_p): Use TYPE_OVERFLOW_WRAPS.
19761         (build_range_check): Likewise.
19762         (extract_muldiv_1): Likewise.
19763         (fold_comparison): Likewise.
19764         * tree-vrp.c (vrp_int_const_binop): Likewise.
19765         (extract_range_from_unary_expr): Likewise.
19766         * convert.c (convert_to_integer): Likewise.
19767         * fold-const.c (fold_negate_expr): Use TYPE_OVERFLOW_TRAPS.
19768         (fold_comparison): Likewise.
19769         (fold_binary): Likewise.
19770         * optabs.c (optab_for_tree_code): Likewise.
19771         * tree-vectorizer.c (vect_is_simple_reduction): Likewise.
19772         * simplify-rtx.c (simplify_const_relational_operation): Check
19773         flag_strict_overflow and flag_trapv.
19774         (simplify_const_relational_operation): Likewise.
19775         * doc/invoke.texi (Option Summary): Mention -fstrict-overflow.
19776         (Optimize Options): Add -fstrict-overflow to -O2 list.  Document
19777         -fstrict-overflow.
19778
19779 2007-01-27  Roger Sayle  <roger@eyesopen.com>
19780
19781         * tree.c (tree_fold_gcd): Delete.
19782         * tree.h (tree_fold_gcd): Remove prototype.
19783         * tree-data-ref.c (tree_fold_divides_p): Don't use tree_fold_gcd to
19784         test whether one constant integer is a multiple of another.  Instead
19785         call int_const_binop with TRUNC_MOD_EXPR and test for a zero result.
19786         * fold-const.c (multiple_of_p):  We've determined both TOP and
19787         BOTTOM are integer constants so we can call int_const_binop directly
19788         instead of the more generic const_binop.
19789
19790 2007-01-27  Roger Sayle  <roger@eyesopen.com>
19791
19792         * fold-const.c (size_binop): In the fast-paths for X+0, 0+X, X-0 and
19793         1*X check that the constant hasn't overflowed, to preserve the
19794         TREE_OVERFLOW bit.
19795         (round_up): Provide an efficient implementation when rouding-up an
19796         INTEGER_CST to a power-of-two.
19797
19798 2007-01-28  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
19799
19800         * doc/sourcebuild.texi: Add comma for clarity.
19801         * doc/extend.texi: Fix some typos.
19802         * doc/passes.texi: Likewise.
19803         * doc/cppinternals.texi: Likewise.
19804         * doc/c-tree.texi: Likewise.
19805         * doc/tree-ssa.texi: Likewise.
19806         * doc/install.texi: Likewise.
19807
19808 2007-01-27  Jan Hubicka  <jh@suse.cz>
19809
19810         * tree-sra.c (sra_walk_function): Don't rely on aliases being build.
19811         (pass_sra): Do not require alias information.
19812         * passes.c (init_optimization_passes): Add SRA
19813
19814 2007-01-27  Steven Bosscher  <steven@gcc.gnu.org>
19815
19816         * tracer.c (rest_of_handle_tracer): We already cleaned
19817         up the CFG in tracer() so don't do it here again.
19818         * cfgcleanup.c (rest_of_handle_jump2): Don't repeat
19819         cleanup_cfg here, either.  And don't call renumber_insns.
19820
19821         * cfgrtl.c (rtl_verify_flow_info_1): Don't verify that BB_END
19822         and BB_HEAD are in the insn stream here.  Instead make sure
19823         that BB_INSN is valid on all insns.  Also, do check here that
19824         there are no pending branch predictions...
19825         (rtl_verify_flow_info): ...instead of doing it here.  Checks
19826         for BB_END and BB_HEAD moved from rtl_verify_flow_info_1 to
19827         here.
19828
19829 2007-01-26  Roger Sayle  <roger@eyesopen.com>
19830
19831         * config/i386/i386.c (ix86_swap_binary_operands_p): New helper
19832         function to simplify/factorize operand order canonicalization.
19833         (ix86_fixup_binary_operands): Reorganize using the above function.
19834         (ix86_binary_operator_ok): Likewise.
19835
19836 2007-01-27  Jakub Jelinek  <jakub@redhat.com>
19837
19838         * genattrtab.c (struct attr_value_list, insn_code_values): Move to
19839         file scope from optimize_attrs.
19840         (simplify_test_exp): If insn_code_values is not NULL, use it to speed
19841         up search.
19842         (optimize_attrs): Clear insn_code_values after freeing it.
19843
19844 2007-01-26  Zdenek Dvorak <dvorakz@suse.cz>
19845
19846         * tree-ssa-address.c (create_mem_ref): Remove ", bsi" from
19847         a parts.base assignment.
19848
19849 2007-01-26  Zdenek Dvorak <dvorakz@suse.cz>
19850
19851         * tree-data-ref.c (dump_subscript): Use dump_conflict_function.
19852         (compute_subscript_distance, initialize_data_dependence_relation,
19853         finalize_ddr_dependent, analyze_ziv_subscript,
19854         analyze_siv_subscript_cst_affine,
19855         compute_overlap_steps_for_affine_univar,
19856         compute_overlap_steps_for_affine_1_2, analyze_subscript_affine_affine,
19857         analyze_siv_subscript, analyze_miv_subscript,
19858         analyze_overlapping_iterations, subscript_dependence_tester_1,
19859         compute_self_dependence, free_dependence_relation): Work
19860         with affine_fn instead of chrecs.
19861         (dump_affine_function, dump_conflict_function, affine_function_equal_p,
19862         common_affine_function, affine_function_base,
19863         affine_function_constant_p, affine_fn_op, affine_fn_plus,
19864         affine_fn_minus, affine_fn_free, conflict_fn_not_known,
19865         conflict_fn_no_dependence, free_conflict_function, free_subscripts,
19866         conflict_fn, affine_fn_cst, affine_fn_univar): New functions.
19867         (all_chrecs_equal_p): Removed.
19868         * tree-data-ref.h (affine_fn, conflict_function): New types.
19869         (struct subscript): Change type of conflicting_iterations_in_a
19870         and conflicting_iterations_in_b.
19871
19872 2007-01-26  Steve Ellcey  <sje@cup.hp.com>
19873
19874         PR other/30182
19875         * config/pa/pa.h (TARGET_HPUX_11): New.
19876         * config/pa/pa-hpux11.h (TARGET_HPUX_11): New.
19877         * config/pa/pa.c (pa_init_builtins): Use TARGET_HPUX_11.
19878
19879 2007-01-26  Daniel Berlin  <dberlin@dberlin.org>
19880         Richard Guenther  <rguenther@suse.de>
19881
19882         * tree-ssa-structalias.c (solve_graph): Handle case
19883         we merged the variable to another.
19884
19885 2007-01-25  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
19886
19887         * builtins.c (fold_builtin_1): Treat ccos and ccosh as 'even'
19888         functions.
19889
19890         * fold-const.c (negate_mathfn_p): Treat casin, casinh, catan,
19891         catanh, cproj, csin, csinh, ctan and ctanh as 'odd' functions.
19892
19893 2007-01-25  DJ Delorie  <dj@redhat.com>
19894
19895         * config/m32c/m32c.c (m32c_cannot_change_mode_class): We don't
19896         allow changes to modes which don't fit in those registers.
19897
19898         * reload1.c (choose_reload_regs): Check for invalid subregs before
19899         computing their locations, not after.
19900
19901 2007-01-25  Geoffrey Keating  <geoffk@apple.com>
19902
19903         PR 25127
19904         * config/rs6000/rs6000.c (first_altivec_reg_to_save): On Darwin,
19905         save Altivec registers in an eh_return function.
19906         (compute_vrsave_mask): Likewise.
19907         (rs6000_stack_info): Correct AIX/Darwin stack alignment computation
19908         for saving Altivec registers.
19909         (rs6000_emit_prologue): Don't allocate stack twice in
19910         eh_return function.  Correct expected value of altivec_save_offset
19911         when using save_world.  Describe save of R0 to stack when using
19912         save_world.  Describe stack pointer adjustment when using
19913         save_world.  Remove duplicated eh_return parameter register saving.
19914         Update sp_offset variable after save_world.
19915         * config/rs6000/t-darwin (LIB2FUNCS_STATIC_EXTRA): Remove
19916         darwin-world.asm.
19917         (LIB2FUNCS_EXTRA): Add darwin-world.asm.
19918         * config/rs6000/darwin.h (SUBTARGET_OVERRIDE_OPTIONS): -m64
19919         implies Altivec.
19920
19921 2007-01-25  Steve Ellcey  <sje@cup.hp.com>
19922
19923         * config.gcc (ia64*-*-hpux*): Make posix threads the default.
19924
19925 2007-01-25  Steve Ellcey  <sje@cup.hp.com>
19926
19927         PR other/30182
19928         * config/pa/pa.c (pa_init_builtins): Set asm names for finite routines.
19929         * config/ia64/ia64.c (ia64_init_builtins):  Ditto.
19930
19931 2007-01-25  Richard Guenther  <rguenther@suse.de>
19932
19933         * doc/invoke.texi (-Wcoverage-mismatch): Document.
19934         * common.opt (-Wcoverage-mismatch): New warning option.
19935         * coverage.c (get_coverage_counts): Ignore coverage mismatch
19936         if -Wcoverage-mismatch is given.
19937
19938 2007-01-25  Razya Ladelsky  <razya@il.ibm.com>
19939
19940         * ipa-cp.c (ipcp_insert_stage, ipcp_driver): Support for SSA.
19941         (ipcp_driver): Change to static definition.
19942         Add dumping of the ifunctions.
19943         (constant_val_insert): Remove unused parameter. Support for SSA.
19944         (ipcp_propagate_const): Support for SSA.
19945         (ipcp_profile_bb_print): Print only analyzed nodes.
19946         (ipcp_replace_map_create): Remove support for Fortran constant
19947         for now.
19948         * ipa-prop.c (ipa_method_modify_stmt,
19949         ipa_callsite_compute_param): Support for SSA.
19950         * ipa-prop.h (ipcp_driver): Remove declaration.
19951         (IS_VALID_TREE_MAP_INDEX): Add define.
19952
19953 2007-01-24  Geoffrey Keating  <geoffk@apple.com>
19954
19955         * unwind-dw2.c (execute_stack_op): Handle DW_OP_swap.
19956
19957 2007-01-24  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
19958
19959         PR middle-end/30447
19960         * builtins.c (fold_builtin_cabs): Use MPFR to evaluate a
19961         constant argument to cabs and do it without checking for
19962         -funsafe-math-optimizations.
19963
19964 2007-01-24  Douglas Gregor  <dgregor@osl.iu.edu>
19965
19966         * c-common.h (RID_FIRST_CXX0X): New.
19967         (RID_LAST_CXX0X): New.
19968         * c-opts.c (c_common_handle_option): -Wc++0x-compat is triggered
19969         by -Wall.
19970         * c.opt (Wc++0x-compat): New.
19971         * doc/invoke.texi (-Wc++0x-compat): Document.
19972
19973 2007-01-24  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
19974
19975         * builtins.c (fold_builtin_carg): New.
19976         (fold_builtin_1): Use it.
19977
19978 2007-01-24  Jan Hubicka  <jh@suse.cz>
19979
19980         * ipa-inline.c (cgraph_decide_inlining): Initialize initial_insns.
19981
19982         * ipa-inline.c (initial_insns, max_insns): Delete.
19983         (compute_max_insns): New function.
19984         (cgraph_decide_inlining_of_small_function): Use it; take minimal
19985         amount of insns as base for code growth.
19986         (cgraph_decide_inlining): Make initial_insns local; do not compute
19987         max_insns.
19988         * params.def (PARAM_INLINE_UNIT_GROWTH): Set to 60.
19989         * doc/invoke.texi (inline-unit-growth): Update docs.
19990
19991 2007-01-24  Jakub Jelinek  <jakub@redhat.com>
19992
19993         * config/i386/i386.h (x86_cmpxchg16b): Remove const.
19994         (TARGET_CMPXCHG16B): Define to x86_cmpxchg16b.
19995         * config/i386/i386.c (x86_cmpxchg16b): Remove const.
19996         (override_options): Add PTA_CX16 flag.  Set x86_cmpxchg16b
19997         for CPUs that have PTA_CX16 set.
19998
19999         PR middle-end/27416
20000         * gimplify.c (omp_check_private): New function.
20001         (gimplify_scan_omp_clauses): Use it for
20002         firstprivate/lastprivate/reduction.
20003
20004         PR middle-end/30494
20005         * gimplify.c (omp_add_variable): Don't call omp_notice_variable
20006         on TYPE_SIZE_UNIT for GOVD_LOCAL VLAs.
20007
20008         PR middle-end/30421
20009         * omp-low.c (lower_omp_for_lastprivate): Add dlist argument.
20010         If lower_lastprivate_clauses emits some statements, append them
20011         to dlist rather than body_p and to body_p append an initializer.
20012         (lower_omp_for): Adjust caller.
20013
20014 2007-01-24  Steve Ellcey  <sje@cup.hp.com>
20015
20016         * target.h (globalize_decl_name): New.
20017         * target-def.h (TARGET_ASM_GLOBALIZE_DECL_NAME): New.
20018         * output.h (default_globalize_decl_name): New.
20019         * varasm.c (asm_output_bss): Use globalize_decl_name instead of
20020         globalize_label.
20021         (globalize_decl): Ditto.
20022         (default_globalize_decl_name): New.
20023         * config/ia64/ia64.c (ia64_globalize_decl_name): New.
20024         (ia64_handle_version_id_attribute): New.
20025         (TARGET_ASM_GLOBALIZE_DECL_NAME): New.
20026         (ia64_asm_output_external): Use globalize_decl_name instead
20027         of globalize_label.
20028         * doc/extend.texi (version_id): New pragma.
20029         * doc/tm.texi (ARGET_ASM_GLOBALIZE_DECL_NAME): New target hook.
20030
20031 2007-01-24  Andreas Krebbel  <krebbel1@de.ibm.com>
20032
20033         * unwind-dw2-fde.c (get_cie_encoding): Replaced _Unwind_Word with
20034         _uleb128_t and _Unwind_SWord with _sleb128_t.
20035         * unwind-dw2.c (extract_cie_info, execute_stack_op,
20036         execute_cfa_program, uw_frame_state_for, uw_update_context_1):
20037         Likewise.
20038         * unwind-c.c (parse_lsda_header, PERSONALITY_FUNCTION): Likewise.
20039         * unwind-pe.h (read_uleb128, read_sleb128,
20040         read_encoded_value_with_base): Likewise.
20041         * unwind-generic.h: Define _sleb128_t and _uleb128_t types.
20042
20043 2007-01-24  Richard Guenther  <rguenther@suse.de>
20044
20045         * builtins.c (expand_builtin_cexpi): Get the fndecl
20046         for cexp in the correct way.
20047
20048 2007-01-24  Jan Hubicka  <jh@suse.cz>
20049
20050         * tree-ssa-dce.c (eliminate_unnecesary_stmts): Remove dead LHS
20051         of calls.
20052
20053 2007-01-24  Andreas Krebbel  <krebbel1@de.ibm.com>
20054
20055         * c-cppbuiltin.c (builtin_define_type_sizeof): New function.
20056         (c_cpp_builtins): New builtin macros: __SIZEOF_INT__, __SIZEOF_LONG__,
20057         __SIZEOF_LONG_LONG__, __SIZEOF_SHORT__, __SIZEOF_POINTER__,
20058         __SIZEOF_FLOAT__, __SIZEOF_DOUBLE__, __SIZEOF_LONG_DOUBLE__,
20059         __SIZEOF_SIZE_T__, __SIZEOF_WCHAR_T__, __SIZEOF_WINT_T__ and
20060         __SIZEOF_PTRDIFF_T__.
20061         * doc/cpp.texi: Documentation for the new builtin macros added.
20062
20063 2007-01-24  Uros Bizjak  <ubizjak@gmail.com>
20064
20065         * config/i386/i386.md (tanxf2, tan<mode>2, atan<mode>2, log<mode>2,
20066         log10<mode>2, log2<mode>2, expxf2, exp10xf2, exp2xf2): Use op2
20067         instead of operands[2] to avoid access past the end of array.
20068
20069 2007-01-24  Richard Sandiford  <richard@codesourcery.com>
20070
20071         * reload1.c (emit_reload_insns): Pass the reload register
20072         for a non-spill output reload through forget_old_reloads_1.
20073
20074 2007-01-23  Joseph Myers  <joseph@codesourcery.com>
20075
20076         * config/rs6000/rs6000-c.c (rs6000_cpu_cpp_builtins): Define
20077         _SOFT_DOUBLE if doubles use software floating-point.
20078         * config/rs6000/libgcc-ppc-glibc.ver: Export additional long
20079         double functions if _SOFT_DOUBLE, not _SOFT_FLOAT.
20080         * config/rs6000/darwin-ldouble.c: Also compile functions for
20081         hard-float without FPRs.  Use fmsub function for all __NO_FPRS__
20082         cases.  Compile extra functions if _SOFT_DOUBLE, not _SOFT_FLOAT.
20083         * config/rs6000/linuxspe.h (SUBSUBTARGET_OVERRIDE_OPTIONS): Remove
20084         commented-out long double override.
20085         (CPP_LONGDOUBLE_DEFAULT_SPEC): Likewise.
20086         * config/rs6000/eabispe.h: Likewise.
20087         * config/rs6000/rs6000.c (rs6000_override_options): Don't override
20088         long double for non-SPE.
20089         (rs6000_handle_option): Likewise.
20090         (invalid_e500_subreg): Disallow more subregs involding DImode,
20091         DFmode, TImode or TFmode.
20092         (rs6000_legitimate_offset_address_p): Check TFmode offsets for
20093         E500 double.
20094         (legitimate_lo_sum_address_p): Also check for TFmode for E500
20095         double.
20096         (rs6000_legitimize_address): Also handle TFmode for E500 double.
20097         (rs6000_legitimize_reload_address): Also handle TFmode for E500
20098         double.
20099         (rs6000_legitimate_address): Also check for TFmode for E500
20100         double.
20101         (rs6000_emit_move): Use DFmode subregs of TFmode for E500 double.
20102         (spe_build_register_parallel): Handle TFmode and TCmode.
20103         (rs6000_spe_function_arg): Handle TFmode and TCmode for E500
20104         double.
20105         (function_arg): Handle TFmode and TCmode for E500 double.
20106         (rs6000_init_libfuncs): Initialize extra libfuncs for soft double
20107         in general.
20108         (print_operand): Handle TFmode and TImode for %y.
20109         (rs6000_generate_compare): Handle TFmode comparisons for E500
20110         double.
20111         (spe_func_has_64bit_regs_p): Check for TFmode for E500 double.
20112         (rs6000_function_value): Handle TFmode and TCmode for E500 double.
20113         (rs6000_libcall_value): Handle TFmode and TCmode for E500 double.
20114         * config/rs6000/rs6000.h (CANNOT_CHANGE_MODE_CLASS): Check for
20115         TFmode for E500 double.
20116         * config/rs6000/rs6000.md (FP): Allow TF for E500 double.
20117         (floatsidf2): Enable for E500 double.
20118         (movtf_softfloat): Use rs6000_nonimmediate_operand.
20119         (extenddftf2): Change to extenddftf2_fprs.
20120         (extenddftf2): Call gen_spe_extenddftf2 or gen_extenddftf2_fprs
20121         depending on TARGET_E500_DOUBLE.
20122         (extendsftf2): Enable for E500 double.
20123         (trunctfdf2): Enable for E500 double.
20124         (trunctfsf2): Change to trunctfsf2_fprs.
20125         (trunctfsf2): Call gen_spe_trunctfsf2 or gen_trunctfsf2_fprs
20126         depending on TARGET_E500_DOUBLE.
20127         (floatsitf2): Enable for E500 double.
20128         (fix_trunctfsi2): Change to fix_trunctfsi2_fprs.
20129         (fix_trunctfsi2): Call gen_spe_fix_trunctfsi2 or
20130         gen_fix_trunctfsi2_fprs depending on TARGET_E500_DOUBLE.
20131         (negtf2): Change to negtf2_internal.
20132         (negtf2): New expander.
20133         (abstf2): Enable for E500 double.  Call gen_spe_abstf2_tst,
20134         gen_spe_abstf2_cmp or gen_abstf2_internal depending on
20135         TARGET_E500_DOUBLE and flag_unsafe_math_optimizations.
20136         (movdi_internal32): Use rs6000_nonimmediate_operand.
20137         (unnamed splitter): Likewise.
20138         * config/rs6000/spe.md (CMPTFEQ_GPR, TSTTFEQ_GPR, CMPTFGT_GPR,
20139         TSTTFGT_GPR, CMPTFLT_GPR, TSTTFLT_GPR): New unspecs.
20140         (SPE64TF, DITI): New mode macros.
20141         (frob_df_di): Change to frob_<SPE64:mode>_<DITI:mode>; allow more
20142         modes.
20143         (frob_tf_ti): New.
20144         (frob_<mode>_di_2): New.
20145         (frob_tf_di_8_2): New.
20146         (frob_di_df): Change to frob_di_<mode>; allow more modes.
20147         (frob_ti_tf): New.
20148         (frob_di_df_2): Change to frob_<DITI:mode>_<SPE64:mode>_2; allow
20149         more modes.
20150         (frob_ti_<mode>_8_2): New.
20151         (frob_ti_tf_2): New.
20152         (mov_si<mode>_e500_subreg0, mov_si<mode>_e500_subreg0_2,
20153         mov_si<mode>_e500_subreg4, mov_si<mode>_e500_subreg4_2): Allow
20154         TFmode.
20155         (mov_sitf_e500_subreg8, mov_sitf_e500_subreg8_2,
20156         mov_sitf_e500_subreg12, mov_sitf_e500_subreg12_2): New.
20157         (spe_trunctfdf2_internal1, spe_trunctfsf2, spe_extenddftf2,
20158         spe_fix_trunctfsi2, spe_fix_trunctfsi2_internal,
20159         spe_negtf2_internal, spe_abstf2_cmp, spe_abstf2_tst): New.
20160         (cmptfeq_gpr, tsttfeq_gpr, cmptfgt_gpr, tsttfgt_gpr, cmptflt_gpr,
20161         tsttflt_gp): New.
20162
20163 2007-01-23  Ian Lance Taylor  <iant@google.com>
20164
20165         * Makefile.in (OBJS-common): Reformat, alphabetize, but put
20166         insn-*.o first.
20167         (OBJS-archive): Reformat, alphabetize.
20168         (OBJS): Change out_object_file to OBJS-md.
20169
20170 2007-01-23  Uros Bizjak  <ubizjak@gmail.com>
20171
20172         * config/i386/i386.md: Use REG_P, MEM_P, CONST_INT_P, LABEL_P,
20173         JUMP_P and CALL_P predicates where applicable.
20174         * config/i386/i386.c: Ditto.
20175         * config/i386/i386.md: Ditto.
20176         * config/i386/mmx.md: Ditto.
20177         * config/i386/predicates.md: Ditto.
20178
20179 2007-01-22  Andreas Schwab  <schwab@suse.de>
20180
20181         * config/m68k/m68k.h: Fix comment.
20182
20183 2007-01-22  Jan Hubicka  <jh@suse.cz>
20184
20185         * passes.c (init_optimization_passes): Do not rerun
20186         pass_early_warn_uninitialized.
20187
20188 2007-01-22  Richard Guenther  <rguenther@suse.de>
20189
20190         PR tree-optimization/30038
20191         * tree-ssa-math-opts.c (maybe_record_sincos): New static helper
20192         function.
20193         (execute_cse_sincos_1): Likewise.
20194         (execute_cse_sincos): Likewise.
20195         (gate_cse_sincos): Likewise.
20196         (pass_cse_sincos): New pass CSEing sin() and cos() calls using
20197         the cexpi() canonicalization of sincos().
20198         * tree-pass.h (pass_cse_sincos): Declare.
20199         * passes.c (init_optimization_passes): New pass pas_cse_sincos.
20200
20201 2007-01-21  Eric Botcazou  <ebotcazou@libertysurf.fr>
20202
20203         PR rtl-optimization/29329
20204         * combine.c (replaced_rhs_insn): Rename to i2mod.
20205         (replaced_rhs_value): Rename to i2mod_new_rhs.
20206         (i2mod_old_rhs): New global variable.
20207         (combine_instructions): Adjust for above change.  Save a copy of
20208         the old RHS into i2mod_old_rhs when the contents of a REG_EQUAL
20209         note are substituted in the second instruction.
20210         (distribute_notes) <REG_DEAD>: Adjust for above change.  Do not
20211         ditch the note if it pertains to the second eliminated register
20212         and this register is mentioned in i2mod_old_rhs.
20213
20214         Revert:
20215         2006-09-12  Eric Botcazou  <ebotcazou@libertysurf.fr>
20216
20217         * combine.c (distribute_notes) <REG_DEAD>: Do not consider SETs past
20218         the insn to which the note was originally attached.
20219
20220 2007-01-21  Jan Hubicka  <jh@suse.cz>
20221
20222         * ipa-inline.c (inlining_mode): Comment, move up.
20223         (cgraph_decide_inlining_incrementally): Do not perform inlining
20224         itself; fix handling of flattening of self recursive functions.
20225         (cgraph_find_cycles): Remove.
20226         (cgraph_flatten_node): Remove.
20227         (cgraph_decide_inlining): Use incremental inliner to handle flattening.
20228         (try_inline): New function.
20229         (cgraph_early_inlining): Update call of
20230         cgraph_decide_inlining_incrementally.  Apply inlining here.
20231         (apply_inline): Update call of cgraph_decide_inlining_incrementally.
20232
20233 2007-01-21  Dirk Mueller  <dmueller@suse.de>
20234
20235         PR bootstrap/30511
20236         * tree-vrp.c (check_array_bounds): do not warn
20237         about ADDR_EXPR's of ARRAY_REF's which are immediately
20238         used in binary expressions.
20239
20240 2007-01-21  Ira Rosen  <irar@il.ibm.com>
20241
20242         * tree-vectorizer.h (struct _stmt_vec_info): Add new field
20243         read_write_dep and macros for its access.
20244         * tree-vectorizer.c (new_stmt_vec_info): Initialize the new field.
20245         * tree-vect-analyze.c (vect_analyze_data_ref_dependence): Remove
20246         argument, call vect_check_interleaving for every independent pair of
20247         data-refs. Mark loads that access the same memory location as a store
20248         in the loop.
20249         (vect_check_dependences): Remove.
20250         (vect_analyze_data_ref_dependences): Remove  vect_check_dependences
20251         call, fix the call to vect_analyze_data_ref_dependence.
20252         (vect_analyze_data_ref_access): For statements that access the same
20253         data-ref, check that they are not stores; for loads, check that there
20254         is no store that access the same location.
20255
20256 2007-01-20  Roger Sayle  <roger@eyesopen.com>
20257             Joseph Myers  <joseph@codesourcery.com>
20258
20259         * doc/invoke.texi (-fdump-rtl-combine): Fix under/overfull hbox.
20260         (-fdump-rtl-stack): Likewise.
20261         (-fno-signed-zeros): Use @minus{} for a minus sign.  Correct typo.
20262         (-mcheck-zero-division, -mcpu): Fix under/overfull hbox.
20263         (-mpt-fixed): Use @minus{} for minus sign.
20264         (Using Precompiled Headers): Fix under/overfull hbox.
20265
20266 2007-01-20  Jan Hubicka  <jh@suse.cz>
20267
20268         * tree-flow.h (struct stmt_ann_d): Move references_memory to proper
20269         place within annotation.
20270
20271 2007-01-20  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
20272
20273         * pa.c (output_move_double): Change array size of xoperands to 4.
20274
20275 2007-01-20  Jan Hubicka  <jh@suse.cz>
20276
20277         * tree-tailcall.c (adjust_return_value): Do not use RESULT_DECL
20278         as temporary.
20279
20280 2007-01-19  Ian Lance Taylor  <iant@google.com>
20281
20282         * expmed.c (expand_divmod) [TRUNC_MOD_EXPR, TRUNC_DIV_EXPR]: Cast
20283         constant to unsigned HOST_WIDE_INT before negating.
20284
20285 2007-01-19  Ian Lance Taylor  <iant@google.com>
20286
20287         * tree-ssa-operands.h (struct vuse_vec_d): Change num_vuse field
20288         to unsigned.
20289         (VUSE_VECT_ELEMENT) [ENABLE_CHECKING]: Use unsigned comparison.
20290         (VUSE_ELEMENT_PTR) [ENABLE_CHECKING]: Likewise.
20291         (SET_VUSE_VECT_ELEMENT) [ENABLE_CHECKING]: Likewise.
20292         (SET_VUSE_ELEMENT_VAR) [ENABLE_CHECKING]: Likewise.
20293         (SET_VUSE_ELEMENT_PTR) [ENABLE_CHECKING]: Likewise.
20294         (realloc_vdef, realloc_vuse): Change second parameter to
20295         unsigned.
20296         (ssa_operand_iterator_d): Change vuse_index and mayuse_index
20297         fields to unsigned.
20298         * tree-ssa-operands.c (realloc_vop): Change num_elem parameter to
20299         unsigned. Change x and lim locals to unsigned.
20300         (realloc_vdef, realloc_vuse): Change num_elem parameter to
20301         unsigned.
20302         (finalize_ssa_vuse_ops): Change old_i local to unsigned.
20303         (copy_virtual_operands): Change i and n locals to unsigned.
20304
20305 2007-01-19  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
20306
20307         PR middle-end/29335
20308         * builtins.c (fold_builtin_1): Handle builtin fdim.
20309
20310 2007-01-20  Jan Hubicka  <jh@suse.cz>
20311
20312         * tree-ssa.c (init_tree_ssa): Do not call init_alias_heapvars.
20313         * tree-ssa-structalias.c (compute_points_to_sets): Do call
20314         init_alias_heapvars.
20315         (init_alias_heapvars): Initialize only when not already initialized.
20316         (delete_alias_heapvars): Set heapvar_for_stmt to NULL.
20317
20318 2007-01-19  Roger Sayle  <roger@eyesopen.com>
20319
20320         * common.opt (fsigned-zeros): New command line option.
20321         * flags.h (HONOR_SIGNED_ZEROS): Control via flag_signed_zeros instead
20322         of flag_unsafe_math_optimizations.
20323         * opts.c (set_fast_math_flags): The -ffast-math command line option
20324         implies -fno-signed-zeros.
20325         (fast_math_flags_set_p): Likewise.
20326
20327         * doc/invoke.texi: Document new -fno-signed-zeros option, and update
20328         the documentation of -ffast-math appropriately.  Wrap long lines.
20329
20330 2007-01-19  Steve Ellcey  <sje@cup.hp.com>
20331
20332         * system.h (ASM_MAKE_LABEL_LINKONCE): Poison.
20333         * varasm.c (globalize_decl): Remove ASM_MAKE_LABEL_LINKONCE ifdef.
20334
20335 2007-01-19  Tomas Bily  <tbily@suse.cz>
20336
20337         * cgraphunit.c (cgraph_finalize_function): Updating of pid
20338         * tree-profile.c:
20339         (tree_init_ic_make_global_vars): New function
20340         (tree_init_edge_profiler): call of tree_init_ic_make_global_vars
20341         (tree_gen_ic_profiler): New function
20342         (tree_gen_ic_func_profiler): New function
20343         (tree_profiling): Added calling of tree_gen_ic_func_profiler
20344         (tree_profile_hooks): Added hook for indirec/virtual calls
20345         * value-prof.c (tree_find_values_to_profile): New case for
20346         indirect calls
20347         (tree_values_to_profile): Call for determining indirect/virtual
20348         counters
20349         (tree_indirect_call_to_profile): New function
20350         (tree_ic_transform): New function
20351         (tree_ic): New function
20352         (find_func_by_pid): New function
20353         (init_pid_map): New function
20354         (tree_value_profile_transformations): Added check for
20355         indirect/virtual call transformation
20356         * value-prof.h (enum hist_type): New counter type for
20357         indirect/virtual calls
20358         (profile_hooks): Added new hook for profiling indirect/virtual
20359         calls
20360         * profile.c (instrument_values): New case for indirect/virtual
20361         call added
20362         * gcov-io.h (GCOV_LAST_VALUE_COUNTER): Changed to 6
20363         (GCOV_COUNTER_V_INDIR): New counter type
20364         (GCOV_COUNTER_NAMES): New name of counter "indirect" added
20365         (GCOV_MERGE_FUNCTIONS): New merge function for indirect/virtual
20366         call added
20367         * cgraph.c: Definition of cgraph_max_pid
20368         (cgraph_create_node): Default init of pid attribute
20369         * cgraph.h: Declaration of cgraph_max_pid
20370         (struct cgraph_node): Added pid attribute
20371         * libgcov.c (__gcov_indirect_call_profiler): New function
20372         (__gcov_one_value_profiler_body): New function
20373         (__gcov_one_value_profiler): Body was moved to
20374         __gcov_one_value_profiler_body and calls it
20375
20376 2007-01-19  Basile Starynkevitch  <basile@starynkevitch.net>
20377
20378         * doc/gty.texi (Options): Document the mark_hook option to GTY.
20379         * gengtype.c (write_types_data, write_func_for_structure,
20380         write_types, ggc_wtd, pch_wtd): Add skip_hooks to
20381         write_types_data, ggc_wtd, pch_wtd for processing mark_hook.
20382         (walk_type, write_func_for_structure): Generate the mark_hook if
20383         needed.
20384
20385 2007-01-19  Jan Hubicka  <jh@suse.cz>
20386
20387         * ipa-inline.c (cgraph_decide_inlining_incrementally): Instead of
20388         'early' argument take inlining mode argument specifying whether to
20389         inline for size/speeed or all functions; add support for flattening;
20390         improve dumpting.
20391         (cgraph_early_inlining): Update call of decide_inlining_incrementally.
20392
20393 2007-01-19  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
20394
20395         PR c++/17947
20396         * toplev.c (warn_deprecated_use): Use %qD instead of %qs to print
20397         the name of the declared identifier.
20398
20399 2007-01-19  Dirk Mueller  <dmueller@suse.de>
20400
20401         * config/i386.h (CONDITIONAL_REGISTER_USAGE): Store
20402         result of PIC_OFFSET_TABLE_REGNUM in temporary variable to avoid
20403         duplicate evaluation.
20404
20405 2007-01-19  Uros Bizjak  <ubizjak@gmail.com>
20406
20407         * config/i386/i386.md (acos<mode>2): Rename from acossf2 and acosdf2.
20408         Macroize expander using X87MODEF12 mode macro.  Extend operand 1
20409         to XFMode, use acosxf2 and truncate result to requested mode.
20410         Use SSE_FLOAT_MODE_P to disable patterns for SSE math.
20411         (asin<mode>2): Similarly, with asin expanders.
20412         (*fscalexf4_i387): Rename from *fscalexf4.
20413         (expNcorexf3): New expander.
20414         (expxf2, exp10xf2, exp2xf2): Use expNcorexf3 expander.
20415         (exp<mode>2): Rename from expsf2 and expdf2. Macroize expander using
20416         X87MODEF12 mode macro.  Extend operand 1 to XFMode, use expxf2 and
20417         truncate result to requested mode. Use SSE_FLOAT_MODE_P to disable
20418         patterns for SSE math.
20419         (exp10<mode>2): Similarly, with exp10 expanders.
20420         (exp2<mode>2): Similarly, with exp2 expanders.
20421         (expm1<mode>2): Similarly, with expm1 expanders.
20422         (ldexp<mode>3): Similarly, with ldexp expanders.
20423         (log<mode>2, log10<mode>2, log2<mode>2, log1p<mode>2, logb<mode>2):
20424         Use gen_truncxf<mode>2_i387_noop to truncate result.
20425
20426 2007-01-19  Richard Sandiford  <richard@codesourcery.com>
20427
20428         * config/m68k/m68k.h (PREFERRED_STACK_BOUNDARY): Define to 32
20429         for ColdFire targets.
20430
20431 2007-01-19  Nathan Sidwell  <nathan@codesourcery.com>
20432             Richard Sandiford  <richard@codesourcery.com>
20433
20434         * config/m68k/m68k.h (M68K_STATIC_CHAIN_REG_NAME): New macro.
20435         (INITIALIZE_TRAMPOLINE): Use STATIC_CHAIN_REGNUM.
20436         (__transfer_from_trampoline): Use M68K_STATIC_CHAIN_REG_NAME.
20437         * config/m68k/m68kelf.h (STATIC_CHAIN_REGNUM): Override.
20438         (M68K_STATIC_CHAIN_REG_NAME): Likewise.
20439         * config/m68k/netbsd-elf.h (M68K_STATIC_CHAIN_REG_NAME): Likewise.
20440
20441 2007-01-19  Richard Sandiford  <richard@codesourcery.com>
20442
20443         * config/m68k/m68k.md (adddi_dilshr32): Rename to...
20444         (*adddi_dilshr32): ...this.  Fix formatting.  Remove commented-out
20445         non-canonical pattern.  Restrict to !TARGET_COLDFIRE.
20446         (*adddi_dilshr32_cf): New pattern.
20447         (adddi3, subdi3): Remove first alternatives.
20448
20449 2007-01-19  Richard Sandiford  <richard@codesourcery.com>
20450
20451         * config/m68k/m68k.c (notice_update_cc): If an SFmode move is
20452         implemented using move.l, do not use its cc result for floating-point
20453         comparisons.
20454
20455 2007-01-19  Richard Sandiford  <richard@codesourcery.com>
20456
20457         * config/m68k/m68k.h (EXTRA_CONSTRAINT): Stop the 'T' constraint
20458         from accepting 's' constraints if flag_pic.
20459
20460 2007-01-19  Richard Sandiford  <richard@codesourcery.com>
20461
20462         * config/m68k/m68k.md (bordered, bunordered, buneq, bunge, bungt)
20463         (bunle, bunlt, bltgt, bordered_rev, bunordered_rev, buneq_rev)
20464         (bunge_rev, bungt_rev, bunle_rev, bunlt_rev, bltgt_rev): Change
20465         condition from TARGET_68881 to TARGET_HARD_FLOAT.
20466
20467 2007-01-19  Sandra Loosemore  <sandra@codesourcery.com>
20468
20469         * longlong.h (count_leading_zeros, COUNT_LEADING_ZEROS_0): Add
20470         ColdFire alternatives.
20471         * config/m68k/m68k.h (CLZ_DEFINED_VALUE_AT_ZERO): New macro.
20472         * config/m68k/m68k.md (clzsi2):  Define for ColdFire
20473         architectures that support ff1 instruction.
20474
20475 2007-01-19  Richard Sandiford  <richard@codesourcery.com>
20476             Julian Brown  <julian@codesourcery.com>
20477
20478         * config/m68k/m68k.h (CONST_OK_FOR_LETTER_P): Add an 'R' case.
20479         * config/m68k/m68k.md (*movsi_cfv4): Fold into...
20480         (*movsi_cf): ...here.  Remove unnecessary 'R' from 'Rg'.
20481         Add commentary.
20482
20483 2007-01-19  Richard Sandiford  <richard@codesourcery.com>
20484
20485         * config/m68k/m68k-protos.h (valid_mov3q_const): Take a HOST_WIDE_INT
20486         and return a bool.
20487         (output_move_const_into_data_reg, output_move_simode_const): Delete.
20488         * config/m68k/m68k.c (const_method, const_int_cost): Take a
20489         HOST_WIDE_INT instead of an rtx.
20490         (m68k_rtx_costs): Update call accordingly.
20491         (output_move_const_into_data_reg): Likewise.  Fix formatting.
20492         (valid_mov3q_const): Take a HOST_WIDE_INT instead of an rtx.
20493         Return a bool.
20494         (output_move_simode_const): Update calls after above changes.
20495         Rework to use automatic variables and predicates like MEM_P.
20496         * config/m68k/m68k.md (pushexthisi_const): Update call to
20497         valid_mov3q_const.
20498
20499 2007-01-19  Dirk Mueller  <dmueller@suse.de>
20500
20501         * tree-ssa-alias.c (perform_var_substitution): Fix typo
20502         in dump_flags test.
20503
20504 2007-01-19  Richard Guenther  <rguenther@suse.de>
20505
20506         * builtins.c (expand_builtin_cexpi): Fall back to expanding
20507         via cexp in case sincos is not available.
20508
20509 2007-01-19  Richard Guenther  <rguenther@suse.de>
20510
20511         * doc/tm.texi (TARGET_HAS_SINCOS): Document new target macro.
20512         * defaults.h (TARGET_HAS_SINCOS): Default to off.
20513         * config/linux.h (TARGET_HAS_SINCOS): Set to on if we have glibc.
20514         * config/alpha/linux.h (TARGET_HAS_SINCOS): Likewise.
20515         * config/sparc/linux.h (TARGET_HAS_SINCOS): Likewise.
20516         * config/sparc/linux64.h (TARGET_HAS_SINCOS): Likewise.
20517         * config/rs6000/linux.h (TARGET_HAS_SINCOS): Likewise.
20518         * config/rs6000/linux64.h (TARGET_HAS_SINCOS): Likewise.
20519
20520 2007-01-19  Uros Bizjak  <ubizjak@gmail.com>
20521
20522         * config/i386/i386.md (*fpatanxf3_i387, fpatan_extend<mode>xf3_i387):
20523         New insn patterns.
20524         (atan2sf3_1, atan2df3_1, atan2xf3_1): Remove insn patterns.
20525         (atan2xf3): Directly generate RTL pattern.
20526         (atan2<mode>3): Rename from atan2sf3 and atan2df3 and macroize insn
20527         patterns using X87MODEF12 mode macro.  Use fpatan_extend<mode>xf3_i387
20528         and truncate result to requested mode.  Use SSE_FLOAT_MODE_P to
20529         disable patterns for SSE math.
20530         (atan<mode>2): Rename from atansf2 and atandf2 and macroize insn
20531         patterns using X87MODEF12 mode macro.  Use fpatan_extend<mode>xf3_i387
20532         and truncate result to requested mode.  Use SSE_FLOAT_MODE_P to
20533         disable patterns for SSE math.
20534
20535 2007-01-19  Alexandre Oliva  <aoliva@redhat.com>
20536
20537         * libgcc-std.ver: Fix typo in %inherit for GCC_4.3.0.
20538
20539 2007-01-18  Roger Sayle  <roger@eyesopen.com>
20540
20541         * fold-const.c (fold_unary) <VIEW_CONVERT_EXPR>: Optimize away a
20542         VIEW_CONVERT_EXPR to the same type as it's operand.
20543
20544 2007-01-18  David Edelsohn  <edelsohn@gnu.org>
20545
20546         * config/rs6000/darwin-ldouble.c: Only build _SOFT_FLOAT if
20547         configured for long double 128.
20548
20549 2007-01-18  Mike Stump  <mrs@apple.com>
20550
20551         * config/rs6000/rs6000.c (rs6000_emit_vector_compare): Fix build
20552         error.
20553
20554 2007-01-18  Michael Meissner  <michael.meissner@amd.com>
20555
20556         * i386.c (ix86_compute_frame_layout): Make fprintf's in #if 0 code
20557         type correct.
20558
20559 2007-01-18  Jan Hubicka  <jh@suse.cz>
20560
20561         * tree-ssa-operands.c (vop_free_bucket_size): Never return value
20562         greater than NUM_VOP_FREE_BUCKETS.
20563
20564 2007-01-18  Daniel Berlin  <dberlin@dberlin.org>
20565
20566         * tree-ssa-structalias.c: Update comments.
20567         (ptabitmap_obstack): Removed.
20568         (pta_obstack): New.
20569         (oldpta_obstack): Ditto.
20570         (stats): Add a few members.
20571         (struct variable_info): Remove node, complex, address_taken, and
20572         indirect_target members. Add oldsolution member.
20573         (new_var_info): Do not initialize removed members.
20574         (constraint_expr_type): Remove INCLUDES.
20575         (constraint_graph): Add size, implicit_preds, rep,
20576         indirect_cycles, eq_rep, label, direct_nodes, and complex members.
20577         (FIRST_REF_NODE): New macro.
20578         (LAST_REF_NODE): Ditto.
20579         (FIRST_ADDR_NODE): Ditto.
20580         (find): New function.
20581         (unite): Ditto.
20582         (dump_constraint): Do not handle INCLUDES.
20583         (insert_into_complex): Do not insert duplicate constraints.
20584         (condense_varmap_nodes): Renamed and rewritten into ...
20585         (merge_node_constraints): This. Also fix bug in handling of
20586         offseted copy constraints.
20587         (clear_edges_for_node): No longer need to deal with preds at all,
20588         or removing associated preds/succs.
20589         (merge_graph_nodes): Deal with indirect_cycles.
20590         Don't deal with predecessors.
20591         (add_implicit_graph_edge): New function.
20592         (add_pred_graph_edge): Ditto.
20593         (add_graph_edge): Don't deal with predecessors.
20594         (build_constraint_graph): Removed.
20595         (build_pred_graph): New function.
20596         (build_succ_graph): Ditto.
20597         (struct scc_info): Removed in_component. Added roots, dfs, and
20598         node_mapping. Remove visited_index, unification_queue.
20599         (scc_visit): Deal with union-find we do now.
20600         Deal with cycles with REF nodes.
20601         (collapse_nodes): Renamed and rewritten to ...
20602         (unify_nodes): This.
20603         (process_unification_queue): Removed.
20604         (topo_visit): Cleanup
20605         (do_da_constraint): Use find.
20606         (do_sd_constraint): Ditto.
20607         (do_ds_constraint): Ditto.
20608         (do_complex_constraint): Ditto.
20609         (init_scc_info): Update for removed and added members.
20610         (find_and_collapse_graph_cycles): Renamed and rewritten into ...
20611         (find_indirect_cycles): This.
20612         (equivalence_class): New variable.
20613         (label_visit): New function.
20614         (perform_variable_substitution): Rewritten.
20615         (free_var_substitution_info): New function.
20616         (find_equivalent_node): Ditto.
20617         (move_complex_constraints): Ditto.
20618         (eliminate_indirect_cycles): Ditto.
20619         (solve_graph): Only propagate changed bits.
20620         Use indirect cycle elimination.
20621         Use find.
20622         (tree_id_t): Rename to tree_vi_t, delete id member, add vi member.
20623         (tree_id_eq): Renamed to ...
20624         (tree_vi_eq): This. Update for member change
20625         (insert_id_for_tree): Renamed and rewritten to ...
20626         (insert_vi_for_tree): This.
20627         (lookup_id_for_tree): Renamed and rewritten to ...
20628         (lookup_vi_for_tree): This.
20629         (get_id_for_tree): Renamed and rewritten to ...
20630         (get_vi_for_tree): Ditto.
20631         (get_constraint_exp_from_ssa_var): Update to use get_vi_for_tree.
20632         (process_constraint): Don't handle INCLUDES.
20633         Remove special ADDRESSOF case.
20634         (find_func_aliases): Rewrite to use vi functions instead of id
20635         ones.
20636         (create_function_info_for): Ditto.
20637         (create_variable_info_for): Ditto.
20638         (intra_create_variable_infos): Ditto.
20639         (merge_smts_into): Ditto.
20640         (find_what_p_points_to): Ditto.
20641         (init_base_vars): Ditto.
20642         (init_alias_vars): Ditto.
20643         (remove_preds_and_fake_succs): New function.
20644         (dump_sa_points_to_info): Dump new stats.
20645         (dump_solution_for_var): Use find.
20646         (set_used_smts): Fix formatting.
20647         (compute_points_to_sets): Updated for new functions.
20648         (ipa_pta_execute): Ditto.
20649
20650 2007-01-18  Kazu Hirata  <kazu@codesourcery.com>
20651             Richard Sandiford  <richard@codesourcery.com>
20652
20653         * doc/tm.texi (TARGET_FUNCTION_VALUE): Expand documentation of
20654         parallels.
20655         * calls.c (expand_call): If the return value is a PARALLEL,
20656         extract its first member.
20657         * config/m68k/linux.h (FUNCTION_EXTRA_EPILOGUE): Remove.
20658         * config/m68k/m68k.c (m68k_output_function_epilogue): Don't
20659         use FUNCTION_EXTRA_EPILOGUE.
20660         (m68k_function_value): Return a PARALLEL if the return value
20661         is of a pointer type.
20662         * config/m68k/netbsd-elf.h (current_function_returns_pointer)
20663         (FUNCTION_EXTRA_EPILOGUE): Remove.
20664         * config/m68k/m68k.md (D0_REG): New constant.
20665
20666 2007-01-18  Kazu Hirata  <kazu@codesourcery.com>
20667
20668         * config/m68k/m68k.c (m68k_output_function_epilogue): Don't
20669         output a NOP for empty epilogues.
20670
20671 2007-01-18  Richard Sandiford  <richard@codesourcery.com>
20672
20673         * config/m68k/m68k.c (m68k_use_return_insn): Update comments
20674         before function.  Extend register save check to include all
20675         registers, not just integer ones.
20676
20677 2007-01-18  Kazu Hirata  <kazu@codesourcery.com>
20678
20679         * config/m68k/m68k-protos.h (use_return_insn): Rename to...
20680         (m68k_use_return_insn): ...this.
20681         * config/m68k/m68k.h (USE_RETURN_INSN): Delete.
20682         * config/m68k/m68k.c (use_return_insn): Rename to...
20683         (m68k_use_return_insn): ...this.
20684         * config/m68k/m68k.md (return): Use m68k_use_return_insn instead
20685         of USE_RETURN_INSN.
20686
20687 2007-01-18  Nathan Sidwell  <nathan@codesourcery.com>
20688
20689         * config/m68k/fpgnulib.c (__truncdfsf2): Implement round to
20690         nearest even, fix denormal rounding overflow.
20691
20692 2007-01-18  Richard Sandiford  <richard@codesourcery.com>
20693
20694         * config/m68k/m68k.md (movsf_cf_hard): Use fsmove instead of
20695         f%$smove and f%$move.
20696         (movdf_cf_hard): Use fdmove for cases 0 and 3 and fmove for case 1.
20697         (extendsfdf2_cf): Use fdmove instead of f%&move.
20698         (truncdfsf2_cf): Use fsmove instead of f%$smove.
20699         (add<mode>3_cf, sub<mode>3_cf): Use <FP:prec> instead of <FP:round>.
20700
20701 2007-01-18  Richard Sandiford  <richard@codesourcery.com>
20702
20703         * config/m68k/m68k.md (movdf_cf_hard): Use output_move_double for
20704         GPR<-GPR moves.
20705
20706 2007-01-18  Richard Sandiford  <richard@codesourcery.com>
20707
20708         * real.h (real_format): Add a canonical_nan_lsbs_set field.
20709         (coldfire_single_format): Declare.
20710         (coldfire_double_format): Likewise.
20711         * real.c (encode_ieee_single): Use canonical_nan_lsbs_set instead
20712         of qnan_msb_set to determine the lower bits of a canonical
20713         NaN significand.
20714         (encode_ieee_double): Likewise.
20715         (encode_ieee_quad): Likewise.
20716         (ieee_single_format): Initialize canonical_nan_lsbs_set.
20717         (mips_single_format): Likewise.
20718         (ieee_double_format): Likewise.
20719         (mips_double_format): Likewise.
20720         (ieee_extended_motorola_format): Likewise.
20721         (ieee_extended_intel_96_format): Likewise.
20722         (ieee_extended_intel_128_format): Likewise.
20723         (ieee_extended_intel_96_round_53_format): Likewise.
20724         (ibm_extended_format): Likewise.
20725         (mips_extended_format): Likewise.
20726         (ieee_quad_format): Likewise.
20727         (mips_quad_format): Likewise.
20728         (vax_f_format): Likewise.
20729         (vax_d_format): Likewise.
20730         (vax_g_format): Likewise.
20731         (i370_single_format): Likewise.
20732         (i370_double_format): Likewise.
20733         (decimal_single_format): Likewise.
20734         (decimal_double_format): Likewise.
20735         (decimal_quad_format): Likewise.
20736         (c4x_single_format): Likewise.
20737         (c4x_extended_format): Likewise.
20738         (real_internal_format): Likewise.
20739         (coldfire_single_format): New real_format.
20740         (coldfire_double_format): Likewise.
20741         * config/pdp11/pdp11.c (pdp11_f_format): Initialize
20742         canonical_nan_lsbs_set.
20743         (pdp11_d_format): Likewise.
20744         * config/m68k/m68k.c (override_options): Override REAL_FORMAT_MODE
20745         if TARGET_COLDFIRE_CPU.
20746
20747 2007-01-18  Richard Sandiford  <richard@codesourcery.com>
20748
20749         * config/m68k/m68k-protos.h (m68k_output_pic_call): Delete.
20750         (output_call, m68k_legitimize_call_address): Declare.
20751         * config/m68k/m68k.h (EXTRA_CONSTRAINT): Remove unnecessary
20752         parenthesees.  Add support for a 'W' constraint.
20753         (LEGITIMATE_PIC_OPERAND_P): Remove SYMBOL_REF_FLAG handling.
20754         (PRINT_OPERAND_PUNCT_VALID_P): Remove comment about 'o'.
20755         (m68k_symbolic_call, m68k_symbolic_jump): Declare.
20756         * config/m68k/m68k.c (m68k_symbolic_call, m68k_symbolic_jump): New
20757         variables.
20758         (override_options): Initialize them.  Do not set flag_no_function_cse
20759         for TARGET_ID_SHARED_LIBRARY.
20760         (m68k_output_pic_call): Delete.
20761         (m68k_legitimize_call_address): New function.
20762         (print_operand): Remove the %o prefix.  Handle the %p prefix.
20763         (output_call): New function.
20764         (m68k_output_mi_thunk): Use m68k_symbolic_jump.  Always load the
20765         target address from the GOT if symbolic jumps are not allowed.
20766         * config/m68k/m68k.md (call, general_operand): Do not set
20767         SYMBOL_REF_FLAG.  Use m68k_legitimize_call_address instead.
20768         Merge separate flag_pic and !flag_pic define_insns into...
20769         (*call, *call_value): ...these new patterns.  Match the address
20770         rather than the containing MEM and require it to be a call_operand.
20771         Use output_call to generate the asm template.
20772         * config/m68k/predicates.md (const_call_operand): New predicate.
20773         (call_operand): Likewise.
20774
20775 2007-01-18  Nathan Sidwell  <nathan@codesourcery.com>
20776
20777         * config/m68k/m68k.h (REGISTER_MOVE_COST): Simplify definition.
20778         (STACK_GROWS_DOWNWARD): Define to 1.
20779         (FUNCTION_VALUE, LIBCALL_VALUE, FUNCTION_VALUE_REGNO_P): Equivocate
20780         comments, emphasizing that these values are only defaults.
20781         * config/m68k/linux.h (LINK_SPEC): Fix formatting in #undef.
20782         * config/m68k/m68k.c (const_method): Remove trailing whitespace.
20783
20784 2007-01-18  Richard Sandiford  <richard@codesourcery.com>
20785
20786         * config/m68k/m68k.md (cmpsi): Remove outdated flag_pic handling.
20787
20788 2007-01-18  Kazu Hirata  <kazu@codesourcery.com>
20789             Richard Sandiford  <richard@codesourcery.com>
20790
20791         * config/m68k/m68k.h (DATA_REGNO_P, ADDRESS_REGNO_P, INT_REGNO_P)
20792         (FP_REGNO_P): New macros.
20793         (REGNO_OK_FOR_INDEX_P, REGNO_OK_FOR_BASE_P, REGNO_OK_FOR_DATA_P)
20794         (REGNO_OK_FOR_FP_P, REG_OK_FOR_INDEX_P, REG_OK_FOR_BASE_P): Use them.
20795         (EH_RETURN_STACKADJ_RTX): Use A0_REG.
20796         * config/m68k/m68k.c (m68k_regno_mode_ok): Use the new REGNO macros.
20797
20798 2007-01-18  Nathan Sidwell  <nathan@codesourcery.com>
20799
20800         * config.gcc (m68k-*-aout*, m68k-*-coff*, m68020-*-elf*, m68k-*-elf*)
20801         (m68k-*-uclinuxoldabi, m68k-*-uclinux*, m68k-*-rtems*): Add t-floatlib
20802         to $tmake_file.
20803         * config/m68k/t-floatlib: New file, extracting common code from...
20804         * config/m68k/t-m68kbare, config/m68k/t-m68kelf,
20805         * config/m68k/t-uclinux: Here.
20806         * config/m68k/fpgnulib.c: Do not compile extendeed precision
20807         routines on ColdFire targets.
20808
20809 2007-01-18  Nathan Sidwell  <nathan@codesourcery.com>
20810
20811         * config.gcc (m68k-*-aout*, m68k-*-coff*, m68020-*-elf*, m68k-*-elf*)
20812         (m68010-*-netbsdelf*, m68k*-*-netbsdelf*, m68k*-*-openbsd*)
20813         (m68k-*-uclinuxoldabi, m68k-*-uclinux*, m68k-*-linux*)
20814         (m68k-*-rtems*): Use tm_file rather than m68k/m68k.h and
20815         explicitly set MOTOROLA to 1.
20816         * config/m68k/m68k.h (MOTOROLA): Simplify definition accordingly.
20817
20818 2007-01-18  Richard Sandiford  <richard@codesourcery.com>
20819             Nathan Sidwell  <nathan@codesourcery.com>
20820
20821         * config/m68k/m68k.h (PCC_STATIC_STRUCT_RETURN): Delete.
20822         (ASM_OUTPUT_REG_PUSH, ASM_OUTPUT_REG_POP): Add MOTOROLA cases.
20823         * config/m68k/coff.h (REGISTER_PREFIX_MD): Delete.
20824         * config/m68k/m68020-elf.h (LIB_SPEC): Delete.
20825         * config/m68k/m68k-none.h (CC1_SPEC, CPP_SUBTARGET_SPEC): Delete.
20826         * config/m68k/m68kelf.h (IMMEDIATE_PREFIX, REGISTER_PREFIX_MD)
20827         (ASM_OUTPUT_REG_PUSH, ASM_OUTPUT_REG_POP): Delete.
20828         (NO_DOLLAR_IN_LABEL, PCC_STATIC_STRUCT_RETURN): Don't undefine.
20829         (BSS_ASM_OP, ASM_OUTPUT_SKIP, ASM_OUTPUT_ASCII): Delete.
20830         * config/m68k/m68kemb.h (PCC_STATIC_STRUCT_RETURN): Don't undefine.
20831         * config/m68k/linux.h (SIZE_TYPE, PTRDIFF_TYPE, WCHAR_TYPE)
20832         (WCHAR_TYPE_SIZE, TARGET_OBJFMT_CPP_BUILTINS): Delete.
20833         (TARGET_OS_CPP_BUILTINS): Don't define mc68000 and mc68020 here.
20834         (DBX_REGISTER_NUMBER): Delete.
20835         * config/m68k/netbsd-elf.h (IMMEDIATE_PREFIX): Delete.
20836         (PCC_STATIC_STRUCT_RETURN): Don't undefine.
20837         * config/m68k/openbsd.h (PCC_STATIC_STRUCT_RETURN): Define.
20838
20839 2007-01-18  Richard Sandiford  <richard@codesourcery.com>
20840
20841         * config.gcc (m68k-*-uclinux*): Add flat.h to $tm_file.
20842         * config/flat.h: New file.
20843         * crtstuff.c (USE_PT_GNU_EH_FRAME): Don't define if
20844         OBJECT_FORMAT_FLAT.
20845         * config/m68k/m68k.h (ASM_PREFERRED_EH_DATA_FORMAT): Do not use
20846         indirect references for -msep-data or -mid-shared-library.
20847         Do not use PC-relative code addresses either.
20848         * config/m68k/m68k.c (override_options): Restrict -fPIC error
20849         to -mpcrel.
20850         * config/m68k/uclinux.h (STARTFILE_SPEC): Define.  Use Scrt1.o
20851         for shared libraries and crt1.o for executables.  Use crti.o and
20852         crtbegin.o.
20853         (ENDFILE_SPEC): Use crtend.o and crtn.o.
20854         (LIB_SPEC): Suppress -Rlibc.gdb if -static-libc is given.
20855         Do not add -elf2flt or -shared-lib-id options here.
20856         (LINK_SPEC): Define.  Pass -elf2flt if no -elf2flt option is given.
20857         Pass -shared-lib-id if -mid-shared-library, taking the library
20858         identifier from -mshared-library-id if given, otherwise
20859         defaulting to 0.
20860         (EH_FRAME_IN_DATA_SECTION): Do not undefine.
20861         (INIT_SECTION_ASM_OP, FINI_SECTION_ASM_OP): Likewise.
20862         (TARGET_OS_CPP_BUILTINS): Define __GXX_MERGED_TYPEINFO_NAMES=0
20863         and __GXX_TYPEINFO_EQUALITY_INLINE=0 if -mid-shared-library.
20864         (DRIVER_SELF_SPECS): Map unadorned PIC options to -msep-data.
20865         * config/m68k/t-uclinux (EXTRA_MULTILIB_PARTS): Add crtbegin.o
20866         and crtend.o.
20867         * config/m68k/lb1sf68.asm (PICCALL): Use an lea and pc-relative
20868         jump sequence for ISA A and ISA A+.
20869         (PICJUMP): Likewise.
20870
20871 2007-01-18  Richard Sandiford  <richard@codesourcery.com>
20872
20873         * config.gcc (m68k-*-uclinux*): Base the port on the common
20874         and m68k GNU/Linux files rather than on the generic ELF ones.
20875         * config/m68k/uclinux.h (TARGET_VERSION): Override.
20876         (TARGET_OS_CPP_BUILTINS): Use LINUX_TARGET_OS_CPP_BUILTINS.
20877
20878 2007-01-18  Julian Brown  <julian@codesourcery.com>
20879             Richard Sandiford  <richard@codesourcery.com>
20880
20881         * config/m68k/m68k.h (LONG_DOUBLE_TYPE_SIZE): Make 64-bit on ColdFire.
20882         (LIBGCC2_LONG_DOUBLE_TYPE_SIZE): Likewise.
20883         * config/m68k/netbsd-elf.h (LIBGCC2_LONG_DOUBLE_TYPE_SIZE): Undefine
20884         before redefining.
20885         * config/m68k/uclinux-oldabi.h (LONG_DOUBLE_TYPE_SIZE): Redefine to
20886         80 unconditionally.
20887         (LIBGCC2_LONG_DOUBLE_TYPE_SIZE): Likewise.
20888
20889 2007-01-18  Richard Sandiford  <richard@codesourcery.com>
20890
20891         * doc/install.texi: Document m68k-uclinuxoldabi.
20892         * config.gcc (m68k-*-uclinuxoldabi): New configuration.
20893         * config/m68k/uclinux-oldabi.h: New file, copied from
20894         config/m68k/uclinux.h.
20895
20896 2007-01-18  Kaz Kojima  <kkojima@rr.iij4u.or.jp>
20897
20898         * config/m32r/m32r-protos.h (m32r_expand_epilogue): Declare it.
20899         * config/m32r/m32r.c (m32r_setup_incoming_varargs): Use gen_frame_mem.
20900         (m32r_compute_frame_size): Use unsigned for regno.
20901         (m32r_reload_lr): Use gen_frame_mem.
20902         (pop): New.
20903         (m32r_output_function_epilogue): Don't output the function epilogue
20904         textually here.
20905         (m32r_expand_epilogue): New.
20906         (direct_return): Return false if the function has the interrupt
20907         attribute.
20908         (m32r_hard_regno_rename_ok): Remove code for the textual epilogue.
20909         * config/m32r/m32r.md (epilogue): New expander.
20910         (return_lr, return_rte): New insns.
20911         (return): Make it expander.
20912         (return_normal): New expander.
20913
20914 2007-01-18  Josh Conner  <jconner@apple.com>
20915
20916         PR target/30485
20917         * config/rs6000/rs6000.c (rs6000_emit_vector_compare): Add
20918         support for UNLE, UNLT, UNGE, and UNGT.
20919
20920 2007-01-18  Jan Hubicka  <jh@suse.cz>
20921
20922         * tree-vrp.c (finalize_jump_threads): Do not call cleanup_cfg by hand.
20923         * tree-tailcall (add_virtual_phis): Likewise.
20924         (optimize_tail_call): Return TODOs.
20925         (execute_tail_calls): Return TODOs.
20926         * tree-ssa-ccp (execute_fold_all_builtins): Do cleanup_cfg via TODO.
20927         * tree-cfgcleanup.c (cleanup_tree_cfg_loop): Return if something
20928         changed.
20929         * tree-ssa-forwprop.c (tree_ssa_forward_propagate_single_use_value):
20930         Cleanup cfg using TODO.
20931         * tree-flow.h (cleanup_tree_cfg_loop): Update prototype.
20932         * passes.c (execute_function_todo): When cleanup did something, remove
20933         unused locals.
20934         * tree-cfg.c (pass_build_cfg): Add cleanup_cfg TODO.
20935         (make_edges): Don't cleanup_cfg.
20936
20937 2007-01-18  Uros Bizjak  <ubizjak@gmail.com>
20938
20939         * reg-stack.c (subst_stack_regs_pat) [UNSPEC_SINCOS_COS,
20940         UNSPEC_XTRACT_FRACT]: Use generic code for instructions that
20941         operate on the top of stack.
20942         [UNSPEC_SINCOS_SIN, UNSPEC_XTRACT_EXP, UNSPEC_TAN]: Rewrite
20943         register handling of instructions that output to the second
20944         stack slot.
20945         [UNSPEC_TAN_ONE, UNSPEC_TAN_TAN]: Remove.
20946         (move_for_stack_reg): Special-case check for dead destination
20947         stack slot for constant load of 1.0 inside UNSPEC_TAN.
20948
20949         * config/i386/i386.md (UNSPEC_TAN): New constant.
20950         (UNSPEC_TAN_ONE, UNSPEC_TAN_TAN): Remove.
20951         (fptanxf4_i387, fptan_extend<mode>xf4_i387): New patterns
20952         to correctly model move of constant 1.0 to top stack slot.
20953         (*tandf3_1, *tansf3_1, *tanxf3_1): Remove insn patterns.
20954         (unnamed peephole2 pattern): Remove corresponding peephole2
20955         pattern that optimizes tan insn and loading of constant 1.0.
20956         (tanxf2): Use fptanxf4_i387.
20957         (tan<mode>2): Rename from tansf2 and tandf2 and macroize insn
20958         patterns using X87MODEF12 mode macro.  Use fptan_extend<mode>xf4_i387
20959         and truncate result to requested mode.  Use SSE_FLOAT_MODE_P to
20960         disable patterns for SSE math.
20961         (sincos<mode>3): Use truncxf<mode>2_i387_noop for truncation.
20962         (fyl2x_extend<mode>xf3_i387): Use X87MODEF12 for operand 1.
20963
20964 2007-01-18  Dirk Mueller  <dmueller@suse.de>
20965             Richard Guenther <rguenther@suse.de>
20966
20967         PR diagnostic/8268
20968         * doc/invoke.texi (Warray-bounds): Document -Warray-bounds.
20969         * common.opt (Warray-bounds): Add new warning option.
20970         * c-opts.c (c_common_handle_option): Define -Warray-bounds
20971         if -Wall is given.
20972         * Makefile.in: make tree-vrp.o depend on toplev.h
20973         * tree-vrp.c (vrp_finalize): Call check_array_refs if -Warray-bounds
20974         is enabled.
20975         (check_array_refs, check_array_bounds, check_array_ref): New.
20976
20977 2007-01-18  Jan Hubicka  <jh@suse.cz>
20978
20979         * tree-ssa-ccp.c (ccp_finalize): Return if something changed.
20980         (execute_ssa_ccp): Return flags conditionally.
20981         * tree-ssa-propagate.c (substitue_and_fold): Return if something was
20982         changed.
20983         * tree-ssa-propagate.h (substitute_and_fold): Update prototype.
20984
20985 2007-01-18  Steven Bosscher  <steven@gcc.gnu.org>
20986
20987         * cfgcleanup.c (cleanup_cfg): Detect cfglayout mode and set
20988         the CLEANUP_CFGLAYOUT flag when in cfglayout mode.
20989
20990         * Makefile.c (GTFILES): Add cfglayout.h.
20991         * gengtype.c (open_base_files): Likewise.
20992         * cfglayout.c (cfg_layout_function_footer,
20993         cfg_layout_function_header) Reindent to make gengtype happy.
20994         * cfglayout.h (cfg_layout_function_footer,
20995         cfg_layout_function_header): Add GTY(()) marker.
20996
20997         * ifcvt.c (noce_try_sign_mask): Make sure INSN_B is non-null.
20998
20999 2007-01-18  Ben Elliston  <bje@au.ibm.com>
21000
21001         * genautomata.c (write_automata): Include xstrerror output in the
21002         error message if writing the DFA description file fails.
21003
21004 2007-01-17  H.J. Lu  <hongjiu.lu@intel.com>
21005
21006         * config/mips/mips-protos.h (mips_output_external): Make it
21007         return void.
21008         * config/mips/iris.h (TARGET_ASM_EXTERNAL_LIBCALL): Removed.
21009         * config/mips/mips.c (irix_output_external_libcall): Likewise.
21010         (extern_list): Likewise.
21011         (extern_head): Likewise.
21012         (TARGET_ASM_FILE_END): Likewise.
21013         (mips_file_end): Likewise.
21014         (mips_output_external): Rewritten.
21015
21016 2007-01-18  Ben Elliston  <bje@au.ibm.com>
21017
21018         * genpreds.c (write_insn_preds_c): Only write out the function
21019         body for regclass_for_constraint if we have register constraints.
21020
21021 2007-01-17  Tom Tromey  <tromey@redhat.com>
21022
21023         * doc/sourcebuild.texi (libgcj Tests): Use sourceware.org.
21024         * doc/install.texi (Testing): Use sourceware.org.
21025         (Binaries): Likewise.
21026         (Specific): Likewise.
21027         * doc/contrib.texi (Contributors): Use sourceware.org.
21028
21029 2007-01-17  Anatoly Sokolov <aesok@post.ru>
21030
21031         * config/avr/avr.h (AVR_HAVE_LPMX): New macro.
21032         (AVR_ENHANCED): Rename to ...
21033         (AVR_HAVE_MUL): ... new.
21034         (avr_enhanced_p): Rename to ...
21035         (avr_have_mul_p): ... new.
21036         (TARGET_CPU_CPP_BUILTINS): Use 'avr_have_mul_p' instead of
21037         'avr_enhanced_p' for "__AVR_ENHANCED__". Define "__AVR_HAVE_MUL__".
21038         * config/avr/avr.c (avr_enhanced_p): Rename to ...
21039         (avr_have_mul_p): ... new.
21040         (base_arch_s): Rename 'enhanced' to 'have_mul'.
21041         (avr_override_options): Use 'avr_have_mul_p' and 'have_mul' instead of
21042         'avr_enhanced_p' and 'enhanced'.
21043         (ashlhi3_out, ashrhi3_out, lshrhi3_out, avr_rtx_costs): Use
21044         AVR_HAVE_MUL instead of AVR_ENHANCED.
21045         * avr.md (*tablejump_enh): Use AVR_HAVE_LPMX instead of AVR_ENHANCED.
21046         (mulqi3, *mulqi3_enh, *mulqi3_call, mulqihi3, umulqihi3, mulhi3,
21047         *mulhi3_enh, *mulhi3_call, mulsi3, *mulsi3_call): Use AVR_HAVE_MUL
21048         instead of AVR_ENHANCED.
21049         (*tablejump_enh): Use AVR_HAVE_LPMX instead of AVR_ENHANCED.
21050         * libgcc.S: Use __AVR_HAVE_MUL__ instead of __AVR_ENHANCED__.
21051         (__tablejump__): Use __AVR_HAVE_LPMX__ instead of __AVR_ENHANCED__.
21052
21053 2007-01-17  Ian Lance Taylor  <iant@google.com>
21054
21055         * vec.h (VEC_reserve_exact): Define.
21056         (vec_gc_p_reserve_exact): Declare.
21057         (vec_gc_o_reserve_exact): Declare.
21058         (vec_heap_p_reserve_exact): Declare.
21059         (vec_heap_o_reserve_exact): Declare.
21060         (VEC_OP (T,A,reserve_exact)): New static inline function, three
21061         versions.
21062         (VEC_OP (T,A,reserve)) [all versions]: Remove handling of
21063         negative parameter.
21064         (VEC_OP (T,A,alloc)) [all versions]: Call ...reserve_exact.
21065         (VEC_OP (T,A,copy)) [all versions]: Likewise.
21066         (VEC_OP (T,a,safe_grow)) [all versions]: Likewise.
21067         * vec.c (calculate_allocation): Add exact parameter.  Change all
21068         callers.
21069         (vec_gc_o_reserve_1): New static function, from vec_gc_o_reserve.
21070         (vec_gc_p_reserve, vec_gc_o_reserve): Call vec_gc_o_reserve_1.
21071         (vec_gc_p_reserve_exact, vec_gc_o_reserve_exact): New functions.
21072         (vec_heap_o_reserve_1): New static function, from vec_heap_o_reserve.
21073         (vec_heap_p_reserve, vec_heap_o_reserve): Call vec_heap_o_reserve_1.
21074         (vec_heap_p_reserve_exact): New function.
21075         (vec_heap_o_reserve_exact): New function.
21076
21077 2007-01-17  Jan Hubicka  <jh@suse.cz>
21078
21079         * ipa-type-escape.c (look_for_casts): Revamp using handled_component_p.
21080
21081 2007-01-17  Eric Christopher  <echristo@apple.com>
21082
21083         * config.gcc: Support core2 processor.
21084
21085 2007-01-16  Jan Hubicka  <jh@suse.cz>
21086
21087         * tree-ssanames.c (release_dead_ssa_names): Instead of ggc_freeing
21088         the names, just unlink the chain so we don't crash on dangling
21089         pointers
21090         to dead SSA names.
21091
21092 2007-01-16  Jan Hubicka  <jh@suse.cz>
21093
21094         * cgraph.h (cgraph_decide_inlining_incrementally): Kill.
21095         * tree-pass.h: Reorder to make IPA passes appear toegher.
21096         (pass_early_inline, pass_inline_parameters, pass_apply_inline):
21097         Declare.
21098         * cgraphunit.c (cgraph_finalize_function): Do not compute inling
21099         parameters, do not call early inliner.
21100         * ipa-inline.c: Update comments.  Include tree-flow.h
21101         (cgraph_decide_inlining): Do not compute inlining parameters.
21102         (cgraph_decide_inlining_incrementally): Return TODOs; assume to
21103         be called with function context set up.
21104         (pass_ipa_inline): Remove unreachable functions before pass.
21105         (cgraph_early_inlining): Simplify assuming to be called from the
21106         PM as local pass.
21107         (pass_early_inline): New pass.
21108         (cgraph_gate_ipa_early_inlining): New gate.
21109         (pass_ipa_early_inline): Turn into simple wrapper.
21110         (compute_inline_parameters): New function.
21111         (gate_inline_passes): New gate.
21112         (pass_inline_parameters): New pass.
21113         (apply_inline): Move here from tree-optimize.c
21114         (pass_apply_inline): New pass.
21115         * ipa.c (cgraph_remove_unreachable_nodes): Verify cgraph after
21116         transforming.
21117         * tree-inline.c (optimize_inline_calls): Return TODOs rather than
21118         doing them by hand.
21119         (tree_function_versioning): Do not allocate dummy struct function.
21120         * tree-inline.h (optimize_inline_calls): Update prototype.
21121         * tree-optimize.c (execute_fixup_cfg): Export.
21122         (pass_fixup_cfg): Remove
21123         (tree_rest_of_compilation): Do not apply inlines.
21124         * tree-flow.h (execute_fixup_cfg): Declare.
21125         * Makefile.in (gt-passes.c): New.
21126         * passes.c: Include gt-passes.h
21127         (init_optimization_passes): New passes.
21128         (nnodes, order): New static vars.
21129         (do_per_function_toporder): New function.
21130         (execute_one_pass): Dump current pass here.
21131         (execute_ipa_pass_list): Don't dump current pass here.
21132
21133 2007-01-16  Janis Johnson  <janis187@us.ibm.com>
21134
21135         * config/dfp-bit.c (dfp_compare_op): Return separate value for NaN.
21136         (DFP_NE, DFP_LE, DFP_GE): Return false for NaN.
21137
21138 2007-01-16  David Edelsohn  <edelsohn@gnu.org>
21139
21140         * config/rs6000/darwin-ldouble.c: Build file for SOFT_FLOAT.
21141         (strong_alias): Define.
21142         (__gcc_qmul): Provide non-FMA for soft-float.
21143         (__gcc_qdiv): Same.
21144         (__gcc_qneg): New.
21145         (__gcc_qeq): New.
21146         (__gcc_qle): New.
21147         (__gcc_qge): New.
21148         (__gcc_qunord): New.
21149         (__gcc_stoq): New.
21150         (__gcc_dtoq): New.
21151         (__gcc_qtos): New.
21152         (__gcc_qtod): New.
21153         (__gcc_qtoi): New.
21154         (__gcc_qtou): New.
21155         (__gcc_itoq): New.
21156         (__gcc_utoq): New.
21157         (fmsub): New.
21158         * config/rs6000/rs6000.c (rs6000_init_libfuncs): Initialize
21159         soft-float functions.
21160         * config/rs6000/libgcc-ppc-glibc.ver: Version soft-float symbols.
21161         * config/rs6000/sysv4.h (SUBTARGET_OVERRIDE_OPTIONS): Do not warn
21162         about long double soft float.
21163
21164 2007-01-16  Dorit Nuzman  <dorit@il.ibm.com>
21165             Tehila Meyzels  <tehila@il.ibm.com>
21166
21167         * tree-vectorizer.h (is_pattern_stmt_p): New.
21168         * tree-vect-analyze.c (vect_determine_vectorization_factor): Fix
21169         formatting (tabs instead of spaces). Cleanup and clarify setting
21170         of STMT_VINFO_VECTYPE. Call is_pattern_stmt_p.
21171         * tree-vect-transform.c (vect_get_vec_def_for_operand): Fix typo.
21172         (vectorizable_type_demotion): Check that types are integral.
21173         (vectorizable_type_promotion): Likewise.
21174         (vectorizable_store): Fix typo.  Eliminate new-line at end of
21175         comments.
21176
21177 2007-01-16  Jan Hubicka  <jh@suse.cz>
21178
21179         * tree-ssanames.c (release_dead_ssa_names): Remove invalidated
21180         cgraph edges too.
21181
21182 2007-01-15  Eric Christopher  <echristo@apple.com>
21183
21184         * ifcvt.c: Include vec.h, vecprim.h.
21185         (check_cond_move_block): New argument regs.
21186         Reorganize. Add registers used to regs.
21187         (cond_move_process_if_block): Use regs set above as
21188         loop bounds.
21189
21190 2007-01-15  Eric Christopher  <echristo@apple.com>
21191
21192         * config/darwin.h: Update copyright.
21193         (TARGET_OPTION_TRANSLATE_TABLE): Add umbrella.
21194         (LINK_COMMAND_SPEC): Add -u.
21195         (LINK_SPEC): Fix umbrella for above.
21196
21197 2007-01-15  Joseph S. Myers  <joseph@codesourcery.com>
21198
21199         * config/soft-fp/op-common.h, config/soft-fp/op-4.h: Update from
21200         glibc CVS.
21201
21202 2007-01-15  Tom Tromey  <tromey@redhat.com>
21203
21204         * doc/sourcebuild.texi (libgcj Tests): Don't mention jacks.
21205         * doc/install.texi (Testing): Don't mention jacks.
21206         (Configuration): Document --enable-java-maintainer-mode.  Move
21207         --with-java-home to libgcj-specific section.  Document
21208         --with-ecj-jar.
21209         (Prerequisites): Mention --enable-java-maintainer-mode, ecj1.
21210
21211 2007-01-15  Jan Hubicka  <jh@suse.cz>
21212
21213         * tree-ssa-dce.c (DCE_TODOs): New.
21214         (propagate_necessity): Return if something changed.
21215         (eliminate_unnecessary_stmts): Likewise.
21216         (perform_tree_ssa_dce): Return TODO flags when needed.
21217         (pass_dce, pass_dce_loop, pass_cd_dce): Remove TODO flags.
21218
21219 2007-01-15  Uros Bizjak  <ubizjak@gmail.com>
21220
21221         * config/i386/i386.md (fyl2xxf3_i387): Rename from fyl2x_xf3.
21222         (fyl2x_extend<mode>xf3_i387): New insn pattern.
21223         (log<mode>2): Rename from logsf2 and logdf2 and macroize insn
21224         patterns using X87MODEF12 mode macro.  Extend operand 1
21225         to XFmode. Use SSE_FLOAT_MODE_P to disable patterns for SSE math.
21226         (log10<mode>2): Ditto.
21227         (log2<mode>2): Ditto.
21228         (log1p<mode>2): Ditto.
21229         (logb<mode>2): Ditto.
21230         (fyl2xp1xf3_i387): Rename from fyl2xp1_xf3.
21231         (fyl2xp1_extend<mode>xf3_i387): New insn pattern.
21232         (*fxtractxf3_i387): Rename from *fxtractxf3.
21233         (fxtract_extend<mode>xf3_i387): New insn pattern.
21234         (ilogbsi2): Use match_dup 3, not match_operand:XF 3.
21235         * config/i386/i386.c (ix86_emit_i387_log1p): Use gen_fyl2xp1xf3_i387()
21236         and gen_fyl2xxf3_i387().
21237
21238 2007-01-14  Zdenek Dvorak <dvorakz@suse.cz>
21239
21240         * loop-unswitch.c (unswitch_loop): Do not call fix_loop_placement.
21241         * cfgloopmanip.c (fix_loop_placement): Made static.  Use
21242         get_loop_exit_edges.  Changed return type to bool.
21243         * cfgloop.h (fix_loop_placement): Declaration removed.
21244
21245 2007-01-14  Dorit Nuzman  <dorit@il.ibm.com>
21246
21247         * param.h (MIN_VECT_LOOP_BOUND): New.
21248         * params.def (MIN_VECT_LOOP_BOUND): New.
21249         * tree-vectorizer.c (slpeel_tree_peel_loop_to_edge): Takes another
21250         argument - minimum threshold for number of iterations.
21251         * tree-vectorizer.h (slpeel_tree_peel_loop_to_edge): Add another
21252         argument to declaration.
21253         * tree-vect-analyze.c (vect_analyze_operations): Check value of
21254         MIN_VECT_LOOP_BOUND.
21255         * tree-vect-transform.c (vect_do_peeling_for_loop_bound): Call
21256         slpeel_tree_peel_loop_to_edge with additional argument.
21257         (vect_do_peeling_for_alignment): Likewise.
21258         * doc/invoke.texi (min-vect-loop-bound): Document new param option.
21259
21260 2007-01-14  Uros Bizjak  <ubizjak@gmail.com>
21261
21262         PR target/30413
21263         * config/i386/i386.c (print_operand) ['z']: Output 'b' for
21264         operands of size 1.
21265
21266 2007-01-14  Jan Hubicka  <jh@suse.cz>
21267
21268         * tree-dfa.c (remove_referenced_var): New function.
21269         * tree-ssa-live.c (remove_unused_locals): Walk referenced vars and
21270         prune referenced vars list too.
21271         * tree-flow.h (remove_referenced_var): Declare.
21272
21273 2007-01-14  Jan Hubicka  <jh@suse.cz>
21274
21275         * tree-eh.c (add_stmt_to_eh_region_fn): Do not add call_exprs
21276         separately.
21277         (remove_stmt_from_eh_region_fn): Do not remove call_exprs.
21278         (verify_eh_throw_stmt_node, verify_eh_throw_table_statements): Kill.
21279         * except.h (verify_eh_throw_table_statements): Kill prototype.
21280         * cfgexpand.c (expand_gimple_basic_block): Propagate Eh regions
21281         into call exrepssions.
21282         * tree-optimize.c (execute_free_cfg_annotatiosn): Do not call
21283         eh trhow verifier.
21284         * tree-cfg.c: Include pointer-set.h.
21285         (verify_node_sharing): Work on pointer set.
21286         (verify_eh_throw_stmt_node): New.
21287         (verify_stmts): Use pointers sets, verify throw_stmt.
21288
21289 2007-01-13  Zdenek Dvorak <dvorakz@suse.cz>
21290
21291         * ipa-reference.c (analyze_function): Consider also addresses taken
21292         in phi nodes.
21293
21294 2007-01-12  Roger Sayle  <roger@eyesopen.com>
21295
21296         * c-typeck.c (null_pointer_constant_p): Replace use of
21297         TREE_CONSTANT_OVERFLOW with TREE_OVERFLOW.
21298         (build_c_cast): Likewise.
21299
21300 2007-01-12  Roger Sayle  <roger@eyesopen.com>
21301
21302         * tree.h (force_fit_type_double): Remove unused final argument.
21303         * c-common.c (constant_expression_warning): Replace use of
21304         TREE_CONSTANT_OVERFLOW with TREE_OVERFLOW.
21305         (convert_and_check): Likewise.
21306         (shorten_compare): Update call to force_fit_type_double.
21307         (c_common_truthvalue_conversion) <INTEGER_CST>: Use integer_zerop.
21308         * convert.c (convert_to_pointer): Update call to
21309         force_fit_type_double.
21310         * fold-const.c (force_fit_type_double): Remove overflowed_const
21311         argument.
21312         (int_const_binop, fold_convert_const_int_from_int,
21313         fold_convert_const_int_from_real, fold_div_compare,
21314         fold_sign_changed_comparison, fold_unary, fold_negate_const,
21315         fold_abs_const, fold_not_const): Remove the final argument from
21316         calls to force_fit_type_double.
21317
21318 2007-01-12  Andrew Pinski  <andrew_pinski@playstation.sony.com>
21319
21320         * configure.ac: Set insn to "nop" for spu-*-* also.
21321         * configure: Regenerate.
21322
21323 2007-01-12  Olga Golovanevsky  <olga@il.ibm.com>
21324
21325         * builtins.def : Add BUILT_IN_FREE.
21326
21327 2007-01-12  Jan Hubicka  <jh@suse.cz>
21328
21329         PR tree-optimization/30443
21330         * tree-inline.c (tree_function_versioning): Do not optimize when
21331         cloning for inlining.
21332
21333 2007-01-12  Zdenek Dvorak <dvorakz@suse.cz>
21334
21335         * doc/loop.texi: Document recording of loop exits.
21336         * cfgloopmanip.c (loopify, duplicate_loop): Use alloc_loop.
21337         (update_single_exits_after_duplication,
21338         update_single_exit_for_duplicated_loop,
21339         update_single_exit_for_duplicated_loops): Removed.
21340         (duplicate_loop_to_header_edge): Do not call
21341         update_single_exits_after_duplication and
21342         update_single_exit_for_duplicated_loops.
21343         (loop_version): Do not update single_exit information.
21344         (fix_loop_structure): Use record_loop_exits instead of
21345         mark_single_exit_loops.
21346         * tree-ssa-loop-manip.c (tree_transform_and_unroll_loop): Update
21347         the lists of loop exits.
21348         * cfghooks.c (redirect_edge_and_branch, redirect_edge_and_branch_force,
21349         split_edge, merge_blocks): Update the lists of loop exits.
21350         * modulo-sched.c (sms_schedule): Pass LOOPS_HAVE_RECORDED_EXITS to
21351         loop_optimizer_init.
21352         * loop-init.c (loop_optimizer_init): Call record_loop_exits instead
21353         of mark_single_exit_loops.
21354         (loop_optimizer_finalize): Call release_recorded_exits.
21355         * tree-ssa-loop.c (tree_loop_optimizer_init): Pass
21356         LOOPS_HAVE_RECORDED_EXITS to loop_optimizer_init.
21357         * tree-vectorizer.c (slpeel_tree_duplicate_loop_to_edge_cfg): Do not
21358         update single exit information.
21359         * lambda-code.c (perfect_nestify): Ditto.
21360         * cfgloop.c (flow_loop_free): Destroy the list of exits of the loop.
21361         (mark_single_exit_loops): Removed.
21362         (alloc_loop, loop_exit_hash, loop_exit_eq, loop_exit_free,
21363         get_exit_descriptions, rescan_loop_exit, record_loop_exits,
21364         dump_recorded_exit, dump_recorded_exits, release_recorded_exits): New
21365         functions.
21366         (get_loop_exit_edges, single_exit): Use recorded exit lists.
21367         (add_bb_to_loop, remove_bb_from_loops): Update the lists of loop exits.
21368         (verify_loop_structure): Verify consistency of the exit lists.
21369         (flow_loops_find): Use alloc_loop.  Initialize exits hash.
21370         (set_single_exit): Removed.
21371         * cfgloop.h (struct loop_exit): New function.
21372         (struct loop): single_exit_ field replaced by exits field.
21373         (LOOPS_HAVE_MARKED_SINGLE_EXITS): Replaced by
21374         LOOPS_HAVE_RECORDED_EXITS.
21375         (struct loops): Added exits hash.
21376         (mark_single_exit_loops, set_single_exit): Declaration removed.
21377         (release_recorded_exits, record_loop_exits, rescan_loop_exit): Declare.
21378
21379 2007-01-12  Richard Sandiford  <richard@codesourcery.com>
21380
21381         * doc/invoke.texi: Avoid use of @headitem.
21382
21383 2007-01-12  Richard Sandiford  <richard@codesourcery.com>
21384
21385         * cse.c (cse_insn): Move HAVE_CC0 code after declarations.
21386
21387 2007-01-12  Richard Sandiford  <richard@codesourcery.com>
21388
21389         * doc/install.texi: Fix m68k-*-* anchor and add m68k-*-* to the
21390         list of targets.
21391
21392 2007-01-12  Nathan Sidwell  <nathan@codesourcery.com>
21393             Richard Sandiford  <richard@codesourcery.com>
21394
21395         * doc/invoke.texi: Document -mno-bitfield, -mno-rtd and -mno-short.
21396         * config/m68k/m68k.opt: Resort options.
21397         (mbitfield, mrtd, mshort): Remove RejectNegative properties.
21398
21399 2007-01-12  Nathan Sidwell  <nathan@codesourcery.com>
21400             Richard Sandiford  <richard@codesourcery.com>
21401
21402         * doc/invoke.texi: Document the macros that are defined by
21403         m68k's -mtune and -mhard-float options.
21404         * config/m68k/m68k-protos.h (m68k_cpp_cpu_ident) Declare.
21405         (m68k_cpp_cpu_family): Likewise.
21406         * config/m68k/m68k.h (TARGET_CPU_CPP_BUILTINS): Add a full set
21407         of __ucfv*__ macros.  Define __mcffpu__ if generating code for
21408         ColdFire FPUs.  Define __mcf_cpu_* and __mcf_family_* macros.
21409         * config/m68k/m68k.c (m68k_cpp_cpu_ident): New function.
21410         (m68k_cpp_cpu_family): Likewise.
21411
21412 2007-01-12  Richard Sandiford  <richard@codesourcery.com>
21413
21414         * config/m68k/m68k.h (TARGET_CPU_CPP_BUILTINS): Treat all mc68*
21415         macros besides mc68000 as tuning macros.  Use a switch statement
21416         to set them and mcpu32.
21417
21418 2007-01-12  Julian Brown  <julian@codesourcery.com>
21419
21420         * config/m68k/m68k.h: Use TARGET_68040 instead of TARGET_68040_ONLY.
21421         (TARGET_68040_ONLY): Rename to...
21422         (TARGET_68040): ...this.
21423         * config/m68k/m68k.c: Use TARGET_68040 instead of TARGET_68040_ONLY.
21424         * config/m68k/m68k.md: Likewise.
21425
21426 2007-01-12  Julian Brown  <julian@codesourcery.com>
21427             Nathan Sidwell  <nathan@codesourcery.com>
21428             Richard Sandiford  <richard@codesourcery.com>
21429
21430         * config.gcc (m680[012]0-*-*, m68k*-*-*): Set m68k_cpu_ident to
21431         the -mcpu= argument associated with the --with-cpu setting.
21432         Define M68K_DEFAULT_TUNE to the default -mtune= option,
21433         if different from the one implied by the -mcpu setting.
21434         Accept --with-cpu=FOO if FOO is listed in m68k-devices.def,
21435         using mcpu=FOO as the default CPU option.  Set target_cpu_default2.
21436         * doc/invoke.texi: Mention ColdFire in the introduction to the
21437         m68k options.  Document the new -march, -mcpu, -mtune, -mdiv,
21438         -mno-div and -mhard-float options.  Make -m68881 a synonym for
21439         -mhard-float.  Document the previously-undocumented -m5206e,
21440         -m528x, -m5307 and -m5407 options.  Tweak the existing option
21441         documentation for consistency.
21442         * doc/install.texi: Mention new --with-cpu arguments.
21443         * config/m68k/m68k.h (OPTION_DEFAULT_SPECS): Only use the
21444         default CPU if neither -mcpu nor -march are specified.
21445         (ASM_CPU_SPEC): Pass down -mcpu and -march options.
21446         (TARGET_CPU_CPP_BUILTINS): Set __mcfisa*__ macros from
21447         TARGET_ISA*.  Set the legacy __mcf*__ cpu macros in the same way,
21448         using m68k_tune to decide between families that implement the
21449         same ISA.  Use m68k_tune to set __mcfv4e__.
21450         (FL_BITFIELD, FL_68881, FL_COLDFIRE, FL_CF_HWDIV, FL_CF_MAC)
21451         (FL_CF_EMAC, FL_CF_EMAC_B, FL_CF_USP, FL_CF_FPU, FL_ISA_68000)
21452         (FL_ISA_68010, FL_ISA_68020, FL_ISA_68040, FL_ISA_A, FL_ISA_B)
21453         (FL_ISA_C, FL_ISA_MMU): New macros.
21454         (MASK_COLDFIRE): Delete.
21455         (TARGET_68010, TARGET_68020, TARGET_68040_ONLY, TARGET_COLDFIRE)
21456         (TARGET_ISAB): Redefine in terms of m68k_cpu_flags.
21457         (TARGET_68881, TARGET_COLDFIRE_FPU): Redefine in terms of m68k_fpu.
21458         (TARGET_HARD_FLOAT): Do not define here.
21459         (TARGET_ISAAPLUS, TARGET_ISAC): New macros.
21460         (TUNE_68000): New macro.
21461         (TUNE_68000_10): Redefine in terms of TUNE_68000 and TUNE_68010.
21462         (TUNE_68010, TUNE_68030, TUNE_68040, TUNE_68060, TUNE_CPU32)
21463         (TUNE_CFV2): Redefine in terms of m68k_tune.
21464         (uarch_type, target_device, fpu_type): New enums.
21465         (m68k_cpu, m68k_tune, m68k_fpu, m68k_cpu_flags): Declare.
21466         * config/m68k/m68k.c (TARGET_DEFAULT): Remove MASK_68881.
21467         (FL_FOR_isa_00, FL_FOR_isa_10, FL_FOR_isa_20, FL_FOR_isa_40)
21468         (FL_FOR_isa_cpu32, FL_FOR_isa_a, FL_FOR_isa_aplus, FL_FOR_isa_b)
21469         (FL_FOR_isa_c): New macros.
21470         (m68k_isa): New enum.
21471         (m68k_target_selection): New structure.
21472         (all_devices, all_isas, all_microarchs): New tables.
21473         (m68k_cpu_entry, m68k_arch_entry, m68k_tune_entry, m68k_cpu)
21474         (m68k_tune, m68k_fpu, m68k_cpu_flags): New variables.
21475         (MASK_ALL_CPU_BITS): Delete.
21476         (m68k_find_selection): New function.
21477         (m68k_handle_option): Handle -mcpu=, -march= and -mtune=.
21478         Map the legacy target options to a combination of the new ones.
21479         (override_options): Set m68k_cpu, m68k_tune, m68k_fpu and
21480         m68k_cpu_flags.  Handle M68K_DEFAULT_TUNE.  Use m68k_cpu_flags
21481         to derive default MASK_BITFIELD, MASK_CF_HWDIV and MASK_HARD_FLOAT
21482         settings.
21483         * config/m68k/m68k.opt (m5200, m5206e, m528x, m5307, m5407, mcfv4e)
21484         (m68010, m68020, m68020-40, m68020-60, m68030, m68040): Remove Mask
21485         properties.
21486         (m68881, msoft-float): Change mask from 68881 to HARD_FLOAT.
21487         (march=, mcpu=, mdiv, mhard-float, mtune=): New options.
21488         * config/m68k/m68k-devices.def: New file.
21489
21490 2007-01-12  Richard Sandiford  <richard@codesourcery.com>
21491             Nathan Sidwell  <nathan@codesourcery.com>
21492
21493         * config/m68k/m68k.h (ASM_CPU_SPEC, ASM_SPEC, EXTRA_SPECS)
21494         (SUBTARGET_EXTRA_SPECS): New macros.
21495         * config/m68k/linux.h (ASM_SPEC): Remove CPU flags;
21496         use %(asm_cpu_spec) instead.
21497         * config/m68k/m68k-none.h (ASM_SPEC): Likewise.
21498         * config/m68k/openbsd.h (ASM_SPEC): Likewise.
21499         * config/m68k/netbsd-elf.h (ASM_SPEC): Likewise.
21500         (EXTRA_SPECS): Rename to...
21501         (SUBTARGET_EXTRA_SPECS): ...this.
21502
21503 2007-01-12  Nathan Sidwell  <nathan@codesourcery.com>
21504             Richard Sandiford  <richard@codesourcery.com>
21505             Julian Brown  <julian@codesourcery.com>
21506
21507         * config.gcc (m68k-*-aout*, m68k-*-coff*, m68020-*-elf*, m68k-*-elf*)
21508         (m68k-*-uclinux*, m68k-*-linux*, m68k-*-rtems*): Set default_m68k_cpu
21509         to the configuration's default CPU.
21510         (m68010-*-netbsdelf*, m68k*-*-netbsdelf*, m68k*-*-openbsd*): Likewise.
21511         Remove default masks.
21512         (m680[012]0-*-*): Set the default with_cpu to the first part of
21513         the target name.
21514         (m68k*-*-*): Set the default with_cpu to m$default_m68k_cpu.
21515         (m68k*-*-linux): Extend the --with-cpu handling to...
21516         (m680[012]0-*-*, m68k*-*-*): ...these configurations.  Allow m68000
21517         and m68010.  Don't set target_cpu_default2.
21518         * doc/install.texi: Document --with-cpu for m68k.
21519         * config/m68k/m68k.h (OPTION_DEFAULT_SPECS): Define.
21520         * config/m68k/m68k-none.h (TARGET_CPU_DEFAULT, M68K_CPU_m68k)
21521         (M68K_CPU_m68000, M68K_CPU_m68010, M68K_CPU_m68020, M68K_CPU_m68030)
21522         (M68K_CPU_m68040, M68K_CPU_m68302, M68K_CPU_m68332, TARGET_DEFAULT)
21523         (ASM_CPU_DEFAULT_SPEC, CC1_CPU_DEFAULT_SPEC): Delete.
21524         (ASM_SPEC): Remove use of %(asm_cpu_default).
21525         (EXTRA_SPECS, SUBTARGET_EXTRA_SPECS, MULTILIB_DEFAULTS): Delete.
21526         * config/m68k/linux.h (TARGET_DEFAULT): Delete.
21527         (CPP_SPEC): Merge definitions.  Do not handle __HAVE_68881__ here.
21528         * config/m68k/netbsd-elf.h (TARGET_OS_CPP_BUILTINS): Define
21529         __HAVE_FPU__ if TARGET_HARD_FLOAT.
21530         (TARGET_DEFAULT): Delete.
21531         (EXTRA_SPECS): Delete cpp_cpu_default_spec, cpp_cpu_spec,
21532         cpp_fpu_spec, asm_default_spec and netbsd_cpp_spec.
21533         (CPP_CPU_SPEC): Delete.
21534         (TARGET_VERSION): Merge definitions, using TARGET_68010 to pick
21535         the appropriate string.
21536         (CPP_CPU_DEFAULT_SPEC, ASM_DEFAULT_SPEC, CPP_FPU_SPEC): Delete.
21537         (CPP_SPEC): Define to NETBSD_CPP_SPEC.
21538         (ASM_SPEC): Don't use %(asm_default_spec).
21539         * config/m68k/m68k.c (TARGET_DEFAULT_TARGET_FLAGS): Remove
21540         TARGET_DEFAULT and add MASK_68881.
21541         * config/m68k/m68k.md: Remove mention of TARGET_DEFAULT from comments.
21542
21543 2007-01-12  Richard Sandiford  <richard@codesourcery.com>
21544
21545         * config.gcc (m68010-*-netbsdelf*): Add MASK_68010.
21546         (m68k*-*-netbsdelf*, m68k*-*-openbsd*, m68k*-linux*): Add
21547         MASK_68010 alongside MASK_68020.
21548         * doc/invoke.texi: Document -m68010.
21549         * config/m68k/m68k.opt (m68010): New.
21550         * config/m68k/m68k.h (TARGET_CPU_CPP_BUILTINS): Define mc68010
21551         if TUNE_68010.
21552         (TUNE_68010): New macro.
21553         * config/m68k/m68k-none.h (M68K_CPU_m68k, M68K_CPU_m68010)
21554         (M68K_CPU_m68020, M68K_CPU_m68030, M68K_CPU_m68040)
21555         (M68K_CPU_m68332): Add MASK_68010.
21556         * config/m68k/linux.h (TARGET_DEFAULT): Add MASK_68010 to
21557         fallback definition.
21558         * config/m68k/netbsd-elf.h (CPP_CPU_SPEC): Remove now-redundant
21559         defines.
21560         * config/m68k/m68k.c (MASK_ALL_CPU_BITS): Add MASK_68010.
21561         (m68k_handle_option): Handle OPT_m68010.  Add MASK_68010
21562         to all entries that use MASK_68020.
21563         (output_move_simode_const, output_move_himode, output_move_qimode)
21564         (output_move_stricthi, output_move_strictqi): Use TARGET_68010
21565         instead of TARGET_68020 to select clr behavior.  Remove comment
21566         about there being no TARGET_68010.
21567         * config/m68k/m68k.md: Likewise throughout.
21568
21569 2007-01-12  Julian Brown  <julian@codesourcery.com>
21570
21571         * config/m68k/m68k.h (TARGET_ISAB): New macro.
21572         * config/m68k/m68k.c: Use TARGET_ISAB rather than TARGET_CFV4.
21573         * config/m68k/m68k.md: Likewise.
21574
21575 2007-01-12  Julian Brown  <julian@codesourcery.com>
21576
21577         * config/m68k/m68k.h (LEGITIMATE_INDEX_P, LEGITIMIZE_ADDRESS): Use
21578         TARGET_COLDFIRE_FPU instead of TARGET_CFV4E.
21579
21580 2007-01-12  Julian Brown  <julian@codesourcery.com>
21581
21582         * config/m68k/m68k.h (TUNE_68040_60): New macro.
21583         * config/m68k/m68k.c (standard_68881_constant_p): Use it.
21584         * config/m68k/m68k.md: Likewise.
21585
21586 2007-01-12  Julian Brown  <julian@codesourcery.com>
21587             Richard Sandiford  <richard@codesourcery.com>
21588
21589         * config/m68k/m68k.h (TARGET_CPU_CPP_BUILTINS): Use TUNE_68030
21590         instead of TARGET_68030, TUNE_68040 instead of TARGET_68040,
21591         TUNE_68060 instead of TARGET_68060 and TUNE_CPU32 instead of
21592         TARGET_CPU32.
21593         (TARGET_CPU32): Rename to...
21594         (TUNE_CPU32): ...this.
21595         (TUNE_68000_10, TUNE_68030, TUNE_68040, TUNE_68060)
21596         (TUNE_CFV2): New macros.
21597         * config/m68k/netbsd-elf.h (LONG_DOUBLE_TYPE_SIZE): Simplify;
21598         remove conditions that are implied by TARGET_68020.
21599         * config/m68k/m68k.c (m68k_output_function_prologue): Use TUNE_68040
21600         instead of TARGET_68040 and TUNE_CPU32 instead of TARGET_CPU32.
21601         (m68k_output_function_epilogue): Likewise.
21602         (m68k_rtx_costs): Likewise.  Use TUNE_68060 instead of TARGET_68060
21603         and TUNE_CFV2 instead of TARGET_5200.  Use TUNE_68000_10 instead of
21604         "!TARGET_68020 && !TARGET_COLDFIRE" to choose between 68000 and
21605         non-68000 timings.  Refactor multiplication and division costs.
21606         (output_addsi3): Use TUNE_68040 instead of TARGET_68040 and
21607         TUNE_CPU32 instead of TARGET_CPU32.
21608         (standard_68881_constant_p): Use TUNE_68040 instead of TARGET_68040
21609         and TUNE_68060 instead of TARGET_68060.
21610         * config/m68k/m68k.md: Use TUNE_68040 instead of TARGET_68040,
21611         TUNE_68060 instead of TARGET_68060, and TUNE_CPU32 instead of
21612         TARGET_CPU32.
21613         (movsi_const0): Use TUNE_68000_10 rather than "!TARGET_68020
21614         && !TARGET_COLDFIRE" to choose between moveq and clr.
21615         Likewise in the unnamed movsf pattern.
21616         (ashlsi_17_24, lshrsi_17_24): Guard with TUNE_68000_10 rather than
21617         "!TARGET_68020 && !TARGET_COLDFIRE".  Likewise the unnamed
21618         ashiftrt pattern.
21619
21620 2007-01-12  Richard Sandiford  <richard@codesourcery.com>
21621
21622         * config/m68k/m68k.h (TARGET_CPU_CPP_BUILTINS): Increase amount
21623         of tabbing before backslashes.
21624
21625 2007-01-11  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
21626
21627         * pa-linux.h (ASM_OUTPUT_INTERNAL_LABEL): Undefine.
21628         * pa.h (ASM_OUTPUT_LABEL): Output colon when using GAS.
21629         (ASM_OUTPUT_INTERNAL_LABEL): Define.
21630
21631 2007-01-11  Zdenek Dvorak <dvorakz@suse.cz>
21632
21633         * tree-ssa-loop-ivopts.c (extract_cond_operands): Split from
21634         find_interesting_uses_cond.
21635         (find_interesting_uses_cond): Use extract_cond_operands.
21636         (rewrite_use_compare): Use extract_cond_operands and
21637         force_gimple_operand_bsi.  Do not call update_stmt.
21638         (determine_use_iv_cost_condition): Use extract_cond_operands.
21639         Return cheaper of using original bound and changing the exit bound.
21640
21641 2007-01-11  Zdenek Dvorak <dvorakz@suse.cz>
21642
21643         PR tree-optimization/29516
21644         * tree-ssa-address.c (tree_mem_ref_addr, add_to_parts,
21645         most_expensive_mult_to_index, addr_to_parts,
21646         create_mem_ref, maybe_fold_tmr): Make the type of
21647         fields of TARGET_MEM_REF sizetype.
21648         (move_fixed_address_to_symbol, move_pointer_to_base):
21649         New functions.
21650         * tree.def (TARGET_MEM_REF): Add comment on types of
21651         the operands.
21652
21653 2007-01-11  Joseph Myers  <joseph@codesourcery.com>
21654
21655         * c-common.c (vector_types_convertible_p): Treat opaque types as
21656         always convertible if they have the same size, but not otherwise.
21657
21658 2007-01-11  Steven Bosscher  <steven@gcc.gnu.org>
21659
21660         * ifcvt.c (struct noce_if_info): Add comments to the fields.
21661         Remove the b_unconditional field.
21662         (noce_try_sign_mask): Do not look at b_unconditional.
21663         (noce_process_if_block): Do not use merge_if_blocks.  Update
21664         the CFG here.  Do not set b_unconditional.
21665         (cond_move_process_if_block): Likewise.
21666         (find_cond_trap): Likewise.
21667         (check_cond_move_block): Require simple jump insns at the end
21668         of the basic block.
21669
21670 2007-01-11  Jan Hubicka  <jh@suse.cz>
21671
21672         PR tree-optimization/1046
21673         * tree-tailcall.c (suitable_for_tail_call_opt_p): Use TREE_ADDRESSABLE
21674         when alias info is not ready.
21675         (pass_tail_recursion): Do not require aliasing.
21676         * tree-ssa-copyrename.c (pass_rename_ssa_cop): Likewise.
21677         * tree-ssa-ccp.c (pass_ccp, pass_fold_builtins): Likewise.
21678         * tree-ssa-copy.c (pass_copy_prop): Likewise.
21679         * tree-ssa-forwprop.c (pass_forwprop): Likewise.
21680         * tree-ssa-dce.c (pass_dce, pass_dce_loop, pass_cd_dce): Likewise.
21681         * passes.c (init_optimization_passes): Execute rename_ssa_copies,
21682         ccp, forwprop, copy_prop, merge_phi, copy_prop, dce and tail recursion
21683         before inlining.
21684         * tree-ssa-operands.c (add_virtual_operand, get_indirect_ref_operand):
21685         When aliasing is not build, mark statement as volatile.
21686
21687 2007-01-11  Tom Tromey  <tromey@redhat.com>
21688
21689         PR preprocessor/15185, PR preprocessor/20989:
21690         * doc/cppopts.texi <-MT>: Update description of algorithm for
21691         computing default target.
21692         <-M, -MD>: Reword "basename" text.
21693
21694 2007-01-11  Roger Sayle  <roger@eyesopen.com>
21695
21696         * builtins.c (expand_builtin_pow, expand_builtin_powi,
21697         fold_builtin_cabs, fold_builtin_sqrt, fold_builtin_trunc,
21698         fold_builtin_floor, fold_builtin_ceil, fold_builtin_round,
21699         fold_builtin_int_int_roundingfn, fold_builtin_bitop,
21700         fold_builtin_bswap, real_constp, fold_builtin_pow,
21701         fold_builtin_powi, fold_builtin_signbit, fold_builtin_copysign,
21702         do_mpfr_arg1, do_mpfr_arg2, do_mpfr_arg3, do_mpfr_sincos): Replace
21703         uses of the macro TREE_CONSTANT_OVERFLOW with TREE_OVERFLOW.
21704         * convert.c (convert_to_pointer): Likewise.
21705         * expr.c (highest_pow2_factor, expand_expr_real_1): Likewise.
21706         * fold-const.c (force_fit_type, fold_negate_expr, int_const_binop,
21707         const_binop, fold_convert_const_int_from_int,
21708         fold_convert_const_int_from_real,
21709         fold_convert_const_real_from_real, sign_bit_p,
21710         optimize_minmax_comparison, extract_muldiv_1, fold_div_compare,
21711         fold_sign_changed_comparison, fold_unary, fold_comparison,
21712         fold_binary, multiple_of_p, tree_Expr_non_zero_p,
21713         fold_negate_const, fold_abs_const, fold_not_const): Likewise.
21714         * print-tree.c (print_node_brief, print_node): Likewise.
21715         * stor-layout.c (place_field, layout_type): Likewise.
21716         * tree-chrec.c (keep_cast): Likewise.
21717         * tree.c (build_vector, build_real, build_real_from_int_cst,
21718         build_complex): Likewise.
21719
21720 2007-01-11  Roger Sayle  <roger@eyesopen.com>
21721
21722         * tree.h (TREE_CONSTANT_OVERFLOW): Obsolete.  For the time being,
21723         treat TREE_CONSTANT_OVERFLOW as a synonym of TREE_OVERFLOW.
21724
21725 2007-01-11  Paolo Bonzini  <bonzini@gnu.org>
21726
21727         * configure.ac (strict1_warn): Rename to strict_warn.
21728         (WERROR, --enable-werror, symlink hacks, stage1_cflags,
21729         cc_set_by_configure, quoted_cc_set_by_configure,
21730         stage_prefix_set_by_configure, quoted_stage_prefix_set_by_configure,
21731         all_boot_languages, all_stagestuff): Remove.
21732         (target_list): Remove bootstrap targets.
21733         * Makefile.in (quickstrap): Unconditionally make a synonym of all.
21734         (BOOT_LANGUAGES, STAGE1_CFLAGS, STAGE1_CHECKING,
21735         REMAKEFLAGS, FLAGS_TO_PASS, PREPEND_DOTDOT_TO_RELATIVE_PATHS,
21736         SUBDIR_FLAGS_TO_PASS, WERROR_FLAGS, STRICT2_WARN, LANG_STAGESTUFF,
21737         VOL_FILES, POSTSTAGE1_FLAGS_TO_PASS, STAGE2_FLAGS_TO_PASS,
21738         STAGEPROFILE_FLAGS_TO_PASS, STAGEFEEDBACK_FLAGS_TO_PASS, stage1_build,
21739         stage1_copy, stage2_build, stage2_copy, stageprofile_build,
21740         stageprofile_copy, stage3_build, stage3_copy, stagefeedback_build,
21741         stagefeedback_copy, stage4_build, clean_s1, clean_sw, bootstrap,
21742         bootstrap-lean, bootstrap2, bootstrap2-lean, bootstrap3,
21743         bootstrap3-lean, bootstrap4, bootstrap4-lean, unstage1, unstage2,
21744         unstage3, unstage4, unstageprofile, unstagefeedback, restage, restage2,
21745         restage3, restage4, restageprofile, restagefeedback, bubbleestrap,
21746         cleanstrap, unstrap, restrap, *compare, *compare3, *compare4,
21747         *compare-lean, *compare3-lean, *compare4-lean, stage1-start, stage1,
21748         stage2-start, stage2, stage3-start, stage3, stage4-start, stage4,
21749         stageprofile-start, stageprofile, stagefeedback-start, stagefeedback,
21750         risky-stage1, risky-stage2, risky-stage3, risky-stage4): Remove.
21751         (ORDINARY_FLAGS_TO_PASS): Rename to FLAGS_TO_PASS.
21752         (STAGECOPYSTUFF, STAGEMOVESTUFF): Consolidate into MOSTLYCLEANFILES.
21753         (mostlyclean): Adjust.
21754         (clean, distclean): Don't mention bootstrap stuff.
21755         * configure: Regenerate.
21756         * ada/config-lang.in, cp/config-lang.in, forttran/config-lang.in,
21757         java/config-lang.in, objc/config-lang.in, objcp/config-lang.in,
21758         treelang/config-lang.in (stagestuff): Remove.
21759         * doc/sourcebuild.texi (stage1, stage2, stage3, stage4,
21760         stageprofile, stagefeedback, stagestuff): Remove mention.
21761
21762 2007-01-11  Nick Clifton  <nickc@redhat.com>
21763
21764         * config/mcore/predicates.md (mcore_general_movesrc_operand):
21765         Accept CONSTs.
21766         (mcore_general_movdst_operand): Do not accept CONST_INTs.
21767         (mcore_arith_K_S_operand): Run the test for the S constraint not
21768         the test for the M constraint.
21769         (mcore_addsub_operand): Do not accept integer values that are
21770         larger than 32 bits.
21771         * config/mcore/mcore.md: Remove unused constraints from split.
21772         (andsi3): Use HOST_WIDE_INT instead of int to hold an INTVAL.
21773         (addsi3): Likewise.
21774         (allocate_stack): Likewise.
21775         * config/mcore/mcore.c (mcore_print_operand): Restrict output of P
21776         operands to 32 bits.
21777         (mcore_const_costs): Use HOST_WIDE_INT instead of int to hold an
21778         INTVAL.
21779         (mcore_and_cost, mcore_modify_comparison, const_ok_for_mcore,
21780         mcore_const_ok_for_inline, mcore_const_trick_uses_not,
21781         try_constant_tricks, mcore_num_ones, mcore_num_zeros,
21782         mcore_output_bclri, mcore_output_andn, output_inline_const,
21783         mcore_output_move, mcore_output_movedouble): Likewise.
21784         (mcore_output_cmov): Use CONST_OK_FOR_M and CONST_OK_FOR_N.
21785         (output_inline_const): Likewise.
21786         (output_inline_const): Fix format strings used in sprintf
21787         statements.
21788         * config/mcore/mcore-protos.h: Update prototypes for changed
21789         functions in mcore.c.
21790         * config/mcore/mcore.h (CONST_OK_FOR_I): Cast values to
21791         HOST_WIDE_INT and not int.
21792         (CONST_OK_FOR_J, CONST_OK_FOR_K, CONST_OK_FOR_L, CONST_OK_FOR_M,
21793         CONST_OK_FOR_N): Likewise.
21794         (LEGITIMATE_CONSTANT_P): Also check CONSTANT_P.
21795         (GO_IF_LEGITIMATE_INDEX): Use HOST_WIDE_INT instead of int to hold
21796         an INTVAL.
21797
21798 2007-01-10  Jan Hubicka  <jh@suse.cz>
21799
21800         * tree-vrp.c (remove_range_assertions): Release defs.
21801         * tree-ssa-loop-ivopts.c (rmeove_statement): Likewise.
21802         * tree-ssa-dom.c (remove_stmt_or_phi): Likewise.
21803
21804 2007-01-10  Paul Brook  <paul@codesourcery.com>
21805
21806         * config/arm/arm.c (arm_rtx_costs_1): Handle mutiply-subtract.
21807         * config/arm/arm.md (mulsi3subsi): New insn.
21808
21809 2007-01-10  Zdenek Dvorak <dvorakz@suse.cz>
21810
21811         * tree-ssa-loop-manip.c (tree_unroll_loop): Make it a wrapper over ...
21812         (tree_transform_and_unroll_loop): New.
21813         * tree-flow.h (transform_callback, tree_transform_and_unroll_loop):
21814         Declare.
21815
21816 2007-01-10  Robert Kennedy <jimbob@google.com>
21817
21818         * fold-const.c (fold_comparison): Fold comparisons like (x *
21819         1000 < 0) to (x < 0).
21820
21821 2007-01-10  Ian Lance Taylor  <iant@google.com>
21822
21823         * tree-pretty-print.c (dump_generic_node): Print parentheses when
21824         operands have the same priority.
21825
21826 2007-01-10  Tom Tromey  <tromey@redhat.com>
21827
21828         * fold-const.c (fold_truthop): Don't check can_use_bit_fields_p.
21829         (fold_binary): Likewise.
21830         * langhooks.c (lhd_can_use_bit_fields_p): Removed.
21831         * langhooks-def.h (lhd_can_use_bit_fields_p): Removed.
21832         (LANG_HOOKS_CAN_USE_BIT_FIELDS_P): Removed.
21833         (LANG_HOOKS_INITIALIZER): Remove LANG_HOOKS_CAN_USE_BIT_FIELDS_P.
21834         * langhooks.h (struct lang_hooks): Removed field
21835         'can_use_bit_fields_p'.
21836
21837 2007-01-10  Ralf Corsépius <ralf.corsepius@rtems.org>
21838
21839         * config/bfin/t-bfin, config/bfin/t-bfin-elf: Remove GCC_CFLAGS.
21840
21841 2007-01-10  Razya Ladelsky  <razya@il.ibm.com>
21842
21843         * function.c (get_last_funcdef_no): New function.
21844         * function.h (get_last_funcdef_no): Declare.
21845         * tree-inline.c (initialize_cfun): Add initialization.
21846         (tree_function_versioning): Cleanup.
21847
21848 2007-01-10  Jan Hubicka  <jh@suse.cz>
21849
21850         * tree-inline.c (setup_one_parameter): Do not propagate into abnormal
21851         PHIs.
21852
21853 2007-01-10  Sa Liu  <saliu@de.ibm.com>
21854             Ben Elliston  <bje@au.ibm.com>
21855
21856         * spu.h (STACK_SAVE_AREA): Use VOIDmode for SAVE_FUNCTION, SImode
21857         for SAVE_NONLOCAL and Pmode for any other save level.
21858         * spu-protos.h (spu_restore_stack_block): Declare.
21859         * spu.md (save_stack_block): Remove.
21860         (restore_stack_block): Call spu_restore_stack_block.
21861         * spu.c (spu_restore_stack_block): New function.
21862         (spu_expand_epilogue): Remove old comment.
21863
21864 2007-01-09  Zdenek Dvorak <dvorakz@suse.cz>
21865
21866         PR tree-optimization/30322
21867         * tree-ssa-loop-ivopts.c (fold_affine_expr, iv_value): Removed.
21868         (cand_value_at): Return the value as aff_tree.
21869         (may_eliminate_iv): Convert the bound from aff_tree to tree.
21870         * tree-affine.c (aff_combination_add_cst, aff_combination_add_product,
21871         aff_combination_mult): New functions.
21872         (aff_combination_add): Use aff_combination_add_cst.
21873         (aff_combination_convert): Allow conversions to a wider type.
21874         (tree_to_aff_combination): Handle BIT_NOT_EXPR.
21875         * tree-affine.h (aff_combination_mult): Declare.
21876
21877 2007-01-09  Carlos O'Donell  <carlos@codesourcery.com>
21878
21879         * doc/tm.texi: Update documentation to reflect reality of exec
21880         and start file search behaviours. Update copyright year.
21881         * doc/invoke.texi: Explain how GCC_EXEC_PREFIX is used to find
21882         header file directories.
21883
21884 2007-01-09  Uros Bizjak  <ubizjak@gmail.com>
21885
21886         * config/i386/i386.md (*sinxf2): Rename to *sinxf2_i387.
21887         (*cosxf2): Rename to cosxf2_i387.
21888         (*sindf2, *sinsf2): Extend operand 1 to XFmode.  Macroize patterns
21889         using X87MODEF12 mode macro. Rename patterns to
21890         *sin_extend<mode>xf2_i387.  Use SSE_FLOAT_MODE_P to disable patterns
21891         for SSE math.
21892         (*cosdf2, *cossf2): Ditto.
21893         (sincosdf3, sincossf3): Ditto.  Rewrite corresponding splitters
21894         to match extended input operands.
21895         (sincos<mode>3): New expander.
21896         (*sinextendsfdf2, *cosextendsfdf2, *sincosextendsfdf3): Remove
21897         insn patterns and corresponding splitters.
21898
21899 2007-01-09  Kaz Kojima  <kkojima@gcc.gnu.org>
21900
21901         * config/sh/t-linux (TARGET_LIBGCC2_CFLAGS): Delete.
21902         (SHLIB_MAPFILES, SHLIB_LINK, SHLIB_INSTALL): Likewise.
21903
21904 2007-01-09  Nicolas Pitre  <nico@cam.org>
21905
21906         PR target/30173
21907         * arm/ieee754-df.S (Lad_s): Also test the low word of X for zero.
21908
21909 2007-01-08  Geoffrey Keating  <geoffk@apple.com>
21910
21911         * target.h (struct gcc_target): New field library_rtti_comdat.
21912         * target-def.h (TARGET_CXX_LIBRARY_RTTI_COMDAT): New.
21913         (TARGET_CXX): Add TARGET_CXX_LIBRARY_RTTI_COMDAT.
21914         * doc/tm.texi (C++ ABI): Document TARGET_CXX_LIBRARY_RTTI_COMDAT.
21915         * config/darwin.h (TARGET_CXX_LIBRARY_RTTI_COMDAT): Define.
21916
21917 2007-01-08  Geoffrey Keating  <geoffk@apple.com>
21918
21919         * doc/invoke.texi (Optimize Options): Correct description of -O0.
21920
21921 2007-01-08  Richard Guenther  <rguenther@suse.de>
21922
21923         * tree.h (force_fit_type_double): Export.
21924         (force_fit_type): Remove.
21925         * fold-const.c (force_fit_type_double): New function.
21926         (force_fit_type): Remove.
21927         (int_const_binop): Use it.
21928         (fold_convert_const_int_from_int): Likewise.
21929         (fold_convert_const_int_from_real): Likewise.
21930         (fold_div_compare): Likewise.
21931         (fold_sign_changed_comparison): Likewise.
21932         (fold_unary): Likewise.
21933         (fold_negate_const): Likewise.
21934         (fold_abs_const): Likewise.
21935         (fold_not_const): Likewise.
21936         * c-common.c (shorten_compare): Use force_fit_type_double.
21937         * convert.c (convert_to_pointer): Likewise.
21938
21939 2007-01-08  Richard Guenther  <rguenther@suse.de>
21940
21941         * tree.h (build_int_cst_wide_type): Export.
21942         * tree.c (build_int_cst_wide_type): New function.
21943         (build_int_cst_wide): Fix comment.
21944         * builtins.c (fold_builtin_object_size): Use build_int_cst
21945         to build -1 or 0 of the correct type.  Use fit_double_type
21946         to check for overflow.
21947         * fold-const.c (optimize_bit_field_compare): Use build_int_cst_type
21948         to build the mask.
21949         (decode_field_reference): Likewise.
21950         (all_ones_mask_p): Likewise.
21951         (native_interpret_int): Use build_int_cst_wide_type.
21952         (fold_binary): Use build_int_cst_type to build an all-ones
21953         value.
21954         * stor-layout.c (set_sizetype): Use build_int_cst_wide_type.
21955
21956 2007-01-08  Daniel Jacobowitz  <dan@codesourcery.com>
21957
21958         * config/pa/t-pa64 (libgcc_stub.a): Use $(T).
21959
21960 2007-01-09  Ben Elliston  <bje@au.ibm.com>
21961
21962         * genautomata.c (STATS_OPTION): New option.
21963         (stats_flag): New flag.
21964         (gen_automata_option): Handle it.
21965         (initiate_automaton_gen): Ditto.
21966         (write_automata): Output statistics only if stats_flag is
21967         set. Likewise, output time statistics only if time_flag is set.
21968         * doc/md.texi (Processor pipeline description): Document new flag.
21969
21970 2007-01-08  Richard Guenther  <rguenther@suse.de>
21971
21972         * builtins.c (fold_builtin_int_roundingfn): Use fit_double_type.
21973         * tree.c (build_int_cst_type): Likewise.
21974         (size_in_bytes): Don't call force_fit_type on the result.
21975         (int_fits_type_p): Use fit_double_type.
21976         * fold-const.c (fit_double_type): New function.
21977         (force_fit_type): Use it.
21978         * tree.h (fit_double_type): Export.
21979
21980 2007-01-08  Jan Hubicka  <jh@suse.cz>
21981
21982         * tree-vectorizer.c (gate_increase_alignment): Fix return type.
21983         * ipa.c (function_and_variable_visibility): Fix return type.
21984
21985 2007-01-08  Richard Guenther  <rguenther@suse.de>
21986
21987         * tree-ssa-ccp.c (maybe_fold_offset_to_array_ref): Use type
21988         of offset to build the index.
21989         * tree-pretty-print.c (dump_generic_node): Don't build negated
21990         const just for printing.
21991         * c-pretty-print.c (pp_c_integer_constant): Likewise.
21992         * builtins.c (fold_builtin_int_roundingfn): Check if result
21993         fits the type by using force_fit_type and comparing the result.
21994         * predict.c (predict_loops): Use compare_tree_int for comparison.
21995         * tree.c (build_int_cst): Fall back to integer_type_node for
21996         NULL_TREE type.
21997         (build_int_cst_wide): Assert type is non-null.
21998
21999 2007-01-08  Roberto Costa  <roberto.costa@st.com>
22000
22001         * tree-vrp.c (extract_range_from_cond_expr): New.
22002         (extract_range_from_expr): Handle COND_EXPR nodes used as expressions.
22003         * tree-ssa-ccp.c (get_maxval_strlen): Handle COND_EXPR nodes used
22004         as expressions.
22005         (fold_stmt): Bug fix, avoid infinite recursion when folding COND_EXPRs.
22006         * tree-ssa-forwprop.c (simplify_cond, forward_propagate_into_cond,
22007         tree_ssa_forward_propagate_single_use_vars): Handle COND_EXPR nodes
22008         used as expressions.
22009         * tree-object-size.c (cond_expr_object_size): New.
22010         (collect_object_sizes_for): Handle COND_EXPR nodes used as expressions.
22011
22012 2007-01-08  Jan Hubicka  <jh@suse.cz>
22013
22014         * tree-ssa-forwprop.c (forward_propagate_into_cond,
22015         tree_ssa_forward_propagate_single_use_va): Release defs of propagated
22016         statement.
22017
22018 2007-01-08  Richard Guenther  <rguenther@suse.de>
22019
22020         PR tree-optimization/23603
22021         * tree-vrp.c (set_value_range_to_truthvalue): New function.
22022         (extract_range_from_binary): Fall back to truthvalue instead of
22023         varying for TRUTH_*_EXPR.
22024         (extract_range_from_comparison): Fall back to truthvalue instead of
22025         varying.
22026         (vrp_visit_phi_node): Don't adjust new range bounds to +INF/-INF
22027         if all visited PHI values were constant.
22028
22029 2007-01-08  Jan Hubicka  <jh@suse.cz>
22030
22031         * cgraphunit.c (cgraph_process_new_functions): Reset reachable flag.
22032         (cgraph_analyze_function): break out from ...
22033         (cgraph_finalize_compilation_unit): ... here.
22034         (cgraph_expand_function): Remove forgoten commented out line.
22035         (cgraph_optimize): Analyze functions.
22036
22037 2007-01-08  Jan Hubicka  <jh@suse.cz>
22038
22039         * tree-pas.h (TODO_remove_function): New flag.
22040         (TODO_update*): Renumber.
22041         (pass_ipa_increase_alignment,
22042         pass_ipa_function_and_variable_visibility): New passes.
22043         * cgraphunit.c (cgraph_increase_alignment): Move to tree-vectorizer.c
22044         (cgraph_function_and_variable_visibility): Move to ipa.c
22045         (cgraph_optimize): Don't call cgraph_function_and_variable_visibility,
22046         cgraph_increase_alignment.
22047         * ipa-inline.c (cgraph_decide_inlining): Don't push timevar.
22048         (cgraph_decide_inlining_incrementally): Push TV_INTEGRATION before
22049         calling tree-inline.
22050         (cgraph_early_inlining): Do not call cgraph_remove_unreachable_nodes.
22051         (pass_ipa_inline, pass_early_ipa_inlining): Set TODO_remove_functions
22052         * tree-vectorizer.c (increase_alignment): Move here from cgraphunit.c
22053         (gate_increase_alignment): New function.
22054         (pass_ipa_increase_alignment): New pass.
22055         * ipa.c: Inline tree-pass.h and timevar.h
22056         (function_and_variable_visibility): Move here from cgraphunit.c
22057         * tree-optimize.c (pass_early_local_passes): Add TODO_remove_functions.
22058         * passes.c (init_optimization_passes): Add the two new passes.
22059         (execute_todo): Handle cgraph_remove_functions.
22060
22061 2007-01-08  Nick Clifton  <nickc@redhat.com>
22062
22063         * config/frv/predicates.md (reg_or_0_operand): Accept
22064         CONST_DOUBLEs.
22065
22066 2007-01-08  Ralf Corsépius <ralf.corsepius@rtems.org>
22067
22068         * config/bfin/rtems.h, config/bfin/t-rtems: New.
22069         * config.gcc: Add bfin*-rtems*.
22070
22071 2007-01-08  Mark Shinwell  <shinwell@codesourcery.com>
22072
22073         * c.opt: Add -flax-vector-conversions.
22074         * c-typeck.c (convert_for_assignment): Pass flag to
22075         vector_types_convertible_p to allow emission of note.
22076         (digest_init): Likewise.
22077         * c-opts.c: Handle -flax-vector-conversions.
22078         * c-common.c (flag_lax_vector_conversions): New.
22079         (vector_types_convertible_p): Unless -flax-vector conversions
22080         has been passed, disallow conversions between vectors with
22081         differing numbers of subparts and/or element types.  If such
22082         a conversion is disallowed, possibly emit a note on the first
22083         occasion only to inform the user of -flax-vector-conversions.
22084         The new last argument specifies this.
22085         * c-common.h (flag_lax_vector_conversions): New.
22086         (vector_types_convertible_p): Add extra argument.
22087         * config/i386/i386.c (ix86_init_mmx_sse_builtins): Use
22088         char_type_node for V*QI type vectors.
22089         * config/rs6000/rs6000-c.c (altivec_overloaded_builtins):
22090         Update to satisfy new typechecking rules.
22091         * config/rs6000/altivec.h (vec_cmple): Use vec_cmpge, for both
22092         C and C++ variants.
22093         * doc/invoke.texi (C Dialect Options): Document
22094         -flax-vector-conversions.
22095
22096 2007-01-08  Mark Shinwell  <shinwell@codesourcery.com>
22097
22098         PR tree-optimization/29877
22099         * tree-ssa-ter.c (is_replaceable_p): Deem assignments with
22100         a register variable on the RHS to not be replaceable.
22101
22102 2007-01-08  Chen Liqin  <liqin@sunnorth.com.cn>
22103         * config/score/t-score-elf (MULTILIB_OPTIONS): Change.
22104         * config/score/predicates.md (const_uimm5, sr0_operand, const_simm12,
22105         const_simm15, const_pow2, const_npow2): Added.
22106         * config/score/misc.md (insv, extv, extzv, movmemsi,
22107         move_lbu_a/b, mov_lhu_a/b etc): Added and fix some bug.
22108         * config/score/score.c (score_address_cost, score_select_cc_mode):
22109         Added.
22110         Change CONST_OK_FOR_LETTER_P/EXTRA_CONSTRAINT define.
22111         Update score_rtx_costs for MACRO TARGET_RTX_COSTS.
22112         Update score_print_operand.
22113         * config/score/score.h (DATA_ALIGNMENT, SELECT_CC_MODE): Added.
22114         Adjust register allocate order and update some macro define.
22115         * config/score/score-mdaux.c (mdx_unaligned_load, mdx_unsigned_store,
22116         mdx_block_move_straight, mdx_block_move_loop_head,
22117         mdx_block_move_loop_body, mdx_block_move_loop_foot,
22118         mdx_block_move_loop, mdx_block_move): Added.
22119         (mdx_movsicc, mdp_select_add_imm, mdp_select, mds_zero_extract_andi,
22120         mdp_limm): Updated and fix some bug and typo.
22121         * config/score/score.md (movqi/hi/si, add/sub/zero/ext): Updated.
22122         (movsf, movdf, doloop_end): Added.
22123
22124 2007-01-08  Kazu Hirata  <kazu@codesourcery.com>
22125
22126         * config/arm/arm.c, config/arm/arm.h, config/arm/arm.md,
22127         config/arm/thumb2.md: Fix comment typos.
22128         * doc/extend.texi: Fix a typo.
22129
22130 2007-01-07  Eric Christopher  <echristo@apple.com>
22131
22132         * configure.ac: Check for __stack_chk_fail for darwin.
22133         * configure: Regenerate.
22134
22135 2007-01-07  Richard Guenther  <rguenther@suse.de>
22136
22137         * tree-vrp.c (extract_range_from_assert): CSE calls to
22138         compare_values where possible.
22139         (extract_range_from_unary_expr): Likewise.
22140
22141 2007-01-07  Anatoly Sokolov <aesok@post.ru>
22142
22143         * config/avr/avr-protos.h (call_insn_operand): Delete prototype.
22144         * config/avr/avr.c (call_insn_operand): Delete function.
22145         * config/avr/avr.md (*pushqi, *pushhi, *pushsi, *pushsf): Use REG_SP
22146         instead of register number. Use predicates.
22147         * config/avr/predicates.md (const0_operand, reg_or_0_operand,
22148         call_insn_operand): Add.
22149
22150 2007-01-06  Jan Hubicka  <jh@suse.cz>
22151
22152         * tree-pass.h (pass_build_cgraph_edges): Declare.
22153         * cgraphunit.c (record_refernece): Move to cgraphbuild.c
22154         (visited_nodes): Remove.
22155         (cgraph_create_edges): Move to cgraphbuild.c; rename to
22156         build_cgrpah_edges; make visited_nodes local.
22157         (cgraph_process_new_functions): DO not call initialize_inline_failed.
22158         (record_references_in_initializer): Move to cgraphbuild.c
22159         (initialize_inline_failed, rebuild_cgraph_edges,
22160         pass_rebuild_cgraph_edges): Move to cgraphbuild.c.
22161         (verify_cgraph_node): Make visited_nodes local.
22162         (cgraph_analyze_function): Do not call cgraph_create_edges and
22163         initialize_inline_failed.
22164         (cgraph_expand_function): Do not call cgraph_lower_function;
22165         assert that function is already lowered.
22166         * Makefile.in (cgraphbuild.o): New.
22167         * passes.c (init_optimization_passes): Add pass_build_cgraph_edges
22168         at the end of lowering passes.
22169
22170 2007-01-06  Steven Bosscher  <steven@gcc.gnu.org>
22171
22172         * ifcvt.c (cond_move_convert_if_block): New function, code
22173         factored out from...
22174         (cond_move_process_if_block): ...here.  Call the new function
22175         on the THEN and ELSE blocks.
22176         (merge_if_block): Do not copy global_live_at_end, merge_blocks
22177         already takes care of this.
22178
22179 2007-01-05  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
22180
22181         PR c/19978
22182         * tree.h (TREE_OVERFLOW_P): New.
22183         * c-typeck.c (parser_build_unary_op): Warn only if result
22184         overflowed and operands did not.
22185         (parser_build_binary_op): Likewise.
22186         (convert_for_assignment): Remove redundant overflow_warning.
22187         * c-common.c (overflow_warning): Don't check or set TREE_OVERFLOW.
22188
22189 2007-01-05  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
22190
22191         * c-typeck.c (store_init_value): Split over two lines to follow
22192         the GNU coding style.
22193
22194 2007-01-05  Benjamin Kosnik  <bkoz@redhat.com>
22195
22196         * c-cppbuiltin.c (c_cpp_builtins): __GXX_EXPERIMENTAL_CPP0X__ to
22197         __GXX_EXPERIMENTAL_CXX0X__.
22198         * doc/cpp.texi: Same.
22199
22200 2007-01-05  Richard Guenther  <rguenther@suse.de>
22201
22202         PR middle-end/27826
22203         * tree.c (get_narrower): Do not construct COMPONENT_REFs
22204         with mismatched types.  Instead explicitly build a
22205         conversion NOP_EXPR.
22206
22207 2007-01-05  Ian Lance Taylor  <iant@google.com>
22208
22209         * c-common.c (decl_with_nonnull_addr_p): New function.
22210         (c_common_truthvalue_conversion): Call it.
22211         * c-typeck.c (build_binary_op): Likewise.
22212         * c-common.h (decl_with_nonnull_addr_p): Declare.
22213
22214 2007-01-05  Jakub Jelinek  <jakub@redhat.com>
22215
22216         PR c/30360
22217         * libgcc2.c (__divdc3): Compare c and d against 0.0 instead of
22218         denom against 0.0.
22219
22220 2007-01-05  Joel Brobecker  <brobecker@adacore.com>
22221
22222         * doc/install.texi (Final install): Document the fact that
22223         the GNAT runtime should not be stripped.
22224
22225 2007-01-04  Jan Hubicka  <jh@suse.cz>
22226
22227         * tree-inline.c (fold_marked_statements): Update operand caches
22228         and EH after folding
22229
22230 2007-01-04  Ian Lance Taylor  <iant@google.com>
22231
22232         * c-common.c (check_function_nonnull): Whitespace fix.
22233
22234 2007-01-04  Jan Hubicka  <jh@suse.cz>
22235
22236         * tree-optimize.c (execute_fixup_cfg): Correct previously mistakely
22237         comitted older version of patch.
22238         (pass_fixup_cfg): Add TODOs to verify flow and statements, dump
22239         function, celanup cfg and collect garbage.
22240
22241 2007-01-04  Mike Stump  <mrs@apple.com>
22242
22243         * Makefile.in (mostlyclean): Don't remove libgcc anymore.
22244         (clean): Likewise.
22245
22246 2007-01-04  Eric Christopher  <echristo@apple.com>
22247
22248         * libgcc2.c (__bswapsi2): Use SItype.
22249         (__bswapdi2): Use DItype.
22250         * libgcc2.h: Update for above.
22251
22252 2007-01-04  Paul Brook  <paul@codesourcery.com>
22253
22254         * config/arm/arm.md (arm_mulsi3, thumb_mulsi3, mulsi3_compare0,
22255         mulsi_compare0_scratch, mulsi3addsi, mulsi3addsi_compare0,
22256         mulsi3addsi_compare0_scratch, mulsidi3adddi, mulsidi3,
22257         umulsidi3, umulsidi3adddi, smulsi3_highpart,
22258         umulsi3_highpart): Make conditional on !arm_arch6.
22259         (arm_mulsi3_v6, thumb_mulsi3_v6, mulsi3_compare0_v6,
22260         mulsi_compare0_scratch_v6, mulsi3addsi_v6, mulsi3addsi_compare0_v6,
22261         mulsi3addsi_compare0_scratch_v6, mulsidi3adddi_v6, mulsidi3_v6,
22262         umulsidi3_v6, umulsidi3adddi_v6, smulsi3_highpart_v6,
22263         umulsi3_highpart_v6): New insns.
22264
22265 2007-01-04  Roger Sayle  <roger@eyesopen.com>
22266
22267         * fold-const.c (fold_convert): When casting an expression to void,
22268         fold_ignored_result may discover a GIMPLE_MODIFY_STMT which doesn't
22269         have a type.  Instead of attempting to build a NOP_EXPR, return
22270         these "special" trees directly.
22271
22272 2007-01-04  Joseph Myers  <joseph@codesourcery.com>
22273
22274         * config/rs6000/rs6000.c (rs6000_rtx_costs): Make adjustment for
22275         MULT inside MINUS as either argument.  Use rs6000_cost->dmul -
22276         rs6000_cost->fp not 0 as adjustment for outer NEG.
22277
22278 2007-01-04  Jan Hubicka  <jh@suse.cz>
22279
22280         * cgraph.c (cgraph_release_function_body): New function.
22281         (cgraph_remove_node): Use it.
22282         * cgraph.h (cgraph_release_function_body): Declare.
22283         * cgraphunit.c (cgraph_expand_function): Use it.
22284         * ipa.c (cgraph_remove_unreahchable_nodes): Use it.
22285         * tree-ssa.c (delete_tree_ssa): Allow to be called before aliasing
22286         is initialized and while compilation of other function is running.
22287         * tree-optimize.c (execute_free_cfg_annotations): Move code to clear
22288         statement CFG annotations from here to ...
22289         * tree-cfg.c (delete_tree_cfg_annotations): ... here.
22290
22291 2007-01-04  Zdenek Dvorak <dvorakz@suse.cz>
22292
22293         * cfgloop.h (enum li_flags): Make the constants powers of two.
22294
22295 2007-01-04  Jan Hubicka  <jh@suse.cz>
22296
22297         * tree-inline.c (copy_bb): Insert new statements to statements_to_fold
22298         set.
22299         (fold_marked_statements): New function.
22300         (optimize_inline_calls, tree_function_versioning): Fold new statements.
22301         * tree-inline.h (copy_body_data): Add statements_to_fold.
22302
22303 2007-01-03  Daniel Jacobowitz  <dan@codesourcery.com>
22304
22305         * config.gcc: Mention libgcc/config.host.
22306         * Makefile.in: Update comments mentioning libgcc.
22307         (LIBGCC, INSTALL_LIBGCC, GCC_PARTS, mklibgcc): Delete.
22308         (all.cross, start.encap, rest.encap, rest.cross): Update
22309         dependencies for libgcc move.
22310         (libgcc.mk, LIBGCC_DEPS, libgcov.a, libgcc.a, stmp-multilib)
22311         (clean-target, clean-target-libgcc): Delete.
22312         (srcdirify, GCC_EXTRA_PARTS): New macros.
22313         (libgcc-support, libgcc.mvars): New rules.
22314         (distclean): Remove mention of mklibgcc.
22315         (install): Don't reference INSTALL_LIBGCC.
22316         (install-common): Don't reference EXTRA_PARTS.
22317         (install-libgcc, install-multilib): Delete rules.
22318         * mklibgcc.in: Delete file.
22319         * doc/configfiles.texi: Don't mention mklibgcc.
22320
22321         * config/i386/t-darwin (SHLIB_VERPFX): Delete (moved to libgcc).
22322         * config/i386/t-darwin64 (SHLIB_VERPFX): Likewise.
22323         * config/rs6000/t-darwin (SHLIB_VERPFX): Likewise.
22324         * config/rs6000/t-ppccomm (TARGET_LIBGCC2_CFLAGS, SHLIB_MAPFILES)
22325         (mklibgcc, ldblspecs): Likewise.
22326
22327         * config/i386/t-nwld (libgcc.def, libc.def, libpcre.def)
22328         (posixpre.def): Use $(T).
22329         (SHLIB_EXT, SHLIB_NAME, SHLIB_SLIBDIR_QUAL, SHLIB_DEF, SHLIB_MAP)
22330         (SHLIB_SRC, SHLIB_INSTALL): Delete.
22331         (SHLIB_LINK): Make dummy.
22332         * config/t-slibgcc-darwin: Delete contents except for dummy SHLIB_LINK.
22333
22334         * config/frv/t-linux (EXTRA_MULTILIB_PARTS): Clear.
22335
22336         * config/alpha/t-crtfm: Use $(T) in rules for EXTRA_PARTS.
22337         * config/alpha/t-vms, config/alpha/t-vms64, config/fr30/t-fr30,
22338         config/i386/t-rtems-i386, config/ia64/t-ia64, config/rs6000/t-beos,
22339         config/rs6000/t-newas, config/sparc/t-elf: Likewise.
22340
22341         * configure.ac (all_outputs): Remove mklibgcc.
22342         * configure: Regenerated.
22343
22344 2007-01-03  Josh Conner  <jconner@apple.com>
22345
22346         PR middle-end/29683
22347         * calls.c (compute_argument_addresses): Set stack and stack_slot
22348         for partial args, too.
22349         (store_one_arg): Use locate.size.constant for the size when
22350         generating a save_area.
22351
22352 2007-01-03  Robert Kennedy <jimbob@google.com>
22353
22354         * tree-cfg.c (tree_merge_blocks): Release SSA_NAME phi results
22355         whose definitions are deleted due to basic block merging.
22356
22357 2007-01-03  Paul Brook  <paul@codesourcery.com>
22358
22359         PR target/16634
22360         * config/arm/arm.c (output_return_instruction): Pop PC in interrupt
22361         functions.
22362         (use_return_insn): Return 0 for Thumb interrupt functions.
22363         (print_multi_reg): Add rfe argument for IRQ returns.
22364         (arm_output_epilogue): Pop interrupt return address directly into PC.
22365         (arm_expand_prologue): Only adjust IRQ return address in Arm mode.
22366
22367 2007-01-03  Paul Brook  <paul@codesourcery.com>
22368
22369         Merge from sourcerygxx-4_1.
22370         * config/arm/thumb2.md: New file.
22371         * config/arm/elf.h (JUMP_TABLES_IN_TEXT_SECTION): Return True for
22372         Thumb-2.
22373         * config/arm/coff.h (JUMP_TABLES_IN_TEXT_SECTION): Ditto.
22374         * config/arm/aout.h (ASM_OUTPUT_ADDR_VEC_ELT): Add !Thumb-2 assertion.
22375         (ASM_OUTPUT_ADDR_DIFF_ELT): Output Thumb-2 jump tables.
22376         * config/arm/aof.h (ASM_OUTPUT_ADDR_DIFF_ELT): Output Thumb-2 jump
22377         tables.
22378         (ASM_OUTPUT_ADDR_VEC_ELT): Add !Thumb-2 assertion.
22379         * config/arm/ieee754-df.S: Use macros for Thumb-2/Unified asm
22380         comptibility.
22381         * config/arm/ieee754-sf.S: Ditto.
22382         * config/arm/arm.c (thumb_base_register_rtx_p): Rename...
22383         (thumb1_base_register_rtx_p): ... to this.
22384         (thumb_index_register_rtx_p): Rename...
22385         (thumb1_index_register_rtx_p): ... to this.
22386         (thumb_output_function_prologue): Rename...
22387         (thumb1_output_function_prologue): ... to this.
22388         (thumb_legitimate_address_p): Rename...
22389         (thumb1_legitimate_address_p): ... to this.
22390         (thumb_rtx_costs): Rename...
22391         (thumb1_rtx_costs): ... to this.
22392         (thumb_compute_save_reg_mask): Rename...
22393         (thumb1_compute_save_reg_mask): ... to this.
22394         (thumb_final_prescan_insn): Rename...
22395         (thumb1_final_prescan_insn): ... to this.
22396         (thumb_expand_epilogue): Rename...
22397         (thumb1_expand_epilogue): ... to this.
22398         (arm_unwind_emit_stm): Rename...
22399         (arm_unwind_emit_sequence): ... to this.
22400         (thumb2_legitimate_index_p, thumb2_legitimate_address_p,
22401         thumb1_compute_save_reg_mask, arm_dwarf_handle_frame_unspec,
22402         thumb2_index_mul_operand, output_move_vfp, arm_shift_nmem,
22403         arm_save_coproc_regs, thumb_set_frame_pointer, arm_print_condition,
22404         thumb2_final_prescan_insn, thumb2_asm_output_opcode, arm_output_shift,
22405         thumb2_output_casesi): New functions.
22406         (TARGET_DWARF_HANDLE_FRAME_UNSPEC): Define.
22407         (FL_THUMB2, FL_NOTM, FL_DIV, FL_FOR_ARCH6T2, FL_FOR_ARCH7,
22408         FL_FOR_ARCH7A, FL_FOR_ARCH7R, FL_FOR_ARCH7M, ARM_LSL_NAME,
22409         THUMB2_WORK_REGS): Define.
22410         (arm_arch_notm, arm_arch_thumb2, arm_arch_hwdiv, arm_condexec_count,
22411         arm_condexec_mask, arm_condexec_masklen)): New variables.
22412         (all_architectures): Add armv6t2, armv7, armv7a, armv7r and armv7m.
22413         (arm_override_options): Check new CPU capabilities.
22414         Set new architecture flag variables.
22415         (arm_isr_value): Handle v7m interrupt functions.
22416         (user_return_insn): Return 0 for v7m interrupt functions.  Handle
22417         Thumb-2.
22418         (const_ok_for_arm): Handle Thumb-2 constants.
22419         (arm_gen_constant): Ditto.  Use movw when available.
22420         (arm_function_ok_for_sibcall): Return false for v7m interrupt
22421         functions.
22422         (legitimize_pic_address, arm_call_tls_get_addr): Handle Thumb-2.
22423         (thumb_find_work_register, arm_load_pic_register,
22424         legitimize_tls_address, arm_address_cost, load_multiple_sequence,
22425         emit_ldm_seq, emit_stm_seq, arm_select_cc_mode, get_jump_table_size,
22426         print_multi_reg, output_mov_long_double_fpa_from_arm,
22427         output_mov_long_double_arm_from_fpa, output_mov_double_fpa_from_arm,
22428         output_mov_double_fpa_from_arm, output_move_double,
22429         arm_compute_save_reg_mask, arm_compute_save_reg0_reg12_mask,
22430         output_return_instruction, arm_output_function_prologue,
22431         arm_output_epilogue, arm_get_frame_offsets, arm_regno_class,
22432         arm_output_mi_thunk, thumb_set_return_address): Ditto.
22433         (arm_expand_prologue): Handle Thumb-2.  Use arm_save_coproc_regs.
22434         (arm_coproc_mem_operand): Allow POST_INC/PRE_DEC.
22435         (arithmetic_instr, shift_op): Use arm_shift_nmem.
22436         (arm_print_operand): Use arm_print_condition.  Handle '(', ')', '.',
22437         '!' and 'L'.
22438         (arm_final_prescan_insn): Use extract_constrain_insn_cached.
22439         (thumb_expand_prologue): Use thumb_set_frame_pointer.
22440         (arm_file_start): Output directive for unified syntax.
22441         (arm_unwind_emit_set): Handle stack alignment instruction.
22442         * config/arm/lib1funcs.asm: Remove default for __ARM_ARCH__.
22443         Add v6t2, v7, v7a, v7r and v7m.
22444         (RETLDM): Add Thumb-2 code.
22445         (do_it, shift1, do_push, do_pop, COND, THUMB_SYNTAX): New macros.
22446         * config/arm/arm.h (TARGET_CPU_CPP_BUILTINS): Define __thumb2__.
22447         (TARGET_THUMB1, TARGET_32BIT, TARGET_THUMB2, TARGET_DSP_MULTIPLY,
22448         TARGET_INT_SIMD, TARGET_UNIFIED_ASM, ARM_FT_STACKALIGN, IS_STACKALIGN,
22449         THUMB2_TRAMPOLINE_TEMPLATE, TRAMPOLINE_ADJUST_ADDRESS,
22450         ASM_OUTPUT_OPCODE, THUMB2_GO_IF_LEGITIMATE_ADDRESS,
22451         THUMB2_LEGITIMIZE_ADDRESS, CASE_VECTOR_PC_RELATIVE,
22452         CASE_VECTOR_SHORTEN_MODE, ADDR_VEC_ALIGN, ASM_OUTPUT_CASE_END,
22453         ADJUST_INSN_LENGTH): Define.
22454         (TARGET_REALLY_IWMMXT, TARGET_IWMMXT_ABI, CONDITIONAL_REGISTER_USAGE,
22455         STATIC_CHAIN_REGNUM, HARD_REGNO_NREGS, INDEX_REG_CLASS,
22456         BASE_REG_CLASS, MODE_BASE_REG_CLASS, SMALL_REGISTER_CLASSES,
22457         PREFERRED_RELOAD_CLASS, SECONDARY_OUTPUT_RELOAD_CLASS,
22458         SECONDARY_INPUT_RELOAD_CLASS, LIBCALL_VALUE, FUNCTION_VALUE_REGNO_P,
22459         TRAMPOLINE_SIZE, INITIALIZE_TRAMPOLINE, HAVE_PRE_INCREMENT,
22460         HAVE_POST_DECREMENT, HAVE_PRE_DECREMENT, HAVE_PRE_MODIFY_DISP,
22461         HAVE_POST_MODIFY_DISP, HAVE_PRE_MODIFY_REG, HAVE_POST_MODIFY_REG,
22462         REGNO_MODE_OK_FOR_BASE_P, LEGITIMATE_CONSTANT_P,
22463         REG_MODE_OK_FOR_BASE_P, REG_OK_FOR_INDEX_P, GO_IF_LEGITIMATE_ADDRESS,
22464         LEGITIMIZE_ADDRESS, THUMB2_LEGITIMIZE_ADDRESS,
22465         GO_IF_MODE_DEPENDENT_ADDRESS, MEMORY_MOVE_COST, BRANCH_COST,
22466         ASM_APP_OFF, ASM_OUTPUT_CASE_LABEL, ARM_DECLARE_FUNCTION_NAME,
22467         FINAL_PRESCAN_INSN, PRINT_OPERAND_PUNCT_VALID_P,
22468         PRINT_OPERAND_ADDRESS): Adjust for Thumb-2.
22469         (arm_arch_notm, arm_arch_thumb2, arm_arch_hwdiv): New declarations.
22470         * config/arm/arm-cores.def: Add arm1156t2-s, cortex-a8, cortex-r4 and
22471         cortex-m3.
22472         * config/arm/arm-tune.md: Regenerate.
22473         * config/arm/arm-protos.h: Update prototypes.
22474         * config/arm/vfp.md: Enable patterns for Thumb-2.
22475         (arm_movsi_vfp): Add movw alternative.  Use output_move_vfp.
22476         (arm_movdi_vfp, movsf_vfp, movdf_vfp): Use output_move_vfp.
22477         (thumb2_movsi_vfp, thumb2_movdi_vfp, thumb2_movsf_vfp,
22478         thumb2_movdf_vfp, thumb2_movsfcc_vfp, thumb2_movdfcc_vfp): New.
22479         * config/arm/libunwind.S: Add Thumb-2 code.
22480         * config/arm/constraints.md: Update include Thumb-2.
22481         * config/arm/ieee754-sf.S: Add Thumb-2/Unified asm support.
22482         * config/arm/ieee754-df.S: Ditto.
22483         * config/arm/bpabi.S: Ditto.
22484         * config/arm/t-arm (MD_INCLUDES): Add thumb2.md.
22485         * config/arm/predicates.md (low_register_operand,
22486         low_reg_or_int_operand, thumb_16bit_operator): New.
22487         (thumb_cmp_operand, thumb_cmpneg_operand): Rename...
22488         (thumb1_cmp_operand, thumb1_cmpneg_operand): ... to this.
22489         * config/arm/t-arm-elf: Add armv7 multilib.
22490         * config/arm/arm.md: Update patterns for Thumb-2 and Unified asm.
22491         Include thumb2.md.
22492         (UNSPEC_STACK_ALIGN, ce_count): New.
22493         (arm_incscc, arm_decscc, arm_umaxsi3, arm_uminsi3,
22494         arm_zero_extendsidi2, arm_zero_extendqidi2): New
22495         insns/expanders.
22496         * config/arm/fpa.md: Update patterns for Thumb-2 and Unified asm.
22497         (thumb2_movsf_fpa, thumb2_movdf_fpa, thumb2_movxf_fpa,
22498         thumb2_movsfcc_fpa, thumb2_movdfcc_fpa): New insns.
22499         * config/arm/cirrus.md: Update patterns for Thumb-2 and Unified asm.
22500         (cirrus_thumb2_movdi, cirrus_thumb2_movsi_insn,
22501         thumb2_cirrus_movsf_hard_insn, thumb2_cirrus_movdf_hard_insn): New
22502         insns.
22503         * doc/extend.texi: Document ARMv7-M interrupt functions.
22504         * doc/invoke.texi: Document Thumb-2 new cores+architectures.
22505
22506 2007-01-03  Jakub Jelinek  <jakub@redhat.com>
22507
22508         * unwind-dw2.c (SIGNAL_FRAME_BIT, EXTENDED_CONTEXT_BIT): Define.
22509         (struct _Unwind_Context): Rename args_size to flags, remove
22510         signal_frame field, add a new args_size field and version field.
22511         (_Unwind_IsSignalFrame, _Unwind_SetSignalFrame,
22512         _Unwind_IsExtendedContext): New inline functions.
22513         (_Unwind_GetGR, _Unwind_SetGR, _Unwind_GetGRPtr, _Unwind_SetGRPtr):
22514         Assume by_value array is only present if _Unwind_IsExtendedContext.
22515         (_Unwind_GetIPInfo, execute_cfa_program, uw_frame_state_for): Use
22516         _Unwind_IsSignalFrame.
22517         (__frame_state_for): Initialize context.flags to EXTENDED_CONTEXT_BIT.
22518         (uw_update_context_1): Use _Unwind_SetSignalFrame.
22519         (uw_init_context_1): Initialize context->flags to
22520         EXTENDED_CONTEXT_BIT.
22521         * config/rs6000/linux-unwind.h (frob_update_context): Use
22522         _Unwind_SetSignalFrame.
22523
22524 2007-01-03  Andrew Pinski  <andrew_pinski@playstation.sony.com>
22525
22526         PR middle-end/30353
22527         * gimplify.c (gimplify_modify_expr_complex_part): Move below
22528         tree_to_gimple_tuple.  Call tree_to_gimple_tuple when we need
22529         the value.
22530
22531 2007-01-03  Kazu Hirata  <kazu@codesourcery.com>
22532
22533         * config/i386/i386.h (NON_STACK_REG_P, REGNO_OK_FOR_SIREG_P,
22534         REGNO_OK_FOR_DIREG_P, REWRITE_ADDRESS, ASM_OPERAND_LETTER,
22535         RET, AT_SP): Remove.
22536         * config/i386/i386.md (*sse_prologue_save_insn): Use return
22537         instead of RET.
22538
22539         * alias.c (init_alias_analysis): Use VEC_safe_grow_cleared.
22540         * cfgbuild.c (find_basic_blocks): Likewise.
22541         * cfgrtl.c (rtl_create_basic_block): Likewise.
22542         * function.c (temp_slots_at_level): Likewise.
22543         * reg-stack.c (stack_regs_mentioned): Likewise.
22544         * regclass.c (allocate_reg_info): Likewise.
22545         * tree-cfg.c (init_empty_tree_cfg, build_tree_cfg, create_bb,
22546         set_bb_for_stmt, move_block_to_fn): Likewise.
22547         * tree-complex.c (tree_lower_complex): Likewise.
22548         * vec.h (VEC_safe_grow_cleared): New.
22549
22550         * cgraphunit.c, tree-ssa-alias.c: Fix comment typos.
22551
22552 2007-01-03  Zdenek Dvorak <dvorakz@suse.cz>
22553
22554         * loop-unswitch.c (unswitch_loop): Pass probabilities to loopify.
22555         * tree-ssa-loop-unswitch.c (tree_unswitch_loop): Pass probabilities
22556         to loop_version.
22557         * cfgloopmanip.c (scale_loop_frequencies): Export.
22558         (loopify): Scale the frequencies by prescribed coefficients.
22559         (set_zero_probability): New function.
22560         (duplicate_loop_to_header_edge): Improve updating of frequencies.
22561         (lv_adjust_loop_entry_edge, loop_version): Set probabilities
22562         and frequencies according to arguments.
22563         * tree-ssa-loop-manip.c (tree_unroll_loop): Set probabilities
22564         correctly.
22565         * cfg.c (scale_bbs_frequencies_int): Allow scaling the frequencies up.
22566         * modulo-sched.c (sms_schedule): Set probabilities for entering
22567         versioned loop correctly.
22568         * tree-vect-transform.c (vect_transform_loop): Ditto.
22569         * cfgloop.h (loopify, loop_version): Declaration changed.
22570         (scale_loop_frequencies): Declared.
22571
22572 2007-01-02  Jan Hubicka  <jh@suse.cz>
22573
22574         * cgraph.c: Include tree-flow.h
22575         (cgraph_add_new-function): Handle IPA_SSA mode; execute
22576         early_local_passes.
22577         * cgraph.h (enum cgraph_state): Add CGRAPH_STATE_IPA_SSA.
22578         * tree-pass.h (pass_all_early_optimizations): Declare.
22579         * cgraphunit.c (cgraph_process_new_functions): Add IPA_SSA; execute
22580         early_local_passes.
22581         (cgraph_analyze_function): Do early_local_passes.
22582         * tree-mudflap.c (mf_decl_cache_locals, mf_build_check_statement_for):
22583         Do not add referenced vars.
22584         * tree-optimize.c (gate_all_optimizations): Do not execute when not in
22585         SSA form.
22586         (gate_all_early_local_passes): New gate.
22587         (pass_early_local_passes): Use new gate.
22588         (execute_early_local_optimizations): New functions.
22589         (gate_all_early_optimizations): New gate.
22590         (pass_all_early_optimizations): New pass.
22591         (execute_free_datastructures): Free SSA only when initialized.
22592         (gate_init_datastructures): Init only when optimizing.
22593         (tree_lowering_passes): Do early local passes when called late.
22594         * tree-profile.c (do_tree_profiling): Don't profile functions added
22595         late.
22596         (do_early_tree_profiling, pass_early_tree_profile): Kill.
22597         * tree-cfg.c (update_modified_stmts): Do not update when operands are
22598         not active.
22599         * passes.c (init_optimizations_passes): Reorder so we go into SSA
22600         during early_local_passes.
22601         * Makefile.in (cgraph.o): Add dependency on tree-flow.h.
22602
22603
22604 2007-01-02  Carlos O'Donell  <carlos@codesourcery.com>
22605
22606         * Makefile.in: Update copyright year.
22607
22608 2007-01-02  Carlos O'Donell  <carlos@codesourcery.com>
22609
22610         * Makefile.in: Export GCC_EXEC_PREFIX before calling $(RUNTEST)
22611         in $(lang_checks) and check-consistency targets.
22612
22613 2007-01-02  Jan Hubicka  <jh@suse.cz>
22614
22615         * tree-mudflap.c (mf_decl_cache_locals, mf_build_check_statement_for):
22616         Do not add referenced vars.
22617         * tree-cfg.c (update_modified_stmts): Do not update when SSA operands
22618         are not active.
22619         * passes.c (init_optimization_passes): Put mudflap_2 after
22620         free_datastructures.
22621
22622 2007-01-02  Jan Hubicka  <jh@suse.cz>
22623
22624         * tree-optimize (execute_fixup_cfg): Set after_inlining flag.
22625         Set NOTHROW flag on call statements proved to be nothrow.
22626         Update statement of local calls so new pure/const functions are
22627         updated. Update_ssa when in ssa form. Mark PHI nodes of nonlocal
22628         goto receivers.
22629         (tree_rest_of_compilation): Register hooks and initialize bitmap
22630         early. Do not set after_inlining flag.
22631
22632 2007-01-02  Steve Ellcey  <sje@cup.hp.com>
22633
22634         * sbitmap.c (HOST_BITS_PER_LONG_LONG):  Change to
22635         HOST_BITS_PER_LONGLONG
22636
22637 2007-01-02  Manuel Lopez-Ibanez <manu@gcc.gnu.org>
22638
22639         PR c/19977
22640         * c-typeck.c (store_init_value): Don't emit pedantic overflow
22641         warning for non-static initializers.
22642
22643 2007-01-02  Steven Bosscher  <steven@gcc.gnu.org>
22644
22645         * config/alpha/alpha.md, arm/arm.c, darwin.c, frv/frv.md,
22646         m32r/m32r.c, m32r/m32r.c, mn10300/mn10300.md, pa/pa.c,
22647         rs6000/rs6000.c, s390/s390.md, sh/sh.md, sparc/sparc.c:
22648         Always use set_unique_reg_note to add REG_EQUAL notes.
22649
22650 2007-01-02  Kazu Hirata  <kazu@codesourcery.com>
22651
22652         Revert:
22653         2007-01-02  Kazu Hirata  <kazu@codesourcery.com>
22654
22655         * alias.c (init_alias_analysis): Use VEC_safe_grow_cleared.
22656         * cfgbuild.c (find_basic_blocks): Likewise.
22657         * cfgrtl.c (rtl_create_basic_block): Likewise.
22658         * function.c (temp_slots_at_level): Likewise.
22659         * reg-stack.c (stack_regs_mentioned): Likewise.
22660         * regclass.c (allocate_reg_info): Likewise.
22661         * tree-cfg.c (init_empty_tree_cfg, build_tree_cfg, create_bb,
22662         set_bb_for_stmt, move_block_to_fn): Likewise.
22663         * tree-complex.c (tree_lower_complex): Likewise.
22664         * vec.h (VEC_safe_grow_cleared): New.
22665
22666 2007-01-02  Ian Lance Taylor  <iant@google.com>
22667
22668         * c-common.c (c_common_truthvalue_conversion): When warning about
22669         using an assignment as a truth value, set TREE_NO_WARNING.
22670
22671 2007-01-02  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
22672
22673         PR middle-end/7651
22674         * c.opt (Wold-style-declaration): New.
22675         * doc/invoke.texi (C-only Warning Options): New.
22676         (Wold-style-declaration): Document it.
22677         (Wextra): Enabled by -Wextra.
22678         * c-opts.c (c_common_post_options): Enabled by -Wextra.
22679         * c-decl.c (declspecs_add_scspec): Replace -Wextra with
22680         -Wold-style-declaration.
22681
22682 2007-01-02  Kazu Hirata  <kazu@codesourcery.com>
22683
22684         * alias.c (init_alias_analysis): Use VEC_safe_grow_cleared.
22685         * cfgbuild.c (find_basic_blocks): Likewise.
22686         * cfgrtl.c (rtl_create_basic_block): Likewise.
22687         * function.c (temp_slots_at_level): Likewise.
22688         * reg-stack.c (stack_regs_mentioned): Likewise.
22689         * regclass.c (allocate_reg_info): Likewise.
22690         * tree-cfg.c (init_empty_tree_cfg, build_tree_cfg, create_bb,
22691         set_bb_for_stmt, move_block_to_fn): Likewise.
22692         * tree-complex.c (tree_lower_complex): Likewise.
22693         * vec.h (VEC_safe_grow_cleared): New.
22694
22695 2007-01-02  Douglas Gregor  <doug.gregor@gmail.com>
22696
22697         * c-common.c (c_common_nodes_and_builtins): Since variants of
22698         void_type_node get built before it is given a name, we need to
22699         give those variants the name, too.
22700         (complete_array_type): We need to work with the canonical main
22701         type of the array, from which we will build the qualified version.
22702         * params.def (PARAM_VERIFY_CANONICAL_TYPES): New.
22703         * print-tree.c (print_node): Display canonical type information
22704         for each type.
22705         * stor-layout.c (layout_type): When we don't know the
22706         alignment of a type for which we're building an array, we end up
22707         guessing wrong, so make the type require structural equality.
22708         * tree.c (make_node_stat): When we build a new type, it is its
22709         own canonical type.
22710         (build_type_attribute_qual_variant): When building an attribute
22711         variant, its canonical type is the non-attribute variant. However,
22712         if the attributes are target-dependent and they differ, we need to
22713         use structural equality checks for this type.
22714         (build_qualified_type): A qualified type is not equivalent to its
22715         unqualified variant; set the canonical type appropriately.
22716         (build_distinct_type_copy): When building a distinct type from
22717         another type, the new type is its own canonical type.
22718         (build_variant_type_copy): When building a new type variant, we
22719         assume that it is equivalent to the original type.
22720         (build_pointer_type_for_mode): When building a pointer type, also
22721         build a canonical type pointer.
22722         (build_reference_type_for_mode): When building a reference type,
22723         also build a canonical type reference.
22724         (build_index_type): When we can't hash an index type (e.g.,
22725         because its maximum value is negative), the index type requires
22726         structural equality tests.
22727         (build_array_type): Build the canonical form of an array type.
22728         (build_function_type): Function types require structural equality,
22729         because they contain default arguments, attributes, etc.
22730         (build_method_type_directly): Ditto for method types.
22731         (build_offset_type): Build the canonical offset type.
22732         (build_complex_type): Build the canonical vector type.
22733         (make_vector_type): Build the canonical vector type.
22734         * tree.h (TYPE_CANONICAL): New.
22735         (TYPE_STRUCTURAL_EQUALITY_P): New.
22736         (SET_TYPE_STRUCTURAL_EQUALITY): New.
22737         (struct tree_type): Added "canonical" field.
22738         * params.h (VERIFY_CANONICAL_TYPES): New.
22739         * doc/c-tree.texi (TYPE_CANONICAL): Document.
22740         (TYPE_STRUCTURAL_EQUALITY_P): Document.
22741         (SET_TYPE_STRUCTURAL_EQUALITY): Document.
22742         * doc/invoke.texi (verify-canonical-types): Document --param
22743         parameter for verifying canonical types.
22744
22745 2007-01-02  Joseph Myers  <joseph@codesourcery.com>
22746
22747         * config.gcc (powerpc-*-eabispe*, powerpc-*-eabisimaltivec*,
22748         powerpc-*-eabisim*, powerpc-*-eabialtivec*, powerpc-*-eabi*,
22749         powerpc-*-rtems*, powerpc-wrs-vxworks, powerpc-wrs-vxworksae,
22750         powerpcle-*-eabisim*, powerpcle-*-eabi*): Add rs6000/e500.h to
22751         tm_file.
22752         * config/rs6000/e500.h: New.
22753         * config/rs6000/eabi.h (TARGET_SPE_ABI, TARGET_SPE, TARGET_E500,
22754         TARGET_ISEL, TARGET_FPRS, TARGET_E500_SINGLE, TARGET_E500_DOUBLE):
22755         Remove.
22756         * config/rs6000/linuxspe.h (TARGET_SPE_ABI, TARGET_SPE,
22757         TARGET_E500, TARGET_ISEL, TARGET_FPRS, TARGET_E500_SINGLE,
22758         TARGET_E500_DOUBLE): Remove.
22759         * config/rs6000/vxworks.h (TARGET_SPE_ABI, TARGET_SPE,
22760         TARGET_E500, TARGET_ISEL, TARGET_FPRS): Remove.
22761         * config/rs6000/rs6000.h (CHECK_E500_OPTIONS): Define.
22762         * config/rs6000/rs6000.c (rs6000_override_options): Use
22763         CHECK_E500_OPTIONS.
22764
22765 2007-01-02  Joseph Myers  <joseph@codesourcery.com>
22766
22767         * config/rs6000/rs6000.c (print_operand): Check (TARGET_SPE ||
22768         TARGET_E500_DOUBLE), not TARGET_E500, for %y.
22769         (rs6000_generate_compare, rs6000_emit_sCOND, output_cbranch,
22770         rs6000_emit_cmove): Don't check TARGET_E500.
22771         * config/rs6000/rs6000.md (bunordered, bordered, sunordered,
22772         sordered): Don't check TARGET_E500.
22773
22774 2007-01-01  Eric Christopher  <echristo@apple.com>
22775
22776         * config/mips/mips.c (mips_regno_mode_ok_for_base_p): Use
22777         HARD_REGISTER_NUM_P.
22778
22779 2007-01-01  Roger Sayle  <roger@eyesopen.com>
22780
22781         * fold-const.c (fold_binary) <EQ_EXPR>: Fold "(X^C1) eq/ne C2" into
22782         "X eq/ne (C1^C2)".  Fold "(X^Z) eq/ne (Y^Z)" as "X eq/ne Y" when Z
22783         has no side-effects.  Fold "(X^C1) eq/ne (Y^C2)" as "(X^(C1^C2))
22784         eq/ne Y".
22785
22786 2007-01-01  Mike Stump  <mrs@apple.com>
22787
22788         * configure.ac: Remove support for building with Apple's gcc-3.1.
22789
22790 2007-01-02  Joseph Myers  <joseph@codesourcery.com>
22791
22792         PR middle-end/30311
22793         * caller-save.c (add_stored_regs): Only handle SUBREGs if inner
22794         REG is a hard register.  Do not modify REG before calling
22795         subreg_nregs.
22796         * rtlanal.c (subreg_get_info): Don't assert size of XMODE is a
22797         multiple of the size of YMODE for certain lowpart cases.
22798
22799 2007-01-01  Andrew Pinski  <pinskia@gmail.com>
22800
22801         PR middle-end/30253
22802         * gimplify (voidify_wrapper_expr): Update for
22803         GIMPLE_MODIFY_STMT.
22804
22805 2007-01-01  Andreas Schwab  <schwab@suse.de>
22806
22807         PR target/29166
22808         * config/ia64/ia64.c (ia64_compute_frame_size): Account space for
22809         save of BR0 in extra_spill_size instead of spill_size.
22810         (ia64_expand_prologue): Save BR0 outside of the gr/br/fr spill
22811         area.
22812         (ia64_expand_epilogue): Restore BR0 from its new location.
22813
22814 2007-01-01  Andrew Pinski  <pinskia@gmail.com>
22815
22816         * gimplify.c (gimplify_init_constructor <case VECTOR_TYPE>):
22817         Use a temporary variable if the left hand side is not a gimple
22818         register.
22819
22820 2007-01-01  Andrew Pinski  <pinskia@gmail.com>
22821
22822         * gimplify.c (gimplify_return_expr): Make the temporary variable
22823         for the return expression, a gimple register variable.
22824
22825 2007-01-01  Jan Hubicka  <jh@suse.cz>
22826
22827         * emit-rtl.c (emit_copy_of_insn_after): Do not call copy_insn_1 for
22828         INSN_LIST.
22829
22830 2007-01-01  Mike Stump  <mrs@apple.com>
22831
22832         * configure.ac (HAVE_GAS_LITERAL16): Add autoconf check for
22833         .literal16.
22834         * config/darwin.c (machopic_select_rtx_section): Use
22835         HAVE_GAS_LITERAL16.
22836         (darwin_mergeable_constant_section): Likewise.
22837         * configure: Regenerate.
22838         * config.in: Regenerate.
22839
22840 2007-01-01  Jan Hubicka  <jh@suse.cz>
22841             Andrew Pinski  <pinskia@gmail.com>
22842
22843         * cgraphunit.c (cgraph_optimize): Call cgraph_add_new_functions
22844         before starting IPA passes.